From: jenkins-bot Date: Mon, 13 Mar 2017 05:19:57 +0000 (+0000) Subject: Merge "Drop index oi_name_archive_name on table oldimage" X-Git-Tag: 1.31.0-rc.0~3823 X-Git-Url: http://git.cyclocoop.org/?a=commitdiff_plain;h=c584722cc2e3d33edae58d46c2149063b3fc6d72;hp=5473e9e9eeea71b0a32b2b0e703529e196721407;p=lhc%2Fweb%2Fwiklou.git Merge "Drop index oi_name_archive_name on table oldimage" --- diff --git a/.eslintrc.json b/.eslintrc.json index 044dd7202d..64b5ea7835 100644 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -2,14 +2,12 @@ "extends": "wikimedia", "env": { "browser": true, - "jquery": true, - "qunit": true + "jquery": true }, "globals": { "require": false, "module": false, "mediaWiki": false, - "mwPerformance": false, "OO": false }, "rules": { diff --git a/.mailmap b/.mailmap index dd968e8d08..232824d7cc 100644 --- a/.mailmap +++ b/.mailmap @@ -93,6 +93,7 @@ Chad Horohoe Chad Horohoe Charles Melbye Chiefwei +Chris Koerner Chris McMahon Chris Steipp Christian Aistleitner @@ -100,6 +101,8 @@ Christian Aistleitner Christian Williams Christian Williams Christian Williams +Christoph Jauera +Christoph Jauera Christopher Johnson church of emacs Cindy Cicalese @@ -115,12 +118,14 @@ Daniel Friesen Daniel Friesen Daniel Kinzler Daniel Kinzler +Daniel Renfro Danny B. Danny B. Danny B. Danny B. Darian Anthony Patrick Darkdragon09 +David Causse David Chan Dereckson Derk-Jan Hartman @@ -134,6 +139,7 @@ Ebrahim Byagowi Ed Sanders Elliott Eggleston Elliott Eggleston +Emad Elwany Emmanuel Engelhart Emufarmers Emufarmers @@ -201,14 +207,18 @@ Jason Richey Jason Richey Jeff Hall Jeff Hall +Jeff Hobson Jeff Janes +Jeremy Baron Jeremy Postlethwaite Jeroen De Dauw Jeroen De Dauw Jesús Martínez Novo Jiabao Jimmy Collins +Joel Sahleen John Du Hart +John Erling Blad Jon Harald Søby Jon Robson Jon Robson @@ -217,6 +227,8 @@ Juliusz Gonera JuneHyeon Bae Jure Kajzer Jure Kajzer +Justin Du +Kai Nissen Karun Dambiec Katie Filbert Katie Filbert @@ -236,6 +248,7 @@ liangent Lisa Ridley Ljudusika Luis Felipe Schenone +Luke Welling Lupo m4tx Madman @@ -261,6 +274,7 @@ Markus Glaser Matt Johnston Matthew Britton Matthew Flaschen +Matthew Walker Matthias Mullie Matthias Mullie Matěj Grabovský @@ -277,15 +291,17 @@ Mormegil MrBlueSky MrBlueSky Mukunda Modell -Mwalker MZMcBride nadeesha Namit +Nathan Larson +Nathan Larson Nathaniel Herman Neil Kandalgaonkar Nemo bis nephele Nick Jenkins +Niharika Kohli Nik Everett Niklas Laxström Niklas Laxström @@ -297,10 +313,12 @@ OverlordQ Owen Davis Owen Davis paladox +Patricio Molina Patrick Reilly Patrick Reilly Patrick Westerhoff Paul Copperman +Peter Coombe Peter Coti Peter Potrowl Petr Kadlec @@ -385,10 +403,10 @@ Stephane Bisson Stephen Liang Steve Sanbeg Steven Roddis +Steven Walling Subramanya Sastry Sucheta Ghoshal Sumit Asthana -Swalling Thalia Chan Thiemo Mättig (WMDE) Thiemo Mättig (WMDE) @@ -406,8 +424,6 @@ Timo Tijhof Timo Tijhof Timo Tijhof Tina Johnson -Tisane -Tjones Tom Maaswinkel Tomasz Finc Tomasz W. Kozlowski @@ -418,9 +434,11 @@ Tpt Trevor Parscal Trevor Parscal Trevor Parscal +Trey Jones Tyler Cipriani Tyler Romeo Umherirrender +Victor Barbu Victor Vasiliev Victor Vasiliev Victor Vasiliev @@ -438,6 +456,7 @@ Yongmin Hong Yuri Astrakhan Yuri Astrakhan Yuri Astrakhan +Yuriy Shnitkovskiy Yusuke Matsubara Yuvi Panda Zak Greant diff --git a/.stylelintrc b/.stylelintrc index 62dbeb69ed..27e289d430 100644 --- a/.stylelintrc +++ b/.stylelintrc @@ -1,26 +1,8 @@ { + "extends": "stylelint-config-wikimedia", "rules": { - "color-hex-case": [ "lower" ], - "color-hex-length": [ "short" ], - "color-named": [ "never" ], - "color-no-invalid-hex": true, + "no-descending-specificity": null, - "declaration-bang-space-after": [ "never" ], - "declaration-bang-space-before": [ "always" ], - "declaration-colon-space-after": [ "always" ], - "declaration-colon-space-before": [ "never" ], - - "font-family-name-quotes": [ "always-unless-keyword" ], - "font-weight-notation": [ "named-where-possible" ], - - "function-calc-no-unspaced-operator": true, - "function-comma-newline-after": "never-multi-line", - "function-comma-newline-before": "never-multi-line", - "function-comma-space-after": [ "always" ], - "function-comma-space-before": [ "never" ], - "function-parentheses-newline-inside": [ "never-multi-line" ], - "function-parentheses-space-inside": [ "always" ], - "function-url-quotes": [ "never" ], - "function-whitespace-after": [ "always" ], + "selector-no-id": null } } diff --git a/.travis.yml b/.travis.yml index 973860569d..5e2c7a00db 100644 --- a/.travis.yml +++ b/.travis.yml @@ -7,17 +7,29 @@ # 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) +# - Required in order to use HHVM 3.6 or higher. +# - Required for non-buggy xml library for XmlTypeCheck/UploadBaseTest (T75176). +dist: trusty matrix: fast_finish: true include: - - env: dbtype=mysql + # On Trusty, mysql user 'travis' doesn't have create database rights + # Postgres has no user called 'root'. + - env: dbtype=mysql dbuser=root php: 5.5 - - env: dbtype=postgres + - env: dbtype=postgres dbuser=travis php: 5.5 - - env: dbtype=mysql - php: hhvm - - env: dbtype=mysql + - 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: 7 services: @@ -26,15 +38,17 @@ services: branches: # Test changes in master and arbitrary Travis CI branches only. # The latter allows developers to enable Travis CI in their GitHub fork of - # wikimedia/mediawiki and then push changes they like to test to branches like + # wikimedia/mediawiki and then push changes for testing to branches like # "travis-ci/test-this-awesome-change". only: - master - /^travis-ci\/.*$/ -before_install: - - sudo apt-get install -qq djvulibre-bin tidy - - composer self-update --quiet --no-interaction +addons: + apt: + packages: + - djvulibre-bin + - tidy before_script: - composer install --prefer-source --quiet --no-interaction @@ -44,7 +58,7 @@ before_script: --pass travis --dbtype "$dbtype" --dbname traviswiki - --dbuser travis + --dbuser "$dbuser" --dbpass "" --scriptpath "/w" diff --git a/CREDITS b/CREDITS index b37edf2a36..e8af23ca72 100644 --- a/CREDITS +++ b/CREDITS @@ -169,6 +169,7 @@ The following list can be found parsed under Special:Version/Credits --> * Ed Sanders * Edward Chernenko * Edward Z. Yang +* Eddie Greiner-Petter * Elisabeth Bauer * Elliott Eggleston * Elvis Stansvik diff --git a/Gemfile b/Gemfile index 8bbd00fd6d..ee0cec0480 100644 --- a/Gemfile +++ b/Gemfile @@ -1,5 +1,5 @@ source 'https://rubygems.org' -gem 'mediawiki_selenium', '~> 1.7', '>= 1.7.4' +gem 'mediawiki_selenium', '~> 1.8' gem 'rake', '~> 11.1', '>= 11.1.1' gem 'rubocop', '~> 0.32.1', require: false diff --git a/Gemfile.lock b/Gemfile.lock index 824387491a..4992303258 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -4,8 +4,8 @@ GEM ast (2.0.0) astrolabe (1.3.0) parser (>= 2.2.0.pre.3, < 3.0) - builder (3.2.2) - childprocess (0.5.9) + builder (3.2.3) + childprocess (0.6.2) ffi (~> 1.0, >= 1.0.11) cucumber (1.3.20) builder (>= 2.1.2) @@ -16,40 +16,40 @@ GEM data_magic (1.0) faker (>= 1.1.2) yml_reader (>= 0.6) - diff-lcs (1.2.5) - domain_name (0.5.20161129) + diff-lcs (1.3) + domain_name (0.5.20170223) unf (>= 0.0.5, < 1.0.0) - faker (1.7.1) + faker (1.7.3) i18n (~> 0.5) - faraday (0.10.0) + faraday (0.11.0) multipart-post (>= 1.2, < 3) faraday-cookie_jar (0.0.6) faraday (>= 0.7.4) http-cookie (~> 1.0.0) - faraday_middleware (0.10.1) + faraday_middleware (0.11.0.1) faraday (>= 0.7.4, < 1.0) - ffi (1.9.14) + ffi (1.9.17) gherkin (2.12.2) multi_json (~> 1.3) headless (2.3.1) http-cookie (1.0.3) domain_name (~> 0.5) - i18n (0.7.0) - json (2.0.2) - mediawiki_api (0.7.0) + i18n (0.8.1) + json (2.0.3) + mediawiki_api (0.7.1) faraday (~> 0.9, >= 0.9.0) faraday-cookie_jar (~> 0.0, >= 0.0.6) faraday_middleware (~> 0.10, >= 0.10.0) - mediawiki_selenium (1.7.4) + mediawiki_selenium (1.8.0) cucumber (~> 1.3, >= 1.3.20) headless (~> 2.0, >= 2.1.0) json (~> 2.0, >= 2.0.2) mediawiki_api (~> 0.7, >= 0.7.0) - page-object (~> 1.0) + page-object (~> 2.0) rest-client (~> 1.6, >= 1.6.7) rspec-core (~> 2.14, >= 2.14.4) rspec-expectations (~> 2.14, >= 2.14.4) - selenium-webdriver (< 3) + selenium-webdriver (~> 3.1.0) syntax (~> 1.2, >= 1.2.0) thor (~> 0.19, >= 0.19.1) mime-types (2.99.3) @@ -58,11 +58,11 @@ GEM multipart-post (2.0.0) net-http-persistent (2.9.4) netrc (0.11.0) - page-object (1.2.2) + page-object (2.0.0) net-http-persistent (~> 2.9.4) page_navigation (>= 0.9) - selenium-webdriver (>= 2.53.0) - watir-webdriver (>= 0.6.11, < 0.9.9) + selenium-webdriver (~> 3.0) + watir (~> 6.0) page_navigation (0.10) data_magic (>= 0.22) parser (2.2.2.6) @@ -84,8 +84,8 @@ GEM rainbow (>= 1.99.1, < 3.0) ruby-progressbar (~> 1.4) ruby-progressbar (1.7.5) - rubyzip (1.2.0) - selenium-webdriver (2.53.4) + rubyzip (1.2.1) + selenium-webdriver (3.1.0) childprocess (~> 0.5) rubyzip (~> 1.0) websocket (~> 1.0) @@ -94,18 +94,18 @@ GEM unf (0.1.4) unf_ext unf_ext (0.0.7.2) - watir-webdriver (0.9.3) - selenium-webdriver (>= 2.46.2) - websocket (1.2.3) + watir (6.2.0) + selenium-webdriver (~> 3.0) + websocket (1.2.4) yml_reader (0.7) PLATFORMS ruby DEPENDENCIES - mediawiki_selenium (~> 1.7, >= 1.7.4) + mediawiki_selenium (~> 1.8) rake (~> 11.1, >= 11.1.1) rubocop (~> 0.32.1) BUNDLED WITH - 1.13.7 + 1.14.5 diff --git a/Gruntfile.js b/Gruntfile.js index 4cc9721857..0e1c8cb2c2 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -24,12 +24,13 @@ module.exports = function ( grunt ) { all: [ '**/*.js', '!docs/**', - '!tests/**', '!node_modules/**', '!resources/lib/**', '!resources/src/jquery.tipsy/**', '!resources/src/jquery/jquery.farbtastic.js', '!resources/src/mediawiki.libs/**', + // Third-party code of PHPUnit coverage report + '!tests/coverage/**', '!vendor/**', // Explicitly say "**/*.js" here in case of symlinks '!extensions/**/*.js', @@ -58,7 +59,7 @@ module.exports = function ( grunt ) { options: { syntax: 'less' }, - src: '{resources/src/*,mw-config/**}/*.{css,less}' + src: '{resources/src,mw-config}/**/*.{css,less}' }, watch: { files: [ diff --git a/HISTORY b/HISTORY index 28a9b869df..7f365ac095 100644 --- a/HISTORY +++ b/HISTORY @@ -326,6 +326,27 @@ There's usually someone online in #mediawiki on irc.freenode.net. = MediaWiki 1.27 = +== MediaWiki 1.27.1 == + +This is a maintenance release of the MediaWiki 1.27 branch. + +=== Changes since 1.27.0 === +* BREAKING CHANGE: $wgHTTPProxy is now *required* for all external requests + made by MediaWiki via a proxy. Relying on the http_proxy environment + variable is no longer supported. +* (T139565) SECURITY: API: Generate head items in the context of the given title +* (T137264) SECURITY: XSS in unclosed internal links +* (T133147) SECURITY: Escape '<' and ']]>' in inline ' . "\n"; - $hookResult = $this->runHooks( get_class( $this ) . 'Raw' ); + $hookResult = $this->runHooks( static::class . 'Raw' ); if ( $hookResult ) { echo $hookResult; } else { @@ -203,7 +203,7 @@ class MWException extends Exception { if ( defined( 'MW_API' ) ) { // Unhandled API exception, we can't be sure that format printer is alive - self::header( 'MediaWiki-API-Error: internal_api_error_' . get_class( $this ) ); + self::header( 'MediaWiki-API-Error: internal_api_error_' . static::class ); wfHttpError( 500, 'Internal Server Error', $this->getText() ); } elseif ( self::isCommandLine() ) { $message = $this->getText(); diff --git a/includes/exception/MWExceptionHandler.php b/includes/exception/MWExceptionHandler.php index bef379eeda..749be3c6cb 100644 --- a/includes/exception/MWExceptionHandler.php +++ b/includes/exception/MWExceptionHandler.php @@ -20,6 +20,7 @@ use MediaWiki\Logger\LoggerFactory; use MediaWiki\MediaWikiServices; +use Psr\Log\LogLevel; /** * Handler class for MWExceptions @@ -174,31 +175,37 @@ class MWExceptionHandler { switch ( $level ) { case E_RECOVERABLE_ERROR: $levelName = 'Error'; + $severity = LogLevel::ERROR; break; case E_WARNING: case E_CORE_WARNING: case E_COMPILE_WARNING: case E_USER_WARNING: $levelName = 'Warning'; + $severity = LogLevel::WARNING; break; case E_NOTICE: case E_USER_NOTICE: $levelName = 'Notice'; + $severity = LogLevel::INFO; break; case E_STRICT: $levelName = 'Strict Standards'; + $severity = LogLevel::DEBUG; break; case E_DEPRECATED: case E_USER_DEPRECATED: $levelName = 'Deprecated'; + $severity = LogLevel::INFO; break; default: $levelName = 'Unknown error'; + $severity = LogLevel::ERROR; break; } $e = new ErrorException( "PHP $levelName: $message", 0, $level, $file, $line ); - self::logError( $e, 'error' ); + self::logError( $e, 'error', $severity ); // This handler is for logging only. Return false will instruct PHP // to continue regular handling. @@ -335,7 +342,7 @@ TXT; $text .= "{$pad}#{$level} {$frame['file']}({$frame['line']}): "; } else { // 'file' and 'line' are unset for calls via call_user_func - // (bug 55634) This matches behaviour of + // (T57634) This matches behaviour of // Exception::getTraceAsString to instead display "[internal // function]". $text .= "{$pad}#{$level} [internal function]: "; @@ -621,8 +628,11 @@ TXT; * @since 1.25 * @param ErrorException $e * @param string $channel + * @param string $level */ - protected static function logError( ErrorException $e, $channel ) { + protected static function logError( + ErrorException $e, $channel, $level = LogLevel::ERROR + ) { $catcher = self::CAUGHT_BY_HANDLER; // The set_error_handler callback is independent from error_reporting. // Filter out unwanted errors manually (e.g. when @@ -630,7 +640,8 @@ TXT; $suppressed = ( error_reporting() & $e->getSeverity() ) === 0; if ( !$suppressed ) { $logger = LoggerFactory::getInstance( $channel ); - $logger->error( + $logger->log( + $level, self::getLogMessage( $e ), self::getLogContext( $e, $catcher ) ); @@ -640,7 +651,7 @@ TXT; $json = self::jsonSerializeException( $e, false, FormatJson::ALL_OK, $catcher ); if ( $json !== false ) { $logger = LoggerFactory::getInstance( "{$channel}-json" ); - $logger->error( $json, [ 'private' => true ] ); + $logger->log( $level, $json, [ 'private' => true ] ); } Hooks::run( 'LogException', [ $e, $suppressed ] ); diff --git a/includes/exception/MWUnknownContentModelException.php b/includes/exception/MWUnknownContentModelException.php index 3524d09af9..df7111acd7 100644 --- a/includes/exception/MWUnknownContentModelException.php +++ b/includes/exception/MWUnknownContentModelException.php @@ -23,4 +23,3 @@ class MWUnknownContentModelException extends MWException { return $this->modelId; } } - diff --git a/includes/exception/PermissionsError.php b/includes/exception/PermissionsError.php index 5ecd237640..cc69a762c1 100644 --- a/includes/exception/PermissionsError.php +++ b/includes/exception/PermissionsError.php @@ -45,10 +45,10 @@ class PermissionsError extends ErrorPageError { $this->permission = $permission; if ( !count( $errors ) ) { - $groups = array_map( - [ 'User', 'makeGroupLinkWiki' ], - User::getGroupsWithPermission( $this->permission ) - ); + $groups = []; + foreach ( User::getGroupsWithPermission( $this->permission ) as $group ) { + $groups[] = UserGroupMembership::getLink( $group, RequestContext::getMain(), 'wiki' ); + } if ( $groups ) { $errors[] = [ 'badaccess-groups', $wgLang->commaList( $groups ), count( $groups ) ]; diff --git a/includes/exception/UserNotLoggedIn.php b/includes/exception/UserNotLoggedIn.php index 43c5b09126..6086d559f5 100644 --- a/includes/exception/UserNotLoggedIn.php +++ b/includes/exception/UserNotLoggedIn.php @@ -32,7 +32,7 @@ * @par Example: * @code * if( $user->isAnon() ) { - * throw new UserNotLoggedIn(); + * throw new UserNotLoggedIn(); * } * @endcode * @@ -42,11 +42,11 @@ * @par Example: * @code * if( $user->isAnon() ) { - * throw new UserNotLoggedIn( 'action-require-loggedin' ); + * throw new UserNotLoggedIn( 'action-require-loggedin' ); * } * @endcode * - * @see bug 37627 + * @see T39627 * @since 1.20 * @ingroup Exception */ diff --git a/includes/export/WikiExporter.php b/includes/export/WikiExporter.php index c1f2d59dcc..e41ab54ee3 100644 --- a/includes/export/WikiExporter.php +++ b/includes/export/WikiExporter.php @@ -27,6 +27,8 @@ * @defgroup Dump Dump */ +use Wikimedia\Rdbms\ResultWrapper; + /** * @ingroup SpecialPage Dump */ @@ -343,7 +345,7 @@ class WikiExporter { # query optimization for history stub dumps if ( $this->text == WikiExporter::STUB && $orderRevs ) { $tables = [ 'revision', 'page' ]; - $opts[] = 'STRAIGHT_JOIN'; + $opts[] = 'STRAIGHT_JOIN'; $opts['ORDER BY'] = [ 'rev_page ASC', 'rev_id ASC' ]; $opts['USE INDEX']['revision'] = 'rev_page_id'; $join['page'] = [ 'INNER JOIN', 'rev_page=page_id' ]; diff --git a/includes/export/XmlDumpWriter.php b/includes/export/XmlDumpWriter.php index 5be166b29d..5a1f92c4cc 100644 --- a/includes/export/XmlDumpWriter.php +++ b/includes/export/XmlDumpWriter.php @@ -269,7 +269,9 @@ class XmlDumpWriter { $out .= " \n"; } - Hooks::run( 'XmlDumpWriterWriteRevision', [ &$this, &$out, $row, $text ] ); + // Avoid PHP 7.1 warning from passing $this by reference + $writer = $this; + Hooks::run( 'XmlDumpWriterWriteRevision', [ &$writer, &$out, $row, $text ] ); $out .= " \n"; @@ -431,6 +433,9 @@ class XmlDumpWriter { global $wgContLang; $prefix = $wgContLang->getFormattedNsText( $title->getNamespace() ); + // @todo Emit some kind of warning to the user if $title->getNamespace() !== + // NS_MAIN and $prefix === '' (viz. pages in an unregistered namespace) + if ( $prefix !== '' ) { $prefix .= ':'; } diff --git a/includes/externalstore/ExternalStoreDB.php b/includes/externalstore/ExternalStoreDB.php index 52c1a4c1f1..d907c304f4 100644 --- a/includes/externalstore/ExternalStoreDB.php +++ b/includes/externalstore/ExternalStoreDB.php @@ -20,6 +20,8 @@ * @file */ +use Wikimedia\Rdbms\LoadBalancer; + /** * DB accessable external objects. * @@ -106,9 +108,7 @@ class ExternalStoreDB extends ExternalStoreMedium { * @return LoadBalancer */ private function getLoadBalancer( $cluster ) { - $wiki = isset( $this->params['wiki'] ) ? $this->params['wiki'] : false; - - return wfGetLBFactory()->getExternalLB( $cluster, $wiki ); + return wfGetLBFactory()->getExternalLB( $cluster ); } /** diff --git a/includes/filebackend/filejournal/DBFileJournal.php b/includes/filebackend/filejournal/DBFileJournal.php index 2e06c40f72..62e635dd23 100644 --- a/includes/filebackend/filejournal/DBFileJournal.php +++ b/includes/filebackend/filejournal/DBFileJournal.php @@ -22,6 +22,8 @@ * @author Aaron Schulz */ +use MediaWiki\MediaWikiServices; + /** * Version of FileJournal that logs to a DB table * @since 1.20 @@ -180,7 +182,7 @@ class DBFileJournal extends FileJournal { protected function getMasterDB() { if ( !$this->dbw ) { // Get a separate connection in autocommit mode - $lb = wfGetLBFactory()->newMainLB(); + $lb = MediaWikiServices::getInstance()->getDBLoadBalancerFactory()->newMainLB(); $this->dbw = $lb->getConnection( DB_MASTER, [], $this->wiki ); $this->dbw->clearFlag( DBO_TRX ); } diff --git a/includes/filerepo/FileRepo.php b/includes/filerepo/FileRepo.php index 0e4b2f0b50..8edf81f131 100644 --- a/includes/filerepo/FileRepo.php +++ b/includes/filerepo/FileRepo.php @@ -1448,7 +1448,7 @@ class FileRepo { 'dst' => $archivePath, // We may have 2+ identical files being deleted, // all of which will map to the same destination file - 'overwriteSame' => true // also see bug 31792 + 'overwriteSame' => true // also see T33792 ]; } diff --git a/includes/filerepo/ForeignAPIRepo.php b/includes/filerepo/ForeignAPIRepo.php index ca417187e0..43f1d211b3 100644 --- a/includes/filerepo/ForeignAPIRepo.php +++ b/includes/filerepo/ForeignAPIRepo.php @@ -571,7 +571,7 @@ class ForeignAPIRepo extends FileRepo { $cache = ObjectCache::getMainWANInstance(); return $cache->getWithSetCallback( - $this->getLocalCacheKey( get_class( $this ), $target, md5( $url ) ), + $this->getLocalCacheKey( static::class, $target, md5( $url ) ), $cacheTTL, function ( $curValue, &$ttl ) use ( $url, $cache ) { $html = self::httpGet( $url, 'default', [], $mtime ); @@ -593,13 +593,13 @@ class ForeignAPIRepo extends FileRepo { * @throws MWException */ function enumFiles( $callback ) { - throw new MWException( 'enumFiles is not supported by ' . get_class( $this ) ); + throw new MWException( 'enumFiles is not supported by ' . static::class ); } /** * @throws MWException */ protected function assertWritableRepo() { - throw new MWException( get_class( $this ) . ': write operations are not supported.' ); + throw new MWException( static::class . ': write operations are not supported.' ); } } diff --git a/includes/filerepo/ForeignDBRepo.php b/includes/filerepo/ForeignDBRepo.php index f49ef88c5c..3e8850823e 100644 --- a/includes/filerepo/ForeignDBRepo.php +++ b/includes/filerepo/ForeignDBRepo.php @@ -138,7 +138,7 @@ class ForeignDBRepo extends LocalRepo { } protected function assertWritableRepo() { - throw new MWException( get_class( $this ) . ': write operations are not supported.' ); + throw new MWException( static::class . ': write operations are not supported.' ); } /** diff --git a/includes/filerepo/ForeignDBViaLBRepo.php b/includes/filerepo/ForeignDBViaLBRepo.php index a9cd030869..f83fd1c813 100644 --- a/includes/filerepo/ForeignDBViaLBRepo.php +++ b/includes/filerepo/ForeignDBViaLBRepo.php @@ -100,7 +100,7 @@ class ForeignDBViaLBRepo extends LocalRepo { } protected function assertWritableRepo() { - throw new MWException( get_class( $this ) . ': write operations are not supported.' ); + throw new MWException( static::class . ': write operations are not supported.' ); } public function getInfo() { diff --git a/includes/filerepo/LocalRepo.php b/includes/filerepo/LocalRepo.php index d49ae7bf4b..d5e29aba83 100644 --- a/includes/filerepo/LocalRepo.php +++ b/includes/filerepo/LocalRepo.php @@ -22,6 +22,8 @@ * @ingroup FileRepo */ +use Wikimedia\Rdbms\ResultWrapper; + /** * A repository that stores files in the local filesystem and registers them * in the wiki's own database. This is the most commonly used repository class. diff --git a/includes/filerepo/NullRepo.php b/includes/filerepo/NullRepo.php index f2b7395c7b..1c12e0274a 100644 --- a/includes/filerepo/NullRepo.php +++ b/includes/filerepo/NullRepo.php @@ -33,6 +33,6 @@ class NullRepo extends FileRepo { } protected function assertWritableRepo() { - throw new MWException( get_class( $this ) . ': write operations are not supported.' ); + throw new MWException( static::class . ': write operations are not supported.' ); } } diff --git a/includes/filerepo/file/ArchivedFile.php b/includes/filerepo/file/ArchivedFile.php index 9a7a55be9e..6984d48c6d 100644 --- a/includes/filerepo/file/ArchivedFile.php +++ b/includes/filerepo/file/ArchivedFile.php @@ -492,22 +492,6 @@ class ArchivedFile { throw new MWException( "Unknown type '$type'." ); } - /** - * Return the user name of the uploader. - * - * @deprecated since 1.23 Use getUser( 'text' ) instead. - * @return string|int - */ - public function getUserText() { - wfDeprecated( __METHOD__, '1.23' ); - $this->load(); - if ( $this->isDeleted( File::DELETED_USER ) ) { - return 0; - } else { - return $this->user_text; - } - } - /** * Return upload description. * diff --git a/includes/filerepo/file/File.php b/includes/filerepo/file/File.php index be784626d9..f7e85a8a40 100644 --- a/includes/filerepo/file/File.php +++ b/includes/filerepo/file/File.php @@ -919,7 +919,7 @@ abstract class File implements IDBAccessObject { return $this->iconThumb(); } $hp['width'] = $width; - // be sure to ignore any height specification as well (bug 62258) + // be sure to ignore any height specification as well (T64258) unset( $hp['height'] ); return $this->transform( $hp ); @@ -1039,7 +1039,7 @@ abstract class File implements IDBAccessObject { break; // not a bitmap or renderable image, don't try } - // Get the descriptionUrl to embed it as comment into the thumbnail. Bug 19791. + // Get the descriptionUrl to embed it as comment into the thumbnail. T21791. $descriptionUrl = $this->getDescriptionUrl(); if ( $descriptionUrl ) { $params['descriptionUrl'] = wfExpandUrl( $descriptionUrl, PROTO_CANONICAL ); @@ -1766,7 +1766,7 @@ abstract class File implements IDBAccessObject { * @throws MWException */ function readOnlyError() { - throw new MWException( get_class( $this ) . ': write operations are not supported' ); + throw new MWException( static::class . ': write operations are not supported' ); } /** diff --git a/includes/filerepo/file/ForeignDBFile.php b/includes/filerepo/file/ForeignDBFile.php index c6c49b4ca4..f6f44e610a 100644 --- a/includes/filerepo/file/ForeignDBFile.php +++ b/includes/filerepo/file/ForeignDBFile.php @@ -120,10 +120,10 @@ class ForeignDBFile extends LocalFile { } /** - * @param bool|Language $lang Optional language to fetch description in. + * @param Language|null $lang Optional language to fetch description in. * @return string|false */ - function getDescriptionText( $lang = false ) { + function getDescriptionText( $lang = null ) { global $wgLang; if ( !$this->repo->fetchDescription ) { diff --git a/includes/filerepo/file/LocalFile.php b/includes/filerepo/file/LocalFile.php index 16fe72d37c..a633fd2f8d 100644 --- a/includes/filerepo/file/LocalFile.php +++ b/includes/filerepo/file/LocalFile.php @@ -240,6 +240,15 @@ class LocalFile extends File { return $this->repo->getSharedCacheKey( 'file', sha1( $this->getName() ) ); } + /** + * @param WANObjectCache $cache + * @return string[] + * @since 1.28 + */ + public function getMutableCacheKeys( WANObjectCache $cache ) { + return [ $this->getCacheKey() ]; + } + /** * Try to load file metadata from memcached, falling back to the database */ @@ -382,7 +391,7 @@ class LocalFile extends File { * @param int $flags */ function loadFromDB( $flags = 0 ) { - $fname = get_class( $this ) . '::' . __FUNCTION__; + $fname = static::class . '::' . __FUNCTION__; # Unconditionally set loaded=true, we don't want the accessors constantly rechecking $this->dataLoaded = true; @@ -407,7 +416,7 @@ class LocalFile extends File { * This covers fields that are sometimes not cached. */ protected function loadExtraFromDB() { - $fname = get_class( $this ) . '::' . __FUNCTION__; + $fname = static::class . '::' . __FUNCTION__; # Unconditionally set loaded=true, we don't want the accessors constantly rechecking $this->extraDataLoaded = true; @@ -882,7 +891,7 @@ class LocalFile extends File { $files[] = $file; } } catch ( FileBackendError $e ) { - } // suppress (bug 54674) + } // suppress (T56674) return $files; } @@ -1061,7 +1070,9 @@ class LocalFile extends File { $opts['ORDER BY'] = "oi_timestamp $order"; $opts['USE INDEX'] = [ 'oldimage' => 'oi_name_timestamp' ]; - Hooks::run( 'LocalFile::getHistory', [ &$this, &$tables, &$fields, + // Avoid PHP 7.1 warning from passing $this by reference + $localFile = $this; + Hooks::run( 'LocalFile::getHistory', [ &$localFile, &$tables, &$fields, &$conds, &$opts, &$join_conds ] ); $res = $dbr->select( $tables, $fields, $conds, __METHOD__, $opts, $join_conds ); @@ -1089,7 +1100,7 @@ class LocalFile extends File { */ public function nextHistoryLine() { # Polymorphic function name to distinguish foreign and local fetches - $fname = get_class( $this ) . '::' . __FUNCTION__; + $fname = static::class . '::' . __FUNCTION__; $dbr = $this->repo->getReplicaDB(); @@ -1342,7 +1353,7 @@ class LocalFile extends File { } } - # (bug 34993) Note: $oldver can be empty here, if the previous + # (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. @@ -1996,7 +2007,7 @@ class LocalFile extends File { $dbw = $this->repo->getMasterDB(); $makesTransaction = !$dbw->trxLevel(); $dbw->startAtomic( self::ATOMIC_SECTION_LOCK ); - // Bug 54736: use simple lock to handle when the file does not exist. + // T56736: use simple lock to handle when the file does not exist. // SELECT FOR UPDATE prevents changes, not other SELECTs with FOR UPDATE. // Also, that would cause contention on INSERT of similarly named rows. $status = $this->acquireFileLock(); // represents all versions of the file @@ -3024,7 +3035,7 @@ class LocalFileMoveBatch { $status->failCount++; } $status->successCount += $oldRowCount; - // Bug 34934: oldCount is based on files that actually exist. + // T36934: oldCount is based on files that actually exist. // There may be more DB rows than such files, in which case $affected // can be greater than $total. We use max() to avoid negatives here. $status->failCount += max( 0, $this->oldCount - $oldRowCount ); diff --git a/includes/htmlform/HTMLForm.php b/includes/htmlform/HTMLForm.php index e627cfdc69..399147b89a 100644 --- a/includes/htmlform/HTMLForm.php +++ b/includes/htmlform/HTMLForm.php @@ -165,6 +165,7 @@ class HTMLForm extends ContextSource { 'url' => 'HTMLTextField', 'title' => 'HTMLTitleTextField', 'user' => 'HTMLUserTextField', + 'usersmultiselect' => 'HTMLUsersMultiselectField', ]; public $mFieldData; @@ -1258,7 +1259,7 @@ class HTMLForm extends ContextSource { * * @param string|array|Status $elements The set of errors/warnings to process. * @param string $elementsType Should warnings or errors be returned. This is meant - * for Status objects, all other valid types are always considered as errors. + * for Status objects, all other valid types are always considered as errors. * @return string */ public function getErrorsOrWarnings( $elements, $elementsType ) { diff --git a/includes/htmlform/HTMLFormField.php b/includes/htmlform/HTMLFormField.php index 487d6f647b..3a3146bc22 100644 --- a/includes/htmlform/HTMLFormField.php +++ b/includes/htmlform/HTMLFormField.php @@ -475,7 +475,7 @@ abstract class HTMLFormField { public function getTableRow( $value ) { list( $errors, $errorClass ) = $this->getErrorsAndErrorClass( $value ); $inputHtml = $this->getInputHTML( $value ); - $fieldType = get_class( $this ); + $fieldType = static::class; $helptext = $this->getHelpTextHtmlTable( $this->getHelpText() ); $cellAttributes = []; $rowAttributes = []; @@ -533,7 +533,7 @@ abstract class HTMLFormField { public function getDiv( $value ) { list( $errors, $errorClass ) = $this->getErrorsAndErrorClass( $value ); $inputHtml = $this->getInputHTML( $value ); - $fieldType = get_class( $this ); + $fieldType = static::class; $helptext = $this->getHelpTextHtmlDiv( $this->getHelpText() ); $cellAttributes = []; $label = $this->getLabelHtml( $cellAttributes ); @@ -601,7 +601,7 @@ abstract class HTMLFormField { $infusable = false; } - $fieldType = get_class( $this ); + $fieldType = static::class; $help = $this->getHelpText(); $errors = $this->getErrorsRaw( $value ); foreach ( $errors as &$error ) { diff --git a/includes/htmlform/fields/HTMLCheckMatrix.php b/includes/htmlform/fields/HTMLCheckMatrix.php index 46172a581b..fa18a3cdad 100644 --- a/includes/htmlform/fields/HTMLCheckMatrix.php +++ b/includes/htmlform/fields/HTMLCheckMatrix.php @@ -189,7 +189,7 @@ class HTMLCheckMatrix extends HTMLFormField implements HTMLNestedFilterable { public function getTableRow( $value ) { list( $errors, $errorClass ) = $this->getErrorsAndErrorClass( $value ); $inputHtml = $this->getInputHTML( $value ); - $fieldType = get_class( $this ); + $fieldType = static::class; $helptext = $this->getHelpTextHtmlTable( $this->getHelpText() ); $cellAttributes = [ 'colspan' => 2 ]; diff --git a/includes/htmlform/fields/HTMLFormFieldCloner.php b/includes/htmlform/fields/HTMLFormFieldCloner.php index 8fb840a136..dd9184bf33 100644 --- a/includes/htmlform/fields/HTMLFormFieldCloner.php +++ b/includes/htmlform/fields/HTMLFormFieldCloner.php @@ -46,7 +46,7 @@ class HTMLFormFieldCloner extends HTMLFormField { protected $uniqueId; public function __construct( $params ) { - $this->uniqueId = get_class( $this ) . ++self::$counter . 'x'; + $this->uniqueId = static::class . ++self::$counter . 'x'; parent::__construct( $params ); if ( empty( $this->mParams['fields'] ) || !is_array( $this->mParams['fields'] ) ) { diff --git a/includes/htmlform/fields/HTMLMultiSelectField.php b/includes/htmlform/fields/HTMLMultiSelectField.php index 23044bd6ff..2b6e0665d5 100644 --- a/includes/htmlform/fields/HTMLMultiSelectField.php +++ b/includes/htmlform/fields/HTMLMultiSelectField.php @@ -17,6 +17,11 @@ class HTMLMultiSelectField extends HTMLFormField implements HTMLNestedFilterable public function __construct( $params ) { parent::__construct( $params ); + // If the disabled-options parameter is not provided, use an empty array + if ( isset( $this->mParams['disabled-options'] ) === false ) { + $this->mParams['disabled-options'] = []; + } + // For backwards compatibility, also handle the old way with 'cssclass' => 'mw-chosen' if ( isset( $params['dropdown'] ) || strpos( $this->mClass, 'mw-chosen' ) !== false ) { $this->mClass .= ' mw-htmlform-dropdown'; @@ -75,6 +80,9 @@ class HTMLMultiSelectField extends HTMLFormField implements HTMLNestedFilterable 'id' => "{$this->mID}-$info", 'value' => $info, ]; + if ( in_array( $info, $this->mParams['disabled-options'], true ) ) { + $thisAttribs['disabled'] = 'disabled'; + } $checked = in_array( $info, $value, true ); $checkbox = $this->getOneCheckbox( $checked, $attribs + $thisAttribs, $label ); @@ -112,6 +120,18 @@ class HTMLMultiSelectField extends HTMLFormField implements HTMLNestedFilterable } } + /** + * Get options and make them into arrays suitable for OOUI. + * @return array Options for inclusion in a select or whatever. + */ + public function getOptionsOOUI() { + $options = parent::getOptionsOOUI(); + foreach ( $options as &$option ) { + $option['disabled'] = in_array( $option['data'], $this->mParams['disabled-options'], true ); + } + return $options; + } + /** * Get the OOUI version of this field. * diff --git a/includes/htmlform/fields/HTMLTextField.php b/includes/htmlform/fields/HTMLTextField.php index c3da74618b..b0b66cab9f 100644 --- a/includes/htmlform/fields/HTMLTextField.php +++ b/includes/htmlform/fields/HTMLTextField.php @@ -187,6 +187,7 @@ class HTMLTextField extends HTMLFormField { 'name' => $this->mName, 'value' => $value, 'type' => $type, + 'dir' => $this->mDir, ] + $attribs ); } diff --git a/includes/htmlform/fields/HTMLUsersMultiselectField.php b/includes/htmlform/fields/HTMLUsersMultiselectField.php new file mode 100644 index 0000000000..8c1241d015 --- /dev/null +++ b/includes/htmlform/fields/HTMLUsersMultiselectField.php @@ -0,0 +1,86 @@ +getCheck( $this->mName ) ) { + return $this->getDefault(); + } + + $usersArray = explode( "\n", $request->getText( $this->mName ) ); + // Remove empty lines + $usersArray = array_values( array_filter( $usersArray, function( $username ) { + return trim( $username ) !== ''; + } ) ); + return $usersArray; + } + + public function validate( $value, $alldata ) { + if ( !$this->mParams['exists'] ) { + return true; + } + + if ( is_null( $value ) ) { + return false; + } + + foreach ( $value as $username ) { + $result = parent::validate( $username, $alldata ); + if ( $result !== true ) { + return $result; + } + } + + return true; + } + + public function getInputHTML( $values ) { + $this->mParent->getOutput()->enableOOUI(); + return $this->getInputOOUI( $values ); + } + + public function getInputOOUI( $values ) { + $params = [ 'name' => $this->mName ]; + + if ( isset( $this->mParams['default'] ) ) { + $params['default'] = $this->mParams['default']; + } + + if ( isset( $this->mParams['placeholder'] ) ) { + $params['placeholder'] = $this->mParams['placeholder']; + } else { + $params['placeholder'] = $this->msg( 'mw-widgets-usersmultiselect-placeholder' ) + ->inContentLanguage() + ->plain(); + } + + if ( !is_null( $values ) ) { + $params['default'] = $values; + } + + return new UsersMultiselectWidget( $params ); + } + + protected function shouldInfuseOOUI() { + return true; + } + + protected function getOOUIModules() { + return [ 'mediawiki.widgets.UsersMultiselectWidget' ]; + } + +} diff --git a/includes/http/Http.php b/includes/http/Http.php index 779d606346..fa2d5a385f 100644 --- a/includes/http/Http.php +++ b/includes/http/Http.php @@ -46,8 +46,8 @@ class Http { * - caInfo Provide CA information * - maxRedirects Maximum number of redirects to follow (defaults to 5) * - followRedirects Whether to follow redirects (defaults to false). - * Note: this should only be used when the target URL is trusted, - * to avoid attacks on intranet services accessible by HTTP. + * Note: this should only be used when the target URL is trusted, + * to avoid attacks on intranet services accessible by HTTP. * - userAgent A user agent, if you want to override the default * MediaWiki/$wgVersion * - logger A \Psr\Logger\LoggerInterface instance for debug logging diff --git a/includes/http/MWHttpRequest.php b/includes/http/MWHttpRequest.php index fac052fffc..e04402fa81 100644 --- a/includes/http/MWHttpRequest.php +++ b/includes/http/MWHttpRequest.php @@ -132,7 +132,7 @@ class MWHttpRequest implements LoggerAwareInterface { foreach ( $members as $o ) { if ( isset( $options[$o] ) ) { // ensure that MWHttpRequest::method is always - // uppercased. Bug 36137 + // uppercased. T38137 if ( $o == 'method' ) { $options[$o] = strtoupper( $options[$o] ); } @@ -580,7 +580,7 @@ class MWHttpRequest implements LoggerAwareInterface { * * Note that the multiple Location: headers are an artifact of * CURL -- they shouldn't actually get returned this way. Rewrite - * this when bug 29232 is taken care of (high-level redirect + * this when T31232 is taken care of (high-level redirect * handling rewrite). * * @return string diff --git a/includes/import/WikiImporter.php b/includes/import/WikiImporter.php index 1769924ab0..06b579a7d9 100644 --- a/includes/import/WikiImporter.php +++ b/includes/import/WikiImporter.php @@ -546,7 +546,7 @@ class WikiImporter { public function doImport() { // Calls to reader->read need to be wrapped in calls to // libxml_disable_entity_loader() to avoid local file - // inclusion attacks (bug 46932). + // inclusion attacks (T48932). $oldDisable = libxml_disable_entity_loader( true ); $this->reader->read(); diff --git a/includes/installer/DatabaseInstaller.php b/includes/installer/DatabaseInstaller.php index 50d73de4c8..030553599f 100644 --- a/includes/installer/DatabaseInstaller.php +++ b/includes/installer/DatabaseInstaller.php @@ -20,6 +20,7 @@ * @file * @ingroup Deployment */ +use Wikimedia\Rdbms\LBFactorySingle; /** * Base class for DBMS-specific installation helper classes. diff --git a/includes/installer/DatabaseUpdater.php b/includes/installer/DatabaseUpdater.php index 6a8a99ff09..f8ab1f283e 100644 --- a/includes/installer/DatabaseUpdater.php +++ b/includes/installer/DatabaseUpdater.php @@ -59,6 +59,11 @@ abstract class DatabaseUpdater { */ protected $db; + /** + * @var Maintenance + */ + protected $maintenance; + protected $shared = false; /** @@ -485,7 +490,7 @@ abstract class DatabaseUpdater { public function updateRowExists( $key ) { $row = $this->db->selectRow( 'updatelog', - # Bug 65813 + # T67813 '1 AS X', [ 'ul_key' => $key ], __METHOD__ diff --git a/includes/installer/Installer.php b/includes/installer/Installer.php index 9dc8032634..f03fe6a3f4 100644 --- a/includes/installer/Installer.php +++ b/includes/installer/Installer.php @@ -216,7 +216,7 @@ abstract class Installer { '_UpgradeKeySupplied' => false, '_ExistingDBSettings' => false, - // $wgLogo is probably wrong (bug 48084); set something that will work. + // $wgLogo is probably wrong (T50084); set something that will work. // Single quotes work fine here, as LocalSettingsGenerator outputs this unescaped. 'wgLogo' => '$wgResourceBasePath/resources/assets/wiki.png', 'wgAuthenticationTokenVersion' => 1, @@ -1421,6 +1421,7 @@ abstract class Installer { $wgAutoloadClasses += $data['autoload']; $hooksWeWant = isset( $wgHooks['LoadExtensionSchemaUpdates'] ) ? + /** @suppress PhanUndeclaredVariable $wgHooks is set by DefaultSettings */ $wgHooks['LoadExtensionSchemaUpdates'] : []; if ( isset( $data['globals']['wgHooks']['LoadExtensionSchemaUpdates'] ) ) { @@ -1430,7 +1431,7 @@ abstract class Installer { ); } // Unset everyone else's hooks. Lord knows what someone might be doing - // in ParserFirstCallInit (see bug 27171) + // in ParserFirstCallInit (see T29171) $GLOBALS['wgHooks'] = [ 'LoadExtensionSchemaUpdates' => $hooksWeWant ]; return Status::newGood(); @@ -1655,8 +1656,13 @@ abstract class Installer { */ protected function createMainpage( DatabaseInstaller $installer ) { $status = Status::newGood(); + $title = Title::newMainPage(); + if ( $title->exists() ) { + $status->warning( 'config-install-mainpage-exists' ); + return $status; + } try { - $page = WikiPage::factory( Title::newMainPage() ); + $page = WikiPage::factory( $title ); $content = new WikitextContent( wfMessage( 'mainpagetext' )->inContentLanguage()->text() . "\n\n" . wfMessage( 'mainpagedocfooter' )->inContentLanguage()->text() diff --git a/includes/installer/MssqlInstaller.php b/includes/installer/MssqlInstaller.php index 5e8ed3fb8c..d6efeb2deb 100644 --- a/includes/installer/MssqlInstaller.php +++ b/includes/installer/MssqlInstaller.php @@ -214,6 +214,7 @@ class MssqlInstaller extends DatabaseInstaller { try { $db = Database::factory( 'mssql', [ 'host' => $this->getVar( 'wgDBserver' ), + 'port' => $this->getVar( 'wgDBport' ), 'user' => $user, 'password' => $password, 'dbname' => false, diff --git a/includes/installer/MysqlUpdater.php b/includes/installer/MysqlUpdater.php index d95222cbe1..3131c3cf5c 100644 --- a/includes/installer/MysqlUpdater.php +++ b/includes/installer/MysqlUpdater.php @@ -20,6 +20,9 @@ * @file * @ingroup Deployment */ +use Wikimedia\Rdbms\Field; +use Wikimedia\Rdbms\MySQLField; +use MediaWiki\MediaWikiServices; /** * Mysql update list and mysql-specific update functions. @@ -294,6 +297,8 @@ class MysqlUpdater extends DatabaseUpdater { // 1.29 [ 'addField', 'externallinks', 'el_index_60', 'patch-externallinks-el_index_60.sql' ], + [ 'dropIndex', 'user_groups', 'ug_user_group', 'patch-user_groups-primary-key.sql' ], + [ 'addField', 'user_groups', 'ug_expiry', 'patch-user_groups-ug_expiry.sql' ], ]; } @@ -819,7 +824,7 @@ class MysqlUpdater extends DatabaseUpdater { /** * Set page_random field to a random value where it is equals to 0. * - * @see bug 3946 + * @see T5946 */ protected function doPageRandomUpdate() { $page = $this->db->tableName( 'page' ); @@ -851,7 +856,8 @@ class MysqlUpdater extends DatabaseUpdater { foreach ( $res as $row ) { $count = ( $count + 1 ) % 100; if ( $count == 0 ) { - wfGetLBFactory()->waitForReplication( [ 'wiki' => wfWikiID() ] ); + $lbFactory = MediaWikiServices::getInstance()->getDBLoadBalancerFactory(); + $lbFactory->waitForReplication( [ 'wiki' => wfWikiID() ] ); } $this->db->insert( 'templatelinks', [ diff --git a/includes/installer/OracleUpdater.php b/includes/installer/OracleUpdater.php index 1f0e411af0..79ae175d53 100644 --- a/includes/installer/OracleUpdater.php +++ b/includes/installer/OracleUpdater.php @@ -121,6 +121,7 @@ class OracleUpdater extends DatabaseUpdater { // 1.29 [ 'addField', 'externallinks', 'el_index_60', 'patch-externallinks-el_index_60.sql' ], + [ 'addField', 'user_groups', 'ug_expiry', 'patch-user_groups-ug_expiry.sql' ], // KEEP THIS AT THE BOTTOM!! [ 'doRebuildDuplicateFunction' ], diff --git a/includes/installer/PostgresInstaller.php b/includes/installer/PostgresInstaller.php index 6dfa28b21c..906768f489 100644 --- a/includes/installer/PostgresInstaller.php +++ b/includes/installer/PostgresInstaller.php @@ -156,10 +156,13 @@ class PostgresInstaller extends DatabaseInstaller { try { $db = Database::factory( 'postgres', [ 'host' => $this->getVar( 'wgDBserver' ), + 'port' => $this->getVar( 'wgDBport' ), 'user' => $user, 'password' => $password, 'dbname' => $dbName, - 'schema' => $schema ] ); + 'schema' => $schema, + 'keywordTableMap' => [ 'user' => 'mwuser', 'text' => 'pagecontent' ], + ] ); $status->value = $db; } catch ( DBConnectionError $e ) { $status->fatal( 'config-connection-error', $e->getMessage() ); diff --git a/includes/installer/PostgresUpdater.php b/includes/installer/PostgresUpdater.php index 1eb3f41731..1a7b208af0 100644 --- a/includes/installer/PostgresUpdater.php +++ b/includes/installer/PostgresUpdater.php @@ -448,6 +448,8 @@ class PostgresUpdater extends DatabaseUpdater { [ 'addPgField', 'externallinks', 'el_index_60', "BYTEA NOT NULL DEFAULT ''" ], [ 'addPgIndex', 'externallinks', 'el_index_60', '( el_index_60, el_id )' ], [ '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 )' ], ]; } @@ -494,8 +496,8 @@ class PostgresUpdater extends DatabaseUpdater { $q = << 0 - AND relname=%s AND nspname=%s + AND attrelid=pg_class.oid AND attnum > 0 + AND relname=%s AND nspname=%s END; $res = $this->db->query( sprintf( $q, $this->db->addQuotes( $table ), @@ -521,9 +523,9 @@ END; $q = <<db->query( sprintf( @@ -549,8 +551,8 @@ END; $query = <<db->query( sprintf( $query, $rid ) ); if ( !$r2 ) { @@ -570,8 +572,8 @@ END; $q = <<db->query( sprintf( @@ -592,8 +594,8 @@ END; $q = <<db->query( sprintf( @@ -979,10 +981,10 @@ END; protected function rebuildTextSearch() { if ( $this->updateRowExists( 'patch-textsearch_bug66650.sql' ) ) { - $this->output( "...bug 66650 already fixed or not applicable.\n" ); + $this->output( "...T68650 already fixed or not applicable.\n" ); return; }; $this->applyPatch( 'patch-textsearch_bug66650.sql', false, - 'Rebuilding text search for bug 66650' ); + 'Rebuilding text search for T68650' ); } } diff --git a/includes/installer/SqliteInstaller.php b/includes/installer/SqliteInstaller.php index c5c4a7cc14..0fe7068ba0 100644 --- a/includes/installer/SqliteInstaller.php +++ b/includes/installer/SqliteInstaller.php @@ -244,9 +244,9 @@ class SqliteInstaller extends DatabaseInstaller { $sql = <<query( $sql ); diff --git a/includes/installer/SqliteUpdater.php b/includes/installer/SqliteUpdater.php index 32068e65e8..cdbbfd0c51 100644 --- a/includes/installer/SqliteUpdater.php +++ b/includes/installer/SqliteUpdater.php @@ -161,6 +161,7 @@ class SqliteUpdater extends DatabaseUpdater { // 1.29 [ 'addField', 'externallinks', 'el_index_60', 'patch-externallinks-el_index_60.sql' ], + [ 'addField', 'user_groups', 'ug_expiry', 'patch-user_groups-ug_expiry.sql' ], ]; } diff --git a/includes/installer/WebInstaller.php b/includes/installer/WebInstaller.php index c08212e390..c94f0bfaa4 100644 --- a/includes/installer/WebInstaller.php +++ b/includes/installer/WebInstaller.php @@ -1083,7 +1083,7 @@ class WebInstaller extends Installer { foreach ( $varNames as $name ) { $value = $this->request->getVal( $prefix . $name ); - // bug 30524, do not trim passwords + // T32524, do not trim passwords if ( stripos( $name, 'password' ) === false ) { $value = trim( $value ); } diff --git a/includes/installer/WebInstallerName.php b/includes/installer/WebInstallerName.php index e6deed52b6..81a107dea3 100644 --- a/includes/installer/WebInstallerName.php +++ b/includes/installer/WebInstallerName.php @@ -251,7 +251,7 @@ class WebInstallerName extends WebInstallerPage { $retVal = false; } // If they asked to subscribe to mediawiki-announce but didn't give - // an e-mail, show an error. Bug 29332 + // an e-mail, show an error. T31332 if ( !$email && $this->getVar( '_Subscribe' ) ) { $this->parent->showError( 'config-subscribe-noemail' ); $retVal = false; diff --git a/includes/installer/WebInstallerOutput.php b/includes/installer/WebInstallerOutput.php index 62fe7852b7..e4eb255bbd 100644 --- a/includes/installer/WebInstallerOutput.php +++ b/includes/installer/WebInstallerOutput.php @@ -299,9 +299,9 @@ class WebInstallerOutput {
plain(); diff --git a/includes/installer/WebInstallerPage.php b/includes/installer/WebInstallerPage.php index 2ab055464d..3aad6f8793 100644 --- a/includes/installer/WebInstallerPage.php +++ b/includes/installer/WebInstallerPage.php @@ -92,7 +92,7 @@ abstract class WebInstallerPage { } if ( $continue ) { - // Fake submit button for enter keypress (bug 26267) + // Fake submit button for enter keypress (T28267) // Messages: config-continue, config-restart, config-regenerate $s .= Xml::submitButton( wfMessage( "config-$continue" )->text(), @@ -133,7 +133,7 @@ abstract class WebInstallerPage { * @return string */ public function getName() { - return str_replace( 'WebInstaller', '', get_class( $this ) ); + return str_replace( 'WebInstaller', '', static::class ); } /** diff --git a/includes/installer/WebInstallerUpgrade.php b/includes/installer/WebInstallerUpgrade.php index 72973e7d2e..bf732a4b3e 100644 --- a/includes/installer/WebInstallerUpgrade.php +++ b/includes/installer/WebInstallerUpgrade.php @@ -67,7 +67,7 @@ class WebInstallerUpgrade extends WebInstallerPage { if ( $result ) { // If they're going to possibly regenerate LocalSettings, we - // need to create the upgrade/secret keys. Bug 26481 + // need to create the upgrade/secret keys. T28481 if ( !$this->getVar( '_ExistingDBSettings' ) ) { $this->parent->generateKeys(); } diff --git a/includes/installer/i18n/ast.json b/includes/installer/i18n/ast.json index c591f1eba9..d47334cca9 100644 --- a/includes/installer/i18n/ast.json +++ b/includes/installer/i18n/ast.json @@ -89,6 +89,7 @@ "config-db-name": "Nome de base de datos:", "config-db-name-help": "Escueye un nome qu'identifique la to wiki. Nun tien de contener espacios. \nSi tas utilizando agospiamientu web compartíu, el to provisor va date un nome específicu de base de datos por que lu utilices, o bien va dexate crear bases de datos al traviés d'un panel de control.", "config-db-name-oracle": "Esquema de la base de datos:", + "config-db-account-oracle-warn": "Hai tres escenarios compatibles pa la instalación de Oracle como motor de base de datos:\n\nSi desees crear una cuenta de base de datos como parte del procesu d'instalación, por favor apurre una cuenta con rol SYSDBA como cuenta de base de datos pa la instalación y especifica les credenciales que quies tener pal accesu a la web a la cuenta; d'otra miente, puedes crear manualmente la cuenta d'accesu a la web y suministrar namái esa cuenta (si tien los permisos necesarios pa crear los oxetos d'esquema) o dar dos cuentes distintos, una con privilexos de creación y otra con accesu acutáu a la web\n\nLa secuencia de comandos (script) pa crear una cuenta colos privilexos necesarios puede atopase nel direutoriu \"maintenance/oracle/\" d'esta instalación. Ten en cuenta qu'utilizar una cuenta acutada va desactivar toles capacidaes de caltenimientu cola cuenta predeterminada.", "config-db-install-account": "Cuenta d'usuariu pa la instalación", "config-db-username": "Nome d'usuariu de base de datos:", "config-db-password": "Contraseña de base de datos:", @@ -100,6 +101,12 @@ "config-db-wiki-help": "Escribe'l nome d'usuariu y la contraseña que se van utilizar p'aportar a la base de datos mientres la operación normal de la wiki.\nSi esta cuenta nun esiste y la cuenta d'instalación tien permisos bastante, va crease esta cuenta d'usuariu colos mínimos permisos necesarios pa operar normalmente la wiki.", "config-db-prefix": "Prefixu de tables de la base de datos:", "config-db-prefix-help": "Si precises compartir una base de datos ente múltiples wikis, o ente MediaWiki y otra aplicación web, puedes optar por amestar un prefixu a tolos nomes de tabla pa evitar conflictos.\nNun utilices espacios.\n\nDe normal déxase esti campu vacío.", + "config-mysql-old": "Precísase MySQL $1 o posterior. Tienes $2.", + "config-db-port": "Puertu de la base de datos:", + "config-db-schema": "Esquema pa MediaWiki:", + "config-db-schema-help": "Esti esquema de vezu va tar bien.\nCamúdalos solo si sabes que lo precises.", + "config-pg-test-error": "Nun puede coneutase cola base de datos $1: $2", + "config-sqlite-dir": "Direutoriu de datos SQLite:", "config-type-mysql": "MySQL (o compatible)", "config-type-mssql": "Microsoft SQL Server", "config-invalid-db-type": "Triba non válida de base de datos.", @@ -125,5 +132,5 @@ "config-help": "Ayuda", "config-nofile": "Nun pudo atopase'l ficheru \"$1\". ¿Desaniciose?", "mainpagetext": "Instalóse MediaWiki.", - "mainpagedocfooter": "Consulta [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Contents] pa saber cómo usar el software wiki.\n\n== Primeros pasos ==\n\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Configuration_settings Llista de les opciones de configuración]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:FAQ EMF de MediaWiki]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Llista de corréu de llanzamientos de MediaWiki]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Localisation#Translation_resources Llocaliza MediaWiki na to llingua]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Combating_spam Depriende como combatir la puxarra na to wiki]" + "mainpagedocfooter": "Consulta la [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Contents Guía del usuariu] pa saber cómo usar el software wiki.\n\n== Primeros pasos ==\n\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Configuration_settings Llista de les opciones de configuración]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:FAQ EMF de MediaWiki]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Llista de corréu de llanzamientos de MediaWiki]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Localisation#Translation_resources Llocaliza MediaWiki na to llingua]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Combating_spam Depriende como combatir la puxarra na to wiki]" } diff --git a/includes/installer/i18n/be-tarask.json b/includes/installer/i18n/be-tarask.json index c17de3f2eb..1335b9c528 100644 --- a/includes/installer/i18n/be-tarask.json +++ b/includes/installer/i18n/be-tarask.json @@ -306,6 +306,7 @@ "config-install-subscribe-fail": "Немагчыма падпісацца на «mediawiki-announce»: $1", "config-install-subscribe-notpossible": "cURL не ўсталяваны, allow_url_fopen недаступны.", "config-install-mainpage": "Стварэньне галоўнай старонкі са зьместам па змоўчваньні", + "config-install-mainpage-exists": "Галоўная старонка ўжо існуе, прапускаем", "config-install-extension-tables": "Стварэньне табліцаў для ўключаных пашырэньняў", "config-install-mainpage-failed": "Немагчыма ўставіць галоўную старонку: $1", "config-install-done": "Віншуем!\nВы ўсталявалі MediaWiki.\n\nПраграма ўсталяваньня стварыла файл LocalSettings.php.\nЁн утрымлівае ўсе Вашыя налады.\n\nВам неабходна загрузіць яго і захаваць у карэнную дырэкторыю Вашай вікі (у тую ж самую дырэкторыю, дзе знаходзіцца index.php). Загрузка павінна пачацца аўтаматычна.\n\nКалі загрузка не пачалася, ці Вы яе адмянілі, Вы можаце перазапусьціць яе націснуўшы на спасылку ніжэй:\n\n$3\n\nЗаўвага: калі Вы гэтага ня зробіце зараз, то створаны файл ня будзе даступны Вам потым, калі Вы выйдзеце з праграмы ўсталяваньня безь яго загрузкі.\n\nКалі Вы гэта зробіце, Вы можаце [$2 ўвайсьці ў Вашую вікі].", diff --git a/includes/installer/i18n/bg.json b/includes/installer/i18n/bg.json index 4a1ed65954..b950420c32 100644 --- a/includes/installer/i18n/bg.json +++ b/includes/installer/i18n/bg.json @@ -65,6 +65,7 @@ "config-apc": "[http://www.php.net/apc APC] е инсталиран", "config-apcu": "[http://www.php.net/apc APC] е инсталиран", "config-wincache": "[http://www.iis.net/download/WinCacheForPhp WinCache] е инсталиран", + "config-no-cache-apcu": "Внимание: [http://www.php.net/apcu APCu], [http://xcache.lighttpd.net/ XCache] и [http://www.iis.net/download/WinCacheForPhp WinCache] не могат да бъдат открити.\nКеширането на обекти не е активирано.", "config-mod-security": "Предупреждение: [http://modsecurity.org/ mod_security]/mod_security2 е включено на вашия уеб сървър. Много от обичайните му конфигурации пораждат проблеми с МедияУики и друг софтуер, който позволява публикуване на произволно съдържание.\nАко е възможно, моля изключете го. В противен случай се обърнете към [http://modsecurity.org/documentation/ документацията на mod_security] или се свържете с поддръжката на хостинга си, ако се сблъскате със случайни грешки.", "config-diff3-bad": "GNU diff3 не беше намерен.", "config-git": "Налична е системата за контрол на версиите Git: $1.", @@ -84,6 +85,7 @@ "config-db-host": "Хост на базата от данни:", "config-db-host-help": "Ако базата от данни е на друг сървър, в кутията се въвежда името на хоста или IP адреса.\n\nАко се използва споделен уеб хостинг, доставчикът на услугата би трябвало да е предоставил в документацията си коректния хост.\n\nАко инсталацията протича на Windows-сървър и се използва MySQL, използването на \"localhost\" може да е неприемливо. В такива случаи се използва \"127.0.0.1\" за локален IP адрес.\n\nПри използване на PostgreSQL, това поле се оставя празно, за свързване чрез Unix socket.", "config-db-host-oracle": "TNS на базата данни:", + "config-db-host-oracle-help": "Въведете валидно [http://download.oracle.com/docs/cd/B28359_01/network.111/b28317/tnsnames.htm Local Connect Name]; файлът tnsnames.ora трябва да бъде видим за инсталацията.
Ако използвате клиентска библиотека версия 10g или по-нова можете да използвате метода [http://download.oracle.com/docs/cd/E11882_01/network.112/e10836/naming.htm Easy Connect].", "config-db-wiki-settings": "Идентифициране на това уики", "config-db-name": "Име на базата от данни:", "config-db-name-help": "Избира се име, което да идентифицира уикито.\nТо не трябва да съдържа интервали.\n\nАко се използва споделен хостинг, доставчикът на услугата би трябвало да е предоставил или име на базата от данни, която да бъде използвана, или да позволява създаването на бази от данни чрез контролния панел.", @@ -158,12 +160,15 @@ "config-mysql-innodb": "InnoDB", "config-mysql-myisam": "MyISAM", "config-mysql-myisam-dep": "'''Предупреждение''': Избрана е MyISAM като система за складиране в MySQL, която не се препоръчва за използване с МедияУики, защото:\n* почти не поддържа паралелност заради заключване на таблиците\n* е по-податлива на повреди в сравнение с други системи\n* кодът на МедияУики не винаги поддържа MyISAM коректно\n\nАко инсталацията на MySQL поддържа InnoDB, силно е препоръчително да се използва тя.\nАко инсталацията на MySQL не поддържа InnoDB, вероятно е време за обновяване.", + "config-mysql-only-myisam-dep": "Внимание: MyISAM e единственият наличен на тази машина тип на таблиците за MySQL и не е препоръчителен за употреба при МедияУики защото:\n* има слаба поддръжка на конкурентност на заявките, поради закючването на таблиците\n* е много по-податлив на грешки в базите от данни от другите типове таблици\n* кодът на МедияУики не винаги работи с MyISAM както трябва\n\nВашият MySQL не поддържа InnoDB, така че може би е дошло време за актуализиране.", "config-mysql-engine-help": "'''InnoDB''' почти винаги е най-добрата възможност заради навременната си поддръжка.\n\n'''MyISAM''' може да е по-бърза при инсталации с един потребител или само за четене.\nБазите от данни MyISAM се повреждат по-често от InnoDB.", "config-mysql-charset": "Набор от символи в базата от данни:", "config-mysql-binary": "Бинарен", "config-mysql-utf8": "UTF-8", "config-mysql-charset-help": "В '''бинарен режим''' МедияУики съхранява текстовете в UTF-8 в бинарни полета в базата от данни.\nТова е по-ефективно от UTF-8 режима на MySQL и позволява използването на пълния набор от символи в Уникод.\n\nВ '''UTF-8 режим''' MySQL ще знае в кой набор от символи са данните от уикито и ще може да ги показва и променя по подходящ начин, но няма да позволява складиране на символи извън [https://en.wikipedia.org/wiki/Mapping_of_Unicode_character_planes Основния многоезичен набор].", "config-mssql-auth": "Тип на удостоверяването:", + "config-mssql-install-auth": "Изберете начин за удостоверяване, който ще бъде използван за връзка с базата от данни по време на инсталацията.\nАко изберете \"{{int:config-mssql-windowsauth}}\", ще се използват идентификационните данни на потребителя под който работи уеб сървъра.", + "config-mssql-web-auth": "Изберете начина за удостоверяване, който ще се използва от уеб сървъра за връзка със сървъра за бази от данни по време на нормалните операции на уикито.\nАко изберете \"{{int:config-mssql-windowsauth}}\", ще се използват идентификационните данни на потребителя под който работи уеб сървъра.", "config-mssql-sqlauth": "Удостоверяване чрез SQL Server", "config-mssql-windowsauth": "Удостоверяване чрез Windows", "config-site-name": "Име на уикито:", @@ -295,6 +300,7 @@ "config-install-subscribe-fail": "Невъзможно беше абонирането за mediawiki-announce: $1", "config-install-subscribe-notpossible": "не е инсталиран cURL и allow_url_fopen не е налична.", "config-install-mainpage": "Създаване на Началната страница със съдържание по подразбиране", + "config-install-mainpage-exists": "Главната страница вече съществува, преминаване напред", "config-install-extension-tables": "Създаване на таблици за включените разширения", "config-install-mainpage-failed": "Вмъкването на Началната страница беше невъзможно: $1", "config-install-done": "Поздравления!\nИнсталирането на МедияУики приключи успешно.\n\nИнсталаторът създаде файл LocalSettings.php.\nТой съдържа всичката необходима основна конфигурация на уикито.\n\nНеобходимо е той да бъде изтеглен и поставен в основната директория на уикито (директорията, в която е и index.php). Изтеглянето би трябвало да започне автоматично.\n\nАко изтеглянето не започне автоматично или е било прекратено, файлът може да бъде изтеглен чрез щракване на препратката по-долу:\n\n$3\n\nЗабележка: Ако това не бъде извършено сега, генерираният конфигурационен файл няма да е достъпен на по-късен етап ако не бъде изтеглен сега или инсталацията приключи без изтеглянето му.\n\nКогато файлът вече е в основната директория, [$2 уикито ще е достъпно на този адрес].", diff --git a/includes/installer/i18n/bn.json b/includes/installer/i18n/bn.json index f9a8da863e..34efde4bc5 100644 --- a/includes/installer/i18n/bn.json +++ b/includes/installer/i18n/bn.json @@ -7,7 +7,8 @@ "Tauhid16", "Aftabuzzaman", "Hasive", - "আজিজ" + "আজিজ", + "Elias Ahmmad" ] }, "config-desc": "মিডিয়াউইকির জন্য ইন্সটলার", @@ -137,6 +138,7 @@ "config-install-user-alreadyexists": "ব্যবহারকারী \"$1\" ইতিমধ্যে বিদ্যমান আছে", "config-install-tables": "টেবিল তৈরি", "config-install-keys": "গোপন কি তৈরি", + "config-install-mainpage-exists": "প্রধান পাতা ইতিমধ্যেই বিদ্যমান, এডিয়ে যাওয়া হচ্ছে", "config-help": "সাহায্য", "config-help-tooltip": "প্রসারিত করতে ক্লিক করুন", "mainpagetext": "মিডিয়াউইকি ইনস্টল করা হয়েছে।", diff --git a/includes/installer/i18n/br.json b/includes/installer/i18n/br.json index 1211929fe1..779ad6dfec 100644 --- a/includes/installer/i18n/br.json +++ b/includes/installer/i18n/br.json @@ -175,7 +175,7 @@ "config-admin-error-user": "Fazi diabarzh en ur grouiñ ur merer gant an anv \"$1\".", "config-admin-error-password": "Fazi diabarzh o lakaat ur ger-tremen evit ar merour « $1 » :
$2
", "config-admin-error-bademail": "Ebarzhet hoc'h eus ur chomlec'h postel direizh.", - "config-subscribe": "Koumanantit da [https://lists.wikimedia.org/mailman/listinfo/mediawiki-listenn kemennadoù evit ar stummoù nevez].", + "config-subscribe": "Koumanantit d'ar [https://lists.wikimedia.org/mailman/listinfo/mediawiki-roll kemennoù evit ar stummoù nevez].", "config-almost-done": "Kazi echu eo !\nGellout a rit tremen ar c'hefluniadur nevez ha staliañ ar wiki war-eeun.", "config-optional-continue": "Sevel muioc'h a goulennoù ouzhin.", "config-optional-skip": "Aet on skuizh, staliañ ar wiki hepken.", @@ -198,9 +198,9 @@ "config-email-user": "Gweredekaat ar posteloù a implijer da implijer", "config-email-user-help": "Aotren a ra an holl implijerien da gas posteloù an eil d'egile mard eo bet gweredekaet an arc'hwel ganto en ho penndibaboù.", "config-email-usertalk": "Gweredekaat kemennadur pajennoù kaozeal an implijerien", - "config-email-usertalk-help": "Talvezout a ra d'an implijerien da resev kemennadennoù ma vez kemmet o fajennoù kaozeal, ma vez gweredekaet en o fenndibaboù.", + "config-email-usertalk-help": "Talvezout a ra d'an implijerien da resev kemennoù ma vez kemmet o fajennoù kaozeal, gant ma vo gweredekaet en o fenndibaboù.", "config-email-watchlist": "Gweredekaat ar c'hemenn listenn evezhiañ", - "config-email-watchlist-help": "Talvezout a ra d'an implijerien da resev kemennadennoù diwar-benn ar pajennoù evezhiet ganto, ma vez gweredekaet en o fenndibaboù.", + "config-email-watchlist-help": "Talvezout a ra d'an implijerien da resev kemennoù diwar-benn ar pajennoù evezhiet ganto, gant ma vo gweredekaet en o fenndibaboù.", "config-email-auth": "Gweredekaat an dilesadur dre bostel", "config-email-sender": "Chomlec'h postel respont :", "config-email-sender-help": "Merkit ar chomlec'h postel da vezañ implijet da chomlec'h distreiñ ar posteloù a ya er-maez.\nDi e vo kaset ar posteloù distaolet.\nNiverus eo ar servijerioù postel a c'houlenn da nebeutañ un [http://fr.wikipedia.org/wiki/Nom_de_domaine anv domani] reizh.", @@ -248,7 +248,7 @@ "config-install-user-missing": "N'eus ket eus an implijer \"$1\"", "config-install-user-missing-create": "N'eus ket eus an implijer \"$1\".\nMa fell deoc'h krouiñ anezhañ, klikit war ar voest \"krouiñ ur gont\" amañ dindan.", "config-install-tables": "Krouiñ taolennoù", - "config-install-tables-exist": "Kemenn : An taolennoù MediaWiki zo anezho dija war a seblant.\nN'eo ket bet graet ar grouidigezh.", + "config-install-tables-exist": "Diwallit : An taolennoù MediaWiki zo anezho dija war a seblant.\nN'int ket bet adkrouet.", "config-install-tables-failed": "'''Fazi :''' c'hwitet eo krouidigezh an daolenn gant ar fazi-mañ : $1", "config-install-interwiki": "O leuniañ dre ziouer an daolenn etrewiki", "config-install-interwiki-list": "Ne c'haller ket kavout ar restr interwiki.list.", @@ -259,6 +259,7 @@ "config-install-subscribe-fail": "N'haller ket koumanantiñ da mediawiki-announce : $1", "config-install-subscribe-notpossible": "cURL n'eo ket staliet ha ne c'haller ket ober gant allow_url_fopen.", "config-install-mainpage": "O krouiñ ar bajenn bennañ gant un endalc'had dre ziouer", + "config-install-mainpage-exists": "Bez' ez eus eus ar bajenn bennañ c'hoazh, lezel a-gostez", "config-install-extension-tables": "O krouiñ taolennoù evit an astennoù gweredekaet", "config-install-mainpage-failed": "Ne c'haller ket ensoc'hañ ar bajenn bennañ: $1", "config-download-localsettings": "Pellgargañ LocalSettings.php", diff --git a/includes/installer/i18n/ca.json b/includes/installer/i18n/ca.json index 003583dce8..559e7dd9d9 100644 --- a/includes/installer/i18n/ca.json +++ b/includes/installer/i18n/ca.json @@ -20,7 +20,7 @@ "config-localsettings-upgrade": "S'ha detectat un fitxer LocalSettings.php. \nPer tal d'actualitzar la instal·lació, introduïu el valor de $wgUpgradeKey en el quadre a continuació. El trobareu a LocalSettings.php.", "config-localsettings-cli-upgrade": "S'ha detectat un fitxer LocalSettings.php.\nPer a actualitzar la instal·lació, executeu update.php.", "config-localsettings-key": "Clau d'actualització:", - "config-localsettings-badkey": "La clau que heu proporcionat no és correcta.", + "config-localsettings-badkey": "La clau d'actualització que heu proporcionat no és correcta.", "config-upgrade-key-missing": "S'ha detectat una instal·lació ja existent del MediaWiki.\nPer actualitzar-la, poseu la línia següent al final de LocalSettings.php:\n\n$1", "config-localsettings-incomplete": "El LocalSettings.php que hi ha sembla incomplet.\nLa variable $1 no està definida.\nCanvieu LocalSettings.php perquè la variable estigui definida i feu clic a «{{int:Config-continue}}».", "config-localsettings-connection-error": "S'ha trobat un error en connectar-se amb la base de dades fent servir els paràmetres especificats a LocalSettings.php. Corregiu aquests paràmetres i torneu-ho a provar.\n\n$1", @@ -52,7 +52,7 @@ "config-restart": "Sí, torna a començar", "config-welcome": "=== Comprovacions de l'entorn ===\nS'efectuaran comprovacions bàsiques per veure si l'entorn és adequat per a la instal·lació del MediaWiki.\nRecordeu d'incloure aquesta informació si heu de demanar ajuda sobre com completar la instal·lació.", "config-copyright": "=== Drets d'autor i condicions ===\n\n$1\n\nAquest programa és de programari lliure; podeu redistribuir-lo i/o modificar-lo sota les condicions de la Llicència Pública General GNU com es publicada per la Free Software Foundation; qualsevol versió 2 de la llicència, o (opcionalment) qualsevol versió posterior.\n\nAquest programa és distribueix amb l'esperança que serà útil, però sense cap garantia; sense ni tan sols la garantia implícita de \ncomerciabilitat o idoneïtat per a un propòsit particular.\nConsulteu la Llicència Pública General GNU, per a més detalls.\n\nHauríeu d'haver rebut una còpia de la Llicència Pública General GNU amb aquest programa; si no, escriviu a la Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA o [http://www.gnu.org/copyleft/gpl.html per llegir-lo en línia].", - "config-sidebar": "* [https://www.mediawiki.org la Pàgina d'inici]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Contents Guia de l'Usuari]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Contents Guia de l'Administrador]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:FAQ FAQ]\n----\n* Llegeix-me\n* Notes de la versió\n* Còpia\n* Actualització", + "config-sidebar": "* [https://www.mediawiki.org la Pàgina d'inici]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Contents Guia de l'usuari]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Contents Guia de l'administrador]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:FAQ PMF]\n----\n* Llegeix-me\n* Notes de la versió\n* Còpia\n* Actualització", "config-env-good": "S'ha comprovat l'entorn.\nPodeu instal·lar el MediaWiki.", "config-env-bad": "S'ha comprovat l'entorn.\nNo podeu instal·lar el MediaWiki.", "config-env-php": "El PHP $1 està instal·lat.", @@ -163,6 +163,8 @@ "config-admin-error-user": "S'ha produït un error intern en crear un administrador amb el nom «$1».", "config-admin-error-password": "S'ha produït un error intern en definir una contrasenya per a l'administrador «$1»:
$2
", "config-admin-error-bademail": "Heu introduït una adreça electrònica no vàlida.", + "config-subscribe": "Subscriu a la [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce llista de correu d'anunci de noves versions].", + "config-pingback": "Comparteix dades d'aquesta instal·lació amb els desenvolupadors de MediaWiki.", "config-almost-done": "Gairebé ja heu acabat!\nPodeu ometre el que queda de la configuració i procedir amb la instal·lació del wiki.", "config-optional-continue": "Fes-me més preguntes.", "config-optional-skip": "Ja estic avorrit. Simplement instal·leu el wiki.", @@ -242,12 +244,14 @@ "config-install-subscribe-fail": "No s'ha pogut subscriure a mediawiki-announce: $1", "config-install-subscribe-notpossible": "El cURL no està instal·lat i allow_url_fopen no està disponible.", "config-install-mainpage": "S'està creant la pàgina principal amb el contingut per defecte", + "config-install-mainpage-exists": "La pàgina principal ja existeix, per tant s'omet", "config-install-extension-tables": "S'estan creant taules de les extensions habilitades", "config-install-mainpage-failed": "No s'ha pogut inserir la pàgina principal: $1", + "config-install-done": "Enhorabona!\nHeu instal·lat MediaWiki.\n\nL'instal·lador a generat un fitxer LocalSettings.php.\nConté tota la configuració.\n\nCaldrà que el baixeu i el poseu al directori base on heu instal·lat al wiki (el mateix directori on es troba index.php). La baixada hauria d'haver començat automàticament.\n\nSi la baixada no comença, o si l'heu cancel·lat, podeu reiniciar-la fent clic a l'enllaç de sota:\n\n$3\n\nNota: Si no ho feu ara, no podreu accedir a aquest fitxer de configuració més endavant si no l'heu baixat abans.\n\nUna vegada tot això fet, podeu [$2 entrar al vostre wiki].", "config-download-localsettings": "Baixa LocalSettings.php", "config-help": "ajuda", "config-help-tooltip": "feu clic per ampliar", "config-nofile": "No s'ha pogut trobar el fitxer «$1». S'ha suprimit?", - "mainpagetext": "'''El MediaWiki s'ha instal·lat correctament.'''", + "mainpagetext": "MediaWiki s'ha instal·lat.", "mainpagedocfooter": "Consulteu la [https://meta.wikimedia.org/wiki/Help:Contents Guia d'Usuari] per a més informació sobre com utilitzar-lo.\n\n== Per a començar ==\n\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Configuration_settings Llista de característiques configurables]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:FAQ PMF del MediaWiki]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Llista de correu (''listserv'') per a anuncis del MediaWiki]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Localisation#Translation_resources Traduïu MediaWiki en la vostra llengua]" } diff --git a/includes/installer/i18n/ckb.json b/includes/installer/i18n/ckb.json index 583b80c0d8..3bfa8a6f54 100644 --- a/includes/installer/i18n/ckb.json +++ b/includes/installer/i18n/ckb.json @@ -3,7 +3,8 @@ "authors": [ "Asoxor", "Calak", - "Muhammed taha" + "Muhammed taha", + "Lost Whispers" ] }, "config-desc": "دامەزرێنەرەکە بۆ میدیاویکی", @@ -44,6 +45,8 @@ "config-admin-password": "تێپەڕوشە:", "config-admin-password-confirm": "دووبارە تێپەڕوشە:", "config-admin-email": "ناونیشانی ئیمەیل:", + "config-admin-email-help": "ناونیشانی ئیمەیڵەکەت لێرەدا دابنێ بۆئەوەی بتوانیت ئیمەیڵت لە بەکارھێنەرانی ترەوە پێ بگات، تێپەڕ وشە ڕێک بخەیتەوە و ئاگادار بکرێیتەوە لەو گۆڕانکاریانەی کە لەو پەڕانەدا دەکرێن کە چاودێرییان دەکەیت. دەتوانیت ئەم بۆشاییە بە بەتاڵی جێبھێڵیت.", + "config-admin-error-bademail": "تۆ ناونیشانی ئیمەیڵێکی ھەڵەت داخڵ کردووە.", "config-profile-wiki": "ویکیی کراوە", "config-profile-no-anon": "دروستکردنی ھەژمارە پێویستە", "config-profile-fishbowl": "تەنھا دەستکاریکەری ڕێگەپێدراوە", diff --git a/includes/installer/i18n/cs.json b/includes/installer/i18n/cs.json index 9f24ec6b6c..2d2f2072b7 100644 --- a/includes/installer/i18n/cs.json +++ b/includes/installer/i18n/cs.json @@ -308,6 +308,7 @@ "config-install-subscribe-fail": "Nelze se přihlásit k odběru mediawiki-announce: $1", "config-install-subscribe-notpossible": "Není nainstalován cURL a není dostupné allow_url_fopen.", "config-install-mainpage": "Vytváří se počáteční obsah hlavní strany", + "config-install-mainpage-exists": "Hlavní strana již existuje, přeskakuji.", "config-install-extension-tables": "Vytvářejí se tabulky pro zapnutá rozšíření", "config-install-mainpage-failed": "Nepodařilo se vložit hlavní stranu: $1", "config-install-done": "Gratulujeme!\nNainstalovali jste MediaWiki.\n\nInstalátor vytvořil soubor LocalSettings.php.\nTen obsahuje veÅ¡kerou vaÅ¡i konfiguraci.\n\nBudete si ho muset stáhnout a uložit do základního adresáře vaší instalace wiki (do stejného adresáře jako soubor index.php). Stažení souboru se mělo spustit automaticky.\n\nPokud se vám stažení nenabídlo nebo jste ho zruÅ¡ili, můžete ho spustit znovu kliknutím na následující odkaz:\n\n$3\n\nPoznámka: Pokud to neuděláte hned, tento vygenerovaný konfigurační soubor nebude později dostupný, pokud instalaci opustíte, aniž byste si ho stáhli.\n\nAž to dokončíte, můžete [$2 vstoupit do své wiki].", diff --git a/includes/installer/i18n/de.json b/includes/installer/i18n/de.json index c7690e2a78..3babc3f851 100644 --- a/includes/installer/i18n/de.json +++ b/includes/installer/i18n/de.json @@ -315,6 +315,7 @@ "config-install-subscribe-fail": "Abonnieren von „mediawiki-announce“ ist gescheitert: $1", "config-install-subscribe-notpossible": "cURL ist nicht installiert und allow_url_fopen ist nicht verfügbar.", "config-install-mainpage": "Erstellung der Hauptseite mit Standardinhalten", + "config-install-mainpage-exists": "Die Hauptseite ist bereits vorhanden. Überspringe.", "config-install-extension-tables": "Erstellung der Tabellen für die aktivierten Erweiterungen", "config-install-mainpage-failed": "Die Hauptseite konnte nicht erstellt werden: $1", "config-install-done": "'''Herzlichen Glückwunsch!'''\nMediaWiki wurde erfolgreich installiert.\n\nDas Installationsprogramm hat die Datei LocalSettings.php erzeugt.\nSie enthält alle vorgenommenen Konfigurationseinstellungen.\n\nDiese Datei muss nun heruntergeladen und anschließend in das Stammverzeichnis der MediaWiki-Installation hochgeladen werden. Dies ist dasselbe Verzeichnis, in dem sich auch die Datei index.php befindet. Das Herunterladen sollte inzwischen automatisch gestartet worden sein.\n\nSofern dies nicht der Fall war, oder das Herunterladen unterbrochen wurde, kann der Vorgang durch einen Klick auf den folgenden Link erneut gestartet werden:\n\n$3\n\n'''Hinweis:''' Die Konfigurationsdatei sollte jetzt unbedingt heruntergeladen werden. Sie wird nach Beenden des Installationsprogramms, nicht mehr zur Verfügung stehen.\n\nSobald alles erledigt wurde, kann auf das '''[$2 Wiki zugegriffen werden]'''. Wir wünschen viel Spaß und Erfolg mit dem Wiki.", diff --git a/includes/installer/i18n/el.json b/includes/installer/i18n/el.json index a11c301f5e..679c0a8cba 100644 --- a/includes/installer/i18n/el.json +++ b/includes/installer/i18n/el.json @@ -223,6 +223,7 @@ "config-install-subscribe-fail": "Ανίκανος να εγγραφείτε στο mediawiki-ανακοινώση: $1", "config-install-subscribe-notpossible": "Το cURL δεν είναι εγκατεστημένο και το allow_url_fopen δεν είναι διαθέσιμο.", "config-install-mainpage": "Γίνεται δημιουργία της αρχικής σελίδας με προεπιλεγμένο περιεχόμενο", + "config-install-mainpage-exists": "Κύρια σελίδα ήδη υπάρχει, παρακάμπτεται", "config-install-extension-tables": "Γίνεται δημιουργία πινάκων για τις εγκατεστημένες επεκτάσεις", "config-install-mainpage-failed": "Δεν ήταν δυνατή η εισαγωγή της αρχικής σελίδας: $1", "config-install-done": "Συγχαρητήρια!\nΈχετε εγκαταστήσει με επιτυχία το MediaWiki.\n\nΤο πρόγραμμα εγκατάστασης έχει δημιουργήσει το αρχείο LocalSettings.php.\nΠεριέχει όλες τις ρυθμίσεις παραμέτρων σας.\n\nΘα πρέπει να το κατεβάσετε και να το βάλετε στη βάση της εγκατάστασης του wiki σας (στον ίδιο κατάλογο όπως το index.php). Η λήψη θα αρχίσει αυτόματα.\n\nΑν η λήψη δεν προσφέφθηκε, ή αν την ακυρώσατε, μπορείτε να επανεκκινήσετε τη λήψη κάνοντας κλικ στο παρακάτω link:\n\n$3\n\nΣημείωση: Εάν δεν το κάνετε αυτό τώρα, αυτό το αρχείο ρύθμισης παραμέτρων δεν θα είναι διαθέσιμο για σας αργότερα, αν βγείτε από την εγκατάσταση, χωρίς να το κατεβάσετε!\n\nΌταν γίνει αυτό, μπορείτε να [$2 μπείτε στο wiki σας].", diff --git a/includes/installer/i18n/en.json b/includes/installer/i18n/en.json index 95d2ba31c4..db92652d93 100644 --- a/includes/installer/i18n/en.json +++ b/includes/installer/i18n/en.json @@ -298,6 +298,7 @@ "config-install-subscribe-fail": "Unable to subscribe to mediawiki-announce: $1", "config-install-subscribe-notpossible": "cURL is not installed and allow_url_fopen is not available.", "config-install-mainpage": "Creating main page with default content", + "config-install-mainpage-exists": "Main page already exists, skipping", "config-install-extension-tables": "Creating tables for enabled extensions", "config-install-mainpage-failed": "Could not insert main page: $1", "config-install-done": "Congratulations!\nYou have installed MediaWiki.\n\nThe installer has generated a LocalSettings.php file.\nIt contains all your configuration.\n\nYou will need to download it and put it in the base of your wiki installation (the same directory as index.php). The download should have started automatically.\n\nIf the download was not offered, or if you cancelled it, you can restart the download by clicking the link below:\n\n$3\n\nNote: If you do not do this now, this generated configuration file will not be available to you later if you exit the installation without downloading it.\n\nWhen that has been done, you can [$2 enter your wiki].", diff --git a/includes/installer/i18n/es.json b/includes/installer/i18n/es.json index c40183273f..8c4914c056 100644 --- a/includes/installer/i18n/es.json +++ b/includes/installer/i18n/es.json @@ -332,6 +332,7 @@ "config-install-subscribe-fail": "No se ha podido suscribir a mediawiki-announce: $1", "config-install-subscribe-notpossible": "cURL no está instalado y allow_url_fopen no está disponible.", "config-install-mainpage": "Creando página principal con contenido predeterminado", + "config-install-mainpage-exists": "La página principal ya existe, se omite", "config-install-extension-tables": "Creando las tablas para las extensiones habilitadas", "config-install-mainpage-failed": "No se pudo insertar la página principal: $1", "config-install-done": "¡Felicidades!\nHas instalado MediaWiki.\n\nEl instalador ha generado un archivo LocalSettings.php.\nEste contiene toda su configuración.\n\nDeberás descargarlo y ponerlo en la base de la instalación de wiki (el mismo directorio que index.php). La descarga debería haber comenzado automáticamente.\n\nSi no comenzó la descarga, o si se ha cancelado, puedes reiniciar la descarga haciendo clic en el siguiente enlace:\n\n$3\n\nNota: si no haces esto ahora, este archivo de configuración generado no estará disponible más tarde si sales de la instalación sin descargarlo.\n\nCuando lo hayas hecho, podrás [$2 entrar en tu wiki].", diff --git a/includes/installer/i18n/fa.json b/includes/installer/i18n/fa.json index 527554808a..411b2d0f72 100644 --- a/includes/installer/i18n/fa.json +++ b/includes/installer/i18n/fa.json @@ -311,6 +311,7 @@ "config-install-subscribe-fail": "قادر تصدیق اعلام مدیاویکی نیست:$1", "config-install-subscribe-notpossible": "سی‌یوآر‌ال نصب نشده‌است و allow_url_fopen در دسترس نیست.", "config-install-mainpage": "ایجاد صفحهٔ اصلی با محتوای پیش‌فرض", + "config-install-mainpage-exists": "صفحهٔ اصلی موجود است، رها شد", "config-install-extension-tables": "ایجاد جداول برای افزونه‌های فعال", "config-install-mainpage-failed": "قادر به درج صفحهٔ اصلی نمی‌باشد:$1", "config-install-done": "'''تبریک!'''\nبا موفقیت مدیاویکی را نصب کردید.\nبرنامه نصب‌کننده پرونده LocalSettings.php را درست کرد.\nکه شامل تمام تنظیمات می‌باشد.\n\nشما نیاز به دریافت آن دارید و آن را در پایهٔ نصب ویکی قرار دهید (همان پوشهٔ index.php). دریافت باید به صورت خودکار شروع شده‌باشد.\n\nاگر دریافت شروع نشد یا اگر آن را لغو کردید با کلیک روی پیوند زیر می‌توانید آن را دریافت کنید:\n\n$3\n\n'''توجه داشته باشید:''' اگر این را الآن انجام ندهید، این پرونده تولیدشده در صورتی که نصب را بدون دریافت آن تمام کردید بعداً در اختیار شما قرار نخواهد گرفت.\n\nوقتی انجام شد شما می‌توانید '''[$2 وارد ویکی شوید]'''.", @@ -321,5 +322,5 @@ "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]", "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 یادگیری روش‌های مقابله با هرزنگاری در ویکی]" + "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/fi.json b/includes/installer/i18n/fi.json index 5939291797..6c99a4234e 100644 --- a/includes/installer/i18n/fi.json +++ b/includes/installer/i18n/fi.json @@ -20,7 +20,8 @@ "Jaakkoh", "Mikahama", "Olimar", - "01miki10" + "01miki10", + "Pyscowicz" ] }, "config-desc": "MediaWiki-asennin", @@ -126,7 +127,7 @@ "config-type-mssql": "Microsoft SQL Server", "config-support-info": "MediaWiki tukee seuraavia tietokantajärjestelmiä:\n\n$1\n\nJos et näe tietokantajärjestelmää, jota yrität käyttää, listattuna alhaalla, seuraa yläpuolella olevia ohjeita tuen aktivoimiseksi.", "config-dbsupport-mysql": "* [{{int:version-db-mysql-url}} MySQL] on MediaWikin ensisijainen kohde ja se on myös parhaiten tuettu. MediaWiki voi myös käyttää [{{int:version-db-mariadb-url}} MariaDB]- sekä [{{int:version-db-percona-url}} Percona Server]-järjestelmiä, jotka ovat MySQL-yhteensopivia. ([http://www.php.net/manual/en/mysqli.installation.php Miten käännetään PHP MySQL-tuella])", - "config-dbsupport-postgres": "* [{{int:version-db-postgres-url}} PostgreSQL] on suosittu avoimen lähdekoodin tietokantajärjestelmä vaihtoehtona MySQL:lle. Tuessa saattaa olla pieniä puutteita, eikä sitä suositella käytettäväksi tuotantoympäristössä. ([http://www.php.net/manual/en/pgsql.installation.php Kuinka käännetään PHP PostgreSQL-tuella])", + "config-dbsupport-postgres": "* [{{int:version-db-postgres-url}} PostgreSQL] on suosittu avoimen lähdekoodin tietokantajärjestelmä vaihtoehtona MySQL:lle. ([http://www.php.net/manual/en/pgsql.installation.php Kuinka käännetään PHP PostgreSQL-tuella])", "config-dbsupport-sqlite": "* [{{int:version-db-sqlite-url}} SQLite] on kevyt tietokantajärjestelmä, jota tuetaan hyvin. ([http://www.php.net/manual/en/pdo.installation.php Miten käännetään PHP SQLite-tuella], käyttää PDO:ta)", "config-dbsupport-oracle": "* [{{int:version-db-oracle-url}} Oracle] on kaupallinen yritystietokanta. ([http://www.php.net/manual/en/oci8.installation.php Kuinka käännetään PHP OCI8-tuella])", "config-dbsupport-mssql": "* [{{int:version-db-mssql-url}} Microsoft SQL Server] on kaupallinen yritystietokanta Windowsille. ([http://www.php.net/manual/en/sqlsrv.installation.php Miten käännetään PHP SQLSRV-tuella])", @@ -150,6 +151,7 @@ "config-mssql-old": "Vaaditaan Microsoft SQL Server $1 tai uudempi. Sinulla on käytössä $2.", "config-sqlite-name-help": "Valitse nimi, joka yksilöi tämän wikin.\nÄlä käytä välilyöntejä tai viivoja.\nNimeä käytetään SQLite-tietokannan tiedostonimessä.", "config-sqlite-dir-unwritable": "Hakemistoon ”$1” kirjoittaminen epäonnistui.\nMuuta hakemiston käyttöoikeuksia siten, että palvelinohjelmisto voi kirjoittaa siihen ja yritä uudelleen.", + "config-sqlite-connection-error": "$1.\n\nTarkista tietohakemiston ja tietokannan nimi alla ja yritä uudelleen.", "config-sqlite-readonly": "Tiedostoon $1 ei voi kirjoittaa.", "config-sqlite-cant-create-db": "Tietokantatiedostoa $1 ei voitu luoda.", "config-sqlite-fts3-downgrade": "PHP:stä puuttuu FTS3-tuki. Poistetaan ominaisuus käytöstä tietokantatauluista.", @@ -172,6 +174,7 @@ "config-mssql-auth": "Varmennuksen tyyppi:", "config-mssql-install-auth": "Valitse varmennuksen tyyppi, jota käytetään yhdistäessä tietokantaan asennuksen aikana.\nJos valitset \"{{int:config-mssql-windowsauth}}\", käytetään verkkopalvelimen käyttäjän kirjautumistietoja.", "config-mssql-web-auth": "Valitse varmennuksen tyyppi, jota verkkopalvelin käyttää yhdistäessään tietokantapalvelimeen wikin tavallisen toiminnan aikana.\nJos valitset \"{{int:config-mssql-windowsauth}}\", käytetään verkkopalvelimen käyttäjän kirjautumistietoja.", + "config-mssql-sqlauth": "SQL Server varmennus", "config-mssql-windowsauth": "Windows-varmennus", "config-site-name": "Wikin nimi", "config-site-name-help": "Tämä näkyy selaimen otsikkona ja muissa kohdissa.", @@ -292,6 +295,7 @@ "config-install-subscribe-fail": "Liittyminen mediawiki-announce listalle epäonnistui: $1", "config-install-subscribe-notpossible": "cURL-ohjelmaa ei ole asennettu eikä allow_url_fopen ole saatavilla.", "config-install-mainpage": "Luodaan etusivu oletussisällöllä", + "config-install-mainpage-exists": "Etusivu on jo olemassa, ohitetaan", "config-install-extension-tables": "Luodaan tauluja käyttöönotetuille laajuennuksille", "config-install-mainpage-failed": "Etusivun lisääminen ei onnistunut: $1", "config-install-done": "Onnittelut!\nOlet asentanut MediaWikin.\n\nAsennusohjelma on luonut LocalSettings.php -tiedoston.\nSiinä on kaikki MediaWikin asetukset.\n\nLataa tiedosto ja laita se MediaWikin asennushakemistoon (sama kuin missä on index.php). Lataamisen olisi pitänyt alkaa automaattisesti.\n\nMikäli latausta ei tarjottu tai keskeytit latauksen, käynnistä se uudestaan tästä linkistä:\n\n$3\n\nHuom: Mikäli et nyt lataa tiedostoa, luotu tiedosto ei ole saatavissa myöhemmin, jos poistut asennuksesta lataamatta sitä.\n\nKun olet laittanut tiedoston oikeaan paikkaan, voit [$2 mennä wikiisi].", @@ -302,5 +306,5 @@ "config-nofile": "Tiedostoa \"$1\" ei löytynyt. Onko se poistettu?", "config-extension-link": "Tiesitkö että wiki tukee [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Extensions laajennuksia]?\n\nLaajennuksia voi hakea myös [https://www.mediawiki.org/wiki/Special:MyLanguage/Category:Extensions_by_category luokittain].", "mainpagetext": "MediaWiki on onnistuneesti asennettu.", - "mainpagedocfooter": "Lisätietoja wiki-ohjelmiston käytöstä on [https://meta.wikimedia.org/wiki/Help:Contents käyttöoppaassa].\n\n=== Aloittaminen ===\n\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Configuration_settings Asetusten teko-ohjeita]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:FAQ MediaWikin FAQ]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Sähköpostilista, jolla tiedotetaan MediaWikin uusista versioista]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Localisation#Translation_resources Käännä MediaWikiä kielellesi]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Combating_spam Katso, kuinka torjua spämmiä wikissäsi]\n\n=== Asetukset ===\n\nTarkista, että alla olevat taivutusmuodot ovat oikein. Jos eivät, tee tarvittavat muutokset tiedostoon LocalSettings.php seuraavasti:\n $wgGrammarForms['fi']['genitive']['{{SITENAME}}'] = '...';\n $wgGrammarForms['fi']['partitive']['{{SITENAME}}'] = '...';\n $wgGrammarForms['fi']['elative']['{{SITENAME}}'] = '...';\n $wgGrammarForms['fi']['inessive']['{{SITENAME}}'] = '...';\n $wgGrammarForms['fi']['illative']['{{SITENAME}}'] = '...';\nTaivutusmuodot: {{GRAMMAR:genitive|{{SITENAME}}}} (yön) – {{GRAMMAR:partitive|{{SITENAME}}}} (yötä) – {{GRAMMAR:elative|{{SITENAME}}}} (yöstä) – {{GRAMMAR:inessive|{{SITENAME}}}} (yössä) – {{GRAMMAR:illative|{{SITENAME}}}} (yöhön)." + "mainpagedocfooter": "Lisätietoja wiki-ohjelmiston käytöstä on [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Contents käyttöoppaassa].\n\n=== Aloittaminen ===\n\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Configuration_settings Asetusten teko-ohjeita]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:FAQ MediaWikin FAQ]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Sähköpostilista, jolla tiedotetaan MediaWikin uusista versioista]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Localisation#Translation_resources Käännä MediaWikiä kielellesi]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Combating_spam Katso, kuinka torjua spämmiä wikissäsi]\n\n=== Asetukset ===\n\nTarkista, että alla olevat taivutusmuodot ovat oikein. Jos eivät, tee tarvittavat muutokset tiedostoon LocalSettings.php seuraavasti:\n $wgGrammarForms['fi']['genitive']['{{SITENAME}}'] = '...';\n $wgGrammarForms['fi']['partitive']['{{SITENAME}}'] = '...';\n $wgGrammarForms['fi']['elative']['{{SITENAME}}'] = '...';\n $wgGrammarForms['fi']['inessive']['{{SITENAME}}'] = '...';\n $wgGrammarForms['fi']['illative']['{{SITENAME}}'] = '...';\nTaivutusmuodot: {{GRAMMAR:genitive|{{SITENAME}}}} (yön) – {{GRAMMAR:partitive|{{SITENAME}}}} (yötä) – {{GRAMMAR:elative|{{SITENAME}}}} (yöstä) – {{GRAMMAR:inessive|{{SITENAME}}}} (yössä) – {{GRAMMAR:illative|{{SITENAME}}}} (yöhön)." } diff --git a/includes/installer/i18n/fr.json b/includes/installer/i18n/fr.json index 882ab92091..953d427feb 100644 --- a/includes/installer/i18n/fr.json +++ b/includes/installer/i18n/fr.json @@ -327,6 +327,7 @@ "config-install-subscribe-fail": "Impossible de s'abonner à mediawiki-announce : $1", "config-install-subscribe-notpossible": "cURL n’est pas installé et allow_url_fopen n’est pas disponible.", "config-install-mainpage": "Création de la page principale avec un contenu par défaut", + "config-install-mainpage-exists": "La page principale existe déjà, ignoré", "config-install-extension-tables": "Création de tables pour les extensions activées", "config-install-mainpage-failed": "Impossible d’insérer la page principale : $1", "config-install-done": "Félicitations!\nVous avez installé MediaWiki.\n\nLe programme d'installation a généré un fichier LocalSettings.php. Il contient tous les paramètres de votre configuration.\n\nVous devrez le télécharger et le mettre à la racine de votre installation wiki (dans le même répertoire que index.php). Le téléchargement devrait démarrer automatiquement.\n\nSi le téléchargement n'a pas été proposé, ou que vous l'avez annulé, vous pouvez redémarrer le téléchargement en cliquant ce lien :\n\n$3\n\nNote : Si vous ne le faites pas maintenant, ce fichier de configuration généré ne sera pas disponible plus tard si vous quittez l'installation sans le télécharger.\n\nLorsque c'est fait, vous pouvez [$2 accéder à votre wiki] .", diff --git a/includes/installer/i18n/gl.json b/includes/installer/i18n/gl.json index ab1fd7d059..d4ac7e3a0b 100644 --- a/includes/installer/i18n/gl.json +++ b/includes/installer/i18n/gl.json @@ -306,6 +306,7 @@ "config-install-subscribe-fail": "Non se puido subscribir á lista mediawiki-announce: $1", "config-install-subscribe-notpossible": "cURL non está instalado e allow_url_fopen non está dispoñible.", "config-install-mainpage": "Creando a páxina principal co contido por defecto", + "config-install-mainpage-exists": "A páxina principal xa existe, saltando", "config-install-extension-tables": "Creando as táboas para as extensións activadas", "config-install-mainpage-failed": "Non se puido inserir a páxina principal: $1", "config-install-done": "Parabéns!\nInstalou MediaWiki.\n\nO programa de instalación xerou un ficheiro LocalSettings.php.\nEste ficheiro contén toda a súa configuración.\n\nTerá que descargalo e poñelo na base da instalación do seu wiki (no mesmo directorio ca index.php). A descarga debería comezar automaticamente.\n\nSe non comezou a descarga ou se a cancelou, pode facer que comece de novo premendo na ligazón que aparece a continuación:\n\n$3\n\nNota: Se non fai iso agora, este ficheiro de configuración xerado non estará dispoñible máis adiante se sae da instalación sen descargalo.\n\nCando faga todo isto, xa poderá [$2 entrar no seu wiki].", diff --git a/includes/installer/i18n/he.json b/includes/installer/i18n/he.json index e98988c061..161c5db59e 100644 --- a/includes/installer/i18n/he.json +++ b/includes/installer/i18n/he.json @@ -9,7 +9,8 @@ "Yona b", "Rotemliss", "Macofe", - "Guycn2" + "Guycn2", + "שמזן" ] }, "config-desc": "תכנית ההתקנה של מדיה־ויקי", @@ -119,7 +120,7 @@ "config-type-mssql": "Microsoft SQL Server", "config-support-info": "מדיה־ויקי תומכת במערכות מסדי הנתונים הבאות:\n\n$1\n\nאם אינך רואה את מסד הנתונים שלך ברשימה, יש לעקוב אחר ההוראות המקושרות לעיל כדי להפעיל את התמיכה.", "config-dbsupport-mysql": "* [{{int:version-db-mysql-url}} MySQL] הוא היעד העיקרי עבור מדיה־ויקי ולו התמיכה הטובה ביותר. מדיה־ויקי עובדת גם עם [{{int:version-db-mariadb-url}} MariaDB] ועם [{{int:version-db-percona-url}} Percona Server], שתואמים ל־MySQL. (ר׳ [http://www.php.net/manual/en/mysql.installation.php how to compile PHP with MySQL support])", - "config-dbsupport-postgres": "* [{{int:version-db-postgres-url}} PostgreSQL] הוא מסד נתונים נפוץ בקוד פתוח והוא נפוץ בתור חלופה ל־MySQL. ייתכן שיש בתצורה הזאת באגים מסוימים והיא לא מומלצת לסביבות מבצעיות. (ר׳ [http://www.php.net/manual/en/pgsql.installation.php how to compile PHP with PostgreSQL support]).", + "config-dbsupport-postgres": "* [{{int:version-db-postgres-url}} PostgreSQL] הוא מסד נתונים נפוץ בקוד פתוח והוא נפוץ בתור חלופה ל־MySQL. (ר׳ [http://www.php.net/manual/en/pgsql.installation.php how to compile PHP with PostgreSQL support]).", "config-dbsupport-sqlite": "* [{{int:version-db-sqlite-url}} SQLite] הוא מסד נתונים קליל עם תמיכה טובה מאוד. (ר׳ [http://www.php.net/manual/en/pdo.installation.php How to compile PHP with SQLite support], משתמש ב־PDO)", "config-dbsupport-oracle": "* [{{int:version-db-oracle-url}} Oracle] הוא מסד נתונים עסקי מסחרי. (ר׳ [http://www.php.net/manual/en/oci8.installation.php How to compile PHP with OCI8 support])", "config-dbsupport-mssql": "* [{{int:version-db-mssql-url}} Microsoft SQL Server] הוא מסד נתונים עסקי מסחרי לחלונות. ([http://www.php.net/manual/en/sqlsrv.installation.php How to compile PHP with SQLSRV support])", @@ -254,7 +255,7 @@ "config-cache-options": "הגדרות למטמון עצמים (object caching):", "config-cache-help": "מטמון עצמים משמש לשיפור המהירות של מדיה־ויקי על־ידי שמירה של נתונים שהשימוש בהם נפוץ במטמון.\nלאתרים בינוניים וגדולים כדאי מאוד להפעיל את זה, וגם אתרים קטנים ייהנו מזה.", "config-cache-none": "ללא מטמון (שום יכולת אינה מוּסרת, אבל הביצועים באתרים גדולים ייפגעו)", - "config-cache-accel": "מטמון עצמים (object caching) של PHP‏ (APC‏, XCache או WinCache)", + "config-cache-accel": "מטמון עצמים (object caching) של PHP‏ (APC,‏ APCu,‏ XCache או WinCache)", "config-cache-memcached": "להשתמש ב־Memcached (דורש התקנות והגדרות נוספות)", "config-memcached-servers": "שרתי Memcached:", "config-memcached-help": "רשימת כתובות IP ש־Memcached ישתמש בהן.\nיש לרשום כתובת אחת בכל שורה ולציין את הפִּתְחָה (port), למשל:\n 127.0.0.1:11211\n 192.168.1.25:1234", @@ -305,6 +306,7 @@ "config-install-subscribe-fail": "הרישום ל־mediawiki-announce לא הצליח: $1", "config-install-subscribe-notpossible": "cURL אינה מותקנת ו־allow_url_fopen אינה זמינה.", "config-install-mainpage": "יצירת דף ראשי עם תוכן התחלתי", + "config-install-mainpage-exists": "העמוד הראשי כבר קיים, לדלג", "config-install-extension-tables": "יצירת טבלאות להרחבות מופעלות", "config-install-mainpage-failed": "לא הצליחה הכנסת דף ראשי: $1.", "config-install-done": "מזל טוב!\nהתקנת את תוכנת מדיה־ויקי.\n\nתוכנת ההתקנה יצרה את הקובץ LocalSettings.php.\nהוא מכיל את כל ההגדרות שלך.\n\nיש להוריד אותו ולהכניס אותו לתיקיית הבסיס שבה הותקן הוויקי שלך (אותה התיקייה שבה נמצא הקובץ index.php). ההורדה אמורה להתחיל באופן אוטומטי.\n\nאם ההורדה לא התחילה, או אם ביטלת אותה, אפשר להתחיל אותה מחדש באמצעות לחיצה על הקישור הבא:\n\n$3\n\nלתשומת לבך: אם ההורדה לא תבוצע כעת, קובץ ההגדרות לא יהיה זמין מאוחר יותר אם תוכנת ההתקנה תיסגר לפני שהקובץ יורד.\n\nלאחר שביצעת את הפעולות שלהלן, באפשרותך [$2 להיכנס לאתר הוויקי שלך].", @@ -315,5 +317,5 @@ "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 הרחבות לפי קטגוריה].", "mainpagetext": "תוכנת מדיה־ויקי הותקנה בהצלחה.", - "mainpagedocfooter": "היעזרו ב[https://meta.wikimedia.org/wiki/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 איך להיאבק נגד ספאם באתר הוויקי שלך]" + "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 e05b700f17..98af267443 100644 --- a/includes/installer/i18n/hi.json +++ b/includes/installer/i18n/hi.json @@ -5,7 +5,8 @@ "Vivek Rai", "Phoenix303", "संजीव कुमार", - "Sahilrathod" + "Sahilrathod", + "Shyamal" ] }, "config-desc": "साँचा लिए इंस्टॉलर", @@ -16,7 +17,9 @@ "config-localsettings-key": "नवीनीकरण कुंजी", "config-localsettings-badkey": "आपकी दी गई कुंजी ग़लत है।", "config-your-language": "आपकी भाषा:", + "config-your-language-help": "स्थापन के लिए भाषा चुनें", "config-wiki-language": "विकी भाषा:", + "config-wiki-language-help": "भाषा चुनें जिस में अधिकतर लेख लिखा जाएगा", "config-back": "← वापस", "config-continue": "आगे बढ़ें →", "config-page-language": "भाषा", diff --git a/includes/installer/i18n/hu.json b/includes/installer/i18n/hu.json index ca7336a4ba..1c5c2ee5a5 100644 --- a/includes/installer/i18n/hu.json +++ b/includes/installer/i18n/hu.json @@ -68,6 +68,7 @@ "config-memory-bad": "'''Figyelmeztetés:''' A PHP memory_limit beállításának értéke $1.\nEz az érték valószínűleg túl kevés, a telepítés sikertelen lehet.", "config-xcache": "Az [http://xcache.lighttpd.net/ XCache] telepítve van", "config-apc": "Az [http://www.php.net/apc APC] telepítve van", + "config-apcu": "Az [http://www.php.net/apcu APCu] telepítve van", "config-wincache": "A [http://www.iis.net/download/WinCacheForPhp WinCache] telepítve van", "config-diff3-bad": "GNU diff3 nem található.", "config-git": "Megtaláltam a Git verziókezelő szoftvert: $1.", diff --git a/includes/installer/i18n/ia.json b/includes/installer/i18n/ia.json index 1d522739f1..13e7a6b691 100644 --- a/includes/installer/i18n/ia.json +++ b/includes/installer/i18n/ia.json @@ -302,6 +302,7 @@ "config-install-subscribe-fail": "Impossibile subscriber a mediawiki-announce: $1", "config-install-subscribe-notpossible": "cURL non es installate e allow_url_fopen non es disponibile.", "config-install-mainpage": "Crea pagina principal con contento predefinite", + "config-install-mainpage-exists": "Le pagina principal jam existe, es omittite", "config-install-extension-tables": "Creation de tabellas pro le extensiones activate", "config-install-mainpage-failed": "Non poteva inserer le pagina principal: $1", "config-install-done": "Felicitationes!\nTu ha installate MediaWiki.\n\nLe installator ha generate un file LocalSettings.php.\nIste contine tote le configuration.\n\nEs necessari discargar lo e poner lo in le base del installation wiki (le mesme directorio que index.php).\nLe discargamento debe haber comenciate automaticamente.\n\nSi le discargamento non ha comenciate, o si illo esseva cancellate, recomencia le discargamento con un clic sur le ligamine sequente:\n\n$3\n\nNota: Si tu non discarga iste file de configuration ora, illo non essera disponibile plus tarde.\n\nPost facer isto, tu pote [$2 entrar in tu wiki].", diff --git a/includes/installer/i18n/it.json b/includes/installer/i18n/it.json index b3b7850805..5453e4533b 100644 --- a/includes/installer/i18n/it.json +++ b/includes/installer/i18n/it.json @@ -316,6 +316,7 @@ "config-install-subscribe-fail": "Impossibile sottoscrivere mediawiki-announce: $1", "config-install-subscribe-notpossible": "cURL non è installato e allow_url_fopen non è disponibile.", "config-install-mainpage": "Creazione della pagina principale con contenuto predefinito", + "config-install-mainpage-exists": "La pagina principale già esiste, saltata", "config-install-extension-tables": "Creazione delle tabelle per le estensioni attivate", "config-install-mainpage-failed": "Impossibile inserire la pagina principale: $1", "config-install-done": "Complimenti!\nHai installato MediaWiki.\n\nIl programma di installazione ha generato un file LocalSettings.php che contiene tutte le impostazioni.\n\nDevi scaricarlo ed inserirlo nella directory base del tuo wiki (la stessa dove è presente index.php). Il download dovrebbe partire automaticamente.\n\nSe il download non si avvia, o se è stato annullato, puoi riavviarlo cliccando sul collegamento di seguito:\n\n$3\n\nNota: se esci ora dall'installazione senza scaricare il file di configurazione che è stato generato, questo poi non sarà più disponibile in seguito.\n\nQuando hai fatto, puoi [$2 entrare nel tuo wiki].", diff --git a/includes/installer/i18n/ko.json b/includes/installer/i18n/ko.json index 18acff0e8d..f292ab353c 100644 --- a/includes/installer/i18n/ko.json +++ b/includes/installer/i18n/ko.json @@ -11,7 +11,8 @@ "Hwangjy9", "Macofe", "Mooozi", - "Ykhwong" + "Ykhwong", + "Jerrykim306" ] }, "config-desc": "미디어위키를 위한 설치 관리자", @@ -308,6 +309,7 @@ "config-install-subscribe-fail": "미디어위키 알림을 구독할 수 없습니다: $1", "config-install-subscribe-notpossible": "cURL이 설치되어 있지 않고 allow_url_fopen을 사용할 수 없습니다.", "config-install-mainpage": "기본 내용으로 대문을 만드는 중", + "config-install-mainpage-exists": "대문은 이미 존재함, 건너뜀", "config-install-extension-tables": "활성화된 확장 기능을 위한 테이블을 만드는 중", "config-install-mainpage-failed": "대문을 삽입할 수 없습니다: $1", "config-install-done": "축하합니다!\n미디어위키를 설치했습니다.\n\n설치 관리자가 LocalSettings.php 파일을 만들었습니다.\n여기에 모든 설정이 포함되어 있습니다.\n\n파일을 다운로드하여 위키 설치의 거점에 넣어야 합니다. (index.php와 같은 디렉터리) 다운로드가 자동으로 시작됩니다.\n\n다운로드가 제공되지 않을 경우나 그것을 취소한 경우에는 아래의 링크를 클릭하여 다운로드를 다시 시작할 수 있습니다:\n\n$3\n\n참고: 이 생성한 설정 파일을 다운로드하지 않고 설치를 끝내면 이 파일은 나중에 사용할 수 없습니다.\n\n완료되었으면 [$2 위키에 들어갈 수 있습니다].", @@ -318,5 +320,5 @@ "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 분류별 확장 기능]을 찾아보실 수 있습니다.", "mainpagetext": "미디어위키가 설치되었습니다.", - "mainpagedocfooter": "[https://meta.wikimedia.org/wiki/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 당신의 위키에서 스팸에 대처하는 법을 배우세요]" + "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 10de248ce9..7859d7ae82 100644 --- a/includes/installer/i18n/lb.json +++ b/includes/installer/i18n/lb.json @@ -199,6 +199,7 @@ "config-install-updates": "Net néideg Aktualiséierungen net maachen", "config-install-sysop": "Administrateur Benotzerkont gëtt ugeluecht", "config-install-mainpage": "Haaptsäit mat Standard-Inhalt gëtt ugeluecht", + "config-install-mainpage-exists": "Haaptsäit gëtt et schonn, iwwersprangen", "config-install-extension-tables": "D'Tabelle fir déi aktivéiert Erweiderunge ginn ugeluecht", "config-install-mainpage-failed": "D'Haaptsäit konnt net dragesat ginn: $1", "config-download-localsettings": "LocalSettings.php eroflueden", diff --git a/includes/installer/i18n/mg.json b/includes/installer/i18n/mg.json index 15ccd0172e..2a270fc3ff 100644 --- a/includes/installer/i18n/mg.json +++ b/includes/installer/i18n/mg.json @@ -11,6 +11,7 @@ "config-localsettings-upgrade": "Hita ny LocalSettings.php.\nMba hanavao ity fametrahana ity, atsofohy ny sandan'i $wgUpgradeKey amin'ny saha eo ambany.\nHo hitanao eo amin'i LocalSettings.php ilay izy.", "config-localsettings-key": "Lakile fanavaozana:", "config-localsettings-badkey": "Diso ilay lakile fanavaozana natsofokao.", + "config-localsettings-connection-error": "Nisy hadisoana nitranga teo am-pametrahana ny fifandraisana amin'ny banky angona miaraka amin'ny parametatra voalaza ao amin'i LocalSettings.php. Vahao ny olan'ireo parametatra ireo dia avereno fanindroany.\n\n$1", "config-session-error": "Hadisoana teo am-panombohana ny fidirana : $1", "config-your-language": "Ny fiteninao :", "config-your-language-help": "Hifidy ny teny ilaina amin'ny piraosesy fametrahana.", @@ -44,6 +45,10 @@ "config-env-hhvm": "Misy ato HHVM $1.", "config-unicode-using-intl": "Mampiasa ny [http://pecl.php.net/intl itatra PECL intl] ho an'ny fampifenerana Unicode.", "config-unicode-pure-php-warning": "Fampitandremana: Ny [http://pecl.php.net/intl itatra PECL intl] dia tsy misy mba hahazakana ny fampifenerana Unicode, ka mitontona amin'ny implementasiona PHP ranoray noho ny tsifisiany.\nRaha hametraka tranonkala be mpamangy ianao dia tokony mamaky ny [https://www.mediawiki.org/wiki/Special:MyLanguage/Unicode_normalization_considerations ''Unicode normalization''] (amin'ny teny anglisy)", + "config-db-type": "Karazana banky angona:", + "config-db-host": "Anaran'ny lohamilin'ny banky angona:", + "config-db-host-help": "Raha lohamila hafa ny lohamilin'ny banky angona, dia atsofohy eto ny anaran'ilay lohamilina na ny adiresy IP-ny.\n\nRaha mampiasa fampiantranoana iombonana ianao dia tokony hanome anao ny anaran-dohamilina izy ao amin'ny toromariny.\n\nRaha mametraka amin'ny lohamilina Windows ianao sady mampiasa MySQL, dia mety tsy mandeha ny anaran-dohamilina \"localhost\". Raha tsy mandeha ilay izy dia \"127.0.0.1\" no atao adiresy IP an-toerana.\n\nRaha mampiasa PostgreSQL ianao, dia avelaho ho fotsy ity saha ity ahafahana mifandray amin'ny alalan'ny socket Unix.", + "config-db-host-oracle": "TNS an'ny banky angona:", "config-db-username": "Anaram-pikamban'ny banky angona :", "config-db-password": "Tenimiafin'ny banky angona :", "config-db-prefix": "Tovom-banky angona:", diff --git a/includes/installer/i18n/mk.json b/includes/installer/i18n/mk.json index b0b78db3ad..89f8e55bf2 100644 --- a/includes/installer/i18n/mk.json +++ b/includes/installer/i18n/mk.json @@ -214,9 +214,9 @@ "config-profile-help": "Викијата функционираат најдобро кога имаат што повеќе уредници.\nВо МедијаВики лесно се проверуваат скорешните промени, и лесно се исправа (технички: „враќа“) штетата направена од неупатени или злонамерни корисници.\n\nМногумина имаат најдено најразлични полезни примени за МедијаВики, но понекогаш не е лесно да убедите некого во предностите на вики-концептот.\nЗначи имате избор.\n\n'''{{int:config-profile-wiki}}''' — модел според кој секој може да уредува, дури и без најавување.\nАко имате вики со '''задолжително отворање на сметка''', тогаш добивате повеќе контрола, но ова може даги одврати спонтаните учесници.\n\n'''{{int:config-profile-fishbowl}}''' — може да уредуваат само уредници што имаат добиено дозвола за тоа, но јавноста може да ги гледа страниците, вклучувајќи ја нивната историја.\n'''{{int:config-profile-private}}''' — страниците се видливи и уредливи само за овластени корисници.\n\nПо воспоставката имате на избор и посложени кориснички права и поставки. Погледајте во [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:User_rights прирачникот].", "config-license": "Авторски права и лиценца:", "config-license-none": "Без подножје за лиценца", - "config-license-cc-by-sa": "Криејтив комонс НаведиИзвор СподелиПодИстиУслови", - "config-license-cc-by": "Криејтив комонс НаведиИзвор", - "config-license-cc-by-nc-sa": "Криејтив комонс НаведиИзвор-Некомерцијално-СподелиПодИстиУслови", + "config-license-cc-by-sa": "Криејтив комонс Наведи извор-Сподели под исти услови", + "config-license-cc-by": "Криејтив комонс Наведи извор", + "config-license-cc-by-nc-sa": "Криејтив комонс Наведи извор-Сподели под исти услови", "config-license-cc-0": "Криејтив комонс Нула (јавна сопственост)", "config-license-gfdl": "ГНУ-ова лиценца за слободна документација 1.3 или понова", "config-license-pd": "Јавна сопственост", @@ -244,7 +244,7 @@ "config-logo-help": "Матичното руво на МедијаВики има простор за лого од 135x160 пиксели над страничникот.\n\nМожете да употребите $wgStylePath или $wgScriptPath ако вашето лого е релативно на тие патеки.\n\nАко не сакате да имате лого, тогаш оставете го ова поле празно.", "config-instantcommons": "Овозможи Instant Commons", "config-instantcommons-help": "[https://www.mediawiki.org/wiki/InstantCommons Instant Commons] е функција која им овозможува на викијата да користат слики, звучни записи и други мултимедијални содржини од [https://commons.wikimedia.org/ Ризницата].\nЗа да може ова да работи, МедијаВики бара пристап до семрежјето.\n\nЗа повеќе информации за оваа функција и напатствија за нејзино поставување на вики (сите други освен Ризницата), коносултирајте го [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:$wgForeignFileRepos прирачникот].", - "config-cc-error": "Изборникот на лиценци од Криејтив комонс не даде резултати.\nВнесете го името на лиценцата рачно.", + "config-cc-error": "Изборникот на лиценци од Криејтив комонс не даде лиценца.\nВнесете го името на лиценцата рачно.", "config-cc-again": "Одберете повторно...", "config-cc-not-chosen": "Одберете ја саканата лиценца од Криејтив комонс и стиснете на „proceed“.", "config-advanced-settings": "Напредни нагодувања", @@ -302,6 +302,7 @@ "config-install-subscribe-fail": "Не можам да ве претплатам на известувањето mediawiki-announce: $1", "config-install-subscribe-notpossible": "cURL не е воспоставен, а allow_url_fopen не е достапно.", "config-install-mainpage": "Создавам главна страница со стандардна содржина", + "config-install-mainpage-exists": "Главната страница веќе постои. Преоѓам на следно.", "config-install-extension-tables": "Изработка на табели за овозможени додатоци", "config-install-mainpage-failed": "Не можев да вметнам главна страница: $1", "config-install-done": "Честитаме!\nУспешно го воспоставивте МедијаВики.\n\nВоспоставувачот создаде податотека LocalSettings.php.\nТаму се содржат сите ваши нагодувања.\n\nЌе треба да ја преземете и да ја ставите во основата на воспоставката (истата папка во која се наоѓа index.php). Преземањето треба да е започнато автоматски.\n\nАко не ви е понудено преземање, или пак ако сте го откажале, можете да го почнете одново стискајќи на следнава врска:\n\n$3\n\nНапомена: Ако ова не го направите сега, податотеката со поставки повеќе нема да биде на достапна.\n\nОткога ќе завршите со тоа, можете да [$2 влезете на вашето вики].", diff --git a/includes/installer/i18n/nb.json b/includes/installer/i18n/nb.json index 46156b90d6..b7a7289a8a 100644 --- a/includes/installer/i18n/nb.json +++ b/includes/installer/i18n/nb.json @@ -308,6 +308,7 @@ "config-install-subscribe-fail": "Ikke mulig Ã¥ abonnere pÃ¥ mediawiki-announce: $1", "config-install-subscribe-notpossible": "cURL er ikke installert og allow_url_fopen er ikke tilgjengelig.", "config-install-mainpage": "Oppretter hovedside med standard innhold", + "config-install-mainpage-exists": "Hovedsiden eksisterer allerede, hopper over", "config-install-extension-tables": "Oppretter tabeller for aktiviserte utvidelser", "config-install-mainpage-failed": "Kunne ikke sette inn hovedside: $1", "config-install-done": "Gratulrerer!\nDu har lykkes i Ã¥ installere MediaWiki.\n\nInstallasjonsprogrammet har generert en LocalSettings.php-fil.\nDen inneholder alle dine konfigureringer.\n\nDu mÃ¥ laste den ned og legge den pÃ¥ hovedfolderen for din wiki-installasjon (der index.php ligger). Nedlastingen skulle ha startet automatisk.\n\nHvis ingen nedlasting ble tilbudt, eller du avbrøt den, kan du fÃ¥ den i gang ved Ã¥ klikke pÃ¥ lenken under:\n\n$3\n\nOBS: Hvis du ikke gjør dette nÃ¥, vil den genererte konfigurasjonsfilen ikke være tilgjengelig for deg senere.\n\nNÃ¥r dette er gjort, kan du [$2 gÃ¥ inn i wikien].", diff --git a/includes/installer/i18n/nl.json b/includes/installer/i18n/nl.json index 24c3e3b519..a4995538af 100644 --- a/includes/installer/i18n/nl.json +++ b/includes/installer/i18n/nl.json @@ -18,7 +18,8 @@ "JaapDeKleine", "Macofe", "Hex", - "Mainframe98" + "Mainframe98", + "Rcdeboer" ] }, "config-desc": "Het installatieprogramma voor MediaWiki", @@ -71,7 +72,7 @@ "config-outdated-sqlite": "''' Waarschuwing:''' u gebruikt SQLite $1. SQLite is niet beschikbaar omdat de minimaal vereiste versie $2 is.", "config-no-fts3": "Waarschuwing: SQLite is gecompileerd zonder de module [//sqlite.org/fts3.html FTS3]; zoekfuncties zijn niet beschikbaar.", "config-pcre-old": "'''Onherstelbare fout:''' PCRE $1 of een latere versie is vereist.\nUw uitvoerbare versie van PHP is gekoppeld met PCRE $2.\n[https://www.mediawiki.org/wiki/Manual:Errors_and_symptoms/PCRE Meer informatie].", - "config-pcre-no-utf8": "'''Fataal:''' de module PRCE van PHP lijkt te zijn gecompileerd zonder ondersteuning voor PCRE_UTF8.\nMediaWiki heeft ondersteuning voor UTF-8 nodig om correct te kunnen werken.", + "config-pcre-no-utf8": "Onherstelbare fout: de module PRCE van PHP lijkt te zijn gecompileerd zonder ondersteuning voor PCRE_UTF8.\nMediaWiki heeft ondersteuning voor UTF-8 nodig om correct te kunnen werken.", "config-memory-raised": "PHP's memory_limit is $1 en is verhoogd tot $2.", "config-memory-bad": "'''Waarschuwing:''' PHP's memory_limit is $1.\nDit is waarschijnlijk te laag.\nDe installatie kan mislukken!", "config-xcache": "[http://xcache.lighttpd.net/ XCache] is op dit moment geïnstalleerd", @@ -79,7 +80,7 @@ "config-apcu": "[http://www.php.net/apcu APCu] is geïnstalleerd", "config-wincache": "[http://www.iis.net/download/WinCacheForPhp WinCache] is op dit moment geïnstalleerd", "config-no-cache-apcu": "Waarschuwing: [http://www.php.net/apcu APCu], [http://xcache.lighttpd.net/ XCache] of [http://www.iis.net/download/WinCacheForPhp WinCache] is niet aangetroffen.\nHet cachen van objecten is niet ingeschakeld.", - "config-mod-security": "'''Waarschuwing:''' uw webserver heeft de module [http://modsecurity.org/ mod_security] ingeschakeld. Als deze onjuist is ingesteld, kan dit problemen geven in combinatie met MediaWiki of andere software die gebruikers in staat stelt willekeurige inhoud te posten.\nLees de [http://modsecurity.org/documentation/ documentatie over mod_security] of neem contact op met de helpdesk van uw provider als u tegen problemen aanloopt.", + "config-mod-security": "Waarschuwing: Uw webserver heeft de module [http://modsecurity.org/ mod_security]/mod_security2 ingeschakeld. Veel standaard instellingen hiervan zorgen voor problemen in combinatie met MediaWiki en andere software die gebruikers in staat stelt willekeurige inhoud te posten.\nIndien mogelijk, zou deze moeten worden uitgeschakeld. Lees anders de [http://modsecurity.org/documentation/ documentatie over mod_security] of neem contact op met de helpdesk van uw provider als u tegen problemen aanloopt.", "config-diff3-bad": "GNU diff3 niet aangetroffen.", "config-git": "Versiecontrolesoftware git is aangetroffen: $1", "config-git-bad": "Geen git versiecontrolesoftware aangetroffen.", @@ -226,7 +227,7 @@ "config-profile-no-anon": "Account aanmaken verplicht", "config-profile-fishbowl": "Alleen voor geautoriseerde bewerkers", "config-profile-private": "Privéwiki", - "config-profile-help": "Wiki's werken het beste als ze door zoveel mogelijk gebruikers worden bewerkt.\nIn MediaWiki is het eenvoudig om de recente wijzigingen te controleren en eventuele foutieve of kwaadwillende bewerkingen terug te draaien.\n\nDaarnaast vinden velen MediaWiki goed inzetbaar in vele andere rollen, en soms is het niet handig om helemaal \"op de wikimanier\" te werken.\nDaarom biedt dit installatieprogramma u de volgende keuzes voor de basisinstelling van gebruikersvrijheden:\n\nHet profiel '''{{int:config-profile-wiki}}''' staat iedereen toe te bewerken, zonder zelfs aan te melden.\nEen wiki met '''{{int:config-profile-no-anon}}\" biedt extra verantwoordelijkheid, maar kan afschrikken toevallige gebruikers afschrikken.\n\nHet scenario '''{{int:config-profile-fishbowl}}''' laat gebruikers waarvoor dat is ingesteld bewerkt, maar andere gebruikers kunnen alleen pagina's bekijken, inclusief de bewerkingsgeschiedenis.\nIn een '''{{int:config-profile-private}}''' kunnen alleen goedgekeurde gebruikers pagina's bekijken en bewerken.\n\nMeer complexe instellingen voor gebruikersrechten zijn te maken na de installatie; hierover is meer te lezen in de [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:User_rights handleiding].", + "config-profile-help": "Wiki's werken het beste als ze door zoveel mogelijk gebruikers worden bewerkt.\nIn MediaWiki is het eenvoudig om de recente wijzigingen te controleren en eventuele foutieve of kwaadwillende bewerkingen terug te draaien.\n\nDaarnaast vinden velen MediaWiki goed inzetbaar in vele andere rollen, en soms is het niet handig om helemaal \"op de wikimanier\" te werken.\nDaarom biedt dit installatieprogramma u de volgende keuzes voor de basisinstelling van gebruikersvrijheden:\n\nHet profiel '''{{int:config-profile-wiki}}''' staat iedereen toe te bewerken, zonder zelfs aan te melden.\nEen wiki met '''{{int:config-profile-no-anon}}''' biedt extra verantwoordelijkheid, maar kan toevallige gebruikers afschrikken.\n\nHet scenario '''{{int:config-profile-fishbowl}}''' laat gebruikers waarvoor dat is ingesteld bewerken, maar andere gebruikers kunnen alleen pagina's bekijken, inclusief de bewerkingsgeschiedenis.\nIn een '''{{int:config-profile-private}}''' kunnen alleen goedgekeurde gebruikers pagina's bekijken en bewerken.\n\nMeer complexe instellingen voor gebruikersrechten zijn te maken na de installatie; hierover is meer te lezen in de [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:User_rights handleiding].", "config-license": "Auteursrechten en licentie:", "config-license-none": "Geen licentie in de voettekst", "config-license-cc-by-sa": "Creative Commons Naamsvermelding-Gelijk delen", @@ -317,6 +318,7 @@ "config-install-subscribe-fail": "Het is niet mogelijk te abonneren op mediawiki-announce: $1", "config-install-subscribe-notpossible": "cURL is niet geïnstalleerd en allow_url_fopen is niet beschikbaar.", "config-install-mainpage": "Hoofdpagina aanmaken met standaard inhoud", + "config-install-mainpage-exists": "Hoofdpagina bestaat al, overslaan", "config-install-extension-tables": "Tabellen voor ingeschakelde uitbreidingen worden aangemaakt", "config-install-mainpage-failed": "Het was niet mogelijk de hoofdpagina in te voegen: $1", "config-install-done": "Gefeliciteerd!\nU hebt MediaWiki geïnstalleerd.\n\nHet installatieprogramma heeft het bestand LocalSettings.php aangemaakt.\nDit bevat al uw instellingen.\n\nU moet het bestand downloaden en in de hoofdmap van uw wiki-installatie plaatsen, in dezelfde map als index.php.\nDe download zou automatisch moeten zijn gestart.\n\nAls de download niet is gestart of als u de download hebt geannuleerd, dan kunt u de download opnieuw starten door op de onderstaande koppeling te klikken:\n\n$3\n\nLet op: als u dit niet nu doet, dan is het bestand als u later de installatieprocedure afsluit zonder het bestand te downloaden niet meer beschikbaar.\n\nNa het plaatsen van het bestand met instellingen kunt u [$2 uw wiki gebruiken].", diff --git a/includes/installer/i18n/pl.json b/includes/installer/i18n/pl.json index f224b5de23..d712afe102 100644 --- a/includes/installer/i18n/pl.json +++ b/includes/installer/i18n/pl.json @@ -318,6 +318,7 @@ "config-install-subscribe-fail": "Nie można zapisać na listę „mediawiki-announce” – $1", "config-install-subscribe-notpossible": "cURL nie jest zainstalowany, więc allow_url_fopen nie jest dostępne.", "config-install-mainpage": "Tworzenie strony głównej z domyślną zawartością", + "config-install-mainpage-exists": "Strona główna już istnieje, pomijanie", "config-install-extension-tables": "Tworzenie tabel dla aktywnych rozszerzeń", "config-install-mainpage-failed": "Nie udało się wstawić strony głównej: $1", "config-install-done": "'''Gratulacje!\nUdało Ci się zainstalować MediaWiki.\n\nInstalator wygenerował plik konfiguracyjny LocalSettings.php.\n\nMusisz go pobrać i umieścić w katalogu głównym Twojej instalacji wiki (tym samym katalogu co index.php). Pobieranie powinno zacząć się automatycznie.\n\nJeżeli pobieranie nie zostało zaproponowane lub jeśli użytkownik je anulował, można ponownie uruchomić pobranie klikając poniższe łącze:\n\n$3\n\nUwaga: Jeśli nie zrobisz tego teraz, wygenerowany plik konfiguracyjny nie będzie już dostępny po zakończeniu instalacji.\n\nPo załadowaniu pliku konfiguracyjnego możesz [$2 wejść na wiki].", @@ -328,5 +329,5 @@ "config-nofile": "Nie udało się odnaleźć pliku \"$1\". Czy nie został usunięty?", "config-extension-link": "Czy wiesz, że twoja wiki obsługuje [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Extensions rozszerzenia]?\n\nMożesz przejrzeć [https://www.mediawiki.org/wiki/Category:Extensions_by_category rozszerzenia według kategorii] lub [https://www.mediawiki.org/wiki/Extension_Matrix Extension Matrix], aby zobaczyć pełną listę rozszerzeń.", "mainpagetext": "Instalacja MediaWiki powiodła się.", - "mainpagedocfooter": "Zapoznaj się z [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Contents informacjami o działaniu oprogramowania wiki].\n\n== Na początek ==\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Configuration_settings Lista ustawień konfiguracyjnych]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:FAQ MediaWiki FAQ]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Komunikaty o nowych wersjach MediaWiki (lista dyskusyjna)]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Localisation#Translation_resources Przetłumacz MediaWiki na swój język]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Combating_spam Dowiedz się, jak walczyć ze spamem na swojej wiki]" + "mainpagedocfooter": "Zapoznaj się z [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Contents Podręcznikiem użytkownika] zawierającym informacje o tym jak korzystać z oprogramowania wiki.\n\n== Na początek ==\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Configuration_settings Lista ustawień konfiguracyjnych]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:FAQ MediaWiki FAQ]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Komunikaty o nowych wersjach MediaWiki (lista dyskusyjna)]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Localisation#Translation_resources Przetłumacz MediaWiki na swój język]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Combating_spam Dowiedz się, jak walczyć ze spamem na swojej wiki]" } diff --git a/includes/installer/i18n/pt-br.json b/includes/installer/i18n/pt-br.json index fd8a2633b7..13944ee674 100644 --- a/includes/installer/i18n/pt-br.json +++ b/includes/installer/i18n/pt-br.json @@ -20,7 +20,8 @@ "Walesson", "Almondega", "Luk3", - "Eduardo Addad de Oliveira" + "Eduardo Addad de Oliveira", + "Warley Felipe C." ] }, "config-desc": "O instalador do MediaWiki", @@ -253,6 +254,7 @@ "config-install-pg-commit": "Enviando alterações", "config-install-user": "Criando usuário de banco de dados", "config-install-user-alreadyexists": "O usuário \"$1\" já existe!", + "config-install-user-create-failed": "Criando usuário \"$1\" falhou: $2", "config-install-user-missing": "O usuário especificado, \"$1\", não existe.", "config-install-user-missing-create": "O usuário especificado \" $1 \" não existe.\nPor favor, clique na opção de \"criar conta\" abaixo se você deseja criá-lo.", "config-install-tables": "Criando tabelas", @@ -267,6 +269,7 @@ "config-install-subscribe-fail": "Não foi possível subscrever o mediawiki-announce: $1", "config-install-subscribe-notpossible": "cURL não está instalada e allow_url_fopen não está disponível.", "config-install-mainpage": "Criando página principal com o conteúdo padrão", + "config-install-mainpage-exists": "A página principal já existe, pulando", "config-install-extension-tables": "Criando tabelas para extensões habilitadas", "config-install-mainpage-failed": "Não foi possível inserir a página principal: $1", "config-install-done": "Parabéns!\nVocê instalou do MediaWiki.\n\nO instalador gerou um arquivo LocalSettings.php.\nEste arquivo contém todas as suas configurações.\n\nVocê precisa fazer o download desse arquivo e colocá-lo na raiz da sua instalação (o mesmo diretório onde está o arquivo index.php). Este download deve ter sido iniciado automaticamente.\n\nSe o download não foi iniciado, ou se ele foi cancelado, pode recomeçá-lo clicando no link abaixo:\n\n$3\n\nNota: Se não fizer isto agora, o arquivo que foi gerado não estará disponível depois que você sair do processo de instalação sem baixá-lo.\n\nQuando isso tiver sido feito, pode [$2 entrar na sua wiki].", diff --git a/includes/installer/i18n/pt.json b/includes/installer/i18n/pt.json index cc8f993cfc..779a32fe8f 100644 --- a/includes/installer/i18n/pt.json +++ b/includes/installer/i18n/pt.json @@ -65,21 +65,21 @@ "config-env-php": "O PHP $1 está instalado.", "config-env-hhvm": "HHVM $1 está instalado.", "config-unicode-using-intl": "A usar a [http://pecl.php.net/intl extensão intl PECL] para a normalização Unicode.", - "config-unicode-pure-php-warning": "'''Aviso''': A [http://pecl.php.net/intl extensão intl PECL] não está disponível para efetuar a normalização Unicode. Irá recorrer-se à implementação em PHP puro, que é mais lenta.\nSe o seu site tem alto volume de tráfego, devia informar-se um pouco sobre a [https://www.mediawiki.org/wiki/Special:MyLanguage/Unicode_normalization_considerations/pt normalização Unicode].", - "config-unicode-update-warning": "'''Aviso''': A versão instalada do wrapper de normalização Unicode usa uma versão mais antiga da biblioteca do [http://site.icu-project.org/ projeto ICU].\nDevia [https://www.mediawiki.org/wiki/Special:MyLanguage/Unicode_normalization_considerations atualizá-la] se tem quaisquer preocupações sobre o uso do Unicode.", + "config-unicode-pure-php-warning": "Aviso: A [http://pecl.php.net/intl extensão intl PECL] não está disponível para efetuar a normalização Unicode. Irá recorrer-se à implementação em PHP puro, que é mais lenta.\nSe o seu site tem alto volume de tráfego, devia informar-se um pouco sobre a [https://www.mediawiki.org/wiki/Special:MyLanguage/Unicode_normalization_considerations/pt normalização Unicode].", + "config-unicode-update-warning": "Aviso: A versão instalada do wrapper de normalização Unicode usa uma versão mais antiga da biblioteca do [http://site.icu-project.org/ projeto ICU].\nDevia [https://www.mediawiki.org/wiki/Special:MyLanguage/Unicode_normalization_considerations atualizá-la] se tem quaisquer preocupações sobre o uso do Unicode.", "config-no-db": "Não foi possível encontrar um controlador apropriado da base de dados! Precisa de instalar um controlador da base de dados para o PHP. {{PLURAL:$2|É aceite o seguinte tipo|São aceites os seguintes tipos}} de base de dados: $1.\n\nSe fez a compilação do PHP, reconfigure-o com um cliente de base de dados ativado; por exemplo, usando ./configure --with-mysqli.\nSe instalou o PHP a partir de um pacote Debian ou Ubuntu, então precisa de instalar também, por exemplo, o pacote php5-mysql.", - "config-outdated-sqlite": "'''Aviso''': Tem a versão $1 do SQLite, que é anterior à versão mínima necessária, a $2. O SQLite não estará disponível.", - "config-no-fts3": "'''Aviso''': O SQLite foi compilado sem o módulo [//sqlite.org/fts3.html FTS3]; as funcionalidades de pesquisa não estarão disponíveis nesta instalação.", + "config-outdated-sqlite": "Aviso: Tem a versão $1 do SQLite, que é anterior à versão mínima necessária, a $2. O SQLite não estará disponível.", + "config-no-fts3": "Aviso: O SQLite foi compilado sem o módulo [//sqlite.org/fts3.html FTS3]; as funcionalidades de pesquisa não estarão disponíveis nesta instalação.", "config-pcre-old": "Erro fatal: É necessário o PCRE $1 ou versão posterior.\nO link do seu binário PHP foi feito com o PCRE $2.\n[https://www.mediawiki.org/wiki/Manual:Errors_and_symptoms/PCRE Mais informações].", "config-pcre-no-utf8": "'''Erro fatal''': O módulo PCRE do PHP parece ter sido compilado sem suporte PCRE_UTF8.\nO MediaWiki necessita do suporte UTF-8 para funcionar corretamente.", "config-memory-raised": "A configuração memory_limit do PHP era $1; foi aumentada para $2.", - "config-memory-bad": "'''Aviso:''' A configuração memory_limit do PHP é $1.\nIsto é provavelmente demasiado baixo.\nA instalação poderá falhar!", + "config-memory-bad": "Aviso: A configuração memory_limit do PHP é $1.\nIsto é provavelmente demasiado baixo.\nA instalação poderá falhar!", "config-xcache": "[http://xcache.lighttpd.net/ XCache] instalada", "config-apc": "[http://www.php.net/apc APC] instalada", - "config-apcu": "[http://www.php.net/apcu APCu] está instalado", + "config-apcu": "[http://www.php.net/apcu APCu] instalado", "config-wincache": "[http://www.iis.net/download/WinCacheForPhp WinCache] instalada", "config-no-cache-apcu": "Aviso: Não foram encontrados o [http://www.php.net/apcu APCu], o [http://xcache.lighttpd.net/ XCache] ou o [http://www.iis.net/download/WinCacheForPhp WinCache].\nA cache de objetos não está ativa.", - "config-mod-security": "'''Aviso''': O seu servidor de internet tem o [http://modsecurity.org/ mod_security] ativado. Se este estiver mal configurado, pode causar problemas ao MediaWiki ou a outros programas, permitindo que os utilizadores publiquem conteúdos arbitrários.\nConsulte a [http://modsecurity.org/documentation/ mod_security documentação] ou peça apoio ao fornecedor do alojamento do seu servidor se encontrar erros aleatórios.", + "config-mod-security": "Aviso: O seu servidor de Internet tem o [http://modsecurity.org/ mod_security]/mod_security2 ativado. Muitas das suas configurações normais podem causar problemas ao MediaWiki e a outros programas, permitindo que os utilizadores publiquem conteúdos arbitrários.\nSe possível, isto deve ser desativado. Se não, consulte a [http://modsecurity.org/documentation/ mod_security documentação] ou peça apoio ao fornecedor do alojamento do seu servidor se encontrar erros aleatórios.", "config-diff3-bad": "O GNU diff3 não foi encontrado.", "config-git": "Foi encontrado o software de controlo de versões Git: $1.", "config-git-bad": "Não foi encontrado o software de controlo de versões Git.", @@ -87,12 +87,12 @@ "config-gd": "Foi encontrada a biblioteca gráfica GD.\nSe possibilitar uploads, a miniaturização de imagens será ativada.", "config-no-scaling": "Não foi encontrada a biblioteca gráfica GD nem o ImageMagick.\nA miniaturização de imagens será desativada.", "config-no-uri": "Erro: Não foi possível determinar o URI atual.\nA instalação foi abortada.", - "config-no-cli-uri": "'''Aviso''': Não foi especificado um --scriptpath; por omissão, será usado: $1.", + "config-no-cli-uri": "Aviso: Não foi especificado um --scriptpath; por omissão, será usado: $1.", "config-using-server": "Será usado o nome do servidor \"$1\".", "config-using-uri": "Será usado o URL do servidor \"$1$2\".", - "config-uploads-not-safe": "'''Aviso:''' O diretório por omissão para carregamentos $1, está vulnerável à execução arbitrária de scripts.\nEmbora o MediaWiki verifique a existência de ameaças de segurança em todos os ficheiros enviados, é altamente recomendado que [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Security#Upload_security vede esta vulnerabilidade de segurança] antes de possibilitar uploads.", - "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 código arbitrário 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-uploads-not-safe": "Aviso: O diretório por omissão para carregamentos, $1, está vulnerável à execução arbitrária de listas de comandos (scripts).\nEmbora o MediaWiki verifique a existência de ameaças de segurança em todos os ficheiros enviados, é altamente recomendado que [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Security#Upload_security vede esta vulnerabilidade de segurança] antes de possibilitar uploads.", + "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-db-type": "Tipo da base de dados:", "config-db-host": "Servidor da base de dados:", @@ -119,9 +119,9 @@ "config-db-port": "Porta da base de dados:", "config-db-schema": "Esquema ''(schema)'' do MediaWiki", "config-db-schema-help": "Normalmente, este esquema estará correto.\nAltere-o só se souber que precisa de o fazer.", - "config-pg-test-error": "Não foi possível criar uma ligação à base de dados '''$1''': $2", + "config-pg-test-error": "Não foi possível criar uma ligação à base de dados $1: $2", "config-sqlite-dir": "Diretório de dados do SQLite:", - "config-sqlite-dir-help": "O SQLite armazena todos os dados num único ficheiro.\n\nDurante a instalação, o servidor de Internet precisa de ter permissão de escrita no diretório que especificar.\n\nEste diretório '''não''' deve poder ser acedido diretamente da Internet, por isso está a ser colocado onde estão os seus ficheiros PHP.\n\nJuntamente com o diretório, o instalador irá criar um ficheiro .htaccess, mas se esta operação falhar é possível que alguém venha a ter acesso direto à base de dados.\nIsto inclui acesso aos dados dos utilizadores (endereços de correio eletrónico, palavras-passe encriptadas), às revisões eliminadas e a outros dados de acesso restrito na wiki.\n\nConsidere colocar a base de dados num local completamente diferente, como, por exemplo, em /var/lib/mediawiki/asuawiki.", + "config-sqlite-dir-help": "O SQLite armazena todos os dados num único ficheiro.\n\nDurante a instalação, o servidor de Internet precisa de ter permissão de escrita no diretório que especificar.\n\nEste diretório não deve poder ser acedido diretamente da Internet, por isso está a ser colocado onde estão os seus ficheiros PHP.\n\nJuntamente com o diretório, o instalador irá criar um ficheiro .htaccess, mas se esta operação falhar é possível que alguém venha a ter acesso direto à base de dados.\nIsto inclui acesso aos dados dos utilizadores (endereços de correio eletrónico, palavras-passe encriptadas), às revisões eliminadas e a outros dados de acesso restrito na wiki.\n\nConsidere colocar a base de dados num local completamente diferente, como, por exemplo, em /var/lib/mediawiki/asuawiki.", "config-oracle-def-ts": "Tablespace padrão:", "config-oracle-temp-ts": "Tablespace temporário:", "config-type-mysql": "MySQL (ou compatível)", @@ -282,7 +282,7 @@ "config-skins-missing": "Não foi encontrado nenhum tema; o MediaWiki usará um tema de recurso até instalar temas adequados.", "config-skins-must-enable-some": "Deve escolher pelo menos um tema para ativar.", "config-skins-must-enable-default": "O tema escolhido como padrão deve ser ativado.", - "config-install-alreadydone": "'''Aviso:''' Parece que já instalou o MediaWiki e está a tentar instalá-lo novamente.\nPasse para a próxima página, por favor.", + "config-install-alreadydone": "Aviso: Parece que já instalou o MediaWiki e está a tentar instalá-lo novamente.\nPasse para a próxima página, por favor.", "config-install-begin": "Ao clicar \"{{int:config-continue}}\", vai iniciar a instalação do MediaWiki.\nSe quiser fazer mais alterações, clique \"{{int:config-back}}\".", "config-install-step-done": "terminado", "config-install-step-failed": "falhou", @@ -303,20 +303,21 @@ "config-install-user-missing": "O utilizador especificado, \"$1\", não existe.", "config-install-user-missing-create": "O utilizador especificado, \"$1\", não existe.\nMarque a caixa de seleção \"criar conta\" abaixo se pretende criá-la, por favor.", "config-install-tables": "A criar as tabelas", - "config-install-tables-exist": "'''Aviso''': As tabelas do MediaWiki parecem já existir.\nA criação das tabelas será saltada.", - "config-install-tables-failed": "'''Erro''': A criação das tabelas falhou com o seguinte erro: $1", - "config-install-interwiki": "A preencher a tabela padrão de interwikis", - "config-install-interwiki-list": "Não foi possível encontrar o ficheiro interwiki.list.", - "config-install-interwiki-exists": "'''Aviso''': A tabela de interwikis parece já conter entradas.\nO preenchimento padrão desta tabela será saltado.", + "config-install-tables-exist": "Aviso: As tabelas do MediaWiki parecem já existir.\nA criação das tabelas será saltada.", + "config-install-tables-failed": "Erro: A criação das tabelas falhou com o seguinte erro: $1", + "config-install-interwiki": "A preencher a tabela padrão de links interwikis", + "config-install-interwiki-list": "Não foi possível ler o ficheiro interwiki.list.", + "config-install-interwiki-exists": "Aviso: A tabela de interwikis parece já conter entradas.\nO preenchimento padrão desta tabela será saltado.", "config-install-stats": "A inicializar as estatísticas", "config-install-keys": "A gerar as chaves secretas", - "config-insecure-keys": "'''Aviso:''' {{PLURAL:$2|A chave segura|As chaves seguras}} ($1) {{PLURAL:$2|gerada durante a instalação não é completamente segura|geradas durante a instalação não são completamente seguras}}. Considere a possibilidade de {{PLURAL:$2|alterá-la|alterá-las}} manualmente.", + "config-insecure-keys": "Aviso: {{PLURAL:$2|Uma chave segura|Chaves seguras}} ($1) {{PLURAL:$2|gerada durante a instalação não é completamente segura|geradas durante a instalação não são completamente seguras}}. Considere a possibilidade de {{PLURAL:$2|alterá-la|alterá-las}} manualmente.", "config-install-updates": "Evitar executar atualizações desnecessárias", "config-install-updates-failed": "Erro: A inserção de chaves de atualização nas tabelas falhou com o seguinte erro: $1", "config-install-sysop": "A criar a conta de administrador", "config-install-subscribe-fail": "Não foi possível subscrever a lista mediawiki-announce: $1", "config-install-subscribe-notpossible": "cURL não está instalado e allow_url_fopen não está disponível.", - "config-install-mainpage": "A criar a página principal com o conteúdo padrão.", + "config-install-mainpage": "A criar a página principal com o conteúdo padrão", + "config-install-mainpage-exists": "A página principal já existe; a saltar este passo", "config-install-extension-tables": "A criar as tabelas das extensões ativadas", "config-install-mainpage-failed": "Não foi possível inserir a página principal: $1", "config-install-done": "Parabéns!\nTerminou a instalação do MediaWiki.\n\nO instalador gerou um ficheiro LocalSettings.php.\nEste ficheiro contém todas as configurações.\n\nPrecisa de descarregar o ficheiro e colocá-lo no diretório de raiz da sua instalação (o mesmo diretório onde está o ficheiro index.php). Este descarregamento deverá ter sido iniciado automaticamente.\n\nSe o descarregamento não foi iniciado, ou se o cancelou, pode recomeçá-lo clicando na ligação abaixo:\n\n$3\n\nNota: Se não o descarregar agora, o ficheiro que foi gerado deixará de estar disponível quando sair do processo de instalação.\n\nDepois de terminar o passo anterior, pode [$2 entrar na wiki].", diff --git a/includes/installer/i18n/qqq.json b/includes/installer/i18n/qqq.json index 7b60ed0d52..8d10b51f46 100644 --- a/includes/installer/i18n/qqq.json +++ b/includes/installer/i18n/qqq.json @@ -317,6 +317,7 @@ "config-install-subscribe-fail": "{{doc-important|\"[[m:mail:mediawiki-announce|mediawiki-announce]]\" is the name of a mailing list and should not be translated.}}\nA message displayed if the MediaWiki installer encounters an error making a request to lists.wikimedia.org which hosts the mailing list.\n* $1 - the HTTP error encountered, reproduced as is (English string)", "config-install-subscribe-notpossible": "Error shown when automatically subscribing to the MediaWiki announcements mailing list fails.", "config-install-mainpage": "*{{msg-mw|Config-install-database}}\n*{{msg-mw|Config-install-tables}}\n*{{msg-mw|Config-install-schema}}\n*{{msg-mw|Config-install-user}}\n*{{msg-mw|Config-install-interwiki}}\n*{{msg-mw|Config-install-stats}}\n*{{msg-mw|Config-install-keys}}\n*{{msg-mw|Config-install-sysop}}\n*{{msg-mw|Config-install-mainpage}}", + "config-install-mainpage-exists": "Warning shown when installer attempts to create main page but it already exists.", "config-install-extension-tables": "Notice shown to the user during the install about progress.", "config-install-mainpage-failed": "Used as error message. Parameters:\n* $1 - detailed error message", "config-install-done": "Parameters:\n* $1 is the URL to LocalSettings download\n* $2 is a link to the wiki.\n* $3 is a download link with attached download icon. The config-download-localsettings message will be used as the link text.", diff --git a/includes/installer/i18n/ru.json b/includes/installer/i18n/ru.json index c285e73835..fc9984efa9 100644 --- a/includes/installer/i18n/ru.json +++ b/includes/installer/i18n/ru.json @@ -22,7 +22,8 @@ "Ильнар", "Macofe", "StasR", - "Irus" + "Irus", + "Mailman" ] }, "config-desc": "Инсталлятор MediaWiki", @@ -31,7 +32,7 @@ "config-localsettings-upgrade": "Обнаружен файл LocalSettings.php.\nДля обновления этой установки, пожалуйста, введите значение $wgUpgradeKey.\nЕго можно найти в файле LocalSettings.php.", "config-localsettings-cli-upgrade": "Обнаружен файл LocalSettings.php.\nДля обновления этой установки, пожалуйста, запустите update.php", "config-localsettings-key": "Ключ обновления:", - "config-localsettings-badkey": "Вы указали неправильный ключ обновления", + "config-localsettings-badkey": "Вы указали неверный ключ обновления.", "config-upgrade-key-missing": "Обнаружена существующая установленная копия MediaWiki.\nЧтобы обновить обнаруженную установку, пожалуйста, добавьте следующую строку в конец вашего файла LocalSettings.php:\n\n$1", "config-localsettings-incomplete": "Похоже, что существующий файл LocalSettings.php неполон.\nНе установлена переменная $1.\nПожалуйста, измените LocalSettings.php так, чтобы значение этой переменной было задано, затем нажмите «{{int:Config-continue}}».", "config-localsettings-connection-error": "Произошла ошибка при подключении к базе данных с использованием настроек, указанных в LocalSettings.php. Пожалуйста, исправьте эти настройки и повторите попытку.\n\n$1", @@ -321,6 +322,7 @@ "config-install-subscribe-fail": "Не удаётся подписаться на mediawiki-announce: $1", "config-install-subscribe-notpossible": "cURL не установлен и не доступна опция allow_url_fopen.", "config-install-mainpage": "Создание главной страницы с содержимым по умолчанию", + "config-install-mainpage-exists": "Главная страница уже существует, пропускаем", "config-install-extension-tables": "Создание таблиц для включённых расширений", "config-install-mainpage-failed": "Не удаётся вставить главную страницу: $1", "config-install-done": "Поздравляем!\nВы установили MediaWiki.\n\nВо время установки был создан файл LocalSettings.php.\nОн содержит все ваши настройки.\n\nВам необходимо скачать его и положить в корневую директорию вашей вики (ту же директорию, где находится файл index.php). Его загрузка должна начаться автоматически.\n\nЕсли автоматическая загрузка не началась или вы её отменили, вы можете скачать по ссылке ниже:\n\n$3\n\nПримечание: Если вы не сделаете этого сейчас, то сгенерированный файл конфигурации не будет доступен вам в дальнейшем, если вы выйдете из установки, не скачивая его.\n\nПо окончании действий, описанных выше, вы сможете [$2 войти в вашу вики].", diff --git a/includes/installer/i18n/sr-ec.json b/includes/installer/i18n/sr-ec.json index f4343560ba..02f633593e 100644 --- a/includes/installer/i18n/sr-ec.json +++ b/includes/installer/i18n/sr-ec.json @@ -5,7 +5,8 @@ "Михајло Анђелковић", "Milicevic01", "Aktron", - "Сербијана" + "Сербијана", + "Zoranzoki21" ] }, "config-desc": "Инсталација за Медијавики", @@ -82,8 +83,9 @@ "config-skins": "Теме", "config-install-step-done": "готово", "config-install-step-failed": "није успело", + "config-install-mainpage-exists": "Главна страна већ постоји, прескакање", "config-help": "помоћ", "config-help-tooltip": "кликните да проширите", "mainpagetext": "Медијавики је успешно инсталиран.", - "mainpagedocfooter": "Погледајте [https://meta.wikimedia.org/wiki/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/Manual:Combating_spam Научите како да се борете против спама на Вашој вики]" + "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/Manual:Combating_spam Научите како да се борете против спама на Вашој вики]" } diff --git a/includes/installer/i18n/sv.json b/includes/installer/i18n/sv.json index 45c5a7d1e2..4f52403f37 100644 --- a/includes/installer/i18n/sv.json +++ b/includes/installer/i18n/sv.json @@ -119,7 +119,7 @@ "config-type-mssql": "Microsoft SQL Server", "config-support-info": "MediaWiki stöder följande databassystem:\n\n$1\n\nOm du inte ser det databassystem som du försöker använda nedanstÃ¥ende, följ dÃ¥ instruktionerna länkade ovan för aktivera stöd för det.", "config-dbsupport-mysql": "* [{{int:version-db-mysql-url}} MySQL] är det primära mÃ¥let för MediaWiki och det stöds bäst. MediaWiki fungerar även med [{{int:version-db-mariadb-url}} MariaDB] och [{{int:version-db-percona-url}} Percona Server], som är kompatibla med MySQL. ([http://www.php.net/manual/en/mysqli.installation.php Hur man kompilerar PHP med stöd för MySQL])", - "config-dbsupport-postgres": "* [{{int:version-db-postgres-url}} PostgreSQL] är ett populärt databassystem med öppen källkod som ett alternativ till MySQL. Det kan finnas nÃ¥gra mindre kvarvarande buggar, och den rekommenderas inte för användning i en produktionsmiljö. ([http://www.php.net/manual/en/pgsql.installation.php Hur man kompilerar PHP med PostgreSQL stöd])", + "config-dbsupport-postgres": "* [{{int:version-db-postgres-url}} PostgreSQL] är ett populärt databassystem med öppen källkod som ett alternativ till MySQL. ([http://www.php.net/manual/en/pgsql.installation.php Hur man kompilerar PHP med PostgreSQL stöd])", "config-dbsupport-sqlite": "* [{{int:version-db-sqlite-url}} SQLite] är en lättviktsdatabassystem med väldigt bra stöd. ([http://www.php.net/manual/en/pdo.installation.php Hur man kompilerar PHP med SQLite stöd], använder PDO)", "config-dbsupport-oracle": "* [{{int:version-db-oracle-url}} Oracle] är en kommersiellt databas för företag. ([http://www.php.net/manual/en/oci8.installation.php Hur man kompilerar PHP med OCI8 stöd])", "config-dbsupport-mssql": "* [{{int:version-db-mssql-url}} Microsoft SQL Server] är en kommersiellt databas för företag för Windows. ([http://www.php.net/manual/en/sqlsrv.installation.php Hur man kompilerar PHP med SQLSRV stöd])", @@ -305,6 +305,7 @@ "config-install-subscribe-fail": "Det gick inte att prenumerera pÃ¥ mediawiki-announce: $1", "config-install-subscribe-notpossible": "cURL är inte installerad och allow_url_fopen är inte tillgänglig.", "config-install-mainpage": "Skapa huvudsida med standardinnehÃ¥ll", + "config-install-mainpage-exists": "Huvudsidan finns redan, hoppar över", "config-install-extension-tables": "Skapar tabeller för aktiverade tillägg", "config-install-mainpage-failed": "Kunde inte infoga huvudsidan: $1", "config-install-done": "Grattis!\nDu har installerat MediaWiki.\n\nInstallationsprogrammet har genererat filen LocalSettings.php.\nDet innehÃ¥ller alla dina konfigurationer.\n\nDu kommer att behöva ladda ner den och placera den i roten för din wiki-installation (samma katalog som index.php). Nedladdningen borde ha startats automatiskt.\n\nOm ingen nedladdning erbjöds, eller om du har avbrutit det kan du starta om nedladdningen genom att klicka pÃ¥ länken nedan:\n\n$3\n\nOBS: Om du inte gör detta nu, kommer denna genererade konfigurationsfil inte vara tillgänglig för dig senare om du avslutar installationen utan att ladda ned den.\n\nNär det är klart, kan du [$2 gÃ¥ in pÃ¥ din wiki]", @@ -315,5 +316,5 @@ "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].", "mainpagetext": "MediaWiki har installerats utan problem.", - "mainpagedocfooter": "Information om hur wiki-programvaran används finns i [https://meta.wikimedia.org/wiki/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]" + "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/tl.json b/includes/installer/i18n/tl.json index 2ba2c27137..e078752f49 100644 --- a/includes/installer/i18n/tl.json +++ b/includes/installer/i18n/tl.json @@ -6,7 +6,8 @@ "아라", "Amire80", "Jojit fb", - "Macofe" + "Macofe", + "Emem.calist" ] }, "config-desc": "Ang tagapagluklok para sa MediaWiki", @@ -279,6 +280,7 @@ "config-install-subscribe-fail": "Hindi nagawang magpasipi mula sa mediawiki-announce: $1", "config-install-subscribe-notpossible": "Hindi nakalagak ang cURL at hindi makukuha ang allow_url_fopen", "config-install-mainpage": "Nililikha ang pangunahing pahina na may likas na nakatakdang nilalaman", + "config-install-mainpage-exists": "Ang pangunahing pahina ay nakasaad na, ipagpatuloy ang paglalathala", "config-install-extension-tables": "Nililikha ang mga talahanayan para sa pinagaganang mga dugtong", "config-install-mainpage-failed": "Hindi maisingit ang pangunahing pahina: $1", "config-install-done": "'''Maligayang bati!'''\nMatagumpay mong nailuklok ang MediaWiki.\n\nAng tagapagluklok ay nakagawa ng isang talaksan ng LocalSettings.php.\nNaglalaman ito ng lahat ng iyong mga pagsasaayos.\n\nKailangan mo itong ikargang paibaba at ilagay ito sa lipon ng iyong pagluluklok ng wiki (katulad ng direktoryo ng index.php). Ang pagkakargang paibaba ay dapat na kusang magsimula.\n\nKung ang pagkakargang paibaba ay hindi inialok, o kung hindi mo ito itinuloy, maaari mong muling simulan ang pagkakargang paibaba sa pamamagitan ng pagpindot sa kawing na nasa ibaba:\n\n$3\n\n'''Paunawa''': Kapag hindi mo ito ginawa ngayon, ang nagawang talaksang ito ng pagkakaayos ay hindi mo na makukuha mamaya kapag lumabas ka mula sa pagluluklok na hindi ikinakarga itong paibaba.\n\nKapag nagawa na iyan, maaari ka nang '''[$2 pumasok sa wiki mo]'''.", diff --git a/includes/installer/i18n/uk.json b/includes/installer/i18n/uk.json index 7644f417ab..78730351b6 100644 --- a/includes/installer/i18n/uk.json +++ b/includes/installer/i18n/uk.json @@ -308,6 +308,7 @@ "config-install-subscribe-fail": "Не можливо підписатись на mediawiki-announce: $1", "config-install-subscribe-notpossible": "cURL не встановлено і опція allow_url_fopen не доступна.", "config-install-mainpage": "Створення головної сторінки із вмістом за замовчуванням", + "config-install-mainpage-exists": "Головна сторінка вже існує, пропускаємо", "config-install-extension-tables": "Створення таблиць для увімкнених розширень", "config-install-mainpage-failed": "Не вдається вставити головну сторінку: $1", "config-install-done": "Вітаємо!\nВи успішно встановили MediaWiki.\n\nІнсталятор згенерував файл LocalSettings.php, який містить усі Ваші налаштування.\n\nВам необхідно завантажити його і помістити у кореневу папку Вашої вікі (туди ж, де index.php). Завантаження мало початись автоматично.\n\nЯкщо завантаження не почалось або Ви його скасували, можете заново його почати, натиснувши на посилання внизу:\n\n$3\n\nПримітка: Якщо Ви не зробите цього зараз, цей файл не буде доступним пізніше, коли Ви вийдете з встановлення, не скачавши його.\n\nПісля виконання дій, описаних вище, Ви зможете [$2 увійти у свою вікі].", diff --git a/includes/installer/i18n/vi.json b/includes/installer/i18n/vi.json index 0820ff5615..0a7f8cd248 100644 --- a/includes/installer/i18n/vi.json +++ b/includes/installer/i18n/vi.json @@ -116,7 +116,7 @@ "config-type-mssql": "Microsoft SQL Server", "config-support-info": "MediaWiki hỗ trợ các hệ thống cÆ¡ sở dữ liệu sau đây:\n\n$1\n\nNếu bạn không thấy hệ thống cÆ¡ sở dữ liệu mà bạn đang muốn sá»­ dụng được liệt kê dưới đây, thì hãy theo chỉ dẫn được liên kết ở trên để kích hoạt tính năng hỗ trợ.", "config-dbsupport-mysql": "* [{{int:version-db-mysql-url}} MySQL] là mục tiêu chính cho MediaWiki và được hỗ trợ tốt nhất. MediaWiki cÅ©ng làm việc với [{{int:version-db-mariadb-url}} MariaDB] và [{{int:version-db-percona-url}} Percona Server], là những cÆ¡ sở dữ liệu tÆ°Æ¡ng thích với MySQL. ([http://www.php.net/manual/en/mysqli.installation.php Làm thế nào để biên dịch PHP với sá»± hỗ trợ của MySQL])", - "config-dbsupport-postgres": "* [{{int:version-db-postgres-url}} PostgreSQL] là một hệ thống cÆ¡ sở dữ liệu mã nguồn mở phổ biến nhÆ° là một thay thế cho MySQL. Có thể có một số lỗi nhỏ lâu đời, và nó không được khuyến cáo sá»­ dụng trong môi trường sản xuất. ([http://www.php.net/manual/en/pgsql.installation.php Làm thế nào để biên dịch PHP với sá»± hỗ trợ của PostgreSQL])", + "config-dbsupport-postgres": "* [{{int:version-db-postgres-url}} PostgreSQL] là một hệ thống cÆ¡ sở dữ liệu mã nguồn mở phổ biến nhÆ° là một thay thế cho MySQL. ([http://www.php.net/manual/en/pgsql.installation.php Làm thế nào để biên dịch PHP với sá»± hỗ trợ của PostgreSQL])", "config-dbsupport-sqlite": "* [{{int:version-db-sqlite-url}} SQLite] là một hệ thống cÆ¡ sở dữ liệu dung lượng nhẹ được hỗ trợ rất tốt. ([http://www.php.net/manual/en/pdo.installation.php Làm thế nào để biên dịch PHP với sá»± hỗ trợ của SQLite], sá»­ dụng PDO)", "config-dbsupport-oracle": "* [{{int:version-db-oracle-url}} Oracle] là một cÆ¡ sở dữ liệu doanh nghiệp thÆ°Æ¡ng mại. ([http://www.php.net/manual/en/oci8.installation.php Làm thế nào để biên dịch PHP với sá»± hỗ trợ của OCI8])", "config-dbsupport-mssql": "* [{{int:version-db-mssql-url}} Microsoft SQL Server] là một cÆ¡ sở dữ liệu doanh nghiệp thÆ°Æ¡ng mại cho Windows. ([http://www.php.net/manual/en/sqlsrv.installation.php Làm thế nào để biên dịch PHP với sá»± hỗ trợ của SQLSRV])", @@ -302,6 +302,7 @@ "config-install-subscribe-fail": "Không thể theo dõi mediawiki-announce: $1", "config-install-subscribe-notpossible": "cURL không được cài đặt và allow_url_fopen không có sẵn.", "config-install-mainpage": "Đang tạo trang đầu với nội dung mặc định", + "config-install-mainpage-exists": "Bỏ qua trang chính đã tồn tại", "config-install-extension-tables": "Đang tạo bảng cho các phần mở rộng được kích hoạt", "config-install-mainpage-failed": "Không thể chèn trang đầu: $1", "config-install-done": "Xin chúc mừng!\nBạn đã cài đặt MediaWiki.\n\nBộ cài đặt đã tạo ra một tập tin LocalSettings.php.\nTập tin này chứa tất cả các cấu hình của bạn.\n\nBạn sẽ cần phải tải nó về và đặt nó trong thÆ° mục cài đặt wiki của bạn (cùng thÆ° mục với index.php). Việc tải về có lẽ sẽ được khởi động tá»± động.\n\nNếu bản tải về không được cung cấp, hoặc nếu bạn hủy bỏ nó, bạn có thể khởi động lại tải về bằng cách nhấn vào liên kết dưới đây:\n\n$3\n\nLÆ°u ý: Nếu bạn không làm điều này ngay bây giờ, điều này sẽ tạo ra tập tin cấu hình sẽ không có giá trị cho bạn sau này nếu bạn thoát khỏi trình cài đặt mà không tải nó về.\n\nKhi đã việc tải về đã hoàn thành, bạn có thể [$2 truy cập trang wiki của bạn].", @@ -312,5 +313,5 @@ "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.", "mainpagetext": "'''MediaWiki đã được cài đặt.'''", - "mainpagedocfooter": "Xin đọc [https://meta.wikimedia.org/wiki/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]" + "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/war.json b/includes/installer/i18n/war.json index a3c3d246a7..ef7694a743 100644 --- a/includes/installer/i18n/war.json +++ b/includes/installer/i18n/war.json @@ -10,12 +10,16 @@ "config-information": "Impormasyon", "config-localsettings-upgrade": "Mayda LocalSettings.php nga paypay nga nabilngan. Basi ma-upgrade ini nga pag-installar, alayon pagbutáng han value han $wgUpgradeKey ha kahon ha ubós. Mabibilngan mo ini ha LocalSettings.php.", "config-localsettings-cli-upgrade": "Mayda LocalSettings.php nga paypay nga nabilngan. Basi ma-upgrade ini nga pag-installar, alayon pagpadalagan lugod han update.php", - "config-localsettings-badkey": "An key nga imo ginhatag in diri asya.", + "config-localsettings-key": "Upgrade nga yabi:", + "config-localsettings-badkey": "Sayop an upgrade nga yabi nga imo ginhátag", "config-upgrade-key-missing": "Mayda daan na ng gin-installar nga MediaWiki nga nabilngan.\nBasi ma-upgrade ini nga pag-instalar, alayon pagbutang han nahasunod nga linya ha ubós han imo LocalSettings.php:\n\n$1", "config-localsettings-incomplete": "An yana nga LocalSettings.php in baga diri kompleto.\nAn $1 variable in diri naka-set.\nAlayon igsaliwan an LocalSettings.php para ini nga variable in mai-set, ngan pidlita an \"{{int:Config-continue}}\".", "config-localsettings-connection-error": "May-ada pagsayop an nahitabo han pagpapakabit ngada ha database nga gingagamitan hin mga kamumutangan nga dapat unta ginpapatuman han LocalSettings.php. Alayon ayda ini nga mga kamumutangan ngan utrohon nala.\n\n$1", "config-session-error": "Pakyas an pagtikang han session: $1", + "config-session-expired": "An imo sesyon nga data baga na hin naglahós na hin panahón\nIt mga sesyon gin-configure hin pagkaiha nga $1\nPuyde mo ini paiha-on ha pagset hit session.gc_maxlifetime ha php.ini.\nIgtikang hin utro an pag-instalar nga proseso.", + "config-no-session": "¡Nawarâ an imo sesyon nga data!\nKitaa an imo php.ini ngan siguroa nga an session.save_path ginkadâ hin naangay nga direktory.", "config-your-language": "Imo pinulongán", + "config-your-language-help": "Pili-a in yinaknan nga gagamiton dida han proseso han pag-instalar.", "config-wiki-language": "Pinulongán han wiki", "config-wiki-language-help": "Pilía an pinulongán nga kauróg igsúsurat hit wiki", "config-back": "Bálik", @@ -23,10 +27,19 @@ "config-page-language": "Pinulongán", "config-page-welcome": "Maupay nga pag-abot ha MediaWiki!", "config-page-dbconnect": "Igsumpay ha database", + "config-page-upgrade": "Ig-upgrade it aada nga na-instalar", + "config-page-dbsettings": "Mga setting ha database", "config-page-name": "Ngaran", + "config-page-options": "Mga pagpipilian", + "config-page-install": "Ig-instalar", "config-page-complete": "Nakompleto!", + "config-page-restart": "Igbalik hin utro in pag-instalar", "config-page-readme": "Basaha ako", + "config-page-releasenotes": "Mga nota han ginpagawás", "config-page-copying": "Nagkokopya", + "config-page-upgradedoc": "Pag-upgrade", + "config-page-existingwiki": "Aada nga wiki", + "config-help-restart": "¿Karúyag mo ba ighawan an tanan nga gin-save nga data nga imo gin-enter ngan igbalik hin utro an proseso hin pag-instalar?", "config-restart": "Oo, utroha patikanga", "config-welcome": "=== Mga pagpanginano panlibong ===\nMagkakamay-ada yano nga panginano para masabtan kun ini nga libong in naaangay para hiton pagtataod hiton MediaWiki. Hinumdomi iton paglakip hinin nga impormasyon kun karuyag mo mangaro hin suporta kun paunan-on humanon an pagtataod.", "config-env-php": "Gin-install an PHP $1.", diff --git a/includes/installer/i18n/zh-hans.json b/includes/installer/i18n/zh-hans.json index d2d5d3c28d..d0c0026a7c 100644 --- a/includes/installer/i18n/zh-hans.json +++ b/includes/installer/i18n/zh-hans.json @@ -80,7 +80,7 @@ "config-memory-bad": "警告:PHP的内存使用上限memory_limit为$1。\n该设定可能过低,并导致安装失败!", "config-xcache": "[http://xcache.lighttpd.net/ XCache]已安装", "config-apc": "[http://www.php.net/apc APC]已安装", - "config-apcu": "[http://www.php.net/apcu APCu]已安装", + "config-apcu": "已安装[http://www.php.net/apcu APCu]", "config-wincache": "[http://www.iis.net/download/WinCacheForPhp WinCache]已安装", "config-no-cache-apcu": "警告:找不到[http://www.php.net/apcu APCu]、[http://xcache.lighttpd.net/ XCache]或[http://www.iis.net/download/WinCacheForPhp WinCache]。\n对象缓存未启用。", "config-mod-security": "警告:您的web服务器已启用[http://modsecurity.org/ mod_security]/mod_security2。它的很多常见配置可能导致MediaWiki及其他软件允许用户发布任意内容的问题。如果可能,这应当被禁用。否则,当您遭遇随机错误时,请参考[http://modsecurity.org/documentation/ mod_security 文档]或联络您的主机支持。", @@ -318,6 +318,7 @@ "config-install-subscribe-fail": "无法订阅mediawiki-announce:$1", "config-install-subscribe-notpossible": "没有安装cURL,allow_url_fopen也不可用。", "config-install-mainpage": "正在创建显示默认内容的首页", + "config-install-mainpage-exists": "首页已存在,正在跳过", "config-install-extension-tables": "正在创建已启用扩展程序表", "config-install-mainpage-failed": "无法插入首页:$1", "config-install-done": "恭喜!\n您已经安装了MediaWiki。\n\n安装程序已经生成了LocalSettings.php文件,其中包含了您所有的配置。\n\n您需要下载该文件,并将其放在您wiki的根目录(index.php的同级目录)中。稍后下载将自动开始。\n\n如果浏览器没有提示您下载,或者您取消了下载,您可以点击下面的链接重新开始下载:\n\n$3\n\n注意:如果您现在不完成本步骤,而是没有下载便退出了安装过程,此后您将无法获得自动生成的配置文件。\n\n当本步骤完成后,您可以[$2 进入您的wiki]。", diff --git a/includes/installer/i18n/zh-hant.json b/includes/installer/i18n/zh-hant.json index e7f69d3a8f..faf519487c 100644 --- a/includes/installer/i18n/zh-hant.json +++ b/includes/installer/i18n/zh-hant.json @@ -16,7 +16,9 @@ "NigelSoft", "Macofe", "Reke", - "Suchichi02" + "Suchichi02", + "Winstonyin", + "Wehwei" ] }, "config-desc": "MediaWiki 安裝程式", @@ -74,7 +76,9 @@ "config-memory-bad": "警告:PHP 的記憶體使用上限 memory_limit 為 $1。\n該設定值可能過低。\n這可能導致後續的安裝失敗!", "config-xcache": "[http://xcache.lighttpd.net/ XCache] 已安裝", "config-apc": "[http://www.php.net/apc APC] 已安裝", + "config-apcu": "已安裝[http://www.php.net/apcu APCu]", "config-wincache": "[http://www.iis.net/download/WinCacheForPhp WinCache] 已安裝", + "config-no-cache-apcu": "警告:找不到[http://www.php.net/apcu APCu], [http://xcache.lighttpd.net/ XCache]或[http://www.iis.net/download/WinCacheForPhp WinCache]。未開啟物件緩存。", "config-mod-security": "警告:您的網頁伺服器已開啟 [http://modsecurity.org/ mod_security] 模組,如果設定不恰當會導致使用者可在 MediaWiki 或其他應用程式發佈任意的內容。\n若您遇到任何問題,請參考 [http://modsecurity.org/documentation/ mod_security 文件] 或聯繫您的伺服器技術支援人員。", "config-diff3-bad": "找不到 GNU diff3。", "config-git": "找到 Git 版本控制軟體:$1。", @@ -124,7 +128,7 @@ "config-type-mssql": "Microsoft SQL Server", "config-support-info": "MediaWiki 支援以下資料庫系統:\n\n$1\n\n如果您下方沒有看到您要使用的資料庫系統,請根據上方連結指示開啟資料庫的支援。", "config-dbsupport-mysql": "* [{{int:version-db-mysql-url}} MySQL] 是 MediaWiki 主要支援的資料庫系統。MediaWiki 也同時可運作與於 [{{int:version-db-mariadb-url}} MariaDB] 和[{{int:version-db-percona-url}} Percona 伺服器],上述這些與 MySQL 相容的資料庫系統。([http://www.php.net/manual/en/mysqli.installation.php 如何編譯支援 MySQL 的 PHP])", - "config-dbsupport-postgres": "* [{{int:version-db-postgres-url}} PostgreSQL] 是一套受歡迎的開源資料庫系統,在開源方案當中,可用來替代 MySQL。目前仍有一些次要的問題需要解決,較不建議使用在上線環境當中。 ([http://www.php.net/manual/en/pgsql.installation.php 如何編譯支援 PostgreSQL 的 PHP])。", + "config-dbsupport-postgres": "* [{{int:version-db-postgres-url}} PostgreSQL]是一套受歡迎的開源資料庫系統,可用來替代 MySQL。([http://www.php.net/manual/en/pgsql.installation.php 如何編譯支援PostgreSQL的PHP])。", "config-dbsupport-sqlite": "* [{{int:version-db-sqlite-url}} SQLite] 是一套輕量級的資料庫系統,MediaWiki 可在此資料庫系統上良好的運作。([http://www.php.net/manual/en/pdo.installation.php 如何編譯支援 SQLite 的 PHP],須透過 PDO)", "config-dbsupport-oracle": "* [{{int:version-db-oracle-url}} Oracle] 是一套商用企業級的資料庫。([http://www.php.net/manual/en/oci8.installation.php 如何編譯支援 OCI8 的 PHP])", "config-dbsupport-mssql": "* [{{int:version-db-mssql-url}} Microsoft SQL Server] 是一套 Windows 專用的商用企業級的資料庫。 ([http://www.php.net/manual/en/sqlsrv.installation.php 如何編譯支援 SQLSRV 的 PHP])", @@ -209,6 +213,8 @@ "config-subscribe": "訂閱 [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce 發佈公告郵寄清單]。", "config-subscribe-help": "這是一個用於發佈公告的低郵件量郵寄清單,內容包括重要的安全公告。\n您應該訂閱它並在 MediaWiki 發佈新版的時候更新系統。", "config-subscribe-noemail": "您正嘗試不填寫電子郵件地址訂閱發佈公告郵寄清單。 \n請如果您希望訂閱郵寄清單,請提供一個有效的電子郵件地址。", + "config-pingback": "與MediaWiki開發人員分享此安裝過程的數據。", + "config-pingback-help": "如果您選擇此項設定,MediaWiki將會定期把有關本MediaWiki實例的基本數據傳送給https://www.mediawiki.org。數據包括系統類型、PHP版本、所選的資料庫後端等等。維基媒體基金會會向MediaWiki的開發人員分享這組數據,以幫助將來的開發計劃。將會傳送以下有關您系統的數據:\n
$1
", "config-almost-done": "您快要完成了!\n您現在可以跳過其餘的設定項目並且立即安裝 Wiki。", "config-optional-continue": "多問我一些問題吧。", "config-optional-skip": "我已經不耐煩了,請趕緊安裝 Wiki。", @@ -308,14 +314,16 @@ "config-install-subscribe-fail": "無法訂閱 mediawiki-announce:$1", "config-install-subscribe-notpossible": "未安裝 cURL,因此無法使用 allow_url_fopen 設定項目。", "config-install-mainpage": "正在使用預設的內容建立首頁", + "config-install-mainpage-exists": "首頁已存在,略過中", "config-install-extension-tables": "正在建立已啟動的擴充套件的資料表", "config-install-mainpage-failed": "無法插入首頁: $1", - "config-install-done": "恭喜!\n您已經成功地安裝了 MediaWiki。\n\n安裝程式已自動產生 LocalSettings.php 檔案,\n該檔案中包含了您所有的設定項目。\n\n您需要下載該檔案,並將其放置在您的 Wiki 的根目錄 (index.php 所在的目錄) 中,下載稍後會自動開始。\n\n若瀏覽器沒有提示您下載,或者您取消了下載,您可以點選下方連結重新下載:\n\n$3\n\n注意:若您現在未下載檔案,稍後結束安裝程式之後將無法下載設定檔。\n\n當您完成本步驟後,您可以 [$2 進入您的 Wiki]。", + "config-install-done": "恭喜!\n您已經成功安裝MediaWiki。\n\n安裝程式已自動產生LocalSettings.php檔案,\n該檔案中包含了您所有的設定項目。\n\n您需要下載該檔案,並將其放置在您的Wiki的根目錄(index.php所在的目錄)中,下載應已自動開始。\n\n若瀏覽器沒有提示您下載,或者您取消了下載,您可以點選下方連結重新下載:\n\n$3\n\n注意:如果您現在不下載此檔案,稍後結束安裝程式之後將無法再下載設定檔。\n\n當您完成本步驟後,您可以[$2 進入您的Wiki]。", + "config-install-done-path": "恭喜!\n您已經成功安裝MediaWiki。\n\n安裝程式已自動產生LocalSettings.php檔案,\n該檔案中包含了您所有的設定項目。\n\n您需要下載該檔案,並將其放置在$4中,下載應已自動開始。\n\n若瀏覽器沒有提示您下載,或者您取消了下載,您可以點選下方連結重新下載:\n\n$3\n\n注意:如果您現在不下載此檔案,稍後結束安裝程式之後將無法再下載設定檔。\n\n當您完成本步驟後,您可以[$2 進入您的Wiki]。", "config-download-localsettings": "下載 LocalSettings.php", "config-help": "說明", "config-help-tooltip": "點選以展開", "config-nofile": "查無檔案 \"$1\",是否已被刪除?", "config-extension-link": "您是否了解您的 Wiki 支援 [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Extensions 擴充套件]?\n\n\n您可以瀏覽 [https://www.mediawiki.org/wiki/Special:MyLanguage/Category:Extensions_by_category 擴充套件分類] 或 [https://www.mediawiki.org/wiki/Extension_Matrix 擴充套件資料表] 以取得相關的資訊。", "mainpagetext": "已安裝 MediaWiki。", - "mainpagedocfooter": "請參閱 [https://meta.wikimedia.org/wiki/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 MediaWiki 常見問答集]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki 發佈郵寄清單]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Localisation#Translation_resources MediaWiki 介面在地化]" + "mainpagedocfooter": "有關使用wiki的訊息,請參閱[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 了解如何在您的wiki上防禦破壞]" } diff --git a/includes/jobqueue/JobQueueDB.php b/includes/jobqueue/JobQueueDB.php index 0a8ae7fd51..2f5894765f 100644 --- a/includes/jobqueue/JobQueueDB.php +++ b/includes/jobqueue/JobQueueDB.php @@ -346,7 +346,7 @@ class JobQueueDB extends JobQueue { continue; // try the other direction } } else { // table *may* have >= MAX_OFFSET rows - // Bug 42614: "ORDER BY job_random" with a job_random inequality causes high CPU + // T44614: "ORDER BY job_random" with a job_random inequality causes high CPU // in MySQL if there are many rows for some reason. This uses a small OFFSET // instead of job_random for reducing excess claim retries. $row = $dbw->selectRow( 'job', self::selectFields(), // find a random job diff --git a/includes/jobqueue/JobQueueRedis.php b/includes/jobqueue/JobQueueRedis.php index 25a271ca14..c2c9d66119 100644 --- a/includes/jobqueue/JobQueueRedis.php +++ b/includes/jobqueue/JobQueueRedis.php @@ -793,9 +793,9 @@ LUA; private function getGlobalKey( $name ) { $parts = [ 'global', 'jobqueue', $name ]; foreach ( $parts as $part ) { - if ( !preg_match( '/[a-zA-Z0-9_-]+/', $part ) ) { - throw new InvalidArgumentException( "Key part characters are out of range." ); - } + if ( !preg_match( '/[a-zA-Z0-9_-]+/', $part ) ) { + throw new InvalidArgumentException( "Key part characters are out of range." ); + } } return implode( ':', $parts ); diff --git a/includes/jobqueue/JobRunner.php b/includes/jobqueue/JobRunner.php index cacccbec08..baff288e85 100644 --- a/includes/jobqueue/JobRunner.php +++ b/includes/jobqueue/JobRunner.php @@ -27,6 +27,7 @@ use Liuggio\StatsdClient\Factory\StatsdDataFactory; use Psr\Log\LoggerAwareInterface; use Psr\Log\LoggerInterface; use Wikimedia\ScopedCallback; +use Wikimedia\Rdbms\LBFactory; /** * Job queue runner utility methods diff --git a/includes/jobqueue/JobSpecification.php b/includes/jobqueue/JobSpecification.php index d636dc6516..d844795143 100644 --- a/includes/jobqueue/JobSpecification.php +++ b/includes/jobqueue/JobSpecification.php @@ -128,7 +128,7 @@ class JobSpecification implements IJobSpecification { $this->type = $type; $this->params = $params; - $this->title = $title ?: Title::makeTitle( NS_SPECIAL, 'Badtitle/' . get_class( $this ) ); + $this->title = $title ?: Title::makeTitle( NS_SPECIAL, 'Badtitle/' . static::class ); $this->opts = $opts; } diff --git a/includes/jobqueue/jobs/CategoryMembershipChangeJob.php b/includes/jobqueue/jobs/CategoryMembershipChangeJob.php index a52ff065b0..3a0063c3ed 100644 --- a/includes/jobqueue/jobs/CategoryMembershipChangeJob.php +++ b/includes/jobqueue/jobs/CategoryMembershipChangeJob.php @@ -20,6 +20,7 @@ * @file */ use MediaWiki\MediaWikiServices; +use Wikimedia\Rdbms\LBFactory; /** * Job to add recent change entries mentioning category membership changes diff --git a/includes/jobqueue/jobs/DoubleRedirectJob.php b/includes/jobqueue/jobs/DoubleRedirectJob.php index 3cd3448f54..74c446fc3c 100644 --- a/includes/jobqueue/jobs/DoubleRedirectJob.php +++ b/includes/jobqueue/jobs/DoubleRedirectJob.php @@ -137,7 +137,7 @@ class DoubleRedirectJob extends Job { wfDebug( __METHOD__ . " : skipping, already good\n" ); } - // Preserve fragment (bug 14904) + // Preserve fragment (T16904) $newTitle = Title::makeTitle( $newTitle->getNamespace(), $newTitle->getDBkey(), $currentDest->getFragment(), $newTitle->getInterwiki() ); @@ -199,7 +199,7 @@ class DoubleRedirectJob extends Job { $seenTitles[$titleText] = true; if ( $title->isExternal() ) { - // If the target is interwiki, we have to break early (bug 40352). + // If the target is interwiki, we have to break early (T42352). // Otherwise it will look up a row in the local page table // with the namespace/page of the interwiki target which can cause // unexpected results (e.g. X -> foo:Bar -> Bar -> .. ) diff --git a/includes/jobqueue/jobs/HTMLCacheUpdateJob.php b/includes/jobqueue/jobs/HTMLCacheUpdateJob.php index f09ba57b53..2d816f9f06 100644 --- a/includes/jobqueue/jobs/HTMLCacheUpdateJob.php +++ b/includes/jobqueue/jobs/HTMLCacheUpdateJob.php @@ -22,6 +22,8 @@ * @ingroup Cache */ +use MediaWiki\MediaWikiServices; + /** * Job to purge the cache for all pages that link to or use another page or file * @@ -113,7 +115,7 @@ class HTMLCacheUpdateJob extends Job { $touchTimestamp = wfTimestampNow(); $dbw = wfGetDB( DB_MASTER ); - $factory = wfGetLBFactory(); + $factory = MediaWikiServices::getInstance()->getDBLoadBalancerFactory(); $ticket = $factory->getEmptyTransactionTicket( __METHOD__ ); // Update page_touched (skipping pages already touched since the root job). // Check $wgUpdateRowsPerQuery for sanity; batch jobs are sized by that already. diff --git a/includes/jobqueue/jobs/PublishStashedFileJob.php b/includes/jobqueue/jobs/PublishStashedFileJob.php index 37e80c24ce..e89812beff 100644 --- a/includes/jobqueue/jobs/PublishStashedFileJob.php +++ b/includes/jobqueue/jobs/PublishStashedFileJob.php @@ -128,7 +128,7 @@ class PublishStashedFileJob extends Job { ); $this->setLastError( get_class( $e ) . ": " . $e->getMessage() ); // To prevent potential database referential integrity issues. - // See bug 32551. + // See T34551. MWExceptionHandler::rollbackMasterChangesAndLog( $e ); return false; diff --git a/includes/jobqueue/jobs/RecentChangesUpdateJob.php b/includes/jobqueue/jobs/RecentChangesUpdateJob.php index 0e90674a2f..5c733088ee 100644 --- a/includes/jobqueue/jobs/RecentChangesUpdateJob.php +++ b/includes/jobqueue/jobs/RecentChangesUpdateJob.php @@ -128,8 +128,10 @@ class RecentChangesUpdateJob extends Job { $dbw->setSessionOptions( [ 'connTimeout' => 900 ] ); $lockKey = wfWikiID() . '-activeusers'; - if ( !$dbw->lock( $lockKey, __METHOD__, 1 ) ) { - return; // exclusive update (avoids duplicate entries) + if ( !$dbw->lockIsFree( $lockKey, __METHOD__ ) || !$dbw->lock( $lockKey, __METHOD__, 1 ) ) { + // Exclusive update (avoids duplicate entries)… it's usually fine to just drop out here, + // if the Job is already running. + return; } $nowUnix = time(); @@ -168,15 +170,6 @@ class RecentChangesUpdateJob extends Job { $names[$row->rc_user_text] = $row->lastedittime; } - // Rotate out users that have not edited in too long (according to old data set) - $dbw->delete( 'querycachetwo', - [ - 'qcc_type' => 'activeusers', - 'qcc_value < ' . $dbw->addQuotes( $nowUnix - $days * 86400 ) // TS_UNIX - ], - __METHOD__ - ); - // Find which of the recently active users are already accounted for if ( count( $names ) ) { $res = $dbw->select( 'querycachetwo', @@ -184,9 +177,13 @@ class RecentChangesUpdateJob extends Job { [ 'qcc_type' => 'activeusers', 'qcc_namespace' => NS_USER, - 'qcc_title' => array_keys( $names ) ], + 'qcc_title' => array_keys( $names ), + 'qcc_value >= ' . $dbw->addQuotes( $nowUnix - $days * 86400 ), // TS_UNIX + ], __METHOD__ ); + // Note: In order for this to be actually consistent, we would need + // to update these rows with the new lastedittime. foreach ( $res as $row ) { unset( $names[$row->user_name] ); } @@ -224,6 +221,16 @@ class RecentChangesUpdateJob extends Job { ); $dbw->unlock( $lockKey, __METHOD__ ); + + // Rotate out users that have not edited in too long (according to old data set) + $dbw->delete( 'querycachetwo', + [ + 'qcc_type' => 'activeusers', + 'qcc_value < ' . $dbw->addQuotes( $nowUnix - $days * 86400 ) // TS_UNIX + ], + __METHOD__ + ); + }, __METHOD__ ); diff --git a/includes/jobqueue/jobs/RefreshLinksJob.php b/includes/jobqueue/jobs/RefreshLinksJob.php index 651a332d5e..f9284a57ce 100644 --- a/includes/jobqueue/jobs/RefreshLinksJob.php +++ b/includes/jobqueue/jobs/RefreshLinksJob.php @@ -29,7 +29,7 @@ use MediaWiki\MediaWikiServices; * - a) Recursive jobs to update links for backlink pages for a given title. * These jobs have (recursive:true,table:) set. * - b) Jobs to update links for a set of pages (the job title is ignored). - * These jobs have (pages:(:(,),...) set. + * These jobs have (pages:(<page ID>:(<namespace>,<title>),...) set. * - c) Jobs to update links for a single page (the job title) * These jobs need no extra fields set. * diff --git a/includes/jobqueue/utils/BacklinkJobUtils.php b/includes/jobqueue/utils/BacklinkJobUtils.php index 7f500554bd..1c12a1c9b4 100644 --- a/includes/jobqueue/utils/BacklinkJobUtils.php +++ b/includes/jobqueue/utils/BacklinkJobUtils.php @@ -33,7 +33,7 @@ * For example, if templates A and B are edited (at the same time) the queue will have: * (A base, B base) * When these jobs run, the queue will have per-title and remnant partition jobs: - * (titleX,titleY,titleZ,...,A remnant,titleM,titleN,titleO,...,B remnant) + * (titleX,titleY,titleZ,...,A remnant,titleM,titleN,titleO,...,B remnant) * * This works best when the queue is FIFO, for several reasons: * - a) Since the remnant jobs are enqueued after the leaf jobs, the slower leaf jobs have to @@ -133,7 +133,7 @@ class BacklinkJobUtils { 'table' => $params['table'], 'range' => [ 'start' => $ranges[1][0], - 'end' => $ranges[count( $ranges ) - 1][1], + 'end' => $ranges[count( $ranges ) - 1][1], 'batchSize' => $realBSize, 'subranges' => array_slice( $ranges, 1 ) ], diff --git a/includes/libs/CSSMin.php b/includes/libs/CSSMin.php index bc99672f36..b1cece8488 100644 --- a/includes/libs/CSSMin.php +++ b/includes/libs/CSSMin.php @@ -8,7 +8,7 @@ * not use this file except in compliance with the License. * You may obtain a copy of the License at * - * http://www.apache.org/licenses/LICENSE-2.0 + * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software distributed * under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS @@ -237,7 +237,7 @@ class CSSMin { // * Otherwise remap the URL to work in generated stylesheets // Guard against trailing slashes, because "some/remote/../foo.png" - // resolves to "some/remote/foo.png" on (some?) clients (bug 27052). + // resolves to "some/remote/foo.png" on (some?) clients (T29052). if ( substr( $remote, -1 ) == '/' ) { $remote = substr( $remote, 0, -1 ); } diff --git a/includes/libs/CryptHKDF.php b/includes/libs/CryptHKDF.php index 4c86757418..6b3e4a7aca 100644 --- a/includes/libs/CryptHKDF.php +++ b/includes/libs/CryptHKDF.php @@ -197,11 +197,11 @@ class CryptHKDF { * From http://eprint.iacr.org/2010/264.pdf: * * The scheme HKDF is specifed as: - * HKDF(XTS, SKM, CTXinfo, L) = K(1) || K(2) || ... || K(t) + * HKDF(XTS, SKM, CTXinfo, L) = K(1) || K(2) || ... || K(t) * where the values K(i) are defined as follows: - * PRK = HMAC(XTS, SKM) - * K(1) = HMAC(PRK, CTXinfo || 0); - * K(i+1) = HMAC(PRK, K(i) || CTXinfo || i), 1 <= i < t; + * PRK = HMAC(XTS, SKM) + * K(1) = HMAC(PRK, CTXinfo || 0); + * K(i+1) = HMAC(PRK, K(i) || CTXinfo || i), 1 <= i < t; * where t = [L/k] and the value K(t) is truncated to its first d = L mod k bits; * the counter i is non-wrapping and of a given fixed size, e.g., a single byte. * Note that the length of the HMAC output is the same as its key length and therefore diff --git a/includes/libs/HttpStatus.php b/includes/libs/HttpStatus.php index 72fc333869..27f872857c 100644 --- a/includes/libs/HttpStatus.php +++ b/includes/libs/HttpStatus.php @@ -101,6 +101,7 @@ class HttpStatus { return false; } + MediaWiki\HeaderCallback::warnIfHeadersSent(); if ( $version === null ) { $version = isset( $_SERVER['SERVER_PROTOCOL'] ) && $_SERVER['SERVER_PROTOCOL'] === 'HTTP/1.0' ? diff --git a/includes/libs/IP.php b/includes/libs/IP.php index 21203a47ce..a6aa0a3f88 100644 --- a/includes/libs/IP.php +++ b/includes/libs/IP.php @@ -675,7 +675,7 @@ class IP { * @return string|null Valid dotted quad IPv4 address or null */ public static function canonicalize( $addr ) { - // remove zone info (bug 35738) + // remove zone info (T37738) $addr = preg_replace( '/\%.*/', '', $addr ); if ( self::isValid( $addr ) ) { diff --git a/includes/libs/StatusValue.php b/includes/libs/StatusValue.php index db085da548..e860ec491f 100644 --- a/includes/libs/StatusValue.php +++ b/includes/libs/StatusValue.php @@ -85,7 +85,7 @@ class StatusValue { * defined as: * [ * 0 => object(StatusValue) # the StatusValue with error messages, only - * 1 => object(StatusValue) # The StatusValue with warning messages, only + * 1 => object(StatusValue) # The StatusValue with warning messages, only * ] * * @return StatusValue[] @@ -154,7 +154,7 @@ class StatusValue { } /** - * Change operation resuklt + * Change operation result * * @param bool $ok Whether the operation completed * @param mixed $value diff --git a/includes/libs/StringUtils.php b/includes/libs/StringUtils.php index 26f3c4ac61..cffb5a3945 100644 --- a/includes/libs/StringUtils.php +++ b/includes/libs/StringUtils.php @@ -168,6 +168,7 @@ class StringUtils { ) { $inputPos = 0; $outputPos = 0; + $contentPos = 0; $output = ''; $foundStart = false; $encStart = preg_quote( $startDelim, '!' ); diff --git a/includes/libs/eventrelayer/EventRelayer.php b/includes/libs/eventrelayer/EventRelayer.php index b0cd413699..304f6c12b8 100644 --- a/includes/libs/eventrelayer/EventRelayer.php +++ b/includes/libs/eventrelayer/EventRelayer.php @@ -65,4 +65,3 @@ abstract class EventRelayer implements LoggerAwareInterface { */ abstract protected function doNotify( $channel, array $events ); } - diff --git a/includes/libs/filebackend/FSFileBackend.php b/includes/libs/filebackend/FSFileBackend.php index 8afdce4035..4f0805bd2a 100644 --- a/includes/libs/filebackend/FSFileBackend.php +++ b/includes/libs/filebackend/FSFileBackend.php @@ -21,6 +21,7 @@ * @ingroup FileBackend * @author Aaron Schulz */ +use Wikimedia\Timestamp\ConvertibleTimestamp; /** * @brief Class for a file system (FS) based file backend. diff --git a/includes/libs/filebackend/FileBackendMultiWrite.php b/includes/libs/filebackend/FileBackendMultiWrite.php index 212e84f026..53bce33dad 100644 --- a/includes/libs/filebackend/FileBackendMultiWrite.php +++ b/includes/libs/filebackend/FileBackendMultiWrite.php @@ -167,7 +167,7 @@ class FileBackendMultiWrite extends FileBackend { // Do a consistency check to see if the backends are consistent... $syncStatus = $this->consistencyCheck( $relevantPaths ); if ( !$syncStatus->isOK() ) { - wfDebugLog( 'FileOperation', get_class( $this ) . + wfDebugLog( 'FileOperation', static::class . " failed sync check: " . FormatJson::encode( $relevantPaths ) ); // Try to resync the clone backends to the master on the spot... if ( $this->autoResync === false @@ -378,7 +378,7 @@ class FileBackendMultiWrite extends FileBackend { } if ( !$status->isOK() ) { - wfDebugLog( 'FileOperation', get_class( $this ) . + wfDebugLog( 'FileOperation', static::class . " failed to resync: " . FormatJson::encode( $paths ) ); } diff --git a/includes/libs/filebackend/FileBackendStore.php b/includes/libs/filebackend/FileBackendStore.php index a7ceab2ed5..7cb26c6c65 100644 --- a/includes/libs/filebackend/FileBackendStore.php +++ b/includes/libs/filebackend/FileBackendStore.php @@ -21,6 +21,7 @@ * @ingroup FileBackend * @author Aaron Schulz */ +use Wikimedia\Timestamp\ConvertibleTimestamp; /** * @brief Base class for all backends using particular storage medium. @@ -359,7 +360,7 @@ abstract class FileBackendStore extends FileBackend { $status->merge( $this->doConcatenate( $params ) ); $sec = microtime( true ) - $start_time; if ( !$status->isOK() ) { - $this->logger->error( get_class( $this ) . "-{$this->name}" . + $this->logger->error( static::class . "-{$this->name}" . " failed to concatenate " . count( $params['srcs'] ) . " file(s) [$sec sec]" ); } } @@ -1122,7 +1123,7 @@ abstract class FileBackendStore extends FileBackend { $subStatus->success[$i] = false; ++$subStatus->failCount; } - $this->logger->error( get_class( $this ) . "-{$this->name} " . + $this->logger->error( static::class . "-{$this->name} " . " stat failure; aborted operations: " . FormatJson::encode( $ops ) ); } diff --git a/includes/libs/filebackend/HTTPFileStreamer.php b/includes/libs/filebackend/HTTPFileStreamer.php index 800fdfad3e..a7d064b6e3 100644 --- a/includes/libs/filebackend/HTTPFileStreamer.php +++ b/includes/libs/filebackend/HTTPFileStreamer.php @@ -19,6 +19,7 @@ * * @file */ +use Wikimedia\Timestamp\ConvertibleTimestamp; /** * Functions related to the output of file content diff --git a/includes/libs/filebackend/SwiftFileBackend.php b/includes/libs/filebackend/SwiftFileBackend.php index d40e896488..c50dfd7245 100644 --- a/includes/libs/filebackend/SwiftFileBackend.php +++ b/includes/libs/filebackend/SwiftFileBackend.php @@ -1089,7 +1089,7 @@ class SwiftFileBackend extends FileBackendStore { // good } elseif ( $rcode === 404 ) { $status->fatal( 'backend-fail-stream', $params['src'] ); - // Per bug 41113, nasty things can happen if bad cache entries get + // Per T43113, nasty things can happen if bad cache entries get // stuck in cache. It's also possible that this error can come up // with simple race conditions. Clear out the stat cache to be safe. $this->clearCache( [ $params['src'] ] ); diff --git a/includes/libs/filebackend/fileop/FileOp.php b/includes/libs/filebackend/fileop/FileOp.php index fab5a3743c..79af194483 100644 --- a/includes/libs/filebackend/fileop/FileOp.php +++ b/includes/libs/filebackend/fileop/FileOp.php @@ -461,7 +461,7 @@ abstract class FileOp { $params = $this->params; $params['failedAction'] = $action; try { - $this->logger->error( get_class( $this ) . + $this->logger->error( static::class . " failed (batch #{$this->batchId}): " . FormatJson::encode( $params ) ); } catch ( Exception $e ) { // bad config? debug log error? diff --git a/includes/libs/mime/MimeAnalyzer.php b/includes/libs/mime/MimeAnalyzer.php index e42d1a95c1..6ea3c215bc 100644 --- a/includes/libs/mime/MimeAnalyzer.php +++ b/includes/libs/mime/MimeAnalyzer.php @@ -83,7 +83,7 @@ class MimeAnalyzer implements LoggerAwareInterface { * what will break? In practice this probably isn't a problem anyway -- Bryan) */ protected static $wellKnownTypes = <<<EOT -application/ogg ogx ogg ogm ogv oga spx +application/ogg ogx ogg ogm ogv oga spx opus application/pdf pdf application/vnd.oasis.opendocument.chart odc application/vnd.oasis.opendocument.chart-template otc @@ -108,7 +108,8 @@ audio/midi mid midi kar audio/mpeg mpga mpa mp2 mp3 audio/x-aiff aif aiff aifc audio/x-wav wav -audio/ogg oga spx ogg +audio/ogg oga spx ogg opus +audio/opus opus ogg oga ogg spx image/x-bmp bmp image/gif gif image/jpeg jpeg jpg jpe @@ -526,7 +527,7 @@ EOT; 'xbm', // Formats we recognize magic numbers for - 'djvu', 'ogx', 'ogg', 'ogv', 'oga', 'spx', + 'djvu', 'ogx', 'ogg', 'ogv', 'oga', 'spx', 'opus', 'mid', 'pdf', 'wmf', 'xcf', 'webm', 'mkv', 'mka', 'webp', @@ -1054,6 +1055,8 @@ EOT; return MEDIATYPE_AUDIO; } elseif ( strpos( $head, 'speex' ) !== false ) { return MEDIATYPE_AUDIO; + } elseif ( strpos( $head, 'opus' ) !== false ) { + return MEDIATYPE_AUDIO; } else { return MEDIATYPE_MULTIMEDIA; } diff --git a/includes/libs/mime/mime.info b/includes/libs/mime/mime.info index b04d3c68a2..2468f3841d 100644 --- a/includes/libs/mime/mime.info +++ b/includes/libs/mime/mime.info @@ -35,6 +35,7 @@ audio/wav audio/x-wav audio/wave [AUDIO] audio/midi audio/mid [AUDIO] audio/basic [AUDIO] audio/ogg [AUDIO] +audio/opus [AUDIO] audio/x-aiff [AUDIO] audio/x-pn-realaudio [AUDIO] audio/x-realaudio [AUDIO] @@ -94,9 +95,9 @@ application/vnd.ms-powerpoint [OFFICE] application/x-director [OFFICE] text/rtf [OFFICE] -application/vnd.openxmlformats-officedocument.wordprocessingml.document [OFFICE] +application/vnd.openxmlformats-officedocument.wordprocessingml.document [OFFICE] application/vnd.openxmlformats-officedocument.wordprocessingml.template [OFFICE] -application/vnd.ms-word.document.macroEnabled.12 [OFFICE] +application/vnd.ms-word.document.macroEnabled.12 [OFFICE] application/vnd.ms-word.template.macroEnabled.12 [OFFICE] application/vnd.openxmlformats-officedocument.presentationml.template [OFFICE] application/vnd.openxmlformats-officedocument.presentationml.slideshow [OFFICE] diff --git a/includes/libs/mime/mime.types b/includes/libs/mime/mime.types index b4f515af58..f1cd59d18f 100644 --- a/includes/libs/mime/mime.types +++ b/includes/libs/mime/mime.types @@ -72,6 +72,7 @@ audio/basic au snd audio/midi mid midi kar audio/mpeg mpga mp2 mp3 audio/ogg oga ogg spx opus +audio/opus opus oga ogg video/webm webm audio/webm webm audio/x-aiff aif aiff aifc diff --git a/includes/libs/objectcache/BagOStuff.php b/includes/libs/objectcache/BagOStuff.php index d0b68bcbd7..77c4259a0d 100644 --- a/includes/libs/objectcache/BagOStuff.php +++ b/includes/libs/objectcache/BagOStuff.php @@ -679,7 +679,7 @@ abstract class BagOStuff implements IExpiringStore, LoggerAwareInterface { protected function debug( $text ) { if ( $this->debugMode ) { $this->logger->debug( "{class} debug: $text", [ - 'class' => get_class( $this ), + 'class' => static::class, ] ); } } diff --git a/includes/libs/objectcache/RESTBagOStuff.php b/includes/libs/objectcache/RESTBagOStuff.php index ae91be51de..730eed1e30 100644 --- a/includes/libs/objectcache/RESTBagOStuff.php +++ b/includes/libs/objectcache/RESTBagOStuff.php @@ -63,9 +63,9 @@ class RESTBagOStuff extends BagOStuff { protected function doGet( $key, $flags = 0 ) { $req = [ 'method' => 'GET', - 'url' => $this->url . rawurlencode( $key ), - + 'url' => $this->url . rawurlencode( $key ), ]; + list( $rcode, $rdesc, $rhdrs, $rbody, $rerr ) = $this->client->run( $req ); if ( $rcode === 200 ) { if ( is_string( $rbody ) ) { diff --git a/includes/libs/objectcache/RedisBagOStuff.php b/includes/libs/objectcache/RedisBagOStuff.php index d852f82ea5..583ec37755 100644 --- a/includes/libs/objectcache/RedisBagOStuff.php +++ b/includes/libs/objectcache/RedisBagOStuff.php @@ -321,7 +321,7 @@ class RedisBagOStuff extends BagOStuff { */ protected function serialize( $data ) { // Serialize anything but integers so INCR/DECR work - // Do not store integer-like strings as integers to avoid type confusion (bug 60563) + // Do not store integer-like strings as integers to avoid type confusion (T62563) return is_int( $data ) ? $data : serialize( $data ); } diff --git a/includes/libs/objectcache/WANObjectCache.php b/includes/libs/objectcache/WANObjectCache.php index 171c291cf1..f0a439a21a 100644 --- a/includes/libs/objectcache/WANObjectCache.php +++ b/includes/libs/objectcache/WANObjectCache.php @@ -44,15 +44,20 @@ use Psr\Log\NullLogger; * * The simplest purge method is delete(). * - * There are two supported ways to handle broadcasted operations: + * There are three supported ways to handle broadcasted operations: * - a) Configure the 'purge' EventRelayer to point to a valid PubSub endpoint - * that has subscribed listeners on the cache servers applying the cache updates. + * that has subscribed listeners on the cache servers applying the cache updates. * - b) Ignore the 'purge' EventRelayer configuration (default is NullEventRelayer) - * and set up mcrouter as the underlying cache backend, using one of the memcached - * BagOStuff classes as 'cache'. Use OperationSelectorRoute in the mcrouter settings - * to configure 'set' and 'delete' operations to go to all DCs via AllAsyncRoute and - * configure other operations to go to the local DC via PoolRoute (for reference, - * see https://github.com/facebook/mcrouter/wiki/List-of-Route-Handles). + * and set up mcrouter as the underlying cache backend, using one of the memcached + * BagOStuff classes as 'cache'. Use OperationSelectorRoute in the mcrouter settings + * to configure 'set' and 'delete' operations to go to all DCs via AllAsyncRoute and + * configure other operations to go to the local DC via PoolRoute (for reference, + * see https://github.com/facebook/mcrouter/wiki/List-of-Route-Handles). + * - c) Ignore the 'purge' EventRelayer configuration (default is NullEventRelayer) + * and set up dynomite as cache middleware between the web servers and either + * memcached or redis. This will also broadcast all key setting operations, not just purges, + * which can be useful for cache warming. Writes are eventually consistent via the + * Dynamo replication model (see https://github.com/Netflix/dynomite). * * Broadcasted operations like delete() and touchCheckKey() are done asynchronously * in all datacenters this way, though the local one should likely be near immediate. @@ -1127,6 +1132,65 @@ class WANObjectCache implements IExpiringStore, LoggerAwareInterface { return $values; } + /** + * Locally set a key to expire soon if it is stale based on $purgeTimestamp + * + * This sets stale keys' time-to-live at HOLDOFF_TTL seconds, which both avoids + * broadcasting in mcrouter setups and also avoids races with new tombstones. + * + * @param string $key Cache key + * @param int $purgeTimestamp UNIX timestamp of purge + * @param bool &$isStale Whether the key is stale + * @return bool Success + * @since 1.28 + */ + public function reap( $key, $purgeTimestamp, &$isStale = false ) { + $minAsOf = $purgeTimestamp + self::HOLDOFF_TTL; + $wrapped = $this->cache->get( self::VALUE_KEY_PREFIX . $key ); + if ( is_array( $wrapped ) && $wrapped[self::FLD_TIME] < $minAsOf ) { + $isStale = true; + $this->logger->warning( "Reaping stale value key '$key'." ); + $ttlReap = self::HOLDOFF_TTL; // avoids races with tombstone creation + $ok = $this->cache->changeTTL( self::VALUE_KEY_PREFIX . $key, $ttlReap ); + if ( !$ok ) { + $this->logger->error( "Could not complete reap of key '$key'." ); + } + + return $ok; + } + + $isStale = false; + + return true; + } + + /** + * Locally set a "check" key to expire soon if it is stale based on $purgeTimestamp + * + * @param string $key Cache key + * @param int $purgeTimestamp UNIX timestamp of purge + * @param bool &$isStale Whether the key is stale + * @return bool Success + * @since 1.28 + */ + public function reapCheckKey( $key, $purgeTimestamp, &$isStale = false ) { + $purge = $this->parsePurgeValue( $this->cache->get( self::TIME_KEY_PREFIX . $key ) ); + if ( $purge && $purge[self::FLD_TIME] < $purgeTimestamp ) { + $isStale = true; + $this->logger->warning( "Reaping stale check key '$key'." ); + $ok = $this->cache->changeTTL( self::TIME_KEY_PREFIX . $key, 1 ); + if ( !$ok ) { + $this->logger->error( "Could not complete reap of check key '$key'." ); + } + + return $ok; + } + + $isStale = false; + + return false; + } + /** * @see BagOStuff::makeKey() * @param string ... Key component diff --git a/includes/libs/objectcache/WANObjectCacheReaper.php b/includes/libs/objectcache/WANObjectCacheReaper.php new file mode 100644 index 0000000000..956a3a9c3a --- /dev/null +++ b/includes/libs/objectcache/WANObjectCacheReaper.php @@ -0,0 +1,205 @@ +<?php +/** + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * http://www.gnu.org/copyleft/gpl.html + * + * @file + * @ingroup Cache + * @author Aaron Schulz + */ + +use Psr\Log\LoggerAwareInterface; +use Psr\Log\LoggerInterface; +use Psr\Log\NullLogger; +use Wikimedia\ScopedCallback; + +/** + * Class for scanning through chronological, log-structured data or change logs + * and locally purging cache keys related to entities that appear in this data. + * + * This is useful for repairing cache when purges are missed by using a reliable + * stream, such as Kafka or a replicated MySQL table. Purge loss between datacenters + * is expected to be more common than within them. + * + * @since 1.28 + */ +class WANObjectCacheReaper implements LoggerAwareInterface { + /** @var WANObjectCache */ + protected $cache; + /** @var BagOStuff */ + protected $store; + /** @var callable */ + protected $logChunkCallback; + /** @var callable */ + protected $keyListCallback; + /** @var LoggerInterface */ + protected $logger; + + /** @var string */ + protected $channel; + /** @var integer */ + protected $initialStartWindow; + + /** + * @param WANObjectCache $cache Cache to reap bad keys from + * @param BagOStuff $store Cache to store positions use for locking + * @param callable $logCallback Callback taking arguments: + * - The starting position as a UNIX timestamp + * - The starting unique ID used for breaking timestamp collisions or null + * - The ending position as a UNIX timestamp + * - The maximum number of results to return + * It returns a list of maps of (key: cache key, pos: UNIX timestamp, id: unique ID) + * for each key affected, with the corrosponding event timestamp/ID information. + * The events should be in ascending order, by (timestamp,id). + * @param callable $keyCallback Callback taking arguments: + * - The WANObjectCache instance + * - An object from the event log + * It should return a list of WAN cache keys. + * The callback must fully duck-type test the object, since can be any model class. + * @param array $params Additional options: + * - channel: the name of the update event stream. + * Default: WANObjectCache::DEFAULT_PURGE_CHANNEL. + * - initialStartWindow: seconds back in time to start if the position is lost. + * Default: 1 hour. + * - logger: an SPL monolog instance [optional] + */ + public function __construct( + WANObjectCache $cache, + BagOStuff $store, + callable $logCallback, + callable $keyCallback, + array $params + ) { + $this->cache = $cache; + $this->store = $store; + + $this->logChunkCallback = $logCallback; + $this->keyListCallback = $keyCallback; + if ( isset( $params['channel'] ) ) { + $this->channel = $params['channel']; + } else { + throw new UnexpectedValueException( "No channel specified." ); + } + + $this->initialStartWindow = isset( $params['initialStartWindow'] ) + ? $params['initialStartWindow'] + : 3600; + $this->logger = isset( $params['logger'] ) + ? $params['logger'] + : new NullLogger(); + } + + public function setLogger( LoggerInterface $logger ) { + $this->logger = $logger; + } + + /** + * Check and reap stale keys based on a chunk of events + * + * @param int $n Number of events + * @return int Number of keys checked + */ + final public function invoke( $n = 100 ) { + $posKey = $this->store->makeGlobalKey( 'WANCache', 'reaper', $this->channel ); + $scopeLock = $this->store->getScopedLock( "$posKey:busy", 0 ); + if ( !$scopeLock ) { + return 0; + } + + $now = time(); + $status = $this->store->get( $posKey ); + if ( !$status ) { + $status = [ 'pos' => $now - $this->initialStartWindow, 'id' => null ]; + } + + // Get events for entities who's keys tombstones/hold-off should have expired by now + $events = call_user_func_array( + $this->logChunkCallback, + [ $status['pos'], $status['id'], $now - WANObjectCache::HOLDOFF_TTL - 1, $n ] + ); + + $event = null; + $keyEvents = []; + foreach ( $events as $event ) { + $keys = call_user_func_array( + $this->keyListCallback, + [ $this->cache, $event['item'] ] + ); + foreach ( $keys as $key ) { + unset( $keyEvents[$key] ); // use only the latest per key + $keyEvents[$key] = [ + 'pos' => $event['pos'], + 'id' => $event['id'] + ]; + } + } + + $purgeCount = 0; + $lastOkEvent = null; + foreach ( $keyEvents as $key => $keyEvent ) { + if ( !$this->cache->reap( $key, $keyEvent['pos'] ) ) { + break; + } + ++$purgeCount; + $lastOkEvent = $event; + } + + if ( $lastOkEvent ) { + $ok = $this->store->merge( + $posKey, + function ( $bag, $key, $curValue ) use ( $lastOkEvent ) { + if ( !$curValue ) { + // Use new position + } else { + $curCoord = [ $curValue['pos'], $curValue['id'] ]; + $newCoord = [ $lastOkEvent['pos'], $lastOkEvent['id'] ]; + if ( $newCoord < $curCoord ) { + // Keep prior position instead of rolling it back + return $curValue; + } + } + + return [ + 'pos' => $lastOkEvent['pos'], + 'id' => $lastOkEvent['id'], + 'ctime' => $curValue ? $curValue['ctime'] : date( 'c' ) + ]; + }, + IExpiringStore::TTL_INDEFINITE + ); + + $pos = $lastOkEvent['pos']; + $id = $lastOkEvent['id']; + if ( $ok ) { + $this->logger->info( "Updated cache reap position ($pos, $id)." ); + } else { + $this->logger->error( "Could not update cache reap position ($pos, $id)." ); + } + } + + ScopedCallback::consume( $scopeLock ); + + return $purgeCount; + } + + /** + * @return array|bool Returns (pos, id) map or false if not set + */ + public function getState() { + $posKey = $this->store->makeGlobalKey( 'WANCache', 'reaper', $this->channel ); + + return $this->store->get( $posKey ); + } +} diff --git a/includes/libs/objectcache/WinCacheBagOStuff.php b/includes/libs/objectcache/WinCacheBagOStuff.php index d84c9591e3..98f44d11b5 100644 --- a/includes/libs/objectcache/WinCacheBagOStuff.php +++ b/includes/libs/objectcache/WinCacheBagOStuff.php @@ -41,7 +41,7 @@ class WinCacheBagOStuff extends BagOStuff { $result = wincache_ucache_set( $key, serialize( $value ), $expire ); /* wincache_ucache_set returns an empty array on success if $value - was an array, bool otherwise */ + * was an array, bool otherwise */ return ( is_array( $result ) && $result === [] ) || $result; } diff --git a/includes/libs/rdbms/ChronologyProtector.php b/includes/libs/rdbms/ChronologyProtector.php index 88af1dbdf8..8b1aabe3cd 100644 --- a/includes/libs/rdbms/ChronologyProtector.php +++ b/includes/libs/rdbms/ChronologyProtector.php @@ -20,9 +20,14 @@ * @file * @ingroup Database */ + +namespace Wikimedia\Rdbms; + use Psr\Log\LoggerAwareInterface; use Psr\Log\LoggerInterface; +use Psr\Log\NullLogger; use Wikimedia\WaitConditionLoop; +use BagOStuff; /** * Class for ensuring a consistent ordering of events as seen by the user, despite replication. @@ -70,9 +75,9 @@ class ChronologyProtector implements LoggerAwareInterface { public function __construct( BagOStuff $store, array $client, $posTime = null ) { $this->store = $store; $this->clientId = md5( $client['ip'] . "\n" . $client['agent'] ); - $this->key = $store->makeGlobalKey( __CLASS__, $this->clientId ); + $this->key = $store->makeGlobalKey( __CLASS__, $this->clientId, 'v1' ); $this->waitForPosTime = $posTime; - $this->logger = new \Psr\Log\NullLogger(); + $this->logger = new NullLogger(); } public function setLogger( LoggerInterface $logger ) { @@ -114,7 +119,10 @@ class ChronologyProtector implements LoggerAwareInterface { $this->initPositions(); $masterName = $lb->getServerName( $lb->getWriterIndex() ); - if ( !empty( $this->startupPositions[$masterName] ) ) { + if ( + isset( $this->startupPositions[$masterName] ) && + $this->startupPositions[$masterName] instanceof DBMasterPos + ) { $pos = $this->startupPositions[$masterName]; $this->logger->info( __METHOD__ . ": LB for '$masterName' set to pos $pos\n" ); $lb->waitFor( $pos ); @@ -293,8 +301,9 @@ class ChronologyProtector implements LoggerAwareInterface { $min = null; foreach ( $data['positions'] as $pos ) { - /** @var DBMasterPos $pos */ - $min = $min ? min( $pos->asOfTime(), $min ) : $pos->asOfTime(); + if ( $pos instanceof DBMasterPos ) { + $min = $min ? min( $pos->asOfTime(), $min ) : $pos->asOfTime(); + } } return $min; @@ -313,8 +322,10 @@ class ChronologyProtector implements LoggerAwareInterface { $curPositions = $curValue['positions']; // Use the newest positions for each DB master foreach ( $shutdownPositions as $db => $pos ) { - if ( !isset( $curPositions[$db] ) - || $pos->asOfTime() > $curPositions[$db]->asOfTime() + if ( + !isset( $curPositions[$db] ) || + !( $curPositions[$db] instanceof DBMasterPos ) || + $pos->asOfTime() > $curPositions[$db]->asOfTime() ) { $curPositions[$db] = $pos; } diff --git a/includes/libs/rdbms/TransactionProfiler.php b/includes/libs/rdbms/TransactionProfiler.php index bf5e299865..5d3534ffaa 100644 --- a/includes/libs/rdbms/TransactionProfiler.php +++ b/includes/libs/rdbms/TransactionProfiler.php @@ -22,9 +22,12 @@ * @author Aaron Schulz */ +namespace Wikimedia\Rdbms; + use Psr\Log\LoggerInterface; use Psr\Log\LoggerAwareInterface; use Psr\Log\NullLogger; +use RuntimeException; /** * Helper class that detects high-contention DB queries via profiling calls diff --git a/includes/libs/rdbms/connectionmanager/ConnectionManager.php b/includes/libs/rdbms/connectionmanager/ConnectionManager.php index 4f72f77afd..fc00965ae4 100644 --- a/includes/libs/rdbms/connectionmanager/ConnectionManager.php +++ b/includes/libs/rdbms/connectionmanager/ConnectionManager.php @@ -6,7 +6,6 @@ use Database; use DBConnRef; use IDatabase; use InvalidArgumentException; -use LoadBalancer; /** * Database connection manager. diff --git a/includes/libs/rdbms/database/DBConnRef.php b/includes/libs/rdbms/database/DBConnRef.php index b268b9f28c..fc3ebe024a 100644 --- a/includes/libs/rdbms/database/DBConnRef.php +++ b/includes/libs/rdbms/database/DBConnRef.php @@ -1,4 +1,9 @@ <?php + +use Wikimedia\Rdbms\DatabaseDomain; +use Wikimedia\Rdbms\ILoadBalancer; +use Wikimedia\Rdbms\DBMasterPos; + /** * Helper class to handle automatically marking connections as reusable (via RAII pattern) * as well handling deferring the actual network connection until the handle is used diff --git a/includes/libs/rdbms/database/Database.php b/includes/libs/rdbms/database/Database.php index 69cf1ac356..e807bc84ad 100644 --- a/includes/libs/rdbms/database/Database.php +++ b/includes/libs/rdbms/database/Database.php @@ -26,6 +26,13 @@ use Psr\Log\LoggerAwareInterface; use Psr\Log\LoggerInterface; use Wikimedia\ScopedCallback; +use Wikimedia\Rdbms\TransactionProfiler; +use Wikimedia\Rdbms\LikeMatch; +use Wikimedia\Rdbms\DatabaseDomain; +use Wikimedia\Rdbms\ResultWrapper; +use Wikimedia\Rdbms\DBMasterPos; +use Wikimedia\Rdbms\Blob; +use Wikimedia\Timestamp\ConvertibleTimestamp; /** * Relational database abstraction object @@ -841,7 +848,7 @@ abstract class Database implements IDatabase, IMaintainableDatabase, LoggerAware } // Add trace comment to the begin of the sql string, right after the operator. - // Or, for one-word queries (like "BEGIN" or COMMIT") add it to the end (bug 42598) + // Or, for one-word queries (like "BEGIN" or COMMIT") add it to the end (T44598) $commentedSql = preg_replace( '/\s|$/', " /* $fname {$this->agent} */ ", $sql, 1 ); # Start implicit transactions that wrap the request if DBO_TRX is enabled @@ -1020,8 +1027,8 @@ abstract class Database implements IDatabase, IMaintainableDatabase, LoggerAware private function handleSessionLoss() { $this->mTrxLevel = 0; - $this->mTrxIdleCallbacks = []; // bug 65263 - $this->mTrxPreCommitCallbacks = []; // bug 65263 + $this->mTrxIdleCallbacks = []; // T67263 + $this->mTrxPreCommitCallbacks = []; // T67263 $this->mSessionTempTables = []; $this->mNamedLocksHeld = []; try { @@ -1136,12 +1143,6 @@ abstract class Database implements IDatabase, IMaintainableDatabase, LoggerAware $preLimitTail .= $this->makeOrderBy( $options ); - // if (isset($options['LIMIT'])) { - // $tailOpts .= $this->limitResult('', $options['LIMIT'], - // isset($options['OFFSET']) ? $options['OFFSET'] - // : false); - // } - if ( isset( $noKeyOptions['FOR UPDATE'] ) ) { $postLimitTail .= ' FOR UPDATE'; } @@ -2313,7 +2314,7 @@ abstract class Database implements IDatabase, IMaintainableDatabase, LoggerAware $selectOptions ); if ( is_array( $srcTable ) ) { - $srcTable = implode( ',', array_map( [ &$this, 'tableName' ], $srcTable ) ); + $srcTable = implode( ',', array_map( [ $this, 'tableName' ], $srcTable ) ); } else { $srcTable = $this->tableName( $srcTable ); } @@ -3411,7 +3412,7 @@ abstract class Database implements IDatabase, IMaintainableDatabase, LoggerAware */ public function __clone() { $this->connLogger->warning( - "Cloning " . get_class( $this ) . " is not recomended; forking connection:\n" . + "Cloning " . static::class . " is not recomended; forking connection:\n" . ( new RuntimeException() )->getTraceAsString() ); @@ -3462,4 +3463,4 @@ abstract class Database implements IDatabase, IMaintainableDatabase, LoggerAware } } -class_alias( 'Database', 'DatabaseBase' ); +class_alias( Database::class, 'DatabaseBase' ); diff --git a/includes/libs/rdbms/database/DatabaseDomain.php b/includes/libs/rdbms/database/DatabaseDomain.php index a3ae6f10a1..ef6600b4fc 100644 --- a/includes/libs/rdbms/database/DatabaseDomain.php +++ b/includes/libs/rdbms/database/DatabaseDomain.php @@ -18,6 +18,9 @@ * @file * @ingroup Database */ +namespace Wikimedia\Rdbms; + +use InvalidArgumentException; /** * Class to handle database/prefix specification for IDatabase domains diff --git a/includes/libs/rdbms/database/DatabaseMssql.php b/includes/libs/rdbms/database/DatabaseMssql.php new file mode 100644 index 0000000000..75ddc9d514 --- /dev/null +++ b/includes/libs/rdbms/database/DatabaseMssql.php @@ -0,0 +1,1362 @@ +<?php +/** + * This is the MS SQL Server Native database abstraction layer. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * http://www.gnu.org/copyleft/gpl.html + * + * @file + * @ingroup Database + * @author Joel Penner <a-joelpe at microsoft dot com> + * @author Chris Pucci <a-cpucci at microsoft dot com> + * @author Ryan Biesemeyer <v-ryanbi at microsoft dot com> + * @author Ryan Schmidt <skizzerz at gmail dot com> + */ +use Wikimedia\Rdbms\Blob; +use Wikimedia\Rdbms\MssqlBlob; +use Wikimedia\Rdbms\MssqlField; +use Wikimedia\Rdbms\ResultWrapper; +use Wikimedia\Rdbms\MssqlResultWrapper; + +/** + * @ingroup Database + */ +class DatabaseMssql extends Database { + protected $mPort; + protected $mUseWindowsAuth = false; + + protected $mInsertId = null; + protected $mLastResult = null; + protected $mAffectedRows = null; + protected $mSubqueryId = 0; + protected $mScrollableCursor = true; + protected $mPrepareStatements = true; + protected $mBinaryColumnCache = null; + protected $mBitColumnCache = null; + protected $mIgnoreDupKeyErrors = false; + protected $mIgnoreErrors = []; + + public function implicitGroupby() { + return false; + } + + public function implicitOrderby() { + return false; + } + + public function unionSupportsOrderAndLimit() { + return false; + } + + public function __construct( array $params ) { + $this->mPort = $params['port']; + $this->mUseWindowsAuth = $params['UseWindowsAuth']; + + parent::__construct( $params ); + } + + /** + * Usually aborts on failure + * @param string $server + * @param string $user + * @param string $password + * @param string $dbName + * @throws DBConnectionError + * @return bool|resource|null + */ + public function open( $server, $user, $password, $dbName ) { + # Test for driver support, to avoid suppressed fatal error + if ( !function_exists( 'sqlsrv_connect' ) ) { + throw new DBConnectionError( + $this, + "Microsoft SQL Server Native (sqlsrv) functions missing. + You can download the driver from: http://go.microsoft.com/fwlink/?LinkId=123470\n" + ); + } + + # e.g. the class is being loaded + if ( !strlen( $user ) ) { + return null; + } + + $this->close(); + $this->mServer = $server; + $this->mUser = $user; + $this->mPassword = $password; + $this->mDBname = $dbName; + + $connectionInfo = []; + + if ( $dbName ) { + $connectionInfo['Database'] = $dbName; + } + + // Decide which auth scenerio to use + // if we are using Windows auth, then don't add credentials to $connectionInfo + if ( !$this->mUseWindowsAuth ) { + $connectionInfo['UID'] = $user; + $connectionInfo['PWD'] = $password; + } + + MediaWiki\suppressWarnings(); + $this->mConn = sqlsrv_connect( $server, $connectionInfo ); + MediaWiki\restoreWarnings(); + + if ( $this->mConn === false ) { + throw new DBConnectionError( $this, $this->lastError() ); + } + + $this->mOpened = true; + + return $this->mConn; + } + + /** + * Closes a database connection, if it is open + * Returns success, true if already closed + * @return bool + */ + protected function closeConnection() { + return sqlsrv_close( $this->mConn ); + } + + /** + * @param bool|MssqlResultWrapper|resource $result + * @return bool|MssqlResultWrapper + */ + protected function resultObject( $result ) { + if ( !$result ) { + return false; + } elseif ( $result instanceof MssqlResultWrapper ) { + return $result; + } elseif ( $result === true ) { + // Successful write query + return $result; + } else { + return new MssqlResultWrapper( $this, $result ); + } + } + + /** + * @param string $sql + * @return bool|MssqlResultWrapper|resource + * @throws DBUnexpectedError + */ + protected function doQuery( $sql ) { + // several extensions seem to think that all databases support limits + // via LIMIT N after the WHERE clause, but MSSQL uses SELECT TOP N, + // so to catch any of those extensions we'll do a quick check for a + // LIMIT clause and pass $sql through $this->LimitToTopN() which parses + // the LIMIT clause and passes the result to $this->limitResult(); + if ( preg_match( '/\bLIMIT\s*/i', $sql ) ) { + // massage LIMIT -> TopN + $sql = $this->LimitToTopN( $sql ); + } + + // MSSQL doesn't have EXTRACT(epoch FROM XXX) + if ( preg_match( '#\bEXTRACT\s*?\(\s*?EPOCH\s+FROM\b#i', $sql, $matches ) ) { + // This is same as UNIX_TIMESTAMP, we need to calc # of seconds from 1970 + $sql = str_replace( $matches[0], "DATEDIFF(s,CONVERT(datetime,'1/1/1970'),", $sql ); + } + + // perform query + + // SQLSRV_CURSOR_STATIC is slower than SQLSRV_CURSOR_CLIENT_BUFFERED (one of the two is + // needed if we want to be able to seek around the result set), however CLIENT_BUFFERED + // has a bug in the sqlsrv driver where wchar_t types (such as nvarchar) that are empty + // strings make php throw a fatal error "Severe error translating Unicode" + if ( $this->mScrollableCursor ) { + $scrollArr = [ 'Scrollable' => SQLSRV_CURSOR_STATIC ]; + } else { + $scrollArr = []; + } + + if ( $this->mPrepareStatements ) { + // we do prepare + execute so we can get its field metadata for later usage if desired + $stmt = sqlsrv_prepare( $this->mConn, $sql, [], $scrollArr ); + $success = sqlsrv_execute( $stmt ); + } else { + $stmt = sqlsrv_query( $this->mConn, $sql, [], $scrollArr ); + $success = (bool)$stmt; + } + + // Make a copy to ensure what we add below does not get reflected in future queries + $ignoreErrors = $this->mIgnoreErrors; + + if ( $this->mIgnoreDupKeyErrors ) { + // ignore duplicate key errors + // this emulates INSERT IGNORE in MySQL + $ignoreErrors[] = '2601'; // duplicate key error caused by unique index + $ignoreErrors[] = '2627'; // duplicate key error caused by primary key + $ignoreErrors[] = '3621'; // generic "the statement has been terminated" error + } + + if ( $success === false ) { + $errors = sqlsrv_errors(); + $success = true; + + foreach ( $errors as $err ) { + if ( !in_array( $err['code'], $ignoreErrors ) ) { + $success = false; + break; + } + } + + if ( $success === false ) { + return false; + } + } + // remember number of rows affected + $this->mAffectedRows = sqlsrv_rows_affected( $stmt ); + + return $stmt; + } + + public function freeResult( $res ) { + if ( $res instanceof ResultWrapper ) { + $res = $res->result; + } + + sqlsrv_free_stmt( $res ); + } + + /** + * @param MssqlResultWrapper $res + * @return stdClass + */ + public function fetchObject( $res ) { + // $res is expected to be an instance of MssqlResultWrapper here + return $res->fetchObject(); + } + + /** + * @param MssqlResultWrapper $res + * @return array + */ + public function fetchRow( $res ) { + return $res->fetchRow(); + } + + /** + * @param mixed $res + * @return int + */ + public function numRows( $res ) { + if ( $res instanceof ResultWrapper ) { + $res = $res->result; + } + + $ret = sqlsrv_num_rows( $res ); + + if ( $ret === false ) { + // we cannot get an amount of rows from this cursor type + // has_rows returns bool true/false if the result has rows + $ret = (int)sqlsrv_has_rows( $res ); + } + + return $ret; + } + + /** + * @param mixed $res + * @return int + */ + public function numFields( $res ) { + if ( $res instanceof ResultWrapper ) { + $res = $res->result; + } + + return sqlsrv_num_fields( $res ); + } + + /** + * @param mixed $res + * @param int $n + * @return int + */ + public function fieldName( $res, $n ) { + if ( $res instanceof ResultWrapper ) { + $res = $res->result; + } + + return sqlsrv_field_metadata( $res )[$n]['Name']; + } + + /** + * This must be called after nextSequenceVal + * @return int|null + */ + public function insertId() { + return $this->mInsertId; + } + + /** + * @param MssqlResultWrapper $res + * @param int $row + * @return bool + */ + public function dataSeek( $res, $row ) { + return $res->seek( $row ); + } + + /** + * @return string + */ + public function lastError() { + $strRet = ''; + $retErrors = sqlsrv_errors( SQLSRV_ERR_ALL ); + if ( $retErrors != null ) { + foreach ( $retErrors as $arrError ) { + $strRet .= $this->formatError( $arrError ) . "\n"; + } + } else { + $strRet = "No errors found"; + } + + return $strRet; + } + + /** + * @param array $err + * @return string + */ + private function formatError( $err ) { + return '[SQLSTATE ' . + $err['SQLSTATE'] . '][Error Code ' . $err['code'] . ']' . $err['message']; + } + + /** + * @return string|int + */ + public function lastErrno() { + $err = sqlsrv_errors( SQLSRV_ERR_ALL ); + if ( $err !== null && isset( $err[0] ) ) { + return $err[0]['code']; + } else { + return 0; + } + } + + /** + * @return int + */ + public function affectedRows() { + return $this->mAffectedRows; + } + + /** + * SELECT wrapper + * + * @param mixed $table Array or string, table name(s) (prefix auto-added) + * @param mixed $vars Array or string, field name(s) to be retrieved + * @param mixed $conds Array or string, condition(s) for WHERE + * @param string $fname Calling function name (use __METHOD__) for logs/profiling + * @param array $options Associative array of options (e.g. + * [ 'GROUP BY' => 'page_title' ]), see Database::makeSelectOptions + * code for list of supported stuff + * @param array $join_conds Associative array of table join conditions + * (optional) (e.g. [ 'page' => [ 'LEFT JOIN','page_latest=rev_id' ] ] + * @return mixed Database result resource (feed to Database::fetchObject + * or whatever), or false on failure + * @throws DBQueryError + * @throws DBUnexpectedError + * @throws Exception + */ + public function select( $table, $vars, $conds = '', $fname = __METHOD__, + $options = [], $join_conds = [] + ) { + $sql = $this->selectSQLText( $table, $vars, $conds, $fname, $options, $join_conds ); + if ( isset( $options['EXPLAIN'] ) ) { + try { + $this->mScrollableCursor = false; + $this->mPrepareStatements = false; + $this->query( "SET SHOWPLAN_ALL ON" ); + $ret = $this->query( $sql, $fname ); + $this->query( "SET SHOWPLAN_ALL OFF" ); + } catch ( DBQueryError $dqe ) { + if ( isset( $options['FOR COUNT'] ) ) { + // likely don't have privs for SHOWPLAN, so run a select count instead + $this->query( "SET SHOWPLAN_ALL OFF" ); + unset( $options['EXPLAIN'] ); + $ret = $this->select( + $table, + 'COUNT(*) AS EstimateRows', + $conds, + $fname, + $options, + $join_conds + ); + } else { + // someone actually wanted the query plan instead of an est row count + // let them know of the error + $this->mScrollableCursor = true; + $this->mPrepareStatements = true; + throw $dqe; + } + } + $this->mScrollableCursor = true; + $this->mPrepareStatements = true; + return $ret; + } + return $this->query( $sql, $fname ); + } + + /** + * SELECT wrapper + * + * @param mixed $table Array or string, table name(s) (prefix auto-added) + * @param mixed $vars Array or string, field name(s) to be retrieved + * @param mixed $conds Array or string, condition(s) for WHERE + * @param string $fname Calling function name (use __METHOD__) for logs/profiling + * @param array $options Associative array of options (e.g. [ 'GROUP BY' => 'page_title' ]), + * see Database::makeSelectOptions code for list of supported stuff + * @param array $join_conds Associative array of table join conditions (optional) + * (e.g. [ 'page' => [ 'LEFT JOIN','page_latest=rev_id' ] ] + * @return string The SQL text + */ + public function selectSQLText( $table, $vars, $conds = '', $fname = __METHOD__, + $options = [], $join_conds = [] + ) { + if ( isset( $options['EXPLAIN'] ) ) { + unset( $options['EXPLAIN'] ); + } + + $sql = parent::selectSQLText( $table, $vars, $conds, $fname, $options, $join_conds ); + + // try to rewrite aggregations of bit columns (currently MAX and MIN) + if ( strpos( $sql, 'MAX(' ) !== false || strpos( $sql, 'MIN(' ) !== false ) { + $bitColumns = []; + if ( is_array( $table ) ) { + foreach ( $table as $t ) { + $bitColumns += $this->getBitColumns( $this->tableName( $t ) ); + } + } else { + $bitColumns = $this->getBitColumns( $this->tableName( $table ) ); + } + + foreach ( $bitColumns as $col => $info ) { + $replace = [ + "MAX({$col})" => "MAX(CAST({$col} AS tinyint))", + "MIN({$col})" => "MIN(CAST({$col} AS tinyint))", + ]; + $sql = str_replace( array_keys( $replace ), array_values( $replace ), $sql ); + } + } + + return $sql; + } + + public function deleteJoin( $delTable, $joinTable, $delVar, $joinVar, $conds, + $fname = __METHOD__ + ) { + $this->mScrollableCursor = false; + try { + parent::deleteJoin( $delTable, $joinTable, $delVar, $joinVar, $conds, $fname ); + } catch ( Exception $e ) { + $this->mScrollableCursor = true; + throw $e; + } + $this->mScrollableCursor = true; + } + + public function delete( $table, $conds, $fname = __METHOD__ ) { + $this->mScrollableCursor = false; + try { + parent::delete( $table, $conds, $fname ); + } catch ( Exception $e ) { + $this->mScrollableCursor = true; + throw $e; + } + $this->mScrollableCursor = true; + } + + /** + * Estimate rows in dataset + * Returns estimated count, based on SHOWPLAN_ALL output + * This is not necessarily an accurate estimate, so use sparingly + * Returns -1 if count cannot be found + * Takes same arguments as Database::select() + * @param string $table + * @param string $vars + * @param string $conds + * @param string $fname + * @param array $options + * @return int + */ + public function estimateRowCount( $table, $vars = '*', $conds = '', + $fname = __METHOD__, $options = [] + ) { + // http://msdn2.microsoft.com/en-us/library/aa259203.aspx + $options['EXPLAIN'] = true; + $options['FOR COUNT'] = true; + $res = $this->select( $table, $vars, $conds, $fname, $options ); + + $rows = -1; + if ( $res ) { + $row = $this->fetchRow( $res ); + + if ( isset( $row['EstimateRows'] ) ) { + $rows = (int)$row['EstimateRows']; + } + } + + return $rows; + } + + /** + * Returns information about an index + * If errors are explicitly ignored, returns NULL on failure + * @param string $table + * @param string $index + * @param string $fname + * @return array|bool|null + */ + public function indexInfo( $table, $index, $fname = __METHOD__ ) { + # This does not return the same info as MYSQL would, but that's OK + # because MediaWiki never uses the returned value except to check for + # the existence of indexes. + $sql = "sp_helpindex '" . $this->tableName( $table ) . "'"; + $res = $this->query( $sql, $fname ); + + if ( !$res ) { + return null; + } + + $result = []; + foreach ( $res as $row ) { + if ( $row->index_name == $index ) { + $row->Non_unique = !stristr( $row->index_description, "unique" ); + $cols = explode( ", ", $row->index_keys ); + foreach ( $cols as $col ) { + $row->Column_name = trim( $col ); + $result[] = clone $row; + } + } elseif ( $index == 'PRIMARY' && stristr( $row->index_description, 'PRIMARY' ) ) { + $row->Non_unique = 0; + $cols = explode( ", ", $row->index_keys ); + foreach ( $cols as $col ) { + $row->Column_name = trim( $col ); + $result[] = clone $row; + } + } + } + + return empty( $result ) ? false : $result; + } + + /** + * INSERT wrapper, inserts an array into a table + * + * $arrToInsert may be a single associative array, or an array of these with numeric keys, for + * multi-row insert. + * + * Usually aborts on failure + * If errors are explicitly ignored, returns success + * @param string $table + * @param array $arrToInsert + * @param string $fname + * @param array $options + * @return bool + * @throws Exception + */ + public function insert( $table, $arrToInsert, $fname = __METHOD__, $options = [] ) { + # No rows to insert, easy just return now + if ( !count( $arrToInsert ) ) { + return true; + } + + if ( !is_array( $options ) ) { + $options = [ $options ]; + } + + $table = $this->tableName( $table ); + + if ( !( isset( $arrToInsert[0] ) && is_array( $arrToInsert[0] ) ) ) { // Not multi row + $arrToInsert = [ 0 => $arrToInsert ]; // make everything multi row compatible + } + + // We know the table we're inserting into, get its identity column + $identity = null; + // strip matching square brackets and the db/schema from table name + $tableRawArr = explode( '.', preg_replace( '#\[([^\]]*)\]#', '$1', $table ) ); + $tableRaw = array_pop( $tableRawArr ); + $res = $this->doQuery( + "SELECT NAME AS idColumn FROM SYS.IDENTITY_COLUMNS " . + "WHERE OBJECT_NAME(OBJECT_ID)='{$tableRaw}'" + ); + if ( $res && sqlsrv_has_rows( $res ) ) { + // There is an identity for this table. + $identityArr = sqlsrv_fetch_array( $res, SQLSRV_FETCH_ASSOC ); + $identity = array_pop( $identityArr ); + } + sqlsrv_free_stmt( $res ); + + // Determine binary/varbinary fields so we can encode data as a hex string like 0xABCDEF + $binaryColumns = $this->getBinaryColumns( $table ); + + // INSERT IGNORE is not supported by SQL Server + // remove IGNORE from options list and set ignore flag to true + if ( in_array( 'IGNORE', $options ) ) { + $options = array_diff( $options, [ 'IGNORE' ] ); + $this->mIgnoreDupKeyErrors = true; + } + + $ret = null; + foreach ( $arrToInsert as $a ) { + // start out with empty identity column, this is so we can return + // it as a result of the INSERT logic + $sqlPre = ''; + $sqlPost = ''; + $identityClause = ''; + + // if we have an identity column + if ( $identity ) { + // iterate through + foreach ( $a as $k => $v ) { + if ( $k == $identity ) { + if ( !is_null( $v ) ) { + // there is a value being passed to us, + // we need to turn on and off inserted identity + $sqlPre = "SET IDENTITY_INSERT $table ON;"; + $sqlPost = ";SET IDENTITY_INSERT $table OFF;"; + } else { + // we can't insert NULL into an identity column, + // so remove the column from the insert. + unset( $a[$k] ); + } + } + } + + // we want to output an identity column as result + $identityClause = "OUTPUT INSERTED.$identity "; + } + + $keys = array_keys( $a ); + + // Build the actual query + $sql = $sqlPre . 'INSERT ' . implode( ' ', $options ) . + " INTO $table (" . implode( ',', $keys ) . ") $identityClause VALUES ("; + + $first = true; + foreach ( $a as $key => $value ) { + if ( isset( $binaryColumns[$key] ) ) { + $value = new MssqlBlob( $value ); + } + if ( $first ) { + $first = false; + } else { + $sql .= ','; + } + if ( is_null( $value ) ) { + $sql .= 'null'; + } elseif ( is_array( $value ) || is_object( $value ) ) { + if ( is_object( $value ) && $value instanceof Blob ) { + $sql .= $this->addQuotes( $value ); + } else { + $sql .= $this->addQuotes( serialize( $value ) ); + } + } else { + $sql .= $this->addQuotes( $value ); + } + } + $sql .= ')' . $sqlPost; + + // Run the query + $this->mScrollableCursor = false; + try { + $ret = $this->query( $sql ); + } catch ( Exception $e ) { + $this->mScrollableCursor = true; + $this->mIgnoreDupKeyErrors = false; + throw $e; + } + $this->mScrollableCursor = true; + + if ( $ret instanceof ResultWrapper && !is_null( $identity ) ) { + // Then we want to get the identity column value we were assigned and save it off + $row = $ret->fetchObject(); + if ( is_object( $row ) ) { + $this->mInsertId = $row->$identity; + // It seems that mAffectedRows is -1 sometimes when OUTPUT INSERTED.identity is + // used if we got an identity back, we know for sure a row was affected, so + // adjust that here + if ( $this->mAffectedRows == -1 ) { + $this->mAffectedRows = 1; + } + } + } + } + + $this->mIgnoreDupKeyErrors = false; + + return $ret; + } + + /** + * INSERT SELECT wrapper + * $varMap must be an associative array of the form [ 'dest1' => 'source1', ... ] + * Source items may be literals rather than field names, but strings should + * be quoted with Database::addQuotes(). + * @param string $destTable + * @param array|string $srcTable May be an array of tables. + * @param array $varMap + * @param array $conds May be "*" to copy the whole table. + * @param string $fname + * @param array $insertOptions + * @param array $selectOptions + * @return null|ResultWrapper + * @throws Exception + */ + public function nativeInsertSelect( $destTable, $srcTable, $varMap, $conds, $fname = __METHOD__, + $insertOptions = [], $selectOptions = [] + ) { + $this->mScrollableCursor = false; + try { + $ret = parent::nativeInsertSelect( + $destTable, + $srcTable, + $varMap, + $conds, + $fname, + $insertOptions, + $selectOptions + ); + } catch ( Exception $e ) { + $this->mScrollableCursor = true; + throw $e; + } + $this->mScrollableCursor = true; + + return $ret; + } + + /** + * UPDATE wrapper. Takes a condition array and a SET array. + * + * @param string $table Name of the table to UPDATE. This will be passed through + * Database::tableName(). + * + * @param array $values An array of values to SET. For each array element, + * the key gives the field name, and the value gives the data + * to set that field to. The data will be quoted by + * Database::addQuotes(). + * + * @param array $conds An array of conditions (WHERE). See + * Database::select() for the details of the format of + * condition arrays. Use '*' to update all rows. + * + * @param string $fname The function name of the caller (from __METHOD__), + * for logging and profiling. + * + * @param array $options An array of UPDATE options, can be: + * - IGNORE: Ignore unique key conflicts + * - LOW_PRIORITY: MySQL-specific, see MySQL manual. + * @return bool + * @throws DBUnexpectedError + * @throws Exception + */ + function update( $table, $values, $conds, $fname = __METHOD__, $options = [] ) { + $table = $this->tableName( $table ); + $binaryColumns = $this->getBinaryColumns( $table ); + + $opts = $this->makeUpdateOptions( $options ); + $sql = "UPDATE $opts $table SET " . $this->makeList( $values, LIST_SET, $binaryColumns ); + + if ( $conds !== [] && $conds !== '*' ) { + $sql .= " WHERE " . $this->makeList( $conds, LIST_AND, $binaryColumns ); + } + + $this->mScrollableCursor = false; + try { + $this->query( $sql ); + } catch ( Exception $e ) { + $this->mScrollableCursor = true; + throw $e; + } + $this->mScrollableCursor = true; + return true; + } + + /** + * Makes an encoded list of strings from an array + * @param array $a Containing the data + * @param int $mode Constant + * - LIST_COMMA: comma separated, no field names + * - LIST_AND: ANDed WHERE clause (without the WHERE). See + * the documentation for $conds in Database::select(). + * - LIST_OR: ORed WHERE clause (without the WHERE) + * - LIST_SET: comma separated with field names, like a SET clause + * - LIST_NAMES: comma separated field names + * @param array $binaryColumns Contains a list of column names that are binary types + * This is a custom parameter only present for MS SQL. + * + * @throws DBUnexpectedError + * @return string + */ + public function makeList( $a, $mode = LIST_COMMA, $binaryColumns = [] ) { + if ( !is_array( $a ) ) { + throw new DBUnexpectedError( $this, __METHOD__ . ' called with incorrect parameters' ); + } + + if ( $mode != LIST_NAMES ) { + // In MS SQL, values need to be specially encoded when they are + // inserted into binary fields. Perform this necessary encoding + // for the specified set of columns. + foreach ( array_keys( $a ) as $field ) { + if ( !isset( $binaryColumns[$field] ) ) { + continue; + } + + if ( is_array( $a[$field] ) ) { + foreach ( $a[$field] as &$v ) { + $v = new MssqlBlob( $v ); + } + unset( $v ); + } else { + $a[$field] = new MssqlBlob( $a[$field] ); + } + } + } + + return parent::makeList( $a, $mode ); + } + + /** + * @param string $table + * @param string $field + * @return int Returns the size of a text field, or -1 for "unlimited" + */ + public function textFieldSize( $table, $field ) { + $table = $this->tableName( $table ); + $sql = "SELECT CHARACTER_MAXIMUM_LENGTH,DATA_TYPE FROM INFORMATION_SCHEMA.Columns + WHERE TABLE_NAME = '$table' AND COLUMN_NAME = '$field'"; + $res = $this->query( $sql ); + $row = $this->fetchRow( $res ); + $size = -1; + if ( strtolower( $row['DATA_TYPE'] ) != 'text' ) { + $size = $row['CHARACTER_MAXIMUM_LENGTH']; + } + + return $size; + } + + /** + * Construct a LIMIT query with optional offset + * This is used for query pages + * + * @param string $sql SQL query we will append the limit too + * @param int $limit The SQL limit + * @param bool|int $offset The SQL offset (default false) + * @return array|string + * @throws DBUnexpectedError + */ + public function limitResult( $sql, $limit, $offset = false ) { + if ( $offset === false || $offset == 0 ) { + if ( strpos( $sql, "SELECT" ) === false ) { + return "TOP {$limit} " . $sql; + } else { + return preg_replace( '/\bSELECT(\s+DISTINCT)?\b/Dsi', + 'SELECT$1 TOP ' . $limit, $sql, 1 ); + } + } else { + // This one is fun, we need to pull out the select list as well as any ORDER BY clause + $select = $orderby = []; + $s1 = preg_match( '#SELECT\s+(.+?)\s+FROM#Dis', $sql, $select ); + $s2 = preg_match( '#(ORDER BY\s+.+?)(\s*FOR XML .*)?$#Dis', $sql, $orderby ); + $postOrder = ''; + $first = $offset + 1; + $last = $offset + $limit; + $sub1 = 'sub_' . $this->mSubqueryId; + $sub2 = 'sub_' . ( $this->mSubqueryId + 1 ); + $this->mSubqueryId += 2; + if ( !$s1 ) { + // wat + throw new DBUnexpectedError( $this, "Attempting to LIMIT a non-SELECT query\n" ); + } + if ( !$s2 ) { + // no ORDER BY + $overOrder = 'ORDER BY (SELECT 1)'; + } else { + if ( !isset( $orderby[2] ) || !$orderby[2] ) { + // don't need to strip it out if we're using a FOR XML clause + $sql = str_replace( $orderby[1], '', $sql ); + } + $overOrder = $orderby[1]; + $postOrder = ' ' . $overOrder; + } + $sql = "SELECT {$select[1]} + FROM ( + SELECT ROW_NUMBER() OVER({$overOrder}) AS rowNumber, * + FROM ({$sql}) {$sub1} + ) {$sub2} + WHERE rowNumber BETWEEN {$first} AND {$last}{$postOrder}"; + + return $sql; + } + } + + /** + * If there is a limit clause, parse it, strip it, and pass the remaining + * SQL through limitResult() with the appropriate parameters. Not the + * prettiest solution, but better than building a whole new parser. This + * exists becase there are still too many extensions that don't use dynamic + * sql generation. + * + * @param string $sql + * @return array|mixed|string + */ + public function LimitToTopN( $sql ) { + // Matches: LIMIT {[offset,] row_count | row_count OFFSET offset} + $pattern = '/\bLIMIT\s+((([0-9]+)\s*,\s*)?([0-9]+)(\s+OFFSET\s+([0-9]+))?)/i'; + if ( preg_match( $pattern, $sql, $matches ) ) { + $row_count = $matches[4]; + $offset = $matches[3] ?: $matches[6] ?: false; + + // strip the matching LIMIT clause out + $sql = str_replace( $matches[0], '', $sql ); + + return $this->limitResult( $sql, $row_count, $offset ); + } + + return $sql; + } + + /** + * @return string Wikitext of a link to the server software's web site + */ + public function getSoftwareLink() { + return "[{{int:version-db-mssql-url}} MS SQL Server]"; + } + + /** + * @return string Version information from the database + */ + public function getServerVersion() { + $server_info = sqlsrv_server_info( $this->mConn ); + $version = 'Error'; + if ( isset( $server_info['SQLServerVersion'] ) ) { + $version = $server_info['SQLServerVersion']; + } + + return $version; + } + + /** + * @param string $table + * @param string $fname + * @return bool + */ + public function tableExists( $table, $fname = __METHOD__ ) { + list( $db, $schema, $table ) = $this->tableName( $table, 'split' ); + + if ( $db !== false ) { + // remote database + $this->queryLogger->error( "Attempting to call tableExists on a remote table" ); + return false; + } + + if ( $schema === false ) { + $schema = $this->mSchema; + } + + $res = $this->query( "SELECT 1 FROM INFORMATION_SCHEMA.TABLES + WHERE TABLE_TYPE = 'BASE TABLE' + AND TABLE_SCHEMA = '$schema' AND TABLE_NAME = '$table'" ); + + if ( $res->numRows() ) { + return true; + } else { + return false; + } + } + + /** + * Query whether a given column exists in the mediawiki schema + * @param string $table + * @param string $field + * @param string $fname + * @return bool + */ + public function fieldExists( $table, $field, $fname = __METHOD__ ) { + list( $db, $schema, $table ) = $this->tableName( $table, 'split' ); + + if ( $db !== false ) { + // remote database + $this->queryLogger->error( "Attempting to call fieldExists on a remote table" ); + return false; + } + + $res = $this->query( "SELECT 1 FROM INFORMATION_SCHEMA.COLUMNS + WHERE TABLE_SCHEMA = '$schema' AND TABLE_NAME = '$table' AND COLUMN_NAME = '$field'" ); + + if ( $res->numRows() ) { + return true; + } else { + return false; + } + } + + public function fieldInfo( $table, $field ) { + list( $db, $schema, $table ) = $this->tableName( $table, 'split' ); + + if ( $db !== false ) { + // remote database + $this->queryLogger->error( "Attempting to call fieldInfo on a remote table" ); + return false; + } + + $res = $this->query( "SELECT * FROM INFORMATION_SCHEMA.COLUMNS + WHERE TABLE_SCHEMA = '$schema' AND TABLE_NAME = '$table' AND COLUMN_NAME = '$field'" ); + + $meta = $res->fetchRow(); + if ( $meta ) { + return new MssqlField( $meta ); + } + + return false; + } + + /** + * Begin a transaction, committing any previously open transaction + * @param string $fname + */ + protected function doBegin( $fname = __METHOD__ ) { + sqlsrv_begin_transaction( $this->mConn ); + $this->mTrxLevel = 1; + } + + /** + * End a transaction + * @param string $fname + */ + protected function doCommit( $fname = __METHOD__ ) { + sqlsrv_commit( $this->mConn ); + $this->mTrxLevel = 0; + } + + /** + * Rollback a transaction. + * No-op on non-transactional databases. + * @param string $fname + */ + protected function doRollback( $fname = __METHOD__ ) { + sqlsrv_rollback( $this->mConn ); + $this->mTrxLevel = 0; + } + + /** + * @param string $s + * @return string + */ + public function strencode( $s ) { + // Should not be called by us + + return str_replace( "'", "''", $s ); + } + + /** + * @param string|int|null|bool|Blob $s + * @return string|int + */ + public function addQuotes( $s ) { + if ( $s instanceof MssqlBlob ) { + return $s->fetch(); + } elseif ( $s instanceof Blob ) { + // this shouldn't really ever be called, but it's here if needed + // (and will quite possibly make the SQL error out) + $blob = new MssqlBlob( $s->fetch() ); + return $blob->fetch(); + } else { + if ( is_bool( $s ) ) { + $s = $s ? 1 : 0; + } + return parent::addQuotes( $s ); + } + } + + /** + * @param string $s + * @return string + */ + public function addIdentifierQuotes( $s ) { + // http://msdn.microsoft.com/en-us/library/aa223962.aspx + return '[' . $s . ']'; + } + + /** + * @param string $name + * @return bool + */ + public function isQuotedIdentifier( $name ) { + return strlen( $name ) && $name[0] == '[' && substr( $name, -1, 1 ) == ']'; + } + + /** + * MS SQL supports more pattern operators than other databases (ex: [,],^) + * + * @param string $s + * @return string + */ + protected function escapeLikeInternal( $s ) { + return addcslashes( $s, '\%_[]^' ); + } + + /** + * MS SQL requires specifying the escape character used in a LIKE query + * or using Square brackets to surround characters that are to be escaped + * https://msdn.microsoft.com/en-us/library/ms179859.aspx + * Here we take the Specify-Escape-Character approach since it's less + * invasive, renders a query that is closer to other DB's and better at + * handling square bracket escaping + * + * @return string Fully built LIKE statement + */ + public function buildLike() { + $params = func_get_args(); + if ( count( $params ) > 0 && is_array( $params[0] ) ) { + $params = $params[0]; + } + + return parent::buildLike( $params ) . " ESCAPE '\' "; + } + + /** + * @param string $db + * @return bool + */ + public function selectDB( $db ) { + try { + $this->mDBname = $db; + $this->query( "USE $db" ); + return true; + } catch ( Exception $e ) { + return false; + } + } + + /** + * @param array $options An associative array of options to be turned into + * an SQL query, valid keys are listed in the function. + * @return array + */ + public function makeSelectOptions( $options ) { + $tailOpts = ''; + $startOpts = ''; + + $noKeyOptions = []; + foreach ( $options as $key => $option ) { + if ( is_numeric( $key ) ) { + $noKeyOptions[$option] = true; + } + } + + $tailOpts .= $this->makeGroupByWithHaving( $options ); + + $tailOpts .= $this->makeOrderBy( $options ); + + if ( isset( $noKeyOptions['DISTINCT'] ) || isset( $noKeyOptions['DISTINCTROW'] ) ) { + $startOpts .= 'DISTINCT'; + } + + if ( isset( $noKeyOptions['FOR XML'] ) ) { + // used in group concat field emulation + $tailOpts .= " FOR XML PATH('')"; + } + + // we want this to be compatible with the output of parent::makeSelectOptions() + return [ $startOpts, '', $tailOpts, '', '' ]; + } + + public function getType() { + return 'mssql'; + } + + /** + * @param array $stringList + * @return string + */ + public function buildConcat( $stringList ) { + return implode( ' + ', $stringList ); + } + + /** + * Build a GROUP_CONCAT or equivalent statement for a query. + * MS SQL doesn't have GROUP_CONCAT so we emulate it with other stuff (and boy is it nasty) + * + * This is useful for combining a field for several rows into a single string. + * NULL values will not appear in the output, duplicated values will appear, + * and the resulting delimiter-separated values have no defined sort order. + * Code using the results may need to use the PHP unique() or sort() methods. + * + * @param string $delim Glue to bind the results together + * @param string|array $table Table name + * @param string $field Field name + * @param string|array $conds Conditions + * @param string|array $join_conds Join conditions + * @return string SQL text + * @since 1.23 + */ + public function buildGroupConcatField( $delim, $table, $field, $conds = '', + $join_conds = [] + ) { + $gcsq = 'gcsq_' . $this->mSubqueryId; + $this->mSubqueryId++; + + $delimLen = strlen( $delim ); + $fld = "{$field} + {$this->addQuotes( $delim )}"; + $sql = "(SELECT LEFT({$field}, LEN({$field}) - {$delimLen}) FROM (" + . $this->selectSQLText( $table, $fld, $conds, null, [ 'FOR XML' ], $join_conds ) + . ") {$gcsq} ({$field}))"; + + return $sql; + } + + /** + * Returns an associative array for fields that are of type varbinary, binary, or image + * $table can be either a raw table name or passed through tableName() first + * @param string $table + * @return array + */ + private function getBinaryColumns( $table ) { + $tableRawArr = explode( '.', preg_replace( '#\[([^\]]*)\]#', '$1', $table ) ); + $tableRaw = array_pop( $tableRawArr ); + + if ( $this->mBinaryColumnCache === null ) { + $this->populateColumnCaches(); + } + + return isset( $this->mBinaryColumnCache[$tableRaw] ) + ? $this->mBinaryColumnCache[$tableRaw] + : []; + } + + /** + * @param string $table + * @return array + */ + private function getBitColumns( $table ) { + $tableRawArr = explode( '.', preg_replace( '#\[([^\]]*)\]#', '$1', $table ) ); + $tableRaw = array_pop( $tableRawArr ); + + if ( $this->mBitColumnCache === null ) { + $this->populateColumnCaches(); + } + + return isset( $this->mBitColumnCache[$tableRaw] ) + ? $this->mBitColumnCache[$tableRaw] + : []; + } + + private function populateColumnCaches() { + $res = $this->select( 'INFORMATION_SCHEMA.COLUMNS', '*', + [ + 'TABLE_CATALOG' => $this->mDBname, + 'TABLE_SCHEMA' => $this->mSchema, + 'DATA_TYPE' => [ 'varbinary', 'binary', 'image', 'bit' ] + ] ); + + $this->mBinaryColumnCache = []; + $this->mBitColumnCache = []; + foreach ( $res as $row ) { + if ( $row->DATA_TYPE == 'bit' ) { + $this->mBitColumnCache[$row->TABLE_NAME][$row->COLUMN_NAME] = $row; + } else { + $this->mBinaryColumnCache[$row->TABLE_NAME][$row->COLUMN_NAME] = $row; + } + } + } + + /** + * @param string $name + * @param string $format + * @return string + */ + function tableName( $name, $format = 'quoted' ) { + # Replace reserved words with better ones + switch ( $name ) { + case 'user': + return $this->realTableName( 'mwuser', $format ); + default: + return $this->realTableName( $name, $format ); + } + } + + /** + * call this instead of tableName() in the updater when renaming tables + * @param string $name + * @param string $format One of quoted, raw, or split + * @return string + */ + function realTableName( $name, $format = 'quoted' ) { + $table = parent::tableName( $name, $format ); + if ( $format == 'split' ) { + // Used internally, we want the schema split off from the table name and returned + // as a list with 3 elements (database, schema, table) + $table = explode( '.', $table ); + while ( count( $table ) < 3 ) { + array_unshift( $table, false ); + } + } + return $table; + } + + /** + * Delete a table + * @param string $tableName + * @param string $fName + * @return bool|ResultWrapper + * @since 1.18 + */ + public function dropTable( $tableName, $fName = __METHOD__ ) { + if ( !$this->tableExists( $tableName, $fName ) ) { + return false; + } + + // parent function incorrectly appends CASCADE, which we don't want + $sql = "DROP TABLE " . $this->tableName( $tableName ); + + return $this->query( $sql, $fName ); + } + + /** + * Called in the installer and updater. + * Probably doesn't need to be called anywhere else in the codebase. + * @param bool|null $value + * @return bool|null + */ + public function prepareStatements( $value = null ) { + $old = $this->mPrepareStatements; + if ( $value !== null ) { + $this->mPrepareStatements = $value; + } + + return $old; + } + + /** + * Called in the installer and updater. + * Probably doesn't need to be called anywhere else in the codebase. + * @param bool|null $value + * @return bool|null + */ + public function scrollableCursor( $value = null ) { + $old = $this->mScrollableCursor; + if ( $value !== null ) { + $this->mScrollableCursor = $value; + } + + return $old; + } +} diff --git a/includes/libs/rdbms/database/DatabaseMysqlBase.php b/includes/libs/rdbms/database/DatabaseMysqlBase.php index 5d680e21f0..e90002797c 100644 --- a/includes/libs/rdbms/database/DatabaseMysqlBase.php +++ b/includes/libs/rdbms/database/DatabaseMysqlBase.php @@ -20,6 +20,10 @@ * @file * @ingroup Database */ +use Wikimedia\Rdbms\DBMasterPos; +use Wikimedia\Rdbms\MySQLMasterPos; +use Wikimedia\Rdbms\MySQLField; +use Wikimedia\Rdbms\ResultWrapper; /** * Database abstraction object for MySQL. @@ -817,7 +821,8 @@ abstract class DatabaseMysqlBase extends Database { $row = $res ? $this->fetchRow( $res ) : false; if ( !$row ) { - throw new DBExpectedError( $this, "Failed to query MASTER_POS_WAIT()" ); + throw new DBExpectedError( $this, + "MASTER_POS_WAIT() or MASTER_GTID_WAIT() failed: {$this->lastError()}" ); } // Result can be NULL (error), -1 (timeout), or 0+ per the MySQL manual @@ -1331,4 +1336,3 @@ abstract class DatabaseMysqlBase extends Database { return in_array( $name, $this->listViews( $prefix ) ); } } - diff --git a/includes/libs/rdbms/database/DatabaseMysqli.php b/includes/libs/rdbms/database/DatabaseMysqli.php index 2f27ff9736..7a2200a4da 100644 --- a/includes/libs/rdbms/database/DatabaseMysqli.php +++ b/includes/libs/rdbms/database/DatabaseMysqli.php @@ -21,6 +21,8 @@ * @ingroup Database */ +use Wikimedia\Rdbms\ResultWrapper; + /** * Database abstraction object for PHP extension mysqli. * diff --git a/includes/libs/rdbms/database/DatabasePostgres.php b/includes/libs/rdbms/database/DatabasePostgres.php index 42113b0851..af9716d451 100644 --- a/includes/libs/rdbms/database/DatabasePostgres.php +++ b/includes/libs/rdbms/database/DatabasePostgres.php @@ -20,7 +20,12 @@ * @file * @ingroup Database */ +use Wikimedia\Timestamp\ConvertibleTimestamp; use Wikimedia\WaitConditionLoop; +use Wikimedia\Rdbms\Blob; +use Wikimedia\Rdbms\PostgresBlob; +use Wikimedia\Rdbms\PostgresField; +use Wikimedia\Rdbms\ResultWrapper; /** * @ingroup Database @@ -698,7 +703,7 @@ __INDEXATTR__; list( $startOpts, $useIndex, $tailOpts, $ignoreIndex ) = $this->makeSelectOptions( $selectOptions ); if ( is_array( $srcTable ) ) { - $srcTable = implode( ',', array_map( [ &$this, 'tableName' ], $srcTable ) ); + $srcTable = implode( ',', array_map( [ $this, 'tableName' ], $srcTable ) ); } else { $srcTable = $this->tableName( $srcTable ); } @@ -982,7 +987,7 @@ __INDEXATTR__; /** * Prepend our schema (e.g. 'mediawiki') in front * of the search path - * Fixes bug 15816 + * Fixes T17816 */ $search_path = $this->getSearchPath(); array_unshift( $search_path, @@ -1023,7 +1028,7 @@ __INDEXATTR__; // Normal client $this->numericVersion = $versionInfo['server']; } else { - // Bug 16937: broken pgsql extension from PHP<5.3 + // T18937: broken pgsql extension from PHP<5.3 $this->numericVersion = pg_parameter_status( $conn, 'server_version' ); } } @@ -1076,8 +1081,8 @@ __INDEXATTR__; $q = <<<SQL SELECT 1 FROM pg_class, pg_namespace, pg_trigger WHERE relnamespace=pg_namespace.oid AND relkind='r' - AND tgrelid=pg_class.oid - AND nspname=%s AND relname=%s AND tgname=%s + AND tgrelid=pg_class.oid + AND nspname=%s AND relname=%s AND tgname=%s SQL; $res = $this->query( sprintf( @@ -1249,15 +1254,9 @@ SQL; $preLimitTail .= $this->makeOrderBy( $options ); - // if ( isset( $options['LIMIT'] ) ) { - // $tailOpts .= $this->limitResult( '', $options['LIMIT'], - // isset( $options['OFFSET'] ) ? $options['OFFSET'] - // : false ); - // } - if ( isset( $options['FOR UPDATE'] ) ) { $postLimitTail .= ' FOR UPDATE OF ' . - implode( ', ', array_map( [ &$this, 'tableName' ], $options['FOR UPDATE'] ) ); + implode( ', ', array_map( [ $this, 'tableName' ], $options['FOR UPDATE'] ) ); } elseif ( isset( $noKeyOptions['FOR UPDATE'] ) ) { $postLimitTail .= ' FOR UPDATE'; } diff --git a/includes/libs/rdbms/database/DatabaseSqlite.php b/includes/libs/rdbms/database/DatabaseSqlite.php index a4b2df01ad..090ce8eeae 100644 --- a/includes/libs/rdbms/database/DatabaseSqlite.php +++ b/includes/libs/rdbms/database/DatabaseSqlite.php @@ -21,6 +21,9 @@ * @file * @ingroup Database */ +use Wikimedia\Rdbms\Blob; +use Wikimedia\Rdbms\SQLiteField; +use Wikimedia\Rdbms\ResultWrapper; /** * @ingroup Database diff --git a/includes/libs/rdbms/database/IDatabase.php b/includes/libs/rdbms/database/IDatabase.php index c6055dbdbd..6bc870b425 100644 --- a/includes/libs/rdbms/database/IDatabase.php +++ b/includes/libs/rdbms/database/IDatabase.php @@ -24,6 +24,11 @@ * @ingroup Database */ use Wikimedia\ScopedCallback; +use Wikimedia\Rdbms\Blob; +use Wikimedia\Rdbms\LikeMatch; +use Wikimedia\Rdbms\DBMasterPos; +use Wikimedia\Rdbms\Field; +use Wikimedia\Rdbms\IResultWrapper; /** * Basic database interface for live and lazy-loaded relation database handles @@ -359,7 +364,7 @@ interface IDatabase { * member variables. * If no more rows are available, false is returned. * - * @param ResultWrapper|stdClass $res Object as returned from IDatabase::query(), etc. + * @param IResultWrapper|stdClass $res Object as returned from IDatabase::query(), etc. * @return stdClass|bool * @throws DBUnexpectedError Thrown if the database returns an error */ @@ -370,7 +375,7 @@ interface IDatabase { * form. Fields are retrieved with $row['fieldname']. * If no more rows are available, false is returned. * - * @param ResultWrapper $res Result object as returned from IDatabase::query(), etc. + * @param IResultWrapper $res Result object as returned from IDatabase::query(), etc. * @return array|bool * @throws DBUnexpectedError Thrown if the database returns an error */ @@ -513,7 +518,7 @@ interface IDatabase { * @param bool $tempIgnore Whether to avoid throwing an exception on errors... * maybe best to catch the exception instead? * @throws DBError - * @return bool|ResultWrapper True for a successful write query, ResultWrapper object + * @return bool|IResultWrapper True for a successful write query, IResultWrapper object * for a successful read query, or false on failure if $tempIgnore set */ public function query( $sql, $fname = __METHOD__, $tempIgnore = false ); @@ -727,7 +732,7 @@ interface IDatabase { * * [ 'page' => [ 'LEFT JOIN', 'page_latest=rev_id' ] ] * - * @return ResultWrapper|bool If the query returned no rows, a ResultWrapper + * @return IResultWrapper|bool If the query returned no rows, a IResultWrapper * with no rows in it will be returned. If there was a query error, a * DBQueryError exception will be thrown, except if the "ignore errors" * option was set, in which case false will be returned. @@ -905,6 +910,8 @@ interface IDatabase { * @param array $values An array of values to SET. For each array element, * the key gives the field name, and the value gives the data to set * that field to. The data will be quoted by IDatabase::addQuotes(). + * Values with integer keys form unquoted SET statements, which can be used for + * things like "field = field + 1" or similar computed values. * @param array $conds An array of conditions (WHERE). See * IDatabase::select() for the details of the format of condition * arrays. Use '*' to update all rows. @@ -1148,6 +1155,8 @@ interface IDatabase { * @param array $set An array of values to SET. For each array element, the * key gives the field name, and the value gives the data to set that * field to. The data will be quoted by IDatabase::addQuotes(). + * Values with integer keys form unquoted SET statements, which can be used for + * things like "field = field + 1" or similar computed values. * @param string $fname Calling function name (use __METHOD__) for logs/profiling * @throws Exception * @return bool @@ -1188,7 +1197,7 @@ interface IDatabase { * for the format. Use $conds == "*" to delete all rows * @param string $fname Name of the calling function * @throws DBUnexpectedError - * @return bool|ResultWrapper + * @return bool|IResultWrapper */ public function delete( $table, $conds, $fname = __METHOD__ ); @@ -1216,7 +1225,7 @@ interface IDatabase { * @param array $selectOptions Options for the SELECT part of the query, see * IDatabase::select() for details. * - * @return ResultWrapper + * @return IResultWrapper */ public function insertSelect( $destTable, $srcTable, $varMap, $conds, $fname = __METHOD__, diff --git a/includes/libs/rdbms/database/position/DBMasterPos.php b/includes/libs/rdbms/database/position/DBMasterPos.php index eda0ff3256..2f79ea9a20 100644 --- a/includes/libs/rdbms/database/position/DBMasterPos.php +++ b/includes/libs/rdbms/database/position/DBMasterPos.php @@ -1,4 +1,7 @@ <?php + +namespace Wikimedia\Rdbms; + /** * An object representing a master or replica DB position in a replicated setup. * diff --git a/includes/libs/rdbms/database/position/MySQLMasterPos.php b/includes/libs/rdbms/database/position/MySQLMasterPos.php index 7b49ce9609..06776fe8fd 100644 --- a/includes/libs/rdbms/database/position/MySQLMasterPos.php +++ b/includes/libs/rdbms/database/position/MySQLMasterPos.php @@ -1,4 +1,9 @@ <?php + +namespace Wikimedia\Rdbms; + +use InvalidArgumentException; + /** * DBMasterPos class for MySQL/MariaDB * diff --git a/includes/libs/rdbms/database/resultwrapper/FakeResultWrapper.php b/includes/libs/rdbms/database/resultwrapper/FakeResultWrapper.php index 1a046cf696..fd7af110e5 100644 --- a/includes/libs/rdbms/database/resultwrapper/FakeResultWrapper.php +++ b/includes/libs/rdbms/database/resultwrapper/FakeResultWrapper.php @@ -1,4 +1,9 @@ <?php + +namespace Wikimedia\Rdbms; + +use stdClass; + /** * Overloads the relevant methods of the real ResultsWrapper so it * doesn't go anywhere near an actual database. @@ -56,3 +61,6 @@ class FakeResultWrapper extends ResultWrapper { return $this->fetchObject(); } } + +class_alias( FakeResultWrapper::class, 'FakeResultWrapper' ); + diff --git a/includes/libs/rdbms/database/resultwrapper/IResultWrapper.php b/includes/libs/rdbms/database/resultwrapper/IResultWrapper.php new file mode 100644 index 0000000000..dc89a2dc04 --- /dev/null +++ b/includes/libs/rdbms/database/resultwrapper/IResultWrapper.php @@ -0,0 +1,82 @@ +<?php + +namespace Wikimedia\Rdbms; + +use Iterator; +use DBUnexpectedError; +use stdClass; + +/** + * Result wrapper for grabbing data queried from an IDatabase object + * + * Note that using the Iterator methods in combination with the non-Iterator + * DB result iteration functions may cause rows to be skipped or repeated. + * + * By default, this will use the iteration methods of the IDatabase handle if provided. + * Subclasses can override methods to make it solely work on the result resource instead. + * If no database is provided, and the subclass does not override the DB iteration methods, + * then a RuntimeException will be thrown when iteration is attempted. + * + * The result resource field should not be accessed from non-Database related classes. + * It is database class specific and is stored here to associate iterators with queries. + * + * @ingroup Database + */ +interface IResultWrapper extends Iterator { + /** + * Get the number of rows in a result object + * + * @return int + */ + public function numRows(); + + /** + * Fetch the next row from the given result object, in object form. Fields can be retrieved with + * $row->fieldname, with fields acting like member variables. If no more rows are available, + * false is returned. + * + * @return stdClass|bool + * @throws DBUnexpectedError Thrown if the database returns an error + */ + public function fetchObject(); + + /** + * Fetch the next row from the given result object, in associative array form. Fields are + * retrieved with $row['fieldname']. If no more rows are available, false is returned. + * + * @return array|bool + * @throws DBUnexpectedError Thrown if the database returns an error + */ + public function fetchRow(); + + /** + * Change the position of the cursor in a result object. + * See mysql_data_seek() + * + * @param int $row + */ + public function seek( $row ); + + /** + * Free a result object + * + * This either saves memory in PHP (buffered queries) or on the server (unbuffered queries). + * In general, queries are not large enough in result sets for this to be worth calling. + */ + public function free(); + + /** + * @return stdClass|array|bool + */ + public function current(); + + /** + * @return int + */ + public function key(); + + /** + * @return stdClass + */ + function next(); +} diff --git a/includes/libs/rdbms/database/resultwrapper/MssqlResultWrapper.php b/includes/libs/rdbms/database/resultwrapper/MssqlResultWrapper.php index b591f4f389..4e28397455 100644 --- a/includes/libs/rdbms/database/resultwrapper/MssqlResultWrapper.php +++ b/includes/libs/rdbms/database/resultwrapper/MssqlResultWrapper.php @@ -1,4 +1,9 @@ <?php + +namespace Wikimedia\Rdbms; + +use stdClass; + class MssqlResultWrapper extends ResultWrapper { /** @var integer|null */ private $mSeekTo = null; diff --git a/includes/libs/rdbms/database/resultwrapper/ResultWrapper.php b/includes/libs/rdbms/database/resultwrapper/ResultWrapper.php index 53109c82da..d658c96b3a 100644 --- a/includes/libs/rdbms/database/resultwrapper/ResultWrapper.php +++ b/includes/libs/rdbms/database/resultwrapper/ResultWrapper.php @@ -1,4 +1,11 @@ <?php + +namespace Wikimedia\Rdbms; + +use IDatabase; +use stdClass; +use RuntimeException; + /** * Result wrapper for grabbing data queried from an IDatabase object * @@ -15,7 +22,7 @@ * * @ingroup Database */ -class ResultWrapper implements Iterator { +class ResultWrapper implements IResultWrapper { /** @var resource|array|null Optional underlying result handle for subclass usage */ public $result; @@ -45,54 +52,22 @@ class ResultWrapper implements Iterator { } } - /** - * Get the number of rows in a result object - * - * @return int - */ public function numRows() { return $this->getDB()->numRows( $this ); } - /** - * Fetch the next row from the given result object, in object form. Fields can be retrieved with - * $row->fieldname, with fields acting like member variables. If no more rows are available, - * false is returned. - * - * @return stdClass|bool - * @throws DBUnexpectedError Thrown if the database returns an error - */ public function fetchObject() { return $this->getDB()->fetchObject( $this ); } - /** - * Fetch the next row from the given result object, in associative array form. Fields are - * retrieved with $row['fieldname']. If no more rows are available, false is returned. - * - * @return array|bool - * @throws DBUnexpectedError Thrown if the database returns an error - */ public function fetchRow() { return $this->getDB()->fetchRow( $this ); } - /** - * Change the position of the cursor in a result object. - * See mysql_data_seek() - * - * @param int $row - */ public function seek( $row ) { $this->getDB()->dataSeek( $this, $row ); } - /** - * Free a result object - * - * This either saves memory in PHP (buffered queries) or on the server (unbuffered queries). - * In general, queries are not large enough in result sets for this to be worth calling. - */ public function free() { if ( $this->db ) { $this->db->freeResult( $this ); @@ -107,7 +82,7 @@ class ResultWrapper implements Iterator { */ private function getDB() { if ( !$this->db ) { - throw new RuntimeException( get_class( $this ) . ' needs a DB handle for iteration.' ); + throw new RuntimeException( static::class . ' needs a DB handle for iteration.' ); } return $this->db; @@ -121,9 +96,6 @@ class ResultWrapper implements Iterator { $this->currentRow = null; } - /** - * @return stdClass|array|bool - */ function current() { if ( is_null( $this->currentRow ) ) { $this->next(); @@ -132,16 +104,10 @@ class ResultWrapper implements Iterator { return $this->currentRow; } - /** - * @return int - */ function key() { return $this->pos; } - /** - * @return stdClass - */ function next() { $this->pos++; $this->currentRow = $this->fetchObject(); @@ -153,3 +119,5 @@ class ResultWrapper implements Iterator { return $this->current() !== false; } } + +class_alias( ResultWrapper::class, 'ResultWrapper' ); diff --git a/includes/libs/rdbms/defines.php b/includes/libs/rdbms/defines.php index 692a704b89..c3367e7849 100644 --- a/includes/libs/rdbms/defines.php +++ b/includes/libs/rdbms/defines.php @@ -1,5 +1,7 @@ <?php +use Wikimedia\Rdbms\ILoadBalancer; + /**@{ * Database related constants */ diff --git a/includes/libs/rdbms/encasing/Blob.php b/includes/libs/rdbms/encasing/Blob.php index bd90330577..db5b7e5113 100644 --- a/includes/libs/rdbms/encasing/Blob.php +++ b/includes/libs/rdbms/encasing/Blob.php @@ -1,19 +1,21 @@ <?php -/** - * Utility class - * @ingroup Database - * - * This allows us to distinguish a blob from a normal string and an array of strings - */ -class Blob { + +namespace Wikimedia\Rdbms; + +class Blob implements IBlob { /** @var string */ protected $mData; - function __construct( $data ) { + /** + * @param $data string + */ + public function __construct( $data ) { $this->mData = $data; } - function fetch() { + public function fetch() { return $this->mData; } } + +class_alias( Blob::class, 'Blob' ); diff --git a/includes/libs/rdbms/encasing/IBlob.php b/includes/libs/rdbms/encasing/IBlob.php new file mode 100644 index 0000000000..b1d7aae438 --- /dev/null +++ b/includes/libs/rdbms/encasing/IBlob.php @@ -0,0 +1,14 @@ +<?php + +namespace Wikimedia\Rdbms; + +/** + * Wrapper allowing us to distinguish a blob from a normal string and an array of strings + * @ingroup Database + */ +interface IBlob { + /** + * @return string + */ + public function fetch(); +} diff --git a/includes/libs/rdbms/encasing/LikeMatch.php b/includes/libs/rdbms/encasing/LikeMatch.php index b0b3c87984..98812a5a28 100644 --- a/includes/libs/rdbms/encasing/LikeMatch.php +++ b/includes/libs/rdbms/encasing/LikeMatch.php @@ -1,4 +1,7 @@ <?php + +namespace Wikimedia\Rdbms; + /** * Used by Database::buildLike() to represent characters that have special * meaning in SQL LIKE clauses and thus need no escaping. Don't instantiate it diff --git a/includes/libs/rdbms/encasing/MssqlBlob.php b/includes/libs/rdbms/encasing/MssqlBlob.php index 35be65c26e..aacdf402f4 100644 --- a/includes/libs/rdbms/encasing/MssqlBlob.php +++ b/includes/libs/rdbms/encasing/MssqlBlob.php @@ -1,5 +1,13 @@ <?php + +namespace Wikimedia\Rdbms; + class MssqlBlob extends Blob { + /** @noinspection PhpMissingParentConstructorInspection */ + + /** + * @param string $data + */ public function __construct( $data ) { if ( $data instanceof MssqlBlob ) { return $data; diff --git a/includes/libs/rdbms/encasing/PostgresBlob.php b/includes/libs/rdbms/encasing/PostgresBlob.php index cc52336c29..7994b73019 100644 --- a/includes/libs/rdbms/encasing/PostgresBlob.php +++ b/includes/libs/rdbms/encasing/PostgresBlob.php @@ -1,4 +1,7 @@ <?php + +namespace Wikimedia\Rdbms; + class PostgresBlob extends Blob { } diff --git a/includes/libs/rdbms/exception/DBReplicationWaitError.php b/includes/libs/rdbms/exception/DBReplicationWaitError.php index f1dabd5d50..c5e1ed7033 100644 --- a/includes/libs/rdbms/exception/DBReplicationWaitError.php +++ b/includes/libs/rdbms/exception/DBReplicationWaitError.php @@ -25,4 +25,3 @@ */ class DBReplicationWaitError extends DBExpectedError { } - diff --git a/includes/libs/rdbms/field/Field.php b/includes/libs/rdbms/field/Field.php index ed102f40c1..7918f36067 100644 --- a/includes/libs/rdbms/field/Field.php +++ b/includes/libs/rdbms/field/Field.php @@ -1,4 +1,7 @@ <?php + +namespace Wikimedia\Rdbms; + /** * Base for all database-specific classes representing information about database fields * @ingroup Database @@ -28,3 +31,5 @@ interface Field { */ function isNullable(); } + +class_alias( Field::class, 'Field' ); diff --git a/includes/libs/rdbms/field/MssqlField.php b/includes/libs/rdbms/field/MssqlField.php index 80e19245bf..98cc2b1893 100644 --- a/includes/libs/rdbms/field/MssqlField.php +++ b/includes/libs/rdbms/field/MssqlField.php @@ -1,4 +1,7 @@ <?php + +namespace Wikimedia\Rdbms; + class MssqlField implements Field { private $name, $tableName, $default, $max_length, $nullable, $type; @@ -35,4 +38,3 @@ class MssqlField implements Field { return $this->type; } } - diff --git a/includes/libs/rdbms/field/MySQLField.php b/includes/libs/rdbms/field/MySQLField.php index 8cf964cc3d..709c61eb2d 100644 --- a/includes/libs/rdbms/field/MySQLField.php +++ b/includes/libs/rdbms/field/MySQLField.php @@ -1,4 +1,7 @@ <?php + +namespace Wikimedia\Rdbms; + class MySQLField implements Field { private $name, $tablename, $default, $max_length, $nullable, $is_pk, $is_unique, $is_multiple, $is_key, $type, $binary, @@ -103,4 +106,3 @@ class MySQLField implements Field { return $this->is_zerofill; } } - diff --git a/includes/libs/rdbms/field/ORAField.php b/includes/libs/rdbms/field/ORAField.php deleted file mode 100644 index e48310ddc3..0000000000 --- a/includes/libs/rdbms/field/ORAField.php +++ /dev/null @@ -1,50 +0,0 @@ -<?php -class ORAField implements Field { - private $name, $tablename, $default, $max_length, $nullable, - $is_pk, $is_unique, $is_multiple, $is_key, $type; - - function __construct( $info ) { - $this->name = $info['column_name']; - $this->tablename = $info['table_name']; - $this->default = $info['data_default']; - $this->max_length = $info['data_length']; - $this->nullable = $info['not_null']; - $this->is_pk = isset( $info['prim'] ) && $info['prim'] == 1 ? 1 : 0; - $this->is_unique = isset( $info['uniq'] ) && $info['uniq'] == 1 ? 1 : 0; - $this->is_multiple = isset( $info['nonuniq'] ) && $info['nonuniq'] == 1 ? 1 : 0; - $this->is_key = ( $this->is_pk || $this->is_unique || $this->is_multiple ); - $this->type = $info['data_type']; - } - - function name() { - return $this->name; - } - - function tableName() { - return $this->tablename; - } - - function defaultValue() { - return $this->default; - } - - function maxLength() { - return $this->max_length; - } - - function isNullable() { - return $this->nullable; - } - - function isKey() { - return $this->is_key; - } - - function isMultipleKey() { - return $this->is_multiple; - } - - function type() { - return $this->type; - } -} diff --git a/includes/libs/rdbms/field/PostgresField.php b/includes/libs/rdbms/field/PostgresField.php index d34c125bb9..c5819a32ca 100644 --- a/includes/libs/rdbms/field/PostgresField.php +++ b/includes/libs/rdbms/field/PostgresField.php @@ -1,4 +1,9 @@ <?php + +namespace Wikimedia\Rdbms; + +use DatabasePostgres; + class PostgresField implements Field { private $name, $tablename, $type, $nullable, $max_length, $deferred, $deferrable, $conname, $has_default, $default; diff --git a/includes/libs/rdbms/field/SQLiteField.php b/includes/libs/rdbms/field/SQLiteField.php index 0a2389bfb0..39f8f01182 100644 --- a/includes/libs/rdbms/field/SQLiteField.php +++ b/includes/libs/rdbms/field/SQLiteField.php @@ -1,4 +1,7 @@ <?php + +namespace Wikimedia\Rdbms; + class SQLiteField implements Field { private $info, $tableName; diff --git a/includes/libs/rdbms/lbfactory/ILBFactory.php b/includes/libs/rdbms/lbfactory/ILBFactory.php index 5288c24908..faf7fb179c 100644 --- a/includes/libs/rdbms/lbfactory/ILBFactory.php +++ b/includes/libs/rdbms/lbfactory/ILBFactory.php @@ -21,6 +21,12 @@ * @ingroup Database */ +namespace Wikimedia\Rdbms; + +use InvalidArgumentException; +use DBTransactionError; +use DBReplicationWaitError; + /** * An interface for generating database load balancers * @ingroup Database @@ -178,7 +184,7 @@ interface ILBFactory { * @param string $fname Caller name * @param array $options Options map: * - maxWriteDuration: abort if more than this much time was spent in write queries - * @throws Exception + * @throws DBTransactionError */ public function commitMasterChanges( $fname = __METHOD__, array $options = [] ); diff --git a/includes/libs/rdbms/lbfactory/LBFactory.php b/includes/libs/rdbms/lbfactory/LBFactory.php index 15a5c0d78f..f05dabc80f 100644 --- a/includes/libs/rdbms/lbfactory/LBFactory.php +++ b/includes/libs/rdbms/lbfactory/LBFactory.php @@ -21,8 +21,18 @@ * @ingroup Database */ +namespace Wikimedia\Rdbms; + use Psr\Log\LoggerInterface; use Wikimedia\ScopedCallback; +use BagOStuff; +use EmptyBagOStuff; +use WANObjectCache; +use Exception; +use RuntimeException; +use IDatabase; +use DBTransactionError; +use DBReplicationWaitError; /** * An interface for generating database load balancers @@ -100,7 +110,7 @@ abstract class LBFactory implements ILBFactory { trigger_error( E_USER_WARNING, get_class( $e ) . ': ' . $e->getMessage() ); }; - $this->profiler = isset( $params['profiler'] ) ? $params['profiler'] : null; + $this->profiler = isset( $conf['profiler'] ) ? $conf['profiler'] : null; $this->trxProfiler = isset( $conf['trxProfiler'] ) ? $conf['trxProfiler'] : new TransactionProfiler(); @@ -111,9 +121,9 @@ abstract class LBFactory implements ILBFactory { 'ChronologyProtection' => 'true' ]; - $this->cliMode = isset( $params['cliMode'] ) ? $params['cliMode'] : PHP_SAPI === 'cli'; + $this->cliMode = isset( $conf['cliMode'] ) ? $conf['cliMode'] : PHP_SAPI === 'cli'; $this->hostname = isset( $conf['hostname'] ) ? $conf['hostname'] : gethostname(); - $this->agent = isset( $params['agent'] ) ? $params['agent'] : ''; + $this->agent = isset( $conf['agent'] ) ? $conf['agent'] : ''; $this->ticket = mt_rand(); } @@ -326,7 +336,7 @@ abstract class LBFactory implements ILBFactory { $masterPositions = array_fill( 0, count( $lbs ), false ); foreach ( $lbs as $i => $lb ) { if ( $lb->getServerCount() <= 1 ) { - // Bug 27975 - Don't try to wait for replica DBs if there are none + // T29975 - Don't try to wait for replica DBs if there are none // Prevents permission error when getting master position continue; } elseif ( $opts['ifWritesSince'] diff --git a/includes/libs/rdbms/lbfactory/LBFactoryMulti.php b/includes/libs/rdbms/lbfactory/LBFactoryMulti.php index 4158e616bd..447b96f951 100644 --- a/includes/libs/rdbms/lbfactory/LBFactoryMulti.php +++ b/includes/libs/rdbms/lbfactory/LBFactoryMulti.php @@ -21,6 +21,11 @@ * @ingroup Database */ +namespace Wikimedia\Rdbms; + +use IDatabase; +use InvalidArgumentException; + /** * A multi-database, multi-master factory for Wikimedia and similar installations. * Ignores the old configuration globals. diff --git a/includes/libs/rdbms/lbfactory/LBFactorySimple.php b/includes/libs/rdbms/lbfactory/LBFactorySimple.php index 5bf50323df..15cd50849d 100644 --- a/includes/libs/rdbms/lbfactory/LBFactorySimple.php +++ b/includes/libs/rdbms/lbfactory/LBFactorySimple.php @@ -21,6 +21,10 @@ * @ingroup Database */ +namespace Wikimedia\Rdbms; + +use InvalidArgumentException; + /** * A simple single-master LBFactory that gets its configuration from the b/c globals */ diff --git a/includes/libs/rdbms/lbfactory/LBFactorySingle.php b/includes/libs/rdbms/lbfactory/LBFactorySingle.php index 819375d797..5931d80205 100644 --- a/includes/libs/rdbms/lbfactory/LBFactorySingle.php +++ b/includes/libs/rdbms/lbfactory/LBFactorySingle.php @@ -21,6 +21,12 @@ * @ingroup Database */ +namespace Wikimedia\Rdbms; + +use IDatabase; +use InvalidArgumentException; +use BadMethodCallException; + /** * An LBFactory class that always returns a single database object. */ diff --git a/includes/libs/rdbms/loadbalancer/ILoadBalancer.php b/includes/libs/rdbms/loadbalancer/ILoadBalancer.php index fc306b49b4..4c277ff690 100644 --- a/includes/libs/rdbms/loadbalancer/ILoadBalancer.php +++ b/includes/libs/rdbms/loadbalancer/ILoadBalancer.php @@ -21,6 +21,18 @@ * @ingroup Database * @author Aaron Schulz */ +namespace Wikimedia\Rdbms; + +use IDatabase; +use Database; +use DBConnRef; +use MaintainableDBConnRef; +use DBError; +use DBAccessError; +use DBTransactionError; +use DBExpectedError; +use Exception; +use InvalidArgumentException; /** * Database cluster connection, tracking, load balancing, and transaction manager interface @@ -228,9 +240,6 @@ interface ILoadBalancer { * Index must be an actual index into the array. * If the server is already open, returns it. * - * On error, returns false, and the connection which caused the - * error will be available via $this->mErrorConnection. - * * @note If disable() was called on this LoadBalancer, this method will throw a DBAccessError. * * @param int $i Server index or DB_MASTER/DB_REPLICA @@ -370,7 +379,7 @@ interface ILoadBalancer { * * Use this only for mutli-database commits * - * @param integer $type IDatabase::TRIGGER_* constant + * @param int $type IDatabase::TRIGGER_* constant * @return Exception|null The first exception or null if there were none */ public function runMasterPostTrxCallbacks( $type ); @@ -447,7 +456,7 @@ interface ILoadBalancer { /** * @note This method may trigger a DB connection if not yet done * @param string|bool $domain Domain ID, or false for the current domain - * @param IDatabase|null DB master connection; used to avoid loops [optional] + * @param IDatabase|null $conn DB master connection; used to avoid loops [optional] * @return string|bool Reason the master is read-only or false if it is not */ public function getReadOnlyReason( $domain = false, IDatabase $conn = null ); @@ -532,10 +541,10 @@ interface ILoadBalancer { * * @param IDatabase $conn Replica DB * @param DBMasterPos|bool $pos Master position; default: current position - * @param integer|null $timeout Timeout in seconds [optional] + * @param int $timeout Timeout in seconds [optional] * @return bool Success */ - public function safeWaitForMasterPos( IDatabase $conn, $pos = false, $timeout = null ); + public function safeWaitForMasterPos( IDatabase $conn, $pos = false, $timeout = 10 ); /** * Set a callback via IDatabase::setTransactionListener() on diff --git a/includes/libs/rdbms/loadbalancer/LoadBalancer.php b/includes/libs/rdbms/loadbalancer/LoadBalancer.php index 95f55b6a86..6878712d55 100644 --- a/includes/libs/rdbms/loadbalancer/LoadBalancer.php +++ b/includes/libs/rdbms/loadbalancer/LoadBalancer.php @@ -20,8 +20,29 @@ * @file * @ingroup Database */ +namespace Wikimedia\Rdbms; + use Psr\Log\LoggerInterface; +use Psr\Log\NullLogger; use Wikimedia\ScopedCallback; +use IDatabase; +use Database; +use DBConnRef; +use MaintainableDBConnRef; +use BagOStuff; +use EmptyBagOStuff; +use WANObjectCache; +use ArrayUtils; +use DBError; +use DBAccessError; +use DBExpectedError; +use DBUnexpectedError; +use DBTransactionError; +use DBTransactionSizeError; +use DBConnectionError; +use InvalidArgumentException; +use RuntimeException; +use Exception; /** * Database connection, tracking, load balancing, and transaction manager for a cluster @@ -31,7 +52,7 @@ use Wikimedia\ScopedCallback; class LoadBalancer implements ILoadBalancer { /** @var array[] Map of (server index => server config array) */ private $mServers; - /** @var IDatabase[][][] Map of local/foreignUsed/foreignFree => server index => IDatabase array */ + /** @var \Database[][][] Map of local/foreignUsed/foreignFree => server index => IDatabase array */ private $mConns; /** @var float[] Map of (server index => weight) */ private $mLoads; @@ -67,8 +88,8 @@ class LoadBalancer implements ILoadBalancer { /** @var LoggerInterface */ protected $perfLogger; - /** @var bool|IDatabase Database connection that caused a problem */ - private $mErrorConnection; + /** @var \Database Database connection that caused a problem */ + private $errorConnection; /** @var integer The generic (not query grouped) replica DB index (of $mServers) */ private $mReadIndex; /** @var bool|DBMasterPos False if not set */ @@ -140,7 +161,6 @@ class LoadBalancer implements ILoadBalancer { ]; $this->mLoads = []; $this->mWaitForPos = false; - $this->mErrorConnection = false; $this->mAllowLagged = false; if ( isset( $params['readOnlyReason'] ) && is_string( $params['readOnlyReason'] ) ) { @@ -194,7 +214,7 @@ class LoadBalancer implements ILoadBalancer { }; foreach ( [ 'replLogger', 'connLogger', 'queryLogger', 'perfLogger' ] as $key ) { - $this->$key = isset( $params[$key] ) ? $params[$key] : new \Psr\Log\NullLogger(); + $this->$key = isset( $params[$key] ) ? $params[$key] : new NullLogger(); } $this->host = isset( $params['hostname'] ) @@ -211,7 +231,17 @@ class LoadBalancer implements ILoadBalancer { */ private function getLoadMonitor() { if ( !isset( $this->loadMonitor ) ) { + $compat = [ + 'LoadMonitor' => LoadMonitor::class, + 'LoadMonitorNull' => LoadMonitorNull::class, + 'LoadMonitorMySQL' => LoadMonitorMySQL::class, + ]; + $class = $this->loadMonitorConfig['class']; + if ( isset( $compat[$class] ) ) { + $class = $compat[$class]; + } + $this->loadMonitor = new $class( $this, $this->srvCache, $this->memCache, $this->loadMonitorConfig ); $this->loadMonitor->setLogger( $this->replLogger ); @@ -472,10 +502,13 @@ class LoadBalancer implements ILoadBalancer { // Check if we already know that the DB has reached this point $server = $this->getServerName( $index ); - $key = $this->srvCache->makeGlobalKey( __CLASS__, 'last-known-pos', $server ); + $key = $this->srvCache->makeGlobalKey( __CLASS__, 'last-known-pos', $server, 'v1' ); /** @var DBMasterPos $knownReachedPos */ $knownReachedPos = $this->srvCache->get( $key ); - if ( $knownReachedPos && $knownReachedPos->hasReached( $this->mWaitForPos ) ) { + if ( + $knownReachedPos instanceof DBMasterPos && + $knownReachedPos->hasReached( $this->mWaitForPos ) + ) { $this->replLogger->debug( __METHOD__ . ": replica DB $server known to be caught up (pos >= $knownReachedPos)." ); return true; @@ -703,17 +736,17 @@ class LoadBalancer implements ILoadBalancer { $this->mConns['local'][$i][0] = $conn; } else { $this->connLogger->warning( "Failed to connect to database $i at '$serverName'." ); - $this->mErrorConnection = $conn; + $this->errorConnection = $conn; $conn = false; } } - if ( $conn && !$conn->isOpen() ) { + if ( $conn instanceof IDatabase && !$conn->isOpen() ) { // Connection was made but later unrecoverably lost for some reason. // Do not return a handle that will just throw exceptions on use, // but let the calling code (e.g. getReaderIndex) try another server. // See DatabaseMyslBase::ping() for how this can happen. - $this->mErrorConnection = $conn; + $this->errorConnection = $conn; $conn = false; } @@ -732,7 +765,7 @@ class LoadBalancer implements ILoadBalancer { * it has been freed first with reuseConnection(). * * On error, returns false, and the connection which caused the - * error will be available via $this->mErrorConnection. + * error will be available via $this->errorConnection. * * @note If disable() was called on this LoadBalancer, this method will throw a DBAccessError. * @@ -764,7 +797,7 @@ class LoadBalancer implements ILoadBalancer { if ( strlen( $dbName ) && !$conn->selectDB( $dbName ) ) { $this->mLastError = "Error selecting database '$dbName' on server " . $conn->getServer() . " from client host {$this->host}"; - $this->mErrorConnection = $conn; + $this->errorConnection = $conn; $conn = false; } else { $conn->tablePrefix( $prefix ); @@ -785,7 +818,7 @@ class LoadBalancer implements ILoadBalancer { $conn = $this->reallyOpenConnection( $server, $dbName ); if ( !$conn->isOpen() ) { $this->connLogger->warning( __METHOD__ . ": connection error for $i/$domain" ); - $this->mErrorConnection = $conn; + $this->errorConnection = $conn; $conn = false; } else { $conn->tablePrefix( $prefix ); @@ -795,7 +828,7 @@ class LoadBalancer implements ILoadBalancer { } // Increment reference count - if ( $conn ) { + if ( $conn instanceof IDatabase ) { $refCount = $conn->getLBInfo( 'foreignPoolRefCount' ); $conn->setLBInfo( 'foreignPoolRefCount', $refCount + 1 ); } @@ -893,22 +926,13 @@ class LoadBalancer implements ILoadBalancer { * @throws DBConnectionError */ private function reportConnectionError() { - $conn = $this->mErrorConnection; // the connection which caused the error + $conn = $this->errorConnection; // the connection which caused the error $context = [ 'method' => __METHOD__, 'last_error' => $this->mLastError, ]; - if ( !is_object( $conn ) ) { - // No last connection, probably due to all servers being too busy - $this->connLogger->error( - "LB failure with no last connection. Connection error: {last_error}", - $context - ); - - // If all servers were busy, mLastError will contain something sensible - throw new DBConnectionError( null, $this->mLastError ); - } else { + if ( $conn instanceof IDatabase ) { $context['db_server'] = $conn->getServer(); $this->connLogger->warning( "Connection error: {last_error} ({db_server})", @@ -917,6 +941,15 @@ class LoadBalancer implements ILoadBalancer { // throws DBConnectionError $conn->reportConnectionError( "{$this->mLastError} ({$context['db_server']})" ); + } else { + // No last connection, probably due to all servers being too busy + $this->connLogger->error( + "LB failure with no last connection. Connection error: {last_error}", + $context + ); + + // If all servers were busy, mLastError will contain something sensible + throw new DBConnectionError( null, $this->mLastError ); } } @@ -1336,7 +1369,7 @@ class LoadBalancer implements ILoadBalancer { /** * @param string $domain Domain ID, or false for the current domain - * @param IDatabase|null DB master connectionl used to avoid loops [optional] + * @param IDatabase|null $conn DB master connectionl used to avoid loops [optional] * @return bool */ private function masterRunningReadOnly( $domain, IDatabase $conn = null ) { @@ -1471,8 +1504,9 @@ class LoadBalancer implements ILoadBalancer { /** * @param IDatabase $conn - * @param DBMasterPos|false $pos + * @param DBMasterPos|bool $pos * @param int $timeout + * @return bool */ public function safeWaitForMasterPos( IDatabase $conn, $pos = false, $timeout = 10 ) { if ( $this->getServerCount() <= 1 || !$conn->getLBInfo( 'replica' ) ) { @@ -1571,3 +1605,5 @@ class LoadBalancer implements ILoadBalancer { $this->disable(); } } + +class_alias( LoadBalancer::class, 'LoadBalancer' ); diff --git a/includes/libs/rdbms/loadbalancer/LoadBalancerSingle.php b/includes/libs/rdbms/loadbalancer/LoadBalancerSingle.php index 0a05202504..b9fefda979 100644 --- a/includes/libs/rdbms/loadbalancer/LoadBalancerSingle.php +++ b/includes/libs/rdbms/loadbalancer/LoadBalancerSingle.php @@ -21,6 +21,11 @@ * @ingroup Database */ +namespace Wikimedia\Rdbms; + +use IDatabase; +use InvalidArgumentException; + /** * Trivial LoadBalancer that always returns an injected connection handle */ @@ -72,3 +77,5 @@ class LoadBalancerSingle extends LoadBalancer { return $this->db; } } + +class_alias( 'Wikimedia\Rdbms\LoadBalancerSingle', 'LoadBalancerSingle' ); diff --git a/includes/libs/rdbms/loadmonitor/ILoadMonitor.php b/includes/libs/rdbms/loadmonitor/ILoadMonitor.php index 14a52c5a8c..4f6701fa13 100644 --- a/includes/libs/rdbms/loadmonitor/ILoadMonitor.php +++ b/includes/libs/rdbms/loadmonitor/ILoadMonitor.php @@ -20,7 +20,11 @@ * @file * @ingroup Database */ + +namespace Wikimedia\Rdbms; + use Psr\Log\LoggerAwareInterface; +use BagOStuff; /** * An interface for database load monitoring diff --git a/includes/libs/rdbms/loadmonitor/LoadMonitor.php b/includes/libs/rdbms/loadmonitor/LoadMonitor.php index da4909d77f..5e92c33ab3 100644 --- a/includes/libs/rdbms/loadmonitor/LoadMonitor.php +++ b/includes/libs/rdbms/loadmonitor/LoadMonitor.php @@ -19,8 +19,13 @@ * @ingroup Database */ +namespace Wikimedia\Rdbms; + use Psr\Log\LoggerInterface; +use Psr\Log\NullLogger; use Wikimedia\ScopedCallback; +use IDatabase; +use BagOStuff; /** * Basic DB load monitor with no external dependencies @@ -49,7 +54,7 @@ class LoadMonitor implements ILoadMonitor { $this->parent = $lb; $this->srvCache = $srvCache; $this->mainCache = $cache; - $this->replLogger = new \Psr\Log\NullLogger(); + $this->replLogger = new NullLogger(); $this->movingAveRatio = isset( $options['movingAveRatio'] ) ? $options['movingAveRatio'] diff --git a/includes/libs/rdbms/loadmonitor/LoadMonitorMySQL.php b/includes/libs/rdbms/loadmonitor/LoadMonitorMySQL.php index e3747943c1..c0db68c3a4 100644 --- a/includes/libs/rdbms/loadmonitor/LoadMonitorMySQL.php +++ b/includes/libs/rdbms/loadmonitor/LoadMonitorMySQL.php @@ -19,6 +19,11 @@ * @ingroup Database */ +namespace Wikimedia\Rdbms; + +use IDatabase; +use BagOStuff; + /** * Basic MySQL load monitor with no external dependencies * Uses memcached to cache the replication lag for a short time diff --git a/includes/libs/rdbms/loadmonitor/LoadMonitorNull.php b/includes/libs/rdbms/loadmonitor/LoadMonitorNull.php index c4e25dc24a..613dac5278 100644 --- a/includes/libs/rdbms/loadmonitor/LoadMonitorNull.php +++ b/includes/libs/rdbms/loadmonitor/LoadMonitorNull.php @@ -18,7 +18,11 @@ * @file * @ingroup Database */ + +namespace Wikimedia\Rdbms; + use Psr\Log\LoggerInterface; +use BagOStuff; class LoadMonitorNull implements ILoadMonitor { public function __construct( diff --git a/includes/libs/replacers/Replacer.php b/includes/libs/replacers/Replacer.php index 3b978357ed..655e771087 100644 --- a/includes/libs/replacers/Replacer.php +++ b/includes/libs/replacers/Replacer.php @@ -27,7 +27,7 @@ abstract class Replacer { * @return array */ public function cb() { - return [ &$this, 'replace' ]; + return [ $this, 'replace' ]; } /** diff --git a/includes/libs/time/ConvertibleTimestamp.php b/includes/libs/time/ConvertibleTimestamp.php deleted file mode 100644 index c830b4eb64..0000000000 --- a/includes/libs/time/ConvertibleTimestamp.php +++ /dev/null @@ -1,269 +0,0 @@ -<?php -/** - * Creation, parsing, and conversion of timestamps. - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License along - * with this program; if not, write to the Free Software Foundation, Inc., - * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - * http://www.gnu.org/copyleft/gpl.html - * - * @file - * @since 1.20 - * @author Tyler Romeo, 2012 - */ - -/** - * Library for creating, parsing, and converting timestamps. Based on the JS - * library that does the same thing. - * - * @since 1.28 - */ -class ConvertibleTimestamp { - /** - * Standard gmdate() formats for the different timestamp types. - */ - private static $formats = [ - TS_UNIX => 'U', - TS_MW => 'YmdHis', - TS_DB => 'Y-m-d H:i:s', - TS_ISO_8601 => 'Y-m-d\TH:i:s\Z', - TS_ISO_8601_BASIC => 'Ymd\THis\Z', - TS_EXIF => 'Y:m:d H:i:s', // This shouldn't ever be used, but is included for completeness - TS_RFC2822 => 'D, d M Y H:i:s', - TS_ORACLE => 'd-m-Y H:i:s.000000', // Was 'd-M-y h.i.s A' . ' +00:00' before r51500 - TS_POSTGRES => 'Y-m-d H:i:s', - ]; - - /** - * The actual timestamp being wrapped (DateTime object). - * @var DateTime - */ - public $timestamp; - - /** - * Make a new timestamp and set it to the specified time, - * or the current time if unspecified. - * - * @param bool|string|int|float|DateTime $timestamp Timestamp to set, or false for current time - */ - public function __construct( $timestamp = false ) { - if ( $timestamp instanceof DateTime ) { - $this->timestamp = $timestamp; - } else { - $this->setTimestamp( $timestamp ); - } - } - - /** - * Set the timestamp to the specified time, or the current time if unspecified. - * - * Parse the given timestamp into either a DateTime object or a Unix timestamp, - * and then store it. - * - * @param string|bool $ts Timestamp to store, or false for now - * @throws TimestampException - */ - public function setTimestamp( $ts = false ) { - $m = []; - $da = []; - $strtime = ''; - - // We want to catch 0, '', null... but not date strings starting with a letter. - if ( !$ts || $ts === "\0\0\0\0\0\0\0\0\0\0\0\0\0\0" ) { - $uts = time(); - $strtime = "@$uts"; - } elseif ( preg_match( '/^(\d{4})\-(\d\d)\-(\d\d) (\d\d):(\d\d):(\d\d)$/D', $ts, $da ) ) { - # TS_DB - } elseif ( preg_match( '/^(\d{4}):(\d\d):(\d\d) (\d\d):(\d\d):(\d\d)$/D', $ts, $da ) ) { - # TS_EXIF - } elseif ( preg_match( '/^(\d{4})(\d\d)(\d\d)(\d\d)(\d\d)(\d\d)$/D', $ts, $da ) ) { - # TS_MW - } elseif ( preg_match( '/^(-?\d{1,13})(\.\d+)?$/D', $ts, $m ) ) { - # TS_UNIX - $strtime = "@{$m[1]}"; // https://secure.php.net/manual/en/datetime.formats.compound.php - } elseif ( preg_match( '/^\d{2}-\d{2}-\d{4} \d{2}:\d{2}:\d{2}.\d{6}$/', $ts ) ) { - # TS_ORACLE // session altered to DD-MM-YYYY HH24:MI:SS.FF6 - $strtime = preg_replace( '/(\d\d)\.(\d\d)\.(\d\d)(\.(\d+))?/', "$1:$2:$3", - str_replace( '+00:00', 'UTC', $ts ) ); - } elseif ( preg_match( - '/^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2})(?:\.*\d*)?Z?$/', - $ts, - $da - ) ) { - # TS_ISO_8601 - } elseif ( preg_match( - '/^(\d{4})(\d{2})(\d{2})T(\d{2})(\d{2})(\d{2})(?:\.*\d*)?Z?$/', - $ts, - $da - ) ) { - # TS_ISO_8601_BASIC - } elseif ( preg_match( - '/^(\d{4})\-(\d\d)\-(\d\d) (\d\d):(\d\d):(\d\d)\.*\d*[\+\- ](\d\d)$/', - $ts, - $da - ) ) { - # TS_POSTGRES - } elseif ( preg_match( - '/^(\d{4})\-(\d\d)\-(\d\d) (\d\d):(\d\d):(\d\d)\.*\d* GMT$/', - $ts, - $da - ) ) { - # TS_POSTGRES - } elseif ( preg_match( - # Day of week - '/^[ \t\r\n]*([A-Z][a-z]{2},[ \t\r\n]*)?' . - # dd Mon yyyy - '\d\d?[ \t\r\n]*[A-Z][a-z]{2}[ \t\r\n]*\d{2}(?:\d{2})?' . - # hh:mm:ss - '[ \t\r\n]*\d\d[ \t\r\n]*:[ \t\r\n]*\d\d[ \t\r\n]*:[ \t\r\n]*\d\d/S', - $ts - ) ) { - # TS_RFC2822, accepting a trailing comment. - # See http://www.squid-cache.org/mail-archive/squid-users/200307/0122.html / r77171 - # The regex is a superset of rfc2822 for readability - $strtime = strtok( $ts, ';' ); - } elseif ( preg_match( '/^[A-Z][a-z]{5,8}, \d\d-[A-Z][a-z]{2}-\d{2} \d\d:\d\d:\d\d/', $ts ) ) { - # TS_RFC850 - $strtime = $ts; - } elseif ( preg_match( '/^[A-Z][a-z]{2} [A-Z][a-z]{2} +\d{1,2} \d\d:\d\d:\d\d \d{4}/', $ts ) ) { - # asctime - $strtime = $ts; - } else { - throw new TimestampException( __METHOD__ . ": Invalid timestamp - $ts" ); - } - - if ( !$strtime ) { - $da = array_map( 'intval', $da ); - $da[0] = "%04d-%02d-%02dT%02d:%02d:%02d.00+00:00"; - $strtime = call_user_func_array( "sprintf", $da ); - } - - try { - $final = new DateTime( $strtime, new DateTimeZone( 'GMT' ) ); - } catch ( Exception $e ) { - throw new TimestampException( __METHOD__ . ': Invalid timestamp format.', $e->getCode(), $e ); - } - - if ( $final === false ) { - throw new TimestampException( __METHOD__ . ': Invalid timestamp format.' ); - } - - $this->timestamp = $final; - } - - /** - * Convert a timestamp string to a given format. - * - * @param int $style Constant Output format for timestamp - * @param string $ts Timestamp - * @return string|bool Formatted timestamp or false on failure - */ - public static function convert( $style = TS_UNIX, $ts ) { - try { - $ct = new static( $ts ); - return $ct->getTimestamp( $style ); - } catch ( TimestampException $e ) { - return false; - } - } - - /** - * Get the current time in the given format - * - * @param int $style Constant Output format for timestamp - * @return string - */ - public static function now( $style = TS_MW ) { - return static::convert( $style, time() ); - } - - /** - * Get the timestamp represented by this object in a certain form. - * - * Convert the internal timestamp to the specified format and then - * return it. - * - * @param int $style Constant Output format for timestamp - * @throws TimestampException - * @return string The formatted timestamp - */ - public function getTimestamp( $style = TS_UNIX ) { - if ( !isset( self::$formats[$style] ) ) { - throw new TimestampException( __METHOD__ . ': Illegal timestamp output type.' ); - } - - $output = $this->timestamp->format( self::$formats[$style] ); - - if ( ( $style == TS_RFC2822 ) || ( $style == TS_POSTGRES ) ) { - $output .= ' GMT'; - } - - if ( $style == TS_MW && strlen( $output ) !== 14 ) { - throw new TimestampException( __METHOD__ . ': The timestamp cannot be represented in ' . - 'the specified format' ); - } - - return $output; - } - - /** - * @return string - */ - public function __toString() { - return $this->getTimestamp(); - } - - /** - * Calculate the difference between two ConvertibleTimestamp objects. - * - * @param ConvertibleTimestamp $relativeTo Base time to calculate difference from - * @return DateInterval|bool The DateInterval object representing the - * difference between the two dates or false on failure - */ - public function diff( ConvertibleTimestamp $relativeTo ) { - return $this->timestamp->diff( $relativeTo->timestamp ); - } - - /** - * Set the timezone of this timestamp to the specified timezone. - * - * @param string $timezone Timezone to set - * @throws TimestampException - */ - public function setTimezone( $timezone ) { - try { - $this->timestamp->setTimezone( new DateTimeZone( $timezone ) ); - } catch ( Exception $e ) { - throw new TimestampException( __METHOD__ . ': Invalid timezone.', $e->getCode(), $e ); - } - } - - /** - * Get the timezone of this timestamp. - * - * @return DateTimeZone The timezone - */ - public function getTimezone() { - return $this->timestamp->getTimezone(); - } - - /** - * Format the timestamp in a given format. - * - * @param string $format Pattern to format in - * @return string The formatted timestamp - */ - public function format( $format ) { - return $this->timestamp->format( $format ); - } -} diff --git a/includes/libs/time/TimestampException.php b/includes/libs/time/TimestampException.php deleted file mode 100644 index 36ffdeeaf9..0000000000 --- a/includes/libs/time/TimestampException.php +++ /dev/null @@ -1,7 +0,0 @@ -<?php - -/** - * @since 1.20 - */ -class TimestampException extends Exception { -} diff --git a/includes/libs/time/defines.php b/includes/libs/time/defines.php deleted file mode 100644 index ff4dde86ad..0000000000 --- a/includes/libs/time/defines.php +++ /dev/null @@ -1,52 +0,0 @@ -<?php - -/** - * Unix time - the number of seconds since 1970-01-01 00:00:00 UTC - */ -define( 'TS_UNIX', 0 ); - -/** - * MediaWiki concatenated string timestamp (YYYYMMDDHHMMSS) - */ -define( 'TS_MW', 1 ); - -/** - * MySQL DATETIME (YYYY-MM-DD HH:MM:SS) - */ -define( 'TS_DB', 2 ); - -/** - * RFC 2822 format, for E-mail and HTTP headers - */ -define( 'TS_RFC2822', 3 ); - -/** - * ISO 8601 format with no timezone: 1986-02-09T20:00:00Z - * - * This is used by Special:Export - */ -define( 'TS_ISO_8601', 4 ); - -/** - * An Exif timestamp (YYYY:MM:DD HH:MM:SS) - * - * @see http://exif.org/Exif2-2.PDF The Exif 2.2 spec, see page 28 for the - * DateTime tag and page 36 for the DateTimeOriginal and - * DateTimeDigitized tags. - */ -define( 'TS_EXIF', 5 ); - -/** - * Oracle format time. - */ -define( 'TS_ORACLE', 6 ); - -/** - * Postgres format time. - */ -define( 'TS_POSTGRES', 7 ); - -/** - * ISO 8601 basic format with no timezone: 19860209T200000Z. This is used by ResourceLoader - */ -define( 'TS_ISO_8601_BASIC', 9 ); diff --git a/includes/libs/virtualrest/VirtualRESTService.php b/includes/libs/virtualrest/VirtualRESTService.php index ccb14db020..2f160787e1 100644 --- a/includes/libs/virtualrest/VirtualRESTService.php +++ b/includes/libs/virtualrest/VirtualRESTService.php @@ -51,8 +51,7 @@ abstract class VirtualRESTService { * @return string The name of the service behind this VRS object. */ public function getName() { - return isset( $this->params['name'] ) ? $this->params['name'] : - get_class( $this ); + return isset( $this->params['name'] ) ? $this->params['name'] : static::class; } /** diff --git a/includes/libs/xmp/XMP.php b/includes/libs/xmp/XMP.php index a657a33f2c..f1df7f19dd 100644 --- a/includes/libs/xmp/XMP.php +++ b/includes/libs/xmp/XMP.php @@ -647,7 +647,7 @@ class XMPReader implements LoggerAwareInterface { private function endElementNested( $elm ) { /* cur item must be the same as $elm, unless if in MODE_STRUCT - in which case it could also be rdf:Description */ + * in which case it could also be rdf:Description */ if ( $this->curItem[0] !== $elm && !( $elm === self::NS_RDF . ' Description' && $this->mode[0] === self::MODE_STRUCT ) @@ -895,7 +895,7 @@ class XMPReader implements LoggerAwareInterface { if ( $elm === self::NS_RDF . ' Seq' ) { array_unshift( $this->mode, self::MODE_LI ); } elseif ( $elm === self::NS_RDF . ' Bag' ) { - # bug 27105 + # T29105 $this->logger->info( __METHOD__ . ' Expected an rdf:Seq, but got an rdf:Bag. Pretending' . ' it is a Seq, since some buggy software is known to screw this up.' ); array_unshift( $this->mode, self::MODE_LI ); @@ -1086,7 +1086,7 @@ class XMPReader implements LoggerAwareInterface { } } else { array_unshift( $this->mode, self::MODE_IGNORE ); - array_unshift( $this->curItem, $elm ); + array_unshift( $this->curItem, $ns . ' ' . $tag ); return; } diff --git a/includes/libs/xmp/XMPInfo.php b/includes/libs/xmp/XMPInfo.php index 052be33a4b..5211a2cd39 100644 --- a/includes/libs/xmp/XMPInfo.php +++ b/includes/libs/xmp/XMPInfo.php @@ -650,7 +650,7 @@ class XMPInfo { 'choices' => [ '1' => true, '2' => true ], ], /******** - * Disable extracting this property (bug 31944) + * Disable extracting this property (T33944) * Several files have a string instead of a Seq * for this property. XMPReader doesn't handle * mismatched types very gracefully (it marks @@ -658,7 +658,7 @@ class XMPInfo { * the relavent prop). Since this prop * doesn't communicate all that useful information * just disable this prop for now, until such - * XMPReader is more graceful (bug 32172) + * XMPReader is more graceful (T34172) * 'YCbCrSubSampling' => array( * 'map_group' => 'exif', * 'mode' => XMPReader::MODE_SEQ, diff --git a/includes/libs/xmp/XMPValidate.php b/includes/libs/xmp/XMPValidate.php index 31eaa3baa7..76ae279f32 100644 --- a/includes/libs/xmp/XMPValidate.php +++ b/includes/libs/xmp/XMPValidate.php @@ -23,6 +23,7 @@ use Psr\Log\LoggerInterface; use Psr\Log\LoggerAwareInterface; +use Wikimedia\Timestamp\ConvertibleTimestamp; /** * This contains some static methods for diff --git a/includes/logging/BlockLogFormatter.php b/includes/logging/BlockLogFormatter.php index c3902326c6..a0bfb59345 100644 --- a/includes/logging/BlockLogFormatter.php +++ b/includes/logging/BlockLogFormatter.php @@ -59,9 +59,15 @@ class BlockLogFormatter extends LogFormatter { // The lrm is needed to make sure that the number // is shown on the correct side of the tooltip text. $durationTooltip = '‎' . htmlspecialchars( $params[4] ); - $params[4] = Message::rawParam( "<span class='blockExpiry' title='$durationTooltip'>" . - $this->context->getLanguage()->translateBlockExpiry( $params[4], - $this->context->getUser() ) . '</span>' ); + $params[4] = Message::rawParam( + "<span class='blockExpiry' title='$durationTooltip'>" . + $this->context->getLanguage()->translateBlockExpiry( + $params[4], + $this->context->getUser(), + wfTimestamp( TS_UNIX, $this->entry->getTimestamp() ) + ) . + '</span>' + ); $params[5] = isset( $params[5] ) ? self::formatBlockFlags( $params[5], $this->context->getLanguage() ) : ''; } diff --git a/includes/logging/LogEventsList.php b/includes/logging/LogEventsList.php index 6665336aa7..43829109cb 100644 --- a/includes/logging/LogEventsList.php +++ b/includes/logging/LogEventsList.php @@ -544,7 +544,8 @@ class LogEventsList extends ContextSource { * @param string $user The user who made the log entries * @param array $param Associative Array with the following additional options: * - lim Integer Limit of items to show, default is 50 - * - conds Array Extra conditions for the query (e.g. "log_action != 'revision'") + * - conds Array Extra conditions for the query + * (e.g. 'log_action != ' . $dbr->addQuotes( 'revision' )) * - showIfEmpty boolean Set to false if you don't want any output in case the loglist is empty * if set to true (default), "No matching items in log" is displayed if loglist is empty * - msgKey Array If you want a nice box with a message, set this to the key of the message. diff --git a/includes/logging/LogFormatter.php b/includes/logging/LogFormatter.php index a64fee1e50..68404bfcea 100644 --- a/includes/logging/LogFormatter.php +++ b/includes/logging/LogFormatter.php @@ -167,7 +167,7 @@ class LogFormatter { /** * Even uglier hack to maintain backwards compatibilty with IRC bots - * (bug 34508). + * (T36508). * @see getActionText() * @return string Text */ @@ -188,7 +188,7 @@ class LogFormatter { /** * Even uglier hack to maintain backwards compatibilty with IRC bots - * (bug 34508). + * (T36508). * @see getActionText() * @return string Text */ @@ -353,7 +353,11 @@ class LogFormatter { $rawDuration = $parameters['5::duration']; $rawFlags = $parameters['6::flags']; } - $duration = $wgContLang->translateBlockExpiry( $rawDuration ); + $duration = $wgContLang->translateBlockExpiry( + $rawDuration, + null, + wfTimestamp( TS_UNIX, $entry->getTimestamp() ) + ); $flags = BlockLogFormatter::formatBlockFlags( $rawFlags, $wgContLang ); $text = wfMessage( 'blocklogentry' ) ->rawParams( $target, $duration, $flags )->inContentLanguage()->escaped(); @@ -363,7 +367,11 @@ class LogFormatter { ->rawParams( $target )->inContentLanguage()->escaped(); break; case 'reblock': - $duration = $wgContLang->translateBlockExpiry( $parameters['5::duration'] ); + $duration = $wgContLang->translateBlockExpiry( + $parameters['5::duration'], + null, + wfTimestamp( TS_UNIX, $entry->getTimestamp() ) + ); $flags = BlockLogFormatter::formatBlockFlags( $parameters['6::flags'], $wgContLang ); $text = wfMessage( 'reblock-logentry' ) ->rawParams( $target, $duration, $flags )->inContentLanguage()->escaped(); diff --git a/includes/logging/LogPager.php b/includes/logging/LogPager.php index 68163c13e5..ea28ff202e 100644 --- a/includes/logging/LogPager.php +++ b/includes/logging/LogPager.php @@ -181,7 +181,7 @@ class LogPager extends ReverseChronologicalPager { } else { $this->mConds['log_user'] = $userid; } - // Paranoia: avoid brute force searches (bug 17342) + // Paranoia: avoid brute force searches (T19342) $user = $this->getUser(); if ( !$user->isAllowed( 'deletedhistory' ) ) { $this->mConds[] = $this->mDb->bitAnd( 'log_deleted', LogPage::DELETED_USER ) . ' = 0'; @@ -256,7 +256,7 @@ class LogPager extends ReverseChronologicalPager { } else { $this->mConds['log_title'] = $title->getDBkey(); } - // Paranoia: avoid brute force searches (bug 17342) + // Paranoia: avoid brute force searches (T19342) $user = $this->getUser(); if ( !$user->isAllowed( 'deletedhistory' ) ) { $this->mConds[] = $db->bitAnd( 'log_deleted', LogPage::DELETED_ACTION ) . ' = 0'; diff --git a/includes/logging/RightsLogFormatter.php b/includes/logging/RightsLogFormatter.php index be73c86495..791330c160 100644 --- a/includes/logging/RightsLogFormatter.php +++ b/includes/logging/RightsLogFormatter.php @@ -70,7 +70,7 @@ class RightsLogFormatter extends LogFormatter { protected function getMessageParameters() { $params = parent::getMessageParameters(); - // Really old entries + // Really old entries that lack old/new groups if ( !isset( $params[3] ) && !isset( $params[4] ) ) { return $params; } @@ -81,25 +81,29 @@ class RightsLogFormatter extends LogFormatter { $userName = $this->entry->getTarget()->getText(); if ( !$this->plaintext && count( $oldGroups ) ) { foreach ( $oldGroups as &$group ) { - $group = User::getGroupMember( $group, $userName ); + $group = UserGroupMembership::getGroupMemberName( $group, $userName ); } } if ( !$this->plaintext && count( $newGroups ) ) { foreach ( $newGroups as &$group ) { - $group = User::getGroupMember( $group, $userName ); + $group = UserGroupMembership::getGroupMemberName( $group, $userName ); } } - $lang = $this->context->getLanguage(); + // fetch the metadata about each group membership + $allParams = $this->entry->getParameters(); + if ( count( $oldGroups ) ) { - $params[3] = $lang->listToText( $oldGroups ); + $params[3] = [ 'raw' => $this->formatRightsList( $oldGroups, + isset( $allParams['oldmetadata'] ) ? $allParams['oldmetadata'] : [] ) ]; } else { $params[3] = $this->msg( 'rightsnone' )->text(); } if ( count( $newGroups ) ) { // Array_values is used here because of T44211 // see use of array_unique in UserrightsPage::doSaveUserGroups on $newGroups. - $params[4] = $lang->listToText( array_values( $newGroups ) ); + $params[4] = [ 'raw' => $this->formatRightsList( array_values( $newGroups ), + isset( $allParams['newmetadata'] ) ? $allParams['newmetadata'] : [] ) ]; } else { $params[4] = $this->msg( 'rightsnone' )->text(); } @@ -109,6 +113,42 @@ class RightsLogFormatter extends LogFormatter { return $params; } + protected function formatRightsList( $groups, $serializedUGMs = [] ) { + $uiLanguage = $this->context->getLanguage(); + $uiUser = $this->context->getUser(); + // separate arrays of temporary and permanent memberships + $tempList = $permList = []; + + reset( $groups ); + reset( $serializedUGMs ); + while ( current( $groups ) ) { + $group = current( $groups ); + + if ( current( $serializedUGMs ) && + isset( current( $serializedUGMs )['expiry'] ) && + current( $serializedUGMs )['expiry'] + ) { + // there is an expiry date; format the group and expiry into a friendly string + $expiry = current( $serializedUGMs )['expiry']; + $expiryFormatted = $uiLanguage->userTimeAndDate( $expiry, $uiUser ); + $expiryFormattedD = $uiLanguage->userDate( $expiry, $uiUser ); + $expiryFormattedT = $uiLanguage->userTime( $expiry, $uiUser ); + $tempList[] = $this->msg( 'rightslogentry-temporary-group' )->params( $group, + $expiryFormatted, $expiryFormattedD, $expiryFormattedT )->parse(); + } else { + // the right does not expire; just insert the group name + $permList[] = $group; + } + + next( $groups ); + next( $serializedUGMs ); + } + + // place all temporary memberships first, to avoid the ambiguity of + // "adinistrator, bureaucrat and importer (temporary, until X time)" + return $uiLanguage->listToText( array_merge( $tempList, $permList ) ); + } + protected function getParametersForApi() { $entry = $this->entry; $params = $entry->getParameters(); @@ -126,12 +166,44 @@ class RightsLogFormatter extends LogFormatter { } } - // Really old entries does not have log params + // Really old entries do not have log params, so form them from whatever info + // we have. + // Also walk through the parallel arrays of groups and metadata, combining each + // metadata array with the name of the group it pertains to if ( isset( $params['4:array:oldgroups'] ) ) { $params['4:array:oldgroups'] = $this->makeGroupArray( $params['4:array:oldgroups'] ); + + $oldmetadata =& $params['oldmetadata']; + // unset old metadata entry to ensure metadata goes at the end of the params array + unset( $params['oldmetadata'] ); + $params['oldmetadata'] = array_map( function( $index ) use ( $params, $oldmetadata ) { + $result = [ 'group' => $params['4:array:oldgroups'][$index] ]; + if ( isset( $oldmetadata[$index] ) ) { + $result += $oldmetadata[$index]; + } + $result['expiry'] = ApiResult::formatExpiry( isset( $result['expiry'] ) ? + $result['expiry'] : null ); + + return $result; + }, array_keys( $params['4:array:oldgroups'] ) ); } + if ( isset( $params['5:array:newgroups'] ) ) { $params['5:array:newgroups'] = $this->makeGroupArray( $params['5:array:newgroups'] ); + + $newmetadata =& $params['newmetadata']; + // unset old metadata entry to ensure metadata goes at the end of the params array + unset( $params['newmetadata'] ); + $params['newmetadata'] = array_map( function( $index ) use ( $params, $newmetadata ) { + $result = [ 'group' => $params['5:array:newgroups'][$index] ]; + if ( isset( $newmetadata[$index] ) ) { + $result += $newmetadata[$index]; + } + $result['expiry'] = ApiResult::formatExpiry( isset( $result['expiry'] ) ? + $result['expiry'] : null ); + + return $result; + }, array_keys( $params['5:array:newgroups'] ) ); } return $params; @@ -145,6 +217,14 @@ class RightsLogFormatter extends LogFormatter { if ( isset( $ret['newgroups'] ) ) { ApiResult::setIndexedTagName( $ret['newgroups'], 'g' ); } + if ( isset( $ret['oldmetadata'] ) ) { + ApiResult::setArrayType( $ret['oldmetadata'], 'array' ); + ApiResult::setIndexedTagName( $ret['oldmetadata'], 'g' ); + } + if ( isset( $ret['newmetadata'] ) ) { + ApiResult::setArrayType( $ret['newmetadata'], 'array' ); + ApiResult::setIndexedTagName( $ret['newmetadata'], 'g' ); + } return $ret; } diff --git a/includes/mail/EmailNotification.php b/includes/mail/EmailNotification.php index 1d0bdf6d77..d66e7e37b6 100644 --- a/includes/mail/EmailNotification.php +++ b/includes/mail/EmailNotification.php @@ -316,7 +316,7 @@ class EmailNotification { $pageTitle = $this->title->getPrefixedText(); if ( $this->oldid ) { - // Always show a link to the diff which triggered the mail. See bug 32210. + // Always show a link to the diff which triggered the mail. See T34210. $keys['$NEWPAGE'] = "\n\n" . wfMessage( 'enotif_lastdiff', $this->title->getCanonicalURL( [ 'diff' => 'next', 'oldid' => $this->oldid ] ) ) ->inContentLanguage()->text(); @@ -363,7 +363,7 @@ class EmailNotification { Skin::makeInternalOrExternalUrl( wfMessage( 'helppage' )->inContentLanguage()->text() ) ); - # Replace this after transforming the message, bug 35019 + # Replace this after transforming the message, T37019 $postTransformKeys['$PAGESUMMARY'] = $this->summary == '' ? ' - ' : $this->summary; // Now build message's subject and body diff --git a/includes/mail/UserMailer.php b/includes/mail/UserMailer.php index 21effa0e02..3858f27566 100644 --- a/includes/mail/UserMailer.php +++ b/includes/mail/UserMailer.php @@ -103,9 +103,9 @@ class UserMailer { * @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: - * 'replyTo' MailAddress - * 'contentType' string default 'text/plain; charset=UTF-8' - * 'headers' array Extra headers to set + * 'replyTo' MailAddress + * 'contentType' string default 'text/plain; charset=UTF-8' + * 'headers' array Extra headers to set * * @throws MWException * @throws Exception @@ -197,9 +197,9 @@ class UserMailer { * @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: - * 'replyTo' MailAddress - * 'contentType' string default 'text/plain; charset=UTF-8' - * 'headers' array Extra headers to set + * 'replyTo' MailAddress + * 'contentType' string default 'text/plain; charset=UTF-8' + * 'headers' array Extra headers to set * * @throws MWException * @throws Exception diff --git a/includes/media/Bitmap.php b/includes/media/Bitmap.php index ac0564d2e8..0f0b074a67 100644 --- a/includes/media/Bitmap.php +++ b/includes/media/Bitmap.php @@ -150,7 +150,7 @@ class BitmapHandler extends TransformationalImageHandler { if ( $params['interlace'] ) { $animation_post = [ '-interlace', 'JPEG' ]; } - # Sharpening, see bug 6193 + # Sharpening, see T8193 if ( ( $params['physicalWidth'] + $params['physicalHeight'] ) / ( $params['srcWidth'] + $params['srcHeight'] ) < $wgSharpenReductionThreshold @@ -178,10 +178,10 @@ class BitmapHandler extends TransformationalImageHandler { // be a total drag. :P $scene = 0; } elseif ( $this->isAnimatedImage( $image ) ) { - // Coalesce is needed to scale animated GIFs properly (bug 1017). + // Coalesce is needed to scale animated GIFs properly (T3017). $animation_pre = [ '-coalesce' ]; // We optimize the output, but -optimize is broken, - // use optimizeTransparency instead (bug 11822) + // use optimizeTransparency instead (T13822) if ( version_compare( $this->getMagickVersion(), "6.3.5" ) >= 0 ) { $animation_post = [ '-fuzz', '5%', '-layers', 'optimizeTransparency' ]; } @@ -211,7 +211,7 @@ class BitmapHandler extends TransformationalImageHandler { && $xcfMeta['colorType'] === 'greyscale-alpha' && version_compare( $this->getMagickVersion(), "6.8.9-3" ) < 0 ) { - // bug 66323 - Greyscale images not rendered properly. + // T68323 - Greyscale images not rendered properly. // So only take the "red" channel. $channelOnly = [ '-channel', 'R', '-separate' ]; $animation_pre = array_merge( $animation_pre, $channelOnly ); @@ -283,7 +283,7 @@ class BitmapHandler extends TransformationalImageHandler { $im->readImage( $params['srcPath'] ); if ( $params['mimeType'] == 'image/jpeg' ) { - // Sharpening, see bug 6193 + // Sharpening, see T8193 if ( ( $params['physicalWidth'] + $params['physicalHeight'] ) / ( $params['srcWidth'] + $params['srcHeight'] ) < $wgSharpenReductionThreshold @@ -312,7 +312,7 @@ class BitmapHandler extends TransformationalImageHandler { // be a total drag. :P $im->setImageScene( 0 ); } elseif ( $this->isAnimatedImage( $image ) ) { - // Coalesce is needed to scale animated GIFs properly (bug 1017). + // Coalesce is needed to scale animated GIFs properly (T3017). $im = $im->coalesceImages(); } // GIF interlacing is only available since 6.3.4 diff --git a/includes/media/DjVuImage.php b/includes/media/DjVuImage.php index 5e8f8c8f1d..57b5b36c14 100644 --- a/includes/media/DjVuImage.php +++ b/includes/media/DjVuImage.php @@ -277,9 +277,9 @@ class DjVuImage { $reg = <<<EOR /\(page\s[\d-]*\s[\d-]*\s[\d-]*\s[\d-]*\s*" ((?> # Text to match is composed of atoms of either: - \\\\. # - any escaped character - | # - any character different from " and \ - [^"\\\\]+ + \\\\. # - any escaped character + | # - any character different from " and \ + [^"\\\\]+ )*?) "\s*\) | # Or page can be empty ; in this case, djvutxt dumps () diff --git a/includes/media/FormatMetadata.php b/includes/media/FormatMetadata.php index 51a0135859..f2372874ba 100644 --- a/includes/media/FormatMetadata.php +++ b/includes/media/FormatMetadata.php @@ -24,6 +24,7 @@ * @see http://exif.org/Exif2-2.PDF The Exif 2.2 specification * @file */ +use Wikimedia\Timestamp\TimestampException; /** * Format Image metadata values into a human readable form. diff --git a/includes/media/Jpeg.php b/includes/media/Jpeg.php index 6c857a8565..c9f0dfab10 100644 --- a/includes/media/Jpeg.php +++ b/includes/media/Jpeg.php @@ -112,8 +112,8 @@ class JpegHandler extends ExifBitmapHandler { wfDebug( __METHOD__ . ': ' . $e->getMessage() . "\n" ); /* This used to use 0 (ExifBitmapHandler::OLD_BROKEN_FILE) for the cases - * * No metadata in the file - * * Something is broken in the file. + * * No metadata in the file + * * Something is broken in the file. * However, if the metadata support gets expanded then you can't tell if the 0 is from * a broken file, or just no props found. A broken file is likely to stay broken, but * a file which had no props could have props once the metadata support is improved. diff --git a/includes/media/MediaHandler.php b/includes/media/MediaHandler.php index 2a735a2177..6a23bd6022 100644 --- a/includes/media/MediaHandler.php +++ b/includes/media/MediaHandler.php @@ -762,7 +762,7 @@ abstract class MediaHandler { * @param string $cmd */ protected function logErrorForExternalProcess( $retval, $err, $cmd ) { - # Keep error output limited (bug 57985) + # Keep error output limited (T59985) $errMessage = trim( substr( $err, 0, self::MAX_ERR_LOG_SIZE ) ); wfDebugLog( 'thumbnail', diff --git a/includes/media/SVGMetadataExtractor.php b/includes/media/SVGMetadataExtractor.php index 6a974c7829..4087fb3d5b 100644 --- a/includes/media/SVGMetadataExtractor.php +++ b/includes/media/SVGMetadataExtractor.php @@ -86,13 +86,13 @@ class SVGReader { } // Expand entities, since Adobe Illustrator uses them for xmlns - // attributes (bug 31719). Note that libxml2 has some protection + // attributes (T33719). Note that libxml2 has some protection // against large recursive entity expansions so this is not as // insecure as it might appear to be. However, it is still extremely // insecure. It's necessary to wrap any read() calls with // libxml_disable_entity_loader() to avoid arbitrary local file // inclusion, or even arbitrary code execution if the expect - // extension is installed (bug 46859). + // extension is installed (T48859). $oldDisable = libxml_disable_entity_loader( true ); $this->reader->setParserProperty( XMLReader::SUBST_ENTITIES, true ); diff --git a/includes/media/TransformationalImageHandler.php b/includes/media/TransformationalImageHandler.php index 60aec45729..1ab0f369db 100644 --- a/includes/media/TransformationalImageHandler.php +++ b/includes/media/TransformationalImageHandler.php @@ -569,7 +569,7 @@ abstract class TransformationalImageHandler extends ImageHandler { */ public function rotate( $file, $params ) { return new MediaTransformError( 'thumbnail_error', 0, 0, - get_class( $this ) . ' rotation not implemented' ); + static::class . ' rotation not implemented' ); } /** diff --git a/includes/objectcache/ObjectCache.php b/includes/objectcache/ObjectCache.php index 0a4f0ed3c5..cf9033b88f 100644 --- a/includes/objectcache/ObjectCache.php +++ b/includes/objectcache/ObjectCache.php @@ -359,7 +359,7 @@ class ObjectCache { * * @since 1.26 * @return WANObjectCache - * @deprecated Since 1.28 Use MediaWikiServices::getMainWANCache() + * @deprecated Since 1.28 Use MediaWikiServices::getMainWANObjectCache() */ public static function getMainWANInstance() { return MediaWikiServices::getInstance()->getMainWANObjectCache(); diff --git a/includes/objectcache/SqlBagOStuff.php b/includes/objectcache/SqlBagOStuff.php index de49fc3458..07581d7f44 100644 --- a/includes/objectcache/SqlBagOStuff.php +++ b/includes/objectcache/SqlBagOStuff.php @@ -23,6 +23,8 @@ use \MediaWiki\MediaWikiServices; use \Wikimedia\WaitConditionLoop; +use \Wikimedia\Rdbms\TransactionProfiler; +use Wikimedia\Rdbms\LoadBalancer; /** * Class to store objects in the database @@ -403,7 +405,7 @@ class SqlBagOStuff extends BagOStuff { $exptime = $this->convertExpiry( $exptime ); $encExpiry = $db->timestamp( $exptime ); } - // (bug 24425) use a replace if the db supports it instead of + // (T26425) use a replace if the db supports it instead of // delete/insert to avoid clashes with conflicting keynames $db->update( $tableName, @@ -478,7 +480,7 @@ class SqlBagOStuff extends BagOStuff { ], __METHOD__, 'IGNORE' ); if ( $db->affectedRows() == 0 ) { - // Race condition. See bug 28611 + // Race condition. See T30611 $newValue = null; } } catch ( DBError $e ) { diff --git a/includes/page/Article.php b/includes/page/Article.php index a4938547f3..e7a906d4bf 100644 --- a/includes/page/Article.php +++ b/includes/page/Article.php @@ -197,24 +197,6 @@ class Article implements Page { $this->mPage->clear(); } - /** - * Note that getContent does not follow redirects anymore. - * If you need to fetch redirectable content easily, try - * the shortcut in WikiPage::getRedirectTarget() - * - * This function has side effects! Do not use this function if you - * only want the real revision text if any. - * - * @deprecated since 1.21; use WikiPage::getContent() instead - * - * @return string Return the text of this revision - */ - public function getContent() { - wfDeprecated( __METHOD__, '1.21' ); - $content = $this->getContentObject(); - return ContentHandler::getContentText( $content ); - } - /** * Returns a Content object representing the pages effective display content, * not necessarily the revision's content! @@ -391,10 +373,9 @@ class Article implements Page { // Avoid PHP 7.1 warning of passing $this by reference $articlePage = $this; - ContentHandler::runLegacyHooks( + Hooks::run( 'ArticleAfterFetchContentObject', - [ &$articlePage, &$this->mContentObject ], - '1.21' + [ &$articlePage, &$this->mContentObject ] ); return $this->mContentObject; @@ -745,7 +726,7 @@ class Article implements Page { $ns = $this->getTitle()->getNamespace(); - # Don't index user and user talk pages for blocked users (bug 11443) + # Don't index user and user talk pages for blocked users (T13443) if ( ( $ns == NS_USER || $ns == NS_USER_TALK ) && !$this->getTitle()->isSubpage() ) { $specificTarget = null; $vagueTarget = null; @@ -803,7 +784,7 @@ class Article implements Page { } if ( isset( $wgArticleRobotPolicies[$this->getTitle()->getPrefixedText()] ) ) { - # (bug 14900) site config can override user-defined __INDEX__ or __NOINDEX__ + # (T16900) site config can override user-defined __INDEX__ or __NOINDEX__ $policy = array_merge( $policy, self::formatRobotPolicy( $wgArticleRobotPolicies[$this->getTitle()->getPrefixedText()] ) @@ -1190,7 +1171,10 @@ class Article implements Page { $loggedIn = $this->getContext()->getUser()->isLoggedIn(); if ( $loggedIn || $cache->get( $key ) ) { $logTypes = [ 'delete', 'move' ]; - $conds = [ "log_action != 'revision'" ]; + + $dbr = wfGetDB( DB_REPLICA ); + + $conds = [ 'log_action != ' . $dbr->addQuotes( 'revision' ) ]; // Give extensions a chance to hide their (unrelated) log entries Hooks::run( 'Article::MissingArticleConditions', [ &$conds, $logTypes ] ); LogEventsList::showLogExtract( @@ -1673,15 +1657,6 @@ class Article implements Page { $title = $this->getTitle(); $ctx = $this->getContext(); $outputPage = $ctx->getOutput(); - if ( !wfMessage( 'deletereason-dropdown' )->inContentLanguage()->isDisabled() ) { - $reasonsList = Xml::getArrayFromWikiTextList( - wfMessage( 'deletereason-dropdown' )->inContentLanguage()->text() - ); - $outputPage->addModules( 'mediawiki.reasonSuggest' ); - $outputPage->addJsConfigVars( [ - 'reasons' => $reasonsList - ] ); - } $useMediaWikiUIEverywhere = $ctx->getConfig()->get( 'UseMediaWikiUIEverywhere' ); $outputPage->setPageTitle( wfMessage( 'delete-confirm', $title->getPrefixedText() ) ); $outputPage->addBacklinkSubtitle( $title ); @@ -2044,22 +2019,13 @@ class Article implements Page { /** * Call to WikiPage function for backwards compatibility. - * @see WikiPage::doEdit - * - * @deprecated since 1.21: use doEditContent() instead. - */ - public function doEdit( $text, $summary, $flags = 0, $baseRevId = false, $user = null ) { - wfDeprecated( __METHOD__, '1.21' ); - return $this->mPage->doEdit( $text, $summary, $flags, $baseRevId, $user ); - } - - /** - * Call to WikiPage function for backwards compatibility. + * @deprecated since 1.29. Use WikiPage::doEditContent() directly instead * @see WikiPage::doEditContent */ public function doEditContent( Content $content, $summary, $flags = 0, $baseRevId = false, User $user = null, $serialFormat = null ) { + wfDeprecated( __METHOD__, '1.29' ); return $this->mPage->doEditContent( $content, $summary, $flags, $baseRevId, $user, $serialFormat ); diff --git a/includes/page/ImagePage.php b/includes/page/ImagePage.php index b60b0108a1..f8202a6cb2 100644 --- a/includes/page/ImagePage.php +++ b/includes/page/ImagePage.php @@ -20,6 +20,8 @@ * @file */ +use Wikimedia\Rdbms\ResultWrapper; + /** * Class for viewing MediaWiki file description pages * @@ -213,7 +215,7 @@ class ImagePage extends Article { } $out->addModuleStyles( [ - 'filepage', // always show the local local Filepage.css, bug 29277 + 'filepage', // always show the local local Filepage.css, T31277 'mediawiki.action.view.filepage', // Add MediaWiki styles for a file page ] ); } @@ -336,7 +338,7 @@ class ImagePage extends Article { $filename = wfEscapeWikiText( $this->displayImg->getName() ); $linktext = $filename; - // Use of &$this in hooks triggers warnings in PHP 7.1 + // Avoid PHP 7.1 warning from passing $this by reference $imagePage = $this; Hooks::run( 'ImageOpenShowImageInlineBefore', [ &$imagePage, &$out ] ); @@ -534,7 +536,7 @@ class ImagePage extends Article { // this will get messy. // The dirmark, however, must not be immediately adjacent // to the filename, because it can get copied with it. - // See bug 25277. + // See T27277. // @codingStandardsIgnoreStart Ignore long line $out->addWikiText( <<<EOT <div class="fullMedia"><span class="dangerousLink">{$medialink}</span> $dirmark<span class="fileInfo">$longDesc</span></div> @@ -585,6 +587,8 @@ EOT } else { # Image does not exist if ( !$this->getId() ) { + $dbr = wfGetDB( DB_REPLICA ); + # No article exists either # Show deletion log to be consistent with normal articles LogEventsList::showLogExtract( @@ -593,7 +597,7 @@ EOT $this->getTitle()->getPrefixedText(), '', [ 'lim' => 10, - 'conds' => [ "log_action != 'revision'" ], + 'conds' => [ 'log_action != ' . $dbr->addQuotes( 'revision' ) ], 'showIfEmpty' => false, 'msgKey' => [ 'moveddeleted-notice' ] ] diff --git a/includes/page/PageArchive.php b/includes/page/PageArchive.php new file mode 100644 index 0000000000..388e69371b --- /dev/null +++ b/includes/page/PageArchive.php @@ -0,0 +1,743 @@ +<?php +/** + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * http://www.gnu.org/copyleft/gpl.html + * + * @file + */ + +use MediaWiki\MediaWikiServices; +use Wikimedia\Rdbms\ResultWrapper; + +/** + * Used to show archived pages and eventually restore them. + */ +class PageArchive { + /** @var Title */ + protected $title; + + /** @var Status */ + protected $fileStatus; + + /** @var Status */ + protected $revisionStatus; + + /** @var Config */ + protected $config; + + public function __construct( $title, Config $config = null ) { + if ( is_null( $title ) ) { + throw new MWException( __METHOD__ . ' given a null title.' ); + } + $this->title = $title; + if ( $config === null ) { + wfDebug( __METHOD__ . ' did not have a Config object passed to it' ); + $config = MediaWikiServices::getInstance()->getMainConfig(); + } + $this->config = $config; + } + + public function doesWrites() { + return true; + } + + /** + * List all deleted pages recorded in the archive table. Returns result + * wrapper with (ar_namespace, ar_title, count) fields, ordered by page + * namespace/title. + * + * @return ResultWrapper + */ + public static function listAllPages() { + $dbr = wfGetDB( DB_REPLICA ); + + return self::listPages( $dbr, '' ); + } + + /** + * List deleted pages recorded in the archive table matching the + * given title prefix. + * Returns result wrapper with (ar_namespace, ar_title, count) fields. + * + * @param string $prefix Title prefix + * @return ResultWrapper + */ + public static function listPagesByPrefix( $prefix ) { + $dbr = wfGetDB( DB_REPLICA ); + + $title = Title::newFromText( $prefix ); + if ( $title ) { + $ns = $title->getNamespace(); + $prefix = $title->getDBkey(); + } else { + // Prolly won't work too good + // @todo handle bare namespace names cleanly? + $ns = 0; + } + + $conds = [ + 'ar_namespace' => $ns, + 'ar_title' . $dbr->buildLike( $prefix, $dbr->anyString() ), + ]; + + return self::listPages( $dbr, $conds ); + } + + /** + * @param IDatabase $dbr + * @param string|array $condition + * @return bool|ResultWrapper + */ + protected static function listPages( $dbr, $condition ) { + return $dbr->select( + [ 'archive' ], + [ + 'ar_namespace', + 'ar_title', + 'count' => 'COUNT(*)' + ], + $condition, + __METHOD__, + [ + 'GROUP BY' => [ 'ar_namespace', 'ar_title' ], + 'ORDER BY' => [ 'ar_namespace', 'ar_title' ], + 'LIMIT' => 100, + ] + ); + } + + /** + * List the revisions of the given page. Returns result wrapper with + * (ar_minor_edit, ar_timestamp, ar_user, ar_user_text, ar_comment) fields. + * + * @return ResultWrapper + */ + public function listRevisions() { + $dbr = wfGetDB( DB_REPLICA ); + + $tables = [ 'archive' ]; + + $fields = [ + 'ar_minor_edit', 'ar_timestamp', 'ar_user', 'ar_user_text', + 'ar_comment', 'ar_len', 'ar_deleted', 'ar_rev_id', 'ar_sha1', + ]; + + if ( $this->config->get( 'ContentHandlerUseDB' ) ) { + $fields[] = 'ar_content_format'; + $fields[] = 'ar_content_model'; + } + + $conds = [ 'ar_namespace' => $this->title->getNamespace(), + 'ar_title' => $this->title->getDBkey() ]; + + $options = [ 'ORDER BY' => 'ar_timestamp DESC' ]; + + $join_conds = []; + + ChangeTags::modifyDisplayQuery( + $tables, + $fields, + $conds, + $join_conds, + $options, + '' + ); + + return $dbr->select( $tables, + $fields, + $conds, + __METHOD__, + $options, + $join_conds + ); + } + + /** + * List the deleted file revisions for this page, if it's a file page. + * Returns a result wrapper with various filearchive fields, or null + * if not a file page. + * + * @return ResultWrapper + * @todo Does this belong in Image for fuller encapsulation? + */ + public function listFiles() { + if ( $this->title->getNamespace() != NS_FILE ) { + return null; + } + + $dbr = wfGetDB( DB_REPLICA ); + return $dbr->select( + 'filearchive', + ArchivedFile::selectFields(), + [ 'fa_name' => $this->title->getDBkey() ], + __METHOD__, + [ 'ORDER BY' => 'fa_timestamp DESC' ] + ); + } + + /** + * Return a Revision object containing data for the deleted revision. + * Note that the result *may* or *may not* have a null page ID. + * + * @param string $timestamp + * @return Revision|null + */ + public function getRevision( $timestamp ) { + $dbr = wfGetDB( DB_REPLICA ); + + $fields = [ + 'ar_rev_id', + 'ar_text', + 'ar_comment', + 'ar_user', + 'ar_user_text', + 'ar_timestamp', + 'ar_minor_edit', + 'ar_flags', + 'ar_text_id', + 'ar_deleted', + 'ar_len', + 'ar_sha1', + ]; + + if ( $this->config->get( 'ContentHandlerUseDB' ) ) { + $fields[] = 'ar_content_format'; + $fields[] = 'ar_content_model'; + } + + $row = $dbr->selectRow( 'archive', + $fields, + [ 'ar_namespace' => $this->title->getNamespace(), + 'ar_title' => $this->title->getDBkey(), + 'ar_timestamp' => $dbr->timestamp( $timestamp ) ], + __METHOD__ ); + + if ( $row ) { + return Revision::newFromArchiveRow( $row, [ 'title' => $this->title ] ); + } + + return null; + } + + /** + * Return the most-previous revision, either live or deleted, against + * the deleted revision given by timestamp. + * + * May produce unexpected results in case of history merges or other + * unusual time issues. + * + * @param string $timestamp + * @return Revision|null Null when there is no previous revision + */ + public function getPreviousRevision( $timestamp ) { + $dbr = wfGetDB( DB_REPLICA ); + + // Check the previous deleted revision... + $row = $dbr->selectRow( 'archive', + 'ar_timestamp', + [ 'ar_namespace' => $this->title->getNamespace(), + 'ar_title' => $this->title->getDBkey(), + 'ar_timestamp < ' . + $dbr->addQuotes( $dbr->timestamp( $timestamp ) ) ], + __METHOD__, + [ + 'ORDER BY' => 'ar_timestamp DESC', + 'LIMIT' => 1 ] ); + $prevDeleted = $row ? wfTimestamp( TS_MW, $row->ar_timestamp ) : false; + + $row = $dbr->selectRow( [ 'page', 'revision' ], + [ 'rev_id', 'rev_timestamp' ], + [ + 'page_namespace' => $this->title->getNamespace(), + 'page_title' => $this->title->getDBkey(), + 'page_id = rev_page', + 'rev_timestamp < ' . + $dbr->addQuotes( $dbr->timestamp( $timestamp ) ) ], + __METHOD__, + [ + 'ORDER BY' => 'rev_timestamp DESC', + 'LIMIT' => 1 ] ); + $prevLive = $row ? wfTimestamp( TS_MW, $row->rev_timestamp ) : false; + $prevLiveId = $row ? intval( $row->rev_id ) : null; + + if ( $prevLive && $prevLive > $prevDeleted ) { + // Most prior revision was live + return Revision::newFromId( $prevLiveId ); + } elseif ( $prevDeleted ) { + // Most prior revision was deleted + return $this->getRevision( $prevDeleted ); + } + + // No prior revision on this page. + return null; + } + + /** + * Get the text from an archive row containing ar_text, ar_flags and ar_text_id + * + * @param object $row Database row + * @return string + */ + public function getTextFromRow( $row ) { + if ( is_null( $row->ar_text_id ) ) { + // An old row from MediaWiki 1.4 or previous. + // Text is embedded in this row in classic compression format. + return Revision::getRevisionText( $row, 'ar_' ); + } + + // New-style: keyed to the text storage backend. + $dbr = wfGetDB( DB_REPLICA ); + $text = $dbr->selectRow( 'text', + [ 'old_text', 'old_flags' ], + [ 'old_id' => $row->ar_text_id ], + __METHOD__ ); + + return Revision::getRevisionText( $text ); + } + + /** + * Fetch (and decompress if necessary) the stored text of the most + * recently edited deleted revision of the page. + * + * If there are no archived revisions for the page, returns NULL. + * + * @return string|null + */ + public function getLastRevisionText() { + $dbr = wfGetDB( DB_REPLICA ); + $row = $dbr->selectRow( 'archive', + [ 'ar_text', 'ar_flags', 'ar_text_id' ], + [ 'ar_namespace' => $this->title->getNamespace(), + 'ar_title' => $this->title->getDBkey() ], + __METHOD__, + [ 'ORDER BY' => 'ar_timestamp DESC' ] ); + + if ( $row ) { + return $this->getTextFromRow( $row ); + } + + return null; + } + + /** + * Quick check if any archived revisions are present for the page. + * + * @return bool + */ + public function isDeleted() { + $dbr = wfGetDB( DB_REPLICA ); + $n = $dbr->selectField( 'archive', 'COUNT(ar_title)', + [ 'ar_namespace' => $this->title->getNamespace(), + 'ar_title' => $this->title->getDBkey() ], + __METHOD__ + ); + + return ( $n > 0 ); + } + + /** + * Restore the given (or all) text and file revisions for the page. + * Once restored, the items will be removed from the archive tables. + * The deletion log will be updated with an undeletion notice. + * + * This also sets Status objects, $this->fileStatus and $this->revisionStatus + * (depending what operations are attempted). + * + * @param array $timestamps Pass an empty array to restore all revisions, + * otherwise list the ones to undelete. + * @param string $comment + * @param array $fileVersions + * @param bool $unsuppress + * @param User $user User performing the action, or null to use $wgUser + * @param string|string[] $tags Change tags to add to log entry + * ($user should be able to add the specified tags before this is called) + * @return array|bool array(number of file revisions restored, number of image revisions + * restored, log message) on success, false on failure. + */ + public function undelete( $timestamps, $comment = '', $fileVersions = [], + $unsuppress = false, User $user = null, $tags = null + ) { + // If both the set of text revisions and file revisions are empty, + // restore everything. Otherwise, just restore the requested items. + $restoreAll = empty( $timestamps ) && empty( $fileVersions ); + + $restoreText = $restoreAll || !empty( $timestamps ); + $restoreFiles = $restoreAll || !empty( $fileVersions ); + + if ( $restoreFiles && $this->title->getNamespace() == NS_FILE ) { + $img = wfLocalFile( $this->title ); + $img->load( File::READ_LATEST ); + $this->fileStatus = $img->restore( $fileVersions, $unsuppress ); + if ( !$this->fileStatus->isOK() ) { + return false; + } + $filesRestored = $this->fileStatus->successCount; + } else { + $filesRestored = 0; + } + + if ( $restoreText ) { + $this->revisionStatus = $this->undeleteRevisions( $timestamps, $unsuppress, $comment ); + if ( !$this->revisionStatus->isOK() ) { + return false; + } + + $textRestored = $this->revisionStatus->getValue(); + } else { + $textRestored = 0; + } + + // Touch the log! + + if ( $textRestored && $filesRestored ) { + $reason = wfMessage( 'undeletedrevisions-files' ) + ->numParams( $textRestored, $filesRestored )->inContentLanguage()->text(); + } elseif ( $textRestored ) { + $reason = wfMessage( 'undeletedrevisions' )->numParams( $textRestored ) + ->inContentLanguage()->text(); + } elseif ( $filesRestored ) { + $reason = wfMessage( 'undeletedfiles' )->numParams( $filesRestored ) + ->inContentLanguage()->text(); + } else { + wfDebug( "Undelete: nothing undeleted...\n" ); + + return false; + } + + if ( trim( $comment ) != '' ) { + $reason .= wfMessage( 'colon-separator' )->inContentLanguage()->text() . $comment; + } + + if ( $user === null ) { + global $wgUser; + $user = $wgUser; + } + + $logEntry = new ManualLogEntry( 'delete', 'restore' ); + $logEntry->setPerformer( $user ); + $logEntry->setTarget( $this->title ); + $logEntry->setComment( $reason ); + $logEntry->setTags( $tags ); + + Hooks::run( 'ArticleUndeleteLogEntry', [ $this, &$logEntry, $user ] ); + + $logid = $logEntry->insert(); + $logEntry->publish( $logid ); + + return [ $textRestored, $filesRestored, $reason ]; + } + + /** + * This is the meaty bit -- It restores archived revisions of the given page + * to the revision table. + * + * @param array $timestamps Pass an empty array to restore all revisions, + * otherwise list the ones to undelete. + * @param bool $unsuppress Remove all ar_deleted/fa_deleted restrictions of seletected revs + * @param string $comment + * @throws ReadOnlyError + * @return Status Status object containing the number of revisions restored on success + */ + private function undeleteRevisions( $timestamps, $unsuppress = false, $comment = '' ) { + if ( wfReadOnly() ) { + throw new ReadOnlyError(); + } + + $dbw = wfGetDB( DB_MASTER ); + $dbw->startAtomic( __METHOD__ ); + + $restoreAll = empty( $timestamps ); + + # Does this page already exist? We'll have to update it... + $article = WikiPage::factory( $this->title ); + # Load latest data for the current page (T33179) + $article->loadPageData( 'fromdbmaster' ); + $oldcountable = $article->isCountable(); + + $page = $dbw->selectRow( 'page', + [ 'page_id', 'page_latest' ], + [ 'page_namespace' => $this->title->getNamespace(), + 'page_title' => $this->title->getDBkey() ], + __METHOD__, + [ 'FOR UPDATE' ] // lock page + ); + + if ( $page ) { + $makepage = false; + # Page already exists. Import the history, and if necessary + # we'll update the latest revision field in the record. + + # Get the time span of this page + $previousTimestamp = $dbw->selectField( 'revision', 'rev_timestamp', + [ 'rev_id' => $page->page_latest ], + __METHOD__ ); + + if ( $previousTimestamp === false ) { + wfDebug( __METHOD__ . ": existing page refers to a page_latest that does not exist\n" ); + + $status = Status::newGood( 0 ); + $status->warning( 'undeleterevision-missing' ); + $dbw->endAtomic( __METHOD__ ); + + return $status; + } + } else { + # Have to create a new article... + $makepage = true; + $previousTimestamp = 0; + } + + $oldWhere = [ + 'ar_namespace' => $this->title->getNamespace(), + 'ar_title' => $this->title->getDBkey(), + ]; + if ( !$restoreAll ) { + $oldWhere['ar_timestamp'] = array_map( [ &$dbw, 'timestamp' ], $timestamps ); + } + + $fields = [ + 'ar_id', + 'ar_rev_id', + 'rev_id', + 'ar_text', + 'ar_comment', + 'ar_user', + 'ar_user_text', + 'ar_timestamp', + 'ar_minor_edit', + 'ar_flags', + 'ar_text_id', + 'ar_deleted', + 'ar_page_id', + 'ar_len', + 'ar_sha1' + ]; + + if ( $this->config->get( 'ContentHandlerUseDB' ) ) { + $fields[] = 'ar_content_format'; + $fields[] = 'ar_content_model'; + } + + /** + * Select each archived revision... + */ + $result = $dbw->select( + [ 'archive', 'revision' ], + $fields, + $oldWhere, + __METHOD__, + /* options */ + [ 'ORDER BY' => 'ar_timestamp' ], + [ 'revision' => [ 'LEFT JOIN', 'ar_rev_id=rev_id' ] ] + ); + + $rev_count = $result->numRows(); + if ( !$rev_count ) { + wfDebug( __METHOD__ . ": no revisions to restore\n" ); + + $status = Status::newGood( 0 ); + $status->warning( "undelete-no-results" ); + $dbw->endAtomic( __METHOD__ ); + + return $status; + } + + // We use ar_id because there can be duplicate ar_rev_id even for the same + // page. In this case, we may be able to restore the first one. + $restoreFailedArIds = []; + + // Map rev_id to the ar_id that is allowed to use it. When checking later, + // if it doesn't match, the current ar_id can not be restored. + + // Value can be an ar_id or -1 (-1 means no ar_id can use it, since the + // rev_id is taken before we even start the restore). + $allowedRevIdToArIdMap = []; + + $latestRestorableRow = null; + + foreach ( $result as $row ) { + if ( $row->ar_rev_id ) { + // rev_id is taken even before we start restoring. + if ( $row->ar_rev_id === $row->rev_id ) { + $restoreFailedArIds[] = $row->ar_id; + $allowedRevIdToArIdMap[$row->ar_rev_id] = -1; + } else { + // rev_id is not taken yet in the DB, but it might be taken + // by a prior revision in the same restore operation. If + // not, we need to reserve it. + if ( isset( $allowedRevIdToArIdMap[$row->ar_rev_id] ) ) { + $restoreFailedArIds[] = $row->ar_id; + } else { + $allowedRevIdToArIdMap[$row->ar_rev_id] = $row->ar_id; + $latestRestorableRow = $row; + } + } + } else { + // If ar_rev_id is null, there can't be a collision, and a + // rev_id will be chosen automatically. + $latestRestorableRow = $row; + } + } + + $result->seek( 0 ); // move back + + $oldPageId = 0; + if ( $latestRestorableRow !== null ) { + $oldPageId = (int)$latestRestorableRow->ar_page_id; // pass this to ArticleUndelete hook + + // grab the content to check consistency with global state before restoring the page. + $revision = Revision::newFromArchiveRow( $latestRestorableRow, + [ + 'title' => $article->getTitle(), // used to derive default content model + ] + ); + $user = User::newFromName( $revision->getUserText( Revision::RAW ), false ); + $content = $revision->getContent( Revision::RAW ); + + // NOTE: article ID may not be known yet. prepareSave() should not modify the database. + $status = $content->prepareSave( $article, 0, -1, $user ); + if ( !$status->isOK() ) { + $dbw->endAtomic( __METHOD__ ); + + return $status; + } + } + + $newid = false; // newly created page ID + $restored = 0; // number of revisions restored + /** @var Revision $revision */ + $revision = null; + + // If there are no restorable revisions, we can skip most of the steps. + if ( $latestRestorableRow === null ) { + $failedRevisionCount = $rev_count; + } else { + if ( $makepage ) { + // Check the state of the newest to-be version... + if ( !$unsuppress + && ( $latestRestorableRow->ar_deleted & Revision::DELETED_TEXT ) + ) { + $dbw->endAtomic( __METHOD__ ); + + return Status::newFatal( "undeleterevdel" ); + } + // Safe to insert now... + $newid = $article->insertOn( $dbw, $latestRestorableRow->ar_page_id ); + if ( $newid === false ) { + // The old ID is reserved; let's pick another + $newid = $article->insertOn( $dbw ); + } + $pageId = $newid; + } else { + // Check if a deleted revision will become the current revision... + if ( $latestRestorableRow->ar_timestamp > $previousTimestamp ) { + // Check the state of the newest to-be version... + if ( !$unsuppress + && ( $latestRestorableRow->ar_deleted & Revision::DELETED_TEXT ) + ) { + $dbw->endAtomic( __METHOD__ ); + + return Status::newFatal( "undeleterevdel" ); + } + } + + $newid = false; + $pageId = $article->getId(); + } + + foreach ( $result as $row ) { + // Check for key dupes due to needed archive integrity. + if ( $row->ar_rev_id && $allowedRevIdToArIdMap[$row->ar_rev_id] !== $row->ar_id ) { + continue; + } + // Insert one revision at a time...maintaining deletion status + // unless we are specifically removing all restrictions... + $revision = Revision::newFromArchiveRow( $row, + [ + 'page' => $pageId, + 'title' => $this->title, + 'deleted' => $unsuppress ? 0 : $row->ar_deleted + ] ); + + $revision->insertOn( $dbw ); + $restored++; + + Hooks::run( 'ArticleRevisionUndeleted', + [ &$this->title, $revision, $row->ar_page_id ] ); + } + + // Now that it's safely stored, take it out of the archive + // Don't delete rows that we failed to restore + $toDeleteConds = $oldWhere; + $failedRevisionCount = count( $restoreFailedArIds ); + if ( $failedRevisionCount > 0 ) { + $toDeleteConds[] = 'ar_id NOT IN ( ' . $dbw->makeList( $restoreFailedArIds ) . ' )'; + } + + $dbw->delete( 'archive', + $toDeleteConds, + __METHOD__ ); + } + + $status = Status::newGood( $restored ); + + if ( $failedRevisionCount > 0 ) { + $status->warning( + wfMessage( 'undeleterevision-duplicate-revid', $failedRevisionCount ) ); + } + + // Was anything restored at all? + if ( $restored ) { + $created = (bool)$newid; + // Attach the latest revision to the page... + $wasnew = $article->updateIfNewerOn( $dbw, $revision ); + if ( $created || $wasnew ) { + // Update site stats, link tables, etc + $article->doEditUpdates( + $revision, + User::newFromName( $revision->getUserText( Revision::RAW ), false ), + [ + 'created' => $created, + 'oldcountable' => $oldcountable, + 'restored' => true + ] + ); + } + + Hooks::run( 'ArticleUndelete', [ &$this->title, $created, $comment, $oldPageId ] ); + if ( $this->title->getNamespace() == NS_FILE ) { + DeferredUpdates::addUpdate( new HTMLCacheUpdate( $this->title, 'imagelinks' ) ); + } + } + + $dbw->endAtomic( __METHOD__ ); + + return $status; + } + + /** + * @return Status + */ + public function getFileStatus() { + return $this->fileStatus; + } + + /** + * @return Status + */ + public function getRevisionStatus() { + return $this->revisionStatus; + } +} diff --git a/includes/page/WikiFilePage.php b/includes/page/WikiFilePage.php index 1fa4bfa981..e4b524b811 100644 --- a/includes/page/WikiFilePage.php +++ b/includes/page/WikiFilePage.php @@ -20,6 +20,8 @@ * @file */ +use Wikimedia\Rdbms\FakeResultWrapper; + /** * Special handling for file pages * diff --git a/includes/page/WikiPage.php b/includes/page/WikiPage.php index 0f1efe71da..4bc8ad6125 100644 --- a/includes/page/WikiPage.php +++ b/includes/page/WikiPage.php @@ -22,6 +22,7 @@ use \MediaWiki\Logger\LoggerFactory; use \MediaWiki\MediaWikiServices; +use Wikimedia\Rdbms\FakeResultWrapper; /** * Class representing a MediaWiki article and history. @@ -151,7 +152,7 @@ class WikiPage implements Page, IDBAccessObject { * @return WikiPage|null */ public static function newFromID( $id, $from = 'fromdb' ) { - // page id's are never 0 or negative, see bug 61166 + // page ids are never 0 or negative, see T63166 if ( $id < 1 ) { return null; } @@ -257,7 +258,7 @@ class WikiPage implements Page, IDBAccessObject { $this->mTimestamp = ''; $this->mIsRedirect = false; $this->mLatest = false; - // Bug 57026: do not clear mPreparedEdit since prepareTextForEdit() already checks + // T59026: do not clear mPreparedEdit since prepareTextForEdit() already checks // the requested rev ID and content against the cached one for equality. For most // content types, the output should not change during the lifetime of this cache. // Clearing it can cause extra parses on edit for no reason. @@ -323,7 +324,7 @@ class WikiPage implements Page, IDBAccessObject { $row = $dbr->selectRow( 'page', $fields, $conditions, __METHOD__, $options ); - Hooks::run( 'ArticlePageDataAfter', [ &$this, &$row ] ); + Hooks::run( 'ArticlePageDataAfter', [ &$wikiPage, &$row ] ); return $row; } @@ -424,7 +425,7 @@ class WikiPage implements Page, IDBAccessObject { $this->mLinksUpdated = wfTimestampOrNull( TS_MW, $data->page_links_updated ); $this->mIsRedirect = intval( $data->page_is_redirect ); $this->mLatest = intval( $data->page_latest ); - // Bug 37225: $latest may no longer match the cached latest Revision object. + // T39225: $latest may no longer match the cached latest Revision object. // Double-check the ID of any cached latest Revision object for consistency. if ( $this->mLastRevision && $this->mLastRevision->getId() != $this->mLatest ) { $this->mLastRevision = null; @@ -582,12 +583,10 @@ class WikiPage implements Page, IDBAccessObject { $row = null; while ( $continue ) { $row = $db->selectRow( - [ 'page', 'revision' ], + [ 'revision' ], $revSelectFields, [ - 'page_namespace' => $this->mTitle->getNamespace(), - 'page_title' => $this->mTitle->getDBkey(), - 'rev_page = page_id' + 'rev_page' => $this->getId() ], __METHOD__, [ @@ -621,7 +620,7 @@ class WikiPage implements Page, IDBAccessObject { } if ( $this->mDataLoadedFrom == self::READ_LOCKING ) { - // Bug 37225: if session S1 loads the page row FOR UPDATE, the result always + // T39225: if session S1 loads the page row FOR UPDATE, the result always // includes the latest changes committed. This is true even within REPEATABLE-READ // transactions, where S1 normally only sees changes committed before the first S1 // SELECT. Thus we need S1 to also gets the revision row FOR UPDATE; otherwise, it @@ -1462,7 +1461,7 @@ class WikiPage implements Page, IDBAccessObject { $this->getContentHandler()->getModelID() ); } - // Bug 30711: always use current version when adding a new section + // T32711: always use current version when adding a new section if ( is_null( $baseRevId ) || $sectionId === 'new' ) { $oldContent = $this->getContent(); } else { @@ -1504,68 +1503,6 @@ class WikiPage implements Page, IDBAccessObject { return $flags; } - /** - * Change an existing article or create a new article. Updates RC and all necessary caches, - * optionally via the deferred update array. - * - * @param string $text New text - * @param string $summary Edit summary - * @param int $flags Bitfield: - * EDIT_NEW - * Article is known or assumed to be non-existent, create a new one - * EDIT_UPDATE - * Article is known or assumed to be pre-existing, update it - * EDIT_MINOR - * Mark this edit minor, if the user is allowed to do so - * EDIT_SUPPRESS_RC - * Do not log the change in recentchanges - * EDIT_FORCE_BOT - * Mark the edit a "bot" edit regardless of user rights - * EDIT_AUTOSUMMARY - * Fill in blank summaries with generated text where possible - * EDIT_INTERNAL - * Signal that the page retrieve/save cycle happened entirely in this request. - * - * If neither EDIT_NEW nor EDIT_UPDATE is specified, the status of the - * article will be detected. If EDIT_UPDATE is specified and the article - * doesn't exist, the function will return an edit-gone-missing error. If - * EDIT_NEW is specified and the article does exist, an edit-already-exists - * error will be returned. These two conditions are also possible with - * auto-detection due to MediaWiki's performance-optimised locking strategy. - * - * @param bool|int $baseRevId The revision ID this edit was based off, if any. - * This is not the parent revision ID, rather the revision ID for older - * content used as the source for a rollback, for example. - * @param User $user The user doing the edit - * - * @throws MWException - * @return Status Possible errors: - * edit-hook-aborted: The ArticleSave hook aborted the edit but didn't - * set the fatal flag of $status - * edit-gone-missing: In update mode, but the article didn't exist. - * edit-conflict: In update mode, the article changed unexpectedly. - * edit-no-change: Warning that the text was the same as before. - * edit-already-exists: In creation mode, but the article already exists. - * - * Extensions may define additional errors. - * - * $return->value will contain an associative array with members as follows: - * new: Boolean indicating if the function attempted to create a new article. - * revision: The revision object for the inserted revision, or null. - * - * Compatibility note: this function previously returned a boolean value - * indicating success/failure - * - * @deprecated since 1.21: use doEditContent() instead. - */ - public function doEdit( $text, $summary, $flags = 0, $baseRevId = false, $user = null ) { - wfDeprecated( __METHOD__, '1.21' ); - - $content = ContentHandler::makeContent( $text, $this->getTitle() ); - - return $this->doEditContent( $content, $summary, $flags, $baseRevId, $user ); - } - /** * Change an existing article or create a new article. Updates RC and all necessary caches, * optionally via the deferred update array. @@ -1663,9 +1600,7 @@ class WikiPage implements Page, IDBAccessObject { $hook_args = [ &$wikiPage, &$user, &$content, &$summary, $flags & EDIT_MINOR, null, null, &$flags, &$hookStatus ]; // Check if the hook rejected the attempted save - if ( !Hooks::run( 'PageContentSave', $hook_args ) - || !ContentHandler::runLegacyHooks( 'ArticleSave', $hook_args, '1.21' ) - ) { + if ( !Hooks::run( 'PageContentSave', $hook_args ) ) { if ( $hookStatus->isOK() ) { // Hook returned false but didn't call fatal(); use generic message $hookStatus->fatal( 'edit-hook-aborted' ); @@ -1761,7 +1696,7 @@ class WikiPage implements Page, IDBAccessObject { return $status; } elseif ( !$oldContent ) { - // Sanity check for bug 37225 + // Sanity check for T39225 throw new MWException( "Could not find text for current revision {$oldid}." ); } @@ -1849,7 +1784,7 @@ class WikiPage implements Page, IDBAccessObject { $dbw->endAtomic( __METHOD__ ); $this->mTimestamp = $now; } else { - // Bug 32948: revision ID must be set to page {{REVISIONID}} and + // T34948: revision ID must be set to page {{REVISIONID}} and // related variables correctly. Likewise for {{REVISIONUSER}} (T135261). $revision->setId( $this->getLatest() ); $revision->setUserIdAndName( @@ -1893,7 +1828,6 @@ class WikiPage implements Page, IDBAccessObject { $params = [ &$wikiPage, &$user, $content, $summary, $flags & EDIT_MINOR, null, null, &$flags, $revision, &$status, $meta['baseRevId'], $meta['undidRevId'] ]; - ContentHandler::runLegacyHooks( 'ArticleSaveComplete', $params ); Hooks::run( 'PageContentSaveComplete', $params ); } ), @@ -2015,13 +1949,10 @@ class WikiPage implements Page, IDBAccessObject { // Trigger post-create hook $params = [ &$wikiPage, &$user, $content, $summary, $flags & EDIT_MINOR, null, null, &$flags, $revision ]; - ContentHandler::runLegacyHooks( 'ArticleInsertComplete', $params, '1.21' ); Hooks::run( 'PageContentInsertComplete', $params ); // Trigger post-save hook $params = array_merge( $params, [ &$status, $meta['baseRevId'] ] ); - ContentHandler::runLegacyHooks( 'ArticleSaveComplete', $params, '1.21' ); Hooks::run( 'PageContentSaveComplete', $params ); - } ), DeferredUpdates::PRESEND @@ -2093,7 +2024,7 @@ class WikiPage implements Page, IDBAccessObject { $user = is_null( $user ) ? $wgUser : $user; // XXX: check $user->getId() here??? - // Use a sane default for $serialFormat, see bug 57026 + // Use a sane default for $serialFormat, see T59026 if ( $serialFormat === null ) { $serialFormat = $content->getContentHandler()->getDefaultFormat(); } @@ -2156,8 +2087,12 @@ class WikiPage implements Page, IDBAccessObject { ); } else { // Try to avoid a second parse if {{REVISIONID}} is used - $edit->popts->setSpeculativeRevIdCallback( function () { - return 1 + (int)wfGetDB( DB_MASTER )->selectField( + $dbIndex = ( $this->mDataLoadedFrom & self::READ_LATEST ) === self::READ_LATEST + ? DB_MASTER // use the best possible guess + : DB_REPLICA; // T154554 + + $edit->popts->setSpeculativeRevIdCallback( function () use ( $dbIndex ) { + return 1 + (int)wfGetDB( $dbIndex )->selectField( 'revision', 'MAX(rev_id)', [], @@ -2261,7 +2196,7 @@ class WikiPage implements Page, IDBAccessObject { // Update the links tables and other secondary data if ( $content ) { - $recursive = $options['changed']; // bug 50785 + $recursive = $options['changed']; // T52785 $updates = $content->getSecondaryDataUpdates( $this->getTitle(), null, $recursive, $editInfo->output ); @@ -2363,7 +2298,7 @@ class WikiPage implements Page, IDBAccessObject { if ( $options['created'] ) { self::onArticleCreate( $this->mTitle ); - } elseif ( $options['changed'] ) { // bug 50785 + } elseif ( $options['changed'] ) { // T52785 self::onArticleEdit( $this->mTitle, $revision ); } @@ -2977,7 +2912,7 @@ class WikiPage implements Page, IDBAccessObject { $dbw->onTransactionPreCommitOrIdle( function () use ( $dbw, $logEntry, $logid ) { - // Bug 56776: avoid deadlocks (especially from FileDeleteForm) + // T58776: avoid deadlocks (especially from FileDeleteForm) $logEntry->publish( $logid ); }, __METHOD__ @@ -3257,7 +3192,7 @@ class WikiPage implements Page, IDBAccessObject { ); // Set patrolling and bot flag on the edits, which gets rollbacked. - // This is done even on edit failure to have patrolling in that case (bug 62157). + // This is done even on edit failure to have patrolling in that case (T64157). $set = []; if ( $bot && $guser->isAllowed( 'markbotedits' ) ) { // Mark all reverted edits as bot @@ -3716,4 +3651,15 @@ class WikiPage implements Page, IDBAccessObject { public function getSourceURL() { return $this->getTitle()->getCanonicalURL(); } + + /* + * @param WANObjectCache $cache + * @return string[] + * @since 1.28 + */ + public function getMutableCacheKeys( WANObjectCache $cache ) { + $linkCache = MediaWikiServices::getInstance()->getLinkCache(); + + return $linkCache->getMutableCacheKeys( $cache, $this->getTitle()->getTitleValue() ); + } } diff --git a/includes/pager/IndexPager.php b/includes/pager/IndexPager.php index 395cee5b80..46948909c6 100644 --- a/includes/pager/IndexPager.php +++ b/includes/pager/IndexPager.php @@ -21,6 +21,8 @@ * @ingroup Pager */ +use Wikimedia\Rdbms\ResultWrapper; + /** * IndexPager is an efficient pager which uses a (roughly unique) index in the * data set to implement paging, rather than a "LIMIT offset,limit" clause. @@ -195,7 +197,7 @@ abstract class IndexPager extends ContextSource implements Pager { */ public function doQuery() { # Use the child class name for profiling - $fname = __METHOD__ . ' (' . get_class( $this ) . ')'; + $fname = __METHOD__ . ' (' . static::class . ')'; $section = Profiler::instance()->scopedProfileIn( $fname ); // @todo This should probably compare to DIR_DESCENDING and DIR_ASCENDING constants @@ -346,7 +348,7 @@ abstract class IndexPager extends ContextSource implements Pager { * @return string */ function getSqlComment() { - return get_class( $this ); + return static::class; } /** diff --git a/includes/pager/ReverseChronologicalPager.php b/includes/pager/ReverseChronologicalPager.php index 6f325c967c..76f347023e 100644 --- a/includes/pager/ReverseChronologicalPager.php +++ b/includes/pager/ReverseChronologicalPager.php @@ -20,6 +20,7 @@ * @file * @ingroup Pager */ +use Wikimedia\Timestamp\TimestampException; /** * IndexPager with a formatted navigation bar diff --git a/includes/parser/BlockLevelPass.php b/includes/parser/BlockLevelPass.php index cbacd34811..2023d13445 100644 --- a/includes/parser/BlockLevelPass.php +++ b/includes/parser/BlockLevelPass.php @@ -38,6 +38,7 @@ class BlockLevelPass { const COLON_STATE_COMMENT = 5; const COLON_STATE_COMMENTDASH = 6; const COLON_STATE_COMMENTDASHDASH = 7; + const COLON_STATE_LC = 8; /** * Make lists from lines starting with ':', '*', '#', etc. @@ -298,7 +299,7 @@ class BlockLevelPass { if ( $openMatch || $closeMatch ) { $pendingPTag = false; - # @todo bug 5718: paragraph closed + # @todo T7718: paragraph closed $output .= $this->closeParagraph(); if ( $preOpenMatch && !$preCloseMatch ) { $this->inPre = true; @@ -352,7 +353,7 @@ class BlockLevelPass { } } } - # somewhere above we forget to get out of pre block (bug 785) + # somewhere above we forget to get out of pre block (T2785) if ( $preCloseMatch && $this->inPre ) { $this->inPre = false; } @@ -389,15 +390,14 @@ class BlockLevelPass { * @return string The position of the ':', or false if none found */ private function findColonNoLinks( $str, &$before, &$after ) { - $colonPos = strpos( $str, ':' ); - if ( $colonPos === false ) { + if ( !preg_match( '/:|<|-\{/', $str, $m, PREG_OFFSET_CAPTURE ) ) { # Nothing to find! return false; } - $ltPos = strpos( $str, '<' ); - if ( $ltPos === false || $ltPos > $colonPos ) { + if ( $m[0][0] === ':' ) { # Easy; no tag nesting to worry about + $colonPos = $m[0][1]; $before = substr( $str, 0, $colonPos ); $after = substr( $str, $colonPos + 1 ); return $colonPos; @@ -405,9 +405,10 @@ class BlockLevelPass { # Ugly state machine to walk through avoiding tags. $state = self::COLON_STATE_TEXT; - $level = 0; + $ltLevel = 0; + $lcLevel = 0; $len = strlen( $str ); - for ( $i = 0; $i < $len; $i++ ) { + for ( $i = $m[0][1]; $i < $len; $i++ ) { $c = $str[$i]; switch ( $state ) { @@ -418,7 +419,7 @@ class BlockLevelPass { $state = self::COLON_STATE_TAGSTART; break; case ":": - if ( $level === 0 ) { + if ( $ltLevel === 0 ) { # We found it! $before = substr( $str, 0, $i ); $after = substr( $str, $i + 1 ); @@ -428,35 +429,44 @@ class BlockLevelPass { break; default: # Skip ahead looking for something interesting - $colonPos = strpos( $str, ':', $i ); - if ( $colonPos === false ) { + if ( !preg_match( '/:|<|-\{/', $str, $m, PREG_OFFSET_CAPTURE, $i ) ) { # Nothing else interesting return false; } - $ltPos = strpos( $str, '<', $i ); - if ( $level === 0 ) { - if ( $ltPos === false || $colonPos < $ltPos ) { - # We found it! - $before = substr( $str, 0, $colonPos ); - $after = substr( $str, $colonPos + 1 ); - return $i; - } + if ( $m[0][0] === '-{' ) { + $state = self::COLON_STATE_LC; + $lcLevel++; + $i = $m[0][1] + 1; + } else { + # Skip ahead to next interesting character. + $i = $m[0][1] - 1; } - if ( $ltPos === false ) { - # Nothing else interesting to find; abort! - # We're nested, but there's no close tags left. Abort! - break 2; + break; + } + break; + case self::COLON_STATE_LC: + # In language converter markup -{ ... }- + if ( !preg_match( '/-\{|\}-/', $str, $m, PREG_OFFSET_CAPTURE, $i ) ) { + # Nothing else interesting to find; abort! + # We're nested in language converter markup, but there + # are no close tags left. Abort! + break 2; + } elseif ( $m[0][0] === '-{' ) { + $i = $m[0][1] + 1; + $lcLevel++; + } elseif ( $m[0][0] === '}-' ) { + $i = $m[0][1] + 1; + $lcLevel--; + if ( $lcLevel === 0 ) { + $state = self::COLON_STATE_TEXT; } - # Skip ahead to next tag start - $i = $ltPos; - $state = self::COLON_STATE_TAGSTART; } break; case self::COLON_STATE_TAG: # In a <tag> switch ( $c ) { case ">": - $level++; + $ltLevel++; $state = self::COLON_STATE_TEXT; break; case "/": @@ -486,10 +496,12 @@ class BlockLevelPass { case self::COLON_STATE_CLOSETAG: # In a </tag> if ( $c === ">" ) { - $level--; - if ( $level < 0 ) { + if ( $ltLevel > 0 ) { + $ltLevel--; + } else { + # ignore the excess close tag, but keep looking for + # colons. (This matches Parsoid behavior.) wfDebug( __METHOD__ . ": Invalid input; too many close tags\n" ); - return false; } $state = self::COLON_STATE_TEXT; } @@ -526,8 +538,11 @@ class BlockLevelPass { throw new MWException( "State machine error in " . __METHOD__ ); } } - if ( $level > 0 ) { - wfDebug( __METHOD__ . ": Invalid input; not enough close tags (level $level, state $state)\n" ); + if ( $ltLevel > 0 || $lcLevel > 0 ) { + wfDebug( + __METHOD__ . ": Invalid input; not enough close tags " . + "(level $ltLevel/$lcLevel, state $state)\n" + ); return false; } return false; diff --git a/includes/parser/CoreParserFunctions.php b/includes/parser/CoreParserFunctions.php index 6aa3accebe..e34d10b6a3 100644 --- a/includes/parser/CoreParserFunctions.php +++ b/includes/parser/CoreParserFunctions.php @@ -157,7 +157,7 @@ class CoreParserFunctions { } /** - * urlencodes a string according to one of three patterns: (bug 22474) + * urlencodes a string according to one of three patterns: (T24474) * * By default (for HTTP "query" strings), spaces are encoded as '+'. * Or to encode a value for the HTTP "path", spaces are encoded as '%20'. diff --git a/includes/parser/DateFormatter.php b/includes/parser/DateFormatter.php index 40da3685ab..605a873b7d 100644 --- a/includes/parser/DateFormatter.php +++ b/includes/parser/DateFormatter.php @@ -27,13 +27,19 @@ * @ingroup Parser */ class DateFormatter { - public $mSource, $mTarget; - public $monthNames = '', $rxDM, $rxMD, $rxDMY, $rxYDM, $rxMDY, $rxYMD; + private $mSource, $mTarget; + private $monthNames = ''; - public $regexes, $pDays, $pMonths, $pYears; - public $rules, $xMonths, $preferences; + private $regexes; + private $rules, $xMonths, $preferences; - protected $lang, $mLinked; + private $lang, $mLinked; + + /** @var string[] */ + private $keys; + + /** @var string[] */ + private $targets; const ALL = -1; const NONE = 0; @@ -101,7 +107,7 @@ class DateFormatter { $this->targets[self::ISO2] = '[[y-m-d]]'; # Rules - # pref source target + # pref source target $this->rules[self::DMY][self::MD] = self::DM; $this->rules[self::ALL][self::MD] = self::MD; $this->rules[self::MDY][self::DM] = self::MD; @@ -121,7 +127,7 @@ class DateFormatter { * Get a DateFormatter object * * @param Language|string|null $lang In which language to format the date - * Defaults to the site content language + * Defaults to the site content language * @return DateFormatter */ public static function getInstance( $lang = null ) { @@ -191,17 +197,19 @@ class DateFormatter { // Another horrible hack $this->mLinked = $linked; - $text = preg_replace_callback( $regex, [ &$this, 'replace' ], $text ); + $text = preg_replace_callback( $regex, [ $this, 'replace' ], $text ); unset( $this->mLinked ); } return $text; } /** + * Regexp replacement callback + * * @param array $matches * @return string */ - public function replace( $matches ) { + private function replace( $matches ) { # Extract information from $matches $linked = true; if ( isset( $this->mLinked ) ) { @@ -217,15 +225,17 @@ class DateFormatter { } } - return $this->formatDate( $bits, $linked ); + return $this->formatDate( $bits, $matches[0], $linked ); } /** * @param array $bits + * @param string $orig Original input string, to be returned + * on formatting failure. * @param bool $link * @return string */ - public function formatDate( $bits, $link = true ) { + private function formatDate( $bits, $orig, $link = true ) { $format = $this->targets[$this->mTarget]; if ( !$link ) { @@ -300,8 +310,9 @@ class DateFormatter { } } if ( $fail ) { - /** @todo FIXME: $matches doesn't exist here, what's expected? */ - $text = $matches[0]; + // This occurs when parsing a date with day or month outside the bounds + // of possibilities. + $text = $orig; } $isoBits = []; @@ -323,7 +334,7 @@ class DateFormatter { * Return a regex that can be used to find month names in string * @return string regex to find the months with */ - public function getMonthRegex() { + private function getMonthRegex() { $names = []; for ( $i = 1; $i <= 12; $i++ ) { $names[] = $this->lang->getMonthName( $i ); @@ -337,7 +348,7 @@ class DateFormatter { * @param string $monthName Month name * @return string ISO month name */ - public function makeIsoMonth( $monthName ) { + private function makeIsoMonth( $monthName ) { $n = $this->xMonths[$this->lang->lc( $monthName )]; return sprintf( '%02d', $n ); } @@ -347,7 +358,7 @@ class DateFormatter { * @param string $year Year name * @return string ISO year name */ - public function makeIsoYear( $year ) { + private function makeIsoYear( $year ) { # Assumes the year is in a nice format, as enforced by the regex if ( substr( $year, -2 ) == 'BC' ) { $num = intval( substr( $year, 0, -3 ) ) - 1; @@ -366,7 +377,7 @@ class DateFormatter { * @return int|string int representing year number in case of AD dates, or string containing * year number and 'BC' at the end otherwise. */ - public function makeNormalYear( $iso ) { + private function makeNormalYear( $iso ) { if ( $iso[0] == '-' ) { $text = ( intval( substr( $iso, 1 ) ) + 1 ) . ' BC'; } else { diff --git a/includes/parser/LinkHolderArray.php b/includes/parser/LinkHolderArray.php index e7712f2b74..d2a0a1a6d4 100644 --- a/includes/parser/LinkHolderArray.php +++ b/includes/parser/LinkHolderArray.php @@ -613,7 +613,7 @@ class LinkHolderArray { public function replaceText( $text ) { $text = preg_replace_callback( '/<!--(LINK|IWLINK) (.*?)-->/', - [ &$this, 'replaceTextCallback' ], + [ $this, 'replaceTextCallback' ], $text ); return $text; diff --git a/includes/parser/MWTidy.php b/includes/parser/MWTidy.php index 5e5461587b..01bf2d0d65 100644 --- a/includes/parser/MWTidy.php +++ b/includes/parser/MWTidy.php @@ -138,6 +138,9 @@ class MWTidy { case 'Html5Internal': $instance = new MediaWiki\Tidy\Html5Internal( $config ); break; + case 'RemexHtml': + $instance = new MediaWiki\Tidy\RemexDriver( $config ); + break; case 'disabled': return false; default: diff --git a/includes/parser/Parser.php b/includes/parser/Parser.php index 79fc1722f9..8db1fe3794 100644 --- a/includes/parser/Parser.php +++ b/includes/parser/Parser.php @@ -89,13 +89,15 @@ class Parser { # Everything except bracket, space, or control characters # \p{Zs} is unicode 'separator, space' category. It covers the space 0x20 # as well as U+3000 is IDEOGRAPHIC SPACE for T21052 - const EXT_LINK_URL_CLASS = '[^][<>"\\x00-\\x20\\x7F\p{Zs}]'; + # \x{FFFD} is the Unicode replacement character, which Preprocessor_DOM + # uses to replace invalid HTML characters. + const EXT_LINK_URL_CLASS = '[^][<>"\\x00-\\x20\\x7F\p{Zs}\x{FFFD}]'; # Simplified expression to match an IPv4 or IPv6 address, or # at least one character of a host name (embeds EXT_LINK_URL_CLASS) - const EXT_LINK_ADDR = '(?:[0-9.]+|\\[(?i:[0-9a-f:.]+)\\]|[^][<>"\\x00-\\x20\\x7F\p{Zs}])'; + const EXT_LINK_ADDR = '(?:[0-9.]+|\\[(?i:[0-9a-f:.]+)\\]|[^][<>"\\x00-\\x20\\x7F\p{Zs}\x{FFFD}])'; # RegExp to make image URLs (embeds IPv6 part of EXT_LINK_ADDR) // @codingStandardsIgnoreStart Generic.Files.LineLength - const EXT_IMAGE_REGEX = '/^(http:\/\/|https:\/\/)((?:\\[(?i:[0-9a-f:.]+)\\])?[^][<>"\\x00-\\x20\\x7F\p{Zs}]+) + const EXT_IMAGE_REGEX = '/^(http:\/\/|https:\/\/)((?:\\[(?i:[0-9a-f:.]+)\\])?[^][<>"\\x00-\\x20\\x7F\p{Zs}\x{FFFD}]+) \\/([A-Za-z0-9_.,~%\\-+&;#*?!=()@\\x80-\\xFF]+)\\.((?i)gif|png|jpg|jpeg)$/Sxu'; // @codingStandardsIgnoreEnd @@ -264,7 +266,7 @@ class Parser { $this->mUrlProtocols = wfUrlProtocols(); $this->mExtLinkBracketedRegex = '/\[(((?i)' . $this->mUrlProtocols . ')' . self::EXT_LINK_ADDR . - self::EXT_LINK_URL_CLASS . '*)\p{Zs}*([^\]\\x00-\\x08\\x0a-\\x1F]*?)\]/Su'; + self::EXT_LINK_URL_CLASS . '*)\p{Zs}*([^\]\\x00-\\x08\\x0a-\\x1F\\x{FFFD}]*?)\]/Su'; if ( isset( $conf['preprocessorClass'] ) ) { $this->mPreprocessorClass = $conf['preprocessorClass']; } elseif ( defined( 'HPHP_VERSION' ) ) { @@ -330,7 +332,9 @@ class Parser { CoreTagHooks::register( $this ); $this->initialiseVariables(); - Hooks::run( 'ParserFirstCallInit', [ &$this ] ); + // Avoid PHP 7.1 warning from passing $this by reference + $parser = $this; + Hooks::run( 'ParserFirstCallInit', [ &$parser ] ); } /** @@ -381,7 +385,9 @@ class Parser { $this->mProfiler = new SectionProfiler(); - Hooks::run( 'ParserClearState', [ &$this ] ); + // Avoid PHP 7.1 warning from passing $this by reference + $parser = $this; + Hooks::run( 'ParserClearState', [ &$parser ] ); } /** @@ -413,6 +419,8 @@ class Parser { $text = strtr( $text, "\x7f", "?" ); $magicScopeVariable = $this->lock(); } + // Strip U+0000 NULL (T159174) + $text = str_replace( "\000", '', $text ); $this->startParse( $title, $options, self::OT_HTML, $clearState ); @@ -435,11 +443,13 @@ class Parser { $this->mRevisionSize = null; } - Hooks::run( 'ParserBeforeStrip', [ &$this, &$text, &$this->mStripState ] ); + // Avoid PHP 7.1 warning from passing $this by reference + $parser = $this; + Hooks::run( 'ParserBeforeStrip', [ &$parser, &$text, &$this->mStripState ] ); # No more strip! - Hooks::run( 'ParserAfterStrip', [ &$this, &$text, &$this->mStripState ] ); + Hooks::run( 'ParserAfterStrip', [ &$parser, &$text, &$this->mStripState ] ); $text = $this->internalParse( $text ); - Hooks::run( 'ParserAfterParse', [ &$this, &$text, &$this->mStripState ] ); + Hooks::run( 'ParserAfterParse', [ &$parser, &$text, &$this->mStripState ] ); $text = $this->internalParseHalfParsed( $text, true, $linestart ); @@ -615,8 +625,10 @@ class Parser { * @return string UNSAFE half-parsed HTML */ public function recursiveTagParse( $text, $frame = false ) { - Hooks::run( 'ParserBeforeStrip', [ &$this, &$text, &$this->mStripState ] ); - Hooks::run( 'ParserAfterStrip', [ &$this, &$text, &$this->mStripState ] ); + // Avoid PHP 7.1 warning from passing $this by reference + $parser = $this; + Hooks::run( 'ParserBeforeStrip', [ &$parser, &$text, &$this->mStripState ] ); + Hooks::run( 'ParserAfterStrip', [ &$parser, &$text, &$this->mStripState ] ); $text = $this->internalParse( $text, false, $frame ); return $text; } @@ -663,8 +675,10 @@ class Parser { if ( $revid !== null ) { $this->mRevisionId = $revid; } - Hooks::run( 'ParserBeforeStrip', [ &$this, &$text, &$this->mStripState ] ); - Hooks::run( 'ParserAfterStrip', [ &$this, &$text, &$this->mStripState ] ); + // Avoid PHP 7.1 warning from passing $this by reference + $parser = $this; + Hooks::run( 'ParserBeforeStrip', [ &$parser, &$text, &$this->mStripState ] ); + Hooks::run( 'ParserAfterStrip', [ &$parser, &$text, &$this->mStripState ] ); $text = $this->replaceVariables( $text, $frame ); $text = $this->mStripState->unstripBoth( $text ); return $text; @@ -1259,8 +1273,11 @@ class Parser { $origText = $text; + // Avoid PHP 7.1 warning from passing $this by reference + $parser = $this; + # Hook to suspend the parser in this state - if ( !Hooks::run( 'ParserBeforeInternalParse', [ &$this, &$text, &$this->mStripState ] ) ) { + if ( !Hooks::run( 'ParserBeforeInternalParse', [ &$parser, &$text, &$this->mStripState ] ) ) { return $text; } @@ -1280,16 +1297,16 @@ class Parser { $text = $this->replaceVariables( $text ); } - Hooks::run( 'InternalParseBeforeSanitize', [ &$this, &$text, &$this->mStripState ] ); + Hooks::run( 'InternalParseBeforeSanitize', [ &$parser, &$text, &$this->mStripState ] ); $text = Sanitizer::removeHTMLtags( $text, - [ &$this, 'attributeStripCallback' ], + [ $this, 'attributeStripCallback' ], false, array_keys( $this->mTransparentTagHooks ), [], - [ &$this, 'addTrackingCategory' ] + [ $this, 'addTrackingCategory' ] ); - Hooks::run( 'InternalParseBeforeLinks', [ &$this, &$text, &$this->mStripState ] ); + Hooks::run( 'InternalParseBeforeLinks', [ &$parser, &$text, &$this->mStripState ] ); # Tables need to come after variable replacement for things to work # properly; putting them before other transformations should keep @@ -1328,8 +1345,11 @@ class Parser { private function internalParseHalfParsed( $text, $isMain = true, $linestart = true ) { $text = $this->mStripState->unstripGeneral( $text ); + // Avoid PHP 7.1 warning from passing $this by reference + $parser = $this; + if ( $isMain ) { - Hooks::run( 'ParserAfterUnstrip', [ &$this, &$text ] ); + Hooks::run( 'ParserAfterUnstrip', [ &$parser, &$text ] ); } # Clean up special characters, only run once, next-to-last before doBlockLevels @@ -1368,7 +1388,7 @@ class Parser { $text = $this->mStripState->unstripNoWiki( $text ); if ( $isMain ) { - Hooks::run( 'ParserBeforeTidy', [ &$this, &$text ] ); + Hooks::run( 'ParserBeforeTidy', [ &$parser, &$text ] ); } $text = $this->replaceTransparentTags( $text ); @@ -1409,7 +1429,7 @@ class Parser { } if ( $isMain ) { - Hooks::run( 'ParserAfterTidy', [ &$this, &$text ] ); + Hooks::run( 'ParserAfterTidy', [ &$parser, &$text ] ); } return $text; @@ -1434,20 +1454,21 @@ class Parser { $spdash = "(?:-|$space)"; # a dash or a non-newline space $spaces = "$space++"; # possessive match of 1 or more spaces $text = preg_replace_callback( - '!(?: # Start cases - (<a[ \t\r\n>].*?</a>) | # m[1]: Skip link text - (<.*?>) | # m[2]: Skip stuff inside - # HTML elements' . " - (\b(?i:$prots)($addr$urlChar*)) | # m[3]: Free external links - # m[4]: Post-protocol path - \b(?:RFC|PMID) $spaces # m[5]: RFC or PMID, capture number + '!(?: # Start cases + (<a[ \t\r\n>].*?</a>) | # m[1]: Skip link text + (<.*?>) | # m[2]: Skip stuff inside HTML elements' . " + (\b # m[3]: Free external links + (?i:$prots) + ($addr$urlChar*) # m[4]: Post-protocol path + ) | + \b(?:RFC|PMID) $spaces # m[5]: RFC or PMID, capture number ([0-9]+)\b | - \bISBN $spaces ( # m[6]: ISBN, capture number + \bISBN $spaces ( # m[6]: ISBN, capture number (?: 97[89] $spdash? )? # optional 13-digit ISBN prefix (?: [0-9] $spdash? ){9} # 9 digits with opt. delimiters [0-9Xx] # check digit )\b - )!xu", [ &$this, 'magicLinkCallback' ], $text ); + )!xu", [ $this, 'magicLinkCallback' ], $text ); return $text; } @@ -1947,18 +1968,6 @@ class Parser { return $attribs; } - /** - * Replace unusual escape codes in a URL with their equivalent characters - * - * @deprecated since 1.24, use normalizeLinkUrl - * @param string $url - * @return string - */ - public static function replaceUnusualEscapes( $url ) { - wfDeprecated( __METHOD__, '1.24' ); - return self::normalizeLinkUrl( $url ); - } - /** * Replace unusual escape codes in a URL with their equivalent characters * @@ -2213,7 +2222,7 @@ class Parser { continue; } - $origLink = $m[1]; + $origLink = ltrim( $m[1], ' ' ); # Don't allow internal links to pages containing # PROTO: where PROTO is a valid URL protocol; these @@ -2479,7 +2488,7 @@ class Parser { * * @private * - * @param int $index + * @param string $index Magic variable identifier as mapped in MagicWord::$mVariableIDs * @param bool|PPFrame $frame * * @throws MWException @@ -2498,18 +2507,21 @@ class Parser { . ' called while parsing (no title set)' ); } + // Avoid PHP 7.1 warning from passing $this by reference + $parser = $this; + /** * Some of these require message or data lookups and can be * expensive to check many times. */ - if ( Hooks::run( 'ParserGetVariableValueVarCache', [ &$this, &$this->mVarCache ] ) ) { + if ( Hooks::run( 'ParserGetVariableValueVarCache', [ &$parser, &$this->mVarCache ] ) ) { if ( isset( $this->mVarCache[$index] ) ) { return $this->mVarCache[$index]; } } $ts = wfTimestamp( TS_UNIX, $this->mOptions->getTimestamp() ); - Hooks::run( 'ParserGetVariableValueTs', [ &$this, &$ts ] ); + Hooks::run( 'ParserGetVariableValueTs', [ &$parser, &$ts ] ); $pageLang = $this->getFunctionLang(); @@ -2822,7 +2834,7 @@ class Parser { $ret = null; Hooks::run( 'ParserGetVariableValueSwitch', - [ &$this, &$this->mVarCache, &$index, &$ret, &$frame ] + [ &$parser, &$this->mVarCache, &$index, &$ret, &$frame ] ); return $ret; @@ -3366,7 +3378,10 @@ class Parser { throw new MWException( "Tag hook for $function is not callable\n" ); } - $allArgs = [ &$this ]; + // Avoid PHP 7.1 warning from passing $this by reference + $parser = $this; + + $allArgs = [ &$parser ]; if ( $flags & self::SFH_OBJECT_ARGS ) { # Convert arguments to PPNodes and collect for appending to $allArgs $funcArgs = []; @@ -3875,7 +3890,9 @@ class Parser { throw new MWException( "Tag hook for $name is not callable\n" ); } - $output = call_user_func_array( $callback, [ &$this, $frame, $content, $attributes ] ); + // Avoid PHP 7.1 warning from passing $this by reference + $parser = $this; + $output = call_user_func_array( $callback, [ &$parser, $frame, $content, $attributes ] ); } else { $output = '<span class="error">Invalid tag extension name: ' . htmlspecialchars( $name ) . '</span>'; @@ -4450,6 +4467,9 @@ class Parser { $this->startParse( $title, $options, self::OT_WIKI, $clearState ); $this->setUser( $user ); + // Strip U+0000 NULL (T159174) + $text = str_replace( "\000", '', $text ); + // We still normalize line endings for backwards-compatibility // with other code that just calls PST, but this should already // be handled in TextContent subclasses @@ -4978,7 +4998,9 @@ class Parser { } $ig->setAdditionalOptions( $params ); - Hooks::run( 'BeforeParserrenderImageGallery', [ &$this, &$ig ] ); + // Avoid PHP 7.1 warning from passing $this by reference + $parser = $this; + Hooks::run( 'BeforeParserrenderImageGallery', [ &$parser, &$ig ] ); $lines = StringUtils::explode( "\n", $text ); foreach ( $lines as $line ) { diff --git a/includes/parser/ParserCache.php b/includes/parser/ParserCache.php index 9e96540975..f76c0b5dec 100644 --- a/includes/parser/ParserCache.php +++ b/includes/parser/ParserCache.php @@ -223,7 +223,7 @@ class ParserCache { // The edit section preference may not be the appropiate one in // the ParserOutput, as we are not storing it in the parsercache - // key. Force it here. See bug 31445. + // key. Force it here. See T33445. $value->setEditSectionTokens( $popts->getEditSection() ); $wikiPage = method_exists( $article, 'getPage' ) diff --git a/includes/parser/ParserOptions.php b/includes/parser/ParserOptions.php index 2900f41a97..7be82818e7 100644 --- a/includes/parser/ParserOptions.php +++ b/includes/parser/ParserOptions.php @@ -409,7 +409,7 @@ class ParserOptions { * when the page is rendered based on the language of the user. * * @note When saving, this will return the default language instead of the user's. - * {{int: }} uses this which used to produce inconsistent link tables (bug 14404). + * {{int: }} uses this which used to produce inconsistent link tables (T16404). * * @return Language * @since 1.19 diff --git a/includes/parser/ParserOutput.php b/includes/parser/ParserOutput.php index 7bf848fb90..b2f99b3d3f 100644 --- a/includes/parser/ParserOutput.php +++ b/includes/parser/ParserOutput.php @@ -696,6 +696,8 @@ class ParserOutput extends CacheTime { * to SpecialTrackingCategories::$coreTrackingCategories, and extensions * should add to "TrackingCategories" in their extension.json. * + * @todo Migrate some code to TrackingCategories + * * @param string $msg Message key * @param Title $title title of the page which is being tracked * @return bool Whether the addition was successful @@ -707,7 +709,7 @@ class ParserOutput extends CacheTime { return false; } - // Important to parse with correct title (bug 31469) + // Important to parse with correct title (T33469) $cat = wfMessage( $msg ) ->title( $title ) ->inContentLanguage() diff --git a/includes/parser/Preprocessor_DOM.php b/includes/parser/Preprocessor_DOM.php index 661318bea1..b93c6173ea 100644 --- a/includes/parser/Preprocessor_DOM.php +++ b/includes/parser/Preprocessor_DOM.php @@ -134,7 +134,7 @@ class Preprocessor_DOM extends Preprocessor { * is to assume a direct page view. * * The generated DOM tree must depend only on the input text and the flags. - * The DOM tree must be the same in OT_HTML and OT_WIKI mode, to avoid a regression of bug 4899. + * The DOM tree must be the same in OT_HTML and OT_WIKI mode, to avoid a regression of T6899. * * Any flag added to the $flags parameter here, or any other parameter liable to cause a * change in the DOM tree for a given text, must be passed through the section identifier diff --git a/includes/parser/Preprocessor_Hash.php b/includes/parser/Preprocessor_Hash.php index 2666c93f87..b2e9531ddd 100644 --- a/includes/parser/Preprocessor_Hash.php +++ b/includes/parser/Preprocessor_Hash.php @@ -107,7 +107,7 @@ class Preprocessor_Hash extends Preprocessor { * included. Default is to assume a direct page view. * * The generated DOM tree must depend only on the input text and the flags. - * The DOM tree must be the same in OT_HTML and OT_WIKI mode, to avoid a regression of bug 4899. + * The DOM tree must be the same in OT_HTML and OT_WIKI mode, to avoid a regression of T6899. * * Any flag added to the $flags parameter here, or any other parameter liable to cause a * change in the DOM tree for a given text, must be passed through the section identifier diff --git a/includes/poolcounter/PoolWorkArticleView.php b/includes/poolcounter/PoolWorkArticleView.php index 534e86b6be..1f1add7924 100644 --- a/includes/poolcounter/PoolWorkArticleView.php +++ b/includes/poolcounter/PoolWorkArticleView.php @@ -129,7 +129,7 @@ class PoolWorkArticleView extends PoolCounterWork { return false; } - // Reduce effects of race conditions for slow parses (bug 46014) + // Reduce effects of race conditions for slow parses (T48014) $cacheTime = wfTimestampNow(); $time = - microtime( true ); diff --git a/includes/profiler/Profiler.php b/includes/profiler/Profiler.php index 8b4f01a306..252a227a1d 100644 --- a/includes/profiler/Profiler.php +++ b/includes/profiler/Profiler.php @@ -22,6 +22,7 @@ * @defgroup Profiler Profiler */ use Wikimedia\ScopedCallback; +use Wikimedia\Rdbms\TransactionProfiler; /** * Profiler base class that defines the interface and some trivial diff --git a/includes/profiler/output/ProfilerOutputDb.php b/includes/profiler/output/ProfilerOutputDb.php index 088721c0f7..264ec0c637 100644 --- a/includes/profiler/output/ProfilerOutputDb.php +++ b/includes/profiler/output/ProfilerOutputDb.php @@ -41,7 +41,7 @@ class ProfilerOutputDb extends ProfilerOutput { } public function canUse() { - # Do not log anything if database is readonly (bug 5375) + # Do not log anything if database is readonly (T7375) return !wfReadOnly(); } diff --git a/includes/rcfeed/FormattedRCFeed.php b/includes/rcfeed/FormattedRCFeed.php new file mode 100644 index 0000000000..48a9f946a5 --- /dev/null +++ b/includes/rcfeed/FormattedRCFeed.php @@ -0,0 +1,68 @@ +<?php +/** + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * http://www.gnu.org/copyleft/gpl.html + * + * @file + */ + +/** + * Base class for RC feed engines that send messages in a freely configurable + * format to a uri-addressed engine set in $wgRCEngines. + * @since 1.29 + */ +abstract class FormattedRCFeed extends RCFeed { + private $params; + + /** + * @param array $params + * - 'uri' + * - 'formatter' + * @see $wgRCFeeds + */ + public function __construct( array $params = [] ) { + $this->params = $params; + } + + /** + * Send some text to the specified feed. + * + * @param array $feed The feed, as configured in an associative array + * @param string $line The text to send + * @return bool Success + */ + abstract public function send( array $feed, $line ); + + /** + * @param RecentChange $rc + * @param string|null $actionComment + * @return bool Success + */ + public function notify( RecentChange $rc, $actionComment = null ) { + $params = $this->params; + /** @var $formatter RCFeedFormatter */ + $formatter = is_object( $params['formatter'] ) ? $params['formatter'] : new $params['formatter']; + + $line = $formatter->getLine( $params, $rc, $actionComment ); + if ( !$line ) { + // @codeCoverageIgnoreStart + // T109544 - If a feed formatter returns null, this will otherwise cause an + // error in at least RedisPubSubFeedEngine. Not sure best to handle this. + return; + // @codeCoverageIgnoreEnd + } + return $this->send( $params, $line ); + } +} diff --git a/includes/rcfeed/RCFeed.php b/includes/rcfeed/RCFeed.php new file mode 100644 index 0000000000..284f68a2da --- /dev/null +++ b/includes/rcfeed/RCFeed.php @@ -0,0 +1,59 @@ +<?php +/** + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * http://www.gnu.org/copyleft/gpl.html + * + * @file + */ + +/** + * @see $wgRCFeeds + * @since 1.29 + */ +abstract class RCFeed { + /** + * @param array $params + */ + public function __construct( array $params = [] ) { + } + + /** + * Dispatch the recent changes notification. + * + * @param RecentChange $rc + * @param string|null $actionComment + * @return bool Success + */ + abstract public function notify( RecentChange $rc, $actionComment = null ); + + /** + * @param array $params + * @return RCFeed + * @throws Exception + */ + final public static function factory( array $params ) { + if ( !isset( $params['class'] ) ) { + if ( !isset( $params['uri'] ) ) { + throw new Exception( "RCFeeds must have a 'class' or 'uri' set." ); + } + return RecentChange::getEngine( $params['uri'], $params ); + } + $class = $params['class']; + if ( !class_exists( $class ) ) { + throw new Exception( "Unknown class '$class'." ); + } + return new $class( $params ); + } +} diff --git a/includes/rcfeed/RCFeedEngine.php b/includes/rcfeed/RCFeedEngine.php index 0b0cd86951..49436fa171 100644 --- a/includes/rcfeed/RCFeedEngine.php +++ b/includes/rcfeed/RCFeedEngine.php @@ -1,5 +1,4 @@ <?php - /** * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -20,18 +19,9 @@ */ /** - * Interface for RC feed engines, which send formatted notifications - * + * Backward-compatibility alias. * @since 1.22 + * @deprecated since 1.29 Use FormattedRCFeed instead */ -interface RCFeedEngine { - /** - * Sends some text to the specified live feed. - * - * @see IRCColourfulRCFeedFormatter::cleanupForIRC - * @param array $feed The feed, as configured in an associative array - * @param string $line The text to send - * @return bool Success - */ - public function send( array $feed, $line ); +abstract class RCFeedEngine extends FormattedRCFeed { } diff --git a/includes/rcfeed/RedisPubSubFeedEngine.php b/includes/rcfeed/RedisPubSubFeedEngine.php index c10e959fa2..4c011be2cd 100644 --- a/includes/rcfeed/RedisPubSubFeedEngine.php +++ b/includes/rcfeed/RedisPubSubFeedEngine.php @@ -1,5 +1,4 @@ <?php - /** * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -20,7 +19,7 @@ */ /** - * Emit a recent change notification via Redis Pub/Sub + * Send recent change notifications via Redis Pub/Sub * * If the feed URI contains a path component, it will be used to generate a * channel name by stripping the leading slash and replacing any remaining @@ -36,10 +35,10 @@ * * @since 1.22 */ -class RedisPubSubFeedEngine implements RCFeedEngine { +class RedisPubSubFeedEngine extends RCFeedEngine { /** - * @see RCFeedEngine::send + * @see FormattedRCFeed::send */ public function send( array $feed, $line ) { $parsed = wfParseUrl( $feed['uri'] ); diff --git a/includes/rcfeed/UDPRCFeedEngine.php b/includes/rcfeed/UDPRCFeedEngine.php index 9afae661a0..61ced5f440 100644 --- a/includes/rcfeed/UDPRCFeedEngine.php +++ b/includes/rcfeed/UDPRCFeedEngine.php @@ -1,5 +1,4 @@ <?php - /** * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -20,11 +19,10 @@ */ /** - * Sends the notification to the specified host in a UDP packet. + * Send recent change notifications in a UDP packet. * @since 1.22 */ - -class UDPRCFeedEngine implements RCFeedEngine { +class UDPRCFeedEngine extends RCFeedEngine { /** * @see RCFeedEngine::send */ diff --git a/includes/registration/Processor.php b/includes/registration/Processor.php index a4100bbc07..210deb1bde 100644 --- a/includes/registration/Processor.php +++ b/includes/registration/Processor.php @@ -23,11 +23,11 @@ interface Processor { /** * @return array With following keys: - * 'globals' - variables to be set to $GLOBALS - * 'defines' - constants to define - * 'callbacks' - functions to be executed by the registry - * 'credits' - metadata to be stored by registry - * 'attributes' - registration info which isn't a global variable + * 'globals' - variables to be set to $GLOBALS + * 'defines' - constants to define + * 'callbacks' - functions to be executed by the registry + * 'credits' - metadata to be stored by registry + * 'attributes' - registration info which isn't a global variable */ public function getExtractedInfo(); diff --git a/includes/registration/VersionChecker.php b/includes/registration/VersionChecker.php index 5aaaa1b8ab..a31551c361 100644 --- a/includes/registration/VersionChecker.php +++ b/includes/registration/VersionChecker.php @@ -87,17 +87,17 @@ class VersionChecker { * installed extensions in the $credits array. * * Example $extDependencies: - * { - * 'FooBar' => { - * 'MediaWiki' => '>= 1.25.0', - * 'extensions' => { - * 'FooBaz' => '>= 1.25.0' - * }, - * 'skins' => { - * 'BazBar' => '>= 1.0.0' - * } - * } - * } + * { + * 'FooBar' => { + * 'MediaWiki' => '>= 1.25.0', + * 'extensions' => { + * 'FooBaz' => '>= 1.25.0' + * }, + * 'skins' => { + * 'BazBar' => '>= 1.0.0' + * } + * } + * } * * @param array $extDependencies All extensions that depend on other ones * @return array diff --git a/includes/resourceloader/ResourceLoader.php b/includes/resourceloader/ResourceLoader.php index f0b48d544f..717fb45804 100644 --- a/includes/resourceloader/ResourceLoader.php +++ b/includes/resourceloader/ResourceLoader.php @@ -255,7 +255,10 @@ class ResourceLoader implements LoggerAwareInterface { $this->register( include "$IP/resources/ResourcesOOUI.php" ); // Register extension modules $this->register( $config->get( 'ResourceModules' ) ); - Hooks::run( 'ResourceLoaderRegisterModules', [ &$this ] ); + + // Avoid PHP 7.1 warning from passing $this by reference + $rl = $this; + Hooks::run( 'ResourceLoaderRegisterModules', [ &$rl ] ); if ( $config->get( 'EnableJavaScriptTest' ) === true ) { $this->registerTestModules(); @@ -404,7 +407,9 @@ class ResourceLoader implements LoggerAwareInterface { $testModules = []; $testModules['qunit'] = []; // Get other test suites (e.g. from extensions) - Hooks::run( 'ResourceLoaderTestModules', [ &$testModules, &$this ] ); + // Avoid PHP 7.1 warning from passing $this by reference + $rl = $this; + Hooks::run( 'ResourceLoaderTestModules', [ &$testModules, &$rl ] ); // Add the testrunner (which configures QUnit) to the dependencies. // Since it must be ready before any of the test suites are executed. @@ -709,7 +714,7 @@ class ResourceLoader implements LoggerAwareInterface { $module = $this->getModule( $name ); if ( $module ) { // Do not allow private modules to be loaded from the web. - // This is a security issue, see bug 34907. + // This is a security issue, see T36907. if ( $module->getGroup() === 'private' ) { $this->logger->debug( "Request for private module '$name' denied" ); $this->errors[] = "Cannot show private module \"$name\""; @@ -813,6 +818,7 @@ class ResourceLoader implements LoggerAwareInterface { * @return void */ protected function sendResponseHeaders( ResourceLoaderContext $context, $etag, $errors ) { + \MediaWiki\HeaderCallback::warnIfHeadersSent(); $rlMaxage = $this->config->get( 'ResourceLoaderMaxage' ); // Use a short cache expiry so that updates propagate to clients quickly, if: // - No version specified (shared resources, e.g. stylesheets) @@ -1211,7 +1217,7 @@ MESSAGE; $styles = (array)$styles; foreach ( $styles as $style ) { $style = trim( $style ); - // Don't output an empty "@media print { }" block (bug 40498) + // Don't output an empty "@media print { }" block (T42498) if ( $style !== '' ) { // Transform the media type based on request params and config // The way that this relies on $wgRequest to propagate request params is slightly evil @@ -1628,7 +1634,7 @@ MESSAGE; */ public function getLessCompiler( $extraVars = [] ) { // When called from the installer, it is possible that a required PHP extension - // is missing (at least for now; see bug 47564). If this is the case, throw an + // is missing (at least for now; see T49564). If this is the case, throw an // exception (caught by the installer) to prevent a fatal error later on. if ( !class_exists( 'Less_Parser' ) ) { throw new MWException( 'MediaWiki requires the less.php parser' ); diff --git a/includes/resourceloader/ResourceLoaderClientHtml.php b/includes/resourceloader/ResourceLoaderClientHtml.php index ef2827c9b6..8c792ad3c1 100644 --- a/includes/resourceloader/ResourceLoaderClientHtml.php +++ b/includes/resourceloader/ResourceLoaderClientHtml.php @@ -365,7 +365,11 @@ class ResourceLoaderClientHtml { $rl = $mainContext->getResourceLoader(); $chunks = []; + // Sort module names so requests are more uniform + sort( $modules ); + if ( $mainContext->getDebug() && count( $modules ) > 1 ) { + $chunks = []; // Recursively call us for every item foreach ( $modules as $name ) { @@ -374,8 +378,6 @@ class ResourceLoaderClientHtml { return new WrappedStringList( "\n", $chunks ); } - // Sort module names so requests are more uniform - sort( $modules ); // Create keyed-by-source and then keyed-by-group list of module objects from modules list $sortedModules = []; foreach ( $modules as $name ) { @@ -415,7 +417,7 @@ class ResourceLoaderClientHtml { // 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 (bug 27564) because anons get that too + // 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() diff --git a/includes/resourceloader/ResourceLoaderContext.php b/includes/resourceloader/ResourceLoaderContext.php index a1a89cb620..8955b8c2a0 100644 --- a/includes/resourceloader/ResourceLoaderContext.php +++ b/includes/resourceloader/ResourceLoaderContext.php @@ -197,7 +197,7 @@ class ResourceLoaderContext { if ( $this->direction === null ) { $this->direction = $this->getRequest()->getRawVal( 'dir' ); if ( !$this->direction ) { - // Determine directionality based on user language (bug 6100) + // Determine directionality based on user language (T8100) $this->direction = Language::factory( $this->getLanguage() )->getDir(); } } diff --git a/includes/resourceloader/ResourceLoaderModule.php b/includes/resourceloader/ResourceLoaderModule.php index 8124f3398b..a2b4b1d67f 100644 --- a/includes/resourceloader/ResourceLoaderModule.php +++ b/includes/resourceloader/ResourceLoaderModule.php @@ -461,29 +461,47 @@ abstract class ResourceLoaderModule implements LoggerAwareInterface { * @param array $localFileRefs List of files */ protected function saveFileDependencies( ResourceLoaderContext $context, $localFileRefs ) { - // Normalise array - $localFileRefs = array_values( array_unique( $localFileRefs ) ); - sort( $localFileRefs ); try { + // Related bugs and performance considerations: + // 1. Don't needlessly change the database value with the same list in a + // different order or with duplicates. + // 2. Use relative paths to avoid ghost entries when $IP changes. (T111481) + // 3. Don't needlessly replace the database with the same value + // just because $IP changed (e.g. when upgrading a wiki). + // 4. Don't create an endless replace loop on every request for this + // module when '../' is used anywhere. Even though both are expanded + // (one expanded by getFileDependencies from the DB, the other is + // still raw as originally read by RL), the latter has not + // been normalized yet. + + // Normalise + $localFileRefs = array_values( array_unique( $localFileRefs ) ); + sort( $localFileRefs ); + $localPaths = self::getRelativePaths( $localFileRefs ); + + $storedPaths = self::getRelativePaths( $this->getFileDependencies( $context ) ); // If the list has been modified since last time we cached it, update the cache - if ( $localFileRefs !== $this->getFileDependencies( $context ) ) { + if ( $localPaths !== $storedPaths ) { + $vary = $context->getSkin() . '|' . $context->getLanguage(); $cache = ObjectCache::getLocalClusterInstance(); - $key = $cache->makeKey( __METHOD__, $this->getName() ); + $key = $cache->makeKey( __METHOD__, $this->getName(), $vary ); $scopeLock = $cache->getScopedLock( $key, 0 ); if ( !$scopeLock ) { return; // T124649; avoid write slams } - $vary = $context->getSkin() . '|' . $context->getLanguage(); + $deps = FormatJson::encode( $localPaths ); $dbw = wfGetDB( DB_MASTER ); - $dbw->replace( 'module_deps', - [ [ 'md_module', 'md_skin' ] ], + $dbw->upsert( 'module_deps', [ 'md_module' => $this->getName(), 'md_skin' => $vary, - // Use relative paths to avoid ghost entries when $IP changes (T111481) - 'md_deps' => FormatJson::encode( self::getRelativePaths( $localFileRefs ) ), + 'md_deps' => $deps, + ], + [ 'md_module', 'md_skin' ], + [ + 'md_deps' => $deps, ] ); @@ -633,7 +651,7 @@ abstract class ResourceLoaderModule implements LoggerAwareInterface { && substr( rtrim( $scripts ), -1 ) !== ';' ) { // Append semicolon to prevent weird bugs caused by files not - // terminating their statements right (bug 27054) + // terminating their statements right (T29054) $scripts .= ";\n"; } } @@ -644,7 +662,7 @@ abstract class ResourceLoaderModule implements LoggerAwareInterface { if ( $context->shouldIncludeStyles() ) { $styles = []; // Don't create empty stylesheets like [ '' => '' ] for modules - // that don't *have* any stylesheets (bug 38024). + // that don't *have* any stylesheets (T40024). $stylePairs = $this->getStyles( $context ); if ( count( $stylePairs ) ) { // If we are in debug mode without &only= set, we'll want to return an array of URLs @@ -825,7 +843,7 @@ abstract class ResourceLoaderModule implements LoggerAwareInterface { */ public function getDefinitionSummary( ResourceLoaderContext $context ) { return [ - '_class' => get_class( $this ), + '_class' => static::class, '_cacheEpoch' => $this->getConfig()->get( 'CacheEpoch' ), ]; } diff --git a/includes/resourceloader/ResourceLoaderStartUpModule.php b/includes/resourceloader/ResourceLoaderStartUpModule.php index a99305ca61..48e4a0ded7 100644 --- a/includes/resourceloader/ResourceLoaderStartUpModule.php +++ b/includes/resourceloader/ResourceLoaderStartUpModule.php @@ -82,7 +82,7 @@ class ResourceLoaderStartUpModule extends ResourceLoaderModule { 'wgSearchType' => $conf->get( 'SearchType' ), 'wgVariantArticlePath' => $conf->get( 'VariantArticlePath' ), // Force object to avoid "empty" associative array from - // becoming [] instead of {} in JS (bug 34604) + // becoming [] instead of {} in JS (T36604) 'wgActionPaths' => (object)$conf->get( 'ActionPaths' ), 'wgServer' => $conf->get( 'Server' ), 'wgServerName' => $conf->get( 'ServerName' ), diff --git a/includes/resourceloader/ResourceLoaderWikiModule.php b/includes/resourceloader/ResourceLoaderWikiModule.php index 14d6e056e0..b0d060b788 100644 --- a/includes/resourceloader/ResourceLoaderWikiModule.php +++ b/includes/resourceloader/ResourceLoaderWikiModule.php @@ -268,7 +268,7 @@ class ResourceLoaderWikiModule extends ResourceLoaderModule { return true; } - // Bug 68488: For other modules (i.e. ones that are called in cached html output) only check + // T70488: For other modules (i.e. ones that are called in cached html output) only check // page existance. This ensures that, if some pages in a module are temporarily blanked, // we don't end omit the module's script or link tag on some pages. return count( $revisions ) === 0; @@ -357,6 +357,11 @@ class ResourceLoaderWikiModule extends ResourceLoaderModule { } } + if ( !$wikiModules ) { + // Nothing to preload + return; + } + $pageNames = array_keys( $allPages ); sort( $pageNames ); $hash = sha1( implode( '|', $pageNames ) ); diff --git a/includes/revisiondelete/RevDelList.php b/includes/revisiondelete/RevDelList.php index 833e38b2dc..64a6aec806 100644 --- a/includes/revisiondelete/RevDelList.php +++ b/includes/revisiondelete/RevDelList.php @@ -19,6 +19,8 @@ * @ingroup RevisionDelete */ +use MediaWiki\MediaWikiServices; + /** * Abstract base class for a list of deletable items. The list class * needs to be able to make a query from a set of identifiers to pull @@ -255,7 +257,8 @@ abstract class RevDelList extends RevisionListBase { $status->merge( $this->doPreCommitUpdates() ); if ( !$status->isOK() ) { // Fatal error, such as no configured archive directory or I/O failures - wfGetLBFactory()->rollbackMasterChanges( __METHOD__ ); + $lbFactory = MediaWikiServices::getInstance()->getDBLoadBalancerFactory(); + $lbFactory->rollbackMasterChanges( __METHOD__ ); return $status; } diff --git a/includes/revisiondelete/RevDelRevisionList.php b/includes/revisiondelete/RevDelRevisionList.php index f0b1907d83..453c6cca70 100644 --- a/includes/revisiondelete/RevDelRevisionList.php +++ b/includes/revisiondelete/RevDelRevisionList.php @@ -19,6 +19,8 @@ * @ingroup RevisionDelete */ +use Wikimedia\Rdbms\FakeResultWrapper; + /** * List for revision table items * diff --git a/includes/search/SearchEngine.php b/includes/search/SearchEngine.php index 0bcb07a5a6..9817b6cc99 100644 --- a/includes/search/SearchEngine.php +++ b/includes/search/SearchEngine.php @@ -109,6 +109,20 @@ abstract class SearchEngine { $this->features[$feature] = $data; } + /** + * Way to retrieve custom data set by setFeatureData + * or by the engine itself. + * @since 1.29 + * @param string $feature feature name + * @return mixed the feature value or null if unset + */ + public function getFeatureData( $feature ) { + if ( isset ( $this->features[$feature] ) ) { + return $this->features[$feature]; + } + return null; + } + /** * When overridden in derived class, performs database-specific conversions * on text to be used for searching or updating search index. @@ -706,8 +720,21 @@ abstract class SearchEngine { public function getSearchIndexFields() { $models = ContentHandler::getContentModels(); $fields = []; + $seenHandlers = new SplObjectStorage(); foreach ( $models as $model ) { - $handler = ContentHandler::getForModelID( $model ); + try { + $handler = ContentHandler::getForModelID( $model ); + } + catch ( MWUnknownContentModelException $e ) { + // If we can find no handler, ignore it + continue; + } + // Several models can have the same handler, so avoid processing it repeatedly + if ( $seenHandlers->contains( $handler ) ) { + // We already did this one + continue; + } + $seenHandlers->attach( $handler ); $handlerFields = $handler->getFieldsForSearchIndex( $this ); foreach ( $handlerFields as $fieldName => $fieldData ) { if ( empty( $fields[$fieldName] ) ) { diff --git a/includes/search/SearchIndexFieldDefinition.php b/includes/search/SearchIndexFieldDefinition.php index 8a06b65ed7..04344fdadd 100644 --- a/includes/search/SearchIndexFieldDefinition.php +++ b/includes/search/SearchIndexFieldDefinition.php @@ -33,6 +33,11 @@ abstract class SearchIndexFieldDefinition implements SearchIndexField { */ protected $subfields = []; + /** + * @var callable + */ + private $mergeCallback; + /** * SearchIndexFieldDefinition constructor. * @param string $name Field name @@ -91,9 +96,12 @@ abstract class SearchIndexFieldDefinition implements SearchIndexField { * @return SearchIndexField|false New definition or false if not mergeable. */ public function merge( SearchIndexField $that ) { + if ( !empty( $this->mergeCallback ) ) { + return call_user_func( $this->mergeCallback, $this, $that ); + } // TODO: which definitions may be compatible? if ( ( $that instanceof self ) && $this->type === $that->type && - $this->flags === $that->flags && $this->type !== self::INDEX_TYPE_NESTED + $this->flags === $that->flags && $this->type !== self::INDEX_TYPE_NESTED ) { return $that; } @@ -125,4 +133,11 @@ abstract class SearchIndexFieldDefinition implements SearchIndexField { */ abstract public function getMapping( SearchEngine $engine ); + /** + * Set field-specific merge strategy. + * @param callable $callback + */ + public function setMergeCallback( $callback ) { + $this->mergeCallback = $callback; + } } diff --git a/includes/search/SqlSearchResultSet.php b/includes/search/SqlSearchResultSet.php index c3985d1852..53d09e82b1 100644 --- a/includes/search/SqlSearchResultSet.php +++ b/includes/search/SqlSearchResultSet.php @@ -1,4 +1,7 @@ <?php + +use Wikimedia\Rdbms\ResultWrapper; + /** * This class is used for different SQL-based search engines shipped with MediaWiki * @ingroup Search diff --git a/includes/session/SessionManager.php b/includes/session/SessionManager.php index 0041450f86..7cc8509486 100644 --- a/includes/session/SessionManager.php +++ b/includes/session/SessionManager.php @@ -773,7 +773,8 @@ final class SessionManager implements SessionManagerInterface { return $failHandler(); } } elseif ( !$info->getUserInfo()->isVerified() ) { - $this->logger->warning( + // probably just a session timeout + $this->logger->info( 'Session "{session}": Unverified user provided and no metadata to auth it', [ 'session' => $info, diff --git a/includes/session/SessionManagerInterface.php b/includes/session/SessionManagerInterface.php index 3ab0f43183..c6990fefe7 100644 --- a/includes/session/SessionManagerInterface.php +++ b/includes/session/SessionManagerInterface.php @@ -91,9 +91,9 @@ interface SessionManagerInterface extends LoggerAwareInterface { * * The return value is such that someone could theoretically do this: * @code - * foreach ( $provider->getVaryHeaders() as $header => $options ) { - * $outputPage->addVaryHeader( $header, $options ); - * } + * foreach ( $provider->getVaryHeaders() as $header => $options ) { + * $outputPage->addVaryHeader( $header, $options ); + * } * @endcode * * @return array diff --git a/includes/session/SessionProvider.php b/includes/session/SessionProvider.php index 61c7500d05..3cf69b7b33 100644 --- a/includes/session/SessionProvider.php +++ b/includes/session/SessionProvider.php @@ -397,9 +397,9 @@ abstract class SessionProvider implements SessionProviderInterface, LoggerAwareI * * The return value is such that someone could theoretically do this: * @code - * foreach ( $provider->getVaryHeaders() as $header => $options ) { - * $outputPage->addVaryHeader( $header, $options ); - * } + * foreach ( $provider->getVaryHeaders() as $header => $options ) { + * $outputPage->addVaryHeader( $header, $options ); + * } * @endcode * * @protected For use by \MediaWiki\Session\SessionManager only @@ -455,7 +455,7 @@ abstract class SessionProvider implements SessionProviderInterface, LoggerAwareI * @return string */ public function __toString() { - return get_class( $this ); + return static::class; } /** @@ -475,7 +475,7 @@ abstract class SessionProvider implements SessionProviderInterface, LoggerAwareI */ protected function describeMessage() { return wfMessage( - 'sessionprovider-' . str_replace( '\\', '-', strtolower( get_class( $this ) ) ) + 'sessionprovider-' . str_replace( '\\', '-', strtolower( static::class ) ) ); } diff --git a/includes/site/DBSiteStore.php b/includes/site/DBSiteStore.php index e5247f2fc1..e106f37ecc 100644 --- a/includes/site/DBSiteStore.php +++ b/includes/site/DBSiteStore.php @@ -1,5 +1,7 @@ <?php +use Wikimedia\Rdbms\LoadBalancer; + /** * Represents the site configuration of a wiki. * Holds a list of sites (ie SiteList), stored in the database. diff --git a/includes/site/Site.php b/includes/site/Site.php index 6a97a50209..28f19f9abf 100644 --- a/includes/site/Site.php +++ b/includes/site/Site.php @@ -463,6 +463,9 @@ class Site implements Serializable { * @param string $languageCode */ public function setLanguageCode( $languageCode ) { + if ( !Language::isValidCode( $languageCode ) ) { + throw new InvalidArgumentException( "$languageCode is not a valid language code." ); + } $this->languageCode = $languageCode; } diff --git a/includes/skins/BaseTemplate.php b/includes/skins/BaseTemplate.php index 65eb9b776e..e571c58c32 100644 --- a/includes/skins/BaseTemplate.php +++ b/includes/skins/BaseTemplate.php @@ -112,7 +112,9 @@ abstract class BaseTemplate extends QuickTemplate { $toolbox['info']['id'] = 't-info'; } - Hooks::run( 'BaseTemplateToolbox', [ &$this, &$toolbox ] ); + // Avoid PHP 7.1 warning from passing $this by reference + $template = $this; + Hooks::run( 'BaseTemplateToolbox', [ &$template, &$toolbox ] ); return $toolbox; } @@ -227,7 +229,9 @@ abstract class BaseTemplate extends QuickTemplate { ob_start(); // We pass an extra 'true' at the end so extensions using BaseTemplateToolbox // can abort and avoid outputting double toolbox links - Hooks::run( 'SkinTemplateToolboxEnd', [ &$this, true ] ); + // Avoid PHP 7.1 warning from passing $this by reference + $template = $this; + Hooks::run( 'SkinTemplateToolboxEnd', [ &$template, true ] ); $hookContents = ob_get_contents(); ob_end_clean(); if ( !trim( $hookContents ) ) { @@ -320,12 +324,12 @@ abstract class BaseTemplate extends QuickTemplate { * * If a "data" key is present, it must be an array, where the keys represent * the data-xxx properties with their provided values. For example, - * $item['data'] = [ - * 'foo' => 1, - * 'bar' => 'baz', - * ]; + * $item['data'] = [ + * 'foo' => 1, + * 'bar' => 'baz', + * ]; * will render as element properties: - * data-foo='1' data-bar='baz' + * data-foo='1' data-bar='baz' * * @param array $options Can be used to affect the output of a link. * Possible options are: @@ -644,7 +648,7 @@ abstract class BaseTemplate extends QuickTemplate { * @since 1.25 */ public function getIndicators() { - $out = "<div class=\"mw-indicators\">\n"; + $out = "<div class=\"mw-indicators mw-body-content\">\n"; foreach ( $this->data['indicators'] as $id => $content ) { $out .= Html::rawElement( 'div', diff --git a/includes/skins/Skin.php b/includes/skins/Skin.php index 96812ea23f..3ef646aec9 100644 --- a/includes/skins/Skin.php +++ b/includes/skins/Skin.php @@ -381,7 +381,7 @@ abstract class Skin extends ContextSource { if ( $title->isSpecialPage() ) { $type = 'ns-special'; - // bug 23315: provide a class based on the canonical special page name without subpages + // T25315: provide a class based on the canonical special page name without subpages list( $canonicalName ) = SpecialPageFactory::resolveAlias( $title->getDBkey() ); if ( $canonicalName ) { $type .= ' ' . Sanitizer::escapeClass( "mw-special-$canonicalName" ); @@ -906,7 +906,10 @@ abstract class Skin extends ContextSource { $html = htmlspecialchars( $icon["alt"] ); } if ( $url ) { - $html = Html::rawElement( 'a', [ "href" => $url ], $html ); + global $wgExternalLinkTarget; + $html = Html::rawElement( 'a', + [ "href" => $url, "target" => $wgExternalLinkTarget ], + $html ); } } return $html; @@ -1035,7 +1038,7 @@ abstract class Skin extends ContextSource { global $wgStylePath, $wgStyleVersion; if ( $this->stylename === null ) { - $class = get_class( $this ); + $class = static::class; throw new MWException( "$class::\$stylename must be set to use getSkinStylePath()" ); } @@ -1283,7 +1286,7 @@ abstract class Skin extends ContextSource { $line = array_map( 'trim', explode( '|', $line, 2 ) ); if ( count( $line ) !== 2 ) { // Second sanity check, could be hit by people doing - // funky stuff with parserfuncs... (bug 33321) + // funky stuff with parserfuncs... (T35321) continue; } @@ -1538,7 +1541,7 @@ abstract class Skin extends ContextSource { $attribs = []; if ( !is_null( $tooltip ) ) { - # Bug 25462: undo double-escaping. + # T27462: undo double-escaping. $tooltip = Sanitizer::decodeCharReferences( $tooltip ); $attribs['title'] = wfMessage( 'editsectionhint' )->rawParams( $tooltip ) ->inLanguage( $lang )->text(); diff --git a/includes/skins/SkinTemplate.php b/includes/skins/SkinTemplate.php index 575a9acf77..61dbf2b1c1 100644 --- a/includes/skins/SkinTemplate.php +++ b/includes/skins/SkinTemplate.php @@ -61,7 +61,7 @@ class SkinTemplate extends Skin { * * @param OutputPage $out */ - function setupSkinUserCss( OutputPage $out ) { + public function setupSkinUserCss( OutputPage $out ) { $moduleStyles = [ 'mediawiki.legacy.shared', 'mediawiki.legacy.commonPrint', @@ -344,7 +344,7 @@ class SkinTemplate extends Skin { $tpl->set( 'charset', 'UTF-8' ); $tpl->setRef( 'wgScript', $wgScript ); $tpl->setRef( 'skinname', $this->skinname ); - $tpl->set( 'skinclass', get_class( $this ) ); + $tpl->set( 'skinclass', static::class ); $tpl->setRef( 'skin', $this ); $tpl->setRef( 'stylename', $this->stylename ); $tpl->set( 'printable', $out->isPrintable() ); @@ -582,7 +582,7 @@ class SkinTemplate extends Skin { /* set up the default links for the personal toolbar */ $personal_urls = []; - # Due to bug 32276, if a user does not have read permissions, + # Due to T34276, if a user does not have read permissions, # $this->getTitle() will just give Special:Badtitle, which is # not especially useful as a returnto parameter. Use the title # from the request instead, if there was one. @@ -663,7 +663,7 @@ class SkinTemplate extends Skin { 'text' => $this->msg( 'pt-userlogout' )->text(), 'href' => self::makeSpecialUrl( 'Userlogout', // userlogout link must always contain an & character, otherwise we might not be able - // to detect a buggy precaching proxy (bug 17790) + // to detect a buggy precaching proxy (T19790) $title->isSpecial( 'Preferences' ) ? 'noreturnto' : $returnto ), 'active' => false ]; @@ -1120,7 +1120,7 @@ class SkinTemplate extends Skin { $content_navigation['namespaces']['special'] = [ 'class' => 'selected', 'text' => $this->msg( 'nstab-special' )->text(), - 'href' => $request->getRequestURL(), // @see: bug 2457, bug 2510 + 'href' => $request->getRequestURL(), // @see: T4457, T4510 'context' => 'subject' ]; @@ -1283,7 +1283,7 @@ class SkinTemplate extends Skin { 'href' => $this->getTitle()->getLocalURL( "action=info" ) ]; - if ( $this->getTitle()->exists() ) { + if ( $this->getTitle()->exists() || $this->getTitle()->inNamespace( NS_CATEGORY ) ) { $nav_urls['recentchangeslinked'] = [ 'href' => SpecialPage::getTitleFor( 'Recentchangeslinked', $this->thispage )->getLocalURL() ]; @@ -1322,11 +1322,11 @@ class SkinTemplate extends Skin { if ( !$user->isAnon() ) { $sur = new UserrightsPage; $sur->setContext( $this->getContext() ); - $canChange = $sur->userCanChangeRights( $this->getUser(), false ); + $canChange = $sur->userCanChangeRights( $user ); $nav_urls['userrights'] = [ 'text' => $this->msg( $canChange ? 'tool-link-userrights' : 'tool-link-userrights-readonly', - $this->getUser()->getName() + $rootUser )->text(), 'href' => self::makeSpecialUrlSubpage( 'Userrights', $rootUser ) ]; diff --git a/includes/specialpage/ChangesListSpecialPage.php b/includes/specialpage/ChangesListSpecialPage.php index 00efeae1e2..e92f697c71 100644 --- a/includes/specialpage/ChangesListSpecialPage.php +++ b/includes/specialpage/ChangesListSpecialPage.php @@ -20,6 +20,8 @@ * @file * @ingroup SpecialPage */ +use MediaWiki\Logger\LoggerFactory; +use Wikimedia\Rdbms\ResultWrapper; /** * Special page which uses a ChangesList to show query results. @@ -37,6 +39,384 @@ abstract class ChangesListSpecialPage extends SpecialPage { /** @var array */ protected $customFilters; + // Order of both groups and filters is significant; first is top-most priority, + // descending from there. + // 'showHideSuffix' is a shortcut to and avoid spelling out + // details specific to subclasses here. + /** + * Definition information for the filters and their groups + * + * The value is $groupDefinition, a parameter to the ChangesListFilterGroup constructor. + * However, priority is dynamically added for the core groups, to ease maintenance. + * + * Groups are displayed to the user in the structured UI. However, if necessary, + * all of the filters in a group can be configured to only display on the + * unstuctured UI, in which case you don't need a group title. This is done in + * getFilterGroupDefinitionFromLegacyCustomFilters, for example. + * + * @var array $filterGroupDefinitions + */ + private $filterGroupDefinitions; + + /** + * Filter groups, and their contained filters + * This is an associative array (with group name as key) of ChangesListFilterGroup objects. + * + * @var array $filterGroups + */ + protected $filterGroups = []; + + public function __construct( $name, $restriction ) { + parent::__construct( $name, $restriction ); + + $this->filterGroupDefinitions = [ + [ + 'name' => 'registration', + 'title' => 'rcfilters-filtergroup-registration', + 'class' => ChangesListBooleanFilterGroup::class, + 'filters' => [ + [ + 'name' => 'hideliu', + 'label' => 'rcfilters-filter-registered-label', + 'description' => 'rcfilters-filter-registered-description', + // rcshowhideliu-show, rcshowhideliu-hide, + // wlshowhideliu + 'showHideSuffix' => 'showhideliu', + 'default' => false, + 'queryCallable' => function ( $specialClassName, $ctx, $dbr, &$tables, &$fields, &$conds, + &$query_options, &$join_conds ) { + + $conds[] = 'rc_user = 0'; + }, + 'cssClassSuffix' => 'liu', + 'isRowApplicableCallable' => function ( $ctx, $rc ) { + return $rc->getAttribute( 'rc_user' ); + }, + + ], + [ + 'name' => 'hideanons', + 'label' => 'rcfilters-filter-unregistered-label', + 'description' => 'rcfilters-filter-unregistered-description', + // rcshowhideanons-show, rcshowhideanons-hide, + // wlshowhideanons + 'showHideSuffix' => 'showhideanons', + 'default' => false, + 'queryCallable' => function ( $specialClassName, $ctx, $dbr, &$tables, &$fields, &$conds, + &$query_options, &$join_conds ) { + + $conds[] = 'rc_user != 0'; + }, + 'cssClassSuffix' => 'anon', + 'isRowApplicableCallable' => function ( $ctx, $rc ) { + return !$rc->getAttribute( 'rc_user' ); + }, + ] + ], + ], + + [ + 'name' => 'userExpLevel', + 'title' => 'rcfilters-filtergroup-userExpLevel', + 'class' => ChangesListStringOptionsFilterGroup::class, + // Excludes unregistered users + 'isFullCoverage' => false, + 'filters' => [ + [ + 'name' => 'newcomer', + 'label' => 'rcfilters-filter-user-experience-level-newcomer-label', + 'description' => 'rcfilters-filter-user-experience-level-newcomer-description', + 'cssClassSuffix' => 'user-newcomer', + 'isRowApplicableCallable' => function ( $ctx, $rc ) { + $performer = $rc->getPerformer(); + return $performer && $performer->isLoggedIn() && + $performer->getExperienceLevel() === 'newcomer'; + } + ], + [ + 'name' => 'learner', + 'label' => 'rcfilters-filter-user-experience-level-learner-label', + 'description' => 'rcfilters-filter-user-experience-level-learner-description', + 'cssClassSuffix' => 'user-learner', + 'isRowApplicableCallable' => function ( $ctx, $rc ) { + $performer = $rc->getPerformer(); + return $performer && $performer->isLoggedIn() && + $performer->getExperienceLevel() === 'learner'; + }, + ], + [ + 'name' => 'experienced', + 'label' => 'rcfilters-filter-user-experience-level-experienced-label', + 'description' => 'rcfilters-filter-user-experience-level-experienced-description', + 'cssClassSuffix' => 'user-experienced', + 'isRowApplicableCallable' => function ( $ctx, $rc ) { + $performer = $rc->getPerformer(); + return $performer && $performer->isLoggedIn() && + $performer->getExperienceLevel() === 'experienced'; + }, + ] + ], + 'default' => ChangesListStringOptionsFilterGroup::NONE, + 'queryCallable' => [ $this, 'filterOnUserExperienceLevel' ], + ], + + [ + 'name' => 'authorship', + 'title' => 'rcfilters-filtergroup-authorship', + 'class' => ChangesListBooleanFilterGroup::class, + 'filters' => [ + [ + 'name' => 'hidemyself', + 'label' => 'rcfilters-filter-editsbyself-label', + 'description' => 'rcfilters-filter-editsbyself-description', + // rcshowhidemine-show, rcshowhidemine-hide, + // wlshowhidemine + 'showHideSuffix' => 'showhidemine', + 'default' => false, + 'queryCallable' => function ( $specialClassName, $ctx, $dbr, &$tables, &$fields, &$conds, + &$query_options, &$join_conds ) { + + $user = $ctx->getUser(); + if ( $user->getId() ) { + $conds[] = 'rc_user != ' . $dbr->addQuotes( $user->getId() ); + } else { + $conds[] = 'rc_user_text != ' . $dbr->addQuotes( $user->getName() ); + } + }, + 'cssClassSuffix' => 'self', + 'isRowApplicableCallable' => function ( $ctx, $rc ) { + return $ctx->getUser()->equals( $rc->getPerformer() ); + }, + ], + [ + 'name' => 'hidebyothers', + 'label' => 'rcfilters-filter-editsbyother-label', + 'description' => 'rcfilters-filter-editsbyother-description', + 'default' => false, + 'queryCallable' => function ( $specialClassName, $ctx, $dbr, &$tables, &$fields, &$conds, + &$query_options, &$join_conds ) { + + $user = $ctx->getUser(); + if ( $user->getId() ) { + $conds[] = 'rc_user = ' . $dbr->addQuotes( $user->getId() ); + } else { + $conds[] = 'rc_user_text = ' . $dbr->addQuotes( $user->getName() ); + } + }, + 'cssClassSuffix' => 'others', + 'isRowApplicableCallable' => function ( $ctx, $rc ) { + return !$ctx->getUser()->equals( $rc->getPerformer() ); + }, + ] + ] + ], + + [ + 'name' => 'automated', + 'title' => 'rcfilters-filtergroup-automated', + 'class' => ChangesListBooleanFilterGroup::class, + 'filters' => [ + [ + 'name' => 'hidebots', + 'label' => 'rcfilters-filter-bots-label', + 'description' => 'rcfilters-filter-bots-description', + // rcshowhidebots-show, rcshowhidebots-hide, + // wlshowhidebots + 'showHideSuffix' => 'showhidebots', + 'default' => false, + 'queryCallable' => function ( $specialClassName, $ctx, $dbr, &$tables, &$fields, &$conds, + &$query_options, &$join_conds ) { + + $conds[] = 'rc_bot = 0'; + }, + 'cssClassSuffix' => 'bot', + 'isRowApplicableCallable' => function ( $ctx, $rc ) { + return $rc->getAttribute( 'rc_bot' ); + }, + ], + [ + 'name' => 'hidehumans', + 'label' => 'rcfilters-filter-humans-label', + 'description' => 'rcfilters-filter-humans-description', + 'default' => false, + 'queryCallable' => function ( $specialClassName, $ctx, $dbr, &$tables, &$fields, &$conds, + &$query_options, &$join_conds ) { + + $conds[] = 'rc_bot = 1'; + }, + 'cssClassSuffix' => 'human', + 'isRowApplicableCallable' => function ( $ctx, $rc ) { + return !$rc->getAttribute( 'rc_bot' ); + }, + ] + ] + ], + + [ + 'name' => 'reviewStatus', + 'title' => 'rcfilters-filtergroup-reviewstatus', + 'class' => ChangesListBooleanFilterGroup::class, + 'filters' => [ + [ + 'name' => 'hidepatrolled', + 'label' => 'rcfilters-filter-patrolled-label', + 'description' => 'rcfilters-filter-patrolled-description', + // rcshowhidepatr-show, rcshowhidepatr-hide + // wlshowhidepatr + 'showHideSuffix' => 'showhidepatr', + 'default' => false, + 'isAllowedCallable' => function ( $pageClassName, $context ) { + return $context->getUser()->useRCPatrol(); + }, + 'queryCallable' => function ( $specialClassName, $ctx, $dbr, &$tables, &$fields, &$conds, + &$query_options, &$join_conds ) { + + $conds[] = 'rc_patrolled = 0'; + }, + 'cssClassSuffix' => 'patrolled', + 'isRowApplicableCallable' => function ( $ctx, $rc ) { + return $rc->getAttribute( 'rc_patrolled' ); + }, + ], + [ + 'name' => 'hideunpatrolled', + 'label' => 'rcfilters-filter-unpatrolled-label', + 'description' => 'rcfilters-filter-unpatrolled-description', + 'default' => false, + 'isAllowedCallable' => function ( $pageClassName, $context ) { + return $context->getUser()->useRCPatrol(); + }, + 'queryCallable' => function ( $specialClassName, $ctx, $dbr, &$tables, &$fields, &$conds, + &$query_options, &$join_conds ) { + + $conds[] = 'rc_patrolled = 1'; + }, + 'cssClassSuffix' => 'unpatrolled', + 'isRowApplicableCallable' => function ( $ctx, $rc ) { + return !$rc->getAttribute( 'rc_patrolled' ); + }, + ], + ], + ], + + [ + 'name' => 'significance', + 'title' => 'rcfilters-filtergroup-significance', + 'class' => ChangesListBooleanFilterGroup::class, + 'filters' => [ + [ + 'name' => 'hideminor', + 'label' => 'rcfilters-filter-minor-label', + 'description' => 'rcfilters-filter-minor-description', + // rcshowhideminor-show, rcshowhideminor-hide, + // wlshowhideminor + 'showHideSuffix' => 'showhideminor', + 'default' => false, + 'queryCallable' => function ( $specialClassName, $ctx, $dbr, &$tables, &$fields, &$conds, + &$query_options, &$join_conds ) { + + $conds[] = 'rc_minor = 0'; + }, + 'cssClassSuffix' => 'minor', + 'isRowApplicableCallable' => function ( $ctx, $rc ) { + return $rc->getAttribute( 'rc_minor' ); + } + ], + [ + 'name' => 'hidemajor', + 'label' => 'rcfilters-filter-major-label', + 'description' => 'rcfilters-filter-major-description', + 'default' => false, + 'queryCallable' => function ( $specialClassName, $ctx, $dbr, &$tables, &$fields, &$conds, + &$query_options, &$join_conds ) { + + $conds[] = 'rc_minor = 1'; + }, + 'cssClassSuffix' => 'major', + 'isRowApplicableCallable' => function ( $ctx, $rc ) { + return !$rc->getAttribute( 'rc_minor' ); + } + ] + ] + ], + + // With extensions, there can be change types that will not be hidden by any of these. + [ + 'name' => 'changeType', + 'title' => 'rcfilters-filtergroup-changetype', + 'class' => ChangesListBooleanFilterGroup::class, + 'filters' => [ + [ + 'name' => 'hidepageedits', + 'label' => 'rcfilters-filter-pageedits-label', + 'description' => 'rcfilters-filter-pageedits-description', + 'default' => false, + 'queryCallable' => function ( $specialClassName, $ctx, $dbr, &$tables, &$fields, &$conds, + &$query_options, &$join_conds ) { + + $conds[] = 'rc_type != ' . $dbr->addQuotes( RC_EDIT ); + }, + 'cssClassSuffix' => 'src-mw-edit', + 'isRowApplicableCallable' => function ( $ctx, $rc ) { + return $rc->getAttribute( 'rc_source' ) === RecentChange::SRC_EDIT; + }, + ], + [ + 'name' => 'hidenewpages', + 'label' => 'rcfilters-filter-newpages-label', + 'description' => 'rcfilters-filter-newpages-description', + 'default' => false, + 'queryCallable' => function ( $specialClassName, $ctx, $dbr, &$tables, &$fields, &$conds, + &$query_options, &$join_conds ) { + + $conds[] = 'rc_type != ' . $dbr->addQuotes( RC_NEW ); + }, + 'cssClassSuffix' => 'src-mw-new', + 'isRowApplicableCallable' => function ( $ctx, $rc ) { + return $rc->getAttribute( 'rc_source' ) === RecentChange::SRC_NEW; + }, + ], + [ + 'name' => 'hidecategorization', + 'label' => 'rcfilters-filter-categorization-label', + 'description' => 'rcfilters-filter-categorization-description', + // rcshowhidecategorization-show, rcshowhidecategorization-hide. + // wlshowhidecategorization + 'showHideSuffix' => 'showhidecategorization', + 'isAllowedCallable' => function ( $pageClassName, $context ) { + return $context->getConfig()->get( 'RCWatchCategoryMembership' ); + }, + 'default' => false, + 'queryCallable' => function ( $specialClassName, $ctx, $dbr, &$tables, &$fields, &$conds, + &$query_options, &$join_conds ) { + + $conds[] = 'rc_type != ' . $dbr->addQuotes( RC_CATEGORIZE ); + }, + 'cssClassSuffix' => 'src-mw-categorize', + 'isRowApplicableCallable' => function ( $ctx, $rc ) { + return $rc->getAttribute( 'rc_source' ) === RecentChange::SRC_CATEGORIZE; + }, + ], + [ + 'name' => 'hidelog', + 'label' => 'rcfilters-filter-logactions-label', + 'description' => 'rcfilters-filter-logactions-description', + 'default' => false, + 'queryCallable' => function ( $specialClassName, $ctx, $dbr, &$tables, &$fields, &$conds, + &$query_options, &$join_conds ) { + + $conds[] = 'rc_type != ' . $dbr->addQuotes( RC_LOG ); + }, + 'cssClassSuffix' => 'src-mw-log', + 'isRowApplicableCallable' => function ( $ctx, $rc ) { + return $rc->getAttribute( 'rc_source' ) === RecentChange::SRC_LOG; + } + ], + ], + ], + ]; + } + /** * Main execution point * @@ -77,6 +457,14 @@ abstract class ChangesListSpecialPage extends SpecialPage { $this->webOutput( $rows, $opts ); $rows->free(); + + if ( $this->getConfig()->get( 'EnableWANCacheReaper' ) ) { + // Clean up any bad page entries for titles showing up in RC + DeferredUpdates::addUpdate( new WANCacheReapUpdate( + $this->getDB(), + LoggerFactory::getInstance( 'objectcache' ) + ) ); + } } /** @@ -86,9 +474,15 @@ abstract class ChangesListSpecialPage extends SpecialPage { */ public function getRows() { $opts = $this->getOptions(); - $conds = $this->buildMainQueryConds( $opts ); - return $this->doMainQuery( $conds, $opts ); + $tables = []; + $fields = []; + $conds = []; + $query_options = []; + $join_conds = []; + $this->buildQuery( $tables, $fields, $conds, $query_options, $join_conds, $opts ); + + return $this->doMainQuery( $tables, $fields, $conds, $query_options, $join_conds, $opts ); } /** @@ -105,17 +499,99 @@ abstract class ChangesListSpecialPage extends SpecialPage { } /** - * Create a FormOptions object with options as specified by the user + * Register all filters and their groups, plus conflicts + * + * You might want to customize these in the same method, in subclasses. You can + * call getFilterGroup to access a group, and (on the group) getFilter to access a + * filter, then make necessary modfications to the filter or group (e.g. with + * setDefault). + */ + protected function registerFilters() { + $this->registerFiltersFromDefinitions( $this->filterGroupDefinitions ); + + Hooks::run( 'ChangesListSpecialPageStructuredFilters', [ $this ] ); + + $unstructuredGroupDefinition = + $this->getFilterGroupDefinitionFromLegacyCustomFilters( + $this->getCustomFilters() + ); + $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' + ); + } + + /** + * Register filters from a definition object + * + * Array specifying groups and their filters; see Filter and + * ChangesListFilterGroup constructors. + * + * There is light processing to simplify core maintenance. See overrides + * of this method as well. + */ + protected function registerFiltersFromDefinitions( array $definition ) { + $priority = -1; + foreach ( $definition as $groupDefinition ) { + $groupDefinition['priority'] = $priority; + $priority--; + + $className = $groupDefinition['class']; + unset( $groupDefinition['class'] ); + $this->registerFilterGroup( new $className( $groupDefinition ) ); + } + } + + /** + * Get filter group definition from legacy custom filters + * + * @param array Custom filters from legacy hooks + * @return array Group definition + */ + protected function getFilterGroupDefinitionFromLegacyCustomFilters( $customFilters ) { + // Special internal unstructured group + $unstructuredGroupDefinition = [ + 'name' => 'unstructured', + 'class' => ChangesListBooleanFilterGroup::class, + 'priority' => -1, // Won't display in structured + 'filters' => [], + ]; + + foreach ( $customFilters as $name => $params ) { + $unstructuredGroupDefinition['filters'][] = [ + 'name' => $name, + 'showHide' => $params['msg'], + 'default' => $params['default'], + ]; + } + + return $unstructuredGroupDefinition; + } + + /** + * Register all the filters, including legacy hook-driven ones. + * Then create a FormOptions object with options as specified by the user * * @param array $parameters * * @return FormOptions */ public function setup( $parameters ) { + $this->registerFilters(); + $opts = $this->getDefaultOptions(); - foreach ( $this->getCustomFilters() as $key => $params ) { - $opts->add( $key, $params['default'] ); - } $opts = $this->fetchOptionsFromRequest( $opts ); @@ -130,8 +606,11 @@ abstract class ChangesListSpecialPage extends SpecialPage { } /** - * Get a FormOptions object containing the default options. By default returns some basic options, - * you might want to not call parent method and discard them, or to override default values. + * Get a FormOptions object containing the default options. By default, returns + * some basic options. The filters listed explicitly here are overriden in this + * method, in subclasses, but most filters (e.g. hideminor, userExpLevel filters, + * and more) are structured. Structured filters are overriden in registerFilters. + * not here. * * @return FormOptions */ @@ -139,23 +618,18 @@ abstract class ChangesListSpecialPage extends SpecialPage { $config = $this->getConfig(); $opts = new FormOptions(); - $opts->add( 'hideminor', false ); - $opts->add( 'hidemajor', false ); - $opts->add( 'hidebots', false ); - $opts->add( 'hidehumans', false ); - $opts->add( 'hideanons', false ); - $opts->add( 'hideliu', false ); - $opts->add( 'hidepatrolled', false ); - $opts->add( 'hideunpatrolled', false ); - $opts->add( 'hidemyself', false ); - $opts->add( 'hidebyothers', false ); - - if ( $config->get( 'RCWatchCategoryMembership' ) ) { - $opts->add( 'hidecategorization', false ); + // Add all filters + 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(), $filterGroup->getDefault() ); + } else { + foreach ( $filterGroup->getFilters() as $filter ) { + $opts->add( $filter->getName(), $filter->getDefault() ); + } + } } - $opts->add( 'hidepageedits', false ); - $opts->add( 'hidenewpages', false ); - $opts->add( 'hidelog', false ); $opts->add( 'namespace', '', FormOptions::INTNULL ); $opts->add( 'invert', false ); @@ -165,14 +639,86 @@ abstract class ChangesListSpecialPage extends SpecialPage { } /** - * Get custom show/hide filters + * Register a structured changes list filter group + * + * @param ChangesListFilterGroup $group + */ + public function registerFilterGroup( ChangesListFilterGroup $group ) { + $groupName = $group->getName(); + + $this->filterGroups[$groupName] = $group; + } + + /** + * Gets the currently registered filters groups + * + * @return array Associative array of ChangesListFilterGroup objects, with group name as key + */ + protected function getFilterGroups() { + return $this->filterGroups; + } + + /** + * Gets a specified ChangesListFilterGroup by name + * + * @param string $groupName Name of group + * + * @return ChangesListFilterGroup + */ + public function getFilterGroup( $groupName ) { + return $this->filterGroups[$groupName]; + } + + // Currently, this intentionally only includes filters that display + // in the structured UI. This can be changed easily, though, if we want + // to include data on filters that use the unstructured UI. messageKeys is a + // special top-level value, with the value being an array of the message keys to + // send to the client. + /** + * Gets structured filter information needed by JS + * + * @return array Associative array + * * array $return['groups'] Group data + * * array $return['messageKeys'] Array of message keys + */ + public function getStructuredFilterJsData() { + $output = [ + 'groups' => [], + 'messageKeys' => [], + ]; + + $context = $this->getContext(); + + usort( $this->filterGroups, function ( $a, $b ) { + return $b->getPriority() - $a->getPriority(); + } ); + + foreach ( $this->filterGroups as $groupName => $group ) { + $groupOutput = $group->getJsData( $this ); + if ( $groupOutput !== null ) { + $output['messageKeys'] = array_merge( + $output['messageKeys'], + $groupOutput['messageKeys'] + ); + + unset( $groupOutput['messageKeys'] ); + $output['groups'][] = $groupOutput; + } + } + + return $output; + } + + /** + * Get custom show/hide filters using deprecated ChangesListSpecialPageFilters + * hook. * * @return array Map of filter URL param names to properties (msg/default) */ protected function getCustomFilters() { if ( $this->customFilters === null ) { $this->customFilters = []; - Hooks::run( 'ChangesListSpecialPageFilters', [ $this, &$this->customFilters ] ); + Hooks::run( 'ChangesListSpecialPageFilters', [ $this, &$this->customFilters ], '1.29' ); } return $this->customFilters; @@ -199,7 +745,37 @@ abstract class ChangesListSpecialPage extends SpecialPage { * @param FormOptions $opts */ public function parseParameters( $par, FormOptions $opts ) { - // nothing by default + $stringParameterNameSet = []; + $hideParameterNameSet = []; + + // URL parameters can be per-group, like 'userExpLevel', + // or per-filter, like 'hideminor'. + + foreach ( $this->filterGroups as $filterGroup ) { + if ( $filterGroup->isPerGroupRequestParameter() ) { + $stringParameterNameSet[$filterGroup->getName()] = true; + } elseif ( $filterGroup->getType() === ChangesListBooleanFilterGroup::TYPE ) { + foreach ( $filterGroup->getFilters() as $filter ) { + $hideParameterNameSet[$filter->getName()] = true; + } + } + } + + $bits = preg_split( '/\s*,\s*/', trim( $par ) ); + foreach ( $bits as $bit ) { + $m = []; + if ( isset( $hideParameterNameSet[$bit] ) ) { + // hidefoo => hidefoo=true + $opts[$bit] = true; + } elseif ( isset( $hideParameterNameSet["hide$bit"] ) ) { + // foo => hidefoo=false + $opts["hide$bit"] = false; + } elseif ( preg_match( '/^(.*)=(.*)$/', $bit, $m ) ) { + if ( isset( $stringParameterNameSet[$m[1]] ) ) { + $opts[$m[1]] = $m[2]; + } + } + } } /** @@ -212,97 +788,46 @@ abstract class ChangesListSpecialPage extends SpecialPage { } /** - * Return an array of conditions depending of options set in $opts + * Sets appropriate tables, fields, conditions, etc. depending on which filters + * the user requested. * + * @param array &$tables Array of tables; see IDatabase::select $table + * @param array &$fields Array of fields; see IDatabase::select $vars + * @param array &$conds Array of conditions; see IDatabase::select $conds + * @param array &$query_options Array of query options; see IDatabase::select $options + * @param array &$join_conds Array of join conditions; see IDatabase::select $join_conds * @param FormOptions $opts - * @return array */ - public function buildMainQueryConds( FormOptions $opts ) { + protected function buildQuery( &$tables, &$fields, &$conds, &$query_options, + &$join_conds, FormOptions $opts ) { + $dbr = $this->getDB(); $user = $this->getUser(); - $conds = []; - - // It makes no sense to hide both anons and logged-in users. When this occurs, try a guess on - // what the user meant and either show only bots or force anons to be shown. - $botsonly = false; - $hideanons = $opts['hideanons']; - if ( $opts['hideanons'] && $opts['hideliu'] ) { - if ( $opts['hidebots'] ) { - $hideanons = false; - } else { - $botsonly = true; - } - } - - // Toggles - if ( $opts['hideminor'] ) { - $conds[] = 'rc_minor = 0'; - } - if ( $opts['hidemajor'] ) { - $conds[] = 'rc_minor = 1'; - } - if ( $opts['hidebots'] ) { - $conds['rc_bot'] = 0; - } - if ( $opts['hidehumans'] ) { - $conds[] = 'rc_bot = 1'; - } - if ( $user->useRCPatrol() ) { - if ( $opts['hidepatrolled'] ) { - $conds[] = 'rc_patrolled = 0'; - } - if ( $opts['hideunpatrolled'] ) { - $conds[] = 'rc_patrolled = 1'; - } - } - if ( $botsonly ) { - $conds['rc_bot'] = 1; - } else { - if ( $opts['hideliu'] ) { - $conds[] = 'rc_user = 0'; - } - if ( $hideanons ) { - $conds[] = 'rc_user != 0'; - } - } - if ( $opts['hidemyself'] ) { - if ( $user->getId() ) { - $conds[] = 'rc_user != ' . $dbr->addQuotes( $user->getId() ); - } else { - $conds[] = 'rc_user_text != ' . $dbr->addQuotes( $user->getName() ); - } - } - if ( $opts['hidebyothers'] ) { - if ( $user->getId() ) { - $conds[] = 'rc_user = ' . $dbr->addQuotes( $user->getId() ); + $context = $this->getContext(); + foreach ( $this->filterGroups as $filterGroup ) { + // URL parameters can be per-group, like 'userExpLevel', + // or per-filter, like 'hideminor'. + if ( $filterGroup->isPerGroupRequestParameter() ) { + $filterGroup->modifyQuery( $dbr, $this, $tables, $fields, $conds, + $query_options, $join_conds, $opts[$filterGroup->getName()] ); } else { - $conds[] = 'rc_user_text = ' . $dbr->addQuotes( $user->getName() ); + foreach ( $filterGroup->getFilters() as $filter ) { + if ( $opts[$filter->getName()] && $filter->isAllowed( $this ) ) { + $filter->modifyQuery( $dbr, $this, $tables, $fields, $conds, + $query_options, $join_conds ); + } + } } } - if ( $this->getConfig()->get( 'RCWatchCategoryMembership' ) - && $opts['hidecategorization'] === true - ) { - $conds[] = 'rc_type != ' . $dbr->addQuotes( RC_CATEGORIZE ); - } - if ( $opts['hidepageedits'] ) { - $conds[] = 'rc_type != ' . $dbr->addQuotes( RC_EDIT ); - } - if ( $opts['hidenewpages'] ) { - $conds[] = 'rc_type != ' . $dbr->addQuotes( RC_NEW ); - } - if ( $opts['hidelog'] ) { - $conds[] = 'rc_type != ' . $dbr->addQuotes( RC_LOG ); - } - // Namespace filtering if ( $opts['namespace'] !== '' ) { $selectedNS = $dbr->addQuotes( $opts['namespace'] ); $operator = $opts['invert'] ? '!=' : '='; $boolean = $opts['invert'] ? 'AND' : 'OR'; - // Namespace association (bug 2429) + // Namespace association (T4429) if ( !$opts['associated'] ) { $condition = "rc_namespace $operator $selectedNS"; } else { @@ -317,22 +842,24 @@ abstract class ChangesListSpecialPage extends SpecialPage { $conds[] = $condition; } - - return $conds; } /** * Process the query * - * @param array $conds + * @param array $tables Array of tables; see IDatabase::select $table + * @param array $fields Array of fields; see IDatabase::select $vars + * @param array $conds Array of conditions; see IDatabase::select $conds + * @param array $query_options Array of query options; see IDatabase::select $options + * @param array $join_conds Array of join conditions; see IDatabase::select $join_conds * @param FormOptions $opts * @return bool|ResultWrapper Result or false */ - public function doMainQuery( $conds, $opts ) { - $tables = [ 'recentchanges' ]; - $fields = RecentChange::selectFields(); - $query_options = []; - $join_conds = []; + protected function doMainQuery( $tables, $fields, $conds, + $query_options, $join_conds, FormOptions $opts ) { + + $tables[] = 'recentchanges'; + $fields = array_merge( RecentChange::selectFields(), $fields ); ChangeTags::modifyDisplayQuery( $tables, @@ -343,6 +870,15 @@ abstract class ChangesListSpecialPage extends SpecialPage { '' ); + // It makes no sense to hide both anons and logged-in users. When this occurs, try a guess on + // what the user meant and either show only bots or force anons to be shown. + + // ------- + + // XXX: We're no longer doing this handling. To preserve back-compat, we need to complete + // T151873 (particularly the hideanons/hideliu/hidebots/hidehumans part) in conjunction + // with merging this. + if ( !$this->runMainQueryHook( $tables, $fields, $conds, $query_options, $join_conds, $opts ) ) { @@ -446,7 +982,8 @@ abstract class ChangesListSpecialPage extends SpecialPage { /** * Get options to be displayed in a form * @todo This should handle options returned by getDefaultOptions(). - * @todo Not called by anything, should be called by something… doHeader() maybe? + * @todo Not called by anything in this class (but is in subclasses), should be + * called by something… doHeader() maybe? * * @param FormOptions $opts * @return array @@ -523,21 +1060,78 @@ abstract class ChangesListSpecialPage extends SpecialPage { } /** - * Get filters that can be rendered. + * Filter on users' experience levels; this will not be called if nothing is + * selected. * - * Filters with 'msg' => false can be used to filter data but won't - * be presented as show/hide toggles in the UI. They are not returned - * by this function. - * - * @param array $allFilters Map of filter URL param names to properties (msg/default) - * @return array Map of filter URL param names to properties (msg/default) + * @param string $specialPageClassName Class name of current special page + * @param IContextSource $context Context, for e.g. user + * @param IDatabase $dbr Database, for addQuotes, makeList, and similar + * @param array &$tables Array of tables; see IDatabase::select $table + * @param array &$fields Array of fields; see IDatabase::select $vars + * @param array &$conds Array of conditions; see IDatabase::select $conds + * @param array &$query_options Array of query options; see IDatabase::select $options + * @param array &$join_conds Array of join conditions; see IDatabase::select $join_conds + * @param array $selectedExpLevels The allowed active values, sorted */ - protected function getRenderableCustomFilters( $allFilters ) { - return array_filter( - $allFilters, - function( $filter ) { - return isset( $filter['msg'] ) && ( $filter['msg'] !== false ); - } + public function filterOnUserExperienceLevel( $specialPageClassName, $context, $dbr, + &$tables, &$fields, &$conds, &$query_options, &$join_conds, $selectedExpLevels ) { + + global $wgLearnerEdits, + $wgExperiencedUserEdits, + $wgLearnerMemberSince, + $wgExperiencedUserMemberSince; + + $LEVEL_COUNT = 3; + + // If all levels are selected, all logged-in users are included (but no + // anons), so we can short-circuit. + if ( count( $selectedExpLevels ) === $LEVEL_COUNT ) { + $conds[] = 'rc_user != 0'; + return; + } + + $tables[] = 'user'; + $join_conds['user'] = [ 'LEFT JOIN', 'rc_user = user_id' ]; + + $now = time(); + $secondsPerDay = 86400; + $learnerCutoff = $now - $wgLearnerMemberSince * $secondsPerDay; + $experiencedUserCutoff = $now - $wgExperiencedUserMemberSince * $secondsPerDay; + + $aboveNewcomer = $dbr->makeList( + [ + 'user_editcount >= ' . intval( $wgLearnerEdits ), + 'user_registration <= ' . $dbr->timestamp( $learnerCutoff ), + ], + IDatabase::LIST_AND + ); + + $aboveLearner = $dbr->makeList( + [ + 'user_editcount >= ' . intval( $wgExperiencedUserEdits ), + 'user_registration <= ' . $dbr->timestamp( $experiencedUserCutoff ), + ], + IDatabase::LIST_AND ); + + if ( $selectedExpLevels === [ 'newcomer' ] ) { + $conds[] = "NOT ( $aboveNewcomer )"; + } elseif ( $selectedExpLevels === [ 'learner' ] ) { + $conds[] = $dbr->makeList( + [ $aboveNewcomer, "NOT ( $aboveLearner )" ], + IDatabase::LIST_AND + ); + } elseif ( $selectedExpLevels === [ 'experienced' ] ) { + $conds[] = $aboveLearner; + } elseif ( $selectedExpLevels === [ 'learner', 'newcomer' ] ) { + $conds[] = "NOT ( $aboveLearner )"; + } elseif ( $selectedExpLevels === [ 'experienced', 'newcomer' ] ) { + $conds[] = $dbr->makeList( + [ "NOT ( $aboveNewcomer )", $aboveLearner ], + IDatabase::LIST_OR + ); + } elseif ( $selectedExpLevels === [ 'experienced', 'learner' ] ) { + $conds[] = $aboveNewcomer; + } } } diff --git a/includes/specialpage/ImageQueryPage.php b/includes/specialpage/ImageQueryPage.php index c4e53eef05..bafee65660 100644 --- a/includes/specialpage/ImageQueryPage.php +++ b/includes/specialpage/ImageQueryPage.php @@ -21,6 +21,8 @@ * @ingroup SpecialPage */ +use Wikimedia\Rdbms\ResultWrapper; + /** * Variant of QueryPage which uses a gallery to output results, thus * suited for reports generating images diff --git a/includes/specialpage/LoginSignupSpecialPage.php b/includes/specialpage/LoginSignupSpecialPage.php index c3ee32120b..5c048a2078 100644 --- a/includes/specialpage/LoginSignupSpecialPage.php +++ b/includes/specialpage/LoginSignupSpecialPage.php @@ -177,7 +177,7 @@ abstract class LoginSignupSpecialPage extends AuthManagerSpecialPage { # 1. When switching accounts, it sucks to get automatically logged out # 2. Do not return to PasswordReset after a successful password change - # but goto Wiki start page (Main_Page) instead ( bug 33997 ) + # but goto Wiki start page (Main_Page) instead ( T35997 ) $returnToTitle = Title::newFromText( $this->mReturnTo ); if ( is_object( $returnToTitle ) && ( $returnToTitle->isSpecial( 'Userlogout' ) @@ -702,7 +702,7 @@ abstract class LoginSignupSpecialPage extends AuthManagerSpecialPage { */ protected function getFakeTemplate( $msg, $msgType ) { global $wgAuth, $wgEnableEmail, $wgHiddenPrefs, $wgEmailConfirmToEdit, $wgEnableUserEmail, - $wgSecureLogin, $wgPasswordResetRoutes; + $wgSecureLogin, $wgPasswordResetRoutes; // make a best effort to get the value of fields which used to be fixed in the old login // template but now might or might not exist depending on what providers are used @@ -727,7 +727,7 @@ abstract class LoginSignupSpecialPage extends AuthManagerSpecialPage { $user = $this->getUser(); $template = new FakeAuthTemplate(); - // Pre-fill username (if not creating an account, bug 44775). + // Pre-fill username (if not creating an account, T46775). if ( $data->mUsername == '' && $this->isSignup() ) { if ( $user->isLoggedIn() ) { $data->mUsername = $user->getName(); @@ -772,7 +772,7 @@ abstract class LoginSignupSpecialPage extends AuthManagerSpecialPage { $resetLink = $this->isSignup() ? null : is_array( $wgPasswordResetRoutes ) - && in_array( true, array_values( $wgPasswordResetRoutes ), true ); + && in_array( true, array_values( $wgPasswordResetRoutes ), true ); $template->set( 'header', '' ); $template->set( 'formheader', '' ); diff --git a/includes/specialpage/PageQueryPage.php b/includes/specialpage/PageQueryPage.php index 3bb3f8515f..45cef2b450 100644 --- a/includes/specialpage/PageQueryPage.php +++ b/includes/specialpage/PageQueryPage.php @@ -21,6 +21,8 @@ * @ingroup SpecialPage */ +use Wikimedia\Rdbms\ResultWrapper; + /** * Variant of QueryPage which formats the result as a simple link to the page * diff --git a/includes/specialpage/QueryPage.php b/includes/specialpage/QueryPage.php index 3592500055..3b3ea26f2d 100644 --- a/includes/specialpage/QueryPage.php +++ b/includes/specialpage/QueryPage.php @@ -21,6 +21,8 @@ * @ingroup SpecialPage */ +use Wikimedia\Rdbms\ResultWrapper; + /** * This is a class for doing query pages; since they're almost all the same, * we factor out some of the functionality into a superclass, and let @@ -302,7 +304,7 @@ abstract class QueryPage extends SpecialPage { return 0; } - $fname = get_class( $this ) . '::recache'; + $fname = static::class . '::recache'; $dbw = wfGetDB( DB_MASTER ); if ( !$dbw ) { return false; @@ -322,7 +324,7 @@ abstract class QueryPage extends SpecialPage { $value = wfTimestamp( TS_UNIX, $row->value ); } else { - $value = intval( $row->value ); // @bug 14414 + $value = intval( $row->value ); // T16414 } } else { $value = 0; @@ -387,7 +389,7 @@ abstract class QueryPage extends SpecialPage { * @since 1.18 */ public function reallyDoQuery( $limit, $offset = false ) { - $fname = get_class( $this ) . "::reallyDoQuery"; + $fname = static::class . '::reallyDoQuery'; $dbr = $this->getRecacheDB(); $query = $this->getQueryInfo(); $order = $this->getOrderFields(); @@ -405,7 +407,7 @@ abstract class QueryPage extends SpecialPage { $options = isset( $query['options'] ) ? (array)$query['options'] : []; $join_conds = isset( $query['join_conds'] ) ? (array)$query['join_conds'] : []; - if ( count( $order ) ) { + if ( $order ) { $options['ORDER BY'] = $order; } @@ -458,27 +460,35 @@ abstract class QueryPage extends SpecialPage { if ( $limit !== false ) { $options['LIMIT'] = intval( $limit ); } + if ( $offset !== false ) { $options['OFFSET'] = intval( $offset ); } - if ( $this->sortDescending() ) { - $options['ORDER BY'] = 'qc_value DESC'; - } else { - $options['ORDER BY'] = 'qc_value ASC'; + + $orderFields = $this->getOrderFields(); + $order = []; + $DESC = $this->sortDescending() ? ' DESC' : ''; + foreach ( $orderFields as $field ) { + $order[] = "qc_${field}${DESC}"; + } + if ( $order ) { + $options['ORDER BY'] = $order; } + return $dbr->select( 'querycache', [ 'qc_type', 'namespace' => 'qc_namespace', 'title' => 'qc_title', 'value' => 'qc_value' ], [ 'qc_type' => $this->getName() ], - __METHOD__, $options + __METHOD__, + $options ); } public function getCachedTimestamp() { if ( is_null( $this->cachedTimestamp ) ) { $dbr = wfGetDB( DB_REPLICA ); - $fname = get_class( $this ) . '::getCachedTimestamp'; + $fname = static::class . '::getCachedTimestamp'; $this->cachedTimestamp = $dbr->selectField( 'querycache_info', 'qci_timestamp', [ 'qci_type' => $this->getName() ], $fname ); } diff --git a/includes/specialpage/RedirectSpecialPage.php b/includes/specialpage/RedirectSpecialPage.php index ea7d783148..b1ddacfb2f 100644 --- a/includes/specialpage/RedirectSpecialPage.php +++ b/includes/specialpage/RedirectSpecialPage.php @@ -52,7 +52,7 @@ abstract class RedirectSpecialPage extends UnlistedSpecialPage { return $redirect; } else { - $class = get_class( $this ); + $class = static::class; throw new MWException( "RedirectSpecialPage $class doesn't redirect!" ); } } diff --git a/includes/specialpage/SpecialPageFactory.php b/includes/specialpage/SpecialPageFactory.php index daabdedf2b..33e1cc30c8 100644 --- a/includes/specialpage/SpecialPageFactory.php +++ b/includes/specialpage/SpecialPageFactory.php @@ -346,7 +346,7 @@ class SpecialPageFactory { return [ null, null ]; } - if ( !isset( $bits[1] ) ) { // bug 2087 + if ( !isset( $bits[1] ) ) { // T4087 $par = null; } else { $par = $bits[1]; @@ -512,7 +512,7 @@ class SpecialPageFactory { // @todo FIXME: Redirects broken due to this call $bits = explode( '/', $title->getDBkey(), 2 ); $name = $bits[0]; - if ( !isset( $bits[1] ) ) { // bug 2087 + if ( !isset( $bits[1] ) ) { // T4087 $par = null; } else { $par = $bits[1]; diff --git a/includes/specialpage/WantedQueryPage.php b/includes/specialpage/WantedQueryPage.php index 00fca12c78..7a1834297c 100644 --- a/includes/specialpage/WantedQueryPage.php +++ b/includes/specialpage/WantedQueryPage.php @@ -21,6 +21,8 @@ * @ingroup SpecialPage */ +use Wikimedia\Rdbms\ResultWrapper; + /** * Class definition for a wanted query page like * WantedPages, WantedTemplates, etc @@ -117,4 +119,26 @@ abstract class WantedQueryPage extends QueryPage { $label = $this->msg( 'nlinks' )->numParams( $result->value )->escaped(); return Linker::link( $wlh, $label ); } + + /** + * Order by title, overwrites QueryPage::getOrderFields + * + * @return array + */ + function getOrderFields() { + return [ 'value DESC', 'namespace', 'title' ]; + } + + /** + * Do not order descending for all order fields. We will use DESC only on one field, see + * getOrderFields above. This overwrites sortDescending from QueryPage::getOrderFields(). + * Do NOT change this to true unless you remove the phrase DESC in getOrderFiels above. + * If you do a database error will be thrown due to double adding DESC to query! + * + * @return bool + */ + function sortDescending() { + return false; + } + } diff --git a/includes/specials/SpecialActiveusers.php b/includes/specials/SpecialActiveusers.php index a01e9b2675..e7030c56e5 100644 --- a/includes/specials/SpecialActiveusers.php +++ b/includes/specials/SpecialActiveusers.php @@ -86,7 +86,7 @@ class SpecialActiveUsers extends SpecialPage { $groups = User::getAllGroups(); foreach ( $groups as $group ) { - $msg = htmlspecialchars( User::getGroupName( $group ) ); + $msg = htmlspecialchars( UserGroupMembership::getGroupName( $group ) ); $options[$msg] = $group; } diff --git a/includes/specials/SpecialBlock.php b/includes/specials/SpecialBlock.php index 82f7d0843f..04c04b239c 100644 --- a/includes/specials/SpecialBlock.php +++ b/includes/specials/SpecialBlock.php @@ -64,7 +64,7 @@ class SpecialBlock extends FormSpecialPage { protected function checkExecutePermissions( User $user ) { parent::checkExecutePermissions( $user ); - # bug 15810: blocked admins should have limited access here + # T17810: blocked admins should have limited access here $status = self::checkUnblockSelf( $this->target, $user ); if ( $status !== true ) { throw new ErrorPageError( 'badaccess', $status ); @@ -127,15 +127,7 @@ class SpecialBlock extends FormSpecialPage { */ protected function getFormFields() { global $wgBlockAllowsUTEdit; - if ( !wfMessage( 'ipbreason-dropdown' )->inContentLanguage()->isDisabled() ) { - $reasonsList = Xml::getArrayFromWikiTextList( - wfMessage( 'ipbreason-dropdown' )->inContentLanguage()->text() - ); - $this->getOutput()->addModules( 'mediawiki.reasonSuggest' ); - $this->getOutput()->addJsConfigVars( [ - 'reasons' => $reasonsList - ] ); - } + $user = $this->getUser(); $suggestedDurations = self::getSuggestedDurations(); @@ -283,7 +275,7 @@ class SpecialBlock extends FormSpecialPage { } // If the username was hidden (ipb_deleted == 1), don't show the reason - // unless this user also has rights to hideuser: Bug 35839 + // unless this user also has rights to hideuser: T37839 if ( !$block->mHideName || $this->getUser()->isAllowed( 'hideuser' ) ) { $fields['Reason']['default'] = $block->mReason; } else { @@ -752,7 +744,7 @@ class SpecialBlock extends FormSpecialPage { $blockNotConfirmed = !$data['Confirm'] || ( array_key_exists( 'PreviousTarget', $data ) && $data['PreviousTarget'] !== $target ); - # Special case for API - bug 32434 + # Special case for API - T34434 $reblockNotAllowed = ( array_key_exists( 'Reblock', $data ) && !$data['Reblock'] ); # Show form unless the user is already aware of this... @@ -832,12 +824,12 @@ class SpecialBlock extends FormSpecialPage { $logEntry->setComment( $data['Reason'][0] ); $logEntry->setPerformer( $performer ); $logEntry->setParameters( $logParams ); - # Relate log ID to block IDs (bug 25763) + # Relate log ID to block IDs (T27763) $blockIds = array_merge( [ $status['id'] ], $status['autoIds'] ); $logEntry->setRelations( [ 'ipb_id' => $blockIds ] ); $logId = $logEntry->insert(); - if ( count( $data['Tags'] ) ) { + if ( !empty( $data['Tags'] ) ) { $logEntry->setTags( $data['Tags'] ); } @@ -910,7 +902,7 @@ class SpecialBlock extends FormSpecialPage { } /** - * bug 15810: blocked admins should not be able to block/unblock + * T17810: blocked admins should not be able to block/unblock * others, and probably shouldn't be able to unblock themselves * either. * @param User|int|string $user diff --git a/includes/specials/SpecialBrokenRedirects.php b/includes/specials/SpecialBrokenRedirects.php index b730ecd789..9aba41e25c 100644 --- a/includes/specials/SpecialBrokenRedirects.php +++ b/includes/specials/SpecialBrokenRedirects.php @@ -21,6 +21,8 @@ * @ingroup SpecialPage */ +use Wikimedia\Rdbms\ResultWrapper; + /** * A special page listing redirects to non existent page. Those should be * fixed to point to an existing page. diff --git a/includes/specials/SpecialContributions.php b/includes/specials/SpecialContributions.php index 40277ca40f..1028002a23 100644 --- a/includes/specials/SpecialContributions.php +++ b/includes/specials/SpecialContributions.php @@ -359,7 +359,7 @@ class SpecialContributions extends IncludableSpecialPage { [ 'page' => $userpage->getPrefixedText() ] ); - # Suppression log link (bug 59120) + # Suppression log link (T61120) if ( $sp->getUser()->isAllowed( 'suppressionlog' ) ) { $tools['log-suppression'] = $linkRenderer->makeKnownLink( SpecialPage::getTitleFor( 'Log', 'suppress' ), @@ -529,7 +529,6 @@ class SpecialContributions extends IncludableSpecialPage { 'text', [ 'size' => '40', - 'required' => '', 'class' => [ 'mw-input', 'mw-ui-input-inline', diff --git a/includes/specials/SpecialDoubleRedirects.php b/includes/specials/SpecialDoubleRedirects.php index 9140bf1426..59351dcba5 100644 --- a/includes/specials/SpecialDoubleRedirects.php +++ b/includes/specials/SpecialDoubleRedirects.php @@ -21,6 +21,8 @@ * @ingroup SpecialPage */ +use Wikimedia\Rdbms\ResultWrapper; + /** * A special page listing redirects to redirecting page. * The software will automatically not follow double redirects, to prevent loops. @@ -75,7 +77,7 @@ class DoubleRedirectsPage extends QueryPage { 'conds' => [ 'ra.rd_from = pa.page_id', - // Filter out redirects where the target goes interwiki (bug 40353). + // Filter out redirects where the target goes interwiki (T42353). // This isn't an optimization, it is required for correct results, // otherwise a non-double redirect like Bar -> w:Foo will show up // like "Bar -> Foo -> w:Foo". diff --git a/includes/specials/SpecialEditWatchlist.php b/includes/specials/SpecialEditWatchlist.php index b447271103..e1ecfe8cd5 100644 --- a/includes/specials/SpecialEditWatchlist.php +++ b/includes/specials/SpecialEditWatchlist.php @@ -793,7 +793,7 @@ 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 (bug 32126), but we know that invalid items will + * 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 diff --git a/includes/specials/SpecialExpandTemplates.php b/includes/specials/SpecialExpandTemplates.php index ca0d13930e..560d75a6b1 100644 --- a/includes/specials/SpecialExpandTemplates.php +++ b/includes/specials/SpecialExpandTemplates.php @@ -263,7 +263,7 @@ class SpecialExpandTemplates extends SpecialPage { $user = $this->getUser(); // To prevent cross-site scripting attacks, don't show the preview if raw HTML is - // allowed and a valid edit token is not provided (bug 71111). However, MediaWiki + // allowed and a valid edit token is not provided (T73111). However, MediaWiki // does not currently provide logged-out users with CSRF protection; in that case, // do not show the preview unless anonymous editing is allowed. if ( $user->isAnon() && !$user->isAllowed( 'edit' ) ) { diff --git a/includes/specials/SpecialExport.php b/includes/specials/SpecialExport.php index bf535a6f3a..f5e9e49b69 100644 --- a/includes/specials/SpecialExport.php +++ b/includes/specials/SpecialExport.php @@ -23,6 +23,8 @@ * @ingroup SpecialPage */ +use Mediawiki\MediaWikiServices; + /** * A special page that allows users to export pages in a XML file * @@ -359,7 +361,7 @@ class SpecialExport extends SpecialPage { $pages = array_keys( $pageSet ); - // Normalize titles to the same format and remove dupes, see bug 17374 + // Normalize titles to the same format and remove dupes, see T19374 foreach ( $pages as $k => $v ) { $pages[$k] = str_replace( " ", "_", $v ); } @@ -374,7 +376,7 @@ class SpecialExport extends SpecialPage { $buffer = WikiExporter::BUFFER; } else { // Use an unbuffered query; histories may be very long! - $lb = wfGetLBFactory()->newMainLB(); + $lb = MediaWikiServices::getInstance()->getDBLoadBalancerFactory()->newMainLB(); $db = $lb->getConnection( DB_REPLICA ); $buffer = WikiExporter::STREAM; @@ -392,7 +394,7 @@ class SpecialExport extends SpecialPage { $exporter->allPages(); } else { foreach ( $pages as $page ) { - # Bug 8824: Only export pages the user can read + # T10824: Only export pages the user can read $title = Title::newFromText( $page ); if ( is_null( $title ) ) { // @todo Perhaps output an <error> tag or something. diff --git a/includes/specials/SpecialJavaScriptTest.php b/includes/specials/SpecialJavaScriptTest.php index 0e2e7db046..dc6a619750 100644 --- a/includes/specials/SpecialJavaScriptTest.php +++ b/includes/specials/SpecialJavaScriptTest.php @@ -137,7 +137,9 @@ class SpecialJavaScriptTest extends SpecialPage { $code .= '(function () {' . 'var start = window.__karma__ ? window.__karma__.start : QUnit.start;' . 'try {' - . 'mw.loader.using( ' . Xml::encodeJsVar( $modules ) . ' ).always( start );' + . 'mw.loader.using( ' . Xml::encodeJsVar( $modules ) . ' )' + . '.always( start )' + . '.fail( function ( e ) { throw e; } );' . '} catch ( e ) { start(); throw e; }' . '}());'; diff --git a/includes/specials/SpecialLinkSearch.php b/includes/specials/SpecialLinkSearch.php index a2fa8447ca..a1f5efae9a 100644 --- a/includes/specials/SpecialLinkSearch.php +++ b/includes/specials/SpecialLinkSearch.php @@ -22,6 +22,8 @@ * @author Brion Vibber */ +use Wikimedia\Rdbms\ResultWrapper; + /** * Special:LinkSearch to search the external-links table. * @ingroup SpecialPage diff --git a/includes/specials/SpecialListDuplicatedFiles.php b/includes/specials/SpecialListDuplicatedFiles.php index dbe5c2fff0..52c710dd33 100644 --- a/includes/specials/SpecialListDuplicatedFiles.php +++ b/includes/specials/SpecialListDuplicatedFiles.php @@ -24,6 +24,8 @@ * @author Brian Wolff */ +use Wikimedia\Rdbms\ResultWrapper; + /** * Special:ListDuplicatedFiles Lists all files where the current version is * a duplicate of the current version of some other file. diff --git a/includes/specials/SpecialListgrouprights.php b/includes/specials/SpecialListgrouprights.php index f3d3a776e6..7a25e55d58 100644 --- a/includes/specials/SpecialListgrouprights.php +++ b/includes/specials/SpecialListgrouprights.php @@ -273,12 +273,14 @@ class SpecialListGroupRights extends SpecialPage { } elseif ( is_array( $changeGroup ) ) { $changeGroup = array_intersect( array_values( array_unique( $changeGroup ) ), $allGroups ); if ( count( $changeGroup ) ) { + $groupLinks = []; + foreach ( $changeGroup as $group ) { + $groupLinks[] = UserGroupMembership::getLink( $group, $this->getContext(), 'wiki' ); + } // For grep: listgrouprights-addgroup, listgrouprights-removegroup, // listgrouprights-addgroup-self, listgrouprights-removegroup-self $r[] = $this->msg( 'listgrouprights-' . $messageKey, - $lang->listToText( array_map( [ 'User', 'makeGroupLinkWiki' ], $changeGroup ) ), - count( $changeGroup ) - )->parse(); + $lang->listToText( $groupLinks ), count( $changeGroup ) )->parse(); } } } diff --git a/includes/specials/SpecialListredirects.php b/includes/specials/SpecialListredirects.php index d034a6ca77..b2d6a33291 100644 --- a/includes/specials/SpecialListredirects.php +++ b/includes/specials/SpecialListredirects.php @@ -24,6 +24,8 @@ * @author Rob Church <robchur@gmail.com> */ +use Wikimedia\Rdbms\ResultWrapper; + /** * Special:Listredirects - Lists all the redirects on the wiki. * @ingroup SpecialPage diff --git a/includes/specials/SpecialLog.php b/includes/specials/SpecialLog.php index 533a33179a..195d08b1c5 100644 --- a/includes/specials/SpecialLog.php +++ b/includes/specials/SpecialLog.php @@ -96,7 +96,7 @@ class SpecialLog extends SpecialPage { # Some log types are only for a 'User:' title but we might have been given # only the username instead of the full title 'User:username'. This part try - # to lookup for a user by that name and eventually fix user input. See bug 1697. + # to lookup for a user by that name and eventually fix user input. See T3697. if ( in_array( $opts->getValue( 'type' ), self::getLogTypesOnUser() ) ) { # ok we have a type of log which expect a user title. $target = Title::newFromText( $opts->getValue( 'page' ) ); diff --git a/includes/specials/SpecialMIMEsearch.php b/includes/specials/SpecialMIMEsearch.php index 15696bcbd8..52cb30a1bc 100644 --- a/includes/specials/SpecialMIMEsearch.php +++ b/includes/specials/SpecialMIMEsearch.php @@ -111,7 +111,8 @@ class MIMEsearchPage extends QueryPage { function getPageHeader() { $formDescriptor = [ 'mime' => [ - 'type' => 'text', + 'type' => 'combobox', + 'options' => $this->getSuggestionsForTypes(), 'name' => 'mime', 'label-message' => 'mimetype', 'required' => true, @@ -127,6 +128,33 @@ class MIMEsearchPage extends QueryPage { ->displayForm( false ); } + protected function getSuggestionsForTypes() { + $dbr = wfGetDB( DB_REPLICA ); + $lastMajor = null; + $suggestions = []; + $result = $dbr->select( + [ 'image' ], + // We ignore img_media_type, but using it in the query is needed for MySQL to choose a + // sensible execution plan + [ 'img_media_type', 'img_major_mime', 'img_minor_mime' ], + [], + __METHOD__, + [ 'GROUP BY' => [ 'img_media_type', 'img_major_mime', 'img_minor_mime' ] ] + ); + foreach ( $result as $row ) { + $major = $row->img_major_mime; + $minor = $row->img_minor_mime; + $suggestions[ "$major/$minor" ] = "$major/$minor"; + if ( $lastMajor === $major ) { + // If there are at least two with the same major mime type, also include the wildcard + $suggestions[ "$major/*" ] = "$major/*"; + } + $lastMajor = $major; + } + ksort( $suggestions ); + return $suggestions; + } + public function execute( $par ) { $this->mime = $par ? $par : $this->getRequest()->getText( 'mime' ); $this->mime = trim( $this->mime ); diff --git a/includes/specials/SpecialMediaStatistics.php b/includes/specials/SpecialMediaStatistics.php index 1cb6549696..a88767ae4d 100644 --- a/includes/specials/SpecialMediaStatistics.php +++ b/includes/specials/SpecialMediaStatistics.php @@ -22,6 +22,8 @@ * @author Brian Wolff */ +use Wikimedia\Rdbms\ResultWrapper; + /** * @ingroup SpecialPage */ diff --git a/includes/specials/SpecialMostcategories.php b/includes/specials/SpecialMostcategories.php index 6095412ac7..0776eec7b9 100644 --- a/includes/specials/SpecialMostcategories.php +++ b/includes/specials/SpecialMostcategories.php @@ -24,6 +24,8 @@ * @author Ævar Arnfjörð Bjarmason <avarab@gmail.com> */ +use Wikimedia\Rdbms\ResultWrapper; + /** * A special page that list pages that have highest category count * diff --git a/includes/specials/SpecialMostinterwikis.php b/includes/specials/SpecialMostinterwikis.php index 210c4a2808..8560dca357 100644 --- a/includes/specials/SpecialMostinterwikis.php +++ b/includes/specials/SpecialMostinterwikis.php @@ -24,6 +24,8 @@ * @author Umherirrender */ +use Wikimedia\Rdbms\ResultWrapper; + /** * A special page that listed pages that have highest interwiki count * diff --git a/includes/specials/SpecialMostlinked.php b/includes/specials/SpecialMostlinked.php index 712574cf14..ff8550d10a 100644 --- a/includes/specials/SpecialMostlinked.php +++ b/includes/specials/SpecialMostlinked.php @@ -25,6 +25,8 @@ * @author Rob Church <robchur@gmail.com> */ +use Wikimedia\Rdbms\ResultWrapper; + /** * A special page to show pages ordered by the number of pages linking to them. * diff --git a/includes/specials/SpecialMostlinkedcategories.php b/includes/specials/SpecialMostlinkedcategories.php index 41678cb34d..699940b2e9 100644 --- a/includes/specials/SpecialMostlinkedcategories.php +++ b/includes/specials/SpecialMostlinkedcategories.php @@ -24,6 +24,8 @@ * @author Ævar Arnfjörð Bjarmason <avarab@gmail.com> */ +use Wikimedia\Rdbms\ResultWrapper; + /** * A querypage to show categories ordered in descending order by the pages in them * diff --git a/includes/specials/SpecialMostlinkedtemplates.php b/includes/specials/SpecialMostlinkedtemplates.php index d10279163a..f5c2c5fb50 100644 --- a/includes/specials/SpecialMostlinkedtemplates.php +++ b/includes/specials/SpecialMostlinkedtemplates.php @@ -22,6 +22,8 @@ * @author Rob Church <robchur@gmail.com> */ +use Wikimedia\Rdbms\ResultWrapper; + /** * Special page lists templates with a large number of * transclusion links, i.e. "most used" templates diff --git a/includes/specials/SpecialMovepage.php b/includes/specials/SpecialMovepage.php index 298d6c4edb..7d8a493a8d 100644 --- a/includes/specials/SpecialMovepage.php +++ b/includes/specials/SpecialMovepage.php @@ -77,7 +77,7 @@ class MovePageForm extends UnlistedSpecialPage { $request = $this->getRequest(); $target = !is_null( $par ) ? $par : $request->getVal( 'target' ); - // Yes, the use of getVal() and getText() is wanted, see bug 20365 + // Yes, the use of getVal() and getText() is wanted, see T22365 $oldTitleText = $request->getVal( 'wpOldTitle', $target ); $this->oldTitle = Title::newFromText( $oldTitleText ); @@ -620,7 +620,7 @@ class MovePageForm extends UnlistedSpecialPage { // a redirect to the new title. This is not safe, but what we did before was // even worse: we just determined whether a redirect should have been created, // and reported that it was created if it should have, without any checks. - // Also note that isRedirect() is unreliable because of bug 37209. + // Also note that isRedirect() is unreliable because of T39209. $msgName = 'movepage-moved-redirect'; } else { $msgName = 'movepage-moved-noredirect'; @@ -630,7 +630,9 @@ class MovePageForm extends UnlistedSpecialPage { $newLink )->params( $oldText, $newText )->parseAsBlock() ); $out->addWikiMsg( $msgName ); - Hooks::run( 'SpecialMovepageAfterMove', [ &$this, &$ot, &$nt ] ); + // Avoid PHP 7.1 warning from passing $this by reference + $movePage = $this; + Hooks::run( 'SpecialMovepageAfterMove', [ &$movePage, &$ot, &$nt ] ); # Now we move extra pages we've been asked to move: subpages and talk # pages. First, if the old page or the new page is a talk page, we @@ -706,7 +708,7 @@ class MovePageForm extends UnlistedSpecialPage { $newPageName = preg_replace( '#^' . preg_quote( $ot->getDBkey(), '#' ) . '#', - StringUtils::escapeRegexReplacement( $nt->getDBkey() ), # bug 21234 + StringUtils::escapeRegexReplacement( $nt->getDBkey() ), # T23234 $oldSubpage->getDBkey() ); @@ -719,7 +721,7 @@ class MovePageForm extends UnlistedSpecialPage { $newNs = $nt->getSubjectPage()->getNamespace(); } - # Bug 14385: we need makeTitleSafe because the new page names may + # T16385: we need makeTitleSafe because the new page names may # be longer than 255 characters. $newSubpage = Title::makeTitleSafe( $newNs, $newPageName ); if ( !$newSubpage ) { diff --git a/includes/specials/SpecialPrefixindex.php b/includes/specials/SpecialPrefixindex.php index 46715918b5..34ffa07363 100644 --- a/includes/specials/SpecialPrefixindex.php +++ b/includes/specials/SpecialPrefixindex.php @@ -83,7 +83,7 @@ class SpecialPrefixindex extends SpecialAllPages { $showme = $from; } - // Bug 27864: if transcluded, show all pages instead of the form. + // T29864: if transcluded, show all pages instead of the form. if ( $this->including() || $showme != '' || $ns !== null ) { $this->showPrefixChunk( $namespace, $showme, $from ); } else { diff --git a/includes/specials/SpecialProtectedpages.php b/includes/specials/SpecialProtectedpages.php index 5bdae159eb..8e20d88372 100644 --- a/includes/specials/SpecialProtectedpages.php +++ b/includes/specials/SpecialProtectedpages.php @@ -21,8 +21,6 @@ * @ingroup SpecialPage */ -use MediaWiki\Linker\LinkRenderer; - /** * A special page that lists protected pages * @@ -273,317 +271,3 @@ class SpecialProtectedpages extends SpecialPage { return 'maintenance'; } } - -/** - * @todo document - * @ingroup Pager - */ -class ProtectedPagesPager extends TablePager { - public $mForm, $mConds; - private $type, $level, $namespace, $sizetype, $size, $indefonly, $cascadeonly, $noredirect; - - /** - * @var LinkRenderer - */ - private $linkRenderer; - - /** - * @param SpecialProtectedpages $form - * @param array $conds - * @param $type - * @param $level - * @param $namespace - * @param string $sizetype - * @param int $size - * @param bool $indefonly - * @param bool $cascadeonly - * @param bool $noredirect - * @param LinkRenderer $linkRenderer - */ - function __construct( $form, $conds = [], $type, $level, $namespace, - $sizetype = '', $size = 0, $indefonly = false, $cascadeonly = false, $noredirect = false, - LinkRenderer $linkRenderer - ) { - $this->mForm = $form; - $this->mConds = $conds; - $this->type = ( $type ) ? $type : 'edit'; - $this->level = $level; - $this->namespace = $namespace; - $this->sizetype = $sizetype; - $this->size = intval( $size ); - $this->indefonly = (bool)$indefonly; - $this->cascadeonly = (bool)$cascadeonly; - $this->noredirect = (bool)$noredirect; - $this->linkRenderer = $linkRenderer; - parent::__construct( $form->getContext() ); - } - - function preprocessResults( $result ) { - # Do a link batch query - $lb = new LinkBatch; - $userids = []; - - foreach ( $result as $row ) { - $lb->add( $row->page_namespace, $row->page_title ); - // field is nullable, maybe null on old protections - if ( $row->log_user !== null ) { - $userids[] = $row->log_user; - } - } - - // fill LinkBatch with user page and user talk - if ( count( $userids ) ) { - $userCache = UserCache::singleton(); - $userCache->doQuery( $userids, [], __METHOD__ ); - foreach ( $userids as $userid ) { - $name = $userCache->getProp( $userid, 'name' ); - if ( $name !== false ) { - $lb->add( NS_USER, $name ); - $lb->add( NS_USER_TALK, $name ); - } - } - } - - $lb->execute(); - } - - function getFieldNames() { - static $headers = null; - - if ( $headers == [] ) { - $headers = [ - 'log_timestamp' => 'protectedpages-timestamp', - 'pr_page' => 'protectedpages-page', - 'pr_expiry' => 'protectedpages-expiry', - 'log_user' => 'protectedpages-performer', - 'pr_params' => 'protectedpages-params', - 'log_comment' => 'protectedpages-reason', - ]; - foreach ( $headers as $key => $val ) { - $headers[$key] = $this->msg( $val )->text(); - } - } - - return $headers; - } - - /** - * @param string $field - * @param string $value - * @return string HTML - * @throws MWException - */ - function formatValue( $field, $value ) { - /** @var $row object */ - $row = $this->mCurrentRow; - - switch ( $field ) { - case 'log_timestamp': - // when timestamp is null, this is a old protection row - if ( $value === null ) { - $formatted = Html::rawElement( - 'span', - [ 'class' => 'mw-protectedpages-unknown' ], - $this->msg( 'protectedpages-unknown-timestamp' )->escaped() - ); - } else { - $formatted = htmlspecialchars( $this->getLanguage()->userTimeAndDate( - $value, $this->getUser() ) ); - } - break; - - case 'pr_page': - $title = Title::makeTitleSafe( $row->page_namespace, $row->page_title ); - if ( !$title ) { - $formatted = Html::element( - 'span', - [ 'class' => 'mw-invalidtitle' ], - Linker::getInvalidTitleDescription( - $this->getContext(), - $row->page_namespace, - $row->page_title - ) - ); - } else { - $formatted = $this->linkRenderer->makeLink( $title ); - } - if ( !is_null( $row->page_len ) ) { - $formatted .= $this->getLanguage()->getDirMark() . - ' ' . Html::rawElement( - 'span', - [ 'class' => 'mw-protectedpages-length' ], - Linker::formatRevisionSize( $row->page_len ) - ); - } - break; - - case 'pr_expiry': - $formatted = htmlspecialchars( $this->getLanguage()->formatExpiry( - $value, /* User preference timezone */true ) ); - $title = Title::makeTitleSafe( $row->page_namespace, $row->page_title ); - if ( $this->getUser()->isAllowed( 'protect' ) && $title ) { - $changeProtection = $this->linkRenderer->makeKnownLink( - $title, - $this->msg( 'protect_change' )->text(), - [], - [ 'action' => 'unprotect' ] - ); - $formatted .= ' ' . Html::rawElement( - 'span', - [ 'class' => 'mw-protectedpages-actions' ], - $this->msg( 'parentheses' )->rawParams( $changeProtection )->escaped() - ); - } - break; - - case 'log_user': - // when timestamp is null, this is a old protection row - if ( $row->log_timestamp === null ) { - $formatted = Html::rawElement( - 'span', - [ 'class' => 'mw-protectedpages-unknown' ], - $this->msg( 'protectedpages-unknown-performer' )->escaped() - ); - } else { - $username = UserCache::singleton()->getProp( $value, 'name' ); - if ( LogEventsList::userCanBitfield( - $row->log_deleted, - LogPage::DELETED_USER, - $this->getUser() - ) ) { - if ( $username === false ) { - $formatted = htmlspecialchars( $value ); - } else { - $formatted = Linker::userLink( $value, $username ) - . Linker::userToolLinks( $value, $username ); - } - } else { - $formatted = $this->msg( 'rev-deleted-user' )->escaped(); - } - if ( LogEventsList::isDeleted( $row, LogPage::DELETED_USER ) ) { - $formatted = '<span class="history-deleted">' . $formatted . '</span>'; - } - } - break; - - case 'pr_params': - $params = []; - // Messages: restriction-level-sysop, restriction-level-autoconfirmed - $params[] = $this->msg( 'restriction-level-' . $row->pr_level )->escaped(); - if ( $row->pr_cascade ) { - $params[] = $this->msg( 'protect-summary-cascade' )->escaped(); - } - $formatted = $this->getLanguage()->commaList( $params ); - break; - - case 'log_comment': - // when timestamp is null, this is an old protection row - if ( $row->log_timestamp === null ) { - $formatted = Html::rawElement( - 'span', - [ 'class' => 'mw-protectedpages-unknown' ], - $this->msg( 'protectedpages-unknown-reason' )->escaped() - ); - } else { - if ( LogEventsList::userCanBitfield( - $row->log_deleted, - LogPage::DELETED_COMMENT, - $this->getUser() - ) ) { - $formatted = Linker::formatComment( $value !== null ? $value : '' ); - } else { - $formatted = $this->msg( 'rev-deleted-comment' )->escaped(); - } - if ( LogEventsList::isDeleted( $row, LogPage::DELETED_COMMENT ) ) { - $formatted = '<span class="history-deleted">' . $formatted . '</span>'; - } - } - break; - - default: - throw new MWException( "Unknown field '$field'" ); - } - - return $formatted; - } - - function getQueryInfo() { - $conds = $this->mConds; - $conds[] = 'pr_expiry > ' . $this->mDb->addQuotes( $this->mDb->timestamp() ) . - ' OR pr_expiry IS NULL'; - $conds[] = 'page_id=pr_page'; - $conds[] = 'pr_type=' . $this->mDb->addQuotes( $this->type ); - - if ( $this->sizetype == 'min' ) { - $conds[] = 'page_len>=' . $this->size; - } elseif ( $this->sizetype == 'max' ) { - $conds[] = 'page_len<=' . $this->size; - } - - if ( $this->indefonly ) { - $infinity = $this->mDb->addQuotes( $this->mDb->getInfinity() ); - $conds[] = "pr_expiry = $infinity OR pr_expiry IS NULL"; - } - if ( $this->cascadeonly ) { - $conds[] = 'pr_cascade = 1'; - } - if ( $this->noredirect ) { - $conds[] = 'page_is_redirect = 0'; - } - - if ( $this->level ) { - $conds[] = 'pr_level=' . $this->mDb->addQuotes( $this->level ); - } - if ( !is_null( $this->namespace ) ) { - $conds[] = 'page_namespace=' . $this->mDb->addQuotes( $this->namespace ); - } - - return [ - 'tables' => [ 'page', 'page_restrictions', 'log_search', 'logging' ], - 'fields' => [ - 'pr_id', - 'page_namespace', - 'page_title', - 'page_len', - 'pr_type', - 'pr_level', - 'pr_expiry', - 'pr_cascade', - 'log_timestamp', - 'log_user', - 'log_comment', - 'log_deleted', - ], - 'conds' => $conds, - 'join_conds' => [ - 'log_search' => [ - 'LEFT JOIN', [ - 'ls_field' => 'pr_id', 'ls_value = ' . $this->mDb->buildStringCast( 'pr_id' ) - ] - ], - 'logging' => [ - 'LEFT JOIN', [ - 'ls_log_id = log_id' - ] - ] - ] - ]; - } - - protected function getTableClass() { - return parent::getTableClass() . ' mw-protectedpages'; - } - - function getIndexField() { - return 'pr_id'; - } - - function getDefaultSort() { - return 'pr_id'; - } - - function isFieldSortable( $field ) { - // no index for sorting exists - return false; - } -} diff --git a/includes/specials/SpecialRecentchanges.php b/includes/specials/SpecialRecentchanges.php index b2e56742f3..29e8900860 100644 --- a/includes/specials/SpecialRecentchanges.php +++ b/includes/specials/SpecialRecentchanges.php @@ -22,6 +22,7 @@ */ use MediaWiki\MediaWikiServices; +use Wikimedia\Rdbms\ResultWrapper; /** * A special page that lists last changes made to the wiki @@ -52,7 +53,8 @@ class SpecialRecentChanges extends ChangesListSpecialPage { } // 10 seconds server-side caching max - $this->getOutput()->setCdnMaxage( 10 ); + $out = $this->getOutput(); + $out->setCdnMaxage( 10 ); // Check if the client has a cached version $lastmod = $this->checkLastModified(); if ( $lastmod === false ) { @@ -64,6 +66,65 @@ class SpecialRecentChanges extends ChangesListSpecialPage { true ); 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( + Xml::encodeJsCall( 'mw.messages.set', [ + $messages + ] ) + ) + ); + + $out->addJsConfigVars( 'wgStructuredChangeFilters', $jsData['groups'] ); + } + } + + /** + * @inheritdoc + */ + protected function registerFiltersFromDefinitions( array $definition ) { + foreach ( $definition as $groupName => &$groupDefinition ) { + foreach ( $groupDefinition['filters'] as &$filterDefinition ) { + if ( isset( $filterDefinition['showHideSuffix'] ) ) { + $filterDefinition['showHide'] = 'rc' . $filterDefinition['showHideSuffix']; + } + } + } + + parent::registerFiltersFromDefinitions( $definition ); + } + + /** + * @inheritdoc + */ + protected function registerFilters() { + parent::registerFilters(); + + $user = $this->getUser(); + + $significance = $this->getFilterGroup( 'significance' ); + $hideMinor = $significance->getFilter( 'hideminor' ); + $hideMinor->setDefault( $user->getBoolOption( 'hideminor' ) ); + + $automated = $this->getFilterGroup( 'automated' ); + $hideBots = $automated->getFilter( 'hidebots' ); + $hideBots->setDefault( true ); + + $reviewStatus = $this->getFilterGroup( 'reviewStatus' ); + $hidePatrolled = $reviewStatus->getFilter( 'hidepatrolled' ); + $hidePatrolled->setDefault( $user->getBoolOption( 'hidepatrolled' ) ); + + $changeType = $this->getFilterGroup( 'changeType' ); + $hideCategorization = $changeType->getFilter( 'hidecategorization' ); + $hideCategorization->setDefault( $user->getBoolOption( 'hidecategorization' ) ); } /** @@ -79,20 +140,10 @@ class SpecialRecentChanges extends ChangesListSpecialPage { $opts->add( 'limit', $user->getIntOption( 'rclimit' ) ); $opts->add( 'from', '' ); - $opts->add( 'hideminor', $user->getBoolOption( 'hideminor' ) ); - $opts->add( 'hidebots', true ); - $opts->add( 'hideanons', false ); - $opts->add( 'hideliu', false ); - $opts->add( 'hidepatrolled', $user->getBoolOption( 'hidepatrolled' ) ); - $opts->add( 'hidemyself', false ); - $opts->add( 'hidecategorization', $user->getBoolOption( 'hidecategorization' ) ); - $opts->add( 'categories', '' ); $opts->add( 'categories_any', false ); $opts->add( 'tagfilter', '' ); - $opts->add( 'userExpLevel', 'all' ); - return $opts; } @@ -117,36 +168,10 @@ class SpecialRecentChanges extends ChangesListSpecialPage { * @param FormOptions $opts */ public function parseParameters( $par, FormOptions $opts ) { + parent::parseParameters( $par, $opts ); + $bits = preg_split( '/\s*,\s*/', trim( $par ) ); foreach ( $bits as $bit ) { - if ( 'hidebots' === $bit ) { - $opts['hidebots'] = true; - } - if ( 'bots' === $bit ) { - $opts['hidebots'] = false; - } - if ( 'hideminor' === $bit ) { - $opts['hideminor'] = true; - } - if ( 'minor' === $bit ) { - $opts['hideminor'] = false; - } - if ( 'hideliu' === $bit ) { - $opts['hideliu'] = true; - } - if ( 'hidepatrolled' === $bit ) { - $opts['hidepatrolled'] = true; - } - if ( 'hideanons' === $bit ) { - $opts['hideanons'] = true; - } - if ( 'hidemyself' === $bit ) { - $opts['hidemyself'] = true; - } - if ( 'hidecategorization' === $bit ) { - $opts['hidecategorization'] = true; - } - if ( is_numeric( $bit ) ) { $opts['limit'] = $bit; } @@ -173,14 +198,14 @@ class SpecialRecentChanges extends ChangesListSpecialPage { } /** - * Return an array of conditions depending of options set in $opts - * - * @param FormOptions $opts - * @return array + * @inheritdoc */ - public function buildMainQueryConds( FormOptions $opts ) { + protected function buildQuery( &$tables, &$fields, &$conds, + &$query_options, &$join_conds, FormOptions $opts ) { + $dbr = $this->getDB(); - $conds = parent::buildMainQueryConds( $opts ); + parent::buildQuery( $tables, $fields, $conds, + $query_options, $join_conds, $opts ); // Calculate cutoff $cutoff_unixtime = time() - ( $opts['days'] * 86400 ); @@ -195,25 +220,19 @@ class SpecialRecentChanges extends ChangesListSpecialPage { } $conds[] = 'rc_timestamp >= ' . $dbr->addQuotes( $cutoff ); - - return $conds; } /** - * Process the query - * - * @param array $conds - * @param FormOptions $opts - * @return bool|ResultWrapper Result or false (for Recentchangeslinked only) + * @inheritdoc */ - public function doMainQuery( $conds, $opts ) { + protected function doMainQuery( $tables, $fields, $conds, $query_options, + $join_conds, FormOptions $opts ) { + $dbr = $this->getDB(); $user = $this->getUser(); - $tables = [ 'recentchanges' ]; - $fields = RecentChange::selectFields(); - $query_options = []; - $join_conds = []; + $tables[] = 'recentchanges'; + $fields = array_merge( RecentChange::selectFields(), $fields ); // JOIN on watchlist for users if ( $user->getId() && $user->isAllowed( 'viewmywatchlist' ) ) { @@ -242,8 +261,6 @@ class SpecialRecentChanges extends ChangesListSpecialPage { $opts['tagfilter'] ); - $this->filterOnUserExperienceLevel( $tables, $conds, $join_conds, $opts ); - if ( !$this->runMainQueryHook( $tables, $fields, $conds, $query_options, $join_conds, $opts ) ) { @@ -330,7 +347,7 @@ class SpecialRecentChanges extends ChangesListSpecialPage { $dbr = $this->getDB(); $counter = 1; - $list = ChangesList::newFromContext( $this->getContext() ); + $list = ChangesList::newFromContext( $this->getContext(), $this->filterGroups ); $list->initChangesListRows( $rows ); $userShowHiddenCats = $this->getUser()->getBoolOption( 'showhiddencats' ); @@ -455,14 +472,31 @@ class SpecialRecentChanges extends ChangesListSpecialPage { $panel[] = $form; $panelString = implode( "\n", $panel ); - $this->getOutput()->addHTML( - Xml::fieldset( - $this->msg( 'recentchanges-legend' )->text(), - $panelString, - [ 'class' => 'rcoptions' ] - ) + $rcoptions = Xml::fieldset( + $this->msg( 'recentchanges-legend' )->text(), + $panelString, + [ 'class' => 'rcoptions' ] ); + // Insert a placeholder for RCFilters + if ( $this->getUser()->getOption( 'rcenhancedfilters' ) ) { + $rcfilterContainer = Html::element( + 'div', + [ 'class' => 'rcfilters-container' ] + ); + + // Wrap both with rcfilters-head + $this->getOutput()->addHTML( + Html::rawElement( + 'div', + [ 'class' => 'rcfilters-head' ], + $rcfilterContainer . $rcoptions + ) + ); + } else { + $this->getOutput()->addHTML( $rcoptions ); + } + $this->setBottomText( $opts ); } @@ -519,6 +553,17 @@ 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. */ @@ -526,13 +571,9 @@ class SpecialRecentChanges extends ChangesListSpecialPage { parent::addModules(); $out = $this->getOutput(); $out->addModules( 'mediawiki.special.recentchanges' ); - if ( $this->getUser()->getOption( - 'rcenhancedfilters', - /*default=*/ null, - /*ignoreHidden=*/ true - ) - ) { - $out->addModules( 'mediawiki.rcfilters.filters' ); + if ( $this->isStructuredFilterUiEnabled() ) { + $out->addModules( 'mediawiki.rcfilters.filters.ui' ); + $out->addModuleStyles( 'mediawiki.rcfilters.filters.base.styles' ); } } @@ -668,7 +709,7 @@ class SpecialRecentChanges extends ChangesListSpecialPage { function makeOptionsLink( $title, $override, $options, $active = false ) { $params = $override + $options; - // Bug 36524: false values have be converted to "0" otherwise + // T38524: false values have be converted to "0" otherwise // wfArrayToCgi() will omit it them. foreach ( $params as &$value ) { if ( $value === false ) { @@ -681,7 +722,10 @@ class SpecialRecentChanges extends ChangesListSpecialPage { $title = new HtmlArmor( '<strong>' . htmlspecialchars( $title ) . '</strong>' ); } - return $this->getLinkRenderer()->makeKnownLink( $this->getPageTitle(), $title, [], $params ); + return $this->getLinkRenderer()->makeKnownLink( $this->getPageTitle(), $title, [ + 'data-params' => json_encode( $override ), + 'data-keys' => implode( ',', array_keys( $override ) ), + ], $params ); } /** @@ -743,49 +787,45 @@ class SpecialRecentChanges extends ChangesListSpecialPage { } $dl = $lang->pipeList( $dl ); - // show/hide links - $filters = [ - 'hideminor' => 'rcshowhideminor', - 'hidebots' => 'rcshowhidebots', - 'hideanons' => 'rcshowhideanons', - 'hideliu' => 'rcshowhideliu', - 'hidepatrolled' => 'rcshowhidepatr', - 'hidemyself' => 'rcshowhidemine' - ]; - - if ( $config->get( 'RCWatchCategoryMembership' ) ) { - $filters['hidecategorization'] = 'rcshowhidecategorization'; - } - $showhide = [ 'show', 'hide' ]; - foreach ( $this->getRenderableCustomFilters( $this->getCustomFilters() ) as $key => $params ) { - $filters[$key] = $params['msg']; - } - - // Disable some if needed - if ( !$user->useRCPatrol() ) { - unset( $filters['hidepatrolled'] ); - } - $links = []; - foreach ( $filters as $key => $msg ) { - // The following messages are used here: - // rcshowhideminor-show, rcshowhideminor-hide, rcshowhidebots-show, rcshowhidebots-hide, - // rcshowhideanons-show, rcshowhideanons-hide, rcshowhideliu-show, rcshowhideliu-hide, - // rcshowhidepatr-show, rcshowhidepatr-hide, rcshowhidemine-show, rcshowhidemine-hide, - // rcshowhidecategorization-show, rcshowhidecategorization-hide. - $linkMessage = $this->msg( $msg . '-' . $showhide[1 - $options[$key]] ); - // Extensions can define additional filters, but don't need to define the corresponding - // messages. If they don't exist, just fall back to 'show' and 'hide'. - if ( !$linkMessage->exists() ) { - $linkMessage = $this->msg( $showhide[1 - $options[$key]] ); - } - $link = $this->makeOptionsLink( $linkMessage->text(), - [ $key => 1 - $options[$key] ], $nondefaults ); - $links[] = "<span class=\"$msg rcshowhideoption\">" - . $this->msg( $msg )->rawParams( $link )->escaped() . '</span>'; + $filterGroups = $this->getFilterGroups(); + + $context = $this->getContext(); + foreach ( $filterGroups as $groupName => $group ) { + if ( !$group->isPerGroupRequestParameter() ) { + foreach ( $group->getFilters() as $key => $filter ) { + if ( $filter->displaysOnUnstructuredUi( $this ) ) { + $msg = $filter->getShowHide(); + $linkMessage = $this->msg( $msg . '-' . $showhide[1 - $options[$key]] ); + // Extensions can define additional filters, but don't need to define the corresponding + // messages. If they don't exist, just fall back to 'show' and 'hide'. + if ( !$linkMessage->exists() ) { + $linkMessage = $this->msg( $showhide[1 - $options[$key]] ); + } + + $link = $this->makeOptionsLink( $linkMessage->text(), + [ $key => 1 - $options[$key] ], $nondefaults ); + + $attribs = [ + 'class' => "$msg rcshowhideoption", + 'data-filter-name' => $filter->getName(), + ]; + + if ( $filter->isFeatureAvailableOnStructuredUi( $this ) ) { + $attribs['data-feature-in-structured-ui'] = true; + } + + $links[] = Html::rawElement( + 'span', + $attribs, + $this->msg( $msg )->rawParams( $link )->escaped() + ); + } + } + } } // show from this onward link @@ -814,66 +854,4 @@ class SpecialRecentChanges extends ChangesListSpecialPage { protected function getCacheTTL() { return 60 * 5; } - - function filterOnUserExperienceLevel( &$tables, &$conds, &$join_conds, $opts ) { - global $wgLearnerEdits, - $wgExperiencedUserEdits, - $wgLearnerMemberSince, - $wgExperiencedUserMemberSince; - - $selectedExpLevels = explode( ',', strtolower( $opts['userExpLevel'] ) ); - // remove values that are not recognized - $selectedExpLevels = array_intersect( - $selectedExpLevels, - [ 'newcomer', 'learner', 'experienced' ] - ); - sort( $selectedExpLevels ); - - if ( $selectedExpLevels ) { - $tables[] = 'user'; - $join_conds['user'] = [ 'LEFT JOIN', 'rc_user = user_id' ]; - - $now = time(); - $secondsPerDay = 86400; - $learnerCutoff = $now - $wgLearnerMemberSince * $secondsPerDay; - $experiencedUserCutoff = $now - $wgExperiencedUserMemberSince * $secondsPerDay; - - $aboveNewcomer = $this->getDB()->makeList( - [ - 'user_editcount >= ' . intval( $wgLearnerEdits ), - 'user_registration <= ' . $this->getDB()->timestamp( $learnerCutoff ), - ], - IDatabase::LIST_AND - ); - - $aboveLearner = $this->getDB()->makeList( - [ - 'user_editcount >= ' . intval( $wgExperiencedUserEdits ), - 'user_registration <= ' . $this->getDB()->timestamp( $experiencedUserCutoff ), - ], - IDatabase::LIST_AND - ); - - if ( $selectedExpLevels === [ 'newcomer' ] ) { - $conds[] = "NOT ( $aboveNewcomer )"; - } elseif ( $selectedExpLevels === [ 'learner' ] ) { - $conds[] = $this->getDB()->makeList( - [ $aboveNewcomer, "NOT ( $aboveLearner )" ], - IDatabase::LIST_AND - ); - } elseif ( $selectedExpLevels === [ 'experienced' ] ) { - $conds[] = $aboveLearner; - } elseif ( $selectedExpLevels === [ 'learner', 'newcomer' ] ) { - $conds[] = "NOT ( $aboveLearner )"; - } elseif ( $selectedExpLevels === [ 'experienced', 'newcomer' ] ) { - $conds[] = $this->getDB()->makeList( - [ "NOT ( $aboveNewcomer )", $aboveLearner ], - IDatabase::LIST_OR - ); - } elseif ( $selectedExpLevels === [ 'experienced', 'learner' ] ) { - $conds[] = $aboveNewcomer; - } - } - } - } diff --git a/includes/specials/SpecialRecentchangeslinked.php b/includes/specials/SpecialRecentchangeslinked.php index aab0f6dcb0..873285b8c7 100644 --- a/includes/specials/SpecialRecentchangeslinked.php +++ b/includes/specials/SpecialRecentchangeslinked.php @@ -46,7 +46,12 @@ class SpecialRecentChangesLinked extends SpecialRecentChanges { $opts['target'] = $par; } - public function doMainQuery( $conds, $opts ) { + /** + * @inheritdoc + */ + protected function doMainQuery( $tables, $select, $conds, $query_options, + $join_conds, FormOptions $opts ) { + $target = $opts['target']; $showlinkedto = $opts['showlinkedto']; $limit = $opts['limit']; @@ -79,10 +84,8 @@ class SpecialRecentChangesLinked extends SpecialRecentChanges { $ns = $title->getNamespace(); $dbkey = $title->getDBkey(); - $tables = [ 'recentchanges' ]; - $select = RecentChange::selectFields(); - $join_conds = []; - $query_options = []; + $tables[] = 'recentchanges'; + $select = array_merge( RecentChange::selectFields(), $select ); // left join with watchlist table to highlight watched rows $uid = $this->getUser()->getId(); diff --git a/includes/specials/SpecialSearch.php b/includes/specials/SpecialSearch.php index 255e618806..b7356e7509 100644 --- a/includes/specials/SpecialSearch.php +++ b/includes/specials/SpecialSearch.php @@ -24,6 +24,12 @@ */ use MediaWiki\MediaWikiServices; +use MediaWiki\Widget\Search\BasicSearchResultSetWidget; +use MediaWiki\Widget\Search\FullSearchResultWidget; +use MediaWiki\Widget\Search\InterwikiSearchResultWidget; +use MediaWiki\Widget\Search\InterwikiSearchResultSetWidget; +use MediaWiki\Widget\Search\SimpleSearchResultWidget; +use MediaWiki\Widget\Search\SimpleSearchResultSetWidget; /** * implements Special:Search - Run text & title search and display the output @@ -75,12 +81,6 @@ class SpecialSearch extends SpecialPage { */ protected $runSuggestion = true; - /** - * Names of the wikis, in format: Interwiki prefix -> caption - * @var array - */ - protected $customCaptions; - /** * Search engine configurations. * @var SearchEngineConfig @@ -101,35 +101,29 @@ class SpecialSearch extends SpecialPage { */ public function execute( $par ) { $request = $this->getRequest(); + $out = $this->getOutput(); // Fetch the search term - $search = str_replace( "\n", " ", $request->getText( 'search' ) ); + $term = str_replace( "\n", " ", $request->getText( 'search' ) ); // Historically search terms have been accepted not only in the search query // parameter, but also as part of the primary url. This can have PII implications // in releasing page view data. As such issue a 301 redirect to the correct // URL. - if ( strlen( $par ) && !strlen( $search ) ) { + if ( strlen( $par ) && !strlen( $term ) ) { $query = $request->getValues(); unset( $query['title'] ); // Strip underscores from title parameter; most of the time we'll want // text form here. But don't strip underscores from actual text params! $query['search'] = str_replace( '_', ' ', $par ); - $this->getOutput()->redirect( $this->getPageTitle()->getFullURL( $query ), 301 ); + $out->redirect( $this->getPageTitle()->getFullURL( $query ), 301 ); return; } - $this->setHeaders(); - $this->outputHeader(); - $out = $this->getOutput(); - $out->allowClickjacking(); - $out->addModuleStyles( [ - 'mediawiki.special', 'mediawiki.special.search.styles', 'mediawiki.ui', 'mediawiki.ui.button', - 'mediawiki.ui.input', 'mediawiki.widgets.SearchInputWidget.styles', - ] ); - $this->addHelpLink( 'Help:Searching' ); - + // Need to load selected namespaces before handling nsRemember $this->load(); + // TODO: This performs database actions on GET request, which is going to + // be a problem for our multi-datacenter work. if ( !is_null( $request->getVal( 'nsRemember' ) ) ) { $this->saveNamespaces(); // Remove the token from the URL to prevent the user from inadvertently @@ -141,16 +135,48 @@ class SpecialSearch extends SpecialPage { return; } - $out->addJsConfigVars( [ 'searchTerm' => $search ] ); $this->searchEngineType = $request->getVal( 'srbackend' ); - - if ( $request->getVal( 'fulltext' ) - || !is_null( $request->getVal( 'offset' ) ) + if ( + !$request->getVal( 'fulltext' ) && + $request->getVal( 'offset' ) === null ) { - $this->showResults( $search ); - } else { - $this->goResult( $search ); + $url = $this->goResult( $term ); + if ( $url !== null ) { + // successful 'go' + $out->redirect( $url ); + return; + } } + + $this->setupPage( $term ); + + if ( $this->getConfig()->get( 'DisableTextSearch' ) ) { + $searchForwardUrl = $this->getConfig()->get( 'SearchForwardUrl' ); + if ( $searchForwardUrl ) { + $url = str_replace( '$1', urlencode( $term ), $searchForwardUrl ); + $out->redirect( $url ); + } else { + $out->addHTML( + "<fieldset>" . + "<legend>" . + $this->msg( 'search-external' )->escaped() . + "</legend>" . + "<p class='mw-searchdisabled'>" . + $this->msg( 'searchdisabled' )->escaped() . + "</p>" . + $this->msg( 'googlesearch' )->rawParams( + htmlspecialchars( $term ), + 'UTF-8', + $this->msg( 'searchbutton' )->escaped() + )->text() . + "</fieldset>" + ); + } + + return; + } + + $this->showResults( $term ); } /** @@ -209,32 +235,25 @@ class SpecialSearch extends SpecialPage { * If an exact title match can be found, jump straight ahead to it. * * @param string $term + * @return string|null The url to redirect to, or null if no redirect. */ public function goResult( $term ) { - $this->setupPage( $term ); - # Try to go to page as entered. - $title = Title::newFromText( $term ); # If the string cannot be used to create a title - if ( is_null( $title ) ) { - $this->showResults( $term ); - - return; + if ( is_null( Title::newFromText( $term ) ) ) { + return null; } # If there's an exact or very near match, jump right there. $title = $this->getSearchEngine() ->getNearMatcher( $this->getConfig() )->getNearMatch( $term ); - - if ( !is_null( $title ) && - Hooks::run( 'SpecialSearchGoResult', [ $term, $title, &$url ] ) - ) { - if ( $url === null ) { - $url = $title->getFullURL(); - } - $this->getOutput()->redirect( $url ); - - return; + if ( is_null( $title ) ) { + return null; } - $this->showResults( $term ); + $url = null; + if ( !Hooks::run( 'SpecialSearchGoResult', [ $term, $title, &$url ] ) ) { + return null; + } + + return $url === null ? $title->getFullURL() : $url; } /** @@ -243,6 +262,33 @@ class SpecialSearch extends SpecialPage { public function showResults( $term ) { global $wgContLang; + if ( $this->searchEngineType !== null ) { + $this->setExtraParam( 'srbackend', $this->searchEngineType ); + } + + $out = $this->getOutput(); + $formWidget = new MediaWiki\Widget\Search\SearchFormWidget( + $this, + $this->searchConfig, + $this->getSearchProfiles() + ); + $filePrefix = $wgContLang->getFormattedNsText( NS_FILE ) . ':'; + if ( trim( $term ) === '' || $filePrefix === trim( $term ) ) { + // Empty query -- straight view of search form + if ( !Hooks::run( 'SpecialSearchResultsPrepend', [ $this, $out, $term ] ) ) { + # Hook requested termination + return; + } + $out->enableOOUI(); + // The form also contains the 'Showing results 0 - 20 of 1234' so we can + // only do the form render here for the empty $term case. Rendering + // the form when a search is provided is repeated below. + $out->addHTML( $formWidget->render( + $this->profile, $term, 0, 0, $this->offset, $this->isPowerSearch() + ) ); + return; + } + $search = $this->getSearchEngine(); $search->setFeatureData( 'rewrite', $this->runSuggestion ); $search->setLimitOffset( $this->limit, $this->offset ); @@ -251,34 +297,8 @@ class SpecialSearch extends SpecialPage { $term = $search->transformSearchTerm( $term ); Hooks::run( 'SpecialSearchSetupEngine', [ $this, $this->profile, $search ] ); - - $this->setupPage( $term ); - - $out = $this->getOutput(); - - if ( $this->getConfig()->get( 'DisableTextSearch' ) ) { - $searchFowardUrl = $this->getConfig()->get( 'SearchForwardUrl' ); - if ( $searchFowardUrl ) { - $url = str_replace( '$1', urlencode( $term ), $searchFowardUrl ); - $out->redirect( $url ); - } else { - $out->addHTML( - Xml::openElement( 'fieldset' ) . - Xml::element( 'legend', null, $this->msg( 'search-external' )->text() ) . - Xml::element( - 'p', - [ 'class' => 'mw-searchdisabled' ], - $this->msg( 'searchdisabled' )->text() - ) . - $this->msg( 'googlesearch' )->rawParams( - htmlspecialchars( $term ), - 'UTF-8', - $this->msg( 'searchbutton' )->escaped() - )->text() . - Xml::closeElement( 'fieldset' ) - ); - } - + if ( !Hooks::run( 'SpecialSearchResultsPrepend', [ $this, $out, $term ] ) ) { + # Hook requested termination return; } @@ -298,33 +318,6 @@ class SpecialSearch extends SpecialPage { $textMatches = $textStatus->getValue(); } - // did you mean... suggestions - $didYouMeanHtml = ''; - if ( $showSuggestion && $textMatches ) { - if ( $textMatches->hasRewrittenQuery() ) { - $didYouMeanHtml = $this->getDidYouMeanRewrittenHtml( $term, $textMatches ); - } elseif ( $textMatches->hasSuggestion() ) { - $didYouMeanHtml = $this->getDidYouMeanHtml( $textMatches ); - } - } - - if ( !Hooks::run( 'SpecialSearchResultsPrepend', [ $this, $out, $term ] ) ) { - # Hook requested termination - return; - } - - // start rendering the page - $out->addHTML( - Xml::openElement( - 'form', - [ - 'id' => ( $this->isPowerSearch() ? 'powersearch' : 'search' ), - 'method' => 'get', - 'action' => wfScript(), - ] - ) - ); - // Get number of results $titleMatchesNum = $textMatchesNum = $numTitleMatches = $numTextMatches = 0; if ( $titleMatches ) { @@ -334,33 +327,31 @@ class SpecialSearch extends SpecialPage { if ( $textMatches ) { $textMatchesNum = $textMatches->numRows(); $numTextMatches = $textMatches->getTotalHits(); + if ( $textMatchesNum > 0 ) { + $search->augmentSearchResults( $textMatches ); + } } $num = $titleMatchesNum + $textMatchesNum; $totalRes = $numTitleMatches + $numTextMatches; + // start rendering the page $out->enableOOUI(); - $out->addHTML( - # This is an awful awful ID name. It's not a table, but we - # named it poorly from when this was a table so now we're - # stuck with it - Xml::openElement( 'div', [ 'id' => 'mw-search-top-table' ] ) . - $this->shortDialog( $term, $num, $totalRes ) . - Xml::closeElement( 'div' ) . - $this->searchProfileTabs( $term ) . - $this->searchOptions( $term ) . - Xml::closeElement( 'form' ) . - $didYouMeanHtml - ); + $out->addHTML( $formWidget->render( + $this->profile, $term, $num, $totalRes, $this->offset, $this->isPowerSearch() + ) ); - $filePrefix = $wgContLang->getFormattedNsText( NS_FILE ) . ':'; - if ( trim( $term ) === '' || $filePrefix === trim( $term ) ) { - // Empty query -- straight view of search form - return; + // did you mean... suggestions + if ( $textMatches ) { + $dymWidget = new MediaWiki\Widget\Search\DidYouMeanWidget( $this ); + $out->addHTML( $dymWidget->render( $term, $textMatches ) ); } $out->addHTML( "<div class='searchresults'>" ); $hasErrors = $textStatus && $textStatus->getErrors(); + $hasOtherResults = $textMatches && + $textMatches->hasInterwikiResults( SearchResultSet::INLINE_RESULTS ); + if ( $hasErrors ) { list( $error, $warning ) = $textStatus->splitByErrorType(); if ( $error->getErrors() ) { @@ -379,83 +370,51 @@ class SpecialSearch extends SpecialPage { } } - // prev/next links - $prevnext = null; - if ( $num || $this->offset ) { - // Show the create link ahead - $this->showCreateLink( $title, $num, $titleMatches, $textMatches ); - if ( $totalRes > $this->limit || $this->offset ) { - if ( $this->searchEngineType !== null ) { - $this->setExtraParam( 'srbackend', $this->searchEngineType ); - } - $prevnext = $this->getLanguage()->viewPrevNext( - $this->getPageTitle(), - $this->offset, - $this->limit, - $this->powerSearchOptions() + [ 'search' => $term ], - $this->limit + $this->offset >= $totalRes - ); - } - } + // Show the create link ahead + $this->showCreateLink( $title, $num, $titleMatches, $textMatches ); + Hooks::run( 'SpecialSearchResults', [ $term, &$titleMatches, &$textMatches ] ); - $out->parserOptions()->setEditSection( false ); - if ( $titleMatches ) { - if ( $numTitleMatches > 0 ) { - $out->wrapWikiMsg( "==$1==\n", 'titlematches' ); - $out->addHTML( $this->showMatches( $titleMatches ) ); - } - $titleMatches->free(); + // If we have no results and have not already displayed an error message + if ( $num === 0 && !$hasErrors ) { + $out->wrapWikiMsg( "<p class=\"mw-search-nonefound\">\n$1</p>", [ + $hasOtherResults ? 'search-nonefound-thiswiki' : 'search-nonefound', + wfEscapeWikiText( $term ) + ] ); } - if ( $textMatches ) { - // output appropriate heading - if ( $numTextMatches > 0 && $numTitleMatches > 0 ) { - $out->addHTML( '<div class="mw-search-visualclear"></div>' ); - // if no title matches the heading is redundant - $out->wrapWikiMsg( "==$1==\n", 'textmatches' ); - } + // Although $num might be 0 there can still be secondary or inline + // results to display. + $linkRenderer = $this->getLinkRenderer(); + $mainResultWidget = new FullSearchResultWidget( $this, $linkRenderer ); - // show results - if ( $numTextMatches > 0 ) { - $search->augmentSearchResults( $textMatches ); - $out->addHTML( $this->showMatches( $textMatches ) ); - } + if ( $search->getFeatureData( 'enable-new-crossproject-page' ) ) { - // show secondary interwiki results if any - if ( $textMatches->hasInterwikiResults( SearchResultSet::SECONDARY_RESULTS ) ) { - $out->addHTML( $this->showInterwiki( $textMatches->getInterwikiResults( - SearchResultSet::SECONDARY_RESULTS ), $term ) ); - } + $sidebarResultWidget = new InterwikiSearchResultWidget( $this, $linkRenderer ); + $sidebarResultsWidget = new InterwikiSearchResultSetWidget( + $this, + $sidebarResultWidget, + $linkRenderer, + MediaWikiServices::getInstance()->getInterwikiLookup() + ); + } else { + $sidebarResultWidget = new SimpleSearchResultWidget( $this, $linkRenderer ); + $sidebarResultsWidget = new SimpleSearchResultSetWidget( + $this, + $sidebarResultWidget, + $linkRenderer, + MediaWikiServices::getInstance()->getInterwikiLookup() + ); } - $hasOtherResults = $textMatches && - $textMatches->hasInterwikiResults( SearchResultSet::INLINE_RESULTS ); + $widget = new BasicSearchResultSetWidget( $this, $mainResultWidget, $sidebarResultsWidget ); - // If we have no results and we have not already displayed an error message - if ( $num === 0 && !$hasErrors ) { - if ( !$this->offset ) { - // If we have an offset the create link was rendered earlier in this function. - // This class needs a good de-spaghettification, but for now this will - // do the job. - $this->showCreateLink( $title, $num, $titleMatches, $textMatches ); - } - $out->wrapWikiMsg( "<p class=\"mw-search-nonefound\">\n$1</p>", [ - $hasOtherResults ? 'search-nonefound-thiswiki' : 'search-nonefound', - wfEscapeWikiText( $term ) - ] ); - } + $out->addHTML( $widget->render( + $term, $this->offset, $titleMatches, $textMatches + ) ); - if ( $hasOtherResults ) { - foreach ( $textMatches->getInterwikiResults( SearchResultSet::INLINE_RESULTS ) - as $interwiki => $interwikiResult ) { - if ( $interwikiResult instanceof Status || $interwikiResult->numRows() == 0 ) { - // ignore bad interwikis for now - continue; - } - // TODO: wiki header - $out->addHTML( $this->showMatches( $interwikiResult, $interwiki ) ); - } + if ( $titleMatches ) { + $titleMatches->free(); } if ( $textMatches ) { @@ -464,114 +423,24 @@ class SpecialSearch extends SpecialPage { $out->addHTML( '<div class="mw-search-visualclear"></div>' ); - if ( $prevnext ) { + // prev/next links + if ( $totalRes > $this->limit || $this->offset ) { + $prevnext = $this->getLanguage()->viewPrevNext( + $this->getPageTitle(), + $this->offset, + $this->limit, + $this->powerSearchOptions() + [ 'search' => $term ], + $this->limit + $this->offset >= $totalRes + ); $out->addHTML( "<p class='mw-search-pager-bottom'>{$prevnext}</p>\n" ); } + // Close <div class='searchresults'> $out->addHTML( "</div>" ); Hooks::run( 'SpecialSearchResultsAppend', [ $this, $out, $term ] ); } - /** - * Produce wiki header for interwiki results - * @param string $interwiki Interwiki name - * @param SearchResultSet $interwikiResult The result set - * @return string - */ - protected function interwikiHeader( $interwiki, $interwikiResult ) { - // TODO: we need to figure out how to name wikis correctly - $wikiMsg = $this->msg( 'search-interwiki-results-' . $interwiki )->parse(); - return "<p class=\"mw-search-interwiki-header mw-search-visualclear\">\n$wikiMsg</p>"; - } - - /** - * Generates HTML shown to the user when we have a suggestion about a query - * that might give more results than their current query. - */ - protected function getDidYouMeanHtml( SearchResultSet $textMatches ) { - # mirror Go/Search behavior of original request .. - $params = [ 'search' => $textMatches->getSuggestionQuery() ]; - if ( $this->fulltext === null ) { - $params['fulltext'] = 'Search'; - } else { - $params['fulltext'] = $this->fulltext; - } - $stParams = array_merge( $params, $this->powerSearchOptions() ); - - $linkRenderer = $this->getLinkRenderer(); - - $snippet = $textMatches->getSuggestionSnippet() ?: null; - if ( $snippet !== null ) { - $snippet = new HtmlArmor( $snippet ); - } - - $suggest = $linkRenderer->makeKnownLink( - $this->getPageTitle(), - $snippet, - [ 'id' => 'mw-search-DYM-suggestion' ], - $stParams - ); - - # HTML of did you mean... search suggestion link - return Html::rawElement( - 'div', - [ 'class' => 'searchdidyoumean' ], - $this->msg( 'search-suggest' )->rawParams( $suggest )->parse() - ); - } - - /** - * Generates HTML shown to user when their query has been internally rewritten, - * and the results of the rewritten query are being returned. - * - * @param string $term The users search input - * @param SearchResultSet $textMatches The response to the users initial search request - * @return string HTML linking the user to their original $term query, and the one - * suggested by $textMatches. - */ - protected function getDidYouMeanRewrittenHtml( $term, SearchResultSet $textMatches ) { - // Showing results for '$rewritten' - // Search instead for '$orig' - - $params = [ 'search' => $textMatches->getQueryAfterRewrite() ]; - if ( $this->fulltext === null ) { - $params['fulltext'] = 'Search'; - } else { - $params['fulltext'] = $this->fulltext; - } - $stParams = array_merge( $params, $this->powerSearchOptions() ); - - $linkRenderer = $this->getLinkRenderer(); - - $snippet = $textMatches->getQueryAfterRewriteSnippet() ?: null; - if ( $snippet !== null ) { - $snippet = new HtmlArmor( $snippet ); - } - - $rewritten = $linkRenderer->makeKnownLink( - $this->getPageTitle(), - $snippet, - [ 'id' => 'mw-search-DYM-rewritten' ], - $stParams - ); - - $stParams['search'] = $term; - $stParams['runsuggestion'] = 0; - $original = $linkRenderer->makeKnownLink( - $this->getPageTitle(), - $term, - [ 'id' => 'mw-search-DYM-original' ], - $stParams - ); - - return Html::rawElement( - 'div', - [ 'class' => 'searchdidyoumean' ], - $this->msg( 'search-rewritten' )->rawParams( $rewritten, $original )->escaped() - ); - } - /** * @param Title $title * @param int $num The number of search results found @@ -622,10 +491,21 @@ class SpecialSearch extends SpecialPage { } /** + * Sets up everything for the HTML output page including styles, javascript, + * page title, etc. + * * @param string $term */ protected function setupPage( $term ) { $out = $this->getOutput(); + + $this->setHeaders(); + $this->outputHeader(); + // TODO: Is this true? The namespace remember uses a user token + // on save. + $out->allowClickjacking(); + $this->addHelpLink( 'Help:Searching' ); + if ( strval( $term ) !== '' ) { $out->setPageTitle( $this->msg( 'searchresults' ) ); $out->setHTMLTitle( $this->msg( 'pagetitle' ) @@ -633,8 +513,13 @@ class SpecialSearch extends SpecialPage { ->inContentLanguage()->text() ); } - // add javascript specific to special:search + + $out->addJsConfigVars( [ 'searchTerm' => $term ] ); $out->addModules( 'mediawiki.special.search' ); + $out->addModuleStyles( [ + 'mediawiki.special', 'mediawiki.special.search.styles', 'mediawiki.ui', 'mediawiki.ui.button', + 'mediawiki.ui.input', 'mediawiki.widgets.SearchInputWidget.styles', + ] ); } /** @@ -666,17 +551,19 @@ class SpecialSearch extends SpecialPage { /** * Reconstruct the 'power search' options for links + * TODO: Instead of exposing this publicly, could we instead expose + * a function for creating search links? * * @return array */ - protected function powerSearchOptions() { + public function powerSearchOptions() { $opt = []; - if ( !$this->isPowerSearch() ) { - $opt['profile'] = $this->profile; - } else { + if ( $this->isPowerSearch() ) { foreach ( $this->namespaces as $n ) { $opt['ns' . $n] = 1; } + } else { + $opt['profile'] = $this->profile; } return $opt + $this->extraParams; @@ -719,236 +606,6 @@ class SpecialSearch extends SpecialPage { return false; } - /** - * Show whole set of results - * - * @param SearchResultSet $matches - * @param string $interwiki Interwiki name - * - * @return string - */ - protected function showMatches( $matches, $interwiki = null ) { - global $wgContLang; - - $terms = $wgContLang->convertForSearchResult( $matches->termMatches() ); - $out = ''; - $result = $matches->next(); - $pos = $this->offset; - - if ( $result && $interwiki ) { - $out .= $this->interwikiHeader( $interwiki, $matches ); - } - - $out .= "<ul class='mw-search-results'>\n"; - $widget = new \MediaWiki\Widget\Search\FullSearchResultWidget( - $this, - $this->getLinkRenderer() - ); - while ( $result ) { - $out .= $widget->render( $result, $terms, $pos++ ); - $result = $matches->next(); - } - $out .= "</ul>\n"; - - // convert the whole thing to desired language variant - $out = $wgContLang->convert( $out ); - - return $out; - } - - /** - * Extract custom captions from search-interwiki-custom message - */ - protected function getCustomCaptions() { - if ( is_null( $this->customCaptions ) ) { - $this->customCaptions = []; - // format per line <iwprefix>:<caption> - $customLines = explode( "\n", $this->msg( 'search-interwiki-custom' )->text() ); - foreach ( $customLines as $line ) { - $parts = explode( ":", $line, 2 ); - if ( count( $parts ) == 2 ) { // validate line - $this->customCaptions[$parts[0]] = $parts[1]; - } - } - } - } - - /** - * Show results from other wikis - * - * @param SearchResultSet|array $matches - * @param string $terms - * - * @return string - */ - protected function showInterwiki( $matches, $terms ) { - global $wgContLang; - - // work out custom project captions - $this->getCustomCaptions(); - - if ( !is_array( $matches ) ) { - $matches = [ $matches ]; - } - - $iwResults = []; - foreach ( $matches as $set ) { - $result = $set->next(); - while ( $result ) { - if ( !$result->isBrokenTitle() ) { - $iwResults[$result->getTitle()->getInterwiki()][] = $result; - } - $result = $set->next(); - } - } - - $out = ''; - $widget = new MediaWiki\Widget\Search\SimpleSearchResultWidget( - $this, - $this->getLinkRenderer() - ); - foreach ( $iwResults as $iwPrefix => $results ) { - $out .= $this->iwHeaderHtml( $iwPrefix, $terms ); - $out .= "<ul class='mw-search-iwresults'>"; - foreach ( $results as $result ) { - // This makes the bold asumption interwiki results are never paginated. - // That's currently true, but could change at some point? - $out .= $widget->render( $result, $terms, 0 ); - } - $out .= "</ul>"; - } - - $out = - "<div id='mw-search-interwiki'>" . - "<div id='mw-search-interwiki-caption'>" . - $this->msg( 'search-interwiki-caption' )->escaped() . - "</div>" . - $out . - "</div>"; - - // convert the whole thing to desired language variant - return $wgContLang->convert( $out ); - } - - /** - * @param string $iwPrefix The interwiki prefix to render a header for - * @param string $terms The user-provided search terms - */ - protected function iwHeaderHtml( $iwPrefix, $terms ) { - if ( isset( $this->customCaptions[$iwPrefix] ) ) { - $caption = $this->customCaptions[$iwPrefix]; - } else { - $iwLookup = MediaWiki\MediaWikiServices::getInstance()->getInterwikiLookup(); - $interwiki = $iwLookup->fetch( $iwPrefix ); - $parsed = wfParseUrl( wfExpandUrl( $interwiki ? $interwiki->getURL() : '/' ) ); - $caption = $this->msg( 'search-interwiki-default', $parsed['host'] )->text(); - } - $searchLink = Linker::linkKnown( - Title::newFromText( "$iwPrefix:Special:Search" ), - $this->msg( 'search-interwiki-more' )->text(), - [], - [ - 'search' => $terms, - 'fulltext' => 1, - ] - ); - return - "<div class='mw-search-interwiki-project'>" . - "<span class='mw-search-interwiki-more'>{$searchLink}</span>" . - $caption . - "</div>"; - } - - /** - * Generates the power search box at [[Special:Search]] - * - * @param string $term Search term - * @param array $opts - * @return string HTML form - */ - protected function powerSearchBox( $term, $opts ) { - global $wgContLang; - - // Groups namespaces into rows according to subject - $rows = []; - foreach ( $this->searchConfig->searchableNamespaces() as $namespace => $name ) { - $subject = MWNamespace::getSubject( $namespace ); - if ( !array_key_exists( $subject, $rows ) ) { - $rows[$subject] = ""; - } - - $name = $wgContLang->getConverter()->convertNamespace( $namespace ); - if ( $name == '' ) { - $name = $this->msg( 'blanknamespace' )->text(); - } - - $rows[$subject] .= - Xml::openElement( 'td' ) . - Xml::checkLabel( - $name, - "ns{$namespace}", - "mw-search-ns{$namespace}", - in_array( $namespace, $this->namespaces ) - ) . - Xml::closeElement( 'td' ); - } - - $rows = array_values( $rows ); - $numRows = count( $rows ); - - // Lays out namespaces in multiple floating two-column tables so they'll - // be arranged nicely while still accommodating different screen widths - $namespaceTables = ''; - for ( $i = 0; $i < $numRows; $i += 4 ) { - $namespaceTables .= Xml::openElement( 'table' ); - - for ( $j = $i; $j < $i + 4 && $j < $numRows; $j++ ) { - $namespaceTables .= Xml::tags( 'tr', null, $rows[$j] ); - } - - $namespaceTables .= Xml::closeElement( 'table' ); - } - - $showSections = [ 'namespaceTables' => $namespaceTables ]; - - Hooks::run( 'SpecialSearchPowerBox', [ &$showSections, $term, $opts ] ); - - $hidden = ''; - foreach ( $opts as $key => $value ) { - $hidden .= Html::hidden( $key, $value ); - } - - # Stuff to feed saveNamespaces() - $remember = ''; - $user = $this->getUser(); - if ( $user->isLoggedIn() ) { - $remember .= Xml::checkLabel( - $this->msg( 'powersearch-remember' )->text(), - 'nsRemember', - 'mw-search-powersearch-remember', - false, - // The token goes here rather than in a hidden field so it - // is only sent when necessary (not every form submission). - [ 'value' => $user->getEditToken( - 'searchnamespace', - $this->getRequest() - ) ] - ); - } - - // Return final output - return Xml::openElement( 'fieldset', [ 'id' => 'mw-searchoptions' ] ) . - Xml::element( 'legend', null, $this->msg( 'powersearch-legend' )->text() ) . - Xml::tags( 'h4', null, $this->msg( 'powersearch-ns' )->parse() ) . - Xml::element( 'div', [ 'id' => 'mw-search-togglebox' ], '', false ) . - Xml::element( 'div', [ 'class' => 'divider' ], '', false ) . - implode( Xml::element( 'div', [ 'class' => 'divider' ], '', false ), $showSections ) . - $hidden . - Xml::element( 'div', [ 'class' => 'divider' ], '', false ) . - $remember . - Xml::closeElement( 'fieldset' ); - } - /** * @return array */ @@ -994,169 +651,6 @@ class SpecialSearch extends SpecialPage { return $profiles; } - /** - * @param string $term - * @return string - */ - protected function searchProfileTabs( $term ) { - $out = Html::element( 'div', [ 'class' => 'mw-search-visualclear' ] ) . - Xml::openElement( 'div', [ 'class' => 'mw-search-profile-tabs' ] ); - - $bareterm = $term; - if ( $this->startsWithImage( $term ) ) { - // Deletes prefixes - $bareterm = substr( $term, strpos( $term, ':' ) + 1 ); - } - - $profiles = $this->getSearchProfiles(); - $lang = $this->getLanguage(); - - // Outputs XML for Search Types - $out .= Xml::openElement( 'div', [ 'class' => 'search-types' ] ); - $out .= Xml::openElement( 'ul' ); - foreach ( $profiles as $id => $profile ) { - if ( !isset( $profile['parameters'] ) ) { - $profile['parameters'] = []; - } - $profile['parameters']['profile'] = $id; - - $tooltipParam = isset( $profile['namespace-messages'] ) ? - $lang->commaList( $profile['namespace-messages'] ) : null; - $out .= Xml::tags( - 'li', - [ - 'class' => $this->profile === $id ? 'current' : 'normal' - ], - $this->makeSearchLink( - $bareterm, - [], - $this->msg( $profile['message'] )->text(), - $this->msg( $profile['tooltip'], $tooltipParam )->text(), - $profile['parameters'] - ) - ); - } - $out .= Xml::closeElement( 'ul' ); - $out .= Xml::closeElement( 'div' ); - $out .= Xml::element( 'div', [ 'style' => 'clear:both' ], '', false ); - $out .= Xml::closeElement( 'div' ); - - return $out; - } - - /** - * @param string $term Search term - * @return string - */ - protected function searchOptions( $term ) { - $out = ''; - $opts = []; - $opts['profile'] = $this->profile; - - if ( $this->isPowerSearch() ) { - $out .= $this->powerSearchBox( $term, $opts ); - } else { - $form = ''; - Hooks::run( 'SpecialSearchProfileForm', [ $this, &$form, $this->profile, $term, $opts ] ); - $out .= $form; - } - - return $out; - } - - /** - * @param string $term - * @param int $resultsShown - * @param int $totalNum - * @return string - */ - protected function shortDialog( $term, $resultsShown, $totalNum ) { - $searchWidget = new MediaWiki\Widget\SearchInputWidget( [ - 'id' => 'searchText', - 'name' => 'search', - 'autofocus' => trim( $term ) === '', - 'value' => $term, - 'dataLocation' => 'content', - 'infusable' => true, - ] ); - - $layout = new OOUI\ActionFieldLayout( $searchWidget, new OOUI\ButtonInputWidget( [ - 'type' => 'submit', - 'label' => $this->msg( 'searchbutton' )->text(), - 'flags' => [ 'progressive', 'primary' ], - ] ), [ - 'align' => 'top', - ] ); - - $out = - Html::hidden( 'title', $this->getPageTitle()->getPrefixedText() ) . - Html::hidden( 'profile', $this->profile ) . - Html::hidden( 'fulltext', 'Search' ) . - $layout; - - // Results-info - if ( $totalNum > 0 && $this->offset < $totalNum ) { - $top = $this->msg( 'search-showingresults' ) - ->numParams( $this->offset + 1, $this->offset + $resultsShown, $totalNum ) - ->numParams( $resultsShown ) - ->parse(); - $out .= Xml::tags( 'div', [ 'class' => 'results-info' ], $top ); - } - - return $out; - } - - /** - * Make a search link with some target namespaces - * - * @param string $term - * @param array $namespaces Ignored - * @param string $label Link's text - * @param string $tooltip Link's tooltip - * @param array $params Query string parameters - * @return string HTML fragment - */ - protected function makeSearchLink( $term, $namespaces, $label, $tooltip, $params = [] ) { - $opt = $params; - foreach ( $namespaces as $n ) { - $opt['ns' . $n] = 1; - } - - $stParams = array_merge( - [ - 'search' => $term, - 'fulltext' => $this->msg( 'search' )->text() - ], - $opt - ); - - return Xml::element( - 'a', - [ - 'href' => $this->getPageTitle()->getLocalURL( $stParams ), - 'title' => $tooltip - ], - $label - ); - } - - /** - * Check if query starts with image: prefix - * - * @param string $term The string to check - * @return bool - */ - protected function startsWithImage( $term ) { - global $wgContLang; - - $parts = explode( ':', $term ); - if ( count( $parts ) > 1 ) { - return $wgContLang->getNsIndex( $parts[0] ) == NS_FILE; - } - - return false; - } - /** * @since 1.18 * diff --git a/includes/specials/SpecialShortpages.php b/includes/specials/SpecialShortpages.php index a78b082432..a5e51134b9 100644 --- a/includes/specials/SpecialShortpages.php +++ b/includes/specials/SpecialShortpages.php @@ -21,6 +21,8 @@ * @ingroup SpecialPage */ +use Wikimedia\Rdbms\ResultWrapper; + /** * SpecialShortpages extends QueryPage. It is used to return the shortest * pages in the database. diff --git a/includes/specials/SpecialStatistics.php b/includes/specials/SpecialStatistics.php index 3342c32bbf..19850e6a2d 100644 --- a/includes/specials/SpecialStatistics.php +++ b/includes/specials/SpecialStatistics.php @@ -95,8 +95,11 @@ class SpecialStatistics extends SpecialPage { if ( !$msg->isDisabled() ) { $descriptionHtml = $this->msg( 'parentheses' )->rawParams( $msg->parse() ) ->escaped(); - $text .= "<br />" . Html::rawElement( 'small', [ 'class' => 'mw-statistic-desc' ], - " $descriptionHtml" ); + $text .= "<br />" . Html::rawElement( + 'small', + [ 'class' => 'mw-statistic-desc' ], + " $descriptionHtml" + ); } } @@ -119,8 +122,10 @@ class SpecialStatistics extends SpecialPage { Xml::tags( 'th', [ 'colspan' => '2' ], $this->msg( 'statistics-header-pages' ) ->parse() ) . Xml::closeElement( 'tr' ) . - $this->formatRow( $linkRenderer->makeKnownLink( $specialAllPagesTitle, - $this->msg( 'statistics-articles' )->text(), [], [ 'hideredirects' => 1 ] ), + $this->formatRow( $linkRenderer->makeKnownLink( + $specialAllPagesTitle, + $this->msg( 'statistics-articles' )->text(), + [], [ 'hideredirects' => 1 ] ), $this->getLanguage()->formatNum( $this->good ), [ 'class' => 'mw-statistics-articles' ], 'statistics-articles-desc' ) . @@ -152,9 +157,9 @@ class SpecialStatistics extends SpecialPage { [ 'class' => 'mw-statistics-edits' ] ) . $this->formatRow( $this->msg( 'statistics-edits-average' )->parse(), - $this->getLanguage() - ->formatNum( sprintf( '%.2f', $this->total ? $this->edits / $this->total : 0 ) ), - [ 'class' => 'mw-statistics-edits-average' ] + $this->getLanguage()->formatNum( + sprintf( '%.2f', $this->total ? $this->edits / $this->total : 0 ) + ), [ 'class' => 'mw-statistics-edits-average' ] ); } @@ -175,7 +180,8 @@ class SpecialStatistics extends SpecialPage { $this->getLanguage()->formatNum( $this->activeUsers ), [ 'class' => 'mw-statistics-users-active' ], 'statistics-users-active-desc', - $this->getLanguage()->formatNum( $this->getConfig()->get( 'ActiveUserDays' ) ) + $this->getLanguage()->formatNum( + $this->getConfig()->get( 'ActiveUserDays' ) ) ); } @@ -184,7 +190,8 @@ class SpecialStatistics extends SpecialPage { $text = ''; foreach ( $this->getConfig()->get( 'GroupPermissions' ) as $group => $permissions ) { # Skip generic * and implicit groups - if ( in_array( $group, $this->getConfig()->get( 'ImplicitGroups' ) ) || $group == '*' ) { + if ( in_array( $group, $this->getConfig()->get( 'ImplicitGroups' ) ) + || $group == '*' ) { continue; } $groupname = htmlspecialchars( $group ); @@ -196,7 +203,8 @@ class SpecialStatistics extends SpecialPage { } $msg = $this->msg( 'grouppage-' . $groupname )->inContentLanguage(); if ( $msg->isBlank() ) { - $grouppageLocalized = MWNamespace::getCanonicalName( NS_PROJECT ) . ':' . $groupname; + $grouppageLocalized = MWNamespace::getCanonicalName( NS_PROJECT ) . + ':' . $groupname; } else { $grouppageLocalized = $msg->text(); } diff --git a/includes/specials/SpecialTrackingCategories.php b/includes/specials/SpecialTrackingCategories.php index 8ff052785e..e503d92b41 100644 --- a/includes/specials/SpecialTrackingCategories.php +++ b/includes/specials/SpecialTrackingCategories.php @@ -36,26 +36,6 @@ class SpecialTrackingCategories extends SpecialPage { parent::__construct( 'TrackingCategories' ); } - /** - * Tracking categories that exist in core - * - * @var array - */ - private static $coreTrackingCategories = [ - 'index-category', - 'noindex-category', - 'duplicate-args-category', - 'expensive-parserfunction-category', - 'post-expand-template-argument-category', - 'post-expand-template-inclusion-category', - 'hidden-category-category', - 'broken-file-category', - 'node-count-exceeded-category', - 'expansion-depth-exceeded-category', - 'restricted-displaytitle-ignored', - 'deprecated-self-close-category', - ]; - function execute( $par ) { $this->setHeaders(); $this->outputHeader(); @@ -76,10 +56,11 @@ class SpecialTrackingCategories extends SpecialPage { </tr></thead>" ); - $trackingCategories = $this->prepareTrackingCategoriesData(); + $trackingCategories = new TrackingCategories( $this->getConfig() ); + $categoryList = $trackingCategories->getTrackingCategories(); $batch = new LinkBatch(); - foreach ( $trackingCategories as $catMsg => $data ) { + foreach ( $categoryList as $catMsg => $data ) { $batch->addObj( $data['msg'] ); foreach ( $data['cats'] as $catTitle ) { $batch->addObj( $catTitle ); @@ -87,11 +68,11 @@ class SpecialTrackingCategories extends SpecialPage { } $batch->execute(); - Hooks::run( 'SpecialTrackingCategories::preprocess', [ $this, $trackingCategories ] ); + Hooks::run( 'SpecialTrackingCategories::preprocess', [ $this, $categoryList ] ); $linkRenderer = $this->getLinkRenderer(); - foreach ( $trackingCategories as $catMsg => $data ) { + foreach ( $categoryList as $catMsg => $data ) { $allMsgs = []; $catDesc = $catMsg . '-desc'; @@ -143,80 +124,6 @@ class SpecialTrackingCategories extends SpecialPage { $this->getOutput()->addHTML( Html::closeElement( 'table' ) ); } - /** - * Read the global and extract title objects from the corresponding messages - * @return array Array( 'msg' => Title, 'cats' => Title[] ) - */ - private function prepareTrackingCategoriesData() { - $categories = array_merge( - self::$coreTrackingCategories, - ExtensionRegistry::getInstance()->getAttribute( 'TrackingCategories' ), - $this->getConfig()->get( 'TrackingCategories' ) // deprecated - ); - - // Only show magic link tracking categories if they are enabled - $enableMagicLinks = $this->getConfig()->get( 'EnableMagicLinks' ); - if ( $enableMagicLinks['ISBN'] ) { - $categories[] = 'magiclink-tracking-isbn'; - } - if ( $enableMagicLinks['RFC'] ) { - $categories[] = 'magiclink-tracking-rfc'; - } - if ( $enableMagicLinks['PMID'] ) { - $categories[] = 'magiclink-tracking-pmid'; - } - - $trackingCategories = []; - foreach ( $categories as $catMsg ) { - /* - * Check if the tracking category varies by namespace - * Otherwise only pages in the current namespace will be displayed - * If it does vary, show pages considering all namespaces - */ - $msgObj = $this->msg( $catMsg )->inContentLanguage(); - $allCats = []; - $catMsgTitle = Title::makeTitleSafe( NS_MEDIAWIKI, $catMsg ); - if ( !$catMsgTitle ) { - continue; - } - - // Match things like {{NAMESPACE}} and {{NAMESPACENUMBER}}. - // False positives are ok, this is just an efficiency shortcut - if ( strpos( $msgObj->plain(), '{{' ) !== false ) { - $ns = MWNamespace::getValidNamespaces(); - foreach ( $ns as $namesp ) { - $tempTitle = Title::makeTitleSafe( $namesp, $catMsg ); - if ( !$tempTitle ) { - continue; - } - $catName = $msgObj->title( $tempTitle )->text(); - # Allow tracking categories to be disabled by setting them to "-" - if ( $catName !== '-' ) { - $catTitle = Title::makeTitleSafe( NS_CATEGORY, $catName ); - if ( $catTitle ) { - $allCats[] = $catTitle; - } - } - } - } else { - $catName = $msgObj->text(); - # Allow tracking categories to be disabled by setting them to "-" - if ( $catName !== '-' ) { - $catTitle = Title::makeTitleSafe( NS_CATEGORY, $catName ); - if ( $catTitle ) { - $allCats[] = $catTitle; - } - } - } - $trackingCategories[$catMsg] = [ - 'cats' => $allCats, - 'msg' => $catMsgTitle, - ]; - } - - return $trackingCategories; - } - protected function getGroupName() { return 'pages'; } diff --git a/includes/specials/SpecialUnblock.php b/includes/specials/SpecialUnblock.php index 0d42e3fc70..01125fcff0 100644 --- a/includes/specials/SpecialUnblock.php +++ b/includes/specials/SpecialUnblock.php @@ -186,7 +186,7 @@ class SpecialUnblock extends SpecialPage { return [ [ 'ipb_cant_unblock', $target ] ]; } - # bug 15810: blocked admins should have limited access here. This + # T17810: blocked admins should have limited access here. This # won't allow sysops to remove autoblocks on themselves, but they # should have ipblock-exempt anyway $status = SpecialBlock::checkUnblockSelf( $target, $performer ); diff --git a/includes/specials/SpecialUncategorizedcategories.php b/includes/specials/SpecialUncategorizedcategories.php index 7c3265d625..77b6926457 100644 --- a/includes/specials/SpecialUncategorizedcategories.php +++ b/includes/specials/SpecialUncategorizedcategories.php @@ -40,7 +40,7 @@ class UncategorizedCategoriesPage extends UncategorizedPagesPage { } /** - * Returns an array of categorie titles (usually without the namespace), which + * Returns an array of category titles (usually without the namespace), which * shouldn't be listed on this page, even if they're uncategorized. * * @return array @@ -50,12 +50,15 @@ class UncategorizedCategoriesPage extends UncategorizedPagesPage { $exList = $this->msg( 'uncategorized-categories-exceptionlist' ) ->inContentLanguage()->plain(); $proposedTitles = explode( "\n", $exList ); - foreach ( $proposedTitles as $count => $title ) { - if ( strpos( $title, '*' ) !== 0 ) { + foreach ( $proposedTitles as $count => $titleStr ) { + if ( strpos( $titleStr, '*' ) !== 0 ) { continue; } - $title = preg_replace( "/^\\*\\s*/", '', $title ); - $title = Title::newFromText( $title, NS_CATEGORY ); + $titleStr = preg_replace( "/^\\*\\s*/", '', $titleStr ); + $title = Title::newFromText( $titleStr, NS_CATEGORY ); + if ( $title && $title->getNamespace() !== NS_CATEGORY ) { + $title = Title::makeTitleSafe( NS_CATEGORY, $titleStr ); + } if ( $title ) { $this->exceptionList[] = $title->getDBKey(); } diff --git a/includes/specials/SpecialUndelete.php b/includes/specials/SpecialUndelete.php index 4c6a593838..dc5f877a4f 100644 --- a/includes/specials/SpecialUndelete.php +++ b/includes/specials/SpecialUndelete.php @@ -20,730 +20,8 @@ * @file * @ingroup SpecialPage */ -use MediaWiki\MediaWikiServices; -/** - * Used to show archived pages and eventually restore them. - * - * @ingroup SpecialPage - */ -class PageArchive { - /** @var Title */ - protected $title; - - /** @var Status */ - protected $fileStatus; - - /** @var Status */ - protected $revisionStatus; - - /** @var Config */ - protected $config; - - function __construct( $title, Config $config = null ) { - if ( is_null( $title ) ) { - throw new MWException( __METHOD__ . ' given a null title.' ); - } - $this->title = $title; - if ( $config === null ) { - wfDebug( __METHOD__ . ' did not have a Config object passed to it' ); - $config = MediaWikiServices::getInstance()->getMainConfig(); - } - $this->config = $config; - } - - public function doesWrites() { - return true; - } - - /** - * List all deleted pages recorded in the archive table. Returns result - * wrapper with (ar_namespace, ar_title, count) fields, ordered by page - * namespace/title. - * - * @return ResultWrapper - */ - public static function listAllPages() { - $dbr = wfGetDB( DB_REPLICA ); - - return self::listPages( $dbr, '' ); - } - - /** - * List deleted pages recorded in the archive table matching the - * given title prefix. - * Returns result wrapper with (ar_namespace, ar_title, count) fields. - * - * @param string $prefix Title prefix - * @return ResultWrapper - */ - public static function listPagesByPrefix( $prefix ) { - $dbr = wfGetDB( DB_REPLICA ); - - $title = Title::newFromText( $prefix ); - if ( $title ) { - $ns = $title->getNamespace(); - $prefix = $title->getDBkey(); - } else { - // Prolly won't work too good - // @todo handle bare namespace names cleanly? - $ns = 0; - } - - $conds = [ - 'ar_namespace' => $ns, - 'ar_title' . $dbr->buildLike( $prefix, $dbr->anyString() ), - ]; - - return self::listPages( $dbr, $conds ); - } - - /** - * @param IDatabase $dbr - * @param string|array $condition - * @return bool|ResultWrapper - */ - protected static function listPages( $dbr, $condition ) { - return $dbr->select( - [ 'archive' ], - [ - 'ar_namespace', - 'ar_title', - 'count' => 'COUNT(*)' - ], - $condition, - __METHOD__, - [ - 'GROUP BY' => [ 'ar_namespace', 'ar_title' ], - 'ORDER BY' => [ 'ar_namespace', 'ar_title' ], - 'LIMIT' => 100, - ] - ); - } - - /** - * List the revisions of the given page. Returns result wrapper with - * (ar_minor_edit, ar_timestamp, ar_user, ar_user_text, ar_comment) fields. - * - * @return ResultWrapper - */ - function listRevisions() { - $dbr = wfGetDB( DB_REPLICA ); - - $tables = [ 'archive' ]; - - $fields = [ - 'ar_minor_edit', 'ar_timestamp', 'ar_user', 'ar_user_text', - 'ar_comment', 'ar_len', 'ar_deleted', 'ar_rev_id', 'ar_sha1', - ]; - - if ( $this->config->get( 'ContentHandlerUseDB' ) ) { - $fields[] = 'ar_content_format'; - $fields[] = 'ar_content_model'; - } - - $conds = [ 'ar_namespace' => $this->title->getNamespace(), - 'ar_title' => $this->title->getDBkey() ]; - - $options = [ 'ORDER BY' => 'ar_timestamp DESC' ]; - - $join_conds = []; - - ChangeTags::modifyDisplayQuery( - $tables, - $fields, - $conds, - $join_conds, - $options, - '' - ); - - return $dbr->select( $tables, - $fields, - $conds, - __METHOD__, - $options, - $join_conds - ); - } - - /** - * List the deleted file revisions for this page, if it's a file page. - * Returns a result wrapper with various filearchive fields, or null - * if not a file page. - * - * @return ResultWrapper - * @todo Does this belong in Image for fuller encapsulation? - */ - function listFiles() { - if ( $this->title->getNamespace() != NS_FILE ) { - return null; - } - - $dbr = wfGetDB( DB_REPLICA ); - return $dbr->select( - 'filearchive', - ArchivedFile::selectFields(), - [ 'fa_name' => $this->title->getDBkey() ], - __METHOD__, - [ 'ORDER BY' => 'fa_timestamp DESC' ] - ); - } - - /** - * Return a Revision object containing data for the deleted revision. - * Note that the result *may* or *may not* have a null page ID. - * - * @param string $timestamp - * @return Revision|null - */ - function getRevision( $timestamp ) { - $dbr = wfGetDB( DB_REPLICA ); - - $fields = [ - 'ar_rev_id', - 'ar_text', - 'ar_comment', - 'ar_user', - 'ar_user_text', - 'ar_timestamp', - 'ar_minor_edit', - 'ar_flags', - 'ar_text_id', - 'ar_deleted', - 'ar_len', - 'ar_sha1', - ]; - - if ( $this->config->get( 'ContentHandlerUseDB' ) ) { - $fields[] = 'ar_content_format'; - $fields[] = 'ar_content_model'; - } - - $row = $dbr->selectRow( 'archive', - $fields, - [ 'ar_namespace' => $this->title->getNamespace(), - 'ar_title' => $this->title->getDBkey(), - 'ar_timestamp' => $dbr->timestamp( $timestamp ) ], - __METHOD__ ); - - if ( $row ) { - return Revision::newFromArchiveRow( $row, [ 'title' => $this->title ] ); - } - - return null; - } - - /** - * Return the most-previous revision, either live or deleted, against - * the deleted revision given by timestamp. - * - * May produce unexpected results in case of history merges or other - * unusual time issues. - * - * @param string $timestamp - * @return Revision|null Null when there is no previous revision - */ - function getPreviousRevision( $timestamp ) { - $dbr = wfGetDB( DB_REPLICA ); - - // Check the previous deleted revision... - $row = $dbr->selectRow( 'archive', - 'ar_timestamp', - [ 'ar_namespace' => $this->title->getNamespace(), - 'ar_title' => $this->title->getDBkey(), - 'ar_timestamp < ' . - $dbr->addQuotes( $dbr->timestamp( $timestamp ) ) ], - __METHOD__, - [ - 'ORDER BY' => 'ar_timestamp DESC', - 'LIMIT' => 1 ] ); - $prevDeleted = $row ? wfTimestamp( TS_MW, $row->ar_timestamp ) : false; - - $row = $dbr->selectRow( [ 'page', 'revision' ], - [ 'rev_id', 'rev_timestamp' ], - [ - 'page_namespace' => $this->title->getNamespace(), - 'page_title' => $this->title->getDBkey(), - 'page_id = rev_page', - 'rev_timestamp < ' . - $dbr->addQuotes( $dbr->timestamp( $timestamp ) ) ], - __METHOD__, - [ - 'ORDER BY' => 'rev_timestamp DESC', - 'LIMIT' => 1 ] ); - $prevLive = $row ? wfTimestamp( TS_MW, $row->rev_timestamp ) : false; - $prevLiveId = $row ? intval( $row->rev_id ) : null; - - if ( $prevLive && $prevLive > $prevDeleted ) { - // Most prior revision was live - return Revision::newFromId( $prevLiveId ); - } elseif ( $prevDeleted ) { - // Most prior revision was deleted - return $this->getRevision( $prevDeleted ); - } - - // No prior revision on this page. - return null; - } - - /** - * Get the text from an archive row containing ar_text, ar_flags and ar_text_id - * - * @param object $row Database row - * @return string - */ - function getTextFromRow( $row ) { - if ( is_null( $row->ar_text_id ) ) { - // An old row from MediaWiki 1.4 or previous. - // Text is embedded in this row in classic compression format. - return Revision::getRevisionText( $row, 'ar_' ); - } - - // New-style: keyed to the text storage backend. - $dbr = wfGetDB( DB_REPLICA ); - $text = $dbr->selectRow( 'text', - [ 'old_text', 'old_flags' ], - [ 'old_id' => $row->ar_text_id ], - __METHOD__ ); - - return Revision::getRevisionText( $text ); - } - - /** - * Fetch (and decompress if necessary) the stored text of the most - * recently edited deleted revision of the page. - * - * If there are no archived revisions for the page, returns NULL. - * - * @return string|null - */ - function getLastRevisionText() { - $dbr = wfGetDB( DB_REPLICA ); - $row = $dbr->selectRow( 'archive', - [ 'ar_text', 'ar_flags', 'ar_text_id' ], - [ 'ar_namespace' => $this->title->getNamespace(), - 'ar_title' => $this->title->getDBkey() ], - __METHOD__, - [ 'ORDER BY' => 'ar_timestamp DESC' ] ); - - if ( $row ) { - return $this->getTextFromRow( $row ); - } - - return null; - } - - /** - * Quick check if any archived revisions are present for the page. - * - * @return bool - */ - function isDeleted() { - $dbr = wfGetDB( DB_REPLICA ); - $n = $dbr->selectField( 'archive', 'COUNT(ar_title)', - [ 'ar_namespace' => $this->title->getNamespace(), - 'ar_title' => $this->title->getDBkey() ], - __METHOD__ - ); - - return ( $n > 0 ); - } - - /** - * Restore the given (or all) text and file revisions for the page. - * Once restored, the items will be removed from the archive tables. - * The deletion log will be updated with an undeletion notice. - * - * This also sets Status objects, $this->fileStatus and $this->revisionStatus - * (depending what operations are attempted). - * - * @param array $timestamps Pass an empty array to restore all revisions, - * otherwise list the ones to undelete. - * @param string $comment - * @param array $fileVersions - * @param bool $unsuppress - * @param User $user User performing the action, or null to use $wgUser - * @param string|string[] $tags Change tags to add to log entry - * ($user should be able to add the specified tags before this is called) - * @return array(number of file revisions restored, number of image revisions - * restored, log message) on success, false on failure. - */ - function undelete( $timestamps, $comment = '', $fileVersions = [], - $unsuppress = false, User $user = null, $tags = null - ) { - // If both the set of text revisions and file revisions are empty, - // restore everything. Otherwise, just restore the requested items. - $restoreAll = empty( $timestamps ) && empty( $fileVersions ); - - $restoreText = $restoreAll || !empty( $timestamps ); - $restoreFiles = $restoreAll || !empty( $fileVersions ); - - if ( $restoreFiles && $this->title->getNamespace() == NS_FILE ) { - $img = wfLocalFile( $this->title ); - $img->load( File::READ_LATEST ); - $this->fileStatus = $img->restore( $fileVersions, $unsuppress ); - if ( !$this->fileStatus->isOK() ) { - return false; - } - $filesRestored = $this->fileStatus->successCount; - } else { - $filesRestored = 0; - } - - if ( $restoreText ) { - $this->revisionStatus = $this->undeleteRevisions( $timestamps, $unsuppress, $comment ); - if ( !$this->revisionStatus->isOK() ) { - return false; - } - - $textRestored = $this->revisionStatus->getValue(); - } else { - $textRestored = 0; - } - - // Touch the log! - - if ( $textRestored && $filesRestored ) { - $reason = wfMessage( 'undeletedrevisions-files' ) - ->numParams( $textRestored, $filesRestored )->inContentLanguage()->text(); - } elseif ( $textRestored ) { - $reason = wfMessage( 'undeletedrevisions' )->numParams( $textRestored ) - ->inContentLanguage()->text(); - } elseif ( $filesRestored ) { - $reason = wfMessage( 'undeletedfiles' )->numParams( $filesRestored ) - ->inContentLanguage()->text(); - } else { - wfDebug( "Undelete: nothing undeleted...\n" ); - - return false; - } - - if ( trim( $comment ) != '' ) { - $reason .= wfMessage( 'colon-separator' )->inContentLanguage()->text() . $comment; - } - - if ( $user === null ) { - global $wgUser; - $user = $wgUser; - } - - $logEntry = new ManualLogEntry( 'delete', 'restore' ); - $logEntry->setPerformer( $user ); - $logEntry->setTarget( $this->title ); - $logEntry->setComment( $reason ); - $logEntry->setTags( $tags ); - - Hooks::run( 'ArticleUndeleteLogEntry', [ $this, &$logEntry, $user ] ); - - $logid = $logEntry->insert(); - $logEntry->publish( $logid ); - - return [ $textRestored, $filesRestored, $reason ]; - } - - /** - * This is the meaty bit -- It restores archived revisions of the given page - * to the revision table. - * - * @param array $timestamps Pass an empty array to restore all revisions, - * otherwise list the ones to undelete. - * @param bool $unsuppress Remove all ar_deleted/fa_deleted restrictions of seletected revs - * @param string $comment - * @throws ReadOnlyError - * @return Status Status object containing the number of revisions restored on success - */ - private function undeleteRevisions( $timestamps, $unsuppress = false, $comment = '' ) { - if ( wfReadOnly() ) { - throw new ReadOnlyError(); - } - - $dbw = wfGetDB( DB_MASTER ); - $dbw->startAtomic( __METHOD__ ); - - $restoreAll = empty( $timestamps ); - - # Does this page already exist? We'll have to update it... - $article = WikiPage::factory( $this->title ); - # Load latest data for the current page (bug 31179) - $article->loadPageData( 'fromdbmaster' ); - $oldcountable = $article->isCountable(); - - $page = $dbw->selectRow( 'page', - [ 'page_id', 'page_latest' ], - [ 'page_namespace' => $this->title->getNamespace(), - 'page_title' => $this->title->getDBkey() ], - __METHOD__, - [ 'FOR UPDATE' ] // lock page - ); - - if ( $page ) { - $makepage = false; - # Page already exists. Import the history, and if necessary - # we'll update the latest revision field in the record. - - # Get the time span of this page - $previousTimestamp = $dbw->selectField( 'revision', 'rev_timestamp', - [ 'rev_id' => $page->page_latest ], - __METHOD__ ); - - if ( $previousTimestamp === false ) { - wfDebug( __METHOD__ . ": existing page refers to a page_latest that does not exist\n" ); - - $status = Status::newGood( 0 ); - $status->warning( 'undeleterevision-missing' ); - $dbw->endAtomic( __METHOD__ ); - - return $status; - } - } else { - # Have to create a new article... - $makepage = true; - $previousTimestamp = 0; - } - - $oldWhere = [ - 'ar_namespace' => $this->title->getNamespace(), - 'ar_title' => $this->title->getDBkey(), - ]; - if ( !$restoreAll ) { - $oldWhere['ar_timestamp'] = array_map( [ &$dbw, 'timestamp' ], $timestamps ); - } - - $fields = [ - 'ar_id', - 'ar_rev_id', - 'rev_id', - 'ar_text', - 'ar_comment', - 'ar_user', - 'ar_user_text', - 'ar_timestamp', - 'ar_minor_edit', - 'ar_flags', - 'ar_text_id', - 'ar_deleted', - 'ar_page_id', - 'ar_len', - 'ar_sha1' - ]; - - if ( $this->config->get( 'ContentHandlerUseDB' ) ) { - $fields[] = 'ar_content_format'; - $fields[] = 'ar_content_model'; - } - - /** - * Select each archived revision... - */ - $result = $dbw->select( - [ 'archive', 'revision' ], - $fields, - $oldWhere, - __METHOD__, - /* options */ - [ 'ORDER BY' => 'ar_timestamp' ], - [ 'revision' => [ 'LEFT JOIN', 'ar_rev_id=rev_id' ] ] - ); - - $rev_count = $result->numRows(); - if ( !$rev_count ) { - wfDebug( __METHOD__ . ": no revisions to restore\n" ); - - $status = Status::newGood( 0 ); - $status->warning( "undelete-no-results" ); - $dbw->endAtomic( __METHOD__ ); - - return $status; - } - - // We use ar_id because there can be duplicate ar_rev_id even for the same - // page. In this case, we may be able to restore the first one. - $restoreFailedArIds = []; - - // Map rev_id to the ar_id that is allowed to use it. When checking later, - // if it doesn't match, the current ar_id can not be restored. - - // Value can be an ar_id or -1 (-1 means no ar_id can use it, since the - // rev_id is taken before we even start the restore). - $allowedRevIdToArIdMap = []; - - $latestRestorableRow = null; - - foreach ( $result as $row ) { - if ( $row->ar_rev_id ) { - // rev_id is taken even before we start restoring. - if ( $row->ar_rev_id === $row->rev_id ) { - $restoreFailedArIds[] = $row->ar_id; - $allowedRevIdToArIdMap[$row->ar_rev_id] = -1; - } else { - // rev_id is not taken yet in the DB, but it might be taken - // by a prior revision in the same restore operation. If - // not, we need to reserve it. - if ( isset( $allowedRevIdToArIdMap[$row->ar_rev_id] ) ) { - $restoreFailedArIds[] = $row->ar_id; - } else { - $allowedRevIdToArIdMap[$row->ar_rev_id] = $row->ar_id; - $latestRestorableRow = $row; - } - } - } else { - // If ar_rev_id is null, there can't be a collision, and a - // rev_id will be chosen automatically. - $latestRestorableRow = $row; - } - } - - $result->seek( 0 ); // move back - - $oldPageId = 0; - if ( $latestRestorableRow !== null ) { - $oldPageId = (int)$latestRestorableRow->ar_page_id; // pass this to ArticleUndelete hook - - // grab the content to check consistency with global state before restoring the page. - $revision = Revision::newFromArchiveRow( $latestRestorableRow, - [ - 'title' => $article->getTitle(), // used to derive default content model - ] - ); - $user = User::newFromName( $revision->getUserText( Revision::RAW ), false ); - $content = $revision->getContent( Revision::RAW ); - - // NOTE: article ID may not be known yet. prepareSave() should not modify the database. - $status = $content->prepareSave( $article, 0, -1, $user ); - if ( !$status->isOK() ) { - $dbw->endAtomic( __METHOD__ ); - - return $status; - } - } - - $newid = false; // newly created page ID - $restored = 0; // number of revisions restored - /** @var Revision $revision */ - $revision = null; - - // If there are no restorable revisions, we can skip most of the steps. - if ( $latestRestorableRow === null ) { - $failedRevisionCount = $rev_count; - } else { - if ( $makepage ) { - // Check the state of the newest to-be version... - if ( !$unsuppress - && ( $latestRestorableRow->ar_deleted & Revision::DELETED_TEXT ) - ) { - $dbw->endAtomic( __METHOD__ ); - - return Status::newFatal( "undeleterevdel" ); - } - // Safe to insert now... - $newid = $article->insertOn( $dbw, $latestRestorableRow->ar_page_id ); - if ( $newid === false ) { - // The old ID is reserved; let's pick another - $newid = $article->insertOn( $dbw ); - } - $pageId = $newid; - } else { - // Check if a deleted revision will become the current revision... - if ( $latestRestorableRow->ar_timestamp > $previousTimestamp ) { - // Check the state of the newest to-be version... - if ( !$unsuppress - && ( $latestRestorableRow->ar_deleted & Revision::DELETED_TEXT ) - ) { - $dbw->endAtomic( __METHOD__ ); - - return Status::newFatal( "undeleterevdel" ); - } - } - - $newid = false; - $pageId = $article->getId(); - } - - foreach ( $result as $row ) { - // Check for key dupes due to needed archive integrity. - if ( $row->ar_rev_id && $allowedRevIdToArIdMap[$row->ar_rev_id] !== $row->ar_id ) { - continue; - } - // Insert one revision at a time...maintaining deletion status - // unless we are specifically removing all restrictions... - $revision = Revision::newFromArchiveRow( $row, - [ - 'page' => $pageId, - 'title' => $this->title, - 'deleted' => $unsuppress ? 0 : $row->ar_deleted - ] ); - - $revision->insertOn( $dbw ); - $restored++; - - Hooks::run( 'ArticleRevisionUndeleted', - [ &$this->title, $revision, $row->ar_page_id ] ); - } - - // Now that it's safely stored, take it out of the archive - // Don't delete rows that we failed to restore - $toDeleteConds = $oldWhere; - $failedRevisionCount = count( $restoreFailedArIds ); - if ( $failedRevisionCount > 0 ) { - $toDeleteConds[] = 'ar_id NOT IN ( ' . $dbw->makeList( $restoreFailedArIds ) . ' )'; - } - - $dbw->delete( 'archive', - $toDeleteConds, - __METHOD__ ); - } - - $status = Status::newGood( $restored ); - - if ( $failedRevisionCount > 0 ) { - $status->warning( - wfMessage( 'undeleterevision-duplicate-revid', $failedRevisionCount ) ); - } - - // Was anything restored at all? - if ( $restored ) { - $created = (bool)$newid; - // Attach the latest revision to the page... - $wasnew = $article->updateIfNewerOn( $dbw, $revision ); - if ( $created || $wasnew ) { - // Update site stats, link tables, etc - $article->doEditUpdates( - $revision, - User::newFromName( $revision->getUserText( Revision::RAW ), false ), - [ - 'created' => $created, - 'oldcountable' => $oldcountable, - 'restored' => true - ] - ); - } - - Hooks::run( 'ArticleUndelete', [ &$this->title, $created, $comment, $oldPageId ] ); - if ( $this->title->getNamespace() == NS_FILE ) { - DeferredUpdates::addUpdate( new HTMLCacheUpdate( $this->title, 'imagelinks' ) ); - } - } - - $dbw->endAtomic( __METHOD__ ); - - return $status; - } - - /** - * @return Status - */ - function getFileStatus() { - return $this->fileStatus; - } - - /** - * @return Status - */ - function getRevisionStatus() { - return $this->revisionStatus; - } -} +use Wikimedia\Rdbms\ResultWrapper; /** * Special page allowing users with the appropriate permissions to view diff --git a/includes/specials/SpecialUnusedcategories.php b/includes/specials/SpecialUnusedcategories.php index ec39ccf0c9..1469742a4b 100644 --- a/includes/specials/SpecialUnusedcategories.php +++ b/includes/specials/SpecialUnusedcategories.php @@ -55,7 +55,7 @@ class UnusedCategoriesPage extends QueryPage { } /** - * A should come before Z (bug 30907) + * A should come before Z (T32907) * @return bool */ function sortDescending() { diff --git a/includes/specials/SpecialUnusedimages.php b/includes/specials/SpecialUnusedimages.php index 2cc1a7b0e8..9fcbf15f78 100644 --- a/includes/specials/SpecialUnusedimages.php +++ b/includes/specials/SpecialUnusedimages.php @@ -50,8 +50,6 @@ class UnusedimagesPage extends ImageQueryPage { 'namespace' => NS_FILE, 'title' => 'img_name', 'value' => 'img_timestamp', - 'img_user', 'img_user_text', - 'img_description' ], 'conds' => [ 'il_to IS NULL' ], 'join_conds' => [ 'imagelinks' => [ 'LEFT JOIN', 'il_to = img_name' ] ] diff --git a/includes/specials/SpecialUnwatchedpages.php b/includes/specials/SpecialUnwatchedpages.php index 96878a38aa..e82279e224 100644 --- a/includes/specials/SpecialUnwatchedpages.php +++ b/includes/specials/SpecialUnwatchedpages.php @@ -24,6 +24,8 @@ * @author Ævar Arnfjörð Bjarmason <avarab@gmail.com> */ +use Wikimedia\Rdbms\ResultWrapper; + /** * A special page that displays a list of pages that are not on anyones watchlist. * diff --git a/includes/specials/SpecialUpload.php b/includes/specials/SpecialUpload.php index 8b8e514ac0..f4a4818b32 100644 --- a/includes/specials/SpecialUpload.php +++ b/includes/specials/SpecialUpload.php @@ -281,10 +281,12 @@ class SpecialUpload extends SpecialPage { $desiredTitleObj = Title::makeTitleSafe( NS_FILE, $this->mDesiredDestName ); $delNotice = ''; // empty by default if ( $desiredTitleObj instanceof Title && !$desiredTitleObj->exists() ) { + $dbr = wfGetDB( DB_REPLICA ); + LogEventsList::showLogExtract( $delNotice, [ 'delete', 'move' ], $desiredTitleObj, '', [ 'lim' => 10, - 'conds' => [ "log_action != 'revision'" ], + 'conds' => [ 'log_action != ' . $dbr->addQuotes( 'revision' ) ], 'showIfEmpty' => false, 'msgKey' => [ 'upload-recreate-warning' ] ] ); @@ -1090,12 +1092,14 @@ class UploadForm extends HTMLForm { global $wgContLang; $mto = $file->transform( [ 'width' => 120 ] ); - $this->addHeaderText( - '<div class="thumb t' . $wgContLang->alignEnd() . '">' . - Html::element( 'img', [ - 'src' => $mto->getUrl(), - 'class' => 'thumbimage', - ] ) . '</div>', 'description' ); + if ( $mto ) { + $this->addHeaderText( + '<div class="thumb t' . $wgContLang->alignEnd() . '">' . + Html::element( 'img', [ + 'src' => $mto->getUrl(), + 'class' => 'thumbimage', + ] ) . '</div>', 'description' ); + } } } diff --git a/includes/specials/SpecialUploadStash.php b/includes/specials/SpecialUploadStash.php index 8478e947f9..b0bb595e85 100644 --- a/includes/specials/SpecialUploadStash.php +++ b/includes/specials/SpecialUploadStash.php @@ -327,7 +327,7 @@ class SpecialUploadStash extends UnlistedSpecialPage { header( "Content-Type: $contentType", true ); header( 'Content-Transfer-Encoding: binary', true ); header( 'Expires: Sun, 17-Jan-2038 19:14:07 GMT', true ); - // Bug 53032 - It shouldn't be a problem here, but let's be safe and not cache + // T55032 - It shouldn't be a problem here, but let's be safe and not cache header( 'Cache-Control: private' ); header( "Content-Length: $size", true ); } diff --git a/includes/specials/SpecialUserLogout.php b/includes/specials/SpecialUserLogout.php index c067f4496a..a9b732efb1 100644 --- a/includes/specials/SpecialUserLogout.php +++ b/includes/specials/SpecialUserLogout.php @@ -38,7 +38,7 @@ class SpecialUserLogout extends UnlistedSpecialPage { function execute( $par ) { /** * Some satellite ISPs use broken precaching schemes that log people out straight after - * they're logged in (bug 17790). Luckily, there's a way to detect such requests. + * they're logged in (T19790). Luckily, there's a way to detect such requests. */ if ( isset( $_SERVER['REQUEST_URI'] ) && strpos( $_SERVER['REQUEST_URI'], '&' ) !== false ) { wfDebug( "Special:UserLogout request {$_SERVER['REQUEST_URI']} looks suspicious, denying.\n" ); diff --git a/includes/specials/SpecialUserrights.php b/includes/specials/SpecialUserrights.php index 38bac297d7..b33aa7db32 100644 --- a/includes/specials/SpecialUserrights.php +++ b/includes/specials/SpecialUserrights.php @@ -49,19 +49,25 @@ class UserrightsPage extends SpecialPage { } /** - * @param User $user - * @param bool $checkIfSelf + * Check whether the current user (from context) can change the target user's rights. + * + * @param User $targetUser User whose rights are being changed + * @param bool $checkIfSelf If false, assume that the current user can add/remove groups defined + * in $wgGroupsAddToSelf / $wgGroupsRemoveFromSelf, without checking if it's the same as target + * user * @return bool */ - public function userCanChangeRights( $user, $checkIfSelf = true ) { + public function userCanChangeRights( $targetUser, $checkIfSelf = true ) { + $isself = $this->getUser()->equals( $targetUser ); + $available = $this->changeableGroups(); - if ( $user->getId() == 0 ) { + if ( $targetUser->getId() == 0 ) { return false; } return !empty( $available['add'] ) || !empty( $available['remove'] ) - || ( ( $this->isself || !$checkIfSelf ) && + || ( ( $isself || !$checkIfSelf ) && ( !empty( $available['add-self'] ) || !empty( $available['remove-self'] ) ) ); } @@ -79,6 +85,8 @@ class UserrightsPage extends SpecialPage { $session = $request->getSession(); $out = $this->getOutput(); + $out->addModules( [ 'mediawiki.special.userrights' ] ); + if ( $par !== null ) { $this->mTarget = $par; } else { @@ -111,7 +119,6 @@ class UserrightsPage extends SpecialPage { // Remove session data for the success message $session->remove( 'specialUserrightsSaveSuccess' ); - $out->addModules( [ 'mediawiki.special.userrights' ] ); $out->addModuleStyles( 'mediawiki.notification.convertmessagebox.styles' ); $out->addHTML( Html::rawElement( @@ -163,8 +170,8 @@ class UserrightsPage extends SpecialPage { } $targetUser = $this->mFetchedUser; - if ( $targetUser instanceof User ) { // UserRightsProxy doesn't have this method (bug 61252) - $targetUser->clearInstanceCache(); // bug 38989 + if ( $targetUser instanceof User ) { // UserRightsProxy doesn't have this method (T63252) + $targetUser->clearInstanceCache(); // T40989 } if ( $request->getVal( 'conflictcheck-originalgroups' ) @@ -172,18 +179,22 @@ class UserrightsPage extends SpecialPage { ) { $out->addWikiMsg( 'userrights-conflict' ); } else { - $this->saveUserGroups( + $status = $this->saveUserGroups( $this->mTarget, $request->getVal( 'user-reason' ), $targetUser ); - // Set session data for the success message - $session->set( 'specialUserrightsSaveSuccess', 1 ); - - $out->redirect( $this->getSuccessURL() ); + if ( $status->isOK() ) { + // Set session data for the success message + $session->set( 'specialUserrightsSaveSuccess', 1 ); - return; + $out->redirect( $this->getSuccessURL() ); + return; + } else { + // Print an error message and redisplay the form + $out->addWikiText( '<div class="error">' . $status->getWikiText() . '</div>' ); + } } } @@ -197,6 +208,41 @@ class UserrightsPage extends SpecialPage { return $this->getPageTitle( $this->mTarget )->getFullURL(); } + /** + * Returns true if this user rights form can set and change user group expiries. + * Subclasses may wish to override this to return false. + * + * @return bool + */ + public function canProcessExpiries() { + return !$this->getConfig()->get( 'DisableUserGroupExpiry' ); + } + + /** + * Converts a user group membership expiry string into a timestamp. Words like + * 'existing' or 'other' should have been filtered out before calling this + * function. + * + * @param string $expiry + * @return string|null|false A string containing a valid timestamp, or null + * if the expiry is infinite, or false if the timestamp is not valid + */ + public static function expiryToTimestamp( $expiry ) { + if ( wfIsInfinity( $expiry ) ) { + return null; + } + + $unix = strtotime( $expiry ); + + if ( !$unix || $unix === -1 ) { + return false; + } + + // @todo FIXME: Non-qualified absolute times are not in users specified timezone + // and there isn't notice about it in the ui (see ProtectionForm::getExpiry) + return wfTimestamp( TS_MW, $unix ); + } + /** * Save user groups changes in the database. * Data comes from the editUserGroupsForm() form function @@ -204,12 +250,14 @@ class UserrightsPage extends SpecialPage { * @param string $username Username to apply changes to. * @param string $reason Reason for group change * @param User|UserRightsProxy $user Target user object. - * @return null + * @return Status */ - function saveUserGroups( $username, $reason, $user ) { + protected function saveUserGroups( $username, $reason, $user ) { $allgroups = $this->getAllGroups(); $addgroup = []; + $groupExpiries = []; // associative array of (group name => expiry) $removegroup = []; + $existingUGMs = $user->getGroupMemberships(); // This could possibly create a highly unlikely race condition if permissions are changed between // when the form is loaded and when the form is saved. Ignoring it for the moment. @@ -218,45 +266,103 @@ class UserrightsPage extends SpecialPage { // Later on, this gets filtered for what can actually be removed if ( $this->getRequest()->getCheck( "wpGroup-$group" ) ) { $addgroup[] = $group; + + if ( $this->canProcessExpiries() ) { + // read the expiry information from the request + $expiryDropdown = $this->getRequest()->getVal( "wpExpiry-$group" ); + if ( $expiryDropdown === 'existing' ) { + continue; + } + + if ( $expiryDropdown === 'other' ) { + $expiryValue = $this->getRequest()->getVal( "wpExpiry-$group-other" ); + } else { + $expiryValue = $expiryDropdown; + } + + // validate the expiry + $groupExpiries[$group] = self::expiryToTimestamp( $expiryValue ); + + if ( $groupExpiries[$group] === false ) { + return Status::newFatal( 'userrights-invalid-expiry', $group ); + } + + // not allowed to have things expiring in the past + if ( $groupExpiries[$group] && $groupExpiries[$group] < wfTimestampNow() ) { + return Status::newFatal( 'userrights-expiry-in-past', $group ); + } + + // if the user can only add this group (not remove it), the expiry time + // cannot be brought forward (T156784) + if ( !$this->canRemove( $group ) && + isset( $existingUGMs[$group] ) && + ( $existingUGMs[$group]->getExpiry() ?: 'infinity' ) > + ( $groupExpiries[$group] ?: 'infinity' ) + ) { + return Status::newFatal( 'userrights-cannot-shorten-expiry', $group ); + } + } } else { $removegroup[] = $group; } } - $this->doSaveUserGroups( $user, $addgroup, $removegroup, $reason ); + $this->doSaveUserGroups( $user, $addgroup, $removegroup, $reason, [], $groupExpiries ); + + return Status::newGood(); } /** - * Save user groups changes in the database. + * Save user groups changes in the database. This function does not throw errors; + * instead, it ignores groups that the performer does not have permission to set. * * @param User|UserRightsProxy $user * @param array $add Array of groups to add * @param array $remove Array of groups to remove * @param string $reason Reason for group change * @param array $tags Array of change tags to add to the log entry + * @param array $groupExpiries Associative array of (group name => expiry), + * containing only those groups that are to have new expiry values set * @return array Tuple of added, then removed groups */ - function doSaveUserGroups( $user, $add, $remove, $reason = '', $tags = [] ) { + function doSaveUserGroups( $user, $add, $remove, $reason = '', $tags = [], + $groupExpiries = [] ) { + // Validate input set... $isself = $user->getName() == $this->getUser()->getName(); $groups = $user->getGroups(); + $ugms = $user->getGroupMemberships(); $changeable = $this->changeableGroups(); $addable = array_merge( $changeable['add'], $isself ? $changeable['add-self'] : [] ); $removable = array_merge( $changeable['remove'], $isself ? $changeable['remove-self'] : [] ); $remove = array_unique( array_intersect( (array)$remove, $removable, $groups ) ); - $add = array_unique( array_diff( - array_intersect( (array)$add, $addable ), - $groups ) - ); + $add = array_intersect( (array)$add, $addable ); + + // add only groups that are not already present or that need their expiry updated, + // UNLESS the user can only add this group (not remove it) and the expiry time + // is being brought forward (T156784) + $add = array_filter( $add, + function( $group ) use ( $groups, $groupExpiries, $removable, $ugms ) { + if ( isset( $groupExpiries[$group] ) && + !in_array( $group, $removable ) && + isset( $ugms[$group] ) && + ( $ugms[$group]->getExpiry() ?: 'infinity' ) > + ( $groupExpiries[$group] ?: 'infinity' ) + ) { + return false; + } + return !in_array( $group, $groups ) || array_key_exists( $group, $groupExpiries ); + } ); Hooks::run( 'ChangeUserGroups', [ $this->getUser(), $user, &$add, &$remove ] ); - $oldGroups = $user->getGroups(); + $oldGroups = $groups; + $oldUGMs = $user->getGroupMemberships(); $newGroups = $oldGroups; - // Remove then add groups + // Remove groups, then add new ones/update expiries of existing ones if ( $remove ) { foreach ( $remove as $index => $group ) { if ( !$user->removeGroup( $group ) ) { @@ -267,13 +373,15 @@ class UserrightsPage extends SpecialPage { } if ( $add ) { foreach ( $add as $index => $group ) { - if ( !$user->addGroup( $group ) ) { + $expiry = isset( $groupExpiries[$group] ) ? $groupExpiries[$group] : null; + if ( !$user->addGroup( $group, $expiry ) ) { unset( $add[$index] ); } } $newGroups = array_merge( $newGroups, $add ); } $newGroups = array_unique( $newGroups ); + $newUGMs = $user->getGroupMemberships(); // Ensure that caches are cleared $user->invalidateCache(); @@ -286,25 +394,59 @@ class UserrightsPage extends SpecialPage { wfDebug( 'oldGroups: ' . print_r( $oldGroups, true ) . "\n" ); wfDebug( 'newGroups: ' . print_r( $newGroups, true ) . "\n" ); + wfDebug( 'oldUGMs: ' . print_r( $oldUGMs, true ) . "\n" ); + wfDebug( 'newUGMs: ' . print_r( $newUGMs, true ) . "\n" ); // Deprecated in favor of UserGroupsChanged hook Hooks::run( 'UserRights', [ &$user, $add, $remove ], '1.26' ); - if ( $newGroups != $oldGroups ) { - $this->addLogEntry( $user, $oldGroups, $newGroups, $reason, $tags ); + // Only add a log entry if something actually changed + if ( $newGroups != $oldGroups || $newUGMs != $oldUGMs ) { + $this->addLogEntry( $user, $oldGroups, $newGroups, $reason, $tags, $oldUGMs, $newUGMs ); } return [ $add, $remove ]; } + /** + * Serialise a UserGroupMembership object for storage in the log_params section + * of the logging table. Only keeps essential data, removing redundant fields. + * + * @param UserGroupMembership|null $ugm May be null if things get borked + * @return array + */ + protected static function serialiseUgmForLog( $ugm ) { + if ( !$ugm instanceof UserGroupMembership ) { + return null; + } + return [ 'expiry' => $ugm->getExpiry() ]; + } + /** * Add a rights log entry for an action. - * @param User $user + * @param User|UserRightsProxy $user * @param array $oldGroups * @param array $newGroups * @param array $reason - * @param array $tags + * @param array $tags Change tags for the log entry + * @param array $oldUGMs Associative array of (group name => UserGroupMembership) + * @param array $newUGMs Associative array of (group name => UserGroupMembership) */ - function addLogEntry( $user, $oldGroups, $newGroups, $reason, $tags ) { + protected function addLogEntry( $user, $oldGroups, $newGroups, $reason, $tags, + $oldUGMs, $newUGMs ) { + + // make sure $oldUGMs and $newUGMs are in the same order, and serialise + // each UGM object to a simplified array + $oldUGMs = array_map( function( $group ) use ( $oldUGMs ) { + return isset( $oldUGMs[$group] ) ? + self::serialiseUgmForLog( $oldUGMs[$group] ) : + null; + }, $oldGroups ); + $newUGMs = array_map( function( $group ) use ( $newUGMs ) { + return isset( $newUGMs[$group] ) ? + self::serialiseUgmForLog( $newUGMs[$group] ) : + null; + }, $newGroups ); + $logEntry = new ManualLogEntry( 'rights', 'rights' ); $logEntry->setPerformer( $this->getUser() ); $logEntry->setTarget( $user->getUserPage() ); @@ -312,6 +454,8 @@ class UserrightsPage extends SpecialPage { $logEntry->setParameters( [ '4::oldgroups' => $oldGroups, '5::newgroups' => $newGroups, + 'oldmetadata' => $oldUGMs, + 'newmetadata' => $newUGMs, ] ); $logid = $logEntry->insert(); if ( count( $tags ) ) { @@ -335,8 +479,8 @@ class UserrightsPage extends SpecialPage { } $groups = $user->getGroups(); - - $this->showEditUserGroupsForm( $user, $groups ); + $groupMemberships = $user->getGroupMemberships(); + $this->showEditUserGroupsForm( $user, $groups, $groupMemberships ); // This isn't really ideal logging behavior, but let's not hide the // interwiki logs if we're using them as is. @@ -465,62 +609,51 @@ class UserrightsPage extends SpecialPage { ); } - /** - * Go through used and available groups and return the ones that this - * form will be able to manipulate based on the current user's system - * permissions. - * - * @param array $groups List of groups the given user is in - * @return array Tuple of addable, then removable groups - */ - protected function splitGroups( $groups ) { - list( $addable, $removable, $addself, $removeself ) = array_values( $this->changeableGroups() ); - - $removable = array_intersect( - array_merge( $this->isself ? $removeself : [], $removable ), - $groups - ); // Can't remove groups the user doesn't have - $addable = array_diff( - array_merge( $this->isself ? $addself : [], $addable ), - $groups - ); // Can't add groups the user does have - - return [ $addable, $removable ]; - } - /** * Show the form to edit group memberships. * * @param User|UserRightsProxy $user User or UserRightsProxy you're editing - * @param array $groups Array of groups the user is in + * @param array $groups Array of groups the user is in. Not used by this implementation + * anymore, but kept for backward compatibility with subclasses + * @param array $groupMemberships Associative array of (group name => UserGroupMembership + * object) containing the groups the user is in */ - protected function showEditUserGroupsForm( $user, $groups ) { - $list = []; - $membersList = []; - foreach ( $groups as $group ) { - $list[] = self::buildGroupLink( $group ); - $membersList[] = self::buildGroupMemberLink( $group ); + protected function showEditUserGroupsForm( $user, $groups, $groupMemberships ) { + $list = $membersList = $tempList = $tempMembersList = []; + foreach ( $groupMemberships as $ugm ) { + $linkG = UserGroupMembership::getLink( $ugm, $this->getContext(), 'html' ); + $linkM = UserGroupMembership::getLink( $ugm, $this->getContext(), 'html', + $user->getName() ); + if ( $ugm->getExpiry() ) { + $tempList[] = $linkG; + $tempMembersList[] = $linkM; + } else { + $list[] = $linkG; + $membersList[] = $linkM; + + } } $autoList = []; $autoMembersList = []; if ( $user instanceof User ) { foreach ( Autopromote::getAutopromoteGroups( $user ) as $group ) { - $autoList[] = self::buildGroupLink( $group ); - $autoMembersList[] = self::buildGroupMemberLink( $group ); + $autoList[] = UserGroupMembership::getLink( $group, $this->getContext(), 'html' ); + $autoMembersList[] = UserGroupMembership::getLink( $group, $this->getContext(), + 'html', $user->getName() ); } } $language = $this->getLanguage(); $displayedList = $this->msg( 'userrights-groupsmember-type' ) ->rawParams( - $language->listToText( $list ), - $language->listToText( $membersList ) + $language->commaList( array_merge( $tempList, $list ) ), + $language->commaList( array_merge( $tempMembersList, $membersList ) ) )->escaped(); $displayedAutolist = $this->msg( 'userrights-groupsmember-type' ) ->rawParams( - $language->listToText( $autoList ), - $language->listToText( $autoMembersList ) + $language->commaList( $autoList ), + $language->commaList( $autoMembersList ) )->escaped(); $grouplist = ''; @@ -549,7 +682,8 @@ class UserrightsPage extends SpecialPage { Linker::TOOL_LINKS_EMAIL /* Add "send e-mail" link */ ); - list( $groupCheckboxes, $canChangeAny ) = $this->groupCheckboxes( $groups, $user ); + list( $groupCheckboxes, $canChangeAny ) = + $this->groupCheckboxes( $groupMemberships, $user ); $this->getOutput()->addHTML( Xml::openElement( 'form', @@ -615,26 +749,6 @@ class UserrightsPage extends SpecialPage { ); } - /** - * Format a link to a group description page - * - * @param string $group - * @return string - */ - private static function buildGroupLink( $group ) { - return User::makeGroupLinkHTML( $group, User::getGroupName( $group ) ); - } - - /** - * Format a link to a group member description page - * - * @param string $group - * @return string - */ - private static function buildGroupMemberLink( $group ) { - return User::makeGroupLinkHTML( $group, User::getGroupMember( $group ) ); - } - /** * Returns an array of all groups that may be edited * @return array Array of groups that may be edited. @@ -646,8 +760,8 @@ class UserrightsPage extends SpecialPage { /** * Adds a table with checkboxes where you can select what groups to add/remove * - * @todo Just pass the username string? - * @param array $usergroups Groups the user belongs to + * @param array $usergroups Associative array of (group name as string => + * UserGroupMembership object) for groups the user belongs to * @param User $user * @return Array with 2 elements: the XHTML table element with checkxboes, and * whether any groups are changeable @@ -656,28 +770,42 @@ class UserrightsPage extends SpecialPage { $allgroups = $this->getAllGroups(); $ret = ''; + // Get the list of preset expiry times from the system message + $expiryOptionsMsg = $this->msg( 'userrights-expiry-options' )->inContentLanguage(); + $expiryOptions = $expiryOptionsMsg->isDisabled() ? + [] : + explode( ',', $expiryOptionsMsg->text() ); + // Put all column info into an associative array so that extensions can // more easily manage it. $columns = [ 'unchangeable' => [], 'changeable' => [] ]; foreach ( $allgroups as $group ) { - $set = in_array( $group, $usergroups ); + $set = isset( $usergroups[$group] ); + // Users who can add the group, but not remove it, can only lengthen + // expiries, not shorten them. So they should only see the expiry + // dropdown if the group currently has a finite expiry + $canOnlyLengthenExpiry = ( $set && $this->canAdd( $group ) && + !$this->canRemove( $group ) && $usergroups[$group]->getExpiry() ); // Should the checkbox be disabled? - $disabled = !( + $disabledCheckbox = !( ( $set && $this->canRemove( $group ) ) || ( !$set && $this->canAdd( $group ) ) ); + // Should the expiry elements be disabled? + $disabledExpiry = $disabledCheckbox && !$canOnlyLengthenExpiry; // Do we need to point out that this action is irreversible? - $irreversible = !$disabled && ( + $irreversible = !$disabledCheckbox && ( ( $set && !$this->canAdd( $group ) ) || ( !$set && !$this->canRemove( $group ) ) ); $checkbox = [ 'set' => $set, - 'disabled' => $disabled, + 'disabled' => $disabledCheckbox, + 'disabled-expiry' => $disabledExpiry, 'irreversible' => $irreversible ]; - if ( $disabled ) { + if ( $disabledCheckbox && $disabledExpiry ) { $columns['unchangeable'][$group] = $checkbox; } else { $columns['changeable'][$group] = $checkbox; @@ -708,18 +836,110 @@ class UserrightsPage extends SpecialPage { foreach ( $column as $group => $checkbox ) { $attr = $checkbox['disabled'] ? [ 'disabled' => 'disabled' ] : []; - $member = User::getGroupMember( $group, $user->getName() ); + $member = UserGroupMembership::getGroupMemberName( $group, $user->getName() ); if ( $checkbox['irreversible'] ) { $text = $this->msg( 'userrights-irreversible-marker', $member )->text(); + } elseif ( $checkbox['disabled'] && !$checkbox['disabled-expiry'] ) { + $text = $this->msg( 'userrights-no-shorten-expiry-marker', $member )->text(); } else { $text = $member; } $checkboxHtml = Xml::checkLabel( $text, "wpGroup-" . $group, "wpGroup-" . $group, $checkbox['set'], $attr ); - $ret .= "\t\t" . ( $checkbox['disabled'] - ? Xml::tags( 'span', [ 'class' => 'mw-userrights-disabled' ], $checkboxHtml ) - : $checkboxHtml - ) . "<br />\n"; + $ret .= "\t\t" . ( ( $checkbox['disabled'] && $checkbox['disabled-expiry'] ) + ? Xml::tags( 'div', [ 'class' => 'mw-userrights-disabled' ], $checkboxHtml ) + : Xml::tags( 'div', [], $checkboxHtml ) + ) . "\n"; + + if ( $this->canProcessExpiries() ) { + $uiUser = $this->getUser(); + $uiLanguage = $this->getLanguage(); + + $currentExpiry = isset( $usergroups[$group] ) ? + $usergroups[$group]->getExpiry() : + null; + + // If the user can't modify the expiry, print the current expiry below + // it in plain text. Otherwise provide UI to set/change the expiry + if ( $checkbox['set'] && + ( $checkbox['irreversible'] || $checkbox['disabled-expiry'] ) + ) { + if ( $currentExpiry ) { + $expiryFormatted = $uiLanguage->userTimeAndDate( $currentExpiry, $uiUser ); + $expiryFormattedD = $uiLanguage->userDate( $currentExpiry, $uiUser ); + $expiryFormattedT = $uiLanguage->userTime( $currentExpiry, $uiUser ); + $expiryHtml = $this->msg( 'userrights-expiry-current' )->params( + $expiryFormatted, $expiryFormattedD, $expiryFormattedT )->text(); + } else { + $expiryHtml = $this->msg( 'userrights-expiry-none' )->text(); + } + $expiryHtml .= "<br />\n"; + } else { + $expiryHtml = Xml::element( 'span', null, + $this->msg( 'userrights-expiry' )->text() ); + $expiryHtml .= Xml::openElement( 'span' ); + + // add a form element to set the expiry date + $expiryFormOptions = new XmlSelect( + "wpExpiry-$group", + "mw-input-wpExpiry-$group", // forward compatibility with HTMLForm + $currentExpiry ? 'existing' : 'infinite' + ); + if ( $checkbox['disabled-expiry'] ) { + $expiryFormOptions->setAttribute( 'disabled', 'disabled' ); + } + + if ( $currentExpiry ) { + $timestamp = $uiLanguage->userTimeAndDate( $currentExpiry, $uiUser ); + $d = $uiLanguage->userDate( $currentExpiry, $uiUser ); + $t = $uiLanguage->userTime( $currentExpiry, $uiUser ); + $existingExpiryMessage = $this->msg( 'userrights-expiry-existing', + $timestamp, $d, $t ); + $expiryFormOptions->addOption( $existingExpiryMessage->text(), 'existing' ); + } + + $expiryFormOptions->addOption( + $this->msg( 'userrights-expiry-none' )->text(), + 'infinite' + ); + $expiryFormOptions->addOption( + $this->msg( 'userrights-expiry-othertime' )->text(), + 'other' + ); + foreach ( $expiryOptions as $option ) { + if ( strpos( $option, ":" ) === false ) { + $displayText = $value = $option; + } else { + list( $displayText, $value ) = explode( ":", $option ); + } + $expiryFormOptions->addOption( $displayText, htmlspecialchars( $value ) ); + } + + // Add expiry dropdown + $expiryHtml .= $expiryFormOptions->getHTML() . '<br />'; + + // Add custom expiry field + $attribs = [ 'id' => "mw-input-wpExpiry-$group-other" ]; + if ( $checkbox['disabled-expiry'] ) { + $attribs['disabled'] = 'disabled'; + } + $expiryHtml .= Xml::input( "wpExpiry-$group-other", 30, '', $attribs ); + + // If the user group is set but the checkbox is disabled, mimic a + // checked checkbox in the form submission + if ( $checkbox['set'] && $checkbox['disabled'] ) { + $expiryHtml .= Html::hidden( "wpGroup-$group", 1 ); + } + + $expiryHtml .= Xml::closeElement( 'span' ); + } + + $divAttribs = [ + 'id' => "mw-userrights-nested-wpGroup-$group", + 'class' => 'mw-userrights-nested', + ]; + $ret .= "\t\t\t" . Xml::tags( 'div', $divAttribs, $expiryHtml ) . "\n"; + } } $ret .= "\t</td>\n"; } @@ -802,4 +1022,3 @@ class UserrightsPage extends SpecialPage { return 'users'; } } - diff --git a/includes/specials/SpecialWantedfiles.php b/includes/specials/SpecialWantedfiles.php index 74d5e5d346..6d481f8fdc 100644 --- a/includes/specials/SpecialWantedfiles.php +++ b/includes/specials/SpecialWantedfiles.php @@ -83,7 +83,7 @@ class WantedFilesPage extends WantedQueryPage { * KLUGE: The results may contain false positives for files * that exist e.g. in a shared repo. Setting this at least * keeps them from showing up as redlinks in the output, even - * if it doesn't fix the real problem (bug 6220). + * if it doesn't fix the real problem (T8220). * * @note could also have existing links here from broken file * redirects. diff --git a/includes/specials/SpecialWantedpages.php b/includes/specials/SpecialWantedpages.php index c37ecbd17a..8cea6ccb77 100644 --- a/includes/specials/SpecialWantedpages.php +++ b/includes/specials/SpecialWantedpages.php @@ -85,7 +85,9 @@ class WantedPagesPage extends WantedQueryPage { ] ]; // Replacement for the WantedPages::getSQL hook - Hooks::run( 'WantedPages::getQueryInfo', [ &$this, &$query ] ); + // Avoid PHP 7.1 warning from passing $this by reference + $wantedPages = $this; + Hooks::run( 'WantedPages::getQueryInfo', [ &$wantedPages, &$query ] ); return $query; } diff --git a/includes/specials/SpecialWatchlist.php b/includes/specials/SpecialWatchlist.php index 85ac2de680..5d7fa5dbcd 100644 --- a/includes/specials/SpecialWatchlist.php +++ b/includes/specials/SpecialWatchlist.php @@ -22,6 +22,7 @@ */ use MediaWiki\MediaWikiServices; +use Wikimedia\Rdbms\ResultWrapper; /** * A special page that lists last changes made to the wiki, @@ -103,6 +104,56 @@ class SpecialWatchlist extends ChangesListSpecialPage { ]; } + /** + * @inheritdoc + */ + protected function registerFiltersFromDefinitions( array $definition ) { + foreach ( $definition as $groupName => &$groupDefinition ) { + foreach ( $groupDefinition['filters'] as &$filterDefinition ) { + if ( isset( $filterDefinition['showHideSuffix'] ) ) { + $filterDefinition['showHide'] = 'wl' . $filterDefinition['showHideSuffix']; + } + } + } + + parent::registerFiltersFromDefinitions( $definition ); + } + + /** + * @inheritdoc + */ + protected function registerFilters() { + parent::registerFilters(); + + $user = $this->getUser(); + + $significance = $this->getFilterGroup( 'significance' ); + $hideMinor = $significance->getFilter( 'hideminor' ); + $hideMinor->setDefault( $user->getBoolOption( 'watchlisthideminor' ) ); + + $automated = $this->getFilterGroup( 'automated' ); + $hideBots = $automated->getFilter( 'hidebots' ); + $hideBots->setDefault( $user->getBoolOption( 'watchlisthidebots' ) ); + + $registration = $this->getFilterGroup( 'registration' ); + $hideAnons = $registration->getFilter( 'hideanons' ); + $hideAnons->setDefault( $user->getBoolOption( 'watchlisthideanons' ) ); + $hideLiu = $registration->getFilter( 'hideliu' ); + $hideLiu->setDefault( $user->getBoolOption( 'watchlisthideliu' ) ); + + $reviewStatus = $this->getFilterGroup( 'reviewStatus' ); + $hidePatrolled = $reviewStatus->getFilter( 'hidepatrolled' ); + $hidePatrolled->setDefault( $user->getBoolOption( 'watchlisthidepatrolled' ) ); + + $authorship = $this->getFilterGroup( 'authorship' ); + $hideMyself = $authorship->getFilter( 'hidemyself' ); + $hideMyself->setDefault( $user->getBoolOption( 'watchlisthideown' ) ); + + $changeType = $this->getFilterGroup( 'changeType' ); + $hideCategorization = $changeType->getFilter( 'hidecategorization' ); + $hideCategorization->setDefault( $user->getBoolOption( 'watchlisthidecategorization' ) ); + } + /** * Get a FormOptions object containing the default options * @@ -119,14 +170,6 @@ class SpecialWatchlist extends ChangesListSpecialPage { return $opts; } - $opts->add( 'hideminor', $user->getBoolOption( 'watchlisthideminor' ) ); - $opts->add( 'hidebots', $user->getBoolOption( 'watchlisthidebots' ) ); - $opts->add( 'hideanons', $user->getBoolOption( 'watchlisthideanons' ) ); - $opts->add( 'hideliu', $user->getBoolOption( 'watchlisthideliu' ) ); - $opts->add( 'hidepatrolled', $user->getBoolOption( 'watchlisthidepatrolled' ) ); - $opts->add( 'hidemyself', $user->getBoolOption( 'watchlisthideown' ) ); - $opts->add( 'hidecategorization', $user->getBoolOption( 'watchlisthidecategorization' ) ); - return $opts; } @@ -180,32 +223,28 @@ class SpecialWatchlist extends ChangesListSpecialPage { } /** - * Return an array of conditions depending of options set in $opts - * - * @param FormOptions $opts - * @return array + * @inheritdoc */ - public function buildMainQueryConds( FormOptions $opts ) { + protected function buildQuery( &$tables, &$fields, &$conds, &$query_options, + &$join_conds, FormOptions $opts ) { + $dbr = $this->getDB(); - $conds = parent::buildMainQueryConds( $opts ); + parent::buildQuery( $tables, $fields, $conds, $query_options, $join_conds, + $opts ); // Calculate cutoff if ( $opts['days'] > 0 ) { $conds[] = 'rc_timestamp > ' . $dbr->addQuotes( $dbr->timestamp( time() - intval( $opts['days'] * 86400 ) ) ); } - - return $conds; } /** - * Process the query - * - * @param array $conds - * @param FormOptions $opts - * @return bool|ResultWrapper Result or false (for Recentchangeslinked only) + * @inheritdoc */ - public function doMainQuery( $conds, $opts ) { + protected function doMainQuery( $tables, $fields, $conds, $query_options, + $join_conds, FormOptions $opts ) { + $dbr = $this->getDB(); $user = $this->getUser(); @@ -230,19 +269,23 @@ class SpecialWatchlist extends ChangesListSpecialPage { $usePage = true; } - $tables = [ 'recentchanges', 'watchlist' ]; - $fields = RecentChange::selectFields(); - $query_options = [ 'ORDER BY' => 'rc_timestamp DESC' ]; - $join_conds = [ - 'watchlist' => [ - 'INNER JOIN', - [ - 'wl_user' => $user->getId(), - 'wl_namespace=rc_namespace', - 'wl_title=rc_title' + $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' => [ + 'INNER JOIN', + [ + 'wl_user' => $user->getId(), + 'wl_namespace=rc_namespace', + 'wl_title=rc_title' + ], ], ], - ]; + $join_conds + ); if ( $this->getConfig()->get( 'ShowUpdatedMarker' ) ) { $fields[] = 'wl_notificationtimestamp'; @@ -360,7 +403,7 @@ class SpecialWatchlist extends ChangesListSpecialPage { $dbr->dataSeek( $rows, 0 ); - $list = ChangesList::newFromContext( $this->getContext() ); + $list = ChangesList::newFromContext( $this->getContext(), $this->filterGroups ); $list->setWatchlistDivs(); $list->initChangesListRows( $rows ); $dbr->dataSeek( $rows, 0 ); @@ -447,31 +490,23 @@ class SpecialWatchlist extends ChangesListSpecialPage { $cutofflinks = $this->msg( 'wlshowtime' ) . ' ' . $this->cutoffselector( $opts ); # Spit out some control panel links - $filters = [ - 'hideminor' => 'wlshowhideminor', - 'hidebots' => 'wlshowhidebots', - 'hideanons' => 'wlshowhideanons', - 'hideliu' => 'wlshowhideliu', - 'hidemyself' => 'wlshowhidemine', - 'hidepatrolled' => 'wlshowhidepatr' - ]; - - if ( $this->getConfig()->get( 'RCWatchCategoryMembership' ) ) { - $filters['hidecategorization'] = 'wlshowhidecategorization'; - } - - foreach ( $this->getRenderableCustomFilters( $this->getCustomFilters() ) as $key => $params ) { - $filters[$key] = $params['msg']; - } - - // Disable some if needed - if ( !$user->useRCPatrol() ) { - unset( $filters['hidepatrolled'] ); - } - $links = []; - foreach ( $filters as $name => $msg ) { - $links[] = $this->showHideCheck( $nondefaults, $msg, $name, $opts[$name] ); + $context = $this->getContext(); + $namesOfDisplayedFilters = []; + foreach ( $this->getFilterGroups() as $groupName => $group ) { + if ( !$group->isPerGroupRequestParameter() ) { + foreach ( $group->getFilters() as $filterName => $filter ) { + if ( $filter->displaysOnUnstructuredUi( $this ) ) { + $namesOfDisplayedFilters[] = $filterName; + $links[] = $this->showHideCheck( + $nondefaults, + $filter->getShowHide(), + $filterName, + $opts[$filterName] + ); + } + } + } } $hiddenFields = $nondefaults; @@ -480,8 +515,8 @@ class SpecialWatchlist extends ChangesListSpecialPage { unset( $hiddenFields['invert'] ); unset( $hiddenFields['associated'] ); unset( $hiddenFields['days'] ); - foreach ( $filters as $key => $value ) { - unset( $hiddenFields[$key] ); + foreach ( $namesOfDisplayedFilters as $filterName ) { + unset( $hiddenFields[$filterName] ); } # Create output diff --git a/includes/specials/pagers/ActiveUsersPager.php b/includes/specials/pagers/ActiveUsersPager.php index 645a115041..0d6f493d59 100644 --- a/includes/specials/pagers/ActiveUsersPager.php +++ b/includes/specials/pagers/ActiveUsersPager.php @@ -101,12 +101,21 @@ class ActiveUsersPager extends UsersPager { $tables[] = 'user_groups'; $conds[] = 'ug_user = user_id'; $conds['ug_group'] = $this->groups; + if ( !$this->getConfig()->get( 'DisableUserGroupExpiry' ) ) { + $conds[] = 'ug_expiry IS NULL OR ug_expiry >= ' . $dbr->addQuotes( $dbr->timestamp() ); + } } if ( $this->excludegroups !== [] ) { foreach ( $this->excludegroups as $group ) { $conds[] = 'NOT EXISTS (' . $dbr->selectSQLText( - 'user_groups', '1', [ 'ug_user = user_id', 'ug_group' => $group ] - ) . ')'; + 'user_groups', '1', [ + 'ug_user = user_id', + 'ug_group' => $group, + $this->getConfig()->get( 'DisableUserGroupExpiry' ) ? + '1' : + 'ug_expiry IS NULL OR ug_expiry >= ' . $dbr->addQuotes( $dbr->timestamp() ) + ] + ) . ')'; } } if ( !$this->getUser()->isAllowed( 'hideuser' ) ) { @@ -165,9 +174,9 @@ class ActiveUsersPager extends UsersPager { $list = []; $user = User::newFromId( $row->user_id ); - $groups_list = self::getGroups( intval( $row->user_id ), $this->userGroupCache ); - foreach ( $groups_list as $group ) { - $list[] = self::buildGroupLink( $group, $userName ); + $ugms = self::getGroupMemberships( intval( $row->user_id ), $this->userGroupCache ); + foreach ( $ugms as $ugm ) { + $list[] = $this->buildGroupLink( $ugm, $userName ); } $groups = $lang->commaList( $list ); diff --git a/includes/specials/pagers/AllMessagesTablePager.php b/includes/specials/pagers/AllMessagesTablePager.php index efc51ef3ff..ca1b7dca9d 100644 --- a/includes/specials/pagers/AllMessagesTablePager.php +++ b/includes/specials/pagers/AllMessagesTablePager.php @@ -19,6 +19,8 @@ * @ingroup Pager */ +use Wikimedia\Rdbms\FakeResultWrapper; + /** * Use TablePager for prettified output. We have to pretend that we're * getting data from a table when in fact not all of it comes from the database. diff --git a/includes/specials/pagers/BlockListPager.php b/includes/specials/pagers/BlockListPager.php index a4124db5f4..9a447ef8f3 100644 --- a/includes/specials/pagers/BlockListPager.php +++ b/includes/specials/pagers/BlockListPager.php @@ -23,6 +23,7 @@ * @ingroup Pager */ use MediaWiki\MediaWikiServices; +use Wikimedia\Rdbms\ResultWrapper; class BlockListPager extends TablePager { diff --git a/includes/specials/pagers/CategoryPager.php b/includes/specials/pagers/CategoryPager.php index 345577d6ea..7db90c1788 100644 --- a/includes/specials/pagers/CategoryPager.php +++ b/includes/specials/pagers/CategoryPager.php @@ -92,21 +92,24 @@ class CategoryPager extends AlphabeticPager { } public function getStartForm( $from ) { - return Xml::tags( - 'form', - [ 'method' => 'get', 'action' => wfScript() ], - Html::hidden( 'title', $this->getTitle()->getPrefixedText() ) . - Xml::fieldset( - $this->msg( 'categories' )->text(), - Xml::inputLabel( - $this->msg( 'categoriesfrom' )->text(), - 'from', 'from', 20, $from, [ 'class' => 'mw-ui-input-inline' ] ) . - ' ' . - Html::submitButton( - $this->msg( 'categories-submit' )->text(), - [], [ 'mw-ui-progressive' ] - ) - ) - ); + $formDescriptor = [ + 'from' => [ + 'type' => 'title', + 'namespace' => NS_CATEGORY, + 'relative' => true, + 'label-message' => 'categoriesfrom', + 'name' => 'from', + 'id' => 'from', + 'size' => 20, + 'default' => $from, + ], + ]; + + $htmlForm = HTMLForm::factory( 'ooui', $formDescriptor, $this->getContext() ) + ->setSubmitTextMsg( 'categories-submit' ) + ->setWrapperLegendMsg( 'categories' ) + ->setMethod( 'get' ); + return $htmlForm->prepareForm()->getHTML( false ); } + } diff --git a/includes/specials/pagers/ContribsPager.php b/includes/specials/pagers/ContribsPager.php index 39c55c8a0c..5126bad1a8 100644 --- a/includes/specials/pagers/ContribsPager.php +++ b/includes/specials/pagers/ContribsPager.php @@ -24,6 +24,8 @@ * @ingroup Pager */ use MediaWiki\MediaWikiServices; +use Wikimedia\Rdbms\ResultWrapper; +use Wikimedia\Rdbms\FakeResultWrapper; class ContribsPager extends ReverseChronologicalPager { @@ -160,7 +162,7 @@ class ContribsPager extends ReverseChronologicalPager { $user = $this->getUser(); $conds = array_merge( $userCond, $this->getNamespaceCond() ); - // Paranoia: avoid brute force searches (bug 17342) + // Paranoia: avoid brute force searches (T19342) if ( !$user->isAllowed( 'deletedhistory' ) ) { $conds[] = $this->mDb->bitAnd( 'rev_deleted', Revision::DELETED_USER ) . ' = 0'; } elseif ( !$user->isAllowedAny( 'suppressrevision', 'viewsuppressed' ) ) { @@ -200,7 +202,9 @@ class ContribsPager extends ReverseChronologicalPager { $this->tagFilter ); - Hooks::run( 'ContribsPager::getQueryInfo', [ &$this, &$queryInfo ] ); + // Avoid PHP 7.1 warning from passing $this by reference + $pager = $this; + Hooks::run( 'ContribsPager::getQueryInfo', [ &$pager, &$queryInfo ] ); return $queryInfo; } @@ -222,7 +226,11 @@ class ContribsPager extends ReverseChronologicalPager { $join_conds['user_groups'] = [ 'LEFT JOIN', [ 'ug_user = rev_user', - 'ug_group' => $groupsWithBotPermission + 'ug_group' => $groupsWithBotPermission, + $this->getConfig()->get( 'DisableUserGroupExpiry' ) ? + '1' : + 'ug_expiry IS NULL OR ug_expiry >= ' . + $this->mDb->addQuotes( $this->mDb->timestamp() ) ] ]; } @@ -396,7 +404,7 @@ class ContribsPager extends ReverseChronologicalPager { $difftext = $linkRenderer->makeKnownLink( $page, new HtmlArmor( $this->messages['diff'] ), - [], + [ 'class' => 'mw-changeslist-diff' ], [ 'diff' => 'prev', 'oldid' => $row->rev_id @@ -408,13 +416,13 @@ class ContribsPager extends ReverseChronologicalPager { $histlink = $linkRenderer->makeKnownLink( $page, new HtmlArmor( $this->messages['hist'] ), - [], + [ 'class' => 'mw-changeslist-history' ], [ 'action' => 'history' ] ); if ( $row->rev_parent_id === null ) { // For some reason rev_parent_id isn't populated for this row. - // Its rumoured this is true on wikipedia for some revisions (bug 34922). + // Its rumoured this is true on wikipedia for some revisions (T36922). // Next best thing is to have the total number of bytes. $chardiff = ' <span class="mw-changeslist-separator">. .</span> '; $chardiff .= Linker::formatRevisionSize( $row->rev_len ); diff --git a/includes/specials/pagers/DeletedContribsPager.php b/includes/specials/pagers/DeletedContribsPager.php index 9ffcce9ef8..a1f6b84506 100644 --- a/includes/specials/pagers/DeletedContribsPager.php +++ b/includes/specials/pagers/DeletedContribsPager.php @@ -23,6 +23,8 @@ * @ingroup Pager */ use MediaWiki\MediaWikiServices; +use Wikimedia\Rdbms\ResultWrapper; +use Wikimedia\Rdbms\FakeResultWrapper; class DeletedContribsPager extends IndexPager { @@ -59,7 +61,7 @@ class DeletedContribsPager extends IndexPager { list( $index, $userCond ) = $this->getUserCond(); $conds = array_merge( $userCond, $this->getNamespaceCond() ); $user = $this->getUser(); - // Paranoia: avoid brute force searches (bug 17792) + // Paranoia: avoid brute force searches (T19792) if ( !$user->isAllowed( 'deletedhistory' ) ) { $conds[] = $this->mDb->bitAnd( 'ar_deleted', Revision::DELETED_USER ) . ' = 0'; } elseif ( !$user->isAllowedAny( 'suppressrevision', 'viewsuppressed' ) ) { diff --git a/includes/specials/pagers/ImageListPager.php b/includes/specials/pagers/ImageListPager.php index 59dea025a6..3789dfa6e8 100644 --- a/includes/specials/pagers/ImageListPager.php +++ b/includes/specials/pagers/ImageListPager.php @@ -23,6 +23,8 @@ * @ingroup Pager */ use MediaWiki\MediaWikiServices; +use Wikimedia\Rdbms\ResultWrapper; +use Wikimedia\Rdbms\FakeResultWrapper; class ImageListPager extends TablePager { @@ -449,7 +451,7 @@ class ImageListPager extends TablePager { $imgfile = $this->msg( 'imgfile' )->text(); } - // Weird files can maybe exist? Bug 22227 + // Weird files can maybe exist? T24227 $filePage = Title::makeTitleSafe( NS_FILE, $value ); if ( $filePage ) { $link = $linkRenderer->makeKnownLink( diff --git a/includes/specials/pagers/MergeHistoryPager.php b/includes/specials/pagers/MergeHistoryPager.php index 56229b3b76..bbf97e13cb 100644 --- a/includes/specials/pagers/MergeHistoryPager.php +++ b/includes/specials/pagers/MergeHistoryPager.php @@ -54,15 +54,17 @@ class MergeHistoryPager extends ReverseChronologicalPager { $batch = new LinkBatch(); # Give some pointers to make (last) links $this->mForm->prevId = []; + $rev_id = null; foreach ( $this->mResult as $row ) { $batch->addObj( Title::makeTitleSafe( NS_USER, $row->user_name ) ); $batch->addObj( Title::makeTitleSafe( NS_USER_TALK, $row->user_name ) ); - $rev_id = isset( $rev_id ) ? $rev_id : $row->rev_id; - if ( $rev_id > $row->rev_id ) { - $this->mForm->prevId[$rev_id] = $row->rev_id; - } elseif ( $rev_id < $row->rev_id ) { - $this->mForm->prevId[$row->rev_id] = $rev_id; + if ( isset( $rev_id ) ) { + if ( $rev_id > $row->rev_id ) { + $this->mForm->prevId[$rev_id] = $row->rev_id; + } elseif ( $rev_id < $row->rev_id ) { + $this->mForm->prevId[$row->rev_id] = $rev_id; + } } $rev_id = $row->rev_id; diff --git a/includes/specials/pagers/NewFilesPager.php b/includes/specials/pagers/NewFilesPager.php index e22b939fd6..4bf5dff667 100644 --- a/includes/specials/pagers/NewFilesPager.php +++ b/includes/specials/pagers/NewFilesPager.php @@ -59,13 +59,17 @@ class NewFilesPager extends ReverseChronologicalPager { $groupsWithBotPermission = User::getGroupsWithPermission( 'bot' ); if ( count( $groupsWithBotPermission ) ) { + $dbr = wfGetDB( DB_REPLICA ); $tables[] = 'user_groups'; $conds[] = 'ug_group IS NULL'; $jconds['user_groups'] = [ 'LEFT JOIN', [ 'ug_group' => $groupsWithBotPermission, - 'ug_user = img_user' + 'ug_user = img_user', + $this->getConfig()->get( 'DisableUserGroupExpiry' ) ? + '1' : + 'ug_expiry IS NULL OR ug_expiry >= ' . $dbr->addQuotes( $dbr->timestamp() ) ] ]; } diff --git a/includes/specials/pagers/NewPagesPager.php b/includes/specials/pagers/NewPagesPager.php index e298f103a2..dafd244ee5 100644 --- a/includes/specials/pagers/NewPagesPager.php +++ b/includes/specials/pagers/NewPagesPager.php @@ -100,8 +100,10 @@ class NewPagesPager extends ReverseChronologicalPager { ]; $join_conds = [ 'page' => [ 'INNER JOIN', 'page_id=rc_cur_id' ] ]; + // Avoid PHP 7.1 warning from passing $this by reference + $pager = $this; Hooks::run( 'SpecialNewpagesConditions', - [ &$this, $this->opts, &$conds, &$tables, &$fields, &$join_conds ] ); + [ &$pager, $this->opts, &$conds, &$tables, &$fields, &$join_conds ] ); $options = []; diff --git a/includes/specials/pagers/ProtectedPagesPager.php b/includes/specials/pagers/ProtectedPagesPager.php new file mode 100644 index 0000000000..45dced8829 --- /dev/null +++ b/includes/specials/pagers/ProtectedPagesPager.php @@ -0,0 +1,335 @@ +<?php +/** + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * http://www.gnu.org/copyleft/gpl.html + * + * @file + * @ingroup Pager + */ + +use \MediaWiki\Linker\LinkRenderer; + +/** + * @todo document + */ +class ProtectedPagesPager extends TablePager { + public $mForm, $mConds; + private $type, $level, $namespace, $sizetype, $size, $indefonly, $cascadeonly, $noredirect; + + /** + * @var LinkRenderer + */ + private $linkRenderer; + + /** + * @param SpecialProtectedpages $form + * @param array $conds + * @param $type + * @param $level + * @param $namespace + * @param string $sizetype + * @param int $size + * @param bool $indefonly + * @param bool $cascadeonly + * @param bool $noredirect + * @param LinkRenderer $linkRenderer + */ + function __construct( $form, $conds = [], $type, $level, $namespace, + $sizetype = '', $size = 0, $indefonly = false, $cascadeonly = false, $noredirect = false, + LinkRenderer $linkRenderer + ) { + $this->mForm = $form; + $this->mConds = $conds; + $this->type = ( $type ) ? $type : 'edit'; + $this->level = $level; + $this->namespace = $namespace; + $this->sizetype = $sizetype; + $this->size = intval( $size ); + $this->indefonly = (bool)$indefonly; + $this->cascadeonly = (bool)$cascadeonly; + $this->noredirect = (bool)$noredirect; + $this->linkRenderer = $linkRenderer; + parent::__construct( $form->getContext() ); + } + + function preprocessResults( $result ) { + # Do a link batch query + $lb = new LinkBatch; + $userids = []; + + foreach ( $result as $row ) { + $lb->add( $row->page_namespace, $row->page_title ); + // field is nullable, maybe null on old protections + if ( $row->log_user !== null ) { + $userids[] = $row->log_user; + } + } + + // fill LinkBatch with user page and user talk + if ( count( $userids ) ) { + $userCache = UserCache::singleton(); + $userCache->doQuery( $userids, [], __METHOD__ ); + foreach ( $userids as $userid ) { + $name = $userCache->getProp( $userid, 'name' ); + if ( $name !== false ) { + $lb->add( NS_USER, $name ); + $lb->add( NS_USER_TALK, $name ); + } + } + } + + $lb->execute(); + } + + function getFieldNames() { + static $headers = null; + + if ( $headers == [] ) { + $headers = [ + 'log_timestamp' => 'protectedpages-timestamp', + 'pr_page' => 'protectedpages-page', + 'pr_expiry' => 'protectedpages-expiry', + 'log_user' => 'protectedpages-performer', + 'pr_params' => 'protectedpages-params', + 'log_comment' => 'protectedpages-reason', + ]; + foreach ( $headers as $key => $val ) { + $headers[$key] = $this->msg( $val )->text(); + } + } + + return $headers; + } + + /** + * @param string $field + * @param string $value + * @return string HTML + * @throws MWException + */ + function formatValue( $field, $value ) { + /** @var $row object */ + $row = $this->mCurrentRow; + + switch ( $field ) { + case 'log_timestamp': + // when timestamp is null, this is a old protection row + if ( $value === null ) { + $formatted = Html::rawElement( + 'span', + [ 'class' => 'mw-protectedpages-unknown' ], + $this->msg( 'protectedpages-unknown-timestamp' )->escaped() + ); + } else { + $formatted = htmlspecialchars( $this->getLanguage()->userTimeAndDate( + $value, $this->getUser() ) ); + } + break; + + case 'pr_page': + $title = Title::makeTitleSafe( $row->page_namespace, $row->page_title ); + if ( !$title ) { + $formatted = Html::element( + 'span', + [ 'class' => 'mw-invalidtitle' ], + Linker::getInvalidTitleDescription( + $this->getContext(), + $row->page_namespace, + $row->page_title + ) + ); + } else { + $formatted = $this->linkRenderer->makeLink( $title ); + } + if ( !is_null( $row->page_len ) ) { + $formatted .= $this->getLanguage()->getDirMark() . + ' ' . Html::rawElement( + 'span', + [ 'class' => 'mw-protectedpages-length' ], + Linker::formatRevisionSize( $row->page_len ) + ); + } + break; + + case 'pr_expiry': + $formatted = htmlspecialchars( $this->getLanguage()->formatExpiry( + $value, /* User preference timezone */true ) ); + $title = Title::makeTitleSafe( $row->page_namespace, $row->page_title ); + if ( $this->getUser()->isAllowed( 'protect' ) && $title ) { + $changeProtection = $this->linkRenderer->makeKnownLink( + $title, + $this->msg( 'protect_change' )->text(), + [], + [ 'action' => 'unprotect' ] + ); + $formatted .= ' ' . Html::rawElement( + 'span', + [ 'class' => 'mw-protectedpages-actions' ], + $this->msg( 'parentheses' )->rawParams( $changeProtection )->escaped() + ); + } + break; + + case 'log_user': + // when timestamp is null, this is a old protection row + if ( $row->log_timestamp === null ) { + $formatted = Html::rawElement( + 'span', + [ 'class' => 'mw-protectedpages-unknown' ], + $this->msg( 'protectedpages-unknown-performer' )->escaped() + ); + } else { + $username = UserCache::singleton()->getProp( $value, 'name' ); + if ( LogEventsList::userCanBitfield( + $row->log_deleted, + LogPage::DELETED_USER, + $this->getUser() + ) ) { + if ( $username === false ) { + $formatted = htmlspecialchars( $value ); + } else { + $formatted = Linker::userLink( $value, $username ) + . Linker::userToolLinks( $value, $username ); + } + } else { + $formatted = $this->msg( 'rev-deleted-user' )->escaped(); + } + if ( LogEventsList::isDeleted( $row, LogPage::DELETED_USER ) ) { + $formatted = '<span class="history-deleted">' . $formatted . '</span>'; + } + } + break; + + case 'pr_params': + $params = []; + // Messages: restriction-level-sysop, restriction-level-autoconfirmed + $params[] = $this->msg( 'restriction-level-' . $row->pr_level )->escaped(); + if ( $row->pr_cascade ) { + $params[] = $this->msg( 'protect-summary-cascade' )->escaped(); + } + $formatted = $this->getLanguage()->commaList( $params ); + break; + + case 'log_comment': + // when timestamp is null, this is an old protection row + if ( $row->log_timestamp === null ) { + $formatted = Html::rawElement( + 'span', + [ 'class' => 'mw-protectedpages-unknown' ], + $this->msg( 'protectedpages-unknown-reason' )->escaped() + ); + } else { + if ( LogEventsList::userCanBitfield( + $row->log_deleted, + LogPage::DELETED_COMMENT, + $this->getUser() + ) ) { + $formatted = Linker::formatComment( $value !== null ? $value : '' ); + } else { + $formatted = $this->msg( 'rev-deleted-comment' )->escaped(); + } + if ( LogEventsList::isDeleted( $row, LogPage::DELETED_COMMENT ) ) { + $formatted = '<span class="history-deleted">' . $formatted . '</span>'; + } + } + break; + + default: + throw new MWException( "Unknown field '$field'" ); + } + + return $formatted; + } + + function getQueryInfo() { + $conds = $this->mConds; + $conds[] = 'pr_expiry > ' . $this->mDb->addQuotes( $this->mDb->timestamp() ) . + ' OR pr_expiry IS NULL'; + $conds[] = 'page_id=pr_page'; + $conds[] = 'pr_type=' . $this->mDb->addQuotes( $this->type ); + + if ( $this->sizetype == 'min' ) { + $conds[] = 'page_len>=' . $this->size; + } elseif ( $this->sizetype == 'max' ) { + $conds[] = 'page_len<=' . $this->size; + } + + if ( $this->indefonly ) { + $infinity = $this->mDb->addQuotes( $this->mDb->getInfinity() ); + $conds[] = "pr_expiry = $infinity OR pr_expiry IS NULL"; + } + if ( $this->cascadeonly ) { + $conds[] = 'pr_cascade = 1'; + } + if ( $this->noredirect ) { + $conds[] = 'page_is_redirect = 0'; + } + + if ( $this->level ) { + $conds[] = 'pr_level=' . $this->mDb->addQuotes( $this->level ); + } + if ( !is_null( $this->namespace ) ) { + $conds[] = 'page_namespace=' . $this->mDb->addQuotes( $this->namespace ); + } + + return [ + 'tables' => [ 'page', 'page_restrictions', 'log_search', 'logging' ], + 'fields' => [ + 'pr_id', + 'page_namespace', + 'page_title', + 'page_len', + 'pr_type', + 'pr_level', + 'pr_expiry', + 'pr_cascade', + 'log_timestamp', + 'log_user', + 'log_comment', + 'log_deleted', + ], + 'conds' => $conds, + 'join_conds' => [ + 'log_search' => [ + 'LEFT JOIN', [ + 'ls_field' => 'pr_id', 'ls_value = ' . $this->mDb->buildStringCast( 'pr_id' ) + ] + ], + 'logging' => [ + 'LEFT JOIN', [ + 'ls_log_id = log_id' + ] + ] + ] + ]; + } + + protected function getTableClass() { + return parent::getTableClass() . ' mw-protectedpages'; + } + + function getIndexField() { + return 'pr_id'; + } + + function getDefaultSort() { + return 'pr_id'; + } + + function isFieldSortable( $field ) { + // no index for sorting exists + return false; + } +} diff --git a/includes/specials/pagers/UsersPager.php b/includes/specials/pagers/UsersPager.php index 901be38993..d599599031 100644 --- a/includes/specials/pagers/UsersPager.php +++ b/includes/specials/pagers/UsersPager.php @@ -112,6 +112,9 @@ class UsersPager extends AlphabeticPager { if ( $this->requestedGroup != '' ) { $conds['ug_group'] = $this->requestedGroup; + if ( !$this->getConfig()->get( 'DisableUserGroupExpiry' ) ) { + $conds[] = 'ug_expiry IS NULL OR ug_expiry >= ' . $dbr->addQuotes( $dbr->timestamp() ); + } } if ( $this->requestedUser != '' ) { @@ -161,7 +164,7 @@ class UsersPager extends AlphabeticPager { * @return string */ function formatRow( $row ) { - if ( $row->user_id == 0 ) { # Bug 16487 + if ( $row->user_id == 0 ) { # T18487 return ''; } @@ -177,12 +180,12 @@ class UsersPager extends AlphabeticPager { $lang = $this->getLanguage(); $groups = ''; - $groups_list = self::getGroups( intval( $row->user_id ), $this->userGroupCache ); + $ugms = self::getGroupMemberships( intval( $row->user_id ), $this->userGroupCache ); - if ( !$this->including && count( $groups_list ) > 0 ) { + if ( !$this->including && count( $ugms ) > 0 ) { $list = []; - foreach ( $groups_list as $group ) { - $list[] = self::buildGroupLink( $group, $userName ); + foreach ( $ugms as $ugm ) { + $list[] = $this->buildGroupLink( $ugm, $userName ); } $groups = $lang->commaList( $list ); } @@ -231,15 +234,18 @@ class UsersPager extends AlphabeticPager { $dbr = wfGetDB( DB_REPLICA ); $groupRes = $dbr->select( 'user_groups', - [ 'ug_user', 'ug_group' ], + UserGroupMembership::selectFields(), [ 'ug_user' => $userIds ], __METHOD__ ); $cache = []; $groups = []; foreach ( $groupRes as $row ) { - $cache[intval( $row->ug_user )][] = $row->ug_group; - $groups[$row->ug_group] = true; + $ugm = UserGroupMembership::newFromRow( $row ); + if ( !$ugm->isExpired() ) { + $cache[$row->ug_user][$row->ug_group] = $ugm; + $groups[$row->ug_group] = true; + } } // Give extensions a chance to add things like global user group data @@ -250,7 +256,7 @@ class UsersPager extends AlphabeticPager { // Add page of groups to link batch foreach ( $groups as $group => $unused ) { - $groupPage = User::getGroupPage( $group ); + $groupPage = UserGroupMembership::getGroupPage( $group ); if ( $groupPage ) { $batch->addObj( $groupPage ); } @@ -340,7 +346,7 @@ class UsersPager extends AlphabeticPager { function getAllGroups() { $result = []; foreach ( User::getAllGroups() as $group ) { - $result[$group] = User::getGroupName( $group ); + $result[$group] = UserGroupMembership::getGroupName( $group ); } asort( $result ); @@ -365,36 +371,30 @@ class UsersPager extends AlphabeticPager { } /** - * Get a list of groups the specified user belongs to + * Get an associative array containing groups the specified user belongs to, + * and the relevant UserGroupMembership objects * * @param int $uid User id * @param array|null $cache - * @return array + * @return array (group name => UserGroupMembership object) */ - protected static function getGroups( $uid, $cache = null ) { + protected static function getGroupMemberships( $uid, $cache = null ) { if ( $cache === null ) { $user = User::newFromId( $uid ); - $effectiveGroups = $user->getEffectiveGroups(); + return $user->getGroupMemberships(); } else { - $effectiveGroups = isset( $cache[$uid] ) ? $cache[$uid] : []; + return isset( $cache[$uid] ) ? $cache[$uid] : []; } - $groups = array_diff( $effectiveGroups, User::getImplicitGroups() ); - - return $groups; } /** * Format a link to a group description page * - * @param string $group Group name + * @param string|UserGroupMembership $group Group name or UserGroupMembership object * @param string $username Username * @return string */ - protected static function buildGroupLink( $group, $username ) { - return User::makeGroupLinkHTML( - $group, - User::getGroupMember( $group, $username ) - ); + protected function buildGroupLink( $group, $username ) { + return UserGroupMembership::getLink( $group, $this->getContext(), 'html', $username ); } - } diff --git a/includes/tidy/Balancer.php b/includes/tidy/Balancer.php index 1346e1cdd0..3467b49cae 100644 --- a/includes/tidy/Balancer.php +++ b/includes/tidy/Balancer.php @@ -75,7 +75,7 @@ class BalanceSets { self::HTML_NAMESPACE => [ 'html' => true, 'head' => true, 'body' => true, 'frameset' => true, 'frame' => true, - 'plaintext' => true, 'isindex' => true, + 'plaintext' => true, 'xmp' => true, 'iframe' => true, 'noembed' => true, 'noscript' => true, 'script' => true, 'title' => true @@ -119,9 +119,9 @@ class BalanceSets { 'h2' => true, 'h3' => true, 'h4' => true, 'h5' => true, 'h6' => true, 'head' => true, 'header' => true, 'hgroup' => true, 'hr' => true, 'html' => true, 'iframe' => true, 'img' => true, - 'input' => true, 'isindex' => true, 'li' => true, 'link' => true, + 'input' => true, 'li' => true, 'link' => true, 'listing' => true, 'main' => true, 'marquee' => true, - 'menu' => true, 'menuitem' => true, 'meta' => true, 'nav' => true, + 'menu' => true, 'meta' => true, 'nav' => true, 'noembed' => true, 'noframes' => true, 'noscript' => true, 'object' => true, 'ol' => true, 'p' => true, 'param' => true, 'plaintext' => true, 'pre' => true, 'script' => true, @@ -156,7 +156,8 @@ class BalanceSets { public static $impliedEndTagsSet = [ self::HTML_NAMESPACE => [ - 'dd' => true, 'dt' => true, 'li' => true, 'optgroup' => true, + 'dd' => true, 'dt' => true, 'li' => true, + 'menuitem' => true, 'optgroup' => true, 'option' => true, 'p' => true, 'rb' => true, 'rp' => true, 'rt' => true, 'rtc' => true ] @@ -498,6 +499,16 @@ class BalanceElement { $this->attribs = [ 'class' => "mw-empty-elt" ]; } $blank = false; + } elseif ( + $this->isA( BalanceSets::$extraLinefeedSet ) && + count( $this->children ) > 0 && + substr( $this->children[0], 0, 1 ) == "\n" + ) { + // Double the linefeed after pre/listing/textarea + // according to the (old) HTML5 fragment serialization + // algorithm (see https://github.com/whatwg/html/issues/944) + // to ensure this will round-trip. + array_unshift( $this->children, "\n" ); } $flat = $blank ? '' : "{$this}"; } else { @@ -529,15 +540,6 @@ class BalanceElement { $out .= "{$elt}"; } $out .= "</{$this->localName}>"; - if ( - $this->isA( BalanceSets::$extraLinefeedSet ) && - $out[$len] === "\n" - ) { - // Double the linefeed after pre/listing/textarea - // according to the HTML5 fragment serialization algorithm. - $out = substr( $out, 0, $len + 1 ) . - substr( $out, $len ); - } } else { $out = "<{$this->localName}{$encAttribs} />"; Assert::invariant( @@ -1410,6 +1412,7 @@ class BalanceActiveFormattingElements { private $noahTableStack = [ [] ]; public function __destruct() { + $next = null; for ( $node = $this->head; $node; $node = $next ) { $next = $node->nextAFE; $node->prevAFE = $node->nextAFE = $node->nextNoah = null; @@ -1769,7 +1772,7 @@ class BalanceActiveFormattingElements { * and escaped. * - All null characters are assumed to have been removed. * - The following elements are disallowed: <html>, <head>, <body>, <frameset>, - * <frame>, <plaintext>, <isindex>, <xmp>, <iframe>, + * <frame>, <plaintext>, <xmp>, <iframe>, * <noembed>, <noscript>, <script>, <title>. As a result, * further simplifications can be made: * - `frameset-ok` is not tracked. @@ -1821,7 +1824,7 @@ class Balancer { * Regex borrowed from Tim Starling's "remex-html" project. */ const VALID_COMMENT_REGEX = "~ !-- - ( # 1. Comment match detector + ( # 1. Comment match detector > | -> | # Invalid short close ( # 2. Comment contents (?: @@ -1836,15 +1839,15 @@ class Balancer { ( # 3. Comment close --> | # Normal close --!> | # Comment end bang - ( # 4. Indicate matches requiring EOF - --! | # EOF in comment end bang state - -- | # EOF in comment end state - - | # EOF in comment end dash state - # EOF in comment state + ( # 4. Indicate matches requiring EOF + --! | # EOF in comment end bang state + -- | # EOF in comment end state + - | # EOF in comment end dash state + (?#nothing) # EOF in comment state ) ) ) - ([^<]*) \z # 5. Non-tag text after the comment + ([^<]*) \z # 5. Non-tag text after the comment ~xs"; /** @@ -1864,7 +1867,9 @@ class Balancer { * provide historical compatibility with the old "tidy" * program: <p>-wrapping is done to the children of * <body> and <blockquote> elements, and empty elements - * are removed. + * are removed. The <pre>/<listing>/<textarea> serialization + * is also tweaked to allow lossless round trips. + * (See: https://github.com/whatwg/html/issues/944) * 'allowComments': boolean, defaults to true. * When true, allows HTML comments in the input. * The Sanitizer generally strips all comments, so if you @@ -1996,6 +2001,7 @@ class Balancer { // Some hoops we have to jump through $adjusted = $this->stack->adjustedCurrentNode( $this->fragmentContext ); + // The spec calls this the "tree construction dispatcher". $isForeign = true; if ( $this->stack->length() === 0 || @@ -2036,6 +2042,9 @@ class Balancer { if ( $token === 'text' ) { $this->stack->insertText( $value ); return true; + } elseif ( $token === 'comment' ) { + $this->stack->insertComment( $value ); + return true; } elseif ( $token === 'tag' ) { switch ( $value ) { case 'font': @@ -2467,7 +2476,6 @@ class Balancer { case 'header': case 'hgroup': case 'main': - case 'menu': case 'nav': case 'ol': case 'p': @@ -2480,6 +2488,16 @@ class Balancer { $this->stack->insertHTMLElement( $value, $attribs ); return true; + case 'menu': + if ( $this->stack->inButtonScope( "p" ) ) { + $this->inBodyMode( 'endtag', 'p' ); + } + if ( $this->stack->currentNode->isHtmlNamed( 'menuitem' ) ) { + $this->stack->pop(); + } + $this->stack->insertHTMLElement( $value, $attribs ); + return true; + case 'h1': case 'h2': case 'h3': @@ -2655,7 +2673,6 @@ class Balancer { // (hence we don't need to examine the tag's "type" attribute) return true; - case 'menuitem': case 'param': case 'source': case 'track': @@ -2667,6 +2684,9 @@ class Balancer { if ( $this->stack->inButtonScope( 'p' ) ) { $this->inBodyMode( 'endtag', 'p' ); } + if ( $this->stack->currentNode->isHtmlNamed( 'menuitem' ) ) { + $this->stack->pop(); + } $this->stack->insertHTMLElement( $value, $attribs ); $this->stack->pop(); return true; @@ -2675,8 +2695,6 @@ class Balancer { // warts! return $this->inBodyMode( $token, 'img', $attribs, $selfClose ); - // OMITTED: <isindex> - case 'textarea': $this->stack->insertHTMLElement( $value, $attribs ); $this->ignoreLinefeed = true; @@ -2714,6 +2732,14 @@ class Balancer { $this->stack->insertHTMLElement( $value, $attribs ); return true; + case 'menuitem': + if ( $this->stack->currentNode->isHtmlNamed( 'menuitem' ) ) { + $this->stack->pop(); + } + $this->afe->reconstruct( $this->stack ); + $this->stack->insertHTMLElement( $value, $attribs ); + return true; + case 'rb': case 'rtc': if ( $this->stack->inScope( 'ruby' ) ) { diff --git a/includes/tidy/RemexCompatFormatter.php b/includes/tidy/RemexCompatFormatter.php new file mode 100644 index 0000000000..3dc727bc89 --- /dev/null +++ b/includes/tidy/RemexCompatFormatter.php @@ -0,0 +1,71 @@ +<?php + +namespace MediaWiki\Tidy; + +use RemexHtml\HTMLData; +use RemexHtml\Serializer\HtmlFormatter; +use RemexHtml\Serializer\SerializerNode; +use RemexHtml\Tokenizer\PlainAttributes; + +/** + * @internal + */ +class RemexCompatFormatter extends HtmlFormatter { + private static $markedEmptyElements = [ + 'li' => true, + 'p' => true, + 'tr' => true, + ]; + + public function __construct( $options = [] ) { + parent::__construct( $options ); + $this->attributeEscapes["\xc2\xa0"] = ' '; + unset( $this->attributeEscapes["&"] ); + $this->textEscapes["\xc2\xa0"] = ' '; + unset( $this->textEscapes["&"] ); + } + + public function startDocument( $fragmentNamespace, $fragmentName ) { + return ''; + } + + public function element( SerializerNode $parent, SerializerNode $node, $contents ) { + $data = $node->snData; + if ( $data && $data->isPWrapper ) { + if ( $data->nonblankNodeCount ) { + return "<p>$contents</p>"; + } else { + return $contents; + } + } + + $name = $node->name; + $attrs = $node->attrs; + if ( isset( self::$markedEmptyElements[$name] ) && $attrs->count() === 0 ) { + if ( strspn( $contents, "\t\n\f\r " ) === strlen( $contents ) ) { + return "<{$name} class=\"mw-empty-elt\">$contents</{$name}>"; + } + } + + $s = "<$name"; + foreach ( $attrs->getValues() as $attrName => $attrValue ) { + $encValue = strtr( $attrValue, $this->attributeEscapes ); + $s .= " $attrName=\"$encValue\""; + } + if ( $node->namespace === HTMLData::NS_HTML && isset( $this->voidElements[$name] ) ) { + $s .= ' />'; + return $s; + } + + $s .= '>'; + if ( $node->namespace === HTMLData::NS_HTML + && isset( $contents[0] ) && $contents[0] === "\n" + && isset( $this->prefixLfElements[$name] ) + ) { + $s .= "\n$contents</$name>"; + } else { + $s .= "$contents</$name>"; + } + return $s; + } +} diff --git a/includes/tidy/RemexCompatMunger.php b/includes/tidy/RemexCompatMunger.php new file mode 100644 index 0000000000..d5f5c281c2 --- /dev/null +++ b/includes/tidy/RemexCompatMunger.php @@ -0,0 +1,468 @@ +<?php + +namespace MediaWiki\Tidy; + +use RemexHtml\HTMLData; +use RemexHtml\Serializer\Serializer; +use RemexHtml\Serializer\SerializerNode; +use RemexHtml\Tokenizer\Attributes; +use RemexHtml\Tokenizer\PlainAttributes; +use RemexHtml\TreeBuilder\TreeBuilder; +use RemexHtml\TreeBuilder\TreeHandler; +use RemexHtml\TreeBuilder\Element; + +/** + * @internal + */ +class RemexCompatMunger implements TreeHandler { + private static $onlyInlineElements = [ + "a" => true, + "abbr" => true, + "acronym" => true, + "applet" => true, + "b" => true, + "basefont" => true, + "bdo" => true, + "big" => true, + "br" => true, + "button" => true, + "cite" => true, + "code" => true, + "dfn" => true, + "em" => true, + "font" => true, + "i" => true, + "iframe" => true, + "img" => true, + "input" => true, + "kbd" => true, + "label" => true, + "legend" => true, + "map" => true, + "object" => true, + "param" => true, + "q" => true, + "rb" => true, + "rbc" => true, + "rp" => true, + "rt" => true, + "rtc" => true, + "ruby" => true, + "s" => true, + "samp" => true, + "select" => true, + "small" => true, + "span" => true, + "strike" => true, + "strong" => true, + "sub" => true, + "sup" => true, + "textarea" => true, + "tt" => true, + "u" => true, + "var" => true, + ]; + + private static $formattingElements = [ + 'a' => true, + 'b' => true, + 'big' => true, + 'code' => true, + 'em' => true, + 'font' => true, + 'i' => true, + 'nobr' => true, + 's' => true, + 'small' => true, + 'strike' => true, + 'strong' => true, + 'tt' => true, + 'u' => true, + ]; + + /** + * Constructor + * + * @param Serializer $serializer + */ + public function __construct( Serializer $serializer ) { + $this->serializer = $serializer; + } + + public function startDocument( $fragmentNamespace, $fragmentName ) { + $this->serializer->startDocument( $fragmentNamespace, $fragmentName ); + $root = $this->serializer->getRootNode(); + $root->snData = new RemexMungerData; + $root->snData->needsPWrapping = true; + } + + public function endDocument( $pos ) { + $this->serializer->endDocument( $pos ); + } + + private function getParentForInsert( $preposition, $refElement ) { + if ( $preposition === TreeBuilder::ROOT ) { + return [ $this->serializer->getRootNode(), null ]; + } elseif ( $preposition === TreeBuilder::BEFORE ) { + $refNode = $refElement->userData; + return [ $this->serializer->getParentNode( $refNode ), $refNode ]; + } else { + $refNode = $refElement->userData; + $refData = $refNode->snData; + if ( $refData->currentCloneElement ) { + // Follow a chain of clone links if necessary + $origRefData = $refData; + while ( $refData->currentCloneElement ) { + $refElement = $refData->currentCloneElement; + $refNode = $refElement->userData; + $refData = $refNode->snData; + } + // Cache the end of the chain in the requested element + $origRefData->currentCloneElement = $refElement; + } elseif ( $refData->childPElement ) { + $refElement = $refData->childPElement; + $refNode = $refElement->userData; + } + return [ $refNode, $refNode ]; + } + } + + /** + * Insert a p-wrapper + * + * @param SerializerNode $parent + * @param integer $sourceStart + * @return SerializerNode + */ + private function insertPWrapper( SerializerNode $parent, $sourceStart ) { + $pWrap = new Element( HTMLData::NS_HTML, 'mw:p-wrap', new PlainAttributes ); + $this->serializer->insertElement( TreeBuilder::UNDER, $parent, $pWrap, false, + $sourceStart, 0 ); + $data = new RemexMungerData; + $data->isPWrapper = true; + $data->wrapBaseNode = $parent; + $pWrap->userData->snData = $data; + $parent->snData->childPElement = $pWrap; + return $pWrap->userData; + } + + public function characters( $preposition, $refElement, $text, $start, $length, + $sourceStart, $sourceLength + ) { + $isBlank = strspn( $text, "\t\n\f\r ", $start, $length ) === $length; + + list( $parent, $refNode ) = $this->getParentForInsert( $preposition, $refElement ); + $parentData = $parent->snData; + + if ( $preposition === TreeBuilder::UNDER ) { + if ( $parentData->needsPWrapping && !$isBlank ) { + // Add a p-wrapper for bare text under body/blockquote + $refNode = $this->insertPWrapper( $refNode, $sourceStart ); + $parent = $refNode; + $parentData = $parent->snData; + } elseif ( $parentData->isSplittable && !$parentData->ancestorPNode ) { + // The parent is splittable and in block mode, so split the tag stack + $refNode = $this->splitTagStack( $refNode, true, $sourceStart ); + $parent = $refNode; + $parentData = $parent->snData; + } + } + + if ( !$isBlank ) { + // Non-whitespace characters detected + $parentData->nonblankNodeCount++; + } + $this->serializer->characters( $preposition, $refNode, $text, $start, + $length, $sourceStart, $sourceLength ); + } + + /** + * Insert or reparent an element. Create p-wrappers or split the tag stack + * as necessary. + * + * Consider the following insertion locations. The parent may be: + * + * - A: A body or blockquote (!!needsPWrapping) + * - B: A p-wrapper (!!isPWrapper) + * - C: A descendant of a p-wrapper (!!ancestorPNode) + * - CS: With splittable formatting elements in the stack region up to + * the p-wrapper + * - CU: With one or more unsplittable elements in the stack region up + * to the p-wrapper + * - D: Not a descendant of a p-wrapper (!ancestorNode) + * - DS: With splittable formatting elements in the stack region up to + * the body or blockquote + * - DU: With one or more unsplittable elements in the stack region up + * to the body or blockquote + * + * And consider that we may insert two types of element: + * - b: block + * - i: inline + * + * We handle the insertion as follows: + * + * - A/i: Create a p-wrapper, insert under it + * - A/b: Insert as normal + * - B/i: Insert as normal + * - B/b: Close the p-wrapper, insert under the body/blockquote (wrap + * base) instead) + * - C/i: Insert as normal + * - CS/b: Split the tag stack, insert the block under cloned formatting + * elements which have the wrap base (the parent of the p-wrap) as + * their ultimate parent. + * - CU/b: Disable the p-wrap, by reparenting the currently open child + * of the p-wrap under the p-wrap's parent. Then insert the block as + * normal. + * - D/b: Insert as normal + * - DS/i: Split the tag stack, creating a new p-wrapper as the ultimate + * parent of the formatting elements thus cloned. The parent of the + * p-wrapper is the body or blockquote. + * - DU/i: Insert as normal + * + * FIXME: fostering ($preposition == BEFORE) is mostly done by inserting as + * normal, the full algorithm is not followed. + * + * @param integer $preposition + * @param Element|SerializerNode|null $refElement + * @param Element $element + * @param bool $void + * @param integer $sourceStart + * @param integer $sourceLength + */ + + public function insertElement( $preposition, $refElement, Element $element, $void, + $sourceStart, $sourceLength + ) { + list( $parent, $newRef ) = $this->getParentForInsert( $preposition, $refElement ); + $parentData = $parent->snData; + $parentNs = $parent->namespace; + $parentName = $parent->name; + $elementName = $element->htmlName; + + $inline = isset( self::$onlyInlineElements[$elementName] ); + $under = $preposition === TreeBuilder::UNDER; + + if ( $under && $parentData->isPWrapper && !$inline ) { + // [B/b] The element is non-inline and the parent is a p-wrapper, + // close the parent and insert into its parent instead + $newParent = $this->serializer->getParentNode( $parent ); + $parent = $newParent; + $parentData = $parent->snData; + $parentData->childPElement = null; + $newRef = $refElement->userData; + // FIXME cannot call endTag() since we don't have an Element + } elseif ( $under && $parentData->isSplittable + && (bool)$parentData->ancestorPNode !== $inline + ) { + // [CS/b, DS/i] The parent is splittable and the current element is + // inline in block context, or if the current element is a block + // under a p-wrapper, split the tag stack. + $newRef = $this->splitTagStack( $newRef, $inline, $sourceStart ); + $parent = $newRef; + $parentData = $parent->snData; + } elseif ( $under && $parentData->needsPWrapping && $inline ) { + // [A/i] If the element is inline and we are in body/blockquote, + // we need to create a p-wrapper + $newRef = $this->insertPWrapper( $newRef, $sourceStart ); + $parent = $newRef; + $parentData = $parent->snData; + } elseif ( $parentData->ancestorPNode && !$inline ) { + // [CU/b] If the element is non-inline and (despite attempting to + // split above) there is still an ancestor p-wrap, disable that + // p-wrap + $this->disablePWrapper( $parent, $sourceStart ); + } + // else [A/b, B/i, C/i, D/b, DU/i] insert as normal + + // An element with element children is a non-blank element + $parentData->nonblankNodeCount++; + + // Insert the element downstream and so initialise its userData + $this->serializer->insertElement( $preposition, $newRef, + $element, $void, $sourceStart, $sourceLength ); + + // Initialise snData + if ( !$element->userData->snData ) { + $elementData = $element->userData->snData = new RemexMungerData; + } else { + $elementData = $element->userData->snData; + } + if ( ( $parentData->isPWrapper || $parentData->isSplittable ) + && isset( self::$formattingElements[$elementName] ) + ) { + $elementData->isSplittable = true; + } + if ( $parentData->isPWrapper ) { + $elementData->ancestorPNode = $parent; + } elseif ( $parentData->ancestorPNode ) { + $elementData->ancestorPNode = $parentData->ancestorPNode; + } + if ( $parentData->wrapBaseNode ) { + $elementData->wrapBaseNode = $parentData->wrapBaseNode; + } elseif ( $parentData->needsPWrapping ) { + $elementData->wrapBaseNode = $parent; + } + if ( $elementName === 'body' + || $elementName === 'blockquote' + || $elementName === 'html' + ) { + $elementData->needsPWrapping = true; + } + } + + /** + * Clone nodes in a stack range and return the new parent + * + * @param SerializerNode $parentNode + * @param bool $inline + * @param integer $pos The source position + * @return SerializerNode + */ + private function splitTagStack( SerializerNode $parentNode, $inline, $pos ) { + $parentData = $parentNode->snData; + $wrapBase = $parentData->wrapBaseNode; + $pWrap = $parentData->ancestorPNode; + if ( !$pWrap ) { + $cloneEnd = $wrapBase; + } else { + $cloneEnd = $parentData->ancestorPNode; + } + + $serializer = $this->serializer; + $node = $parentNode; + $root = $serializer->getRootNode(); + $nodes = []; + $removableNodes = []; + $haveContent = false; + while ( $node !== $cloneEnd ) { + $nextParent = $serializer->getParentNode( $node ); + if ( $nextParent === $root ) { + throw new \Exception( 'Did not find end of clone range' ); + } + $nodes[] = $node; + if ( $node->snData->nonblankNodeCount === 0 ) { + $removableNodes[] = $node; + $nextParent->snData->nonblankNodeCount--; + } + $node = $nextParent; + } + + if ( $inline ) { + $pWrap = $this->insertPWrapper( $wrapBase, $pos ); + $node = $pWrap; + } else { + if ( $pWrap ) { + // End the p-wrap which was open, cancel the diversion + $wrapBase->snData->childPElement = null; + } + $pWrap = null; + $node = $wrapBase; + } + + for ( $i = count( $nodes ) - 1; $i >= 0; $i-- ) { + $oldNode = $nodes[$i]; + $oldData = $oldNode->snData; + $nodeParent = $node; + $element = new Element( $oldNode->namespace, $oldNode->name, $oldNode->attrs ); + $this->serializer->insertElement( TreeBuilder::UNDER, $nodeParent, + $element, false, $pos, 0 ); + $oldData->currentCloneElement = $element; + + $newNode = $element->userData; + $newData = $newNode->snData = new RemexMungerData; + if ( $pWrap ) { + $newData->ancestorPNode = $pWrap; + } + $newData->isSplittable = true; + $newData->wrapBaseNode = $wrapBase; + $newData->isPWrapper = $oldData->isPWrapper; + + $nodeParent->snData->nonblankNodeCount++; + + $node = $newNode; + } + foreach ( $removableNodes as $rNode ) { + $fakeElement = new Element( $rNode->namespace, $rNode->name, $rNode->attrs ); + $fakeElement->userData = $rNode; + $this->serializer->removeNode( $fakeElement, $pos ); + } + return $node; + } + + /** + * Find the ancestor of $node which is a child of a p-wrapper, and + * reparent that node so that it is placed after the end of the p-wrapper + */ + private function disablePWrapper( SerializerNode $node, $sourceStart ) { + $nodeData = $node->snData; + $pWrapNode = $nodeData->ancestorPNode; + $newParent = $this->serializer->getParentNode( $pWrapNode ); + if ( $pWrapNode !== $this->serializer->getLastChild( $newParent ) ) { + // Fostering or something? Abort! + return; + } + + $nextParent = $node; + do { + $victim = $nextParent; + $victim->snData->ancestorPNode = null; + $nextParent = $this->serializer->getParentNode( $victim ); + } while ( $nextParent !== $pWrapNode ); + + // Make a fake Element to use in a reparenting operation + $victimElement = new Element( $victim->namespace, $victim->name, $victim->attrs ); + $victimElement->userData = $victim; + + // Reparent + $this->serializer->insertElement( TreeBuilder::UNDER, $newParent, $victimElement, + false, $sourceStart, 0 ); + + // Decrement nonblank node count + $pWrapNode->snData->nonblankNodeCount--; + + // Cancel the diversion so that no more elements are inserted under this p-wrap + $newParent->snData->childPElement = null; + } + + public function endTag( Element $element, $sourceStart, $sourceLength ) { + $this->serializer->endTag( $element, $sourceStart, $sourceLength ); + } + + public function doctype( $name, $public, $system, $quirks, $sourceStart, $sourceLength ) { + $this->serializer->doctype( $name, $public, $system, $quirks, + $sourceStart, $sourceLength ); + } + + public function comment( $preposition, $refElement, $text, $sourceStart, $sourceLength ) { + list( $parent, $refNode ) = $this->getParentForInsert( $preposition, $refElement ); + $this->serializer->comment( $preposition, $refNode, $text, + $sourceStart, $sourceLength ); + } + + public function error( $text, $pos ) { + $this->serializer->error( $text, $pos ); + } + + public function mergeAttributes( Element $element, Attributes $attrs, $sourceStart ) { + $this->serializer->mergeAttributes( $element, $attrs, $sourceStart ); + } + + public function removeNode( Element $element, $sourceStart ) { + $this->serializer->removeNode( $element, $sourceStart ); + } + + public function reparentChildren( Element $element, Element $newParent, $sourceStart ) { + $self = $element->userData; + $children = $self->children; + $self->children = []; + $this->insertElement( TreeBuilder::UNDER, $element, $newParent, false, $sourceStart, 0 ); + $newParentNode = $newParent->userData; + $newParentId = $newParentNode->id; + foreach ( $children as $child ) { + if ( is_object( $child ) ) { + $child->parentId = $newParentId; + } + } + $newParentNode->children = $children; + } +} diff --git a/includes/tidy/RemexDriver.php b/includes/tidy/RemexDriver.php new file mode 100644 index 0000000000..e02af88fd9 --- /dev/null +++ b/includes/tidy/RemexDriver.php @@ -0,0 +1,57 @@ +<?php + +namespace MediaWiki\Tidy; + +use RemexHtml\Serializer\Serializer; +use RemexHtml\Tokenizer\Tokenizer; +use RemexHtml\TreeBuilder\Dispatcher; +use RemexHtml\TreeBuilder\TreeBuilder; +use RemexHtml\TreeBuilder\TreeMutationTracer; + +class RemexDriver extends TidyDriverBase { + private $trace; + private $pwrap; + + public function __construct( array $config ) { + $config += [ + 'treeMutationTrace' => false, + 'pwrap' => true + ]; + $this->trace = $config['treeMutationTrace']; + $this->pwrap = $config['pwrap']; + parent::__construct( $config ); + } + + public function tidy( $text ) { + $formatter = new RemexCompatFormatter; + $serializer = new Serializer( $formatter ); + if ( $this->pwrap ) { + $munger = new RemexCompatMunger( $serializer ); + } else { + $munger = $serializer; + } + if ( $this->trace ) { + $tracer = new TreeMutationTracer( $munger, function ( $msg ) { + wfDebug( "RemexHtml: $msg" ); + } ); + } else { + $tracer = $munger; + } + $treeBuilder = new TreeBuilder( $tracer, [ + 'ignoreErrors' => true, + 'ignoreNulls' => true, + ] ); + $dispatcher = new Dispatcher( $treeBuilder ); + $tokenizer = new Tokenizer( $dispatcher, $text, [ + 'ignoreErrors' => true, + 'ignoreCharRefs' => true, + 'ignoreNulls' => true, + 'skipPreprocess' => true, + ] ); + $tokenizer->execute( [ + 'fragmentNamespace' => \RemexHtml\HTMLData::NS_HTML, + 'fragmentName' => 'body' + ] ); + return $serializer->getResult(); + } +} diff --git a/includes/tidy/RemexMungerData.php b/includes/tidy/RemexMungerData.php new file mode 100644 index 0000000000..d614a38183 --- /dev/null +++ b/includes/tidy/RemexMungerData.php @@ -0,0 +1,78 @@ +<?php + +namespace MediaWiki\Tidy; + +/** + * @internal + */ +class RemexMungerData { + /** + * The Element for the mw:p-wrap which is a child of the current node. If + * this is set, inline insertions into this node will be diverted so that + * they insert into the p-wrap. + * + * @var \RemexHtml\TreeBuilder\Element|null + */ + public $childPElement; + + /** + * This tracks the mw:p-wrap node in the Serializer stack which is an + * ancestor of this node. If there is no mw:p-wrap ancestor, it is null. + * + * @var \RemexHtml\Serializer\SerializerNode|null + */ + public $ancestorPNode; + + /** + * The wrap base node is the body or blockquote node which is the parent + * of active p-wrappers. This is set if there is an ancestor p-wrapper, + * or if a p-wrapper was closed due to a block element being encountered + * inside it. + * + * @var \RemexHtml\Serializer\SerializerNode|null + */ + public $wrapBaseNode; + + /** + * Stack splitting (essentially our idea of AFE reconstruction) can clone + * formatting elements which are split over multiple paragraphs. + * TreeBuilder is not aware of the cloning, and continues to insert into + * the original element. This is set to the newer clone if this node was + * cloned, i.e. if there is an active diversion of the insertion location. + * + * @var \RemexHtml\TreeBuilder\Element|null + */ + public $currentCloneElement; + + /** + * Is the node a p-wrapper, with name mw:p-wrap? + * + * @var bool + */ + public $isPWrapper = false; + + /** + * Is the node splittable, i.e. a formatting element or a node with a + * formatting element ancestor which is under an active or deactivated + * p-wrapper. + * + * @var bool + */ + public $isSplittable = false; + + /** + * This is true if the node is a body or blockquote, which activates + * p-wrapping of child nodes. + */ + public $needsPWrapping = false; + + /** + * The number of child nodes, not counting whitespace-only text nodes or + * comments. + */ + public $nonblankNodeCount = 0; + + public function __set( $name, $value ) { + throw new \Exception( "Cannot set property \"$name\"" ); + } +} diff --git a/includes/tidy/TidyDriverBase.php b/includes/tidy/TidyDriverBase.php index 96ee8c394f..d3f9d48591 100644 --- a/includes/tidy/TidyDriverBase.php +++ b/includes/tidy/TidyDriverBase.php @@ -27,7 +27,7 @@ abstract class TidyDriverBase { * @return bool Whether the HTML is valid */ public function validate( $text, &$errorStr ) { - throw new \MWException( get_class( $this ) . " does not support validate()" ); + throw new \MWException( static::class . ' does not support validate()' ); } /** diff --git a/includes/title/MediaWikiTitleCodec.php b/includes/title/MediaWikiTitleCodec.php index 1bf05d978c..7a71714bca 100644 --- a/includes/title/MediaWikiTitleCodec.php +++ b/includes/title/MediaWikiTitleCodec.php @@ -21,6 +21,7 @@ * @license GPL 2+ * @author Daniel Kinzler */ +use MediaWiki\Interwiki\InterwikiLookup; use MediaWiki\MediaWikiServices; use MediaWiki\Linker\LinkTarget; @@ -51,17 +52,25 @@ class MediaWikiTitleCodec implements TitleFormatter, TitleParser { */ protected $localInterwikis; + /** + * @var InterwikiLookup + */ + protected $interwikiLookup; + /** * @param Language $language The language object to use for localizing namespace names. * @param GenderCache $genderCache The gender cache for generating gendered namespace names * @param string[]|string $localInterwikis + * @param InterwikiLookup|null $interwikiLookup */ public function __construct( Language $language, GenderCache $genderCache, - $localInterwikis = [] + $localInterwikis = [], $interwikiLookup = null ) { $this->language = $language; $this->genderCache = $genderCache; $this->localInterwikis = (array)$localInterwikis; + $this->interwikiLookup = $interwikiLookup ?: + MediaWikiServices::getInstance()->getInterwikiLookup(); } /** @@ -310,7 +319,6 @@ class MediaWikiTitleCodec implements TitleFormatter, TitleParser { if ( preg_match( $prefixRegexp, $dbkey, $m ) ) { $p = $m[1]; $ns = $this->language->getNsIndex( $p ); - $interwikiLookup = MediaWikiServices::getInstance()->getInterwikiLookup(); if ( $ns !== false ) { # Ordinary namespace $dbkey = $m[2]; @@ -320,13 +328,13 @@ class MediaWikiTitleCodec implements TitleFormatter, TitleParser { if ( $this->language->getNsIndex( $x[1] ) ) { # Disallow Talk:File:x type titles... throw new MalformedTitleException( 'title-invalid-talk-namespace', $text ); - } elseif ( $interwikiLookup->isValidInterwiki( $x[1] ) ) { + } 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 ); } } - } elseif ( $interwikiLookup->isValidInterwiki( $p ) ) { + } elseif ( $this->interwikiLookup->isValidInterwiki( $p ) ) { # Interwiki link $dbkey = $m[2]; $parts['interwiki'] = $this->language->lc( $p ); diff --git a/includes/title/NamespaceAwareForeignTitleFactory.php b/includes/title/NamespaceAwareForeignTitleFactory.php index 2d67a2877c..4d24cb850c 100644 --- a/includes/title/NamespaceAwareForeignTitleFactory.php +++ b/includes/title/NamespaceAwareForeignTitleFactory.php @@ -115,15 +115,23 @@ class NamespaceAwareForeignTitleFactory implements ForeignTitleFactory { protected function parseTitleWithNs( $title, $ns ) { $pieces = explode( ':', $title, 2 ); + // Is $title of the form Namespace:Title (true), or just Title (false)? + $titleIncludesNamespace = ( $ns != '0' && count( $pieces ) === 2 ); + if ( isset( $this->foreignNamespaces[$ns] ) ) { $namespaceName = $this->foreignNamespaces[$ns]; } else { - $namespaceName = $ns == '0' ? '' : $pieces[0]; + // If the foreign wiki is misconfigured, XML dumps can contain a page with + // a non-zero namespace ID, but whose title doesn't contain a colon + // (T114115). In those cases, output a made-up namespace name to avoid + // collisions. The ImportTitleFactory might replace this with something + // more appropriate. + $namespaceName = $titleIncludesNamespace ? $pieces[0] : "Ns$ns"; } // We assume that the portion of the page title before the colon is the - // namespace name, except in the case of namespace 0 - if ( $ns != '0' ) { + // namespace name, except in the case of namespace 0. + if ( $titleIncludesNamespace ) { $pageName = $pieces[1]; } else { $pageName = $title; diff --git a/includes/upload/UploadBase.php b/includes/upload/UploadBase.php index 96f8638557..733c4fff05 100644 --- a/includes/upload/UploadBase.php +++ b/includes/upload/UploadBase.php @@ -20,6 +20,7 @@ * @file * @ingroup Upload */ +use MediaWiki\MediaWikiServices; /** * @defgroup Upload Upload related @@ -297,7 +298,7 @@ abstract class UploadBase { * @param string $srcPath The source path * @return string|bool The real path if it was a virtual URL Returns false on failure */ - function getRealPath( $srcPath ) { + public function getRealPath( $srcPath ) { $repo = RepoGroup::singleton()->getLocalRepo(); if ( $repo->isVirtualUrl( $srcPath ) ) { /** @todo Just make uploads work with storage paths UploadFromStash @@ -560,7 +561,7 @@ abstract class UploadBase { * * @param array $entry */ - function zipEntryCallback( $entry ) { + public function zipEntryCallback( $entry ) { $names = [ $entry['name'] ]; // If there is a null character, cut off the name at it, because JDK's @@ -895,7 +896,7 @@ abstract class UploadBase { return $this->mTitle; } - // Windows may be broken with special characters, see bug 1780 + // Windows may be broken with special characters, see T3780 if ( !preg_match( '/^[\x0-\x7f]*$/', $nt->getText() ) && !RepoGroup::singleton()->getLocalRepo()->backendSupportsUnicodePaths() ) { @@ -1209,7 +1210,7 @@ abstract class UploadBase { } // Some browsers will interpret obscure xml encodings as UTF-8, while - // PHP/expat will interpret the given encoding in the xml declaration (bug 47304) + // PHP/expat will interpret the given encoding in the xml declaration (T49304) if ( $extension == 'svg' || strpos( $mime, 'image/svg' ) === 0 ) { if ( self::checkXMLEncodingMissmatch( $file ) ) { return true; @@ -1361,8 +1362,8 @@ abstract class UploadBase { [ 'processing_instruction_handler' => 'UploadBase::checkSvgPICallback' ] ); if ( $check->wellFormed !== true ) { - // Invalid xml (bug 58553) - // But only when non-partial (bug 65724) + // Invalid xml (T60553) + // But only when non-partial (T67724) return $partial ? false : [ 'uploadinvalidxml' ]; } elseif ( $check->filterMatch ) { if ( $this->mSVGNSError ) { @@ -1382,7 +1383,7 @@ abstract class UploadBase { * @return bool (true if the filter identified something bad) */ public static function checkSvgPICallback( $target, $data ) { - // Don't allow external stylesheets (bug 57550) + // Don't allow external stylesheets (T59550) if ( preg_match( '/xml-stylesheet/i', $target ) ) { return [ 'upload-scripted-pi-callback' ]; } @@ -1401,7 +1402,7 @@ abstract class UploadBase { list( $namespace, $strippedElement ) = $this->splitXmlNamespace( $element ); // We specifically don't include: - // http://www.w3.org/1999/xhtml (bug 60771) + // http://www.w3.org/1999/xhtml (T62771) static $validNamespaces = [ '', 'adobe:ns:meta/', @@ -1440,6 +1441,7 @@ abstract class UploadBase { 'http://www.w3.org/1999/02/22-rdf-syntax-ns#', 'http://www.w3.org/2000/svg', 'http://www.w3.org/tr/rec-rdf-syntax/', + 'http://www.w3.org/2000/01/rdf-schema#', ]; // Inkscape mangles namespace definitions created by Adobe Illustrator. @@ -2082,7 +2084,7 @@ abstract class UploadBase { public static function getSessionStatus( User $user, $statusKey ) { $key = wfMemcKey( 'uploadstatus', $user->getId() ?: md5( $user->getName() ), $statusKey ); - return ObjectCache::getMainStashInstance()->get( $key ); + return MediaWikiServices::getInstance()->getMainObjectStash()->get( $key ); } /** @@ -2098,7 +2100,7 @@ abstract class UploadBase { public static function setSessionStatus( User $user, $statusKey, $value ) { $key = wfMemcKey( 'uploadstatus', $user->getId() ?: md5( $user->getName() ), $statusKey ); - $cache = ObjectCache::getMainStashInstance(); + $cache = MediaWikiServices::getInstance()->getMainObjectStash(); if ( $value === false ) { $cache->delete( $key ); } else { diff --git a/includes/user/PasswordReset.php b/includes/user/PasswordReset.php index c1aef22ba1..4ee256c495 100644 --- a/includes/user/PasswordReset.php +++ b/includes/user/PasswordReset.php @@ -176,7 +176,7 @@ class PasswordReset implements LoggerAwareInterface { $firstUser = $users[0]; if ( !$firstUser instanceof User || !$firstUser->getId() ) { - // Don't parse username as wikitext (bug 65501) + // Don't parse username as wikitext (T67501) return StatusValue::newFatal( wfMessage( 'nosuchuser', wfEscapeWikiText( $username ) ) ); } @@ -192,7 +192,7 @@ class PasswordReset implements LoggerAwareInterface { wfEscapeWikiText( $firstUser->getName() ) ) ); } - // We need to have a valid IP address for the hook, but per bug 18347, we should + // We need to have a valid IP address for the hook, but per T20347, we should // send the user's name if they're logged in. $ip = $performingUser->getRequest()->getIP(); if ( !$ip ) { diff --git a/includes/user/User.php b/includes/user/User.php index fed64c2a68..0acdb559e7 100644 --- a/includes/user/User.php +++ b/includes/user/User.php @@ -66,7 +66,7 @@ class User implements IDBAccessObject { /** * @const int Serialized record version. */ - const VERSION = 10; + const VERSION = 11; /** * Exclude user options that are set to their default value. @@ -104,7 +104,7 @@ class User implements IDBAccessObject { 'mRegistration', 'mEditCount', // user_groups table - 'mGroups', + 'mGroupMemberships', // user_properties table 'mOptionOverrides', ]; @@ -225,8 +225,13 @@ class User implements IDBAccessObject { protected $mRegistration; /** @var int */ protected $mEditCount; - /** @var array */ - public $mGroups; + /** + * @var array No longer used since 1.29; use User::getGroups() instead + * @deprecated since 1.29 + */ + private $mGroups; + /** @var array Associative array of (group name => UserGroupMembership object) */ + protected $mGroupMemberships; /** @var array */ protected $mOptionOverrides; // @} @@ -283,9 +288,7 @@ class User implements IDBAccessObject { /** @var array */ public $mOptions; - /** - * @var WebRequest - */ + /** @var WebRequest */ private $mRequest; /** @var Block */ @@ -468,6 +471,17 @@ class User implements IDBAccessObject { return $cache->makeGlobalKey( 'user', 'id', wfWikiID(), $this->mId ); } + /** + * @param WANObjectCache $cache + * @return string[] + * @since 1.28 + */ + public function getMutableCacheKeys( WANObjectCache $cache ) { + $id = $this->getId(); + + return $id ? [ $this->getCacheKey( $cache ) ] : []; + } + /** * Load user data from shared cache, given mId has already been set. * @@ -935,7 +949,7 @@ class User implements IDBAccessObject { // Ensure that the username isn't longer than 235 bytes, so that // (at least for the builtin skins) user javascript and css files - // will work. (bug 23080) + // will work. (T25080) if ( strlen( $name ) > 235 ) { wfDebugLog( 'username', __METHOD__ . ": '$name' invalid due to length" ); @@ -1060,7 +1074,7 @@ class User implements IDBAccessObject { } // Clean up name according to title rules, - // but only when validation is requested (bug 12654) + // but only when validation is requested (T14654) $t = ( $validate !== false ) ? Title::newFromText( $name, NS_USER ) : Title::makeTitle( NS_USER, $name ); // Check for invalid titles @@ -1138,7 +1152,7 @@ class User implements IDBAccessObject { $this->mEmailToken = ''; $this->mEmailTokenExpires = null; $this->mRegistration = wfTimestamp( TS_MW ); - $this->mGroups = []; + $this->mGroupMemberships = []; Hooks::run( 'UserLoadDefaults', [ $this, $name ] ); } @@ -1250,7 +1264,7 @@ class User implements IDBAccessObject { if ( $s !== false ) { // Initialise user table data $this->loadFromRow( $s ); - $this->mGroups = null; // deferred + $this->mGroupMemberships = null; // deferred $this->getEditCount(); // revalidation for nulls return true; } else { @@ -1267,13 +1281,16 @@ class User implements IDBAccessObject { * @param stdClass $row Row from the user table to load. * @param array $data Further user data to load into the object * - * user_groups Array with groups out of the user_groups table - * user_properties Array with properties out of the user_properties table + * user_groups Array of arrays or stdClass result rows out of the user_groups + * table. Previously you were supposed to pass an array of strings + * here, but we also need expiry info nowadays, so an array of + * strings is ignored. + * user_properties Array with properties out of the user_properties table */ protected function loadFromRow( $row, $data = null ) { $all = true; - $this->mGroups = null; // deferred + $this->mGroupMemberships = null; // deferred if ( isset( $row->user_name ) ) { $this->mName = $row->user_name; @@ -1342,7 +1359,18 @@ class User implements IDBAccessObject { if ( is_array( $data ) ) { if ( isset( $data['user_groups'] ) && is_array( $data['user_groups'] ) ) { - $this->mGroups = $data['user_groups']; + if ( !count( $data['user_groups'] ) ) { + $this->mGroupMemberships = []; + } else { + $firstGroup = reset( $data['user_groups'] ); + if ( is_array( $firstGroup ) || is_object( $firstGroup ) ) { + $this->mGroupMemberships = []; + foreach ( $data['user_groups'] as $row ) { + $ugm = UserGroupMembership::newFromRow( (object)$row ); + $this->mGroupMemberships[$ugm->getGroup()] = $ugm; + } + } + } } if ( isset( $data['user_properties'] ) && is_array( $data['user_properties'] ) ) { $this->loadOptions( $data['user_properties'] ); @@ -1366,18 +1394,12 @@ class User implements IDBAccessObject { * Load the groups from the database if they aren't already loaded. */ private function loadGroups() { - if ( is_null( $this->mGroups ) ) { + if ( is_null( $this->mGroupMemberships ) ) { $db = ( $this->queryFlagsUsed & self::READ_LATEST ) ? wfGetDB( DB_MASTER ) : wfGetDB( DB_REPLICA ); - $res = $db->select( 'user_groups', - [ 'ug_group' ], - [ 'ug_user' => $this->mId ], - __METHOD__ ); - $this->mGroups = []; - foreach ( $res as $row ) { - $this->mGroups[] = $row->ug_group; - } + $this->mGroupMemberships = UserGroupMembership::getMembershipsForUser( + $this->mId, $db ); } } @@ -1509,7 +1531,7 @@ class User implements IDBAccessObject { $this->mRights = null; $this->mEffectiveGroups = null; $this->mImplicitGroups = null; - $this->mGroups = null; + $this->mGroupMemberships = null; $this->mOptions = null; $this->mOptionsLoaded = false; $this->mEditCount = null; @@ -1615,29 +1637,9 @@ class User implements IDBAccessObject { // User/IP blocking $block = Block::newFromTarget( $this, $ip, !$bFromSlave ); - // If no block has been found, check for a cookie indicating that the user is blocked. - $blockCookieVal = (int)$this->getRequest()->getCookie( 'BlockID' ); - if ( !$block instanceof Block && $blockCookieVal > 0 ) { - // Load the Block from the ID in the cookie. - $tmpBlock = Block::newFromID( $blockCookieVal ); - if ( $tmpBlock instanceof Block ) { - // Check the validity of the block. - $blockIsValid = $tmpBlock->getType() == Block::TYPE_USER - && !$tmpBlock->isExpired() - && $tmpBlock->isAutoblocking(); - $config = RequestContext::getMain()->getConfig(); - $useBlockCookie = ( $config->get( 'CookieSetOnAutoblock' ) === true ); - if ( $blockIsValid && $useBlockCookie ) { - // Use the block. - $block = $tmpBlock; - $this->blockTrigger = 'cookie-block'; - } else { - // If the block is not valid, clear the block cookie (but don't delete it, - // because it needs to be cleared from LocalStorage as well and an empty string - // value is checked for in the mediawiki.user.blockcookie module). - $tmpBlock->setCookie( $this->getRequest()->response(), true ); - } - } + // Cookie blocking + if ( !$block instanceof Block ) { + $block = $this->getBlockFromCookieValue( $this->getRequest()->getCookie( 'BlockID' ) ); } // Proxy blocking @@ -1662,7 +1664,7 @@ class User implements IDBAccessObject { } } - // (bug 23343) Apply IP blocks to the contents of XFF headers, if enabled + // (T25343) Apply IP blocks to the contents of XFF headers, if enabled if ( !$block instanceof Block && $wgApplyIpBlocksToXff && $ip !== null @@ -1716,6 +1718,43 @@ class User implements IDBAccessObject { Hooks::run( 'GetBlockedStatus', [ &$user ] ); } + /** + * Try to load a Block from an ID given in a cookie value. + * @param string|null $blockCookieVal The cookie value to check. + * @return Block|bool The Block object, or false if none could be loaded. + */ + protected function getBlockFromCookieValue( $blockCookieVal ) { + // Make sure there's something to check. The cookie value must start with a number. + if ( strlen( $blockCookieVal ) < 1 || !is_numeric( substr( $blockCookieVal, 0, 1 ) ) ) { + return false; + } + // Load the Block from the ID in the cookie. + $blockCookieId = Block::getIdFromCookieValue( $blockCookieVal ); + if ( $blockCookieId !== null ) { + // An ID was found in the cookie. + $tmpBlock = Block::newFromID( $blockCookieId ); + if ( $tmpBlock instanceof Block ) { + // Check the validity of the block. + $blockIsValid = $tmpBlock->getType() == Block::TYPE_USER + && !$tmpBlock->isExpired() + && $tmpBlock->isAutoblocking(); + $config = RequestContext::getMain()->getConfig(); + $useBlockCookie = ( $config->get( 'CookieSetOnAutoblock' ) === true ); + if ( $blockIsValid && $useBlockCookie ) { + // Use the block. + $this->blockTrigger = 'cookie-block'; + return $tmpBlock; + } else { + // If the block is not valid, clear the block cookie (but don't delete it, + // because it needs to be cleared from LocalStorage as well and an empty string + // value is checked for in the mediawiki.user.blockcookie module). + $tmpBlock->setCookie( $this->getRequest()->response(), true ); + } + } + } + return false; + } + /** * Whether the given IP is in a DNS blacklist. * @@ -1748,7 +1787,7 @@ class User implements IDBAccessObject { $found = false; // @todo FIXME: IPv6 ??? (https://bugs.php.net/bug.php?id=33170) if ( IP::isIPv4( $ip ) ) { - // Reverse IP, bug 21255 + // Reverse IP, T23255 $ipReversed = implode( '.', array_reverse( explode( '.', $ip ) ) ); foreach ( (array)$bases as $base ) { @@ -1823,7 +1862,7 @@ class User implements IDBAccessObject { */ public function isPingLimitable() { global $wgRateLimitsExcludedIPs; - if ( in_array( $this->getRequest()->getIP(), $wgRateLimitsExcludedIPs ) ) { + if ( IP::isInRanges( $this->getRequest()->getIP(), $wgRateLimitsExcludedIPs ) ) { // No other good way currently to disable rate limits // for specific IPs. :P // But this is a crappy hack and should die. @@ -3222,7 +3261,20 @@ class User implements IDBAccessObject { public function getGroups() { $this->load(); $this->loadGroups(); - return $this->mGroups; + return array_keys( $this->mGroupMemberships ); + } + + /** + * Get the list of explicit group memberships this user has, stored as + * UserGroupMembership objects. Implicit groups are not included. + * + * @return array Associative array of (group name as string => UserGroupMembership object) + * @since 1.29 + */ + public function getGroupMemberships() { + $this->load(); + $this->loadGroups(); + return $this->mGroupMemberships; } /** @@ -3333,34 +3385,35 @@ class User implements IDBAccessObject { } /** - * Add the user to the given group. - * This takes immediate effect. + * Add the user to the given group. This takes immediate effect. + * If the user is already in the group, the expiry time will be updated to the new + * expiry time. (If $expiry is omitted or null, the membership will be altered to + * never expire.) + * * @param string $group Name of the group to add + * @param string $expiry Optional expiry timestamp in any format acceptable to + * wfTimestamp(), or null if the group assignment should not expire * @return bool */ - public function addGroup( $group ) { + public function addGroup( $group, $expiry = null ) { $this->load(); + $this->loadGroups(); - if ( !Hooks::run( 'UserAddGroup', [ $this, &$group ] ) ) { + if ( $expiry ) { + $expiry = wfTimestamp( TS_MW, $expiry ); + } + + if ( !Hooks::run( 'UserAddGroup', [ $this, &$group, &$expiry ] ) ) { return false; } - $dbw = wfGetDB( DB_MASTER ); - if ( $this->getId() ) { - $dbw->insert( 'user_groups', - [ - 'ug_user' => $this->getId(), - 'ug_group' => $group, - ], - __METHOD__, - [ 'IGNORE' ] ); + // create the new UserGroupMembership and put it in the DB + $ugm = new UserGroupMembership( $this->mId, $group, $expiry ); + if ( !$ugm->insert( true ) ) { + return false; } - $this->loadGroups(); - $this->mGroups[] = $group; - // In case loadGroups was not called before, we now have the right twice. - // Get rid of the duplicate. - $this->mGroups = array_unique( $this->mGroups ); + $this->mGroupMemberships[$group] = $ugm; // Refresh the groups caches, and clear the rights cache so it will be // refreshed on the next call to $this->getRights(). @@ -3380,29 +3433,19 @@ class User implements IDBAccessObject { */ public function removeGroup( $group ) { $this->load(); + if ( !Hooks::run( 'UserRemoveGroup', [ $this, &$group ] ) ) { return false; } - $dbw = wfGetDB( DB_MASTER ); - $dbw->delete( 'user_groups', - [ - 'ug_user' => $this->getId(), - 'ug_group' => $group, - ], __METHOD__ - ); - // Remember that the user was in this group - $dbw->insert( 'user_former_groups', - [ - 'ufg_user' => $this->getId(), - 'ufg_group' => $group, - ], - __METHOD__, - [ 'IGNORE' ] - ); + $ugm = UserGroupMembership::getMembership( $this->mId, $group ); + // delete the membership entry + if ( !$ugm || !$ugm->delete() ) { + return false; + } $this->loadGroups(); - $this->mGroups = array_diff( $this->mGroups, [ $group ] ); + unset( $this->mGroupMemberships[$group] ); // Refresh the groups caches, and clear the rights cache so it will be // refreshed on the next call to $this->getRights(). @@ -3727,6 +3770,42 @@ class User implements IDBAccessObject { // user_talk page; it's cleared one page view later in WikiPage::doViewUpdates(). } + /** + * Compute experienced level based on edit count and registration date. + * + * @return string 'newcomer', 'learner', or 'experienced' + */ + public function getExperienceLevel() { + global $wgLearnerEdits, + $wgExperiencedUserEdits, + $wgLearnerMemberSince, + $wgExperiencedUserMemberSince; + + if ( $this->isAnon() ) { + return false; + } + + $editCount = $this->getEditCount(); + $registration = $this->getRegistration(); + $now = time(); + $learnerRegistration = wfTimestamp( TS_MW, $now - $wgLearnerMemberSince * 86400 ); + $experiencedRegistration = wfTimestamp( TS_MW, $now - $wgExperiencedUserMemberSince * 86400 ); + + if ( + $editCount < $wgLearnerEdits || + $registration > $learnerRegistration + ) { + return 'newcomer'; + } elseif ( + $editCount > $wgExperiencedUserEdits && + $registration <= $experiencedRegistration + ) { + return 'experienced'; + } else { + return 'learner'; + } + } + /** * Set a cookie on the user's client. Wrapper for * WebResponse::setCookie @@ -4046,7 +4125,7 @@ class User implements IDBAccessObject { * } * // do something with $user... * - * However, this was vulnerable to a race condition (bug 16020). By + * However, this was vulnerable to a race condition (T18020). By * initialising the user object if the user exists, we aim to support this * calling sequence as far as possible. * @@ -4159,7 +4238,7 @@ class User implements IDBAccessObject { return $this->mBlock; } - # bug 13611: if the IP address the user is trying to create an account from is + # T15611: if the IP address the user is trying to create an account from is # blocked with createaccount disabled, prevent new account creation there even # when the user is logged in if ( $this->mBlockedFromCreateAccount === false && !$this->isAllowed( 'ipblock-exempt' ) ) { @@ -4452,7 +4531,7 @@ class User implements IDBAccessObject { * @note Since these URLs get dropped directly into emails, using the * short English names avoids insanely long URL-encoded links, which * also sometimes can get corrupted in some browsers/mailers - * (bug 6957 with Gmail and Internet Explorer). + * (T8957 with Gmail and Internet Explorer). * * @param string $page Special page * @param string $token Token @@ -4736,25 +4815,27 @@ class User implements IDBAccessObject { /** * Get the localized descriptive name for a group, if it exists + * @deprecated since 1.29 Use UserGroupMembership::getGroupName instead * * @param string $group Internal group name * @return string Localized descriptive group name */ public static function getGroupName( $group ) { - $msg = wfMessage( "group-$group" ); - return $msg->isBlank() ? $group : $msg->text(); + wfDeprecated( __METHOD__, '1.29' ); + return UserGroupMembership::getGroupName( $group ); } /** * Get the localized descriptive name for a member of a group, if it exists + * @deprecated since 1.29 Use UserGroupMembership::getGroupMemberName instead * * @param string $group Internal group name * @param string $username Username for gender (since 1.19) * @return string Localized name for group member */ public static function getGroupMember( $group, $username = '#' ) { - $msg = wfMessage( "group-$group-member", $username ); - return $msg->isBlank() ? $group : $msg->text(); + wfDeprecated( __METHOD__, '1.29' ); + return UserGroupMembership::getGroupMemberName( $group, $username ); } /** @@ -4804,34 +4885,33 @@ class User implements IDBAccessObject { /** * Get the title of a page describing a particular group + * @deprecated since 1.29 Use UserGroupMembership::getGroupPage instead * * @param string $group Internal group name * @return Title|bool Title of the page if it exists, false otherwise */ public static function getGroupPage( $group ) { - $msg = wfMessage( 'grouppage-' . $group )->inContentLanguage(); - if ( $msg->exists() ) { - $title = Title::newFromText( $msg->text() ); - if ( is_object( $title ) ) { - return $title; - } - } - return false; + wfDeprecated( __METHOD__, '1.29' ); + return UserGroupMembership::getGroupPage( $group ); } /** * Create a link to the group in HTML, if available; * else return the group name. + * @deprecated since 1.29 Use UserGroupMembership::getLink instead, or + * make the link yourself if you need custom text * * @param string $group Internal name of the group * @param string $text The text of the link * @return string HTML link to the group */ public static function makeGroupLinkHTML( $group, $text = '' ) { + wfDeprecated( __METHOD__, '1.29' ); + if ( $text == '' ) { - $text = self::getGroupName( $group ); + $text = UserGroupMembership::getGroupName( $group ); } - $title = self::getGroupPage( $group ); + $title = UserGroupMembership::getGroupPage( $group ); if ( $title ) { return Linker::link( $title, htmlspecialchars( $text ) ); } else { @@ -4842,16 +4922,20 @@ class User implements IDBAccessObject { /** * Create a link to the group in Wikitext, if available; * else return the group name. + * @deprecated since 1.29 Use UserGroupMembership::getLink instead, or + * make the link yourself if you need custom text * * @param string $group Internal name of the group * @param string $text The text of the link * @return string Wikilink to the group */ public static function makeGroupLinkWiki( $group, $text = '' ) { + wfDeprecated( __METHOD__, '1.29' ); + if ( $text == '' ) { - $text = self::getGroupName( $group ); + $text = UserGroupMembership::getGroupName( $group ); } - $title = self::getGroupPage( $group ); + $title = UserGroupMembership::getGroupPage( $group ); if ( $title ) { $page = $title->getFullText(); return "[[$page|$text]]"; @@ -5091,54 +5175,6 @@ class User implements IDBAccessObject { return $msg->isDisabled() ? $grant : $msg->text(); } - /** - * Make a new-style password hash - * - * @param string $password Plain-text password - * @param bool|string $salt Optional salt, may be random or the user ID. - * If unspecified or false, will generate one automatically - * @return string Password hash - * @deprecated since 1.24, use Password class - */ - public static function crypt( $password, $salt = false ) { - wfDeprecated( __METHOD__, '1.24' ); - $passwordFactory = new PasswordFactory(); - $passwordFactory->init( RequestContext::getMain()->getConfig() ); - $hash = $passwordFactory->newFromPlaintext( $password ); - return $hash->toString(); - } - - /** - * Compare a password hash with a plain-text password. Requires the user - * ID if there's a chance that the hash is an old-style hash. - * - * @param string $hash Password hash - * @param string $password Plain-text password to compare - * @param string|bool $userId User ID for old-style password salt - * - * @return bool - * @deprecated since 1.24, use Password class - */ - public static function comparePasswords( $hash, $password, $userId = false ) { - wfDeprecated( __METHOD__, '1.24' ); - - // Check for *really* old password hashes that don't even have a type - // The old hash format was just an md5 hex hash, with no type information - if ( preg_match( '/^[0-9a-f]{32}$/', $hash ) ) { - global $wgPasswordSalt; - if ( $wgPasswordSalt ) { - $password = ":B:{$userId}:{$hash}"; - } else { - $password = ":A:{$hash}"; - } - } - - $passwordFactory = new PasswordFactory(); - $passwordFactory->init( RequestContext::getMain()->getConfig() ); - $hash = $passwordFactory->newFromCiphertext( $hash ); - return $hash->equals( $password ); - } - /** * Add a newuser log entry for this user. * Before 1.19 the return value was always true. @@ -5355,7 +5391,7 @@ class User implements IDBAccessObject { # Note that the pattern requirement will always be satisfied if the # input is empty, so we need required in all cases. - # @todo FIXME: Bug 23769: This needs to not claim the password is required + # @todo FIXME: T25769: This needs to not claim the password is required # if e-mail confirmation is being used. Since HTML5 input validation # is b0rked anyway in some browsers, just return nothing. When it's # re-enabled, fix this code to not output required for e-mail @@ -5411,10 +5447,10 @@ class User implements IDBAccessObject { static function newFatalPermissionDeniedStatus( $permission ) { global $wgLang; - $groups = array_map( - [ 'User', 'makeGroupLinkWiki' ], - User::getGroupsWithPermission( $permission ) - ); + $groups = []; + foreach ( User::getGroupsWithPermission( $permission ) as $group ) { + $groups[] = UserGroupMembership::getLink( $group, RequestContext::getMain(), 'wiki' ); + } if ( $groups ) { return Status::newFatal( 'badaccess-groups', $wgLang->commaList( $groups ), count( $groups ) ); diff --git a/includes/user/UserArray.php b/includes/user/UserArray.php index dddc850bd0..ab6683b297 100644 --- a/includes/user/UserArray.php +++ b/includes/user/UserArray.php @@ -20,6 +20,8 @@ * @file */ +use Wikimedia\Rdbms\ResultWrapper; + abstract class UserArray implements Iterator { /** * @param ResultWrapper $res @@ -38,7 +40,7 @@ abstract class UserArray implements Iterator { /** * @param array $ids - * @return UserArrayFromResult + * @return UserArrayFromResult|ArrayIterator */ static function newFromIDs( $ids ) { $ids = array_map( 'intval', (array)$ids ); // paranoia @@ -59,7 +61,7 @@ abstract class UserArray implements Iterator { /** * @since 1.25 * @param array $names - * @return UserArrayFromResult + * @return UserArrayFromResult|ArrayIterator */ static function newFromNames( $names ) { $names = array_map( 'strval', (array)$names ); // paranoia diff --git a/includes/user/UserArrayFromResult.php b/includes/user/UserArrayFromResult.php index fb533d08b4..527df7fa44 100644 --- a/includes/user/UserArrayFromResult.php +++ b/includes/user/UserArrayFromResult.php @@ -20,6 +20,8 @@ * @file */ +use Wikimedia\Rdbms\ResultWrapper; + class UserArrayFromResult extends UserArray implements Countable { /** @var ResultWrapper */ public $res; @@ -27,7 +29,7 @@ class UserArrayFromResult extends UserArray implements Countable { /** @var int */ public $key; - /** @var bool|stdClass */ + /** @var bool|User */ public $current; /** diff --git a/includes/user/UserGroupMembership.php b/includes/user/UserGroupMembership.php new file mode 100644 index 0000000000..59ca31cbb2 --- /dev/null +++ b/includes/user/UserGroupMembership.php @@ -0,0 +1,475 @@ +<?php +/** + * Represents the membership of a user to a user group. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * http://www.gnu.org/copyleft/gpl.html + * + * @file + */ + +/** + * Represents a "user group membership" -- a specific instance of a user belonging + * to a group. For example, the fact that user Mary belongs to the sysop group is a + * user group membership. + * + * The class encapsulates rows in the user_groups table. The logic is low-level and + * doesn't run any hooks. Often, you will want to call User::addGroup() or + * User::removeGroup() instead. + * + * @since 1.29 + */ +class UserGroupMembership { + /** @var int The ID of the user who belongs to the group */ + private $userId; + + /** @var string */ + private $group; + + /** @var string|null Timestamp of expiry in TS_MW format, or null if no expiry */ + private $expiry; + + /** + * @param int $userId The ID of the user who belongs to the group + * @param string $group The internal group name + * @param string|null $expiry Timestamp of expiry in TS_MW format, or null if no expiry + */ + public function __construct( $userId = 0, $group = null, $expiry = null ) { + global $wgDisableUserGroupExpiry; + if ( $wgDisableUserGroupExpiry ) { + $expiry = null; + } + + $this->userId = (int)$userId; + $this->group = $group; // TODO throw on invalid group? + $this->expiry = $expiry ?: null; + } + + /** + * @return int + */ + public function getUserId() { + return $this->userId; + } + + /** + * @return string + */ + public function getGroup() { + return $this->group; + } + + /** + * @return string|null Timestamp of expiry in TS_MW format, or null if no expiry + */ + public function getExpiry() { + global $wgDisableUserGroupExpiry; + if ( $wgDisableUserGroupExpiry ) { + return null; + } + + return $this->expiry; + } + + protected function initFromRow( $row ) { + global $wgDisableUserGroupExpiry; + + $this->userId = (int)$row->ug_user; + $this->group = $row->ug_group; + if ( $wgDisableUserGroupExpiry ) { + $this->expiry = null; + } else { + $this->expiry = $row->ug_expiry === null ? + null : + wfTimestamp( TS_MW, $row->ug_expiry ); + } + } + + /** + * Creates a new UserGroupMembership object from a database row. + * + * @param stdClass $row The row from the user_groups table + * @return UserGroupMembership + */ + public static function newFromRow( $row ) { + $ugm = new self; + $ugm->initFromRow( $row ); + return $ugm; + } + + /** + * Returns the list of user_groups fields that should be selected to create + * a new user group membership. + * @return array + */ + public static function selectFields() { + global $wgDisableUserGroupExpiry; + if ( $wgDisableUserGroupExpiry ) { + return [ + 'ug_user', + 'ug_group', + ]; + } else { + return [ + 'ug_user', + 'ug_group', + 'ug_expiry', + ]; + } + } + + /** + * Delete the row from the user_groups table. + * + * @throws MWException + * @param IDatabase|null $dbw Optional master database connection to use + * @return bool Whether or not anything was deleted + */ + public function delete( IDatabase $dbw = null ) { + global $wgDisableUserGroupExpiry; + if ( wfReadOnly() ) { + return false; + } + + if ( $dbw === null ) { + $dbw = wfGetDB( DB_MASTER ); + } + + if ( $wgDisableUserGroupExpiry ) { + $dbw->delete( 'user_groups', $this->getDatabaseArray( $dbw ), __METHOD__ ); + } else { + $dbw->delete( + 'user_groups', + [ 'ug_user' => $this->userId, 'ug_group' => $this->group ], + __METHOD__ ); + } + if ( !$dbw->affectedRows() ) { + return false; + } + + // Remember that the user was in this group + $dbw->insert( + 'user_former_groups', + [ 'ufg_user' => $this->userId, 'ufg_group' => $this->group ], + __METHOD__, + [ 'IGNORE' ] ); + + return true; + } + + /** + * Insert a user right membership into the database. When $allowUpdate is false, + * the function fails if there is a conflicting membership entry (same user and + * group) already in the table. + * + * @throws MWException + * @param bool $allowUpdate Whether to perform "upsert" instead of INSERT + * @param IDatabase|null $dbw If you have one available + * @return bool Whether or not anything was inserted + */ + public function insert( $allowUpdate = false, IDatabase $dbw = null ) { + global $wgDisableUserGroupExpiry; + if ( $dbw === null ) { + $dbw = wfGetDB( DB_MASTER ); + } + + // Purge old, expired memberships from the DB + self::purgeExpired( $dbw ); + + // Check that the values make sense + if ( $this->group === null ) { + throw new UnexpectedValueException( + 'Don\'t try inserting an uninitialized UserGroupMembership object' ); + } elseif ( $this->userId <= 0 ) { + throw new UnexpectedValueException( + 'UserGroupMembership::insert() needs a positive user ID. ' . + 'Did you forget to add your User object to the database before calling addGroup()?' ); + } + + $row = $this->getDatabaseArray( $dbw ); + $dbw->insert( 'user_groups', $row, __METHOD__, [ 'IGNORE' ] ); + $affected = $dbw->affectedRows(); + + // Don't collide with expired user group memberships + // Do this after trying to insert, in order to avoid locking + if ( !$wgDisableUserGroupExpiry && !$affected ) { + $conds = [ + 'ug_user' => $row['ug_user'], + 'ug_group' => $row['ug_group'], + ]; + // if we're unconditionally updating, check that the expiry is not already the + // same as what we are trying to update it to; otherwise, only update if + // the expiry date is in the past + if ( $allowUpdate ) { + if ( $this->expiry ) { + $conds[] = 'ug_expiry IS NULL OR ug_expiry != ' . + $dbw->addQuotes( $dbw->timestamp( $this->expiry ) ); + } else { + $conds[] = 'ug_expiry IS NOT NULL'; + } + } else { + $conds[] = 'ug_expiry < ' . $dbw->addQuotes( $dbw->timestamp() ); + } + + $row = $dbw->selectRow( 'user_groups', $this::selectFields(), $conds, __METHOD__ ); + if ( $row ) { + $dbw->update( + 'user_groups', + [ 'ug_expiry' => $this->expiry ? $dbw->timestamp( $this->expiry ) : null ], + [ 'ug_user' => $row->ug_user, 'ug_group' => $row->ug_group ], + __METHOD__ ); + $affected = $dbw->affectedRows(); + } + } + + return $affected > 0; + } + + /** + * Get an array suitable for passing to $dbw->insert() or $dbw->update() + * @param IDatabase $db + * @return array + */ + protected function getDatabaseArray( IDatabase $db ) { + global $wgDisableUserGroupExpiry; + + $a = [ + 'ug_user' => $this->userId, + 'ug_group' => $this->group, + ]; + if ( !$wgDisableUserGroupExpiry ) { + $a['ug_expiry'] = $this->expiry ? $db->timestamp( $this->expiry ) : null; + } + return $a; + } + + /** + * Has the membership expired? + * @return bool + */ + public function isExpired() { + global $wgDisableUserGroupExpiry; + if ( $wgDisableUserGroupExpiry || !$this->expiry ) { + return false; + } else { + return wfTimestampNow() > $this->expiry; + } + } + + /** + * Purge expired memberships from the user_groups table + * + * @param IDatabase|null $dbw + */ + public static function purgeExpired( IDatabase $dbw = null ) { + global $wgDisableUserGroupExpiry; + if ( $wgDisableUserGroupExpiry || wfReadOnly() ) { + return; + } + + if ( $dbw === null ) { + $dbw = wfGetDB( DB_MASTER ); + } + + DeferredUpdates::addUpdate( new AtomicSectionUpdate( + $dbw, + __METHOD__, + function ( IDatabase $dbw, $fname ) { + $expiryCond = [ 'ug_expiry < ' . $dbw->addQuotes( $dbw->timestamp() ) ]; + $res = $dbw->select( 'user_groups', self::selectFields(), $expiryCond, $fname ); + + // save an array of users/groups to insert to user_former_groups + $usersAndGroups = []; + foreach ( $res as $row ) { + $usersAndGroups[] = [ 'ufg_user' => $row->ug_user, 'ufg_group' => $row->ug_group ]; + } + + // delete 'em all + $dbw->delete( 'user_groups', $expiryCond, $fname ); + + // and push the groups to user_former_groups + $dbw->insert( 'user_former_groups', $usersAndGroups, __METHOD__, [ 'IGNORE' ] ); + } + ) ); + } + + /** + * Returns UserGroupMembership objects for all the groups a user currently + * belongs to. + * + * @param int $userId ID of the user to search for + * @param IDatabase|null $db Optional database connection + * @return array Associative array of (group name => UserGroupMembership object) + */ + public static function getMembershipsForUser( $userId, IDatabase $db = null ) { + if ( !$db ) { + $db = wfGetDB( DB_REPLICA ); + } + + $res = $db->select( 'user_groups', + self::selectFields(), + [ 'ug_user' => $userId ], + __METHOD__ ); + + $ugms = []; + foreach ( $res as $row ) { + $ugm = self::newFromRow( $row ); + if ( !$ugm->isExpired() ) { + $ugms[$ugm->group] = $ugm; + } + } + + return $ugms; + } + + /** + * Returns a UserGroupMembership object that pertains to the given user and group, + * or false if the user does not belong to that group (or the assignment has + * expired). + * + * @param int $userId ID of the user to search for + * @param string $group User group name + * @param IDatabase|null $db Optional database connection + * @return UserGroupMembership|false + */ + public static function getMembership( $userId, $group, IDatabase $db = null ) { + if ( !$db ) { + $db = wfGetDB( DB_REPLICA ); + } + + $row = $db->selectRow( 'user_groups', + self::selectFields(), + [ 'ug_user' => $userId, 'ug_group' => $group ], + __METHOD__ ); + if ( !$row ) { + return false; + } + + $ugm = self::newFromRow( $row ); + if ( !$ugm->isExpired() ) { + return $ugm; + } else { + return false; + } + } + + /** + * Gets a link for a user group, possibly including the expiry date if relevant. + * + * @param string|UserGroupMembership $ugm Either a group name as a string, or + * a UserGroupMembership object + * @param IContextSource $context + * @param string $format Either 'wiki' or 'html' + * @param string|null $userName If you want to use the group member message + * ("administrator"), pass the name of the user who belongs to the group; it + * is used for GENDER of the group member message. If you instead want the + * group name message ("Administrators"), omit this parameter. + * @return string + */ + public static function getLink( $ugm, IContextSource $context, $format, + $userName = null ) { + + if ( $format !== 'wiki' && $format !== 'html' ) { + throw new MWException( 'UserGroupMembership::getLink() $format parameter should be ' . + "'wiki' or 'html'" ); + } + + if ( $ugm instanceof UserGroupMembership ) { + $expiry = $ugm->getExpiry(); + $group = $ugm->getGroup(); + } else { + $expiry = null; + $group = $ugm; + } + + if ( $userName !== null ) { + $groupName = self::getGroupMemberName( $group, $userName ); + } else { + $groupName = self::getGroupName( $group ); + } + + // link to the group description page, if it exists + $linkTitle = self::getGroupPage( $group ); + if ( $linkTitle ) { + if ( $format === 'wiki' ) { + $linkPage = $linkTitle->getFullText(); + $groupLink = "[[$linkPage|$groupName]]"; + } else { + $groupLink = Linker::link( $linkTitle, htmlspecialchars( $groupName ) ); + } + } else { + $groupLink = htmlspecialchars( $groupName ); + } + + if ( $expiry ) { + // format the expiry to a nice string + $uiLanguage = $context->getLanguage(); + $uiUser = $context->getUser(); + $expiryDT = $uiLanguage->userTimeAndDate( $expiry, $uiUser ); + $expiryD = $uiLanguage->userDate( $expiry, $uiUser ); + $expiryT = $uiLanguage->userTime( $expiry, $uiUser ); + if ( $format === 'html' ) { + $groupLink = Message::rawParam( $groupLink ); + } + return $context->msg( 'group-membership-link-with-expiry' ) + ->params( $groupLink, $expiryDT, $expiryD, $expiryT )->text(); + } else { + return $groupLink; + } + } + + /** + * Gets the localized friendly name for a group, if it exists. For example, + * "Administrators" or "Bureaucrats" + * + * @param string $group Internal group name + * @return string Localized friendly group name + */ + public static function getGroupName( $group ) { + $msg = wfMessage( "group-$group" ); + return $msg->isBlank() ? $group : $msg->text(); + } + + /** + * Gets the localized name for a member of a group, if it exists. For example, + * "administrator" or "bureaucrat" + * + * @param string $group Internal group name + * @param string $username Username for gender + * @return string Localized name for group member + */ + public static function getGroupMemberName( $group, $username ) { + $msg = wfMessage( "group-$group-member", $username ); + return $msg->isBlank() ? $group : $msg->text(); + } + + /** + * Gets the title of a page describing a particular user group. When the name + * of the group appears in the UI, it can link to this page. + * + * @param string $group Internal group name + * @return Title|bool Title of the page if it exists, false otherwise + */ + public static function getGroupPage( $group ) { + $msg = wfMessage( "grouppage-$group" )->inContentLanguage(); + if ( $msg->exists() ) { + $title = Title::newFromText( $msg->text() ); + if ( is_object( $title ) ) { + return $title; + } + } + return false; + } +} diff --git a/includes/user/UserRightsProxy.php b/includes/user/UserRightsProxy.php index 69bc503b11..d801fa091b 100644 --- a/includes/user/UserRightsProxy.php +++ b/includes/user/UserRightsProxy.php @@ -198,50 +198,47 @@ class UserRightsProxy { * @return array */ function getGroups() { - $res = $this->db->select( 'user_groups', - [ 'ug_group' ], - [ 'ug_user' => $this->id ], - __METHOD__ ); - $groups = []; - foreach ( $res as $row ) { - $groups[] = $row->ug_group; - } - return $groups; + return array_keys( self::getGroupMemberships() ); } /** - * Replaces User::addUserGroup() - * @param string $group + * Replaces User::getGroupMemberships() + * + * @return array + * @since 1.29 + */ + function getGroupMemberships() { + return UserGroupMembership::getMembershipsForUser( $this->id, $this->db ); + } + + /** + * Replaces User::addGroup() * + * @param string $group + * @param string|null $expiry * @return bool */ - function addGroup( $group ) { - $this->db->insert( 'user_groups', - [ - 'ug_user' => $this->id, - 'ug_group' => $group, - ], - __METHOD__, - [ 'IGNORE' ] ); + function addGroup( $group, $expiry = null ) { + if ( $expiry ) { + $expiry = wfTimestamp( TS_MW, $expiry ); + } - return true; + $ugm = new UserGroupMembership( $this->id, $group, $expiry ); + return $ugm->insert( true, $this->db ); } /** - * Replaces User::removeUserGroup() - * @param string $group + * Replaces User::removeGroup() * + * @param string $group * @return bool */ function removeGroup( $group ) { - $this->db->delete( 'user_groups', - [ - 'ug_user' => $this->id, - 'ug_group' => $group, - ], - __METHOD__ ); - - return true; + $ugm = UserGroupMembership::getMembership( $this->id, $group, $this->db ); + if ( !$ugm ) { + return false; + } + return $ugm->delete( $this->db ); } /** diff --git a/includes/utils/AutoloadGenerator.php b/includes/utils/AutoloadGenerator.php index 319b5d4854..1dac0b152a 100644 --- a/includes/utils/AutoloadGenerator.php +++ b/includes/utils/AutoloadGenerator.php @@ -152,7 +152,7 @@ class AutoloadGenerator { ksort( $json[$key] ); // Return the whole JSON file - return FormatJson::encode( $json, true ) . "\n"; + return FormatJson::encode( $json, "\t", FormatJson::ALL_OK ) . "\n"; } /** @@ -291,10 +291,6 @@ EOD; foreach ( glob( $this->basepath . '/*.php' ) as $file ) { $this->readFile( $file ); } - - // Legacy aliases - $this->forceClassPath( 'DatabaseBase', - $this->basepath . '/includes/libs/rdbms/database/Database.php' ); } } @@ -323,6 +319,11 @@ class ClassCollector { */ protected $tokens; + /** + * @var array Class alias with target/name fields + */ + protected $alias; + /** * @var string $code PHP code (including <?php) to detect class names from * @return array List of FQCN detected within the tokens @@ -331,6 +332,7 @@ class ClassCollector { $this->namespace = ''; $this->classes = []; $this->startToken = null; + $this->alias = null; $this->tokens = []; foreach ( token_get_all( $code ) as $token ) { @@ -353,6 +355,8 @@ class ClassCollector { if ( is_string( $token ) ) { return; } + // Note: When changing class name discovery logic, + // AutoLoaderTest.php may also need to be updated. switch ( $token[0] ) { case T_NAMESPACE: case T_CLASS: @@ -360,6 +364,12 @@ class ClassCollector { case T_TRAIT: case T_DOUBLE_COLON: $this->startToken = $token; + break; + case T_STRING: + if ( $token[1] === 'class_alias' ) { + $this->startToken = $token; + $this->alias = []; + } } } @@ -383,6 +393,58 @@ class ClassCollector { } break; + case T_STRING: + if ( $this->alias !== null ) { + // Flow 1 - Two string literals: + // - T_STRING class_alias + // - '(' + // - T_CONSTANT_ENCAPSED_STRING 'TargetClass' + // - ',' + // - T_WHITESPACE + // - T_CONSTANT_ENCAPSED_STRING 'AliasName' + // - ')' + // Flow 2 - Use of ::class syntax for first parameter + // - T_STRING class_alias + // - '(' + // - T_STRING TargetClass + // - T_DOUBLE_COLON :: + // - T_CLASS class + // - ',' + // - T_WHITESPACE + // - T_CONSTANT_ENCAPSED_STRING 'AliasName' + // - ')' + if ( $token === '(' ) { + // Start of a function call to class_alias() + $this->alias = [ 'target' => false, 'name' => false ]; + } elseif ( $token === ',' ) { + // Record that we're past the first parameter + if ( $this->alias['target'] === false ) { + $this->alias['target'] = true; + } + } elseif ( is_array( $token ) && $token[0] === T_CONSTANT_ENCAPSED_STRING ) { + if ( $this->alias['target'] === true ) { + // We already saw a first argument, this must be the second. + // Strip quotes from the string literal. + $this->alias['name'] = substr( $token[1], 1, -1 ); + } + } elseif ( $token === ')' ) { + // End of function call + $this->classes[] = $this->alias['name']; + $this->alias = null; + $this->startToken = null; + } elseif ( !is_array( $token ) || ( + $token[0] !== T_STRING && + $token[0] !== T_DOUBLE_COLON && + $token[0] !== T_CLASS && + $token[0] !== T_WHITESPACE + ) ) { + // Ignore this call to class_alias() - compat/Timestamp.php + $this->alias = null; + $this->startToken = null; + } + } + break; + case T_CLASS: case T_INTERFACE: case T_TRAIT: diff --git a/includes/utils/BatchRowIterator.php b/includes/utils/BatchRowIterator.php index ef2c14a9b7..43bccba571 100644 --- a/includes/utils/BatchRowIterator.php +++ b/includes/utils/BatchRowIterator.php @@ -230,7 +230,7 @@ class BatchRowIterator implements RecursiveIterator { * `=` conditions while the final key uses a `>` condition * * Example output: - * [ '( foo = 42 AND bar > 7 ) OR ( foo > 42 )' ] + * [ '( foo = 42 AND bar > 7 ) OR ( foo > 42 )' ] * * @return array The SQL conditions necessary to select the next set * of rows in the batched query diff --git a/includes/utils/MWCryptHKDF.php b/includes/utils/MWCryptHKDF.php index 3bddd7794a..1c8d4861af 100644 --- a/includes/utils/MWCryptHKDF.php +++ b/includes/utils/MWCryptHKDF.php @@ -47,11 +47,11 @@ class MWCryptHKDF { * From http://eprint.iacr.org/2010/264.pdf: * * The scheme HKDF is specifed as: - * HKDF(XTS, SKM, CTXinfo, L) = K(1) || K(2) || ... || K(t) + * HKDF(XTS, SKM, CTXinfo, L) = K(1) || K(2) || ... || K(t) * where the values K(i) are defined as follows: - * PRK = HMAC(XTS, SKM) - * K(1) = HMAC(PRK, CTXinfo || 0); - * K(i+1) = HMAC(PRK, K(i) || CTXinfo || i), 1 <= i < t; + * PRK = HMAC(XTS, SKM) + * K(1) = HMAC(PRK, CTXinfo || 0); + * K(i+1) = HMAC(PRK, K(i) || CTXinfo || i), 1 <= i < t; * where t = [L/k] and the value K(t) is truncated to its first d = L mod k bits; * the counter i is non-wrapping and of a given fixed size, e.g., a single byte. * Note that the length of the HMAC output is the same as its key length and therefore diff --git a/includes/widget/DateInputWidget.php b/includes/widget/DateInputWidget.php index f011f0b8af..507dab6fac 100644 --- a/includes/widget/DateInputWidget.php +++ b/includes/widget/DateInputWidget.php @@ -19,6 +19,7 @@ class DateInputWidget extends \OOUI\TextInputWidget { protected $inputFormat = null; protected $displayFormat = null; + protected $longDisplayFormat = null; protected $placeholderLabel = null; protected $placeholderDateFormat = null; protected $precision = null; @@ -36,6 +37,9 @@ class DateInputWidget extends \OOUI\TextInputWidget { * while the widget is inactive. Should be as unambiguous as possible (for example, prefer * to spell out the month, rather than rely on the order), even if that makes it longer. * Applicable only if the widget is infused. (default: language-specific) + * @param string $config['longDisplayFormat'] If a custom displayFormat is not specified, use + * unabbreviated day of the week and month names in the default language-specific + * displayFormat. (default: false) * @param string $config['placeholderLabel'] Placeholder text shown when the widget is not * selected. Applicable only if the widget is infused. (default: taken from message * `mw-widgets-dateinput-no-date`) @@ -58,6 +62,7 @@ class DateInputWidget extends \OOUI\TextInputWidget { $config = array_merge( [ // Default config values 'precision' => 'day', + 'longDisplayFormat' => false, ], $config ); // Properties @@ -79,6 +84,9 @@ class DateInputWidget extends \OOUI\TextInputWidget { if ( isset( $config['displayFormat'] ) ) { $this->displayFormat = $config['displayFormat']; } + if ( isset( $config['longDisplayFormat'] ) ) { + $this->longDisplayFormat = $config['longDisplayFormat']; + } if ( isset( $config['placeholderLabel'] ) ) { $this->placeholderLabel = $config['placeholderLabel']; } @@ -134,6 +142,9 @@ class DateInputWidget extends \OOUI\TextInputWidget { if ( $this->displayFormat !== null ) { $config['displayFormat'] = $this->displayFormat; } + if ( $this->longDisplayFormat !== null ) { + $config['longDisplayFormat'] = $this->longDisplayFormat; + } if ( $this->placeholderLabel !== null ) { $config['placeholderLabel'] = $this->placeholderLabel; } diff --git a/includes/widget/UsersMultiselectWidget.php b/includes/widget/UsersMultiselectWidget.php new file mode 100644 index 0000000000..d24ab7bf66 --- /dev/null +++ b/includes/widget/UsersMultiselectWidget.php @@ -0,0 +1,68 @@ +<?php +/** + * MediaWiki Widgets – UsersMultiselectWidget class. + * + * @copyright 2017 MediaWiki Widgets Team and others; see AUTHORS.txt + * @license The MIT License (MIT); see LICENSE.txt + */ +namespace MediaWiki\Widget; + +use \OOUI\TextInputWidget; + +/** + * Widget to select multiple users. + */ +class UsersMultiselectWidget extends \OOUI\Widget { + + protected $usersArray = []; + protected $inputName = null; + protected $inputPlaceholder = null; + + /** + * @param array $config Configuration options + * @param array $config['users'] Array of usernames to use as preset data + * @param array $config['placeholder'] Placeholder message for input + * @param array $config['name'] Name attribute (used in forms) + */ + public function __construct( array $config = [] ) { + parent::__construct( $config ); + + // Properties + if ( isset( $config['default'] ) ) { + $this->usersArray = $config['default']; + } + if ( isset( $config['name'] ) ) { + $this->inputName = $config['name']; + } + if ( isset( $config['placeholder'] ) ) { + $this->inputPlaceholder = $config['placeholder']; + } + + $textarea = new TextInputWidget( [ + 'name' => $this->inputName, + 'multiline' => true, + 'value' => implode( "\n", $this->usersArray ), + 'rows' => 25, + ] ); + $this->prependContent( $textarea ); + } + + protected function getJavaScriptClassName() { + return 'mw.widgets.UsersMultiselectWidget'; + } + + public function getConfig( &$config ) { + if ( $this->usersArray !== null ) { + $config['data'] = $this->usersArray; + } + if ( $this->inputName !== null ) { + $config['name'] = $this->inputName; + } + if ( $this->inputPlaceholder !== null ) { + $config['placeholder'] = $this->inputPlaceholder; + } + + return parent::getConfig( $config ); + } + +} diff --git a/includes/widget/search/BasicSearchResultSetWidget.php b/includes/widget/search/BasicSearchResultSetWidget.php new file mode 100644 index 0000000000..07094afca6 --- /dev/null +++ b/includes/widget/search/BasicSearchResultSetWidget.php @@ -0,0 +1,135 @@ +<?php + +namespace MediaWiki\Widget\Search; + +use Message; +use SearchResultSet; +use SpecialSearch; +use Status; + +/** + * Renders the search result area. Handles Title and Full-Text search results, + * along with inline and sidebar secondary (interwiki) results. + */ +class BasicSearchResultSetWidget { + /** @var SpecialSearch */ + protected $specialPage; + /** @var SearchResultWidget */ + protected $resultWidget; + /** @var InterwikiSearchResultSetWidget */ + protected $sidebarWidget; + + public function __construct( + SpecialSearch $specialPage, + SearchResultWidget $resultWidget, + SearchResultSetWidget $sidebarWidget + ) { + $this->specialPage = $specialPage; + $this->resultWidget = $resultWidget; + $this->sidebarWidget = $sidebarWidget; + } + + /** + * @param string $term The search term to highlight + * @param int $offset The offset of the first result in the result set + * @param SearchResultSet|null $titleResultSet Results of searching only page titles + * @param SearchResultSet|null $textResultSet Results of general full text search. + * @return string HTML + */ + public function render( + $term, + $offset, + SearchResultSet $titleResultSet = null, + SearchResultSet $textResultSet = null + ) { + global $wgContLang; + + $hasTitle = $titleResultSet ? $titleResultSet->numRows() > 0 : false; + $hasText = $textResultSet ? $textResultSet->numRows() > 0 : false; + $hasSecondary = $textResultSet + ? $textResultSet->hasInterwikiResults( SearchResultSet::SECONDARY_RESULTS ) + : false; + $hasSecondaryInline = $textResultSet + ? $textResultSet->hasInterwikiResults( SearchResultSet::INLINE_RESULTS ) + : false; + + if ( !$hasTitle && !$hasText && !$hasSecondary && !$hasSecondaryInline ) { + return ''; + } + + $out = ''; + if ( $hasTitle ) { + $out .= $this->header( $this->specialPage->msg( 'titlematches' ) ) + . $this->renderResultSet( $titleResultSet, $offset ); + } + + if ( $hasText ) { + if ( $hasTitle ) { + $out .= "<div class='mw-search-visualclear'></div>" . + $this->header( $this->specialPage->msg( 'textmatches' ) ); + } + $out .= $this->renderResultSet( $textResultSet, $offset ); + } + + if ( $hasSecondaryInline ) { + $iwResults = $textResultSet->getInterwikiResults( SearchResultSet::INLINE_RESULTS ); + foreach ( $iwResults as $interwiki => $results ) { + if ( $results instanceof Status || $results->numRows() === 0 ) { + // ignore bad interwikis for now + continue; + } + $out .= + "<p class='mw-search-interwiki-header mw-search-visualclear'>" . + $this->specialPage->msg( "search-interwiki-results-{$interwiki}" )->parse() . + "</p>"; + $out .= $this->renderResultSet( $results, $offset ); + } + } + + if ( $hasSecondary ) { + $out .= $this->sidebarWidget->render( + $term, + $textResultSet->getInterwikiResults( SearchResultSet::SECONDARY_RESULTS ) + ); + } + + // Convert the whole thing to desired language variant + // TODO: Move this up to Special:Search? + return $wgContLang->convert( $out ); + } + + /** + * Generate a headline for a section of the search results. In prior + * implementations this was rendering wikitext of '==$1==', but seems + * a waste to call the full parser to generate this tiny bit of html + * + * @param Message $msg i18n message to use as header + * @return string HTML + */ + protected function header( Message $msg ) { + return + "<h2>" . + "<span class='mw-headline'>" . $msg->escaped() . "</span>" . + "</h2>"; + } + + /** + * @param SearchResultSet $resultSet The search results to render + * @param int $offset Offset of the first result in $resultSet + * @return string HTML + */ + protected function renderResultSet( SearchResultSet $resultSet, $offset ) { + global $wgContLang; + + $terms = $wgContLang->convertForSearchResult( $resultSet->termMatches() ); + + $hits = []; + $result = $resultSet->next(); + while ( $result ) { + $hits[] .= $this->resultWidget->render( $result, $terms, $offset++ ); + $result = $resultSet->next(); + } + + return "<ul class='mw-search-results'>" . implode( '', $hits ) . "</ul>"; + } +} diff --git a/includes/widget/search/DidYouMeanWidget.php b/includes/widget/search/DidYouMeanWidget.php new file mode 100644 index 0000000000..3aee87bf3b --- /dev/null +++ b/includes/widget/search/DidYouMeanWidget.php @@ -0,0 +1,102 @@ +<?php + +namespace MediaWiki\Widget\Search; + +use Linker; +use SearchResultSet; +use SpecialSearch; + +/** + * Renders a suggested search for the user, or tells the user + * a suggested search was run instead of the one provided. + */ +class DidYouMeanWidget { + /** @var SpecialSearch */ + protected $specialSearch; + + public function __construct( SpecialSearch $specialSearch ) { + $this->specialSearch = $specialSearch; + } + + /** + * @param string $term The user provided search term + * @param SearchResultSet $resultSet + * @return string HTML + */ + public function render( $term, SearchResultSet $resultSet ) { + if ( $resultSet->hasRewrittenQuery() ) { + $html = $this->rewrittenHtml( $term, $resultSet ); + } elseif ( $resultSet->hasSuggestion() ) { + $html = $this->suggestionHtml( $resultSet ); + } else { + return ''; + } + + return "<div class='searchdidyoumean'>$html</div>"; + } + + /** + * Generates HTML shown to user when their query has been internally + * rewritten, and the results of the rewritten query are being returned. + * + * @param string $term The users search input + * @param SearchResultSet $resultSet The response to the search request + * @return string HTML Links the user to their original $term query, and the + * one suggested by $resultSet + */ + protected function rewrittenHtml( $term, SearchResultSet $resultSet ) { + $params = [ + 'search' => $resultSet->getQueryAfterRewrite(), + // Don't magic this link into a 'go' link, it should always + // show search results. + 'fultext' => 1, + ]; + $stParams = array_merge( $params, $this->specialSearch->powerSearchOptions() ); + + $rewritten = Linker::linkKnown( + $this->specialSearch->getPageTitle(), + $resultSet->getQueryAfterRewriteSnippet() ?: null, + [ 'id' => 'mw-search-DYM-rewritten' ], + $stParams + ); + + $stParams['search'] = $term; + $stParams['runsuggestion'] = 0; + $original = Linker::linkKnown( + $this->specialSearch->getPageTitle(), + htmlspecialchars( $term, ENT_QUOTES, 'UTF-8' ), + [ 'id' => 'mwsearch-DYM-original' ], + $stParams + ); + + return $this->specialSearch->msg( 'search-rewritten' ) + ->rawParams( $rewritten, $original ) + ->escaped(); + } + + /** + * Generates HTML shown to the user when we have a suggestion about + * a query that might give more/better results than their current + * query. + * + * @param SearchResultSet $resultSet + * @return string HTML + */ + protected function suggestionHtml( SearchResultSet $resultSet ) { + $params = [ + 'search' => $resultSet->getSuggestionQuery(), + 'fulltext' => 1, + ]; + $stParams = array_merge( $params, $this->specialSearch->powerSearchOptions() ); + + $suggest = Linker::linkKnown( + $this->specialSearch->getPageTitle(), + $resultSet->getSuggestionSnippet() ?: null, + [ 'id' => 'mw-search-DYM-suggestion' ], + $stParams + ); + + return $this->specialSearch->msg( 'search-suggest' ) + ->rawParams( $suggest )->parse(); + } +} diff --git a/includes/widget/search/FullSearchResultWidget.php b/includes/widget/search/FullSearchResultWidget.php index a93e1fcde3..0d0fa12411 100644 --- a/includes/widget/search/FullSearchResultWidget.php +++ b/includes/widget/search/FullSearchResultWidget.php @@ -131,16 +131,16 @@ class FullSearchResultWidget implements SearchResultWidget { // clone to prevent hook from changing the title stored inside $result $title = clone $result->getTitle(); - $queryString = []; + $query = []; Hooks::run( 'ShowSearchHitTitle', - [ $title, &$snippet, $result, $terms, $this->specialPage, &$queryString ] ); + [ &$title, &$snippet, $result, $terms, $this->specialPage, &$query ] ); $link = $this->linkRenderer->makeLink( $title, $snippet, [ 'data-serp-pos' => $position ], - $queryString + $query ); return $link; diff --git a/includes/widget/search/InterwikiSearchResultSetWidget.php b/includes/widget/search/InterwikiSearchResultSetWidget.php new file mode 100644 index 0000000000..76b9b01839 --- /dev/null +++ b/includes/widget/search/InterwikiSearchResultSetWidget.php @@ -0,0 +1,184 @@ +<?php + +namespace MediaWiki\Widget\Search; + +use MediaWiki\Interwiki\InterwikiLookup; +use MediaWiki\Linker\LinkRenderer; +use SearchResultSet; +use SpecialSearch; +use Title; +use Html; + +/** + * Renders one or more SearchResultSets into a sidebar grouped by + * interwiki prefix. Includes a per-wiki header indicating where + * the results are from. + */ +class InterwikiSearchResultSetWidget implements SearchResultSetWidget { + /** @var SpecialSearch */ + protected $specialSearch; + /** @var SearchResultWidget */ + protected $resultWidget; + /** @var string[]|null */ + protected $customCaptions; + /** @var LinkRenderer */ + protected $linkRenderer; + /** @var InterwikiLookup */ + protected $iwLookup; + /** @var $output */ + protected $output; + /** @var $iwPrefixDisplayTypes */ + protected $iwPrefixDisplayTypes; + + public function __construct( + SpecialSearch $specialSearch, + SearchResultWidget $resultWidget, + LinkRenderer $linkRenderer, + InterwikiLookup $iwLookup + ) { + $this->specialSearch = $specialSearch; + $this->resultWidget = $resultWidget; + $this->linkRenderer = $linkRenderer; + $this->iwLookup = $iwLookup; + $this->output = $specialSearch->getOutput(); + $this->iwPrefixDisplayTypes = $specialSearch->getConfig()->get( + 'InterwikiPrefixDisplayTypes' + ); + } + /** + * @param string $term User provided search term + * @param SearchResultSet|SearchResultSet[] $resultSets List of interwiki + * results to render. + * @return string HTML + */ + public function render( $term, $resultSets ) { + if ( !is_array( $resultSets ) ) { + $resultSets = [ $resultSets ]; + } + + $this->loadCustomCaptions(); + + $this->output->addModules( 'mediawiki.special.search.commonsInterwikiWidget' ); + $this->output->addModuleStyles( 'mediawiki.special.search.interwikiwidget.styles' ); + + $iwResults = []; + foreach ( $resultSets as $resultSet ) { + $result = $resultSet->next(); + while ( $result ) { + if ( !$result->isBrokenTitle() ) { + $iwResults[$result->getTitle()->getInterwiki()][] = $result; + } + $result = $resultSet->next(); + } + } + + $iwResultSetPos = 1; + $iwResultListOutput = ''; + + foreach ( $iwResults as $iwPrefix => $results ) { + // TODO: Assumes interwiki results are never paginated + $position = 0; + $iwResultItemOutput = ''; + + $iwDisplayType = isset( $this->iwPrefixDisplayTypes[$iwPrefix] ) + ? $this->iwPrefixDisplayTypes[$iwPrefix] + : ""; + + foreach ( $results as $result ) { + $iwResultItemOutput .= $this->resultWidget->render( $result, $term, $position++ ); + } + + $headerHtml = $this->headerHtml( $term, $iwPrefix ); + $footerHtml = $this->footerHtml( $term, $iwPrefix ); + $iwResultListOutput .= Html::rawElement( 'li', + [ + 'class' => 'iw-resultset iw-resultset--' . $iwDisplayType, + 'data-iw-resultset-pos' => $iwResultSetPos + ], + $headerHtml . + $iwResultItemOutput . + $footerHtml + ); + + $iwResultSetPos++; + } + + return Html::rawElement( + 'div', + [ 'id' => 'mw-interwiki-results' ], + Html::rawElement( + 'p', + [ 'class' => 'iw-headline' ], + $this->specialSearch->msg( 'search-interwiki-caption' )->parse() + ) . + Html::rawElement( + 'ul', [ 'class' => 'iw-results', ], $iwResultListOutput + ) + ); + } + + /** + * Generates an appropriate HTML header for the given interwiki prefix + * + * @param string $term User provided search term + * @param string $iwPrefix Interwiki prefix of wiki to show header for + * @return string HTML + */ + protected function headerHtml( $term, $iwPrefix ) { + + $iwDisplayType = isset( $this->iwPrefixDisplayTypes[$iwPrefix] ) + ? $this->iwPrefixDisplayTypes[$iwPrefix] + : ""; + + if ( isset( $this->customCaptions[$iwPrefix] ) ) { + /* customCaptions composed by loadCustomCaptions() with pre-escaped content.*/ + $caption = $this->customCaptions[$iwPrefix]; + } else { + $interwiki = $this->iwLookup->fetch( $iwPrefix ); + $parsed = wfParseUrl( wfExpandUrl( $interwiki ? $interwiki->getURL() : '/' ) ); + $caption = $this->specialSearch->msg( 'search-interwiki-default', $parsed['host'] )->escaped(); + } + + return Html::rawElement( 'div', [ 'class' => 'iw-result__header' ], + Html::rawElement( 'span', [ 'class' => 'iw-result__icon iw-result__icon--' . $iwDisplayType ] ) + . $caption + ); + } + + /** + * Generates an HTML footer for the given interwiki prefix + * + * @param string $term User provided search term + * @param string $iwPrefix Interwiki prefix of wiki to show footer for + * @return string HTML + */ + protected function footerHtml( $term, $iwPrefix ) { + + $href = Title::makeTitle( NS_SPECIAL, 'Search', null, $iwPrefix )->getLocalURL( + [ 'search' => $term, 'fulltext' => 1 ] + ); + + $searchLink = Html::rawElement( + 'a', + [ 'href' => $href ], + $this->specialSearch->msg( 'search-interwiki-more' )->escaped() + ); + + return Html::rawElement( 'div', [ 'class' => 'iw-result__footer' ], $searchLink ); + } + + protected function loadCustomCaptions() { + if ( $this->customCaptions !== null ) { + return; + } + + $this->customCaptions = []; + $customLines = explode( "\n", $this->specialSearch->msg( 'search-interwiki-custom' )->escaped() ); + foreach ( $customLines as $line ) { + $parts = explode( ':', $line, 2 ); + if ( count( $parts ) === 2 ) { + $this->customCaptions[$parts[0]] = $parts[1]; + } + } + } +} diff --git a/includes/widget/search/InterwikiSearchResultWidget.php b/includes/widget/search/InterwikiSearchResultWidget.php new file mode 100644 index 0000000000..6b51db5aed --- /dev/null +++ b/includes/widget/search/InterwikiSearchResultWidget.php @@ -0,0 +1,86 @@ +<?php + +namespace MediaWiki\Widget\Search; + +use HtmlArmor; +use MediaWiki\Linker\LinkRenderer; +use SearchResult; +use SpecialSearch; +use Title; +use Html; + +/** + * Renders an enhanced interwiki result + */ +class InterwikiSearchResultWidget implements SearchResultWidget { + /** @var SpecialSearch */ + protected $specialSearch; + /** @var LinkRenderer */ + protected $linkRenderer; + /** @var $iwPrefixDisplayTypes */ + protected $iwPrefixDisplayTypes; + + public function __construct( SpecialSearch $specialSearch, LinkRenderer $linkRenderer ) { + $this->specialSearch = $specialSearch; + $this->linkRenderer = $linkRenderer; + $this->iwPrefixDisplayTypes = $specialSearch->getConfig()->get( 'InterwikiPrefixDisplayTypes' ); + } + + /** + * @param SearchResult $result The result to render + * @param string $terms Terms to be highlighted (@see SearchResult::getTextSnippet) + * @param int $position The result position, including offset + * @return string HTML + */ + public function render( SearchResult $result, $terms, $position ) { + + $title = $result->getTitle(); + $iwPrefix = $result->getTitle()->getInterwiki(); + $titleSnippet = $result->getTitleSnippet(); + $snippet = $result->getTextSnippet( $terms ); + $displayType = isset( $this->iwPrefixDisplayTypes[$iwPrefix] ) + ? $this->iwPrefixDisplayTypes[$iwPrefix] + : ""; + + if ( $titleSnippet ) { + $titleSnippet = new HtmlArmor( $titleSnippet ); + } else { + $titleSnippet = null; + } + + $link = $this->linkRenderer->makeLink( $title, $titleSnippet ); + + $redirectTitle = $result->getRedirectTitle(); + $redirect = ''; + if ( $redirectTitle !== null ) { + + $redirectText = $result->getRedirectSnippet(); + + if ( $redirectText ) { + $redirectText = new HtmlArmor( $redirectText ); + } else { + $redirectText = null; + } + + $redirect = Html::rawElement( 'span', [ 'class' => 'iw-result__redirect' ], + $this->specialSearch->msg( 'search-redirect' )->rawParams( + $this->linkRenderer->makeLink( $redirectTitle, $redirectText ) + )->escaped() + ); + } + + switch ( $displayType ) { + case 'definition': + return "<div class='iw-result__content'>" . + "<span class='iw-result__title'>{$link} {$redirect}: </span>" . + $snippet . + "</div>"; + case 'quotation': + return "<div class='iw-result__content'>{$snippet}</div>" . + "<div class='iw-result__title'>{$link} {$redirect}</div>"; + default: + return "<div class='iw-result__title'>{$link} {$redirect}</div>" . + "<div class='iw-result__content'>{$snippet}</div>"; + } + } +} diff --git a/includes/widget/search/SearchFormWidget.php b/includes/widget/search/SearchFormWidget.php new file mode 100644 index 0000000000..a7407a062f --- /dev/null +++ b/includes/widget/search/SearchFormWidget.php @@ -0,0 +1,312 @@ +<?php + +namespace MediaWiki\Widget\Search; + +use Hooks; +use Html; +use MediaWiki\Widget\SearchInputWidget; +use MWNamespace; +use SearchEngineConfig; +use SpecialSearch; +use Xml; + +class SearchFormWidget { + /** @var SpecialSearch */ + protected $specialSearch; + /** @var SearchEngineConfig */ + protected $searchConfig; + /** @var array */ + protected $profiles; + + /** + * @param SpecialSearch $specialSearch + * @param SearchEngineConfig $searchConfig + * @param array $profiles + */ + public function __construct( + SpecialSearch $specialSearch, + SearchEngineConfig $searchConfig, + array $profiles + ) { + $this->specialSearch = $specialSearch; + $this->searchConfig = $searchConfig; + $this->profiles = $profiles; + } + + /** + * @param string $profile The current search profile + * @param string $term The current search term + * @param int $numResults The number of results shown + * @param int $totalResults The total estimated results found + * @param int $offset Current offset in search results + * @param bool $isPowerSearch Is the 'advanced' section open? + * @return string HTML + */ + public function render( + $profile, + $term, + $numResults, + $totalResults, + $offset, + $isPowerSearch + ) { + return Xml::openElement( + 'form', + [ + 'id' => $isPowerSearch ? 'powersearch' : 'search', + 'method' => 'get', + 'action' => wfScript(), + ] + ) . + '<div id="mw-search-top-table">' . + $this->shortDialogHtml( $profile, $term, $numResults, $totalResults, $offset ) . + '</div>' . + "<div class='mw-search-visualclear'></div>" . + "<div class='mw-search-profile-tabs'>" . + $this->profileTabsHtml( $profile, $term ) . + "<div style='clear:both'></div>" . + "</div>" . + $this->optionsHtml( $term, $isPowerSearch, $profile ) . + '</form>'; + } + + /** + * @param string $profile The current search profile + * @param string $term The current search term + * @param int $numResults The number of results shown + * @param int $totalResults The total estimated results found + * @param int $offset Current offset in search results + * @return string HTML + */ + protected function shortDialogHtml( $profile, $term, $numResults, $totalResults, $offset ) { + $html = ''; + + $searchWidget = new SearchInputWidget( [ + 'id' => 'searchText', + 'name' => 'search', + 'autofocus' => trim( $term ) === '', + 'value' => $term, + 'dataLocation' => 'content', + 'infusable' => true, + ] ); + + $layout = new \OOUI\ActionFieldLayout( $searchWidget, new \OOUI\ButtonInputWidget( [ + 'type' => 'submit', + 'label' => $this->specialSearch->msg( 'searchbutton' )->text(), + 'flags' => [ 'progressive', 'primary' ], + ] ), [ + 'align' => 'top', + ] ); + + $html .= $layout; + + if ( $totalResults > 0 && $offset < $totalResults ) { + $html .= Xml::tags( + 'div', + [ 'class' => 'results-info' ], + $this->specialSearch->msg( 'search-showingresults' ) + ->numParams( $offset + 1, $offset + $numResults, $totalResults ) + ->numParams( $numResults ) + ->parse() + ); + } + + $html .= + Html::hidden( 'title', $this->specialSearch->getPageTitle()->getPrefixedText() ) . + Html::hidden( 'profile', $profile ) . + Html::hidden( 'fulltext', '1' ); + + return $html; + } + + /** + * Generates HTML for the list of available search profiles. + * + * @param string $profile The currently selected profile + * @param string $term The user provided search terms + * @return string HTML + */ + protected function profileTabsHtml( $profile, $term ) { + $bareterm = $this->startsWithImage( $term ) + ? substr( $term, strpos( $term, ':' ) + 1 ) + : $term; + $lang = $this->specialSearch->getLanguage(); + $items = []; + foreach ( $this->profiles as $id => $profileConfig ) { + $profileConfig['parameters']['profile'] = $id; + $tooltipParam = isset( $profileConfig['namespace-messages'] ) + ? $lang->commaList( $profileConfig['namespace-messages'] ) + : null; + $items[] = Xml::tags( + 'li', + [ 'class' => $profile === $id ? 'current' : 'normal' ], + $this->makeSearchLink( + $bareterm, + $this->specialSearch->msg( $profileConfig['message'] )->text(), + $this->specialSearch->msg( $profileConfig['tooltip'], $tooltipParam )->text(), + $profileConfig['parameters'] + ) + ); + } + + return + "<div class='search-types'>" . + "<ul>" . implode( '', $items ) . "</ul>" . + "</div>"; + } + + /** + * Check if query starts with image: prefix + * + * @param string $term The string to check + * @return bool + */ + protected function startsWithImage( $term ) { + global $wgContLang; + + $parts = explode( ':', $term ); + return count( $parts ) > 1 + ? $wgContLang->getNsIndex( $parts[0] ) === NS_FILE + : false; + } + + /** + * Make a search link with some target namespaces + * + * @param string $term The term to search for + * @param string $label Link's text + * @param string $tooltip Link's tooltip + * @param array $params Query string parameters + * @return string HTML fragment + */ + protected function makeSearchLink( $term, $label, $tooltip, array $params = [] ) { + $params += [ + 'search' => $term, + 'fulltext' => 1, + ]; + + return Xml::element( + 'a', + [ + 'href' => $this->specialSearch->getPageTitle()->getLocalURL( $params ), + 'title' => $tooltip, + ], + $label + ); + } + + /** + * Generates HTML for advanced options available with the currently + * selected search profile. + * + * @param string $term User provided search term + * @param bool $isPowerSearch Is the advanced search profile enabled? + * @param string $profile The current search profile + * @return string HTML + */ + protected function optionsHtml( $term, $isPowerSearch, $profile ) { + $html = ''; + + if ( $isPowerSearch ) { + $html .= $this->powerSearchBox( $term, [] ); + } else { + $form = ''; + Hooks::run( 'SpecialSearchProfileForm', [ + $this->specialSearch, &$form, $profile, $term, [] + ] ); + $html .= $form; + } + + return $html; + } + + /** + * @param string $term The current search term + * @param array $opts Additional key/value pairs that will be submitted + * with the generated form. + * @return string HTML + */ + protected function powerSearchBox( $term, array $opts ) { + global $wgContLang; + + $rows = []; + $activeNamespaces = $this->specialSearch->getNamespaces(); + foreach ( $this->searchConfig->searchableNamespaces() as $namespace => $name ) { + $subject = MWNamespace::getSubject( $namespace ); + if ( !isset( $rows[$subject] ) ) { + $rows[$subject] = ""; + } + + $name = $wgContLang->getConverter()->convertNamespace( $namespace ); + if ( $name === '' ) { + $name = $this->specialSearch->msg( 'blanknamespace' )->text(); + } + + $rows[$subject] .= + '<td>' . + Xml::checkLabel( + $name, + "ns{$namespace}", + "mw-search-ns{$namespace}", + in_array( $namespace, $activeNamespaces ) + ) . + '</td>'; + } + + // Lays out namespaces in multiple floating two-column tables so they'll + // be arranged nicely while still accomodating diferent screen widths + $tableRows = []; + foreach ( $rows as $row ) { + $tableRows[] = "<tr>{$row}</tr>"; + } + $namespaceTables = []; + foreach ( array_chunk( $tableRows, 4 ) as $chunk ) { + $namespaceTables[] = implode( '', $chunk ); + } + + $showSections = [ + 'namespaceTables' => "<table>" . implode( '</table><table>', $namespaceTables ) . '</table>', + ]; + Hooks::run( 'SpecialSearchPowerBox', [ &$showSections, $term, $opts ] ); + + $hidden = ''; + foreach ( $opts as $key => $value ) { + $hidden .= Html::hidden( $key, $value ); + } + + $divider = "<div class='divider'></div>"; + + // Stuff to feed SpecialSearch::saveNamespaces() + $user = $this->specialSearch->getUser(); + $remember = ''; + if ( $user->isLoggedIn() ) { + $remember = $divider . Xml::checkLabel( + $this->specialSearch->msg( 'powersearch-remember' )->text(), + 'nsRemember', + 'mw-search-powersearch-remember', + false, + // The token goes here rather than in a hidden field so it + // is only sent when necessary (not every form submission) + [ 'value' => $user->getEditToken( + 'searchnamespace', + $this->specialSearch->getRequest() + ) ] + ); + } + + return + "<fieldset id='mw-searchoptions'>" . + "<legend>" . $this->specialSearch->msg( 'powersearch-legend' )->escaped() . '</legend>' . + "<h4>" . $this->specialSearch->msg( 'powersearch-ns' )->parse() . '</h4>' . + // populated by js if available + "<div id='mw-search-togglebox'></div>" . + $divider . + implode( + $divider, + $showSections + ) . + $hidden . + $remember . + "</fieldset>"; + } +} diff --git a/includes/widget/search/SearchResultSetWidget.php b/includes/widget/search/SearchResultSetWidget.php new file mode 100644 index 0000000000..6df6e65c2a --- /dev/null +++ b/includes/widget/search/SearchResultSetWidget.php @@ -0,0 +1,18 @@ +<?php + +namespace MediaWiki\Widget\Search; + +use SearchResultSet; + +/** + * Renders a set of search results to HTML + */ +interface SearchResultSetWidget { + /** + * @param string $term User provided search term + * @param SearchResultSet|SearchResultSet[] $resultSets List of interwiki + * results to render. + * @return string HTML + */ + public function render( $term, $resultSets ); +} diff --git a/includes/widget/search/SearchResultWidget.php b/includes/widget/search/SearchResultWidget.php index b53cd5d2d2..3fbdbef2a9 100644 --- a/includes/widget/search/SearchResultWidget.php +++ b/includes/widget/search/SearchResultWidget.php @@ -11,7 +11,7 @@ interface SearchResultWidget { /** * @param SearchResult $result The result to render * @param string $terms Terms to be highlighted (@see SearchResult::getTextSnippet) - * @param int $position The result position, including offset + * @param int $position The zero indexed result position, including offset * @return string HTML */ public function render( SearchResult $result, $terms, $position ); diff --git a/includes/widget/search/SimpleSearchResultSetWidget.php b/includes/widget/search/SimpleSearchResultSetWidget.php new file mode 100644 index 0000000000..04e1e2100f --- /dev/null +++ b/includes/widget/search/SimpleSearchResultSetWidget.php @@ -0,0 +1,132 @@ +<?php + +namespace MediaWiki\Widget\Search; + +use MediaWiki\Interwiki\InterwikiLookup; +use MediaWiki\Linker\LinkRenderer; +use SearchResultSet; +use SpecialSearch; +use Title; +use Html; + +/** + * Renders one or more SearchResultSets into a sidebar grouped by + * interwiki prefix. Includes a per-wiki header indicating where + * the results are from. + */ +class SimpleSearchResultSetWidget implements SearchResultSetWidget{ + /** @var SpecialSearch */ + protected $specialSearch; + /** @var SearchResultWidget */ + protected $resultWidget; + /** @var string[]|null */ + protected $customCaptions; + /** @var LinkRenderer */ + protected $linkRenderer; + /** @var InterwikiLookup */ + protected $iwLookup; + + public function __construct( + SpecialSearch $specialSearch, + SearchResultWidget $resultWidget, + LinkRenderer $linkRenderer, + InterwikiLookup $iwLookup + ) { + $this->specialSearch = $specialSearch; + $this->resultWidget = $resultWidget; + $this->linkRenderer = $linkRenderer; + $this->iwLookup = $iwLookup; + } + + /** + * @param string $term User provided search term + * @param SearchResultSet|SearchResultSet[] $resultSets List of interwiki + * results to render. + * @return string HTML + */ + public function render( $term, $resultSets ) { + if ( !is_array( $resultSets ) ) { + $resultSets = [ $resultSets ]; + } + + $this->loadCustomCaptions(); + + $iwResults = []; + foreach ( $resultSets as $resultSet ) { + $result = $resultSet->next(); + while ( $result ) { + if ( !$result->isBrokenTitle() ) { + $iwResults[$result->getTitle()->getInterwiki()][] = $result; + } + $result = $resultSet->next(); + } + } + + $out = ''; + foreach ( $iwResults as $iwPrefix => $results ) { + $out .= $this->headerHtml( $iwPrefix, $term ); + $out .= "<ul class='mw-search-iwresults'>"; + // TODO: Assumes interwiki results are never paginated + $position = 0; + foreach ( $results as $result ) { + $out .= $this->resultWidget->render( $result, $term, $position++ ); + } + $out .= "</ul>"; + } + + return + "<div id='mw-search-interwiki'>" . + "<div id='mw-search-interwiki-caption'>" . + $this->specialSearch->msg( 'search-interwiki-caption' )->parse() . + '</div>' . + $out . + "</div>"; + } + + /** + * Generates an appropriate HTML header for the given interwiki prefix + * + * @param string $iwPrefix Interwiki prefix of wiki to show header for + * @param string $term User provided search term + * @return string HTML + */ + protected function headerHtml( $iwPrefix, $term ) { + if ( isset( $this->customCaptions[$iwPrefix] ) ) { + $caption = $this->customCaptions[$iwPrefix]; + } else { + $interwiki = $this->iwLookup->fetch( $iwPrefix ); + $parsed = wfParseUrl( wfExpandUrl( $interwiki ? $interwiki->getURL() : '/' ) ); + $caption = $this->specialSearch->msg( 'search-interwiki-default', $parsed['host'] )->escaped(); + } + + $href = Title::makeTitle( NS_SPECIAL, 'Search', null, $iwPrefix )->getLocalURL( + [ 'search' => $term, 'fulltext' => 1 ] + ); + $searchLink = Html::rawElement( + 'a', + [ 'href' => $href ], + $this->specialSearch->msg( 'search-interwiki-more' )->escaped() + ); + + return + "<div class='mw-search-interwiki-project'>" . + "<span class='mw-search-interwiki-more'>{$searchLink}</span>" . + $caption . + "</div>"; + } + + protected function loadCustomCaptions() { + if ( $this->customCaptions !== null ) { + return; + } + + $this->customCaptions = []; + $customLines = explode( "\n", $this->specialSearch->msg( 'search-interwiki-custom' )->escaped() ); + foreach ( $customLines as $line ) { + $parts = explode( ':', $line, 2 ); + if ( count( $parts ) === 2 ) { + $this->customCaptions[$parts[0]] = $parts[1]; + } + } + } +} diff --git a/languages/Language.php b/languages/Language.php index 5bce76bfcc..067231557b 100644 --- a/languages/Language.php +++ b/languages/Language.php @@ -415,10 +415,10 @@ class Language { function __construct() { $this->mConverter = new FakeConverter( $this ); // Set the code to the name of the descendant - if ( get_class( $this ) == 'Language' ) { + if ( static::class === 'Language' ) { $this->mCode = 'en'; } else { - $this->mCode = str_replace( '_', '-', strtolower( substr( get_class( $this ), 8 ) ) ); + $this->mCode = str_replace( '_', '-', strtolower( substr( static::class, 8 ) ) ); } self::getLocalisationCache(); } @@ -2158,12 +2158,10 @@ class Language { * the date preference they're supposed to use, it should be used in * all children. * - *<code> - * function timeanddate([...], $format = true) { - * $datePreference = $this->dateFormat($format); - * [...] - * } - *</code> + * function timeanddate([...], $format = true) { + * $datePreference = $this->dateFormat($format); + * [...] + * } * * @param int|string|bool $usePrefs If true, the user's preference is used * if false, the site/language default is used @@ -3286,14 +3284,14 @@ class Language { public function parseFormattedNumber( $number ) { $s = $this->digitTransformTable(); if ( $s ) { - // eliminate empty array values such as ''. (bug 64347) + // eliminate empty array values such as ''. (T66347) $s = array_filter( $s ); $number = strtr( $number, array_flip( $s ) ); } $s = $this->separatorTransformTable(); if ( $s ) { - // eliminate empty array values such as ''. (bug 64347) + // eliminate empty array values such as ''. (T66347) $s = array_filter( $s ); $number = strtr( $number, array_flip( $s ) ); } @@ -3497,7 +3495,7 @@ class Language { $string = $ellipsis . $string; } } - # Do not truncate if the ellipsis makes the string longer/equal (bug 22181). + # Do not truncate if the ellipsis makes the string longer/equal (T24181). # This check is *not* redundant if $adjustLength, due to the single case where # LEN($ellipsis) > ABS($limit arg); $stringOriginal could be shorter than $string. if ( strlen( $string ) < strlen( $stringOriginal ) ) { @@ -3975,10 +3973,11 @@ class Language { * * @param string $str The validated block duration in English * @param User $user User object to use timezone from or null for $wgUser + * @param int $now Current timestamp, for formatting relative block durations * @return string Somehow translated block duration * @see LanguageFi.php for example implementation */ - function translateBlockExpiry( $str, User $user = null ) { + function translateBlockExpiry( $str, User $user = null, $now = 0 ) { $duration = SpecialBlock::getSuggestedDurations( $this ); foreach ( $duration as $show => $value ) { if ( strcmp( $str, $value ) == 0 ) { @@ -3995,12 +3994,13 @@ class Language { } // If all else fails, return a standard duration or timestamp description. - $time = strtotime( $str, 0 ); + $time = strtotime( $str, $now ); if ( $time === false ) { // Unknown format. Return it as-is in case. return $str; - } elseif ( $time !== strtotime( $str, 1 ) ) { // It's a relative timestamp. - // $time is relative to 0 so it's a duration length. - return $this->formatDuration( $time ); + } elseif ( $time !== strtotime( $str, $now + 1 ) ) { // It's a relative timestamp. + // The result differs based on current time, so the difference + // is a fixed duration length. + return $this->formatDuration( $time - $now ); } else { // It's an absolute timestamp. if ( $time === 0 ) { // wfTimestamp() handles 0 as current time instead of epoch. @@ -4506,7 +4506,7 @@ class Language { # such as action=raw much more expensive than they need to be. # This will hopefully cover most cases. $talk = preg_replace_callback( '/{{grammar:(.*?)\|(.*?)}}/i', - [ &$this, 'replaceGrammarInNamespace' ], $talk ); + [ $this, 'replaceGrammarInNamespace' ], $talk ); return str_replace( ' ', '_', $talk ); } diff --git a/languages/LanguageCode.php b/languages/LanguageCode.php new file mode 100644 index 0000000000..7c9da77ba6 --- /dev/null +++ b/languages/LanguageCode.php @@ -0,0 +1,54 @@ +<?php +/** + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * http://www.gnu.org/copyleft/gpl.html + * + * @file + * @ingroup Language + */ + +/** + * Methods for dealing with language codes. + * @todo Move some of the code-related static methods out of Language into this class + * + * @since 1.29 + * @ingroup Language + */ +class LanguageCode { + /** + * Returns a mapping of deprecated language codes that were used in previous + * versions of MediaWiki to up-to-date, current language codes. + * + * This array is merged into $wgDummyLanguageCodes in Setup.php, along with + * the fake language codes 'qqq' and 'qqx', which are used internally by + * MediaWiki's localisation system. + * + * @return string[] + */ + 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', + ]; + } +} diff --git a/languages/LanguageConverter.php b/languages/LanguageConverter.php index 06fec44838..77210155fc 100644 --- a/languages/LanguageConverter.php +++ b/languages/LanguageConverter.php @@ -99,13 +99,13 @@ class LanguageConverter { // '+' add rules for alltext // 'E' the gave flags is error // these flags above are reserved for program - 'A' => 'A', // add rule for convert code (all text convert) - 'T' => 'T', // title convert - 'R' => 'R', // raw content - 'D' => 'D', // convert description (subclass implement) - '-' => '-', // remove convert (not implement) - 'H' => 'H', // add rule for convert code (but no display in placed code) - 'N' => 'N' // current variant name + 'A' => 'A', // add rule for convert code (all text convert) + 'T' => 'T', // title convert + 'R' => 'R', // raw content + 'D' => 'D', // convert description (subclass implement) + '-' => '-', // remove convert (not implement) + 'H' => 'H', // add rule for convert code (but no display in placed code) + 'N' => 'N', // current variant name ]; $this->mFlags = array_merge( $defaultflags, $flags ); foreach ( $this->mVariants as $v ) { @@ -357,10 +357,10 @@ class LanguageConverter { } /* we convert everything except: - 1. HTML markups (anything between < and >) - 2. HTML entities - 3. placeholders created by the parser - */ + * 1. HTML markups (anything between < and >) + * 2. HTML entities + * 3. placeholders created by the parser + */ $marker = '|' . Parser::MARKER_PREFIX . '[\-a-zA-Z0-9]+'; // this one is needed when the text is inside an HTML markup @@ -380,6 +380,7 @@ class LanguageConverter { $literalBlob = ''; // Guard against delimiter nulls in the input + // (should never happen: see T159174) $text = str_replace( "\000", '', $text ); $markupMatches = null; @@ -489,7 +490,7 @@ class LanguageConverter { protected function applyManualConv( $convRule ) { // Use syntax -{T|zh-cn:TitleCN; zh-tw:TitleTw}- to custom // title conversion. - // Bug 24072: $mConvRuleTitle was overwritten by other manual + // T26072: $mConvRuleTitle was overwritten by other manual // rule(s) not for title, this breaks the title conversion. $newConvRuleTitle = $convRule->getTitle(); if ( $newConvRuleTitle ) { @@ -844,9 +845,8 @@ class LanguageConverter { * @throws MWException */ function loadDefaultTables() { - $name = get_class( $this ); - - throw new MWException( "Must implement loadDefaultTables() method in class $name" ); + $class = static::class; + throw new MWException( "Must implement loadDefaultTables() method in class $class" ); } /** @@ -1085,12 +1085,12 @@ class LanguageConverter { // text should be splited by ";" only if a valid variant // name exist after the markup, for example: // -{zh-hans:<span style="font-size:120%;">xxx</span>;zh-hant:\ - // <span style="font-size:120%;">yyy</span>;}- + // <span style="font-size:120%;">yyy</span>;}- // we should split it as: // [ - // [0] => 'zh-hans:<span style="font-size:120%;">xxx</span>' - // [1] => 'zh-hant:<span style="font-size:120%;">yyy</span>' - // [2] => '' + // [0] => 'zh-hans:<span style="font-size:120%;">xxx</span>' + // [1] => 'zh-hant:<span style="font-size:120%;">yyy</span>' + // [2] => '' // ] $pat = '/;\s*(?='; foreach ( $this->mVariants as $variant ) { diff --git a/languages/classes/LanguageAr.php b/languages/classes/LanguageAr.php index 858a7be880..90e37516e8 100644 --- a/languages/classes/LanguageAr.php +++ b/languages/classes/LanguageAr.php @@ -30,7 +30,7 @@ class LanguageAr extends Language { /** - * Temporary hack for bug 9413: replace Arabic presentation forms with their + * Temporary hack for T11413: replace Arabic presentation forms with their * standard equivalents. * * @todo FIXME: This is language-specific for now only to avoid the negative diff --git a/languages/classes/LanguageFi.php b/languages/classes/LanguageFi.php index 338853683c..54ff421634 100644 --- a/languages/classes/LanguageFi.php +++ b/languages/classes/LanguageFi.php @@ -85,9 +85,10 @@ class LanguageFi extends Language { /** * @param string $str * @param User $user User object to use timezone from or null for $wgUser + * @param int $now Current timestamp, for formatting relative block durations * @return string */ - function translateBlockExpiry( $str, User $user = null ) { + function translateBlockExpiry( $str, User $user = null, $now = 0 ) { /* 'ago', 'now', 'today', 'this', 'next', 'first', 'third', 'fourth', 'fifth', 'sixth', 'seventh', 'eighth', 'ninth', diff --git a/languages/classes/LanguageKsh.php b/languages/classes/LanguageKsh.php index 76568c26be..9ef53e5459 100644 --- a/languages/classes/LanguageKsh.php +++ b/languages/classes/LanguageKsh.php @@ -63,13 +63,11 @@ class LanguageKsh extends Language { * * Possible values for the type of genitive are: * Sing, Iehr prepositioned genitive = possessive dative - * Vun, Fon, -omitted- postpositioned genitive - * = preposition "vun" with dative + * Vun, Fon, -omitted- postpositioned genitive = preposition "vun" with dative * * Values of case overrides & prepositions, in the order of preceedence: * Sing, Iehr possessive dative = prepositioned genitive - * Vun, Fon preposition "vun" with dative - * = postpositioned genitive + * Vun, Fon preposition "vun" with dative = postpositioned genitive * En, em preposition "en" with dative * * Values for object gender specifiers of the possessive dative, or diff --git a/languages/classes/LanguageLa.php b/languages/classes/LanguageLa.php index d1963e1ad4..f4082af4ae 100644 --- a/languages/classes/LanguageLa.php +++ b/languages/classes/LanguageLa.php @@ -50,12 +50,12 @@ class LanguageLa extends Language { case 'genitive': // only a few declensions, and even for those mostly the singular only $in = [ - '/u[ms]$/', # 2nd declension singular - '/ommunia$/', # 3rd declension neuter plural (partly) - '/a$/', # 1st declension singular + '/u[ms]$/', # 2nd declension singular + '/ommunia$/', # 3rd declension neuter plural (partly) + '/a$/', # 1st declension singular '/libri$/', '/nuntii$/', '/datae$/', # 2nd declension plural (partly) - '/tio$/', '/ns$/', '/as$/', # 3rd declension singular (partly) - '/es$/' # 5th declension singular + '/tio$/', '/ns$/', '/as$/', # 3rd declension singular (partly) + '/es$/' # 5th declension singular ]; $out = [ 'i', @@ -69,12 +69,12 @@ class LanguageLa extends Language { case 'accusative': // only a few declensions, and even for those mostly the singular only $in = [ - '/u[ms]$/', # 2nd declension singular - '/a$/', # 1st declension singular - '/ommuniam$/', # 3rd declension neuter plural (partly) + '/u[ms]$/', # 2nd declension singular + '/a$/', # 1st declension singular + '/ommuniam$/', # 3rd declension neuter plural (partly) '/libri$/', '/nuntii$/', '/datam$/', # 2nd declension plural (partly) - '/tio$/', '/ns$/', '/as$/', # 3rd declension singular (partly) - '/es$/' # 5th declension singular + '/tio$/', '/ns$/', '/as$/', # 3rd declension singular (partly) + '/es$/' # 5th declension singular ]; $out = [ 'um', @@ -88,12 +88,12 @@ class LanguageLa extends Language { case 'ablative': // only a few declensions, and even for those mostly the singular only $in = [ - '/u[ms]$/', # 2nd declension singular - '/ommunia$/', # 3rd declension neuter plural (partly) - '/a$/', # 1st declension singular - '/libri$/', '/nuntii$/', '/data$/', # 2nd declension plural (partly) - '/tio$/', '/ns$/', '/as$/', # 3rd declension singular (partly) - '/es$/' # 5th declension singular + '/u[ms]$/', # 2nd declension singular + '/ommunia$/', # 3rd declension neuter plural (partly) + '/a$/', # 1st declension singular + '/libri$/', '/nuntii$/', '/data$/', # 2nd declension plural (partly) + '/tio$/', '/ns$/', '/as$/', # 3rd declension singular (partly) + '/es$/' # 5th declension singular ]; $out = [ 'o', diff --git a/languages/classes/LanguageMl.php b/languages/classes/LanguageMl.php index cd39378b14..df894a14a7 100644 --- a/languages/classes/LanguageMl.php +++ b/languages/classes/LanguageMl.php @@ -31,8 +31,8 @@ class LanguageMl extends Language { * Temporary hack for the issue described at * http://permalink.gmane.org/gmane.science.linguistics.wikipedia.technical/46396 * Convert Unicode 5.0 style Malayalam input to Unicode 5.1. Similar to - * bug 9413. Also fixes miscellaneous problems due to mishandling of ZWJ, - * e.g. bug 11162. + * T11413. Also fixes miscellaneous problems due to mishandling of ZWJ, + * e.g. T13162. * * @todo FIXME: This is language-specific for now only to avoid the negative * performance impact of enabling it for all languages. diff --git a/languages/classes/LanguageTr.php b/languages/classes/LanguageTr.php index 42ee44d8bc..49ee88ac8d 100644 --- a/languages/classes/LanguageTr.php +++ b/languages/classes/LanguageTr.php @@ -27,8 +27,7 @@ * Turkish has two different i, one with a dot and another without a dot. They * are totally different letters in this language, so we have to override the * ucfirst and lcfirst methods. - * See https://en.wikipedia.org/wiki/Dotted_and_dotless_I - * and @bug 28040 + * See https://en.wikipedia.org/wiki/Dotted_and_dotless_I and T30040 * @ingroup Language */ class LanguageTr extends Language { diff --git a/languages/data/Names.php b/languages/data/Names.php index 055745511e..1c350d065d 100644 --- a/languages/data/Names.php +++ b/languages/data/Names.php @@ -60,7 +60,7 @@ class Names { 'als' => 'Alemannisch', # Alemannic -- not a valid code, for compatibility. See gsw. 'am' => 'አማርኛ', # Amharic 'an' => 'aragonés', # Aragonese - 'ang' => 'Ænglisc', # Old English, bug 23283 + 'ang' => 'Ænglisc', # Old English, T25283 'anp' => 'अङ्गिका', # Angika 'ar' => 'العربية', # Arabic 'arc' => 'ܐܪܡܝܐ', # Aramaic @@ -274,7 +274,7 @@ class Names { 'lus' => 'Mizo Å£awng', # Mizo/Lushai 'luz' => 'لئری دوٙمینی', # Southern Luri 'lv' => 'latvieÅ¡u', # Latvian - 'lzh' => '文言', # Literary Chinese, bug 8217 + 'lzh' => '文言', # Literary Chinese, T10217 'lzz' => 'Lazuri', # Laz 'mai' => 'मैथिली', # Maithili 'map-bms' => 'Basa Banyumasan', # Banyumasan @@ -299,8 +299,8 @@ class Names { 'mzn' => 'مازِرونی', # Mazanderani 'na' => 'Dorerin Naoero', # Nauruan 'nah' => 'Nāhuatl', # Nahuatl (not in ISO 639-3) - 'nan' => 'Bân-lâm-gú', # Min-nan, bug 8217 - 'nap' => 'Napulitano', # Neapolitan, bug 43793 + 'nan' => 'Bân-lâm-gú', # Min-nan, T10217 + 'nap' => 'Napulitano', # Neapolitan, T45793 'nb' => 'norsk bokmÃ¥l', # Norwegian (Bokmal) 'nds' => 'Plattdüütsch', # Low German ''or'' Low Saxon 'nds-nl' => 'Nedersaksies', # aka Nedersaksisch: Dutch Low Saxon @@ -321,7 +321,7 @@ class Names { 'olo' => 'Livvinkarjala', # Livvi-Karelian 'om' => 'Oromoo', # Oromo 'or' => 'ଓଡ଼ିଆ', # Oriya - 'os' => 'Ирон', # Ossetic, bug 29091 + 'os' => 'Ирон', # Ossetic, T31091 'pa' => 'ਪੰਜਾਬੀ', # Eastern Punjabi (Gurmukhi script) (pan) 'pag' => 'Pangasinan', # Pangasinan 'pam' => 'Kapampangan', # Pampanga @@ -456,17 +456,17 @@ class Names { 'za' => 'Vahcuengh', # Zhuang 'zea' => 'Zeêuws', # Zeeuws/Zeaws 'zh' => '中文', # (Zhōng Wén) - Chinese - 'zh-classical' => '文言', # Classical Chinese/Literary Chinese -- (see bug 8217) + 'zh-classical' => '文言', # Classical Chinese/Literary Chinese -- (see T10217) 'zh-cn' => "中文(中国大陆)\xE2\x80\x8E", # Chinese (PRC) 'zh-hans' => "中文(简体)\xE2\x80\x8E", # Mandarin Chinese (Simplified Chinese script) (cmn-hans) 'zh-hant' => "中文(繁體)\xE2\x80\x8E", # Mandarin Chinese (Traditional Chinese script) (cmn-hant) 'zh-hk' => "中文(香港)\xE2\x80\x8E", # Chinese (Hong Kong) - 'zh-min-nan' => 'Bân-lâm-gú', # Min-nan -- (see bug 8217) + 'zh-min-nan' => 'Bân-lâm-gú', # Min-nan -- (see T10217) 'zh-mo' => "中文(澳門)\xE2\x80\x8E", # Chinese (Macau) 'zh-my' => "中文(马来西亚)\xE2\x80\x8E", # Chinese (Malaysia) 'zh-sg' => "中文(新加坡)\xE2\x80\x8E", # Chinese (Singapore) 'zh-tw' => "中文(台灣)\xE2\x80\x8E", # Chinese (Taiwan) - 'zh-yue' => '粵語', # Cantonese -- (see bug 8217) + 'zh-yue' => '粵語', # Cantonese -- (see T10217) 'zu' => 'isiZulu' # Zulu ]; } diff --git a/languages/data/ZhConversion.php b/languages/data/ZhConversion.php index 4594385f2b..55813ae688 100644 --- a/languages/data/ZhConversion.php +++ b/languages/data/ZhConversion.php @@ -542,7 +542,6 @@ public static $zh2Hant = [ '帼' => '幗', '幂' => '冪', '并' => '並', -'幺' => '么', '广' => '廣', '庄' => '莊', '庆' => '慶', @@ -3009,7 +3008,6 @@ public static $zh2Hant = [ '0只支援' => '0只支援', '0周后' => '0周後', '0天后' => '0天後', -'0å¹´' => '0å¹´', '0只' => '0隻', '0余' => '0餘', '0出' => '0é½£', @@ -3017,63 +3015,54 @@ public static $zh2Hant = [ '1只支援' => '1只支援', '1周后' => '1周後', '1天后' => '1天後', -'1å¹´' => '1å¹´', '1只' => '1隻', '1余' => '1餘', '2只支持' => '2只支持', '2只支援' => '2只支援', '2周后' => '2周後', '2天后' => '2天後', -'2å¹´' => '2å¹´', '2只' => '2隻', '2余' => '2餘', '3只支持' => '3只支持', '3只支援' => '3只支援', '3周后' => '3周後', '3天后' => '3天後', -'3å¹´' => '3å¹´', '3只' => '3隻', '3余' => '3餘', '4只支持' => '4只支持', '4只支援' => '4只支援', '4周后' => '4周後', '4天后' => '4天後', -'4å¹´' => '4å¹´', '4只' => '4隻', '4余' => '4餘', '5只支持' => '5只支持', '5只支援' => '5只支援', '5周后' => '5周後', '5天后' => '5天後', -'5å¹´' => '5å¹´', '5只' => '5隻', '5余' => '5餘', '6只支持' => '6只支持', '6只支援' => '6只支援', '6周后' => '6周後', '6天后' => '6天後', -'6å¹´' => '6å¹´', '6只' => '6隻', '6余' => '6餘', '7只支持' => '7只支持', '7只支援' => '7只支援', '7周后' => '7周後', '7天后' => '7天後', -'7å¹´' => '7å¹´', '7只' => '7隻', '7余' => '7餘', '8只支持' => '8只支持', '8只支援' => '8只支援', '8周后' => '8周後', '8天后' => '8天後', -'8å¹´' => '8å¹´', '8只' => '8隻', '8余' => '8餘', '9只支持' => '9只支持', '9只支援' => '9只支援', '9周后' => '9周後', '9天后' => '9天後', -'9å¹´' => '9å¹´', '9只' => '9隻', '9余' => '9餘', '·范' => '·范', @@ -3081,7 +3070,6 @@ public static $zh2Hant = [ '、面点' => '、麵點', '。个中' => '。箇中', '〇周后' => '〇周後', -'〇年' => '〇年', '〇只' => '〇隻', '〇余' => '〇餘', '“' => '「', @@ -3108,8 +3096,6 @@ public static $zh2Hant = [ '一干弟兄' => '一干弟兄', '一干弟子' => '一干弟子', '一干部下' => '一干部下', -'一年' => '一年', -'一年里' => '一年裡', '一斗斗' => '一斗斗', '一树百获' => '一樹百穫', '一准' => '一準', @@ -3138,7 +3124,6 @@ public static $zh2Hant = [ '七个' => '七個', '七周后' => '七周後', '七天后' => '七天後', -'七年' => '七年', '七情六欲' => '七情六慾', '七扎' => '七紮', '七只' => '七隻', @@ -3148,7 +3133,6 @@ public static $zh2Hant = [ '三个' => '三個', '三周后' => '三周後', '三天后' => '三天後', -'三年' => '三年', '三征七辟' => '三徵七辟', '三准' => '三準', '三扎' => '三紮', @@ -3161,6 +3145,7 @@ public static $zh2Hant = [ '上梁山' => '上梁山', '上梁' => '上樑', '上台面' => '上檯面', +'上签了' => '上簽了', '上签名' => '上簽名', '上签字' => '上簽字', '上签定' => '上簽定', @@ -3175,9 +3160,9 @@ public static $zh2Hant = [ '上课钟' => '上課鐘', '上面糊' => '上面糊', '下文里' => '下文裡', -'下于' => '下於', '下梁' => '下樑', '下注解' => '下注解', +'下签了' => '下簽了', '下签名' => '下簽名', '下签字' => '下簽字', '下签定' => '下簽定', @@ -3230,7 +3215,6 @@ public static $zh2Hant = [ '丑月' => '丑月', '丑表功' => '丑表功', '丑角' => '丑角', -'且于' => '且於', '世界杯' => '世界盃', '世纪里' => '世紀裡', '世纪钟' => '世紀鐘', @@ -3253,7 +3237,7 @@ public static $zh2Hant = [ '中岳' => '中嶽', '中庄子' => '中庄子', '中文里' => '中文裡', -'中于' => '中於', +'中签了' => '中簽了', '中签名' => '中簽名', '中签字' => '中簽字', '中签定' => '中簽定', @@ -3286,20 +3270,34 @@ public static $zh2Hant = [ '主钟差' => '主鐘差', '主钟曲线' => '主鐘曲線', '乃系' => '乃係', -'么么唱唱' => '么么唱唱', '么九' => '么九', -'么儿' => '么兒', +'么二三' => '么二三', +'么元' => '么元', +'么兒' => '么兒', '么半' => '么半', +'么叔' => '么叔', '么喝' => '么喝', '么女' => '么女', '么妹' => '么妹', +'么姓' => '么姓', +'么姨' => '么姨', +'么娘' => '么娘', +'么媽' => '么媽', +'么孃' => '么孃', '么子' => '么子', +'么小' => '么小', '么弟' => '么弟', '么正' => '么正', -'么爷' => '么爺', +'么氏' => '么氏', +'么爸' => '么爸', +'么爹' => '么爹', +'么爺' => '么爺', +'么篇' => '么篇', +'么舅' => '么舅', +'么蛾子' => '么蛾子', '么雞' => '么雞', -'么么小丑' => '么麼小丑', -'么麼小丑' => '么麼小丑', +'么鳳' => '么鳳', +'么麼' => '么麼', '之一只' => '之一只', '之二只' => '之二只', '之八九只' => '之八九只', @@ -3313,7 +3311,6 @@ public static $zh2Hant = [ '九个' => '九個', '九周后' => '九周後', '九天后' => '九天後', -'九年' => '九年', '九谷' => '九穀', '九扎' => '九紮', '九只' => '九隻', @@ -3486,7 +3483,6 @@ public static $zh2Hant = [ '二只得' => '二只得', '二周后' => '二周後', '二天后' => '二天後', -'二年' => '二年', '二缶钟惑' => '二缶鐘惑', '二老板' => '二老板', '二虎相斗' => '二虎相鬥', @@ -3712,7 +3708,6 @@ public static $zh2Hant = [ '五天后' => '五天後', '五峰县' => '五峯縣', '五岳' => '五嶽', -'五年' => '五年', '五谷' => '五穀', '五扎' => '五紮', '五脏' => '五臟', @@ -3723,7 +3718,6 @@ public static $zh2Hant = [ '五余' => '五餘', '井干' => '井幹', '井里' => '井裡', -'亚于' => '亞於', '交托' => '交託', '交游' => '交遊', '交哄' => '交鬨', @@ -3758,8 +3752,6 @@ public static $zh2Hant = [ '价川' => '价川', '任何钟' => '任何鐘', '任何钟表' => '任何鐘錶', -'任教于' => '任教於', -'任于' => '任於', '仿制' => '仿製', '伊于湖底' => '伊于湖底', '伊府面' => '伊府麵', @@ -3781,9 +3773,7 @@ public static $zh2Hant = [ '休征' => '休徵', '伙头' => '伙頭', '伴游' => '伴遊', -'似于' => '似於', '但云' => '但云', -'位于' => '位於', '位准' => '位準', '低洼' => '低洼', '住扎' => '住紮', @@ -3836,13 +3826,11 @@ public static $zh2Hant = [ '并购' => '併購', '并骨' => '併骨', '使其斗' => '使其鬥', -'来于' => '來於', '侍仆' => '侍僕', '依依不舍' => '依依不捨', '依托' => '依託', '侵并' => '侵併', '局促' => '侷促', -'便于' => '便於', '系数' => '係數', '系为' => '係為', '保险柜' => '保險柜', @@ -3882,7 +3870,6 @@ public static $zh2Hant = [ '傲霜斗雪' => '傲霜鬥雪', '传位于四太子' => '傳位于四太子', '傳位于四太子' => '傳位于四太子', -'传于' => '傳於', '债累累' => '債纍纍', '傻里傻气' => '傻裡傻氣', '仅余' => '僅餘', @@ -3919,7 +3906,6 @@ public static $zh2Hant = [ '亿个' => '億個', '亿周后' => '億周後', '亿天后' => '億天後', -'亿年' => '億年', '亿只' => '億隻', '亿余' => '億餘', '俭仆' => '儉僕', @@ -3941,7 +3927,6 @@ public static $zh2Hant = [ '尽自' => '儘自', '尽速' => '儘速', '尽量' => '儘量', -'优于' => '優於', '优游' => '優遊', '兀术' => '兀朮', '元凶' => '元兇', @@ -3989,7 +3974,6 @@ public static $zh2Hant = [ '两个' => '兩個', '两周后' => '兩周後', '两天后' => '兩天後', -'两年' => '兩年', '两杆' => '兩桿', '两扎' => '兩紮', '两虎共斗' => '兩虎共鬥', @@ -4001,7 +3985,6 @@ public static $zh2Hant = [ '八周后' => '八周後', '八天后' => '八天後', '八字胡' => '八字鬍', -'八年' => '八年', '八扎' => '八紮', '八蜡' => '八蜡', '八只' => '八隻', @@ -4020,7 +4003,6 @@ public static $zh2Hant = [ '六个' => '六個', '六周后' => '六周後', '六天后' => '六天後', -'六年' => '六年', '六楼后座' => '六樓后座', '六樓后座' => '六樓后座', '六谷' => '六穀', @@ -4072,7 +4054,6 @@ public static $zh2Hant = [ '出乖弄丑' => '出乖弄醜', '出乖露丑' => '出乖露醜', '出征收' => '出征收', -'出于' => '出於', '出游' => '出遊', '出丑' => '出醜', '函数里' => '函數裡', @@ -4081,7 +4062,6 @@ public static $zh2Hant = [ '分多钟' => '分多鐘', '分子钟' => '分子鐘', '分子云' => '分子雲', -'分布于' => '分布於', '分钟' => '分鐘', '分钟里' => '分鐘裡', '刑余' => '刑餘', @@ -4127,8 +4107,6 @@ public static $zh2Hant = [ '判断发' => '判斷發', '别辟' => '別闢', '利欲' => '利慾', -'利于' => '利於', -'刮来刮去' => '刮來刮去', '刮起来' => '刮起來', '刮胡' => '刮鬍', '到山里' => '到山裡', @@ -4177,11 +4155,8 @@ public static $zh2Hant = [ '力争上游' => '力爭上遊', '功勋' => '功勳', '加氢精制' => '加氫精制', -'劣于' => '劣於', -'助于' => '助於', '劫余' => '劫餘', '勃郁' => '勃鬱', -'胜于' => '勝於', '勤仆' => '勤僕', '勤朴' => '勤樸', '勋劳' => '勳勞', @@ -4203,7 +4178,6 @@ public static $zh2Hant = [ '北回线' => '北迴線', '北回铁路' => '北迴鐵路', '匪干' => '匪幹', -'匿于' => '匿於', '区里有' => '區裡有', '区里的' => '區裡的', '十个' => '十個', @@ -4214,7 +4188,6 @@ public static $zh2Hant = [ '十出头' => '十出頭', '十周后' => '十周後', '十天后' => '十天後', -'十年' => '十年', '十扎' => '十紮', '十只' => '十隻', '十余' => '十餘', @@ -4229,7 +4202,6 @@ public static $zh2Hant = [ '千只足夠' => '千只足夠', '千周后' => '千周後', '千天后' => '千天後', -'千年' => '千年', '千扎' => '千紮', '千回百折' => '千迴百折', '千回百转' => '千迴百轉', @@ -4240,7 +4212,6 @@ public static $zh2Hant = [ '半制品' => '半制品', '半只可' => '半只可', '半只够' => '半只夠', -'半于' => '半於', '半只' => '半隻', '协防' => '協防', '南京钟' => '南京鐘', @@ -4260,7 +4231,6 @@ public static $zh2Hant = [ '印累绶若' => '印纍綬若', '印制' => '印製', '印鉴' => '印鑑', -'危于' => '危於', '卵与石斗' => '卵與石鬥', '卷须' => '卷鬚', '厂部' => '厂部', @@ -4279,7 +4249,6 @@ public static $zh2Hant = [ '反复' => '反覆', '反覆' => '反覆', '取舍' => '取捨', -'取决于' => '取決於', '受雇' => '受僱', '受托' => '受託', '丛林里' => '叢林裡', @@ -4385,7 +4354,6 @@ public static $zh2Hant = [ '吊钟' => '吊鐘', '同人志' => '同人誌', '同伙' => '同夥', -'同于' => '同於', '同余' => '同餘', '名单于' => '名單於', '后冠' => '后冠', @@ -4483,7 +4451,6 @@ public static $zh2Hant = [ '喂喲' => '喂喲', '喂!' => '喂!', '喂,' => '喂,', -'善于' => '善於', '喜欢表' => '喜歡錶', '喜欢钟' => '喜歡鐘', '喜欢钟表' => '喜歡鐘錶', @@ -4517,7 +4484,6 @@ public static $zh2Hant = [ '向迩' => '嚮邇', '严云农' => '嚴云農', '嚴云農' => '嚴云農', -'严于' => '嚴於', '嚼谷' => '嚼穀', '啰啰苏苏' => '囉囉囌囌', '啰苏' => '囉囌', @@ -4529,7 +4495,6 @@ public static $zh2Hant = [ '四分历史' => '四分歷史', '四周后' => '四周後', '四天后' => '四天後', -'四年' => '四年', '四舍五入' => '四捨五入', '四舍六入' => '四捨六入', '四杆铁笔' => '四桿鐵筆', @@ -4551,19 +4516,15 @@ public static $zh2Hant = [ '回复邮件' => '回覆郵件', '回复:' => '回覆:', '回游' => '回遊', -'因于' => '因於', '困倦起来' => '困倦起來', -'困于' => '困於', '困兽之斗' => '困獸之鬥', '困兽犹斗' => '困獸猶鬥', '困斗' => '困鬥', '固定制' => '固定制', '固征' => '固徵', -'囿于' => '囿於', '圈梁' => '圈樑', '圈里' => '圈裡', '国之桢干' => '國之楨榦', -'国于' => '國於', '国历' => '國曆', '国历代' => '國歷代', '国历任' => '國歷任', @@ -4582,22 +4543,21 @@ public static $zh2Hant = [ '土制' => '土製', '在制品' => '在制品', '在山里' => '在山裡', -'在于' => '在於', '地图里' => '地圖裡', '地心历表' => '地心曆表', '地志' => '地誌', '地丑德齐' => '地醜德齊', -'坏于' => '坏於', -'坏於' => '坏於', +'坐台鐵' => '坐台鐵', +'坐台铁' => '坐台鐵', '坐如钟' => '坐如鐘', '坐台' => '坐檯', '坐钟' => '坐鐘', +'坑口里' => '坑口里', '坑里' => '坑裡', '坤范' => '坤範', '坦荡' => '坦蕩', '坦荡荡' => '坦蕩蕩', '坱郁' => '坱鬱', -'垂于' => '垂於', '垂范' => '垂範', '垂发' => '垂髮', '型范' => '型範', @@ -4611,7 +4571,6 @@ public static $zh2Hant = [ '埔里社' => '埔裏社', '域里' => '域裡', '基干' => '基幹', -'基于' => '基於', '基准' => '基準', '坚致' => '堅緻', '堙淀' => '堙澱', @@ -4663,7 +4622,6 @@ public static $zh2Hant = [ '多只须' => '多只須', '多周后' => '多周後', '多天后' => '多天後', -'多于' => '多於', '多冲' => '多衝', '多丑' => '多醜', '多只' => '多隻', @@ -4766,7 +4724,6 @@ public static $zh2Hant = [ '好斗胆' => '好斗膽', '好斗膽' => '好斗膽', '好斗蓬' => '好斗蓬', -'好于' => '好於', '好困' => '好睏', '好签' => '好籤', '好丑' => '好醜', @@ -4776,7 +4733,7 @@ public static $zh2Hant = [ '妖后' => '妖后', '妖气冲天' => '妖氣衝天', '妆台' => '妝檯', -'始于' => '始於', +'姓么' => '姓么', '委托' => '委託', '委托书' => '委託書', '奸夫' => '姦夫', @@ -4787,7 +4744,6 @@ public static $zh2Hant = [ '奸淫' => '姦淫', '威棱' => '威稜', '婢仆' => '婢僕', -'嫁祸于' => '嫁禍於', '嫌凶' => '嫌兇', '嫌好道丑' => '嫌好道醜', '嫩姜' => '嫩薑', @@ -4803,7 +4759,6 @@ public static $zh2Hant = [ '字码表' => '字碼表', '字里行间' => '字裡行間', '存折' => '存摺', -'存于' => '存於', '孛里海' => '孛里海', '孝惠后' => '孝惠后', '孙杰' => '孫杰', @@ -4811,7 +4766,6 @@ public static $zh2Hant = [ '学家' => '學家', '学里' => '學裡', '宇宙志' => '宇宙誌', -'安于' => '安於', '安沈铁路' => '安瀋鐵路', '宋王台' => '宋王臺', '宗周钟' => '宗周鐘', @@ -4819,19 +4773,16 @@ public static $zh2Hant = [ '官地为采' => '官地為寀', '官历' => '官曆', '官历史' => '官歷史', -'定于' => '定於', '定准' => '定準', '定制' => '定製', '宜云' => '宜云', '宣泄' => '宣洩', '宦游' => '宦遊', '宫里' => '宮裡', -'害于' => '害於', '宴游' => '宴遊', '家仆' => '家僕', '家里' => '家裡', '家丑' => '家醜', -'容于' => '容於', '容范' => '容範', '宿舍' => '宿舍', '寄托在' => '寄托在', @@ -4841,14 +4792,12 @@ public static $zh2Hant = [ '寇仇' => '寇讎', '富余' => '富餘', '寒栗' => '寒慄', -'寒于' => '寒於', -'寓于' => '寓於', +'寓禁于征' => '寓禁於徵', '寡欲' => '寡慾', '实干' => '實幹', '实累累' => '實纍纍', '实验里' => '實驗裡', '写字台' => '寫字檯', -'宽于' => '寬於', '宽余' => '寬餘', '宽松' => '寬鬆', '宽松松' => '寬鬆鬆', @@ -4870,7 +4819,6 @@ public static $zh2Hant = [ '尊后' => '尊后', '对不准' => '對不準', '对折' => '對摺', -'对于' => '對於', '对准' => '對準', '对准表' => '對準錶', '对准钟' => '對準鐘', @@ -4930,9 +4878,7 @@ public static $zh2Hant = [ '屋梁' => '屋樑', '屋里' => '屋裡', '屏风后' => '屏風後', -'屑于' => '屑於', '屡顾尔仆' => '屢顧爾僕', -'属于' => '屬於', '属托' => '屬託', '屯扎' => '屯紮', '屯里' => '屯裡', @@ -4982,11 +4928,11 @@ public static $zh2Hant = [ '巧历史' => '巧歷史', '巨制' => '巨製', '差之毫厘' => '差之毫厘', -'差于' => '差於', '己丑' => '己丑', '已占卜' => '已占卜', '已占算' => '已占算', '巴尔干' => '巴爾幹', +'巴而术' => '巴而朮', '巷里' => '巷裡', '市里的' => '市裡的', '布谷' => '布穀', @@ -5018,8 +4964,6 @@ public static $zh2Hant = [ '并州' => '并州', '并日而食' => '并日而食', '并迭' => '并迭', -'幸免于难' => '幸免於難', -'幸于' => '幸於', '幸运胡' => '幸運鬍', '干上' => '幹上', '干下去' => '幹下去', @@ -5106,7 +5050,6 @@ public static $zh2Hant = [ '广舍' => '廣捨', '广播里' => '廣播裡', '延历' => '延曆', -'建于' => '建於', '建筑前' => '建築前', '建筑后' => '建築後', '弄干' => '弄乾', @@ -5151,7 +5094,6 @@ public static $zh2Hant = [ '引斗' => '引鬥', '弘历' => '弘曆', '弘历史' => '弘歷史', -'弱于' => '弱於', '弱水三千只取一瓢' => '弱水三千只取一瓢', '张三丰' => '張三丰', '張三丰' => '張三丰', @@ -5166,7 +5108,6 @@ public static $zh2Hant = [ '强制作用' => '強制作用', '强奸' => '強姦', '强干' => 'å¼·å¹¹', -'强于' => '強於', '别扭' => '彆扭', '别拗' => '彆拗', '别气' => '彆氣', @@ -5177,11 +5118,9 @@ public static $zh2Hant = [ '汇纂' => '彙纂', '汇辑' => '彙輯', '形单影只' => '形單影隻', -'形于' => '形於', '彭于晏' => '彭于晏', '影后' => '影后', '影相吊' => '影相弔', -'役于' => '役於', '往复式' => '往復式', '往日无仇' => '往日無讎', '往里' => '往裡', @@ -5205,7 +5144,6 @@ public static $zh2Hant = [ '从仆' => '從僕', '从图里' => '從圖裡', '从山里' => '從山裡', -'从于' => '從於', '从里到外' => '從裡到外', '从里向外' => '從裡向外', '御岳山' => '御嶽山', @@ -5262,7 +5200,6 @@ public static $zh2Hant = [ '征风召雨' => '徵風召雨', '征验' => '徵驗', '心愿' => '心愿', -'心于' => '心於', '心理' => '心理', '心细如发' => '心細如髮', '心系一' => '心繫一', @@ -5389,18 +5326,14 @@ public static $zh2Hant = [ '忙里偷闲' => '忙裡偷閒', '忠人之托' => '忠人之托', '忠仆' => '忠僕', -'忠于' => '忠於', '快快当当' => '快快當當', '快冲' => '快衝', '怎么干' => '怎麼幹', -'怒于' => '怒於', '怒气冲天' => '怒氣衝天', '怒火冲天' => '怒火衝天', '怒发冲冠' => '怒髮衝冠', '怜奈' => '怜奈', '思如泉涌' => '思如泉湧', -'怠于' => '怠於', -'急于' => '急於', '急冲而下' => '急衝而下', '性别扭曲' => '性別扭曲', '性征' => '性徵', @@ -5446,7 +5379,6 @@ public static $zh2Hant = [ '愛河里花子' => '愛河里花子', '爱河里花子' => '愛河里花子', '爱困' => '愛睏', -'感于' => '感於', '愿朴' => '愿樸', '愿樸' => '愿樸', '愿而恭' => '愿而恭', @@ -5491,13 +5423,11 @@ public static $zh2Hant = [ '悬钟' => '懸鐘', '懿范' => '懿範', '恋恋不舍' => '戀戀不捨', -'成于' => '成於', '成于思' => '成於思', '戬谷' => '戩穀', '截发' => '截髮', '战天斗地' => '戰天鬥地', '战栗' => '戰慄', -'战于' => '戰於', '战斗' => '戰鬥', '戏里' => '戲裡', '戲院里' => '戲院里', @@ -5604,14 +5534,10 @@ public static $zh2Hant = [ '拉面部' => '拉面部', '拉面' => '拉麵', '拌面' => '拌麵', -'拒人于' => '拒人於', -'拒于' => '拒於', '拓朴' => '拓樸', '拔发' => '拔髮', '拔须' => '拔鬚', '拗别' => '拗彆', -'拘于' => '拘於', -'拙于' => '拙於', '拙朴' => '拙樸', '拼却' => '拚卻', '拼命' => '拚命', @@ -5794,10 +5720,8 @@ public static $zh2Hant = [ '提心吊胆' => '提心弔膽', '提摩太后书' => '提摩太後書', '提高后' => '提高後', -'插于' => '插於', '换签' => '換籤', '换只' => '換隻', -'换发' => '換髮', '握发' => '握髮', '揩干' => '揩乾', '揪采' => '揪採', @@ -5807,7 +5731,6 @@ public static $zh2Hant = [ '挥手表' => '揮手表', '揮手表' => '揮手表', '搋面' => '搋麵', -'损于' => '損於', '搏斗' => '搏鬥', '捣鬼吊白' => '搗鬼弔白', '扼肮' => '搤肮', @@ -5841,7 +5764,6 @@ public static $zh2Hant = [ '撤并' => '撤併', '拨谷' => '撥穀', '撩斗' => '撩鬥', -'播于' => '播於', '扑冬' => '撲鼕', '扑咚' => '撲鼕', '扑咚咚' => '撲鼕鼕', @@ -5869,16 +5791,12 @@ public static $zh2Hant = [ '放松' => '放鬆', '政斗' => '政鬥', '故云' => '故云', -'敏于' => '敏於', -'败于' => '敗於', '教学钟' => '教學鐘', -'教于' => '教於', '教范' => '教範', '敢干' => '敢幹', '敢情欲' => '敢情欲', '敢斗了胆' => '敢斗了膽', '散伙' => '散夥', -'散于' => '散於', '散荡' => '散蕩', '敦朴' => '敦樸', '敬挽' => '敬輓', @@ -5929,15 +5847,12 @@ public static $zh2Hant = [ '方便面' => '方便麵', '方向' => '方向', '方法里' => '方法裡', -'于后' => '於後', -'于征' => '於徵', '于海上' => '於海上', '于海边' => '於海邊', '于震中' => '於震中', '于震前' => '於震前', '于震后' => '於震後', '施舍' => '施捨', -'施于' => '施於', '施舍之道' => '施舍之道', '旁征博引' => '旁徵博引', '旁注' => '旁註', @@ -5950,7 +5865,6 @@ public static $zh2Hant = [ '日历史' => '日歷史', '日里' => '日裡', '日志' => '日誌', -'早于' => '早於', '旱干' => '旱乾', '升州' => '昇州', '升平' => '昇平', @@ -5961,7 +5875,6 @@ public static $zh2Hant = [ '明窗净几' => '明窗淨几', '明范' => '明範', '明鉴' => '明鑑', -'易于' => '易於', '昔人有云' => '昔人有云', '星历' => '星曆', '星期后' => '星期後', @@ -5973,7 +5886,6 @@ public static $zh2Hant = [ '时钟' => '時鐘', '时间不准' => '時間不準', '晃荡' => '晃蕩', -'晚于' => '晚於', '晚钟' => '晚鐘', '晞发' => '晞髮', '晨钟' => '晨鐘', @@ -6048,7 +5960,6 @@ public static $zh2Hant = [ '有只' => '有隻', '有余' => '有餘', '有发头陀寺' => '有髮頭陀寺', -'服于' => '服於', '望了望' => '望了望', '望后石' => '望后石', '朝乾夕惕' => '朝乾夕惕', @@ -6069,6 +5980,7 @@ public static $zh2Hant = [ '本庄' => '本庄', '本征' => '本徵', '本出戏' => '本齣戲', +'术虎高' => '朮虎高', '术赤' => '朮赤', '朱庆余' => '朱慶餘', '朱理安历' => '朱理安曆', @@ -6117,7 +6029,6 @@ public static $zh2Hant = [ '枯干' => '枯乾', '架钟' => '架鐘', '某只' => '某隻', -'染指于' => '染指於', '染殿后' => '染殿后', '染发' => '染髮', '柜上' => '柜上', @@ -6132,7 +6043,6 @@ public static $zh2Hant = [ '校准' => '校準', '校舍' => '校舍', '核准' => '核准', -'格于' => '格於', '格范' => '格範', '格里历' => '格里曆', '格里高利历' => '格里高利曆', @@ -6175,7 +6085,6 @@ public static $zh2Hant = [ '杠杆' => '槓桿', '乐器钟' => '樂器鐘', '乐游原' => '樂遊原', -'樊于期' => '樊於期', '梁上' => '樑上', '梁柱' => '樑柱', '樗里子' => '樗里子', @@ -6240,7 +6149,6 @@ public static $zh2Hant = [ '歌后' => '歌后', '歌钟' => '歌鐘', '欧游' => '歐遊', -'止于' => '止於', '正官庄' => '正官庄', '正文里' => '正文裡', '正杰' => '正杰', @@ -6251,10 +6159,8 @@ public static $zh2Hant = [ '歲聿云暮' => '歲聿云暮', '历史里' => '歷史裡', '归并' => '歸併', -'归于' => '歸於', '归余' => '歸餘', '歹斗' => '歹鬥', -'死于' => '死於', '死里求生' => '死裡求生', '死里逃生' => '死裡逃生', '殖谷' => '殖穀', @@ -6264,8 +6170,8 @@ public static $zh2Hant = [ '殷师牛斗' => '殷師牛鬥', '殷鉴' => '殷鑑', '壳里' => '殼裡', +'殿里' => '殿裡', '殿钟自鸣' => '殿鐘自鳴', -'毁于' => '毀於', '毁钟为铎' => '毀鐘為鐸', '殴斗' => '毆鬥', '母后' => '母后', @@ -6305,7 +6211,6 @@ public static $zh2Hant = [ '污蔑' => '污衊', '汤卤' => '汤滷', '汤滷' => '汤滷', -'汲于' => '汲於', '决斗' => '決鬥', '沈淀' => '沈澱', '沈郁' => '沈鬱', @@ -6336,7 +6241,6 @@ public static $zh2Hant = [ '泡面' => '泡麵', '波棱菜' => '波稜菜', '波发藻' => '波髮藻', -'泥于' => '泥於', '注云' => '注云', '注释' => '注釋', '泰山梁木' => '泰山梁木', @@ -6361,7 +6265,6 @@ public static $zh2Hant = [ '洪钟' => '洪鐘', '汹涌' => '洶湧', '流征' => '流徵', -'流于' => '流於', '流荡' => '流蕩', '流风余俗' => '流風餘俗', '流风余韵' => '流風餘韻', @@ -6369,7 +6272,6 @@ public static $zh2Hant = [ '浩荡' => '浩蕩', '浪荡' => '浪蕩', '浪游' => '浪遊', -'浮于' => '浮於', '浮荡' => '浮蕩', '浮夸' => '浮誇', '浮松' => '浮鬆', @@ -6410,7 +6312,6 @@ public static $zh2Hant = [ '淑范' => '淑範', '泪干' => '淚乾', '泪如泉涌' => '淚如泉湧', -'淡于' => '淡於', '淡蒙蒙' => '淡濛濛', '净余' => '淨餘', '净发' => '淨髮', @@ -6447,7 +6348,6 @@ public static $zh2Hant = [ '汤下面' => '湯下麵', '汤团' => '湯糰', '汤面' => '湯麵', -'源于' => '源於', '准不准' => '準不準', '准例' => '準例', '准保' => '準保', @@ -6484,10 +6384,8 @@ public static $zh2Hant = [ '沟大曲' => '溝大麯', '沟谷' => '溝谷', '溟蒙' => '溟濛', -'溢于' => '溢於', '温洛克期' => '溫洛克期', '溲面' => '溲麵', -'溺于' => '溺於', '滃郁' => '滃鬱', '滑借' => '滑藉', '汇丰' => '滙豐', @@ -6530,7 +6428,6 @@ public static $zh2Hant = [ '潜水钟表' => '潛水鐘錶', '潭里' => '潭裡', '潮涌' => '潮湧', -'溃于' => '潰於', '涩谷区' => '澀谷區', '澄江县' => '澂江縣', '澄澹精致' => '澄澹精致', @@ -6671,10 +6568,8 @@ public static $zh2Hant = [ '犖确' => '犖确', '荦确' => '犖确', '狂并潮' => '狂併潮', -'狃于' => '狃於', '狄志杰' => '狄志杰', '狐借虎威' => '狐藉虎威', -'猛于' => '猛於', '猛冲' => '猛衝', '猜三划五' => '猜三划五', '犹如表' => '猶如錶', @@ -6699,7 +6594,6 @@ public static $zh2Hant = [ '王余鱼' => '王餘魚', '珍肴异馔' => '珍肴異饌', '班里' => '班裡', -'现于' => '現於', '球台' => '球檯', '理一个发' => '理一個髮', '理一次发' => '理一次髮', @@ -6716,13 +6610,11 @@ public static $zh2Hant = [ '瓷制' => '瓷製', '甄后' => '甄后', '瓮安' => '甕安', -'甚于' => '甚於', '甜、咸' => '甜、鹹', '甜水面' => '甜水麵', '甜咸' => '甜鹹', '甜面酱' => '甜麵醬', '生力面' => '生力麵', -'生于' => '生於', '生物钟' => '生物鐘', '生发生' => '生發生', '生华发' => '生華髮', @@ -6730,26 +6622,22 @@ public static $zh2Hant = [ '生锈' => '生鏽', '生发' => '生髮', '苏醒' => '甦醒', -'用于' => '用於', '用法里' => '用法裡', '甩发' => '甩髮', '田子里' => '田子里', '田庄英雄' => '田庄英雄', '田里' => '田裡', +'田里穗' => '田里穗', '由余' => '由余', -'由于' => '由於', '甲胄' => '甲冑', '甲后路' => '甲后路', '男仆' => '男僕', '界里' => '界裡', -'畏于' => '畏於', '留发展' => '留發展', '留发生' => '留發生', '留发行' => '留發行', '留长发' => '留長髮', '留发' => '留髮', -'毕于' => '畢於', -'毕业于' => '畢業於', '毕生发展' => '畢生發展', '画里' => '畫裡', '当准' => '當準', @@ -6759,7 +6647,6 @@ public static $zh2Hant = [ '疏松' => '疏鬆', '疑系' => '疑係', '疑凶' => '疑兇', -'疲于' => '疲於', '疲困' => '疲睏', '病征' => '病徵', '病愈' => '病癒', @@ -6801,7 +6688,6 @@ public static $zh2Hant = [ '百周后' => '百周後', '百天后' => '百天後', '百子里' => '百子里', -'百年' => '百年', '百拙千丑' => '百拙千醜', '百科里' => '百科裡', '百谷' => '百穀', @@ -6837,7 +6723,6 @@ public static $zh2Hant = [ '皱折' => '皺摺', '盆吊' => '盆弔', '盈余' => '盈餘', -'益于' => '益於', '盒里' => '盒裡', '盛赞' => '盛讚', '盗采' => '盜採', @@ -6848,14 +6733,12 @@ public static $zh2Hant = [ '卢棱伽' => '盧稜伽', '荡气回肠' => '盪氣迴腸', '盲干' => '盲幹', -'直于' => '直於', '直冲' => '直衝', '相并' => '相併', '相克制' => '相克制', '相克服' => '相克服', '相克' => '相剋', '相干' => '相干', -'相于' => '相於', '相冲' => '相衝', '相斗' => '相鬥', '看法里' => '看法裡', @@ -6871,8 +6754,6 @@ public static $zh2Hant = [ '眼眶里' => '眼眶裡', '眼睛里' => '眼睛裡', '眼里' => '眼裡', -'着眼于' => '着眼於', -'着眼於' => '着眼於', '困乏' => '睏乏', '困倦' => '睏倦', '困觉' => '睏覺', @@ -6895,7 +6776,6 @@ public static $zh2Hant = [ '瞩托' => '矚託', '矜夸' => '矜誇', '短几' => '短几', -'短于' => '短於', '短发生' => '短發生', '短发' => '短髮', '矮几' => '矮几', @@ -6937,7 +6817,6 @@ public static $zh2Hant = [ '祭吊' => '祭弔', '禁欲' => '禁慾', '禁欲主义' => '禁欲主義', -'祸于' => '禍於', '御侮' => '禦侮', '御寇' => '禦寇', '御寒' => '禦寒', @@ -6973,7 +6852,6 @@ public static $zh2Hant = [ '秒钟' => '秒鐘', '秤杆' => '秤桿', '秦沈客运' => '秦瀋客運', -'移祸于' => '移禍於', '稀松' => '稀鬆', '程十发' => '程十髮', '棱台' => '稜台', @@ -7004,6 +6882,7 @@ public static $zh2Hant = [ '谷旦' => '穀旦', '谷梁' => '穀梁', '谷壳' => '穀殼', +'è°·æ°¨' => '穀氨', '谷物' => '穀物', '谷皮' => '穀皮', '谷神' => '穀神', @@ -7011,6 +6890,7 @@ public static $zh2Hant = [ 'è°·è°·' => '穀穀', 'è°·ç±³' => '穀米', '谷粒' => '穀粒', +'谷胱' => '穀胱', '谷舱' => '穀艙', '谷苗' => '穀苗', '谷草' => '穀草', @@ -7039,11 +6919,9 @@ public static $zh2Hant = [ '窗帘' => '窗簾', '窝里' => '窩裡', '窝里斗' => '窩裡鬥', -'穷于' => '窮於', '穷追不舍' => '窮追不捨', '穷发' => '窮髮', '窃钟掩耳' => '竊鐘掩耳', -'立于' => '立於', '立范' => '立範', '童仆' => '童僕', '竞斗' => '競鬥', @@ -7056,7 +6934,6 @@ public static $zh2Hant = [ '笑里藏刀' => '笑裡藏刀', '笔杆' => '筆桿', '笔秃墨干' => '筆禿墨乾', -'等于' => '等於', '笋干' => '筍乾', '筑前' => '筑前', '筑北' => '筑北', @@ -7126,7 +7003,6 @@ public static $zh2Hant = [ '精制住' => '精制住', '精制服' => '精制服', '精干' => '精幹', -'精于' => '精於', '精准' => '精準', '精致' => '精緻', '精制' => '精製', @@ -7179,17 +7055,14 @@ public static $zh2Hant = [ '细如发' => '細如髮', '细致' => 'ç´°ç·»', '细炼' => '細鍊', -'终于' => '終於', '组里' => '組裡', '结伴同游' => '結伴同遊', '结伙' => '結夥', '结扎' => '結紮', '结余' => '結餘', '结发' => '結髮', -'绝于' => '絕於', '绞干' => '絞乾', '络腮胡' => '絡腮鬍', -'给于' => '給於', '丝恩发怨' => '絲恩髮怨', '丝制' => '絲製', '丝发' => '絲髮', @@ -7283,15 +7156,12 @@ public static $zh2Hant = [ '坛子' => '罈子', '坛坛罐罐' => '罈罈罐罐', '坛騞' => '罈騞', -'置于' => '置於', '置言成范' => '置言成範', -'罢于' => '罷於', '罗马历' => '羅馬曆', '罗马历代' => '羅馬歷代', '罗马历史' => '羅馬歷史', '羁系' => '羈繫', '美容美发' => '美容美髮', -'美于' => '美於', '美丑' => '美醜', '美发学' => '美髮學', '美发师' => '美髮師', @@ -7313,7 +7183,6 @@ public static $zh2Hant = [ '老仆' => '老僕', '老干部' => '老幹部', '老懞' => '老懞', -'老于' => '老於', '老爷钟' => '老爺鐘', '老白干' => '老白乾', '老姜' => '老薑', @@ -7324,7 +7193,7 @@ public static $zh2Hant = [ '耍斗' => '耍鬥', '耕获' => '耕穫', '耳余' => '耳餘', -'耿于' => '耿於', +'耶律术烈' => '耶律朮烈', '聊斋志异' => '聊齋志異', '圣人历' => '聖人曆', '圣后' => '聖后', @@ -7336,7 +7205,6 @@ public static $zh2Hant = [ '闻风后' => '聞風後', '联系' => '聯繫', '声母后' => '聲母後', -'听于' => '聽於', '肉干' => '肉乾', '肉欲' => '肉慾', '肉丝面' => '肉絲麵', @@ -7422,7 +7290,6 @@ public static $zh2Hant = [ '自制服' => '自制服', '自制的能' => '自制的能', '自制能力' => '自制能力', -'自于' => '自於', '自然数里' => '自然數裡', '自由钟' => '自由鐘', '自制' => '自製', @@ -7431,11 +7298,8 @@ public static $zh2Hant = [ '臭气冲天' => '臭氣衝天', '至多' => '至多', '至多只' => '至多只', -'至于' => '至於', -'致于' => '致於', '台佟' => '臺佟', '台静农' => '臺靜農', -'臻于' => '臻於', '舂谷' => '舂穀', '举手表' => '舉手表', '舉手表' => '舉手表', @@ -7474,7 +7338,6 @@ public static $zh2Hant = [ '苑里' => '苑裡', '若干' => '若干', '苦干' => '苦幹', -'苦于' => '苦於', '苦里' => '苦裡', '苦斗' => '苦鬥', '苧麻' => '苧麻', @@ -7508,6 +7371,7 @@ public static $zh2Hant = [ '庄里' => '莊裡', '茎干' => '莖幹', '莜面' => '莜麵', +'莪术' => '莪朮', '莽荡' => '莽蕩', '菜干' => '菜乾', '菜坛' => '菜罈', @@ -7520,8 +7384,6 @@ public static $zh2Hant = [ '万个' => '萬個', '万周后' => '萬周後', '万天后' => '萬天後', -'万年' => '萬年', -'万年历' => '萬年曆', '万年历表' => '萬年曆錶', '万历' => '萬曆', '万历史' => '萬歷史', @@ -7530,7 +7392,6 @@ public static $zh2Hant = [ '万象' => '萬象', '万只' => '萬隻', '万余' => '萬餘', -'落于' => '落於', '落腮胡' => '落腮鬍', '落发' => '落髮', '叶叶琴' => '葉叶琴', @@ -7542,7 +7403,6 @@ public static $zh2Hant = [ '葡萄干' => '葡萄乾', '董氏封发' => '董氏封髮', '葫芦里卖甚么药' => '葫蘆裡賣甚麼藥', -'葬于' => '葬於', '蒙雾露' => '蒙霧露', '蒜发' => '蒜髮', '蒲席' => '蒲蓆', @@ -7619,7 +7479,6 @@ public static $zh2Hant = [ '借箸代筹' => '藉箸代籌', '借资' => '藉資', '蓝淀' => '藍澱', -'藏于' => '藏於', '藏历' => '藏曆', '藏历史' => '藏歷史', '藏蒙歌儿' => '藏矇歌兒', @@ -7637,7 +7496,6 @@ public static $zh2Hant = [ '萝卜干' => '蘿蔔乾', '虎须' => '虎鬚', '虎斗' => '虎鬥', -'处于' => '處於', '虚夸' => '虛誇', '号志' => '號誌', '虫部' => '虫部', @@ -7666,7 +7524,6 @@ public static $zh2Hant = [ '行事历史' => '行事歷史', '行凶' => '行兇', '行家里手' => '行家裡手', -'行于' => '行於', '卫后庄公' => '衛後莊公', '卫星钟' => '衛星鐘', '冲上' => '衝上', @@ -7720,7 +7577,6 @@ public static $zh2Hant = [ '冲风' => '衝風', '衡鉴' => '衡鑑', '表面包' => '表面包', -'衷于' => '衷於', '袋杆' => '袋桿', '袋里' => '袋裡', '袋表' => '袋錶', @@ -7742,7 +7598,6 @@ public static $zh2Hant = [ '里海' => '裏海', '里白' => '裏白', '里运河' => '裏運河', -'补于' => '補於', '补注' => '補註', '装折' => '裝摺', '里勾外连' => '裡勾外連', @@ -7859,12 +7714,10 @@ public static $zh2Hant = [ '要冲' => '要衝', '复信' => '覆信', '复核' => '覆核', -'见于' => '見於', '见棱见角' => '見稜見角', '见素抱朴' => '見素抱樸', '见钟不打' => '見鐘不打', '规范' => '規範', -'视于' => '視於', '观采' => '觀採', '角抵' => '角牴', '角落发' => '角落發', @@ -7934,7 +7787,6 @@ public static $zh2Hant = [ '词干' => '詞幹', '词汇' => '詞彙', '词余' => '詞餘', -'询于' => '詢於', '试制' => '試製', '詩云' => '詩云', '诗云' => '詩云', @@ -8114,7 +7966,6 @@ public static $zh2Hant = [ '趙惠后' => '趙惠后', '赵治勋' => '趙治勳', '趱干' => '趲幹', -'足于' => '足於', '足球台' => '足球台', '跌扑' => '跌扑', '路图里' => '路圖裡', @@ -8127,10 +7978,8 @@ public static $zh2Hant = [ '踡局' => '踡跼', '逾闲' => '踰閑', '蹒局' => '蹣跼', -'蹪于' => '蹪於', '蹭棱子' => '蹭稜子', '躁郁' => '躁鬱', -'身于' => '身於', '身体发肤' => '身體髮膚', '躯干' => '軀幹', '车库里' => '車庫裡', @@ -8139,7 +7988,6 @@ public static $zh2Hant = [ '车里雅宾斯克' => '車里雅賓斯克', '轨范' => '軌範', '轩辟' => '軒闢', -'较于' => '較於', '挽曲' => '輓曲', '挽歌' => '輓歌', '挽联' => '輓聯', @@ -8148,7 +7996,6 @@ public static $zh2Hant = [ '挽车' => '輓車', '挽输' => '輓輸', '挽辞' => '輓辭', -'轻于' => '輕於', '轻松' => '輕鬆', '轻松松' => '輕鬆鬆', '轮奸' => '輪姦', @@ -8173,7 +8020,6 @@ public static $zh2Hant = [ '近日无仇' => '近日無讎', '返朴' => '返樸', '迥然回异' => '迥然迴異', -'迫于' => '迫於', '回光返照' => '迴光返照', '回圈' => '迴圈', '回廊' => '迴廊', @@ -8201,7 +8047,6 @@ public static $zh2Hant = [ '回銮' => '迴鑾', '回响' => '迴響', '回风' => '迴風', -'迷于' => '迷於', '迷蒙' => '迷濛', '追凶' => '追兇', '退伙' => '退夥', @@ -8245,7 +8090,6 @@ public static $zh2Hant = [ '这出' => '這齣', '通奸' => '通姦', '通心面' => '通心麵', -'通于' => '通於', '通历' => '通曆', '通历史' => '通歷史', '通鉴' => '通鑑', @@ -8314,17 +8158,13 @@ public static $zh2Hant = [ '游错' => '遊錯', '游骑兵' => '遊騎兵', '游魂' => '遊魂', -'过于' => '過於', '过水面' => '過水麵', '遏制' => '遏制', '道范' => '道範', -'逊于' => '遜於', '递回' => '遞迴', '远游' => '遠遊', '遨游' => '遨遊', -'适于' => '適於', '遮丑' => '遮醜', -'迁于' => '遷於', '选手表明' => '選手表明', '选手表决' => '選手表決', '选手表现' => '選手表現', @@ -8366,7 +8206,6 @@ public static $zh2Hant = [ '部落发' => '部落發', '郭后' => '郭后', '都市里' => '都市裡', -'都于' => '都於', '乡愿' => '鄉愿', '鄉愿' => '鄉愿', '郑凯云' => '鄭凱云', @@ -8384,7 +8223,6 @@ public static $zh2Hant = [ '酸姜' => '酸薑', '腌制' => '醃製', '醇朴' => '醇樸', -'醉于' => '醉於', '醋坛' => '醋罈', '丑丫头' => '醜丫頭', '丑事' => '醜事', @@ -8411,7 +8249,6 @@ public static $zh2Hant = [ '丑恶' => '醜惡', '丑态' => '醜態', '丑毙了' => '醜斃了', -'丑于' => '醜於', '丑末' => '醜末', '丑样' => '醜樣', '丑死' => '醜死', @@ -8450,7 +8287,6 @@ public static $zh2Hant = [ '里海茨' => '里海茨', '里铺' => '里舖', '重回' => '重回', -'重于' => '重於', '重罗面' => '重羅麵', '重制' => '重製', '重复' => '重複', @@ -8612,16 +8448,15 @@ public static $zh2Hant = [ '鉴察' => '鑑察', '鉴往知来' => '鑑往知來', '鉴戒' => '鑑戒', +'鉴于' => '鑑於', '鉴湖' => '鑑湖', '鉴藏' => '鑑藏', '鉴谅' => '鑑諒', '鉴证' => '鑑證', '鉴识' => '鑑識', '鉴赏' => '鑑賞', -'鉴于' => '鑒於', '長几' => '長几', '长几' => '長几', -'长于' => '長於', '长历' => '長曆', '长历史' => '長歷史', '长发公主' => '長髮公主', @@ -8652,7 +8487,6 @@ public static $zh2Hant = [ '闯荡' => '闖蕩', '闯炼' => '闖鍊', '关系' => '關係', -'关于' => '關於', '辟佛' => '闢佛', '辟作' => '闢作', '辟划' => '闢劃', @@ -8670,9 +8504,7 @@ public static $zh2Hant = [ '防御' => '防禦', '防范' => '防範', '防锈' => '防鏽', -'阻于' => '阻於', '阿里' => '阿里', -'附于' => '附於', '附注' => '附註', '限制' => '限制', '院里' => '院裡', @@ -8697,11 +8529,10 @@ public static $zh2Hant = [ '阳谷' => '陽穀', '隆准许' => '隆准許', '隆准' => '隆準', -'随于' => '隨於', +'队里' => '隊裡', '隐占' => '隱佔', '隐几' => '隱几', '隱几' => '隱几', -'隐于' => '隱於', '只字' => '隻字', '只影' => '隻影', '只手遮天' => '隻手遮天', @@ -8712,7 +8543,6 @@ public static $zh2Hant = [ '雅范' => '雅範', '集团' => '集團', '集数里' => '集數裡', -'集于' => '集於', '集里' => '集裡', '集游法' => '集遊法', '雕梁画栋' => '雕樑畫棟', @@ -8732,9 +8562,7 @@ public static $zh2Hant = [ '鸡腿面' => '雞腿麵', '鸡蛋里挑骨头' => '雞蛋裡挑骨頭', '鸡只' => '雞隻', -'离于' => '離於', '难舍' => '難捨', -'难于' => '難於', '雨蒙蒙' => '雨濛濛', '雪窗萤几' => '雪窗螢几', '雪窗螢几' => '雪窗螢几', @@ -8750,7 +8578,6 @@ public static $zh2Hant = [ '零个' => '零個', '零周后' => '零周後', '零天后' => '零天後', -'零年' => '零年', '零只' => '零隻', '零余' => '零餘', '电子表格' => '電子表格', @@ -8821,7 +8648,6 @@ public static $zh2Hant = [ '頂多' => '頂多', '顶多' => '頂多', '项链' => '項鍊', -'顺于' => '順於', '顺钟向' => '順鐘向', '顺风后' => '順風後', '须根据' => '須根據', @@ -8871,7 +8697,6 @@ public static $zh2Hant = [ '台风后' => '颱風後', '刮了' => '颳了', '刮倒' => '颳倒', -'刮去' => '颳去', '刮大风' => '颳大風', '刮得' => '颳得', '刮走' => '颳走', @@ -9345,7 +9170,6 @@ public static $zh2Hant = [ '盐卤' => '鹽滷', '盐余' => '鹽餘', '鹿場里' => '鹿場里', -'丽于' => '麗於', '麟游' => '麟遊', '曲酒' => '麯酒', '曲尘' => '麴塵', @@ -13447,7 +13271,6 @@ public static $zh2Hans = [ '乾,健也' => '乾,健也', '乾,天也' => '乾,天也', '五箇山' => '五箇山', -'什么' => '什么', '仇讎' => '仇雠', '以微知著' => '以微知著', '仰屋著書' => '仰屋著书', @@ -13525,7 +13348,6 @@ public static $zh2Hans = [ '覆核' => '复核', '覆检' => '复检', '復甦' => '复苏', -'多么' => '多么', '大麴' => '大曲', '天道为乾' => '天道为乾', '天道為乾' => '天道为乾', @@ -13556,13 +13378,12 @@ public static $zh2Hans = [ '年陞' => '年升', '么九' => '幺九', '么二三' => '幺二三', +'么兒' => '幺儿', '么元' => '幺元', '么鳳' => '幺凤', '么半' => '幺半', -'么半群' => '幺半群', -'么廝' => '幺厮', -'幺厮' => '幺厮', '么叔' => '幺叔', +'么喝' => '幺喝', '么女' => '幺女', '么媽' => '幺妈', '么妹' => '幺妹', @@ -13570,22 +13391,20 @@ public static $zh2Hans = [ '么姨' => '幺姨', '么娘' => '幺娘', '么孃' => '幺娘', -'幺孃' => '幺娘', '么子' => '幺子', '么小' => '幺小', '么弟' => '幺弟', '么正' => '幺正', '么氏' => '幺氏', +'么爺' => '幺爷', '么爸' => '幺爸', '么爹' => '幺爹', '么篇' => '幺篇', '么舅' => '幺舅', '么蛾子' => '幺蛾子', -'么謙' => '幺谦', +'么雞' => '幺鸡', '么麼' => '幺麽', -'么麽' => '幺麽', '幺麽' => '幺麽', -'么麽小丑' => '幺麽小丑', '慶餘' => '庆馀', '康乾' => '康乾', '张法乾' => '张法乾', @@ -13594,7 +13413,6 @@ public static $zh2Hans = [ '待覆' => '待复', '後姓' => '後姓', '慫慂' => '怂恿', -'怎么' => '怎么', '恩威並著' => '恩威并著', '噁心' => '恶心', '情蒐' => '情搜', @@ -13821,11 +13639,8 @@ public static $zh2Hans = [ '躊躇滿志' => '踌躇滿志', '較著' => '较著', '近角聪信' => '近角聪信', -'这么' => '这么', '造麴' => '造曲', '遺著' => '遗著', -'那么' => '那么', -'那麽' => '那麽', '郭子乾' => '郭子乾', '酒麴' => '酒曲', '醉瀋' => '醉渖', @@ -13889,9 +13704,8 @@ public static $zh2Hans = [ '鬱氏' => '鬱氏', '魏徵' => '魏徵', '魚乾乾' => '鱼干干', +'麼氏' => '麽氏', '麽氏' => '麽氏', -'麼麼' => '麽麽', -'麽麽' => '麽麽', '黃麴毒素' => '黄曲毒素', '黃潤乾' => '黄润乾', '黄润乾' => '黄润乾', @@ -13940,6 +13754,7 @@ public static $zh2TW = [ '落車' => '下車', '不來梅' => '不萊梅', '不来梅' => '不萊梅', +'幺' => '么', '以太网' => '乙太網', '九杆' => '九桿', '了結他' => '了結他', @@ -14133,8 +13948,6 @@ public static $zh2TW = [ '发达国家' => '已開發國家', '巴塞罗那' => '巴塞隆納', '巴塞隆拿' => '巴塞隆納', -'巴布亚新几内亚' => '巴布亞紐幾內亞', -'巴布亞新畿內亞' => '巴布亞紐幾內亞', '巴士拉' => '巴斯拉', '巴巴多斯' => '巴貝多', '佈' => '布', @@ -14155,7 +13968,6 @@ public static $zh2TW = [ 'è´¦' => '帳', '干着急' => '干著急', '干着' => '幹著', -'畿內亞' => '幾內亞', '几内亚比绍' => '幾內亞比索', '幾內亞比紹' => '幾內亞比索', '比利牛斯' => '庇里牛斯', @@ -14218,6 +14030,8 @@ public static $zh2TW = [ '數碼電視' => '數位電視', '調制解調器' => '數據機', '调制解调器' => '數據機', +'斯堪的納維亞' => '斯堪地那維亞', +'斯堪的纳维亚' => '斯堪地那維亞', '斯洛文尼亚' => '斯洛維尼亞', '斯洛文尼亞' => '斯洛維尼亞', '新罕布什尔' => '新罕布夏', @@ -14376,6 +14190,7 @@ public static $zh2TW = [ '新奥尔良' => '紐奧良', '新奧爾良' => '紐奧良', '新几内亚' => '紐幾內亞', +'新幾內亞' => '紐幾內亞', '新西兰' => '紐西蘭', '新西蘭' => '紐西蘭', '紙煙' => '紙菸', @@ -14697,7 +14512,6 @@ public static $zh2HK = [ '·威尔士' => '·威爾士', '·威爾士' => '·威爾士', '一地里' => '一地裏', -'一年里' => '一年裏', '三十六著' => '三十六着', '三極體' => '三極管', '旧金山' => '三藩市', @@ -14723,6 +14537,7 @@ public static $zh2HK = [ 'C肝' => '丙肝', '并发布' => '並發佈', '中文里' => '中文裏', +'幺' => '么', '乘著' => '乘着', '乘著作' => '乘著作', '乘著名' => '乘著名', @@ -15387,6 +15202,7 @@ public static $zh2HK = [ '地占' => '地佔', '地图里' => '地圖裏', '堪培拉' => '坎培拉', +'坐台铁' => '坐台鐵', '坐台' => '坐枱', '坐著' => '坐着', '坐著作' => '坐著作', @@ -15554,7 +15370,6 @@ public static $zh2HK = [ '巴塞罗那' => '巴塞隆拿', '巴塞隆納' => '巴塞隆拿', '巴貝多' => '巴巴多斯', -'巴布亞紐幾內亞' => '巴布亞新畿內亞', '巴士拉' => '巴斯拉', '巷里' => '巷裏', '市占' => '市佔', @@ -15591,6 +15406,7 @@ public static $zh2HK = [ '賓士' => '平治', '年代里' => '年代裏', '年里' => '年裏', +'年里约' => '年里約', '干着' => '幹着', '幹著' => '幹着', '幹著名' => '幹著名', @@ -16032,9 +15848,11 @@ public static $zh2HK = [ '斥著者' => '斥著者', '斥著述' => '斥著述', '斥著錄' => '斥著錄', +'斯堪地那維亞' => '斯堪的納維亞', '史瓦濟蘭' => '斯威士蘭', '斯洛維尼亞' => '斯洛文尼亞', '紐澳良' => '新奧爾良', +'紐幾內亞' => '新幾內亞', '紐西蘭' => '新西蘭', '方法里' => '方法裏', '族里' => '族裏', @@ -16211,6 +16029,7 @@ public static $zh2HK = [ '殺著述' => '殺著述', '殺著錄' => '殺著錄', '壳里' => '殼裏', +'殿里' => '殿裏', '茅利塔尼亞' => '毛里塔尼亞', '模里西斯' => '毛里裘斯', '毛里求斯' => '毛里裘斯', @@ -16500,8 +16319,6 @@ public static $zh2HK = [ '過著述' => '當著述', '當著錄' => '當著錄', '過著錄' => '當著錄', -'几内亚' => '畿內亞', -'幾內亞' => '畿內亞', '迭代' => '疊代', '疑著' => '疑着', '疑著作' => '疑著作', @@ -16589,7 +16406,7 @@ public static $zh2HK = [ '著法' => '着法', '著涼' => '着涼', '著火' => '着火', -'著甚麽' => '着甚麽', +'著甚麼' => '着甚麼', '著眼' => '着眼', '著祂' => '着祂', '著筆' => '着筆', @@ -17496,6 +17313,7 @@ public static $zh2HK = [ '陪著述' => '陪著述', '陪著錄' => '陪著錄', '阴沟里翻船' => '陰溝裏翻船', +'队里' => '隊裏', '隔著' => '隔着', '隔著作' => '隔著作', '隔著名' => '隔著名', @@ -18071,7 +17889,6 @@ public static $zh2CN = [ '涼著者' => '凉著者', '涼著述' => '凉著述', '湊合著' => '凑合着', -'畿內亞' => '几内亚', '幾內亞比索' => '几内亚比绍', '凱薩琳' => '凯瑟琳', '嘉芙蓮' => '凯瑟琳', @@ -18216,6 +18033,7 @@ public static $zh2CN = [ '叫著稱' => '叫著称', '叫著者' => '叫著者', '叫著述' => '叫著述', +'台北韓' => '台北韩', '桌上型電腦' => '台式电脑', '撞球' => '台球', '台帳' => '台账', @@ -18503,7 +18321,6 @@ public static $zh2CN = [ '巴斯拉' => '巴士拉', '帕邁拉環礁' => '巴尔米拉环礁', '巴貝多' => '巴巴多斯', -'巴布亞紐幾內亞' => '巴布亚新几内亚', '布殊' => '布什', '布吉納法索' => '布基纳法索', '布隆泉' => '布隆方丹', @@ -18985,6 +18802,7 @@ public static $zh2CN = [ '斥著者' => '斥著者', '斥著述' => '斥著述', '史丹福大學' => '斯坦福大学', +'斯堪地那維亞' => '斯堪的纳维亚', '史達林' => '斯大林', '史瓦濟蘭' => '斯威士兰', '斯洛維尼亞' => '斯洛文尼亚', @@ -19420,8 +19238,8 @@ public static $zh2CN = [ '著絲' => '着丝', '著麼' => '着么', '著人' => '着人', -'著什麼' => '着什么', -'著甚麽' => '着什么', +'著什' => '着什', +'著甚麼' => '着什么', '著他' => '着他', '著令' => '着令', '著位' => '着位', @@ -20066,6 +19884,7 @@ public static $zh2CN = [ '軟體' => '软件', '軟體動物' => '软体动物', '軟體家具' => '软体家具', +'軟體生物' => '软体生物', '軟碟機' => '软驱', '載著' => '载着', '載著書' => '载著书', diff --git a/languages/data/grammarTransformations/he.json b/languages/data/grammarTransformations/he.json index 50620b179c..e127f8bf7a 100644 --- a/languages/data/grammarTransformations/he.json +++ b/languages/data/grammarTransformations/he.json @@ -15,7 +15,7 @@ "ו$1" ], [ - "ה(.+)$", + "^ה(.+)$", "$1" ], [ diff --git a/languages/i18n/ace.json b/languages/i18n/ace.json index 4f0b535880..9d10b5116f 100644 --- a/languages/i18n/ace.json +++ b/languages/i18n/ace.json @@ -464,8 +464,6 @@ "passwordreset-emaildisabled": "Tanda e-surat ka geupeumaté lam wiki nyoë", "passwordreset-username": "Ureueng ngui:", "passwordreset-domain": "Domain", - "passwordreset-capture": "Eu hasé surat-e?", - "passwordreset-capture-help": "Meunyoë droëneuh neuceuë kutak nyoë, e-surat (ngon narit rahsia siat) ka geupeuleumah keudroëneuh ngon geukirém cit keu ureuëng ngui", "passwordreset-email": "Alamat surat-e:", "passwordreset-emailtitle": "Teuneurang nan ureueng ngui bak {{SITENAME}}", "passwordreset-emailelement": "Nan ureuëng ngui: \n$1\n\nLageuëm rahsia sijamong: \n$2", @@ -629,7 +627,7 @@ "searchprofile-advanced-tooltip": "Mita bak ruweuëng nan meupat-pat", "search-result-size": "$1 ({{PLURAL:$2|1 narit|$2 narit}})", "search-result-category-size": "{{PLURAL:$1|1 anggeeta|$1 anggeeta}} ({{PLURAL:$2|1 aneuk kawan|$2 aneuk kawan}}, {{PLURAL:$3|1 beureukaih|$3 beureukaih}})", - "search-redirect": "(peuninah $1)", + "search-redirect": "(geupupinah nibak $1)", "search-section": "(bideuëng $1)", "search-suggest": "Kadang meukeusud Droëneuh nakeuh: $1", "search-interwiki-caption": "Buët la’én", @@ -663,7 +661,6 @@ "prefs-rendering": "Seuneudeuh", "saveprefs": "Keubah", "prefs-editing": "Neuandam", - "rows": "Baréh:", "searchresultshead": "Mita", "stub-threshold-disabled": "Geupeumaté", "timezoneuseoffset": "La'én (peuteuntèe bidajih)", @@ -709,7 +706,6 @@ "userrights-groupsmember": "Anggèeta nibak:", "userrights-reason": "Dalèh:", "userrights-no-interwiki": "Droeneuh hana izin keu neuubah khut ureueng ngui bak wiki la'én.", - "userrights-notallowed": "Droeneuh hana izin keu neutamah atawa neupeugadöh khut ureueng ngui.", "userrights-changeable-col": "Kawan nyang jeut neugantoe", "userrights-unchangeable-col": "Kawan nyang han jeut neugantoe", "group": "Kawan:", @@ -771,15 +767,19 @@ "rcnotefrom": "Di yup nyoë nakeuh neuubah yôh <strong>$2</strong> (geupeudeuh trôh ‘an <strong>$1</strong> neuubah).", "rclistfrom": "Peudeuih neuubah barô yôh $3 $2 kön", "rcshowhideminor": "$1 andam bacut", + "rcshowhideminor-show": "Peuleumah", "rcshowhideminor-hide": "Peusom", "rcshowhidebots": "$1 bot", "rcshowhidebots-show": "Peuleumah", + "rcshowhidebots-hide": "Peusom", "rcshowhideliu": "$1 ureuëng ngui tamöng", "rcshowhideliu-hide": "Peusom", "rcshowhideanons": "$1 ureuëng ngui hana nan", + "rcshowhideanons-show": "Peuleumah", "rcshowhideanons-hide": "Peusom", "rcshowhidepatr": "$1 andam teurunda", "rcshowhidemine": "$1 atra lôn andam", + "rcshowhidemine-show": "Peuleumah", "rcshowhidemine-hide": "Peusom", "rclinks": "Peudeuih $1 neuubah barô lam $2 uroë nyoë<br />$3", "diff": "bida", @@ -994,6 +994,7 @@ "deleteotherreason": "Nyang la’én/choë la’én:", "deletereasonotherlist": "Choë la’én", "rollbacklink": "pulang", + "rollbacklinkcount": "peuriwang $1 {{PLURAL:$1|neuandam}}", "protectlogpage": "Log lindông", "protectedarticle": "peulindông \"[[$1]]\"", "modifiedarticleprotection": "Ubah tingkat lindông \"[[$1]]\"", @@ -1031,6 +1032,7 @@ "contributions": "Beuneuri {{GENDER:$1|ureuëng ngui}}", "contributions-title": "Beuneuri ureuëng ngui keu $1", "mycontris": "Beuneuri", + "anoncontribs": "Beuneuri", "contribsub2": "Keu {{GENDER:$3|$1}} ($2)", "uctop": "(jinoë)", "month": "Mula phôn buleuën (ngön sigohlomjih)", @@ -1092,9 +1094,9 @@ "thumbnail-more": "Peurayek", "thumbnail_error": "Salah bak peugöt gamba cut: $1", "importlogpage": "Log impor", - "tooltip-pt-userpage": "Laman ureuëng ngui droëneuh", + "tooltip-pt-userpage": "Mieng {{GENDER:|ureueng ngui Droeneuh}}", "tooltip-pt-mytalk": "Laman marit droëneuh", - "tooltip-pt-preferences": "Geunalak", + "tooltip-pt-preferences": "Atô", "tooltip-pt-watchlist": "Dapeuta laman nyang lônkalön", "tooltip-pt-mycontris": "Dapeuta beuneuri Droëneuh", "tooltip-pt-login": "Droëneuh geupadan keu tamong log, bah pih nyan hana geupeuwajéb.", @@ -1177,6 +1179,7 @@ "exif-software": "Software geungui", "exif-exifversion": "Versi Exif", "exif-colorspace": "Ruweuëng wareuna", + "exif-datetimeoriginal": "Uroe buleuen ngön watèe peugöt data", "exif-datetimedigitized": "Uroë buleuën ngön watèë digital", "exif-orientation-1": "Biasa", "namespacesall": "ban dum", @@ -1219,7 +1222,8 @@ "tag-list-wrapper": "([[Special:Tags|{{PLURAL:$1|Tag}}]]: $2)", "logentry-delete-delete": "$1 {{GENDER:$2|geusampôh}} miëng $3", "logentry-newusers-create": "$1 {{GENDER:$2|geupeugöt}} akun ureuëng ngui", - "searchsuggest-search": "Mita", + "logentry-upload-upload": "$1 {{GENDER:$2|geupasoe}} $3", + "searchsuggest-search": "Mita {{SITENAME}}", "duration-seconds": "{{PLURAL:$1|deutik}}", "duration-minutes": "{{PLURAL:$1|minèt}}", "duration-hours": "{{PLURAL:$1|jeum}}", diff --git a/languages/i18n/aeb-arab.json b/languages/i18n/aeb-arab.json index 794eae2951..524d5114b1 100644 --- a/languages/i18n/aeb-arab.json +++ b/languages/i18n/aeb-arab.json @@ -37,6 +37,56 @@ "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": "ديسمبر", "category_header": "صفحات تصنيف \"$1\"", "subcategories": "التصنيفات الفرعية", "category-media-header": "الوسائط في التصنيف \"$1\"", @@ -54,10 +104,35 @@ "broken-file-category": "صفحات تحتوي وصلات ملفات معطوبة", "about": "عن", "article": "صفحة محتوى", - "newwindow": "(تفتح في نافذة جديدة)", + "newwindow": "(تتحلّ في شبّاك جديد)", + "cancel": "بطّل", "mypage": "صفحتي", "mytalk": "نقاشي", + "qbedit": "بدّل", + "returnto": "إرجع لـ$1", + "tagline": "من {{SITENAME}}", + "help": "معاونة", + "search": "لوّج", + "searchbutton": "لوّج", + "searcharticle": "إمشي", + "history": "تاريخ الپاج", + "history_short": "التاريخ", + "view": "شوفة", + "view-foreign": "ورّي على $1", + "edit": "بدّل", + "talkpagelinktext": "پاج الحديث", + "talk": "حديث", + "views": "شوفات", + "otherlanguages": "في لغات أخرين", + "redirectto": "تحويل لـ:", + "lastmodifiedat": "آخر تبديل لهذي الپاج كان نهار $1 في $2.", + "jumpto": "إمشي لـ:", + "jumptosearch": "لوّج", + "aboutsite": "على {{SITENAME}}", "copyright": "المحتوى متوفر تحت $1.", + "edithelp": "معاونة باش تبدّل پاج", + "mainpage": "الپاج الأولانيّة", + "mainpage-description": "الپاج الأولانيّة", "badaccess": "خطأ في السماح", "badaccess-group0": "ليس من المسموح لك تنفيذ الفعل الذي طلبته.", "badaccess-groups": "الفعل الذي طلبته مقصور على المستخدمين في {{PLURAL:$2||مجموعة|واحدة من مجموعتي|واحدة من مجموعات}}: $1.", @@ -65,6 +140,11 @@ "versionrequiredtext": "تلزم النسخة $1 من ميدياويكي لاستعمال هذه الصفحة. انظر [[Special:Version|صفحة النسخة]]", "youhavenewmessages": "توجد لديك $1 ($2).", "youhavenewmessagesmulti": "لديك رسائل جديدة على $1", + "editsection": "بدّل", + "editold": "بدّل", + "editlink": "بدّل", + "viewsourcelink": "شوف المصدر", + "editsectionhint": "بدّل الطرف: $1", "viewdeleted": "أأعرض $1؟", "restorelink": "{{PLURAL:$1|$1 تعديل محذوف|تعديلا واحدا محذوفا|تعديلين محذوفين|$1 تعديلات محذوفة|$1 تعديلا محذوفا|$1 تعديلا محذوفا}}", "feedlinks": "التغذية:", @@ -73,14 +153,18 @@ "site-rss-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-project": "صفحة مشروع", + "nstab-project": "پاج مشروع", + "nstab-image": "فيشياي", "nstab-template": "قالب", "nstab-help": "صفحة مساعدة", "nstab-category": "تصنيف", + "mainpage-nstab": "الپاج الأولانيّة", "nosuchaction": "لا يوجد فعل كهذا", "nosuchactiontext": "الفعل المحدد بواسطة المسار غير صحيح.\nربما تكون قد كتبت المسار بطريقة غير صحيحة، أو اتبعت وصلة غير صحيحة.\nهذا ربما يشير أيضا إلى علة في {{SITENAME}}.", "nosuchspecialpage": "لا توجد صفحة خاصة بهذا الاسم", @@ -135,23 +219,24 @@ "logouttext": "'''أنت الآن غير مسجل الدخول.'''\n\nتستطيع المتابعة باستعمال {{SITENAME}} كمجهول، أو <span class='plainlinks'>[$1 الدخول مرة أخرى]</span> بنفس الاسم أو باسم آخر.\nمن الممكن أن ترى بعض الصفحات كما لو أنك مسجل الدخول، وذلك حتى تقوم بإفراغ الصفحات المختزنة في المتصفح لديك.", "yourname": "اسم المستخدم:", "yourpassword": "كلمة السر:", + "userlogin-yourpassword-ph": "دخّل كلمة السر", + "createacct-yourpassword-ph": "دخّل كلمة السر", "yourpasswordagain": "أعد كتابة كلمة السر:", + "createacct-yourpasswordagain-ph": "دخّل كلمة السر مرة أخرى", "yourdomainname": "نطاقك:", "externaldberror": "هناك إما خطأ في دخول قاعدة البيانات الخارجية أو أنه غير مسموح لك بتحديث حسابك الخارجي.", "login": "ادخل", - "userlogin": "ادخل / أنشئ حسابا", - "userloginnocreate": "دخول", "logout": "اخرج", "userlogout": "خروج", "notloggedin": "غير مسجل الدخول", - "nologin": "ألا تمتلك حسابا؟ '''$1'''.", - "nologinlink": "أنشئ حسابا", "createaccount": "أنشئ حسابا", - "gotaccount": "تمتلك حسابا بالفعل؟ '''$1'''.", - "gotaccountlink": "ادخل", - "userlogin-resetlink": "أنسيت بيانات الولوج؟", + "createacct-emailoptional": "الإيمايل (إختياري)", + "createacct-email-ph": "دخّل الإيمايل متاعك", "createaccountmail": "بواسطة البريد الإلكتروني", - "createaccountreason": "السبب:", + "createacct-submit": "أعمل الحساب", + "createacct-benefit-heading": "{{SITENAME}} إتّعمل بعباد كيفك.", + "createacct-benefit-body1": "{{PLURAL:$1|تبديل|تبديلات|تبديلات|تبديلات|تبديلات|تبديلات|تبديلات|تبديلات|تبديلات|تبديلات|تبديل}}", + "createacct-benefit-body3": "آخر {{PLURAL:$1|مساهم|مساهمين}}", "badretype": "كلمات السر التي أدخلتها لا تتطابق.", "userexists": "اسم المستخدم الذي تم إدخاله مستعمل بالفعل.\nالرجاء اختيار اسم مختلف.", "loginerror": "خطأ في الدخول", @@ -197,7 +282,9 @@ "login-abort-generic": "لم ينجح ولوجك - إجهاض", "loginlanguagelabel": "اللغة: $1", "suspicious-userlogout": "رفض طلب خروجك لأنه يبدو كأنه أرسل عن طريق متصفح معطوب أو وسيط تخزين.", - "pt-login": "Odkul", + "pt-login": "أدخل", + "pt-createaccount": "أعمل حساب", + "pt-userlogout": "أخرج", "php-mail-error-unknown": "خطأ غير معروف في وظيفة البريد PHP's mail()", "user-mail-no-addy": "لقد حاولت إرسال بريد إلكتروني دون عنوان بريد إلكتروني.", "resetpass_announce": "تم تسجيل دخولك بكلمة سر مؤقتة.\nللدخول بشكل نهائي، يجب عليك ضبط كلمة سر جديدة هنا:", @@ -212,12 +299,10 @@ "resetpass-submit-loggedin": "تغيير كلمة السر", "resetpass-wrong-oldpass": "كلمة سر حالية أو مؤقتة غير صحيحة.\nربما تكون غيرت كلمة السر الخاصة بك بنجاح أو طلبت كلمة سر مؤقتة جديدة.", "resetpass-temp-password": "كلمة سر مؤقتة:", - "passwordreset": "إعادة ضبط كلمة السر", + "passwordreset": "تبديل كلمة السر", "passwordreset-disabled": "عُطّلت إعادة تعيين كلمة السر على هذه الويكي.", "passwordreset-username": "اسم المستخدم:", "passwordreset-domain": "النطاق:", - "passwordreset-capture": "أأعرض البريد الإلكتروني الناتج؟", - "passwordreset-capture-help": "إذا علّمت هذا الصندوق فسيعرض لك البريد الإلكتروني (الذي يحتوي كلمة سر مؤقتة) وسيرسل أيضا للمستخدم.", "passwordreset-email": "عنوان البريد الإلكتروني:", "passwordreset-emailtitle": "تفاصيل حساب {{SITENAME}}", "passwordreset-emailtext-ip": "احد ما (قد يكون انت$1)طلب مذكرة تفاصيل الحساب ل{{SITENAME}} ($4).المستخدم الاتي {{PLURAL:$3|الحساب هو|الحسابات هي}} قد قرن بهذا العنوان :\n\n$2\n\n{{PLURAL:$3|كلمة المرور المؤقتة|كلمات المرور المؤقة}}سينتهي في {{PLURAL:$5|يوم|ايام$5 }}\nمن الافضل ان تسجل الدخول وتختار كلمة مرور جديدة الان .\nإذا قام شخص آخر بهذا الطلب، أو إذا تذكرت كلمة المرور الأصلية الخاصة بك،ولم تعد ترغب في تغييره، يمكنك تجاهل هذه الرسالة ومتابعة استخدام كلمة المرورالقديمة.", @@ -254,8 +339,8 @@ "savearticle": "احفظ الصفحة", "preview": "معاينة", "showpreview": "أظهر معاينة", - "showdiff": "أظهر التغييرات", - "anoneditwarning": "'''تحذير:''' لم تقم بالدخول.\nسيسجل عنوان الآيبي خاصتك في تاريخ هذه الصفحة.", + "showdiff": "ورّي التبديلات", + "anoneditwarning": "'''ردّ بالك:''' راك ما دخلتش للحساب متاعك.\nإذا بدّلت حاجة، ينجّموا العباد الكلّ يعرفوا الإي پاي متاعك. أما إذا <strong>[$1 دخلت لحسابك]</strong> ولّا <strong>[$2 عملت حساب جديد]</strong>، التبديلات متاعك الكل بش يتنسبوا لإسم المستعمل متاعك، و بخلاف هذا تنجّم تعمل برشا حوايج ما تنجّمش تعملهم وقت إلّي تبدّل حاجة بالإي پاي متاعك.", "anonpreviewwarning": "''أنت غير مسجل الدخول. الحفظ سيسجل عنوان الأيبي الخاص بك في تاريخ هذه الصفحة.''", "missingsummary": "'''تنبيه:''' لم تقم بكتابة ملخص للتعديل.\nإذا قمت بضغط حفظ الصفحة مرة أخرى، فيتم حفظ تعديلك بدون ملخص.", "missingcommenttext": "من فضلك أدخل تعليقا في الأسفل.", @@ -299,9 +384,9 @@ "session_fail_preview_html": "'''عذرا! لم نستطع معالجة تعديلك بسبب فقدان بيانات الجلسة.'''\n\n''لأن {{SITENAME}} بها HTML الخام مفعلة، العرض المسبق مخفي كاحتياط ضد هجمات الجافا سكريبت.''\n\n'''إذا كانت هذه محاولة تعديل صادقة، من فضلك حاول مرة أخرى.\nإذا كانت مازالت لا تعمل، حاول [[Special:UserLogout|تسجيل الخروج]] ثم تسجيل الدخول مجددا.'''", "token_suffix_mismatch": "'''تعديلك تم رفضه لأن عميلك أخطأ في علامات الترقيم\nفي نص التعديل. تم رفض التعديل لمنع فساد نص المقالة.\nهذا يحدث أحيانا عندما تستخدم خدمة بروكسي مجهول معيبة مبنية على الوب.'''", "edit_form_incomplete": "'''بعض أجزاء من نموذج التعديل لم تصل إلى الخادم؛ تأكد من أن تعديلاتك لم تمس وحاول مجددا.'''", - "editing": "تحرير $1", - "creating": "إنشاء «$1»", - "editingsection": "تحرير $1 (قسم)", + "editing": "تبديل $1", + "creating": "عملان «$1»", + "editingsection": "تبديل $1 (طرف)", "editingcomment": "تعديل $1 (قسم جديد)", "editconflict": "تضارب في التحرير: $1", "explainconflict": "لقد عدل شخص آخر هذه الصفحة بعد أن بدأت أنت بتحريرها.\nصندوق النصوص العلوي يحتوي على النص الموجود حاليا في الصفحة.\nوالتغييرات التي قمت أنت بها موجودة في الصندوق في أسفل الصفحة.\nيجب أن تقوم بدمج تغييراتك في النص الموجود حاليا.\n'''فقط''' ما هو موجود في الصندوق العلوي هو ما سيتم حفظه عند الضغط على زر \"حفظ الصفحة\".", @@ -318,9 +403,10 @@ "semiprotectedpagewarning": "'''ملاحظة:''' تمت حماية هذه الصفحة بحيث يمكن للمستخدمين المسجلين فقط تعديلها.\nآخر مدخلة سجل موفرة بالأسفل كمرجع:", "cascadeprotectedwarning": "'''تحذير:''' تمت حماية هذه الصفحة بحيث يستطيع المستخدمون ذوو الصلاحيات الإدارية فقط تعديلها، وذلك لأنها مدمجة في {{PLURAL:$1||الصفحة التالية والتي تمت حمايتها|الصفحتين التاليتين واللتين تمت حمايتها|الصفحات التالية والتي تمت حمايتها}} بخاصية \"حماية الصفحات المدمجة\":", "titleprotectedwarning": "'''تحذير: هذه الصفحة تمت حمايتها بحيث أن [[Special:ListGroupRights|صلاحيات معينة]] مطلوبة لإنشائها.'''\nآخر مدخلة سجل موفرة بالأسفل كمرجع:", - "templatesused": "{{PLURAL:$1||القالب المستخدم|القالبان المستخدمان|القوالب المستخدمة}} في هذه الصفحة:", + "templatesused": "{{PLURAL:$1||القالب المستعملة|القوالب المستعملة}} في هذي الپاج:", "templatesusedpreview": "{{PLURAL:$1||القالب المستخدم|القالبان المستخدمان|القوالب المستخدمة}} في هذه المعاينة:", "templatesusedsection": "{{PLURAL:$1||القالب المستخدم|القالبان المستخدمان|القوالب المستخدمة}} في هذا القسم:", + "template-protected": "(محمي)", "template-semiprotected": "(حماية جزئية)", "hiddencategories": "{{PLURAL:$1|هذه الصفحة غير موجودة في أي تصنايف مخفية|هذه الصفحة موجودة في تصنيف مخفي واحد|هذه الصفحة موجودة في تصنيفين مخفيين|هذه الصفحة موجودة في $1 تصانيف مخفية|هذه الصفحة موجودة في $1 تصنيفا مخفيا|هذه الصفحة موجودة في $1 تصنيف مخفي}}:", "nocreatetext": "قام {{SITENAME}} بتحديد القدرة على إنشاء صفحات جديدة.\nيمكنك العودة وتحرير صفحة موجودة بالفعل، أو [[Special:UserLogin|الدخول أو تسجيل حساب]].", @@ -329,9 +415,9 @@ "sectioneditnotsupported-text": "تعديل الأقسام غير مدعوم في هذه الصفحة", "permissionserrors": "أخطاء السماحات", "permissionserrorstext": "لا تمتلك الصلاحية لفعل هذا، {{PLURAL:$1||للسبب التالي|للسببين التاليين|للأسباب التالية}}:", - "permissionserrorstext-withaction": "لا تملك الصلاحيات ل$2، لل{{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يبدو أنه تم حذفها.", @@ -365,7 +451,7 @@ "currentrev-asof": "المراجعة الحالية بتاريخ $1", "revision-info": "مراجعة $1 بواسطة $2", "previousrevision": "→ مراجعة أقدم", - "nextrevision": "مراجعة أحدث ←", + "nextrevision": "مراجعة أجدد ←", "currentrevisionlink": "المراجعة الحالية", "cur": "الحالي", "next": "التالي", @@ -398,7 +484,7 @@ "rev-suppressed-unhide-diff": "'''أُخفيت''' إحدى مراجعتي هذا الفرق.\nيمكنك العثور على التفاصيل في [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} سجل الإخفاء].\nبإمكانك [$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": "مراجعة هدف غير صحيحة", @@ -468,21 +554,26 @@ "revertmerge": "إلغاء الدمج", "mergelogpagetext": "بالأسفل قائمة بأحدث عمليات الدمج لتاريخ صفحة ما إلى أخرى.", "history-title": " «$1»: تاريخ المراجعة", - "difference-title": "«$1»: الفرق بين المراجعتين", + "difference-title": "«$1»: الفرق بينات المراجعتين", "difference-title-multipage": "«$1» و«$2»: الفرق بين الصفحتين", "difference-multipage": "(الفرق بين الصفحتين)", - "lineno": "SÅ£ar $1:", + "lineno": "سطر $1:", "compareselectedversions": "قارن بين النسختين المختارتين", "showhideselectedversions": "أظهر/أخف المراجعات المختارة", + "editundo": "نحّي", "diff-multi-manyusers": "({{PLURAL:$1||مراجعة واحدة متوسطة غير معروضة أجراها|مراجعتان متوسطتان غير معروضتان أجراهما|$1 مراجعات متوسطة غير معروضة أجراها|$1 مراجعة متوسطة غير معروضة أجراها}} أكثر من {{PLURAL:$2||مستخدم واحد|مستخدمين|$2 مستخدمين|$2 مستخدمًا|$2 مستخدم}}.)", - "prevn": "{{PLURAL:$1|$1}} السابقة", - "nextn": "{{PLURAL:$1|$1}} التالية", + "searchresults": "نتايج التلويج", + "prevn": "{{PLURAL:$1|$1}} الفايتة", + "nextn": "{{PLURAL:$1|$1}} الجاية", "prevn-title": "$1 {{PLURAL:$1|نتيجة|نتيجة}} سابقة", "nextn-title": "$1 {{PLURAL:$1|نتيجة|نتيجة}} سابقة", "searchmenu-new": "'''أنشئ الصفحة \"[[:$1]]\" في هذا الويكي!'''", + "searchprofile-everything": "كلّ شي", + "searchprofile-articles-tooltip": "لوّج في $1", + "searchprofile-images-tooltip": "لوّج عالتصاور", "search-result-category-size": "{{PLURAL:$1|لا أعضاء|عضو واحد|عضوان|$1 أعضاء|$1 عضوًا|$1 عضو}} ({{PLURAL:$2|لا تصانيف فرعية|تصنيف فرعي واحد|تصنيفان فرعيان|$2 تصنيفات فرعية|$2 تصنيفًا فرعيًا|$2 تصنيف فرعي}} و{{PLURAL:$3|لا ملفات|ملف واحد|ملفان|$3 ملفات|$3 ملفًا|$3 ملف}})", "search-redirect": "(تحويلة $1)", - "search-suggest": "هل كنت تقصد: $1", + "search-suggest": "ياخي كنت تقصد: $1", "searchrelated": "مرتبطة", "search-nonefound": "لا توجد نتائج تطابق الاستعلام.", "mypreferences": "تفضيلاتي", @@ -492,34 +583,51 @@ "prefs-help-email-others": "يمكنك أيضا اختيار للسماح للآخرين الاتصال بك عن طريق صفحة المستخدم أو نقاش المستخدم الخاص بك دون الحاجة إلى الكشف عن الهوية الخاصة بك.", "newuserlogpage": "سجل إنشاء المستخدمين", "nchanges": "{{PLURAL:$1|لا تغييرات|تغيير واحد|تغييران|$1 تغييرات|$1 تغييرا|$1 تغيير}}", + "enhancedrc-history": "تاريخ", + "recentchanges": "التبديلات الجدد", "recentchanges-legend": "خيارات أحدث التغييرات", "recentchanges-summary": "تابع أحدث التغييرات للويكي عبر هذه التلقيمة.", "recentchanges-feed-description": "تابع أحدث التغييرات للويكي عبر هذه التلقيمة.", - "recentchanges-label-newpage": "أنشأ هذا التعديل صفحة جديدة", - "recentchanges-label-minor": "هذا تعديل طفيف", - "recentchanges-label-bot": "أجرى هذا التعديل بوت", + "recentchanges-label-newpage": "عمل هذا التبديل پاج جديدة", + "recentchanges-label-minor": "هذا تبديل صغير", + "recentchanges-label-bot": "عمل هذا التبديل بوت", "recentchanges-label-unpatrolled": "لم يراجع هذا التعديل إلى الآن", + "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (شوف زادة [[Special:NewPages|ليستة الپاجات الجدد]])", "rcnotefrom": "بالأسفل التغييرات منذ '''$2''' (إلى '''$1''' معروضة).", - "rclistfrom": "أظهر التغييرات بدءا من $3 $2", + "rclistfrom": "ورّي التبديلات بدءا من $3 $2", "rcshowhideminor": "$1 التعديلات الطفيفة", + "rcshowhideminor-hide": "خبّي", "rcshowhidebots": "$1 البوتات", + "rcshowhidebots-show": "ورّي", "rcshowhideliu": "$1 المستخدمين المسجلين", + "rcshowhideliu-hide": "خبّي", "rcshowhideanons": "$1 المستخدمين المجهولين", + "rcshowhideanons-hide": "خبّي", "rcshowhidepatr": "$1 التعديلات المراجعة", "rcshowhidemine": "$1 تعديلاتي", + "rcshowhidemine-hide": "خبّي", "rclinks": "أظهر آخر $1 تعديل في آخر $2 يوم<br />$3", + "diff": "فرق", + "hist": "تاريخ", "hide": "أخف", - "show": "اعرض", + "show": "ورّي", + "minoreditletter": "ص", + "newpageletter": "ج‌", + "boteditletter": "ب", + "rc-change-size-new": "$1 {{PLURAL:$1|أوكتاي|أوكتاي}} بعد التبديل", "rc-enhanced-expand": "عرض التفاصيل (يتطلب جافاسكريبت)", "rc-enhanced-hide": "أخفِ التفاصيل", "recentchangeslinked": "تغييرات ذات علاقة", "recentchangeslinked-title": "التغييرات المرتبطة ب \"$1\"", - "recentchangeslinked-summary": "هذه قائمة بالتغييرات التي تمت حديثاً للصفحات الموصولة من صفحة معينة (أو إلى الأعضاء ضمن تصنيف معين).\nالصفحات في [[Special:Watchlist|قائمة مراقبتك]] '''عريضة'''", - "recentchangeslinked-page": "اسم الصفحة:", + "recentchangeslinked-summary": "هذي ليستة بالتبديلات إلّي صاروا ما صارلهمش برشا للپاجات إلّي موجود ليان يدّي ليهم في پاج بذاتها (ولّا في پاج متاع تصنيف معين).\nالپاجات في [[Special:Watchlist|ليستة الپاجات إلّي تّبعها]] '''مكتوبين بالغليظ'''", + "recentchangeslinked-page": "إسم الپاج:", "recentchangeslinked-to": "أظهر التغييرات للصفحات الموصولة للصفحة المعطاة عوضاً عن ذلك", + "upload": "صبّ فشياي", "uploadlogpage": "سجل الرفع", "filedesc": "ملخص:", "license": "ترخيص:", + "file-anchor-link": "فيشياي", + "filehist": "تاريخ الپاج", "filehist-help": "اضغط على وقت/زمن لرؤية الملف كما بدا في هذا الزمن.", "filehist-revert": "استرجع", "filehist-current": "حالي", @@ -528,19 +636,24 @@ "filehist-thumbtext": "تصغير للنسخة بتاريخ $1", "filehist-user": "مستخدم", "filehist-dimensions": "الأبعاد", - "imagelinks": "استخدام الملف", + "filehist-comment": "تعليق", + "imagelinks": "استعمال الدوسي", "linkstoimage": "{{PLURAL:$1||الصفحة التالية تصل|الصفحتان التاليتان تصلان|ال$1 صفحات التالية تصل|ال$1 صفحة التالية تصل}} إلى هذا الملف:", "nolinkstoimage": "لا توجد صفحات تصل لهذا الملف.", "sharedupload-desc-here": "هذا الملف من $1 ويمكن استخدامه بواسطة المشاريع الأخرى.\nالوصف على [$2 صفحة وصف الملف] هناك معروض بالأسفل.", + "upload-disallowed-here": "ما تنجّمش تبدّل هذي التصويرة.", + "randompage": "پاج بالزهر", "statistics": "إحصاءات", - "nmembers": "{{PLURAL:$1|لا أعضاء|عضو واحد|عضوان|$1 أعضاء|$1 عضوا|$1 عضو}}", + "brokenredirects-edit": "بدّل", + "nmembers": "{{PLURAL:$1|حتى عضو|عضو واحد||زوز أعضاء|$1 عضو}}", "prefixindex": "كل الصفحات بالبادئة", "usercreated": "{{GENDER:$3|أنشأه|أنشأته}} في $1 الساعة $2", + "newpages": "پاجات جدد", "move": "انقل", "pager-newer-n": "{{PLURAL:$1|أقدم 1|أقدم $1}}", "pager-older-n": "{{PLURAL:$1|أقدم 1|أقدم $1}}", "booksources": "مصادر كتاب", - "booksources-search-legend": "البحث عن مصادر الكتب", + "booksources-search-legend": "التلويج على مصادر الكتب", "log": "سجلات", "allpagessubmit": "اذهب", "categories": "تصنيفات", @@ -548,7 +661,7 @@ "listgrouprights-members": "(قائمة الأعضاء)", "emailuser": "إرسال رسالة لهذا المستخدم", "watchlist": "قائمة مراقبتي", - "mywatchlist": "قائمة مراقبتي", + "mywatchlist": "ليستة الپاجات إلّي نتبّعها", "watchlistfor2": "ل$1 $2", "watch": "راقب", "unwatch": "أوقف المراقبة", @@ -558,18 +671,22 @@ "actioncomplete": "انتهاء العملية", "actionfailed": "الفعل فشل", "dellogpage": "سجل الحذف", + "rollbacklink": "رجّع", "protectlogpage": "سجل الحماية", "protectedarticle": "حمى \"[[$1]]\"", + "restriction-edit": "تبديل", "undeletelink": "اعرض/استعد", "undeleteviewlink": "اعرض", "namespace": "النطاق", "invert": "اعكس الاختيار", - "contributions": "مساهماتي", + "blanknamespace": "(رئيسي)", + "contributions": "مساهمات {{GENDER:$1|المستعمل|المستعملة}}", "contributions-title": "مساهمات المستخدم $1", "mycontris": "مساهماتي", + "anoncontribs": "مساهمات", "contribsub2": "ل$1 ($2)", - "month": "من سنة (وأقدم):", - "year": "من سنة (وأقدم):", + "month": "من شهر (و أقدم):", + "year": "من عام (و أقدم):", "sp-contributions-newbies": "اعرض مساهمات الحسابات الجديدة فقط", "sp-contributions-blocklog": "سجل المنع", "sp-contributions-uploads": "مرفوعات", @@ -579,6 +696,7 @@ "sp-contributions-username": "عنوان أيبي أو اسم مستخدم:", "sp-contributions-toponly": "أظهر أعلى المراجعات فقط", "whatlinkshere-title": "الصفحات التي تصل إلى \"$1\"", + "whatlinkshere-page": "الپاج:", "linkshere": "الصفحات التالية تصل إلى '''[[:$1]]''':", "nolinkshere": "لا توجد صفحات تصل إلى '''[[:$1]]'''.", "isredirect": "صفحة تحويل", @@ -586,19 +704,20 @@ "isimage": "وصلة ملف", "whatlinkshere-next": "{{PLURAL:$1|التالية|ال$1 التالية}}", "whatlinkshere-links": "← وصلات", - "whatlinkshere-hideredirs": "$1 التحويلات", + "whatlinkshere-hideredirs": "$1 تحويلات", "whatlinkshere-hidetrans": "$1 التضمينات", - "whatlinkshere-hidelinks": "$1 الوصلات", + "whatlinkshere-hidelinks": "$1 ليانات", "whatlinkshere-hideimages": "$1 وصلة صورة", "whatlinkshere-filters": "مرشحات", "ipboptions": "ساعتين:2 hours,يوم واحد:1 day,3 أيام:3 days,أسبوع واحد:1 week,أسبوعين:2 weeks,شهر واحد:1 month,3 أشهر:3 months,6 أشهر:6 months,سنة واحدة:1 year,دائم:infinite", "ipblocklist": "المستخدمون الممنوعون", + "blocklink": "بلوكي", "unblocklink": "ارفع المنع", "change-blocklink": "تغيير المنع", "blocklogpage": "سجل المنع", "blocklogentry": "منع \"[[$1]]\" لفترة زمنية مدتها $2 $3", "block-log-flags-nocreate": "إنشاء الحسابات ممنوع", - "movelogpage": "سجل النقل", + "movelogpage": "سجل التحويل", "revertmove": "استرجع", "export": "تصدير صفحات", "allmessagesname": "الاسم", @@ -609,18 +728,29 @@ "tooltip-pt-preferences": "تفضيلاتي", "tooltip-pt-watchlist": "قائمة الصفحات التي تراقب التغييرات التي تحدث بها", "tooltip-pt-mycontris": "قائمة مساهماتك", + "tooltip-pt-login": "ماذابيك لوكان تدخل للويكي، أما موش لازمك تعمل هكّا", "tooltip-pt-logout": "خروج", + "tooltip-pt-createaccount": "ماذابيك لوكان تعمل حساب و تدخل للويكي، أما موش لازمك تعمل هكّا", + "tooltip-ca-edit": "بدّل الپاج", "tooltip-ca-addsection": "ابدأ قسما جديدا", + "tooltip-ca-viewsource": "هذه الپاج محمية.\nتنجّم تشوف مصدرها.", "tooltip-ca-protect": "احم هذه الصفحة", "tooltip-ca-delete": "احذف هذه الصفحة", - "tooltip-ca-move": "علم هذه الصفحة", - "tooltip-ca-watch": "أضف هذه الصفحة إلى قائمة مراقبتك", + "tooltip-ca-move": "حوّل هذي الپاج", + "tooltip-ca-watch": "زيد ها الپاج لليستة الپاجات إلّي تّبعها", "tooltip-ca-unwatch": "أزل هذه الصفحة من قائمة مراقبتك", + "tooltip-search": "لوّج في {{SITENAME}}", + "tooltip-search-go": "إمشي للپاج إلّي عندها هذا الإسم بالضبط إذا هي موجودة", + "tooltip-p-logo": "شوف الپاج الأولانيّة", + "tooltip-n-mainpage": "شوف الپاج الأولانيّة", + "tooltip-n-mainpage-description": "شوف الپاج الأولانيّة", + "tooltip-n-randompage": "خرّج پاج بالزهر", "tooltip-feed-atom": "تلقيم أتوم لهذه الصفحة", - "tooltip-t-contributions": "رؤية قائمة مساهمات هذا المستخدم", + "tooltip-t-contributions": "ليستة مساهمات ها {{GENDER:$1|المستعمل|المستعملة}}", "tooltip-t-emailuser": "أرسل رسالة لهذا المستخدم", + "tooltip-t-upload": "صبّ فيشيايات", "tooltip-ca-nstab-user": "اعرض صفحة المستخدم", - "tooltip-ca-nstab-special": "هذه صفحة خاصة، لا تستطيع أن تعدل الصفحة نفسها", + "tooltip-ca-nstab-special": "هذي پاج سپاسيال، و ما تنجّمش تبدّل فيها شي", "tooltip-ca-nstab-project": "رؤية صفحة المحتوى", "tooltip-ca-nstab-image": "رؤية صفحة الملف", "tooltip-ca-nstab-template": "رؤية القالب", @@ -633,20 +763,26 @@ "tooltip-watch": "أضف هذه الصفحة إلى قائمة مراقبتك", "tooltip-undo": "\"رجوع\" تسترجع هذا التعديل وتفتح نافذة التعديل في نمط العرض المسبق. تسمح بإضافة سبب في الملخص.\n\"Annuler\" trajjeε eltabdila lekhra w tħel fenêtre mtaε el tabdil mtaε elvue el msabqa. Tnajjem tqoul εlech f'ettalkhis.", "tooltip-summary": "أدخل ملخصا قصيرا", - "previousdiff": "→ التعديل السابق", - "nextdiff": "التعديل اللاحق ←", + "previousdiff": "→ التبديل الفايت", + "nextdiff": "التبديل الجاي ←", "file-info-size": "$1 × $2 بكسل حجم الملف: $3، نوع MIME: $4", "file-nohires": "لا توجد دقة أعلى متوفرة.", "svg-long-desc": "ملف SVG، أبعاده $1 × $2 بكسل، حجم الملف: $3", + "show-big-image": "الفيشياي الأصلي", "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-datetime": "نهار و وقت تبديل الفيشياي", "namespacesall": "الكل", "monthsall": "الكل", "watchlisttools-view": "اعرض التغييرات المرتبطة", "watchlisttools-edit": "اعرض قائمة المراقبة وعدلها", "watchlisttools-raw": "عدل قائمة المراقبة الخام", + "signature": "[[{{ns:user}}:$1|$2]] ([[{{ns:user_talk}}:$1|حديث]])", "duplicate-defaultsort": "'''تحذير:''' مفتاح الترتيب الافتراضي \"$2\" يتجاوز مفتاح الترتيب الافتراضي السابق \"$1\".", "external_image_whitelist": " #<pre>اترك هذا السطر تماما كما هو\n#ضع منثورات التعبيرات المنتظمة (فقط الجزء الذي يذهب بين //) بالأسفل\n#هذه ستتم مطابقتها مع مسارات الصور الخرجية (الموصولة بشكل مباشر)\n#هذه التي تطابق سيتم عرضها كصور، غير ذلك فقط وصلة إلى الصورة سيتم عرضها\n#السطور التي تبدأ ب# تتم معاملتها كتعليقات\n#هذا لا يتأثر بحالة الحروف\n\n#ضع كل منثورات التعبيرات المنتظمة فوق هذا السطر. اترك هذا السطر تماما كما هو</pre>", - "tag-filter": "مرشح [[Special:Tags|الوسوم]]:" + "tag-filter": "مرشح [[Special:Tags|الوسوم]]:", + "tags-edit": "بدّل", + "logentry-newusers-create": "إتحلّ حساب {{GENDER:$2|المستعمل|المستعملة}} $1", + "searchsuggest-search": "لوّج في {{SITENAME}}" } diff --git a/languages/i18n/af.json b/languages/i18n/af.json index d435dbb0ad..3a9db7338e 100644 --- a/languages/i18n/af.json +++ b/languages/i18n/af.json @@ -27,7 +27,7 @@ ] }, "tog-underline": "Onderstreep skakels.", - "tog-hideminor": "Moenie klein wysigings in die onlangse wysigingslys wys nie.", + "tog-hideminor": "Versteek klein wysigings in die onlangse wysigingslys.", "tog-hidepatrolled": "Versteek gepatrolleerde wysigings in onlangse wysigingslys", "tog-newpageshidepatrolled": "Versteek gepatrolleerde wysigings van nuwe bladsy lys", "tog-extendwatchlist": "Brei dophoulys uit om alle wysigings te wys, nie slegs die nuutste nie", @@ -400,19 +400,12 @@ "externaldberror": "'n Databasisfout het tydens aanmelding voorgekom of u het nie toestemming om u eksterne rekening op te dateer nie.", "login": "Meld aan", "nav-login-createaccount": "Meld aan / registreer", - "userlogin": "Meld aan / registreer", - "userloginnocreate": "Meld aan", "logout": "Teken uit", "userlogout": "Teken uit", "notloggedin": "Nie ingeteken nie", "userlogin-noaccount": "Nog nie geregistreer nie?", "userlogin-joinproject": "Word lid van {{SITENAME}}", - "nologin": "Nog nie geregistreer nie? $1.", - "nologinlink": "Skep gerus 'n gebruiker", "createaccount": "Skep nuwe rekening", - "gotaccount": "Het u reeds 'n rekening? $1.", - "gotaccountlink": "Meld aan", - "userlogin-resetlink": "U besonderhede vergeet?", "userlogin-resetpassword-link": "Wagwoord vergeet?", "userlogin-helplink2": "Hulp met aanmelding", "userlogin-loggedin": "U is reeds aangemeld as {{GENDER:$1|$1}}.\nGebruik die onderstaande vorm om as 'n ander gebruiker aan te meld.", @@ -423,7 +416,6 @@ "createacct-another-email-ph": "Verskaf e-posadres", "createaccountmail": "Gebruik 'n tydelike lukrake wagwoord en stuur dit na die e-posadres hier onder", "createacct-realname": "Regte naam (opsioneel)", - "createaccountreason": "Rede:", "createacct-reason": "Rede", "createacct-reason-ph": "Hoekom u nog 'n rekening skep", "createacct-submit": "Skep u rekening", @@ -881,8 +873,6 @@ "saveprefs": "Stoor voorkeure", "restoreprefs": "Herstel voorkeure", "prefs-editing": "Wysigings", - "rows": "Rye", - "columns": "Kolomme", "searchresultshead": "Soekresultate", "stub-threshold": "Drempel vir merk as <a href=\"#\" class=\"stub\">saadjie</a> (grepe):", "stub-threshold-sample-link": "voorbeeld", @@ -1883,7 +1873,9 @@ "sp-contributions-blocked-notice-anon": "Hierdie IP-adres is tans geblokkeer.\nDie laaste inskrywing uit die blokkeerlogboek word hier ter inligting weergegee:", "sp-contributions-search": "Soek na bydraes", "sp-contributions-username": "IP-adres of gebruikersnaam:", - "sp-contributions-toponly": "Wys slegs die nuutste weergawes", + "sp-contributions-toponly": "Slegs die nuutste weergawes", + "sp-contributions-newonly": "Slegs nuwe bladsye", + "sp-contributions-hideminor": "Versteek klein wysigings", "sp-contributions-submit": "Soek", "whatlinkshere": "Skakels hierheen", "whatlinkshere-title": "Bladsye wat na \"$1\" skakel", @@ -2988,7 +2980,6 @@ "logentry-upload-overwrite": "$1 {{GENDER:$2|het}} 'n nuwe weergawe van $3 opgelaai", "logentry-upload-revert": "$1 het $3 {{GENDER:$2|opgelaai}}", "rightsnone": "(geen)", - "revdelete-summary": "redigeringsopsomming", "feedback-adding": "U terugvoer word op die bladsy geplaas...", "feedback-back": "Terug", "feedback-bugcheck": "Gaaf! Kontroleer of dit nie dalk een van die [$1 bekende foute] is nie.", @@ -3006,44 +2997,12 @@ "feedback-thanks-title": "Baie dankie!", "searchsuggest-search": "Soek", "searchsuggest-containing": "bevat...", - "api-error-badaccess-groups": "U word nie toegelaat om lêers te laai op hierdie wiki.", "api-error-badtoken": "Interne fout: slegte teken.", - "api-error-copyuploaddisabled": "Oplaai via URL is gedeaktiveer op hierdie bediener.", - "api-error-duplicate": "Daar {{PLURAL:$1|is al 'n lêer|is al lêers}} met dieselfde inhoud op die wiki.", - "api-error-duplicate-archive": "Daar {{PLURAL:$1|was 'n ander lêer|was ander lêers}} op hierdie webtuiste met dieselfde inhoud, maar {{PLURAL:$1|dit is|dit is}} geskrap.", - "api-error-empty-file": "Die lêer wat u probeer oplaai is leeg.", "api-error-emptypage": "Die skep van leë nuwe bladsye word nie toegelaat nie.", - "api-error-fetchfileerror": "Interne fout: Iets het verkeerd gegaan met die haal van die lêer.", - "api-error-fileexists-forbidden": "Daar is reeds 'n lêer met die naam \"$1\" wat nie oorskryf kan word nie.", - "api-error-fileexists-shared-forbidden": "Daar is reeds 'n lêer met die naam \"$1\" in die gedeelde lêerstoor, en kan nie oorskryf word nie.", - "api-error-file-too-large": "Die lêer wat u probeer oplaai is te groot.", - "api-error-filename-tooshort": "Die lêernaam is te kort.", - "api-error-filetype-banned": "Hierdie tipe lêer is verban en word nie toegelaat nie.", - "api-error-filetype-banned-type": "Die {{PLURAL:$4|lêertipe|lêertipes}} $1 word nie toegelaat nie. Toelaatbare {{PLURAL:$3|lêertipes|lêertipes}} is $2.", - "api-error-filetype-missing": "Die lêer het nie 'n uitbreiding nie.", - "api-error-hookaborted": "Die wysiging wat jy probeer maak, is deur 'n uitbreiding haak geaborteer.", - "api-error-http": "Interne fout: Kan nie 'n verbinding met die bediener maak nie.", - "api-error-illegal-filename": "Die lêernaam word nie toegelaat nie.", - "api-error-internal-error": "Interne fout: daar is iets verkeerd gegaan het met die verwerking van die oplaai van die lêer op die wiki.", - "api-error-invalid-file-key": "Interne fout: die lêer is nie in tydelike berging gevind nie.", - "api-error-missingparam": "Interne fout: ontbrekende parameters op aanvraag.", - "api-error-missingresult": "Interne fout: Kon nie bepaal of die kopie daarin geslaag.", - "api-error-mustbeloggedin": "U moet ingeteken wees om lêers te kan laai.", - "api-error-mustbeposted": "Interne fout: Die versoek vereis 'n HTTP POST-metode.", - "api-error-noimageinfo": "Die oplaai daarin geslaag, maar die bediener het ons nie enige inligting oor die lêer.", - "api-error-nomodule": "Interne fout: daar is nie 'n uploadmodule ingestel nie.", - "api-error-ok-but-empty": "Interne fout: geen reaksie van die bediener.", - "api-error-overwrite": "'N bestaande lêer vervang word nie toegelaat nie.", - "api-error-stashfailed": "Interne fout: Server nie tydelike lêer te stoor.", "api-error-publishfailed": "Interne fout: bediener kon nie die tydelike lêer publiseer nie.", - "api-error-timeout": "Die bediener het nie reageer binne die verwagte tyd.", - "api-error-unclassified": "'n Onbekende fout het voorgekom.", - "api-error-unknown-code": "Onbekende fout: \"$1\"", - "api-error-unknown-error": "Interne fout: daar is iets verkeerd geloop het toe probeer om jou lêer te laai.", + "api-error-stashfailed": "Interne fout: Server nie tydelike lêer te stoor.", "api-error-unknown-warning": "Onbekende waarskuwing: $1", "api-error-unknownerror": "Onbekende fout: \"$1\"", - "api-error-uploaddisabled": "Oplaai is afgeskakel op hierdie wiki.", - "api-error-verification-error": "Hierdie lêer kan beskadig of het die verkeerde uitbreiding.", "duration-seconds": "$1 {{PLURAL:$1|sekonde|sekondes}}", "duration-minutes": "$1 {{PLURAL:$1|minuut|minute}}", "duration-hours": "$1 {{PLURAL:$1|uur|ure}}", diff --git a/languages/i18n/ang.json b/languages/i18n/ang.json index e7415f5889..894e4528f2 100644 --- a/languages/i18n/ang.json +++ b/languages/i18n/ang.json @@ -16,7 +16,8 @@ "Macofe", "WhatamIdoing", "Hogweard", - "Amire80" + "Amire80", + "Pyscowicz" ] }, "tog-underline": "Mearc under hlencan:", @@ -157,7 +158,7 @@ "morenotlisted": "Þis getæl meaht bēon unfulfyled.", "mypage": "MÄ«n tramet", "mytalk": "MÄ«n mōtung", - "anontalk": "Þisses IP naman mōtung", + "anontalk": "Mōtung", "navigation": "Þurhfōr", "and": " and", "qbfind": "Findan", @@ -181,6 +182,7 @@ "searcharticle": "Gān", "history": "Trametes stÇ£r", "history_short": "StÇ£r", + "history_small": "stÇ£r", "updatedmarker": "nÄ«wod æfter mÄ«nre lætestan sōcne", "printableversion": "ŪtmÇ£lendlicu fadung", "permalink": "Fæst hlenca", @@ -300,6 +302,7 @@ "nstab-template": "Bysen", "nstab-help": "Helpes tramet", "nstab-category": "Flocc", + "mainpage-nstab": "Hēafodtramet", "nosuchaction": "Swilc dÇ£d ne biþ nā", "nosuchactiontext": "Sēo þe se nettfrumfinded wile dōn nis genge.\nÞū wēninga miswrite þone nettfrumfindend, oþþe folgode unrihtne hlencan.\nÞis mæg ēac tācnian wōh on þǣre weorcwrithyrste þe is gebrocen fram {{SITENAME}}.", "nosuchspecialpage": "Swilc syndrig tramet ne biþ nā", @@ -313,9 +316,11 @@ "missingarticle-rev": "(nÄ«wung#: $1)", "internalerror": "Inweard wōh", "internalerror_info": "Inweard wōh: $1", + "internalerror-fatal-exception": "Wælgescead þæs cynn is \"$1\"", "filecopyerror": "Nē cūðe biwrÄ«tan þā ymelan \"$1\" tō \"$2\".", "filerenameerror": "Ne cūðe ednemnan ymelan \"$1\" tō \"$2\".", "filedeleteerror": "Ne cūðe forlēosan þā ymelan \"$1\".", + "directorycreateerror": "We ne mot scieppan ymbfeng \"$1\"", "filenotfound": "Ne cūðe findan ymelan \"$1\".", "formerror": "Wōh: ne cūðe cȳþþugewrit forþsendan.", "badarticleerror": "Þēos dÇ£d ne cann bēon gefremed on þissum tramete.", @@ -423,6 +428,8 @@ "oldpassword": "Eald þafungword:", "newpassword": "NÄ«we þafungword:", "retypenew": "WrÄ«t nÄ«we þafungword eft:", + "botpasswords-label-create": "Scieppan", + "botpasswords-label-update": "NÄ«Æ¿a", "resetpass-submit-loggedin": "Andwendan þafungword", "resetpass-submit-cancel": "Undōn", "passwordreset": "Settan þafungword eft", @@ -551,7 +558,7 @@ "searchprofile-everything-tooltip": "Sēcan geond ealla innunga (ēac mōtungum)", "searchprofile-advanced-tooltip": "Sēcan on mā namsteda", "search-result-size": "$1 ({{PLURAL:$2|1 word|$2 worda}})", - "search-redirect": "(edlÇ£ded fram \"$1\")", + "search-redirect": "(edlÇ£ded fram $1)", "search-section": "(dÇ£l $1)", "search-suggest": "MÇ£nst þū: $1", "search-interwiki-caption": "Sweostorweorc", @@ -571,8 +578,6 @@ "prefs-rc": "NÄ«wa andwendunga", "prefs-watchlist": "Wæccgetæl", "saveprefs": "Hordian", - "rows": "RÇ£wa:", - "columns": "Sȳla:", "searchresultshead": "Sōcn", "recentchangescount": "HÅ« mæniga adihtunga to Ä«wenne gewunelÄ«ce:", "savedprefs": "Þīna foreberunga wurdon gehordod.", @@ -852,6 +857,7 @@ "contributions": "{{GENDER:$1|BrÅ«cendes}} forðunga", "contributions-title": "BrÅ«cendes forðunga for $1", "mycontris": "MÄ«na forðunga", + "anoncontribs": "forðunga", "contribsub2": "For {{GENDER:$3|$1}} ($2)", "uctop": "(genge)", "month": "Fram mōnþe (and Ç£r)", @@ -1091,7 +1097,7 @@ "logentry-move-move": "$1 {{GENDER:$2|wæg}} þone tramet $3 tō $4", "logentry-newusers-create": "BrÅ«cendes grÄ«ma $1 wæs {{GENDER:$2|geworht}}", "revdelete-summary": "ādihtscortnes", - "searchsuggest-search": "Sēcan", + "searchsuggest-search": "Sēcan {{SITENAME}}", "special-characters-group-latin": "LÇ£den", "special-characters-group-latinextended": "Ēacnod LÇ£den", "special-characters-group-symbols": "Tācnu", diff --git a/languages/i18n/ar.json b/languages/i18n/ar.json index 4342e1c182..0b0ba8207b 100644 --- a/languages/i18n/ar.json +++ b/languages/i18n/ar.json @@ -69,7 +69,9 @@ "باسم", "Moud hosny", "ديفيد", - "Super ninja2" + "Super ninja2", + "Mr. Ibrahem", + "Aboulouei1" ] }, "tog-underline": "سطر تحت الوصلات:", @@ -98,13 +100,13 @@ "tog-enotifrevealaddr": "أظهر عنوان بريدي الإلكتروني في إشعارات البريد الإلكتروني", "tog-shownumberswatching": "اعرض عدد المستخدمين المراقبين", "tog-oldsig": "توقيعك الحالي:", - "tog-fancysig": "وضع الوصلة يدوياً واستعمال نص الويكي", + "tog-fancysig": "جعل التوقيع مثل نص الويكي (دون وصلة تلقائية)", "tog-uselivepreview": "استعمال المعاينة المباشرة", "tog-forceeditsummary": "نبهني عند عدم إدخال ملخص تعديل", "tog-watchlisthideown": "أخف تعديلاتي من قائمة المراقبة", "tog-watchlisthidebots": "أخف تعديلات البوتات من قائمة المراقبة", - "tog-watchlisthideminor": "أخف التعديلات الطفيفة في قائمة المراقبة", - "tog-watchlisthideliu": "أخف تعديلات المستخدمين المسجلين في قائمة المراقبة", + "tog-watchlisthideminor": "أخف التعديلات الطفيفة من قائمة المراقبة", + "tog-watchlisthideliu": "أخف تعديلات المستخدمين المسجلين في قائمة المراقبة\n\n\nإخفاء التعديلات التي كتبها تسجيل الدخول للمستخدمين من قائمة المراقبة", "tog-watchlistreloadautomatically": "أعد تحميل قائمة المراقبة بصفة آلية حينما يتغير مرشح ما (يتطلب جافاسكربت)", "tog-watchlisthideanons": "أخف تعديلات المستخدمين المجهولين في قائمة المراقبة", "tog-watchlisthidepatrolled": "أخف التعديلات المراجعة في قائمة المراقبة", @@ -112,7 +114,7 @@ "tog-ccmeonemails": "أرسل إلي نسخا من الرسائل الإلكترونية التي أرسلها إلى المستخدمين الآخرين", "tog-diffonly": "لا تعرض محتوى الصفحة أسفل الفرق", "tog-showhiddencats": "أظهر التصنيفات المخفية", - "tog-norollbackdiff": "عدم إظهار الاختلافات بعد تنفيذ التراجع", + "tog-norollbackdiff": "لا تظهر الفروق بعد إجراء التراجع", "tog-useeditwarning": "حذّرني عندما أغادر تحرير صفحة فيها تغييرات لم أحفظها", "tog-prefershttps": "دائما استخدم اتصالا آمنا عند تسجيل الدخول", "underline-always": "دائما", @@ -173,18 +175,18 @@ "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", + "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|بلا تصنيف|تصنيف|تصنيفان|تصنيفات}}", @@ -236,7 +238,8 @@ "go": "اذهب", "searcharticle": "اذهب", "history": "تاريخ الصفحة", - "history_short": "تاريخ", + "history_short": "التاريخ", + "history_small": "تاريخ", "updatedmarker": "عدلت منذ زيارتي الأخيرة", "printableversion": "نسخة للطباعة", "permalink": "رابط دائم", @@ -299,7 +302,7 @@ "aboutsite": "عن {{SITENAME}}", "aboutpage": "Project:عن", "copyright": "المحتوى منشور وفق $1 إن لم يرد خلاف ذلك.", - "copyrightpage": "{{ns:project}}:حقوق النسخ", + "copyrightpage": "{{ns:project}}:حقوق التأليف و النشر", "currentevents": "الأحداث الجارية", "currentevents-url": "Project:الأحداث الجارية", "disclaimers": "إخلاء مسؤولية", @@ -472,24 +475,17 @@ "cannotcreateaccount-title": "لا يمكن إنشاء الحسابات", "cannotcreateaccount-text": "إنشاء الحسابات المباشر غير مفعل على هذه الويكي.", "yourdomainname": "نطاقك:", - "password-change-forbidden": "أنت لا يمكنك تغيير كلمات السر على هذا الويكي.", + "password-change-forbidden": "لا يمكنك تغيير كلمات السر على هذا الويكي.", "externaldberror": "هناك إما خطأ في دخول قاعدة البيانات الخارجية أو أنه غير مسموح لك بتحديث حسابك الخارجي.", "login": "تسجيل الدخول", "login-security": "توكيد هويتك", "nav-login-createaccount": "دخول / إنشاء حساب", - "userlogin": "دخول / إنشاء حساب", - "userloginnocreate": "تسجيل الدخول", "logout": "تسجيل الخروج", "userlogout": "اخرج", - "notloggedin": "غير مسجل الدخول", + "notloggedin": "غير مسجل للدخول", "userlogin-noaccount": "ليس لديك حساب؟", "userlogin-joinproject": "انضم إلى {{SITENAME}}", - "nologin": "ليس لديك حساب؟ '''$1'''.", - "nologinlink": "أنشئ حسابا", "createaccount": "أنشئ حسابا", - "gotaccount": "لديك حساب؟ '''$1'''.", - "gotaccountlink": "تسجيل الدخول", - "userlogin-resetlink": "نسيت تفاصيل الدخول؟", "userlogin-resetpassword-link": "نسيت كلمة مرورك؟", "userlogin-helplink2": "المساعدة في الدخول", "userlogin-loggedin": "أنت {{GENDER:$1|مسجل|مسجلة}} الدخول مسبقًا باسم $1. {{GENDER:$1|استخدم|استخدمي}} النموذج بالأسفل لتسجيل الدخول بحساب آخر.", @@ -502,7 +498,6 @@ "createaccountmail": "استخدم كلمة سر عشوائية مؤقتة وارسلها إلى عنوان البريد الإلكتروني المحدد أدناه", "createaccountmail-help": "يمكن استخدامه لإنشاء حساب لشخص آخر من دون معرفة كلمة المرور.", "createacct-realname": "الاسم الحقيقي (اختياري)", - "createaccountreason": "السبب:", "createacct-reason": "السبب", "createacct-reason-ph": "لماذا تقوم بإنشاء حساب آخر", "createacct-reason-help": "رسالة تظهر في سجل إنشاء الحسابات", @@ -699,8 +694,8 @@ "selfredirect": "<strong>تحذير:</strong> أنت تقوم بتحويل الصفحة إلى نفسها.\nربما حددت الهدف الخطأ للتحويلة أو أنك تقوم بتحرير الصفحة الخطأ.\n\nإذا نقرت على «{{int:savearticle}}» مرة أخرى، سيتم إنشاء التحويلة رغم الخطأ.", "missingcommenttext": "من فضلك أدخل تعليقا في الأسفل.", "missingcommentheader": "<strong>تنبيه:</strong> لم تقم بوضع موضوع/عنوان لهذا التعليق.\nإذا قمت بالضغط على \"{{int:savearticle}}\" مجددا، سيتم حفظ تعليقك بدون عنوان.", - "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عنوان الأيبي الخاص بك حاليا هو $3، ورقم المنع هو #$5.\nمن فضلك اذكر كل التفاصيل بالأعلى في أي استعلامات تقوم بها.", @@ -1007,6 +1002,7 @@ "search-interwiki-caption": "المشاريع الشقيقة", "search-interwiki-default": "نتائح من $1:", "search-interwiki-more": "(المزيد)", + "search-interwiki-more-results": "المزيد من النتائج", "search-relatedarticle": "مرتبطة", "searchrelated": "مرتبطة", "searchall": "الكل", @@ -1096,6 +1092,7 @@ "youremail": "البريد:", "username": "{{GENDER:$1|اسم المستخدم|اسم المستخدمة}}:", "prefs-memberingroups": "{{GENDER:$2|عضو|عضوة}} في {{PLURAL:$1|مجموعة|مجموعة|مجموعتي|مجموعات}}:", + "group-membership-link-with-expiry": "$1 (حتى $2)", "prefs-registration": "وقت التسجيل:", "yourrealname": "الاسم الحقيقي:", "yourlanguage": "اللغة:", @@ -1140,17 +1137,26 @@ "editusergroup": "تحميل مجموعات المستخدم", "editinguser": "تغيير صلاحيات {{GENDER:$1|المستخدم|المستخدمة}} <strong>[[User:$1|$1]]</strong> $2", "viewinguserrights": "عرض صلاحيات المستخدم {{GENDER:$1|للمستخدم|للمستخدمة}} <strong>[[User:$1|$1]]</strong> $2", - "userrights-editusergroup": "تعديل مجموعات المستخدم", - "userrights-viewusergroup": "عرض مجموعات المستخدم", + "userrights-editusergroup": "تعديل مجموعات {{GENDER:$1|المستخدم|المستخدمة}}", + "userrights-viewusergroup": "عرض مجموعات {{GENDER:$1|المستخدم|المستخدمة}}", "saveusergroups": "احفظ مجموعات {{GENDER:$1|المستخدم|المستخدمة}}", "userrights-groupsmember": "عضو في:", "userrights-groupsmember-auto": "عضو ضمني في:", - "userrights-groups-help": "يمكنك تغيير المجموعات التي ينتمي هذا المستخدم إليها:\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", + "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-invalid-expiry": "تاريخ انتهاء المجموعة \"$1\" غير صحيح.", + "userrights-expiry-in-past": "تاريخ انتهاء المجموعة \"$1\" هو في الماضي.", + "userrights-cannot-shorten-expiry": "أنت لا يمكنك تقديم تاريخ الانتهاء للمجموعة \"$1\". فقط المستخدمون الذين يمتلكون السماح لإضافة وإزالة هذه المجموعة يمكنهم تقديم تواريخ الانتهاء.", "userrights-conflict": "تضارب في تغيير صلاحيات المستخدم! الرجاء مراجعة تغييراتك مجدّدا وتأكيدها.", "group": "المجموعة:", "group-user": "مستخدمون", @@ -1351,22 +1357,53 @@ "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (راجع أيضا [[Special:NewPages|قائمة الصفحات الجديدة]])", "recentchanges-submit": "أظهر", "rcfilters-activefilters": "المرشحات النشطة", + "rcfilters-restore-default-filters": "استرجاع المرشحات الافتراضية", + "rcfilters-clear-all-filters": "مسح كل المرشحات", "rcfilters-search-placeholder": "رشح أحدث التغييرات (تصفح أو ابدأ الكتابة)", "rcfilters-invalid-filter": "مرشح غير صحيح", + "rcfilters-empty-filter": "لا مرشحات فعالة. كل المساهمات معروضة.", "rcfilters-filterlist-title": "مرشحات", + "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-userExpLevel-newcomer-label": "القادمون الجدد", - "rcfilters-filter-userExpLevel-newcomer-description": "المستخدمون الجدد جدا: أقل من 10 تعديلات و4 أيام من النشاط.", - "rcfilters-filter-userExpLevel-learner-label": "المتعلمون", - "rcfilters-filter-userExpLevel-learner-description": "المزيد من أيام النشاط والتعديلات أكثر من 'القادمين الجدد' ولكن أقل من 'المستخدمين ذوي الخبرة.'", - "rcfilters-filter-userExpLevel-experienced-label": "المستخدمون ذوو الخبرة", - "rcfilters-filter-userExpLevel-experienced-description": "أكثر من 30 يوما من النشاط و500 تعديل.", + "rcfilters-filter-editsbyother-description": "التعديلات المنشأة بواسطة المستخدمين الآخرين (ليس أنت).", + "rcfilters-filtergroup-userExpLevel": "مستوى الخبرة (للمستخدمين المسجلين فقط)", + "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": "أكثر من 30 يوما من النشاط و500 تعديل.", + "rcfilters-filtergroup-automated": "المساهمات الأوتوماتيكية", + "rcfilters-filter-bots-label": "بوت", + "rcfilters-filter-bots-description": "التعديلات بواسطة الأدوات الأوتوماتيكية.", + "rcfilters-filter-humans-label": "بشري (ليس بوت)", + "rcfilters-filter-humans-description": "التعديلات بواسطة المحررين البشريين.", + "rcfilters-filtergroup-significance": "الأهمية", + "rcfilters-filter-minor-label": "تعديلات طفيفة", + "rcfilters-filter-minor-description": "التعديلات التي علم عليها المستخدم كطفيفة.", + "rcfilters-filter-major-label": "التعديلات غير الطفيفة", + "rcfilters-filter-major-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": "الأفعال الإدارية، إنشاء الحسابات، حذف الصفحات، عمليات الرفع....", "rcnotefrom": "بالأسفل {{PLURAL:$5|التغيير|التغييرات}} منذ <strong>$2</strong> (إلى <strong>$1</strong> معروضة).", "rclistfrom": "أظهر التغييرات بدء من $3 $2", "rcshowhideminor": "$1 التعديلات الطفيفة", @@ -1500,7 +1537,7 @@ "uploaded-setting-handler-svg": "SVG الذي يضبط سمة \"handler\" مع خارجي/بيانات/سكريبت ممنوع. تم العثور على <code>$1=\"$2\"</code> في ملف SVG المرفوع.", "uploaded-remote-url-svg": "SVG الذي يضبط أي سمة شكل مع URL خارجي ممنوع. تم العثور على <code>$1=\"$2\"</code> في ملف SVG المرفوع.", "uploaded-image-filter-svg": "تم العثور على فلتر صورة مع URL: <code><$1 $2=\"$3\"></code> في ملف SVG المرفوع.", - "uploadscriptednamespace": "يحتوي ملف SVG هذا على اسم نطاق غير مشروع \" $1 \"", + "uploadscriptednamespace": "يحتوي ملف SVG هذا على اسم نطاق غير مشروع \"<nowiki>$1</nowiki>\"", "uploadinvalidxml": "تعذر تحليل XML في الملف المرفوع.", "uploadvirus": "الملف يحتوي على فيروس! التفاصيل: $1", "uploadjava": "يحتوي ملف ZIP هذا على ملفات جافا .class.\nلا يسمح برفع ملفات جافا لأنها تتيح تخطي القيود الأمنية.", @@ -1878,8 +1915,10 @@ "apisandbox-sending-request": "إرسال طلب API ...", "apisandbox-loading-results": "استقبال طلبات API ...", "apisandbox-results-error": "حدث خطأ أثناء تحميل رد استعدلام الAPI: $1.", - "apisandbox-request-params-json": "معاملات JSON:", + "apisandbox-request-selectformat-label": "عرض بيانات الطلب ك:", + "apisandbox-request-format-url-label": "سلسلة حروف استعلام المسار", "apisandbox-request-url-label": "مسار الطلب:", + "apisandbox-request-json-label": "JSON الطلب:", "apisandbox-request-time": "وقت الطلب: {{PLURAL:$1|$1 ms}}", "apisandbox-results-fixtoken": "رمز الصحيح وإعادة الموافقة", "apisandbox-results-fixtoken-fail": "فشل جلب توكين \"$1\"", @@ -1897,11 +1936,11 @@ "booksources-search": "بحث", "booksources-text": "توجد أدناه قائمة بوصلات لمواقع أخرى تبيع الكتب الجديدة والمستعملة، أيضا يمكنك أن تحصل على معلومات إضافية عن الكتب التي تبحث عنها من هناك:", "booksources-invalid-isbn": "رقم ISBN المعطى لا يبدو صحيحا؛ تحقق من أخطاء النسخ من المصدر الأصلي.", - "magiclink-tracking-rfc": "الصفحات التي تستخدم الوصلات السحرية لRFC", + "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": "الصفحات التي تستخدم وصلات 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": "الصفحات التي تستخدم وصلات ISBN السحرية", "magiclink-tracking-isbn-desc": "هذه الصفحة تستخدم الوصلات السحرية لISBN. انظر [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Magic_links mediawiki.org] حول كيفية التغيير.", "specialloguserlabel": "المؤدي:", "speciallogtitlelabel": "الهدف (عنوان أو {{ns:user}}:اسم المستخدم للمستخدم):", @@ -2022,7 +2061,7 @@ "emailccsubject": "نسخة من رسالتك إلى $1: $2", "emailsent": "أُرسل البريد الإلكتروني", "emailsenttext": "أُرسلت رسالتك الإلكترونية.", - "emailuserfooter": "هذا البريد الإلكتروني {{GENDER:$1|تم إرساله}} بواسطة $1 إلى {{GENDER:$2|$2}} بواسطة وظيفة \"{{int:emailuser}}\" في {{SITENAME}}. عنوان البريد الخاص {{GENDER:$2|بك}} سيتم إرساله مباشرة {{GENDER:$1|للمرسل الأصلي|للمرسلة الأصلية}}، مما يكشف عنوان البريد الإلكتروني الخاص {{GENDER:$2|بك}} {{GENDER:$1|لهم}}.", + "emailuserfooter": "هذا البريد الإلكتروني {{GENDER:$1|تم إرساله}} بواسطة $1 إلى {{GENDER:$2|$2}} بواسطة وظيفة \"{{int:emailuser}}\" في {{SITENAME}}. لو {{GENDER:$2|أنك}} رددت على هذا البريد، فعنوان البريد الخاص {{GENDER:$2|بك}} سيتم إرساله مباشرة {{GENDER:$1|للمرسل الأصلي|للمرسلة الأصلية}}، مما يكشف عنوان البريد الإلكتروني الخاص {{GENDER:$2|بك}} {{GENDER:$1|لهم}}.", "usermessage-summary": "ترك رسالة نظام.", "usermessage-editor": "مراسل النظام", "watchlist": "قائمة مراقبتي", @@ -2120,7 +2159,7 @@ "editcomment": "ملخص التعديل كان:<em>$1</em>.", "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}}؛\nاسترجع حتى آخر نسخة بواسطة {{GENDER:$4|$2}}.", "rollback-success-notify": "تم استرجاع التعديلات بواسطة $1;\nتم التغيير إلى آخر مراجعة بواسطة $2. [$3 عرض التغييرات]", "sessionfailure-title": "فشل في الجلسة", "sessionfailure": "يبدو أنه هناك مشكلة في جلسة الدخول الخاصة بك؛\nلذلك فقد ألغيت هذه العملية كإجراء احترازي ضد الاختراق.\nمن فضلك اضغط على مفتاح \"رجوع\" لتحميل الصفحة التي جئت منها، ثم حاول مرة أخرى.", @@ -3659,7 +3698,7 @@ "logentry-tag-update-revision": "$1 {{GENDER:$2|حدث|حدثت}} الوسوم للمراجعة $4 للصفحة $3 ({{PLURAL:$7|أضاف}} $6; {{PLURAL:$9|أزال}} $8)", "logentry-tag-update-logentry": "$1 {{GENDER:$2|حدث|حدثت}} الوسوم على مدخلة السجل $5 للصفحة $3 ({{PLURAL:$7|أضاف}} $6; {{PLURAL:$9|أزال}} $8)", "rightsnone": "(لا شيء)", - "revdelete-summary": "ملخص التعديل", + "rightslogentry-temporary-group": "$1 (مؤقت، حتى $2)", "feedback-adding": "إضافة تعليقات إلى الصفحة...", "feedback-back": "رجوع", "feedback-bugcheck": "رائع! تحقق من أن هذه ليست إحدى [$1 العلل المعروفة].", @@ -3684,56 +3723,12 @@ "feedback-useragent": "وكيل المستخدم:", "searchsuggest-search": "ابحث في {{SITENAME}}", "searchsuggest-containing": "يحتوي...", - "api-error-autoblocked": "عنوان الأيبي الخاص بك تم منعه تلقائيا، لأنه تم استخدامه بواسطة مستخدم ممنوع", - "api-error-badaccess-groups": "لا يسمح لك بتحميل الملفات إلى هذه الويكي.", "api-error-badtoken": "خطأ داخلي: رمز مميز غير صحيح.", - "api-error-blocked": "لقد منعت من التحرير.", - "api-error-copyuploaddisabled": "تم تعطيل تحميل من رابط على هذا الخادم.", - "api-error-duplicate": "هناك {{PLURAL:$1|ملف آخر|بعض الملفات الأخرى}} مسبقا على الموقع بنفس المحتوى.", - "api-error-duplicate-archive": "هناك {{PLURAL:$1|كان ملف آخر |كذلك بعض الملفات الأخرى}} مسبقاً على الموقع بنفس المضمون، ولكن {{PLURAL:$1|تم}} حذفها.", - "api-error-empty-file": "كان ملف الذي قمت بإرسال فارغة.", "api-error-emptypage": "إنشاء صفحات فارغة جديدة، غير مسموح به.", - "api-error-fetchfileerror": "خطأ داخلي: قد حدث خطأ أثناء إحضار الملف.", - "api-error-fileexists-forbidden": "يوجد مسبقا ملف باسم \"$1\"، ولا يمكن استبداله.", - "api-error-fileexists-shared-forbidden": "يوجد مسبقا ملف باسم \"$1\" في مستودع الملفات المشتركة، ولا يمكن استبداله.", - "api-error-file-too-large": "الملف الذي أرسلته كان كبيرا جدا.", - "api-error-filename-tooshort": "اسم الملف قصير جدا.", - "api-error-filetype-banned": "نوع الملف هذا ممنوع.", - "api-error-filetype-banned-type": "$1 {{PLURAL:$4|ليس نوع ملف مسموح به|ليست أنواع ملفات مسموح بها}}. {{PLURAL:$3|نوع الملف المسموح به هو|أنواع الملفات المسموح بها هي}} $2.", - "api-error-filetype-missing": "يفتقد الملفّ ملحق نوعيّته.", - "api-error-hookaborted": "التعديل الذي تحاول أن تقوم به تم إحباطه", - "api-error-http": "خطأ داخلي: تعذر الاتصال بالخادم.", - "api-error-illegal-filename": "اسم الملف غير مسموح به.", - "api-error-internal-error": "خطأ داخلي: حدث خطأ عند معالجة التحميل الخاص بك على الويكي.", - "api-error-invalid-file-key": "خطأ داخلي: لم يتم العثور على الملف في التخزين المؤقت.", - "api-error-missingparam": "خطأ داخلي : متغيرات مفقودة ضمن الطلب.", - "api-error-missingresult": "خطأ داخلي : لا يمكن التحديد ما إذا كان النسخ ناجحاً.", - "api-error-mustbeloggedin": "يجب أن تكون مسجلا في لتحميل الملفات.", - "api-error-mustbeposted": "خطأ داخلي: الطلب يتطلب HTTP POST.", - "api-error-noimageinfo": "نجح الرفع، ولكن الخادم لم يقدم لنا أي معلومات حول الملف.", - "api-error-nomodule": "خطأ داخلي: لم يتم تعيين تحميل الوحدة النمطية.", - "api-error-ok-but-empty": "خطأ داخلي : لم يكن هناك استجابة من الملقم.", - "api-error-overwrite": "لا يسمح بالكتابة فوق ملف موجود.", - "api-error-ratelimited": "أنت تحاول رفع الكثير من الملفات في فترة زمنية قصيرة أقصر مما تسمح به هذه الويكي.\nمن فضلك حاول مرة ثانية خلال عدة دقائق.", - "api-error-stashfailed": "خطأ داخلي: فشل الملقم في تخزين الملفات المؤقتة.", "api-error-publishfailed": "خطأ داخلي: لم ينجح الخادوم في نشر ملف مؤقت", - "api-error-stasherror": "حدث خطأ أثناء رفع الملف لتخزينه.", - "api-error-stashedfilenotfound": "لم يعثر على الملف المحجوب عند محاولة رفعه من الحجب.", - "api-error-stashpathinvalid": "وكان الطريق الذي يجب أن يتم العثور على ملف مخبئ غير صالح.", - "api-error-stashfilestorage": "حدث خطأ أثناء رفع الملف لتخزينه.", - "api-error-stashzerolength": "لا يمكن أن خادم تخبئة الملف، لأنه يحتوي على طول صفري.", - "api-error-stashnotloggedin": "يجب عليك تسجيل الدخول لحفظ الملفات في مرفوعاتك.", - "api-error-stashwrongowner": "الملف الذي كنت تحاول الوصول اليه في مخبوائتك ليس لك.", - "api-error-stashnosuchfilekey": "الملف الذي كنت تحاول الوصول اليه في مخبوائتك غير موجود.", - "api-error-timeout": "لم يستجب الخادم في الوقت المتوقع.", - "api-error-unclassified": "حدث خطأ غير معروف", - "api-error-unknown-code": "خطأ غير معروف: \"$1\"", - "api-error-unknown-error": "خطأ داخلي: قد حدث خطأ عند محاولة تحميل الملف الخاص بك.", + "api-error-stashfailed": "خطأ داخلي: فشل الملقم في تخزين الملفات المؤقتة.", "api-error-unknown-warning": "تحذير غير معروف: \"$1\".", "api-error-unknownerror": "خطأ غير معروف: \"$1\"", - "api-error-uploaddisabled": "تم تعطيل الرفع على هذه الويكي.", - "api-error-verification-error": "هذا الملف قد يكون معطوباً أو يحتوي على امتداد غير صحيح.", - "api-error-was-deleted": "تم رفع ملف بهذا الاسم سابقا ثم تم حذفه بعد هذا.", "duration-seconds": "{{PLURAL:$1|أقل من ثانية|ثانية واحدة|ثانيتان|$1 ثوانٍ|$1 ثانية}}", "duration-minutes": "{{PLURAL:$1|أقل من دقيقة|دقيقة واحدة|دقيقتان|$1 دقائق|$1 دقيقة}}", "duration-hours": "({{PLURAL:$1||ساعة واحدة|ساعتان|$1 ساعات|$1 ساعة}})", @@ -3853,6 +3848,7 @@ "mw-widgets-titleinput-description-new-page": "الصفحة غير موجودة بعد", "mw-widgets-titleinput-description-redirect": "تحويل إلى $1", "mw-widgets-categoryselector-add-category-placeholder": "أضف تصنيفا...", + "mw-widgets-usersmultiselect-placeholder": "أضف المزيد...", "sessionmanager-tie": "لا يمكن جمع أنواع استيثاق متعددة: $1.", "sessionprovider-generic": "جلسات $1", "sessionprovider-mediawiki-session-cookiesessionprovider": "جلسات قائمة على ملفات تعريف الارتباط (كوكيز)", @@ -3984,7 +3980,7 @@ "usercssispublic": "من فضل لاحظ: صفحات الCSS الفرعية لا ينبغي أن تحتوي على بيانات سرية بما أنها يمكن رؤيتها بواسطة المستخدمين الآخرين.", "restrictionsfield-badip": "عنوان أيبي أو نطاق غير صحيح: $1", "restrictionsfield-label": "نطاقات الأيبي المسموح بها:", - "restrictionsfield-help": "عنوان أيبي أو نطاق CIDR واحد لكل سطر. لتفعيل كل شيء، استخدم<br><code>0.0.0.0/0</code><br><code>::/0</code>", + "restrictionsfield-help": "عنوان أيبي أو نطاق CIDR واحد لكل سطر. لتفعيل كل شيء، استخدم:\n<pre>0.0.0.0/0\n::/0</pre>", "revid": "المراجعة $1", "pageid": "معرف الصفحة $1" } diff --git a/languages/i18n/arn.json b/languages/i18n/arn.json index 6a9ed152af..44b0f68713 100644 --- a/languages/i18n/arn.json +++ b/languages/i18n/arn.json @@ -7,7 +7,8 @@ "Lin linao", "Poquil", "Remember the dot", - "아라" + "아라", + "Angel sm" ] }, "tog-underline": "Miñcewirilpe lasun", @@ -157,7 +158,7 @@ "disclaimers": "Tukuldungun ñi pin ley", "disclaimerpage": "Project:Katrütuwün ñi llowdüngun", "edithelp": "Kellun kümeelkünuam", - "mainpage": "Ñidol Wülngiñ", + "mainpage": "Ñizol Wvbgiñ", "mainpage-description": "Ñidol Wülngiñ", "portal": "Lofche ñi wülngiñ", "portal-url": "Project:Lofche ñi wülngiñ", diff --git a/languages/i18n/ast.json b/languages/i18n/ast.json index 2528bf927d..49ac8bd77c 100644 --- a/languages/i18n/ast.json +++ b/languages/i18n/ast.json @@ -182,6 +182,7 @@ "searcharticle": "Dir", "history": "Historial de la páxina", "history_short": "Historial", + "history_small": "historial", "updatedmarker": "anovada dende la mio visita cabera", "printableversion": "Versión pa imprentar", "permalink": "Enllaz permanente", @@ -420,19 +421,12 @@ "login": "Entrar", "login-security": "Comprobación d'identidá", "nav-login-createaccount": "Entrar / crear cuenta", - "userlogin": "Entrar / crear cuenta", - "userloginnocreate": "Aniciar sesión", "logout": "Salir", "userlogout": "Salir", "notloggedin": "Nun anició sesión", "userlogin-noaccount": "¿Nun tien una cuenta?", "userlogin-joinproject": "Xunise a {{SITENAME}}", - "nologin": "¿Nun tienes una cuenta? $1.", - "nologinlink": "Crear una cuenta", "createaccount": "Crear una cuenta", - "gotaccount": "¿Yá tienes una cuenta? $1.", - "gotaccountlink": "Aniciar sesión", - "userlogin-resetlink": "¿Escaeció los datos d'accesu?", "userlogin-resetpassword-link": "¿Escaeció la contraseña?", "userlogin-helplink2": "Ayuda del aniciu de sesión", "userlogin-loggedin": "Yá anició sesión como {{GENDER:$1|$1}}.\nUtilice'l formulariu de más abaxo p'aniciar sesión como otru usuariu.", @@ -445,7 +439,6 @@ "createaccountmail": "Usar una contraseña al debalu temporal y unviala a la direición de corréu electrónicu conseñada", "createaccountmail-help": "Pue usase pa crear una cuenta pa otra persona ensin saber la contraseña.", "createacct-realname": "Nome real (opcional)", - "createaccountreason": "Motivu:", "createacct-reason": "Motivu", "createacct-reason-ph": "Por qué quier crear otra cuenta", "createacct-reason-help": "Mensaxe que s'amuesa nel rexistru de creación de cuentes", @@ -644,7 +637,7 @@ "selfredirect": "<strong>Atención:</strong> Tas redirixendo esta páxina a ella mesma.\nSeique conseñaras un oxetivu enquivocáu pa la redireición, o que teas editando una páxina enquivocada. Si vuelves a facer clic en «{{int:savearticle}}», crearáse la redireición de toles maneres.", "missingcommenttext": "Por favor, escribi un comentariu abaxo.", "missingcommentheader": "<strong>Recordatoriu:</strong> Nun conseñasti un asuntu pa esti comentariu.\nSi calques nuevamente «{{int:savearticle}}», la to edición guardaráse ensin nengunu.", - "summary-preview": "Vista previa del resume:", + "summary-preview": "Vista previa del resume d'edición:", "subject-preview": "Vista previa del asuntu:", "previewerrortext": "Hebo un error al intentar entever los cambios.", "blockedtitle": "L'usuariu ta bloquiáu", @@ -952,6 +945,7 @@ "search-interwiki-caption": "Proyeutos hermanos", "search-interwiki-default": "Resultaos de $1:", "search-interwiki-more": "(más)", + "search-interwiki-more-results": "más resultaos", "search-relatedarticle": "Rellacionáu", "searchrelated": "rellacionáu", "searchall": "toos", @@ -1041,6 +1035,7 @@ "youremail": "Corréu electrónicu:", "username": "Nome d'{{GENDER:$1|usuariu|usuaria}}:", "prefs-memberingroups": "{{GENDER:$2|Miembru}} {{PLURAL:$1|del grupu|de los grupos}}:", + "group-membership-link-with-expiry": "$1 (ata'l $2)", "prefs-registration": "Hora del rexistru:", "yourrealname": "Nome real:", "yourlanguage": "Llingua:", @@ -1085,17 +1080,26 @@ "editusergroup": "Cargar los grupos d'usuariu", "editinguser": "Camudando los permisos {{GENDER:$1|del usuariu|de la usuaria}} <strong>[[User:$1|$1]]</strong> $2", "viewinguserrights": "Viendo los permisos {{GENDER:$1|del usuariu|de la usuaria}} <strong>[[User:$1|$1]]</strong> $2", - "userrights-editusergroup": "Editar los grupos d'usuariu", - "userrights-viewusergroup": "Ver los grupos d'usuariu", + "userrights-editusergroup": "Editar los grupos {{GENDER:$1|del usuariu|de la usuaria}}", + "userrights-viewusergroup": "Ver los grupos {{GENDER:$1|del usuariu|de la usuaria}}", "saveusergroups": "Guardar los grupos {{GENDER:$1|del usuariu|de la usuaria}}", "userrights-groupsmember": "Miembru de:", "userrights-groupsmember-auto": "Miembru implícitu de:", - "userrights-groups-help": "Pues camudar los grupos a los que pertenez esti usuariu.\n* Un caxellu marcáu significa que l'usuariu ta nesi grupu.\n* Un caxellu non marcáu significa que l'usuariu nun ta nesi grupu.\n* Un * indica que nun pues eliminalu del grupu una vegada tea inxeríu, o viceversa.", + "userrights-groups-help": "Pues camudar los grupos a los que pertenez esti usuariu.\n* Un caxellu marcáu significa que l'usuariu ta nesi grupu.\n* Un caxellu non marcáu significa que l'usuariu nun ta nesi grupu.\n* Un * indica que nun pues desaniciar el grupu una vegada tea inxeríu, o viceversa.\n* Un # indica que namái puede atrasase la fecha de caducidá d'esti grupu; nun puede adelantase.", "userrights-reason": "Motivu:", "userrights-no-interwiki": "Nun tienes permisu pa editar los derechos d'usuariu n'otres wikis.", "userrights-nodatabase": "La base de datos $1 nun esiste o nun ye llocal.", "userrights-changeable-col": "Grupos que pues camudar", "userrights-unchangeable-col": "Grupos que nun pues camudar", + "userrights-expiry-current": "Caduca el $1", + "userrights-expiry-none": "Nun caduca", + "userrights-expiry": "Caduca:", + "userrights-expiry-existing": "Hora de caducidá actual: $3 del $2", + "userrights-expiry-othertime": "Otru periodu:", + "userrights-expiry-options": "1 día:1 day,1 selmana:1 week,1 mes:1 month,3 meses:3 months,6 meses:6 months,1 añu:1 year", + "userrights-invalid-expiry": "La hora de caducidá del grupu «$1» nun ye válida.", + "userrights-expiry-in-past": "La hora de caducidá del grupu «$1» ta nel pasáu", + "userrights-cannot-shorten-expiry": "Nun puedes adelantar la caducidá del grupu «$1». Sólo los usuarios con permisu p'amestar y desaniciar esti grupu pueden adelantar les dates de caducidá.", "userrights-conflict": "¡Conflictu de cambiu de permisos d'usuariu! Por favor, revise y confirme los cambios.", "group": "Grupu:", "group-user": "Usuarios", @@ -1297,22 +1301,52 @@ "recentchanges-legend-plusminus": "(''±123'')", "recentchanges-submit": "Amosar", "rcfilters-activefilters": "Filtros activos", + "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-invalid-filter": "Filtru inválidu", + "rcfilters-empty-filter": "Nun hai filtros activos. Amuésense toles contribuciones.", "rcfilters-filterlist-title": "Filtros", + "rcfilters-filterlist-feedbacklink": "Comentar sobro los nuevos filtros (beta)", + "rcfilters-highlightbutton-title": "Resaltar resultaos", + "rcfilters-highlightmenu-title": "Seleiciona un color", "rcfilters-filterlist-noresults": "Nun s'alcontraron filtros", + "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-filtergroup-authorship": "Editar autoría", "rcfilters-filter-editsbyself-label": "Les tos propies ediciones", "rcfilters-filter-editsbyself-description": "Ediciones de to", "rcfilters-filter-editsbyother-label": "Ediciones d'otros", "rcfilters-filter-editsbyother-description": "Ediciones creaes por otros usuarios (non por ti).", - "rcfilters-filtergroup-userExpLevel": "Nivel d'esperiencia del usuariu", - "rcfilters-filter-userExpLevel-newcomer-label": "Recién llegaos", - "rcfilters-filter-userExpLevel-newcomer-description": "Editores mui nuevos: menos de 10 ediciones y 4 díes d'actividá.", - "rcfilters-filter-userExpLevel-learner-label": "Aprendices", - "rcfilters-filter-userExpLevel-learner-description": "Más díes d'actividá y ediciones que los «recién llegaos», pero menos que los usuarios espertos».", - "rcfilters-filter-userExpLevel-experienced-label": "Usuarios espertos", - "rcfilters-filter-userExpLevel-experienced-description": "Más de 30 díes d'actividá y 500 ediciones.", + "rcfilters-filtergroup-userExpLevel": "Nivel d'esperiencia (solo pa usuarios rexistraos)", + "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-learner-label": "Aprendices", + "rcfilters-filter-user-experience-level-learner-description": "Más díes d'actividá y ediciones que los «Recién llegaos», pero menos que los «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-filtergroup-automated": "Contribuciones automátiques", + "rcfilters-filter-bots-label": "Bot", + "rcfilters-filter-bots-description": "Ediciones feches con ferramientes automátiques.", + "rcfilters-filter-humans-label": "Ser humanu (non bot)", + "rcfilters-filter-humans-description": "Ediciones feches por editores humanos.", + "rcfilters-filtergroup-significance": "Significación", + "rcfilters-filter-minor-label": "Ediciones menores", + "rcfilters-filter-minor-description": "Ediciones que l'autor etiquetó como menores.", + "rcfilters-filter-major-label": "Ediciones non menores", + "rcfilters-filter-major-description": "Ediciones ensin etiquetar como menores.", + "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...", + "rcfilters-filter-newpages-label": "Creaciones de páxines", + "rcfilters-filter-newpages-description": "Ediciones nes que se creen páxines nueves.", + "rcfilters-filter-categorization-label": "Cambeos de categoríes", + "rcfilters-filter-categorization-description": "Rexistros de les páxines que s'añaden o borren de categoríes.", + "rcfilters-filter-logactions-label": "Aiciones rexistraes", + "rcfilters-filter-logactions-description": "Aiciones alministratives, creación de cuentes, desanicios de páxines, xubíes de ficheros...", "rcnotefrom": "Abaxo {{PLURAL:$5|tá'l cambiu|tan los cambios}} dende'l <strong>$3</strong>, a les <strong>$4</strong> (s'amuesen un máximu de <strong>$1</strong>).", "rclistfrom": "Amosar los nuevos cambios dende'l $3 a les $2", "rcshowhideminor": "$1 ediciones menores", @@ -1446,7 +1480,7 @@ "uploaded-setting-handler-svg": "Tán bloquiaos los ficheros SVG que configuren l'atributu «handler» con remote/data/script. Alcontróse <code>$1=\"$2\"</code> nel ficheru SVG xubíu.", "uploaded-remote-url-svg": "Tán bloquiaos los ficheros SVG que configuren atributos d'estilu con URL remotes. Alcontróse <code>$1=\"$2\"</code> nel ficheru SVG xubíu.", "uploaded-image-filter-svg": "Alcontróse un filtru d'imaxe con URL: <code><$1 $2=\"$3\"></code> nel ficheru SVG xubíu.", - "uploadscriptednamespace": "Esti ficheru SVG contien l'espaciu de nomes illegal «$1»", + "uploadscriptednamespace": "Esti ficheru SVG contien l'espaciu de nomes illegal «<nowiki>$1</nowiki>»", "uploadinvalidxml": "Nun pudo interpretase'l XML del ficheru cargáu.", "uploadvirus": "¡El ficheru tien un virus!\nDetalles: $1", "uploadjava": "El ficheru ye un archivu ZIP que contien un ficheru .class de Java.\nXubir ficheros Java nun ta permitío, porque puede facer que se salten les torgues de seguridá.", @@ -1724,6 +1758,7 @@ "uncategorizedcategories": "Categoríes non categorizaes", "uncategorizedimages": "Archivos non categorizaos", "uncategorizedtemplates": "Plantíes non categorizaes", + "uncategorized-categories-exceptionlist": "# Contien una llista de categoríes que nun tendríen d'apaecer en Special:UncategorizedCategories. Una categoría per llinia, empezando por «*». Nun se tienen en cuenta les llinies qu'empiecen con otru caráuter (espacios en blancu incluyíos). Usa «#» p'añadir comentarios.", "unusedcategories": "Categoríes non usaes", "unusedimages": "Imáxenes non usaes", "wantedcategories": "Categoríes buscaes", @@ -1822,8 +1857,10 @@ "apisandbox-sending-request": "Unviando solicitú a la API...", "apisandbox-loading-results": "Recibiendo los resultaos de la API...", "apisandbox-results-error": "Asocedió un error al cargar la respuesta de la consulta API: $1.", - "apisandbox-request-params-json": "Parámetros JSON:", + "apisandbox-request-selectformat-label": "Amosar los datos de la solicitú como:", + "apisandbox-request-format-url-label": "Cadena de consulta como URL", "apisandbox-request-url-label": "URL de la solicitú:", + "apisandbox-request-json-label": "JSON de la solicitú:", "apisandbox-request-time": "Duración de la solicitú: {{PLURAL:$1|$1 ms}}", "apisandbox-results-fixtoken": "Igua'l token y vuelve a unviar", "apisandbox-results-fixtoken-fail": "Nun pudo recuperase'l token «$1».", @@ -1965,7 +2002,7 @@ "emailccsubject": "Copia del to mensaxe a $1: $2", "emailsent": "Corréu unviáu", "emailsenttext": "Unviose'l to mensaxe de corréu.", - "emailuserfooter": "Esti corréu electrónicu {{GENDER:$1|unviólu}} $1 a {{GENDER:$2|$2}} per aciu de la función «{{int:emailuser}}» de {{SITENAME}}. Unviaráse'l {{GENDER:$2|to}} corréu direutamente {{GENDER:$1|al remitente|a la remitente}} orixinal, {{GENDER:$1|revelando-y}} la {{GENDER:$2|to}} direición de corréu.", + "emailuserfooter": "Esti corréu electrónicu {{GENDER:$1|unviólu}} $1 a {{GENDER:$2|$2}} per aciu de la función «{{int:emailuser}}» de {{SITENAME}}. Si {{GENDER:$2|contestes}} a esti corréu, el {{GENDER:$2|to}} corréu unviaráse direutamente {{GENDER:$1|al remitente|a la remitente}} orixinal, {{GENDER:$1|revelando-y}} la {{GENDER:$2|to}} direición de corréu.", "usermessage-summary": "Dexar un mensaxe del sistema.", "usermessage-editor": "Mensaxería del sistema", "watchlist": "Llista de siguimientu", @@ -2063,7 +2100,7 @@ "editcomment": "El resume de la edición yera: <em>$1</em>.", "revertpage": "Revertíes les ediciones de [[Special:Contributions/$2|$2]] ([[User talk:$2|alderique]]) hasta la cabera versión de [[User:$1|$1]]", "revertpage-nouser": "Revertíes les ediciones de (usuariu desaniciáu) a la cabera revisión de {{GENDER:$1|[[User:$1|$1]]}}", - "rollback-success": "Revertíes les ediciones de $1; camudáu a la última versión de $2.", + "rollback-success": "Revertíes les ediciones de {{GENDER:$3|$1}}; devueltu a la última revisión de {{GENDER:$4|$2}}.", "rollback-success-notify": "Revertíes les ediciones de $1 a la última revisión de $2. [$3 Ver cambeos]", "sessionfailure-title": "Fallu de sesión", "sessionfailure": "Paez qu'hai un problema cola to sesión; por precaución\ncancelóse l'aición que pidisti. Da-y al botón \"Atrás\" del\nnavegador pa cargar otra vuelta la páxina y vuelve a intentalo.", @@ -3490,7 +3527,7 @@ "logentry-tag-update-revision": "$1 {{GENDER:$2|anovó}} etiquetes na revisión $4 de la páxina $3 ({{PLURAL:$7|amestó}} $6; {{PLURAL:$9|desanició}} $8)", "logentry-tag-update-logentry": "$1 {{GENDER:$2|anovó}} etiquetes na entrada del rexistru $5 de la páxina $3 ({{PLURAL:$7|amestó}} $6; {{PLURAL:$9|desanició}} $8)", "rightsnone": "(nengún)", - "revdelete-summary": "editar resume", + "rightslogentry-temporary-group": "$1 (temporal, ata $2)", "feedback-adding": "Amestando el comentariu a la páxina...", "feedback-back": "Anterior", "feedback-bugcheck": "¡Perfeuto! Comprueba que nun tea yá ente los [$1 fallos conocíos].", @@ -3515,56 +3552,12 @@ "feedback-useragent": "Axente d'usuariu:", "searchsuggest-search": "Buscar en {{SITENAME}}", "searchsuggest-containing": "que contien...", - "api-error-autoblocked": "La to dirección IP bloquióse automáticamente porque la usó un usuariu bloquiáu.", - "api-error-badaccess-groups": "Nun tienes permisu pa xubir ficheros a esta wiki.", "api-error-badtoken": "Fallu internu: token incorreutu.", - "api-error-blocked": "Tas bloquiáu pa editar.", - "api-error-copyuploaddisabled": "Xubir d'una URL ta desactivao nesti sirvidor.", - "api-error-duplicate": "Yá hai {{PLURAL:$1|otru ficheru|otros ficheros}} nesti sitiu col mesmu conteníu.", - "api-error-duplicate-archive": "Yá había {{PLURAL:$1|otru ficheru|otros ficheros}} nesti sitiu col mesmu conteníu, pero se {{PLURAL:$1|desanició|desaniciaron}}.", - "api-error-empty-file": "El ficheru qu'unviasti taba baleru.", "api-error-emptypage": "Nun se permite la creación de páxines nueves baleres.", - "api-error-fetchfileerror": "Fallu internu: daqué nun funcionó al buscar el ficheru.", - "api-error-fileexists-forbidden": "Yá esiste un ficheru col nome «$1» y nun se pue sobrescribir.", - "api-error-fileexists-shared-forbidden": "Yá esiste un ficheru col nome «$1» nel repositoriu de ficheros compartíos, y nun se pue sobrescribir.", - "api-error-file-too-large": "El ficheru qu'unviasti yera demasiao grande.", - "api-error-filename-tooshort": "El nome de ficheru ye demasiao curtiu.", - "api-error-filetype-banned": "Esta triba de ficheru ta torgada.", - "api-error-filetype-banned-type": "$1 {{PLURAL:$4|nun ye una triba de ficheru permitida|nun son tribes de ficheru permitíes}}. {{PLURAL:$3|La triba de ficheru permitida ye|Les tribes de ficheru permitíes son}} $2.", - "api-error-filetype-missing": "Al ficheru falta-y una estensión.", - "api-error-hookaborted": "La conexón con una estensión encaboxó el cambéu que tentasti facer.", - "api-error-http": "Fallu internu: Nun se pudo coneutar col sirvidor.", - "api-error-illegal-filename": "El nome de ficheru nun ta permitíu.", - "api-error-internal-error": "Fallu internu: daqué nun funcionó al procesar la xubida na wiki.", - "api-error-invalid-file-key": "Fallu internu: nun s'atopó el ficheru nel depósitu temporal.", - "api-error-missingparam": "Fallu internu: falten parámetros na solicitú.", - "api-error-missingresult": "Fallu internu: nun se pudo determinar si la copia foi bien.", - "api-error-mustbeloggedin": "Tienes de tar autenticáu pa xubir ficheros.", - "api-error-mustbeposted": "Fallu internu: la solicitú necesita HTTP POST.", - "api-error-noimageinfo": "La xubida foi correuta, pero'l sirvidor nun dio información dala del ficheru.", - "api-error-nomodule": "Fallu internu: nun se configuró dengún módulu de xubíes.", - "api-error-ok-but-empty": "Fallu internu: nun hai respuesta del sirvidor.", - "api-error-overwrite": "Nun ta permitío sobroscribir un ficheru esistente.", - "api-error-ratelimited": "Tas tentando xubir más ficheros nun espaciu de tiempu más pequeñu del que permite esta wiki.\nTéntalo otra vuelta en dellos minutos.", - "api-error-stashfailed": "Fallu internu: el sirvidor nun pudo guardar el ficheru temporal.", "api-error-publishfailed": "Fallu internu: el sirvidor nun pudo espublizar el ficheru temporal.", - "api-error-stasherror": "Hebo un error al xubir el ficheru al almacén.", - "api-error-stashedfilenotfound": "Nun s'alcontró'l ficheru na reserva al intentar cargalu dende allí.", - "api-error-stashpathinvalid": "El camín onde tenía qu'alcontrase'l ficheru de la reserva ye inválidu.", - "api-error-stashfilestorage": "Hebo un error al atroxar el ficheru nel depósitu.", - "api-error-stashzerolength": "El sirvidor nun pudo atroxar el ficheru nel depósitu porque tien tamañu cero.", - "api-error-stashnotloggedin": "Tienes d'aniciar sesión p'atroxar ficheros nel depósitu de carga.", - "api-error-stashwrongowner": "El ficheru al qu'intentabes acceder nel depósitu nun te pertenez.", - "api-error-stashnosuchfilekey": "La clave de ficheru a la qu'intentabes acceder nel depósitu nun esiste.", - "api-error-timeout": "El sirvidor nun respondió nel tiempu esperáu.", - "api-error-unclassified": "Hebo un fallu desconocíu", - "api-error-unknown-code": "Fallu desconocíu: «$1»", - "api-error-unknown-error": "Fallu internu: daqué nun funcionó al tentar xubir el ficheru.", + "api-error-stashfailed": "Fallu internu: el sirvidor nun pudo guardar el ficheru temporal.", "api-error-unknown-warning": "Avisu desconocíu: «$1».", "api-error-unknownerror": "Fallu desconocíu: «$1».", - "api-error-uploaddisabled": "Les xubíes tan desactivaes nesta wiki.", - "api-error-verification-error": "Esti ficheru pudiera tar corrompíu, o tien una estensión incorreuta.", - "api-error-was-deleted": "Anteriormente xubióse y desanicióse dempués un ficheru con esti nome.", "duration-seconds": "$1 {{PLURAL:$1|segundu|segundos}}", "duration-minutes": "$1 {{PLURAL:$1|minutu|minutos}}", "duration-hours": "$1 {{PLURAL:$1|hora|hores}}", @@ -3686,6 +3679,7 @@ "mw-widgets-titleinput-description-new-page": "la páxina inda nun esiste", "mw-widgets-titleinput-description-redirect": "redirixir a $1", "mw-widgets-categoryselector-add-category-placeholder": "Amestar una categoría...", + "mw-widgets-usersmultiselect-placeholder": "Amestar más...", "sessionmanager-tie": "Nun puen combinase dellos tipos de solicitú d'identificación: $1.", "sessionprovider-generic": "sesiones $1", "sessionprovider-mediawiki-session-cookiesessionprovider": "sesiones basaes en cookies", @@ -3817,7 +3811,7 @@ "usercssispublic": "Atención: les subpáxines CSS nun tendríen de contener datos acutaos porque son visibles pa otros usuarios.", "restrictionsfield-badip": "Direición o rangu IP inválidu: $1", "restrictionsfield-label": "Rangos d'IP permitíos:", - "restrictionsfield-help": "Una única direición IP o rangu CIDR per llinia. P'activar toos, utiliza<br><code>0.0.0.0/0</code><br><code>::/0</code>", + "restrictionsfield-help": "Una única direición IP o rangu CIDR per llinia. P'activar toos, utiliza:<pre>0.0.0.0/0\n::/0</pre>", "revid": "revisión $1", "pageid": "ID de páxina $1" } diff --git a/languages/i18n/av.json b/languages/i18n/av.json index ad55c0dc2f..c335429ece 100644 --- a/languages/i18n/av.json +++ b/languages/i18n/av.json @@ -12,7 +12,7 @@ "Аль-Гимравий" ] }, - "tog-underline": "Линкал гъоркьмухъизе", + "tog-underline": "РегІелазда гъоркь мухъ лъезе:", "tog-hideminor": "ЧӀахӀиял хиса-басиязул сияхӀалда дагьа-макъал хиса-басиял рахчизе", "tog-showtoolbar": "Хиса-басиял гьарулеб мехалда тӀасияб алатазул панель бихьизабизе", "tog-editondblclick": "КӀиго кӀутӀиялдалъун гьумералъул хиса-баси гьабизе", @@ -95,7 +95,8 @@ "moredotdotdot": "Жеги...", "morenotlisted": "Гьаб сияхӀ цӀураб гьечӀо", "mypage": "Гьумер", - "mytalk": "БахӀс", + "mytalk": "Гьоркьоб лъей", + "anontalk": "Гьоркьоб лъей", "navigation": "Навигация", "and": " ва", "qbfind": "ЦӀехезе", @@ -137,7 +138,7 @@ "unprotectthispage": "Гьаб гьумералъул цӀуни хисизабизе", "newpage": "ЦIияб гьумер", "talkpage": "БахӀс", - "talkpagelinktext": "Бахlс", + "talkpagelinktext": "Гьоркьоб лъей", "specialpage": "Хъулухъияб гьумер", "personaltools": "Дур алатал", "articlepage": "Макъалаялде балагьизе", @@ -149,7 +150,7 @@ "imagepage": "Файлалъул гьумер балагьизе", "mediawikipage": "Кагъаталъул гьумер балагьизе", "otherlanguages": "Цоги мацӀазда", - "redirectedfrom": "(«$1» гьемералдасан гьаниб битӀана)", + "redirectedfrom": "(«$1» гьумералдасан гьаниб битӀана)", "redirectpagesub": "Цоги гьумералда сверизабураб гьумер", "redirectto": "Редирект:", "lastmodifiedat": "Ахирисеб нухалъ гьаб гьумералъул хиса-баси гьабуна: $2, $1.", @@ -158,7 +159,7 @@ "jumptonavigation": "навигация", "jumptosearch": "хъирщизе", "pool-errorunknown": "Лъалареб гъалатӀ", - "aboutsite": "{{SITENAME}} хӀакъалъулъ", + "aboutsite": "{{GRAMMAR:prepositional|{{SITENAME}}}} хІакъалъулъ", "aboutpage": "Project:ХӀакъалъулъ", "currentevents": "Жакъасел лъугьа-бахъинал", "currentevents-url": "Project:Гьанжесел лъугьа-бахъинал", @@ -166,8 +167,8 @@ "disclaimerpage": "Project:Жавабчилъиялдасан инкар гьаби", "edithelp": "Хисизабиялъе кумек", "helppage-top-gethelp": "Кумек", - "mainpage": "БетӀераб гьумер", - "mainpage-description": "БетӀераб гьумер", + "mainpage": "БетІераб гьумер", + "mainpage-description": "БетІераб гьумер", "policy-url": "Project:КъагӀидаби", "portal": "ЖамгӀияб портал", "portal-url": "Project:Майдан", @@ -267,7 +268,7 @@ "createacct-reason-ph": "Щай дуца цогияб аккаунт гIуцIулеб бугеб", "createacct-submit": "Аккаунт гIуцIизе", "createacct-another-submit": "Цоги аккаунт гIуцIизе", - "createacct-benefit-heading": "{{SITENAME}} гӀуцӀун буго нужго гӀадинал гӀадамаца.", + "createacct-benefit-heading": "{{SITENAME}} — ккола нужго гӀадинал гӀадамазулги нужерги гІахьалаб хІалтІи.", "createacct-benefit-body1": "{{PLURAL:$1|хиса-баси}}", "createacct-benefit-body2": "{{PLURAL:$1|гьумер|гьумерал}}", "createacct-benefit-body3": "Ахирисеб заманаялда жаниб {{PLURAL:$1|гIахьалчи}}", @@ -280,6 +281,7 @@ "pt-createaccount": "Аккаунт рагьизе", "pt-userlogout": "КъватӀиве инзе", "passwordreset": "Парол хисизе", + "passwordreset-username": "ГІахьалчиясул цІар:", "resettokens-tokens": "Токенал:", "italic_sample": "Курсивалъулаб хъвай", "italic_tip": "Курсивалъулаб хъвай", @@ -299,6 +301,7 @@ "showdiff": "Гьарурал хиса-басиял", "loginreqlink": "Жаниве лъугьине", "newarticle": "(ЦIияб)", + "newarticletext": "РегІелаздасан нуж лъугьана жеги гІуцІун гьечІеб гьумералде.\nГьеб гІуцІизе бокьани, гъоркьехун текст хъвай (цІикІкІун лъазе бл. [$1 баяналъулаб гьумералде]).\nНуж гьанире гъалатІ ккун щварал ратани, гІицІго '''нахъе''' абураб кнопка мерхье дурго браузералъул.", "updated": "(ЦӀигьабуна)", "note": "<strong>ХӀужа:</strong>", "previewnote": "<strong>КӀочоге, мун гьабсагӀаталъ балагьула вуго макъалаялъул букӀине бугеб куцалъухъ.</strong>\nДуца гьарурал хиса-басиял цӀунун гьечӀо!", @@ -360,8 +363,12 @@ "searchprofile-everything-tooltip": "Киналго гьумеразда хъирщизе (бахӀсазул гьумераздагицин)", "search-result-size": "$1 ({{PLURAL:$2|$2 рагӀи|$2 рагӀи|$2 рагӀи}})", "searchall": "киналго", + "search-nonefound": "Дуца гьабураб цІех-рехалда данде кколеб щибго батичІо.", + "powersearch-ns": "ЦІарал рищун хъирщи:", + "powersearch-togglelabel": "ГІуж лъезе:", "powersearch-toggleall": "Киналго", "powersearch-togglenone": "Щибниги", + "powersearch-remember": "Дуца тІаса бищараб рекъезаби цІунизе хадубккун букІине бугеб хъирщиялъе", "search-external": "КъватIисеб цIехей", "preferences": "Рекъезаби", "mypreferences": "Рекъезаби", @@ -392,9 +399,14 @@ "action-upload": "гьаб файл жанибе цIазе", "enhancedrc-history": "тарих", "recentchanges": "ЦӀиял хиса-басиял", + "recentchanges-legend": "ЦІиял хиса-басиязул рекъезариял", "recentchanges-label-newpage": "Гьаб хиса-басигун цӀияб гьумер рагьана.", "recentchanges-label-minor": "Гьаб буго дагьа-макъаб хиса-баси", "recentchanges-label-bot": "Гьаб хиса-баси ботас гьабуна", + "recentchanges-label-unpatrolled": "Гьаб хиса-басиялъул жеги лъицаниги хал гьабичІо", + "recentchanges-label-plusminus": "байт роценалдалъун кIодолъи-гьитIинлъи хисизаби", + "recentchanges-legend-heading": "<strong>Легенда: </strong>", + "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (гьединго балагье [[Special:NewPages|цІиял гьумеразул сияхІалъухъ]])", "rcshowhideminor": "$1 гӀиси-микъинал хиса-басиял", "rcshowhideminor-show": "Бихьизабизе", "rcshowhideminor-hide": "Бахчизе", @@ -412,6 +424,8 @@ "rcshowhidemine": "$1 дир хиса-басиял", "rcshowhidemine-show": "Бихьизабизе", "rcshowhidemine-hide": "Бахчизе", + "rcshowhidecategorization": "Гьумерал категориязде бикьи $1", + "rclinks": "$2 къояйида жаниб гьабураб, ахирисеб $1 хиса-баси бихьизабизе<br />$3", "diff": "батӀалъи", "hist": "тарих", "hide": "Бахчизе", @@ -449,36 +463,50 @@ "booksources-search": "Хъирщизе", "specialloguserlabel": "ГӀахьалчи:", "log": "Журналал", + "logempty": "Журналалда данде кколел хъвай-хъвагІаял гьечІо.", "allarticles": "Киналго макъалаби", - "allpagessubmit": "Инзе", + "allpagessubmit": "ТӀубазабизе", "categories": "Категориял", "watchlist": "Халгьабиялъул сияхІ", "mywatchlist": "Халгьабиялъул сияхІ", "watch": "Хал кквезе", "namespace": "ЦӀаразул сияхӀ:", + "invert": "ТІасабищараб сверизабизе", "blanknamespace": "(Аслияб)", "contributions": "{{GENDER:$1|ГӀахьалчиясул}} хӀалтӀи", "mycontris": "Дур хӀалтӀи", + "sp-contributions-newbies": "ГІицІго, цІиял гІахьалчагІаз гьабураб хІалтІи бихьизабизе", + "sp-contributions-talk": "гьоркьоб лъей", "sp-contributions-userrights": "ГІахьалчиясул ихтиярал", - "whatlinkshere": "Гьанире линкал", + "sp-contributions-search": "ХІалтІи хъирщизе", + "sp-contributions-hideminor": "ГІиси-бикъинал хиса-басиял рахчизе", + "whatlinkshere": "Гьанире регІелал", "whatlinkshere-title": "«$1» гьумералда бухьен гьабулел гьумерал", "whatlinkshere-page": "Гьумер:", + "nolinkshere": "'''[[:$1]]''' гьумералде цоги гьумераздасан регІелал гьечІо.", "isredirect": "редирект-гьумер", "isimage": "файлалъул регІел", "whatlinkshere-prev": "{{PLURAL:$1|1=цебесеб|цересел}} $1", "whatlinkshere-next": "{{PLURAL:$1|1=хадусеб|хадусел}} $1", - "whatlinkshere-links": "← линкал", + "whatlinkshere-links": "← регІелал", "whatlinkshere-hideredirs": "$1 редиректал", "whatlinkshere-hidelinks": "$1 линкал", "whatlinkshere-filters": "Фильтрал", + "whatlinkshere-submit": "ТӀубазабизе", "blockip": "ГІахьалчи блокалда лъезе", "ipbsubmit": "Гьав гІахьалчи/адрес блокалда лъезе", "ipb-confirmhideuser": "Нужеда ракІалда буго гІахьалчи блокалда лъезе ва гьесул цмар бахчизе. Гьеб загьирлъуларо сияхІазда ва журналазда. Гьеб гьабизе бокьун бугищ нужее?", "blocklink": "Блокалда лъезе", "contribslink": "хӀалтӀи", "move-page-legend": "Гьумералъул цӀар хисизе", + "newtitle": "ЦІияб цІар:", + "move-watch": "Басрияб ва цІияб цІаразул гьумерал дурго халкквеязул сияхІалде журазе", "movepagebtn": "Гьумералъул цӀар хисизе", - "movelogpage": "ЦӀарал хисиялъул журнал", + "movetalk": "Гьелдаго данде кколеб гьоркьоб лъеялъул гьумералъулги цІар хисизе", + "move-subpages": "($1 щвезегІан) гъоркьгьумеразул цІарал хисизе", + "movelogpage": "ЦІарал хисиялъул журнал", + "movesubpagetext": "Гьаб гьумералъул $1 {{PLURAL:$1|гъоркьгьумер|гъоркьгьумер|гъоркьгьумер}} буго.", + "move-leave-redirect": "Цоги рахъалдехун сверизабунин абураб ишара лъезе", "thumbnail-more": "КӀодолъизабизе", "tooltip-pt-userpage": "Дур гӀахьалчиясул гьумер", "tooltip-pt-mytalk": "Дур бахӀсалъул гьумер", @@ -525,6 +553,7 @@ "exif-orientation-1": "Нормалияб", "namespacesall": "киналго", "monthsall": "киналго", + "table_pager_limit_submit": "ТӀубазабизе", "hijri-calendar-m1": "МухІаррам", "hijri-calendar-m3": "РабигІул-Аввал", "hijri-calendar-m4": "РабигІу Ссани", diff --git a/languages/i18n/awa.json b/languages/i18n/awa.json index 96529aca3e..9e40aca71f 100644 --- a/languages/i18n/awa.json +++ b/languages/i18n/awa.json @@ -499,8 +499,6 @@ "passwordreset-emaildisabled": "इ विकि पे ई-मेल सुविधा अक्षम कई दीहा है।", "passwordreset-username": "सदस्यनाँव:", "passwordreset-domain": "डोमेन:", - "passwordreset-capture": "परिणामस्वरूप बनावल ई-मेल देखा जाय?", - "passwordreset-capture-help": "अगर आप इ चेकबॉक्स कय टिक करा जाइ तव ई-मेल (अस्थायी गुप्तकुंजी कय साथे) आप कय देखाई अव सदस्य कय भी भेजी जाइ।", "passwordreset-email": "ई-मेल ठाँव:", "passwordreset-emailtitle": "{{SITENAME}} पे खाता कय विवरण", "passwordreset-emailtext-ip": "केहु (शायद आप कय, $1 आइ॰पी ठहर से) {{SITENAME}} ($4) पे अपने {{PLURAL:$3|गुप्त कुंजी}} कय रीसेट करेक अनुरोध करे है। इ ई-मेल ठहर से निचे कय{{PLURAL:$3|खाता जोड़ान् है}}:\n\n$2\n\n{{PLURAL:$3|इ}} अस्थायी गुप्त कुंजी {{PLURAL:$5|दिन}} कय बाद काम नाइ करि। आप लॉग इन कई कय एकठु नँवा गुप्त कुंजी अभीनै चुन लुहा जाए। यदि इ अनुरोध केहु अउर करे है, या फिर आप कय आपन गुप्त कुंजी याद आइ गा है, औ आप {{PLURAL:$3|आपन}} गुप्त कुंजी नाइ बदलेक चाहा जात है तव आप इ संदेश कय अनदेखा कई कय आपन पुरान गुप्तकुंजी कय प्रयोग कै सका जात है।", @@ -889,8 +887,6 @@ "saveprefs": "सहेजा जाय", "restoreprefs": "पहिलकय सेटिङ मिलावा जाय (कुल जगही में)", "prefs-editing": "संपादन", - "rows": "कताँर:", - "columns": "कॉलम:", "searchresultshead": "खोजा जाय", "stub-threshold": "<a href=\"#\" class=\"stub\">आधार कड़िन्</a> कय सबसे बडा आकार (बाइट):", "stub-threshold-disabled": "अक्षम करा है", @@ -980,12 +976,9 @@ "userrights-reason": "कारण:", "userrights-no-interwiki": "आप कय अउर विकिन् पे सदस्य अधिकार बदले कय अनुमति नाइ है।", "userrights-nodatabase": "डाटाबेस $1 या तो मौजूद नाइ है या फिर स्थानीय नाइ है।", - "userrights-nologin": "सदस्य अधिकार बदलेक खत्तिर प्रबंधक खाता से [[Special:UserLogin|लॉग इन]] करेक परि।", - "userrights-notallowed": "आप कय लगे सदस्य अधिकार जोडेक या हटावेक अनुमति नाइ है।", "userrights-changeable-col": "गोल (ग्रुप) जवन आप बदलि सका जात है ।", "userrights-unchangeable-col": "गोल (ग्रुप) जवन आप नाइ बदलि सका जात है ।", "userrights-conflict": "सदस्य अधिकार बदलाव में अंतर्विरोध! कृपया आपन बदलाव जाँचा जाय और फिरसे सुनिश्चित करा जाय।", - "userrights-removed-self": "आप सफलतापूर्वक आपन अधिकार हटाए दिहा गए। इहिक नाते अब आप इ पन्ना नाइ देख सका जात है।", "group": "गोल:", "group-user": "सदस्य:", "group-autoconfirmed": "अपने आप बनल सदस्य", @@ -1075,7 +1068,6 @@ "right-siteadmin": "डाटाबेस कय ताला लगावा जाय या खोला जाय", "right-override-export-depth": "पन्ना निर्यात करा जाय, पाँच स्तर कय गहराई तक जुड़ल पन्ना लइकय", "right-sendemail": "अउर सदस्यन् कय ई-मेल पठवा जाय", - "right-passwordreset": "गुप्तकुंजी रीसेट ई-मेल देखा जाय", "right-managechangetags": "डेटाबेस से [[Special:Tags|चिप्पियाँ]] बनायें और हटायें", "newuserlogpage": "सदस्य खाता बनावे कय लॉग", "newuserlogpagetext": "ई सदस्य खाता बनावे कय लॉग होय।", @@ -1249,7 +1241,7 @@ "uploaddisabledtext": "फ़ाइल अपलोड अक्षम हैं।", "php-uploaddisabledtext": "पी॰एच॰पी में फ़ाइल अपलोड बंद है।\nकृपया file_uploads जमाव कय जाँच करा जाय।", "uploadscripted": "इ फ़ाइल में एच॰टी॰एम॰एल या स्क्रिप्ट कोड है, जवन वेब ब्राउज़र गलत पढि सकत है।", - "uploadscriptednamespace": "इ एस॰वी॰जी फ़ाइल में अमान्य नामजगह \"$1\" है।", + "uploadscriptednamespace": "इ एस॰वी॰जी फ़ाइल में अमान्य नामजगह \"<nowiki>$1</nowiki>\" है।", "uploadinvalidxml": "अपलोड करल फ़ाइल कय XML पार्स नाइ होई।", "uploadvirus": "इ फ़ाइल में भाईरस हैं!ढेर जानकारी: $1", "uploadjava": "ई फ़ाइल एकठु ज़िप फ़ाइल होय जवने मे एकठु जावा .class फ़ाइल है।\nजावा फ़ाइलन् कय अपलोड नाई कै सका जात है, काहेसे एकरे कारण सुरक्षा बाधा पार होइ जाई।", @@ -2996,44 +2988,12 @@ "feedback-useragent": "प्रयोगकर्ता एजेन्ट:", "searchsuggest-search": "खोज", "searchsuggest-containing": "...से युक्त", - "api-error-badaccess-groups": "इ विकि मा आप कय फाइल अपलोड करेक अनुमति नाइ है", "api-error-badtoken": "आंतरिक त्रुटि: खराब टोकन।", - "api-error-copyuploaddisabled": "URL द्वारा इस सर्वर पर अपलोड अक्षम है।", - "api-error-duplicate": "वहाँ {{PLURAL:$1| अन्य फ़ाइल | रहे हैं कुछ अन्य फ़ाइलों}} एक ही सामग्री के साथ साइट पर पहले से ही है.", - "api-error-duplicate-archive": "वहाँ {{PLURAL:$1|था कुछ अन्य फ़ाइल|कुछ अन्य फ़ाइलें}}, पहले से ही {{PLURAL:$1|यह was|they थे}} परन्तु हटा दिये गये", - "api-error-empty-file": "आप कय दीहल फ़ाइल खाली रहा।", "api-error-emptypage": "नँवा अव खाली पन्ना बनावै कय अनुमति नाइ है", - "api-error-fetchfileerror": "आंतरिक त्रुटि: जब फ़ाइल लाया जा रहा तो कुछ गलत हो गया था।", - "api-error-fileexists-forbidden": "\"$1\" नाँव कय फाइल मौजुद है,एकरे उप्पर नाइ लिखि सका जात है", - "api-error-fileexists-shared-forbidden": "\"$1\" नाँव कय फाइल साझा फाइल भण्डार मा पहिलवे से मौजुद है अव एकरे उप्पर नाइ लिखि सका जात है ।", - "api-error-file-too-large": "आप कय दीहल फ़ाइल बहुत बडा रहा।", - "api-error-filename-tooshort": "फ़ाइल कय नाँव बहुत छोट है।", - "api-error-filetype-banned": "अइसन फ़ाइल प्रतिबन्धित है।", - "api-error-filetype-banned-type": "$1 फ़ाइल {{PLURAL:$4|प्रकार|प्रकारों}} की अनुमति नहीं है। फ़ाइल प्रकार {{PLURAL:$3|जिसकी|जिनकी}} अनुमति है: $2।", - "api-error-filetype-missing": "फाईल कय एक्सटेंशन लापता है ।", - "api-error-hookaborted": "आपके द्वारा प्रयासरत संशोधन किसी एक्स्टेंशन द्वारा निरस्त किया गया।", - "api-error-http": "आंतरिक त्रुटि: सर्वर से कनेक्ट करय में असमर्थ।", - "api-error-illegal-filename": "अइसन फ़ाइल कय इजाजत नाइ है।", - "api-error-internal-error": "आंतरिक त्रुटि: विकि पर अपने अपलोड प्रसंस्करण के साथ कुछ गलत हो गया था.", - "api-error-invalid-file-key": "आंतरिक त्रुटि: फ़ाइल अस्थायी भंडारण में नहीं पाया गया.", - "api-error-missingparam": "आंतरिक त्रुटि: अनुरोध पे पैरामीटर लापता", - "api-error-missingresult": "आन्तरिक त्रुटि: इ प्रतिलिपि सफल निर्धारित नाइ होइ सका", - "api-error-mustbeloggedin": "फाइल अपलोड करेक आप कय लाग इन करेक परि", - "api-error-mustbeposted": "आंतरिक त्रुटि: HTTP POST अनुरोध कय आवश्यकता है.", - "api-error-noimageinfo": "अपलोड सफल, लेकिन सर्वर ने फ़ाइल के बारे में हमें कोई जानकारी नहीं दी.", - "api-error-nomodule": "आंतरिक त्रुटि: कवनो अपलोड मॉड्यूल सेट नाइ है", - "api-error-ok-but-empty": "आंतरिक त्रुटि: सर्वर से कवनो जवाब नाइ है।", - "api-error-overwrite": "मौजुदा फाइल कय उप्पर नाइ लिखि सका जात अहै ।", - "api-error-stashfailed": "आन्तरिक त्रुटि: अस्थाई फाइल राखय मा सर्वर असफल रहा।", "api-error-publishfailed": "आन्तरिक त्रुटि: अस्थाई फाइल राखय मा सर्वर असफल रहा।", - "api-error-timeout": "सर्वर ने अपेक्षित समय के भीतर जवाब नहीं दिया", - "api-error-unclassified": "अज्ञात त्रुटि आइ गवा।", - "api-error-unknown-code": "अज्ञात त्रुटि: \"$1\"", - "api-error-unknown-error": "आंतरिक त्रुटि: आप कय फ़ाइल अपलोड प्रयास करत समय कुछ गलत होइ गवा रहा।", + "api-error-stashfailed": "आन्तरिक त्रुटि: अस्थाई फाइल राखय मा सर्वर असफल रहा।", "api-error-unknown-warning": "अज्ञात चेतावनी: $1", "api-error-unknownerror": "अज्ञात त्रुटि: \"$1\"", - "api-error-uploaddisabled": "इ विकि मा अपलोड अक्षम है.", - "api-error-verification-error": "इ फाइल दुषित होइ सकत है या गलत एक्टेन्शन अहै ।", "duration-seconds": "$1 {{PLURAL:$1|सॅकेंड}}", "duration-minutes": "$1 {{PLURAL:$1|मिनट}}", "duration-hours": "$1 {{PLURAL:$1|घंटा|घंटा}}", diff --git a/languages/i18n/az.json b/languages/i18n/az.json index b48c450e76..5135552da0 100644 --- a/languages/i18n/az.json +++ b/languages/i18n/az.json @@ -28,7 +28,8 @@ "Sayginer", "Şeyx Şamil", "Serkanland", - "Macofe" + "Macofe", + "Archaeodontosaurus" ] }, "tog-underline": "Keçidlərin altını xətlə:", @@ -402,19 +403,12 @@ "externaldberror": "Verilənlər bazasının doğruluğunu yoxlamada xəta baş verib və yaxud sizin xarici istifadəçi qeydiyyatını yeniləmək hüququnuz yoxdur.", "login": "Daxil ol", "nav-login-createaccount": "Daxil ol / hesab yarat", - "userlogin": "Daxil ol və ya qeydiyyatdan keç", - "userloginnocreate": "Daxil ol", "logout": "Çıxış", "userlogout": "Çıxış", "notloggedin": "Daxil olmamısınız", "userlogin-noaccount": "Ä°stifadəçi hesabınız yoxdur?", "userlogin-joinproject": "{{SITENAME}} layihəsinə qoşulun", - "nologin": "Ä°stifadəçi hesabınız yoxdur? $1.", - "nologinlink": "Hesab yarat", "createaccount": "Hesab yarat", - "gotaccount": "Ä°stifadəçi hesabınız varmı? '''$1'''.", - "gotaccountlink": "Daxil olun", - "userlogin-resetlink": "Daxilolma məlumatlarınızı unutmusunuz?", "userlogin-resetpassword-link": "Parolunuzu unutmusunuz?", "userlogin-helplink2": "Qeydiyyat barədə köməklik", "userlogin-loggedin": "Siz artıq {{GENDER:$1|$1}} kimi daxil olmusunuz.\nAşağıdakı formadan istifadə edərək, başqa bir istifadəçi kimi daxil ola bilərsiniz.", @@ -425,7 +419,6 @@ "createacct-another-email-ph": "E-poçt ünvanını daxil edin", "createaccountmail": "Müvəqqəti təsadüfi bir paroldan istifadə edə bilər və bu parolu göstərilən e-poçt ünvanına göndərə bilərsiniz", "createacct-realname": "Əsl adınız (məcburi deyil)", - "createaccountreason": "Səbəb:", "createacct-reason": "Səbəb", "createacct-reason-ph": "Niyə başqa bir hesab yaradırsınız", "createacct-submit": "Ä°stifadəçi hesabı yarat", @@ -543,7 +536,7 @@ "subject": "Mövzu:", "minoredit": "Kiçik redaktə", "watchthis": "Bu səhifəni izlə", - "savearticle": "Səhifəni qeyd et", + "savearticle": "Səhifəni dərc et", "publishpage": "Səhifəni yayımla", "publishchanges": "Dəyişiklikləri yayımla", "preview": "Sınaq görüntüsü", @@ -804,8 +797,6 @@ "saveprefs": "Qeyd et", "restoreprefs": "Bütün nizamlamaları bərpa et (bütün bölmələrdə)", "prefs-editing": "Redaktə", - "rows": "Sıralar:", - "columns": "Sütunlar:", "searchresultshead": "Axtar", "stub-threshold": "Qaralama məqalələrə keçidlərin tərtibatını təyinetmə diapazonu ($1):", "stub-threshold-sample-link": "nümunə", @@ -1557,6 +1548,7 @@ "contributions": "{{GENDER:$1|Ä°stifadəçinin}} fəaliyyəti", "contributions-title": "$1 istifadəçi fəaliyyətləri", "mycontris": "Fəaliyyətim", + "anoncontribs": "Fəaliyyətim", "contribsub2": "{{GENDER:$3|$1}} ($2) adlı istifadəçinin fəaliyyəti", "nocontribs": "Bu kriteriyaya uyğun redaktələr tapılmadı", "uctop": "(hal-hazırkı)", @@ -2425,7 +2417,6 @@ "logentry-newusers-autocreate": "$1 istifadəçi hesabı avtomatik yaradıldı", "logentry-upload-upload": "$1 $3 faylını {{GENDER:$2|yüklədi}}.", "rightsnone": "(yoxdur)", - "revdelete-summary": "redaktə xülasəsi", "feedback-bugnew": "Mən yoxladım. Yeni xəta barədə xəbər ver", "feedback-cancel": "Ä°mtina", "feedback-close": "Oldu", @@ -2434,13 +2425,8 @@ "feedback-subject": "Mövzu:", "feedback-thanks-title": "Təşəkkür!", "searchsuggest-search": "Axtar", - "api-error-filename-tooshort": "Fayl adı qısadır.", - "api-error-filetype-banned": "Bu tip fayllar qadağandır.", - "api-error-illegal-filename": "Fayl adına icazə yoxdur.", - "api-error-unknown-code": "Naməlum xəta: \"$1\".", "api-error-unknown-warning": "Naməlum xəbərdarlıq: \"$1\".", "api-error-unknownerror": "Naməlum xəta: \"$1\".", - "api-error-uploaddisabled": "Bu vikidə fayl yükləmə mümkün deyil.", "duration-seconds": "$1 {{PLURAL:$1|saniyə|saniyə}}", "duration-minutes": "$1 {{PLURAL:$1|dəqiqə|dəqiqə}}", "duration-hours": "$1 {{PLURAL:$1|saat|saat}}", diff --git a/languages/i18n/azb.json b/languages/i18n/azb.json index d06e28e7a9..fa43219c3b 100644 --- a/languages/i18n/azb.json +++ b/languages/i18n/azb.json @@ -934,8 +934,6 @@ "saveprefs": "ذخیره ائت", "restoreprefs": "بوتون ایلک ترجیح‌لری قایتار", "prefs-editing": "دَییشدیرمک‌ده", - "rows": "سطرلر:", - "columns": "سوتون‌لار", "searchresultshead": "آختار", "stub-threshold": "<a href=\"#\" class=\"stub\">باغلانتی‌سیز لینکی</a> دییشدیرمک اوچون حدود (بایت‌لارلا):", "stub-threshold-sample-link": "میثال", @@ -1292,7 +1290,7 @@ "uploaddisabledtext": "فايل يوکلنمه‌سی باش توتمادی.", "php-uploaddisabledtext": "پی اچ پی فایل یوکلملری دؤوره خاریجی‌دیر. خاهیش ائدیریک file_uploads تنظیم لرین یئنی دن بیر باخین.", "uploadscripted": "بو فایل بیر اینتئرنئت آختاریش برنامه سی طرفین‌دن سهو چئوریلبیلجک بیر HTML و یا ایسکریپت کودو عبارت‌دیر.", - "uploadscriptednamespace": "بۇ SVG فایلیندا بیر یاساق آدفضاسی ($1) واردیر.", + "uploadscriptednamespace": "بۇ SVG فایلیندا بیر یاساق آدفضاسی (<nowiki>$1</nowiki>) واردیر.", "uploadinvalidxml": "یۆکله‌نیلن فایل‌دا XML تحلیل اولونانمادی.", "uploadvirus": "فايلدا ویروس وار! \nدئتاللار: $1", "uploadjava": "فایل، بیر جاوا. نوع ‎‎class ائهتیوا ائدن بیر زیپ فایلی‌دیر.\nجاوا فایل‌لارینین یوکلنمه‌سینه ایجازه وئریلمیر، چونکی تهلوکه‌سیزلیک محدودلاشدیرما‌لارینین آتلانماسینا سبب اولا بیلمکده‌دیرلر.", @@ -1587,7 +1585,7 @@ "protectedpages-reason": "نَدَن‌لیگی", "protectedpages-unknown-timestamp": "بیلینمه‌ین", "protectedpages-unknown-performer": "بیلینمه‌ین ایستیفاده‌چی", - "protectedtitles": "محافظه‌لی باش‌لیق‌لار", + "protectedtitles": "قوْرونان باشلیقلار", "protectedtitles-summary": "بۇ صحیفه، ایندیکی یارانماق‌دان قوْرونان باشلیقلاری لیست ائدیر. ایندیکی قوْرونان موْجود اوْلان صحیفه‌لرین لیستینی گؤرمک اۆچون، [[{{#special:ProtectedPages}}|{{int:protectedpages}}]]-ه باخین.", "protectedtitlesempty": "حال-حاضردا، بو پارامئترلری قورونان هئچ بیر موضوع یوخ‌دور.", "listusers": "ایشلدن لیستی", @@ -3078,44 +3076,12 @@ "feedback-thanks-title": "تشکورلر!", "searchsuggest-search": "{{SITENAME}}-دا آختار", "searchsuggest-containing": "ساخلانیلیر...", - "api-error-badaccess-groups": "سیزین بو ویکی‌یه فایل یوکله‌مک ایجازه‌نیز یوخدور.", "api-error-badtoken": "ایچری خطاسی: پیس کود.", - "api-error-copyuploaddisabled": "بو خیدمتچی‌ده، اینترنت آدرسی‌له فایل یوکله‌مک یاساقلانیب‌دیر.", - "api-error-duplicate": "بو یاست‌دا، همن بیلگیلرله، باشقا {{PLURAL:$1|فایل|فایل‌لار}} واردیر.", - "api-error-duplicate-archive": "بو یاست‌دا، همن بیلگیلرله، باشقا {{PLURAL:$1|فایل|فایل‌لار}} وار ایدی، اما {{PLURAL:$1|سیلینیب‌دیر|سیلینیبلر}}.", - "api-error-empty-file": "سیز یول‌لادیغینیز فایل، بوش ایدی.", "api-error-emptypage": "یئنی بوش صحیفه یارادماغا ایجازه یوخدور.", - "api-error-fetchfileerror": "ایچری خطا: فایلی گتیرمک‌ده بیر ایشکال قاباغا گلدی.", - "api-error-fileexists-forbidden": "«$1» آدلا بیر فایل واردیر و اوستونه یازماق اولماز.", - "api-error-fileexists-shared-forbidden": "پایلاشمیش آنباردا «$1» آدلا بیر فایل واردیر و اوستونه یازماق اولماز.", - "api-error-file-too-large": "سیز یول‌لادیغینیز فایل، چوخ یئکه ایدی.", - "api-error-filename-tooshort": "فایل آدی چوخ قیسادی.", - "api-error-filetype-banned": "بوجور فایل یاساق‌لانیب‌دیر.", - "api-error-filetype-banned-type": "$1 فایل {{PLURAL:$4|نؤوعو ایجازه‌لی دئییل|نؤوعلری ایجازه‌لی دئییل‌لر}}. ایجازه‌لی فایل {{PLURAL:$3|نؤوعو بئله‌دیر|نؤوعلاری بئله‌دیرلر}}: $2.", - "api-error-filetype-missing": "فایل آدینین اوزانتیسی یوخدور.", - "api-error-hookaborted": "سیز وئردیگینیز دَییشیکلیکلرین قاباغی، بیر extension ایله قاباغی آلیندی.", - "api-error-http": "ایچری خطا: خیدمتچی‌یه باغلانماق اولونمادیر.", - "api-error-illegal-filename": "بو فایل آدینا ایجازه یوخدور.", - "api-error-internal-error": "ایچری خطا: سیزین فایلینیزی بو ویکی‌یه یوکله‌مک‌ده بیر ایشکال قاباغا گلدی.", - "api-error-invalid-file-key": "ایچری خطا: فایل، گئچرلی آنباردا تاپیلانمادی.", - "api-error-missingparam": "ایچری خطا: ایستک‌ده بعضی پارامترلر وئریلمه‌ییبلر.", - "api-error-missingresult": "ایچری خطا: کوپی‌نین باشاریلی اولدوغو بیلینمیر.", - "api-error-mustbeloggedin": "فایل یوکله‌مک اوچون، گیریش ائتمه‌لیسینیز.", - "api-error-mustbeposted": "ایچری خطا: بو ایستک اوچون HTTP POST لازیم‌دیر.", - "api-error-noimageinfo": "یوکله‌مک باشاریلی اولدور، اما خیدمت‌چی فایلا گؤره هئچ بیر بیلگیلر وئرمه‌دی.", - "api-error-nomodule": "ایچری خطا: هئچ بیر آپلود ماژولی یوخدور.", - "api-error-ok-but-empty": "ایچری خطا: خیدمتچی‌دن جاواب گلمه‌دی.", - "api-error-overwrite": "بیر اولان فایلین اوستونه یازماغا ایجازه یوخدور.", - "api-error-stashfailed": "ایچری خطا: خیدمتچی، گئچیجی فایلی ساخلایانمادی.", "api-error-publishfailed": "ایچری خطاسی: خیدمت‌چی، گئچیجی فایلی یایانمادی.", - "api-error-timeout": "خیدمتچی، گؤزله‌نیلن واخت‌دا جاواب وئرمه‌دی.", - "api-error-unclassified": "بیر تانینمامیش خطا قاباغا گلدی.", - "api-error-unknown-code": "تانینمامیش خطا: «$1».", - "api-error-unknown-error": "ایچری خطا: سیزین فایلینیزی یوکله‌مگه چالیشاندا بیر ایشکال قاباغا گلدی.", + "api-error-stashfailed": "ایچری خطا: خیدمتچی، گئچیجی فایلی ساخلایانمادی.", "api-error-unknown-warning": "تانینمامیش ایخطار: «$1».", "api-error-unknownerror": "تانینمامیش خطا: «$1».", - "api-error-uploaddisabled": "بو ویکی‌ده یوکله‌مک باغلانیب‌دیر.", - "api-error-verification-error": "فایل خاراب‌دیر یوخسا یانلیش اوزانتی‌سی واردیر.", "duration-seconds": "{{PLURAL:$1|بیر|$1}} ثانیه", "duration-minutes": "{{PLURAL:$1|بیر|$1}} دقیقه", "duration-hours": "{{PLURAL:$1|بیر|$1}} ساعات", diff --git a/languages/i18n/ba.json b/languages/i18n/ba.json index e0ef977b40..547078397d 100644 --- a/languages/i18n/ba.json +++ b/languages/i18n/ba.json @@ -166,7 +166,7 @@ "about": "Тасуирлау", "article": "Мәҡәлә", "newwindow": "(яңы биттә)", - "cancel": "Бөтөрөргә", + "cancel": "Кире алырға", "moredotdotdot": "Дауамы...", "morenotlisted": "Был исемлек тулы түгел", "mypage": "Бит", @@ -228,7 +228,7 @@ "views": "Ҡарауҙар", "toolbox": "Ҡоралдар", "tool-link-userrights": "{{GENDER:$1|Ҡатнашыусы}} төркөмдәрен үҙгәртергә", - "tool-link-userrights-readonly": "{{GENDER:$1|ҡатнашыусылар}} төркөмөн ҡарарға", + "tool-link-userrights-readonly": "{{GENDER:$1|Ҡатнашыусы|Ҡатнашыулар}} төркөмдәрен ҡарарға", "tool-link-emailuser": "{{GENDER:$1|Ҡатнашыусыға}} хат яҙырға", "userpage": "Ҡулланыусы битен ҡарарға", "projectpage": "Проект битен ҡарарға", @@ -374,7 +374,7 @@ "title-invalid-too-long": "Һоралған бит исеме бик оҙон. $1 {{PLURAL:$1|байттан}} артмаҫҡа тейеш.", "title-invalid-leading-colon": "Һораған бит башында ярамаған ике нөктә бар.", "perfcached": "Был мәғлүмәттәр кэштан алынған, уларҙа һуңғы үҙгәртеүҙәр булмаҫҡа мөмкин. Кэшта иң күбе {{PLURAL:$1|язма}} һаҡлана.", - "perfcachedts": "Был мәғлүмәттәр кэштан алынған, ул һуңғы тапҡыр $1 яңыртылды. Кэшта иң күбе {{PLURAL:$4|язма}} һаҡлана", + "perfcachedts": "Был мәғлүмәттәр кэштан алынған, ул һуңғы тапҡыр $1 яңыртылды. Кэшта иң күбе $4 {{PLURAL:$4|яҙма}} һаҡлана.", "querypage-no-updates": "Был битте яңыртыу хәҙер тыйылған.\nБында күрһәтелгән мәғлүмәттәр яңыртылмаясаҡ.", "viewsource": "Сығанаҡты ҡарау", "viewsource-title": "$1 битенең сығанаҡ текстын ҡарарға", @@ -541,7 +541,7 @@ "resetpass_submit": "Серһүҙ ҡуйырға һәм танышырға", "changepassword-success": "Серһүҙегеҙ уңышлы үҙгәртелде!", "changepassword-throttled": "Һеҙ системаға ҡат-ҡат танылырға тырыштығыҙ.\nТағы бер танылырҙан алда, зинһар, $1 көтөгөҙ.", - "botpasswords": "Роботтар серһүҙе.", + "botpasswords": "Роботтар серһүҙе", "botpasswords-summary": "<em>ПРобот пароле</em> API иҫәп яҙмаһына логин һәм паролһыҙ инергә мөмкинлек бирә. Робот пароле менән ингәндә ҡулланыусы хоҡуғы сикләнгән булыуы мөмкин.\n\nНи өсөн икәнен белмәһәгеҙ, быны эшләмәүегеҙ яҡшыраҡ.", "botpasswords-disabled": "Роботтар серһүҙе һүндерелгән.", "botpasswords-no-central-id": "Робот серһүҙен ҡулланыу өсөн үҙәк иҫәп яҙмаһына инергә кәрәк.", @@ -575,7 +575,7 @@ "resetpass_forbidden-reason": "Серһүҙҙәр үҙгәртелә алмай: $1", "resetpass-no-info": "Был битте туранан ҡарау өсөн һеҙгә системала танылырға кәрәк.", "resetpass-submit-loggedin": "Серһүҙҙе үҙгәртергә", - "resetpass-submit-cancel": "Бөтөрөргә", + "resetpass-submit-cancel": "Кире алырға", "resetpass-wrong-oldpass": "Хаталы ваҡытлыса йәки ағымдағы серһүҙ.\nҺеҙ, бәлки, серһүҙегеҙҙе алмаштырғанһығыҙ йәки яңы серһүҙ һоратҡанһығыҙ.", "resetpass-recycled": "Үҙегеҙҙекенән айырмалы серһүҙ һайлағыҙ.", "resetpass-temp-emailed": "Һеҙ электорон почта аша ебәрелгән ваҡытлыса серһүҙ менән индегеҙ. Инеүҙе башҡарыу өсөн яңы серһүҙ яҙығыҙ.", @@ -1418,7 +1418,7 @@ "uploaded-setting-handler-svg": "SVG«handler» атрибутын өҫтәүсе SVG блокланды.Тейәлгән SVG-файлда <code>$1=\"$2\"</code> конструкцияһы табылды.", "uploaded-remote-url-svg": "SVG«handler» атрибутын өҫтәүсе SVG блокланды.Тейәлгән SVG-файлда <code>$1=\"$2\"</code> конструкцияһы табылды.", "uploaded-image-filter-svg": "Тейәлгән SVG-файлда рәсемдәр фильтры табылды URL-адресом <code><$1 $2=\"$3\"></code>.", - "uploadscriptednamespace": " SVG-файлында ярамаған исем бар '$1'", + "uploadscriptednamespace": " SVG-файлында ярамаған исем бар '<nowiki>$1</nowiki>'", "uploadinvalidxml": "Тейәлгән файлда анализлап булмай XML .", "uploadvirus": "Файлда вирус бар!\nТулыраҡ мәғлүмәт: $1", "uploadjava": "Был, эсендә Java .class файлы булған ZIP-архив.\nИменлек өсөн Java-файлдарын тейәү тыйылған.", @@ -3403,53 +3403,12 @@ "feedback-useragent": "Браузер:", "searchsuggest-search": "{{SITENAME}} эсендә эҙләү", "searchsuggest-containing": "эстәлегендә...", - "api-error-badaccess-groups": "Һеҙгә был викиға файлдар күсереү рөхсәт ителмәй", "api-error-badtoken": "Эске хата: дөрөҫ булмаған токен", - "api-error-blocked": "Мөхәррирләү һеҙҙең өсөн бикләнде.", - "api-error-copyuploaddisabled": "Был серверҙа URL адрес буйынса йөкләү өҙөлгән", - "api-error-duplicate": "Бындай эстәлекле {{PLURAL:$1|файл}} бар.", - "api-error-duplicate-archive": "Сайтта бындай эстәлекле {{PLURAL:$1|башҡа файл}} бар ине инде, ләкин {{PLURAL:$1|1=ул юйылды|улар юйылды}}", - "api-error-empty-file": "Һеҙ ебәргән файл буш.", "api-error-emptypage": "Яңы буш биттәр яһау тыйыла.", - "api-error-fetchfileerror": "Эске хата: файлды күсергән ваҡытта хата китте", - "api-error-fileexists-forbidden": "«$1» исемле файл бар һәм өҫтөнә яҙып булмай.", - "api-error-fileexists-shared-forbidden": "«$1» исемле файл уртаҡ файлдар һаҡлағысында бар һәм өҫтөнә яҙып булмай.", - "api-error-file-too-large": "Һеҙ ебәргән файл үтә ҙур.", - "api-error-filename-tooshort": "Файл исеме бик ҡыҫҡа.", - "api-error-filetype-banned": "Был файл төрө тыйылған.", - "api-error-filetype-banned-type": "$1 {{PLURAL:$4|1=тыйылған файл төрө|тыйылған файл төрҙәре}}. Рөхсәт ителгән {{PLURAL:$3|1=файл төрө|файл төрҙәре}} $2.", - "api-error-filetype-missing": "Был файлдың ҡушымтаһы юҡ", - "api-error-hookaborted": "Һеҙ эшләргә теләгән үҙгәртеүҙәр ҡушымтаны тикшереүсе тарафынан өҙөлдө", - "api-error-http": "Эске хата: серверға бәйләнеп булмай.", - "api-error-illegal-filename": "Рөхсәт ителмәгән файл исеме.", - "api-error-internal-error": "Эске хата: һеҙ викиға йөкләгәнде тикшергән ваҡытта хата китте", - "api-error-invalid-file-key": "Эске хата: ваҡытлыса һаҡлағыста файл табылманы", - "api-error-missingparam": "Эске хата: мөрәжәғеттең параматрҙары юҡ.", - "api-error-missingresult": "Эске хата: күсереү уңышлы булыуын билдәләп булманы.", - "api-error-mustbeloggedin": "Файлдарҙы йөкмәтеү өсөн һеҙ сисемаға танышырға тейешһегеҙ.", - "api-error-mustbeposted": "Эске хата: мөрәжәғәт HTTP POST адресын талап итә.", - "api-error-noimageinfo": "Йөкләү уңышлы тамамланды, әммә сервер файл тураһында бер ниндәйҙә мәғлүмәт бирмәне.", - "api-error-nomodule": "Эске хата: тейәү модуле көйләнмәгән.", - "api-error-ok-but-empty": "Эске хата: серверҙан яуап юҡ.", - "api-error-overwrite": "Булған файлды алыштырыу рөхсәт ителмәй.", - "api-error-stashfailed": "Эске хата: сервер ваҡытлыса файлды һаҡлай алманы.", "api-error-publishfailed": "Эске хата: сервер ваҡытлыса файлды һаҡлай алманы.", - "api-error-stasherror": "Файлы һаҡлағысҡа тейәгән ваҡытта хата китте.", - "api-error-stashedfilenotfound": "Ваҡытлыса һаҡлағыстан файлы тейәгән ваҡытта сығанаҡ файл табылманы.", - "api-error-stashpathinvalid": "Ваҡытлыса һаҡлағыста урынлашҡан файл юлы дөрөҫ түгел.", - "api-error-stashfilestorage": "Файлды һаҡлағысҡа тейәгән ваҡытта хата китте.", - "api-error-stashzerolength": "Сервер файлды ваҡытлыса һаҡлағыста һаҡлау алмай, сөнкт оҙонлоғо 0.", - "api-error-stashnotloggedin": "Файлды ваҡытлыса һаҡлағысҡа урынлаштырыу өсөн һеҙ системаҡа инергә тейешһегеҙ.", - "api-error-stashwrongowner": "Ваҡытлыса һаҡлағыстағы файлда асырға теләнегеҙ, был файл һеҙҙеке түгел", - "api-error-stashnosuchfilekey": "Ваҡытлыса һаҡлағыста һеҙ асырға теләгән файлдың асҡысы юҡ.", - "api-error-timeout": "Көтөлгән ваҡыт эсендә сервер яуып бирмәне.", - "api-error-unclassified": "Билдәһеҙ хата барлыҡҡа килде.", - "api-error-unknown-code": "Билдәһеҙ хата: «$1»", - "api-error-unknown-error": "Эске хата: файлды йөкләгәндә ниндәйҙер хата китте.", + "api-error-stashfailed": "Эске хата: сервер ваҡытлыса файлды һаҡлай алманы.", "api-error-unknown-warning": "Билдәһеҙ белдереү: \"$1\".", "api-error-unknownerror": "Билдәһеҙ хата: «$1»", - "api-error-uploaddisabled": "Был викила файл тейәү мөмкинлеге ябылған.", - "api-error-verification-error": "Был файл боҙолған, йәки дөрөҫ булмаған ҡушымтаһы бар.", "duration-seconds": "$1 {{PLURAL:$1|1=секунд|секунд}}", "duration-minutes": "$1 {{PLURAL:$1|1=минут|минут}}", "duration-hours": "$1 {{PLURAL:$1|1=сәғәт|сәғәт}}", diff --git a/languages/i18n/bcc.json b/languages/i18n/bcc.json index 23b877ef63..0fec39a28a 100644 --- a/languages/i18n/bcc.json +++ b/languages/i18n/bcc.json @@ -499,8 +499,6 @@ "passwordreset-emaildisabled": "ایمیلء حالتان مان ائ ویکیء نافعال بیتگ انت.", "passwordreset-username": "کار زوروکی نام:", "passwordreset-domain": "دامین:", - "passwordreset-capture": "آسریگین ایمیل پیش دارگ بیت؟", - "passwordreset-capture-help": "اگان ائ گزینگ رء نشانیگ بهل ات، یک ایمیلء (گون موکتین پسوردء) شما رء پیش دارگ بیت ءُ هنچوش پر کاربرء راهیگ بیت انت.", "passwordreset-email": "ایمیل ادرس:", "passwordreset-emailtitle": "اکانتء جزئیات مان {{SITENAME}}", "passwordreset-emailtext-ip": "یک شهسء (بلکین شما، گون آی‌پیء نشانیگ $1) شمئی پسوردء واترء {{SITENAME}} ($4) لوٹتگ انت. {{PLURAL:$3|اکانت|اکانتان}} گون ائ ایمیل ادرسء همگرنچ انت:\n\n$2\n\n{{PLURAL:$3|ائ موکتین پسورد|ائ موکتین پسوردان}} رند چه {{PLURAL:$5|یک روچ|$5 روچ}} باطل بیت انت.\nشما پیکن انیگء لاگین کن ات ءُ نوکین پسوردء بزیر ات. اگان شمئی پگر انت که ادگر شهسء ائ لوٹء راهیگ کتگ یانکه وتی پیسریگین پسوردء هیال کت ات ءُ رندء نلوٹیت آئرا ٹگل دئیت، بیت که ائ پیگامء ناگند بزان ات ءُ وتی پیسریگین پسوردء کارمرز کن ات.", @@ -880,8 +878,6 @@ "saveprefs": "ذخیره", "restoreprefs": "پهکین پیش‌ پرزین تنظیمانء واتر بکن (مان پهکین بهران)", "prefs-editing": "اصلاح", - "rows": "ردیفآن«", - "columns": "ستون‌ان:", "searchresultshead": "گردگ", "stub-threshold": "سرحد په <a href=\"#\" class=\"stub\">چنڈ لینک</a> فرمت (بایت):", "stub-threshold-disabled": "نافعال", @@ -971,12 +967,9 @@ "userrights-reason": "دلیل:", "userrights-no-interwiki": "شما را اجازت نیست دان حقوق کاربر ته دگ ویکی آن اصلاح کنیت.", "userrights-nodatabase": "دیتابیس $1 موجود نهنت یا محلی نهنت.", - "userrights-nologin": "شما باید [[Special:UserLogin|وارد بیت]] گون حساب مدیریتی په مشخص کتن حقوق کاربر.", - "userrights-notallowed": "شما رء اجازت پر ادگر کاربرانی ایهتیاراتء هزپ یانکه ازاپ کتن نه انت.", "userrights-changeable-col": "گروهانی که شما تونیت عوض کنیت", "userrights-unchangeable-col": "گروهانی که شما نه نونیت عوض کنیت", "userrights-conflict": "تعارض مان کاربریگء دزرس! دزبندی انت بازگند ءُ رندء تغییراتء تایید بکن ات.", - "userrights-removed-self": "شما پر درستی وتی دزرسانء هزپ کت ات. پمیشکا شما رء انیگ پر ائ تاک دزرس نه انت.", "group": "گروه:", "group-user": "کابران", "group-autoconfirmed": "کابران تایید اتوماتیکی", @@ -1065,7 +1058,6 @@ "right-siteadmin": "کبل و پچ دیتابیس", "right-override-export-depth": "درگیزگ صفحات گون صفحاتی لینک بوتگین ته سطح Ûµ", "right-sendemail": "پر ادگران ایمیلء راهیگ بکن ات", - "right-passwordreset": "ایمیل پر پسوردء واترء بچار ات", "newuserlogpage": "ورود شرکتن کاربر", "newuserlogpagetext": ".شی یک ورودی چه شرکتن کاربر", "rightslog": "ورودان حقوق کاربر", @@ -1227,7 +1219,7 @@ "uploaddisabledtext": "آپلود فایل غیر فعال انت.", "php-uploaddisabledtext": "آپلود کتن فایل ته پی‌اچ‌پی فعال نهنت. تنظیم file_uploads کنترل کنیت.", "uploadscripted": "ای فایل شامل کد HTML یا اسکریپت انت که شاید گون وب بروزر اشتباهی وانگ بیت.", - "uploadscriptednamespace": "این پوشه اس‌وی‌جی شامل فضای نام غیرقانونی '$1' است", + "uploadscriptednamespace": "این پوشه اس‌وی‌جی شامل فضای نام غیرقانونی '<nowiki>$1</nowiki>' است", "uploadinvalidxml": "XML در پروندهٔ بارگذاری‌شده نمی‌تواند تجزیه شود.", "uploadvirus": "فایل یک ویروسی داریتن! جزییات: $1", "uploadjava": "این پرونده یک پرونده زیپ است که حاوی پرونده‌ای از نوع ‎‎.class جاوا است.\nبارگذاری پرونده‌های جاوا مجاز نیست، چرا که ممکن است اجازه دور زدن محدودیت‌های امنیتی را بدهند.", diff --git a/languages/i18n/be-tarask.json b/languages/i18n/be-tarask.json index e8d4688324..df8977b6da 100644 --- a/languages/i18n/be-tarask.json +++ b/languages/i18n/be-tarask.json @@ -184,6 +184,7 @@ "searcharticle": "Старонка", "history": "Гісторыя старонкі", "history_short": "Гісторыя", + "history_small": "гісторыя", "updatedmarker": "абноўлена з часу майго апошняга наведваньня", "printableversion": "Вэрсія для друку", "permalink": "Сталая спасылка", @@ -423,19 +424,12 @@ "login": "Увайсьці", "login-security": "Пацьвердзіце вашую асобу", "nav-login-createaccount": "Уваход / стварэньне рахунку", - "userlogin": "Увайсьці ў сыстэму / стварыць рахунак", - "userloginnocreate": "Увайсьці", "logout": "Выйсьці", "userlogout": "Выйсьці", "notloggedin": "Вы не ўвайшлі ў сыстэму", "userlogin-noaccount": "Ня маеце рахунку?", "userlogin-joinproject": "Далучайцеся да {{GRAMMAR:родны|{{SITENAME}}}}", - "nologin": "Ня маеце рахунку? $1.", - "nologinlink": "Стварыце рахунак", "createaccount": "Стварэньне рахунку", - "gotaccount": "Ужо маеце рахунак? $1.", - "gotaccountlink": "Увайдзіце", - "userlogin-resetlink": "Забыліся на зьвесткі для ўваходу?", "userlogin-resetpassword-link": "Забылі пароль?", "userlogin-helplink2": "Дапамога з уваходам у сыстэму", "userlogin-loggedin": "Вы ўжо ўвайшлі як {{GENDER:$1|$1}}.\nДля ўваходу пад іншым удзельнікам скарыстайцеся формай унізе.", @@ -448,7 +442,6 @@ "createaccountmail": "Стварыць часовы адвольны пароль і даслаць яго на пазначаны адрас электроннай пошты", "createaccountmail-help": "Можа выкарыстоўвацца для стварэньня рахунку для іншага чалавека бязь веданьня паролю.", "createacct-realname": "Сапраўднае імя (неабавязкова)", - "createaccountreason": "Прычына:", "createacct-reason": "Прычына", "createacct-reason-ph": "Зь якой мэтай вы ствараеце іншы рахунак", "createacct-reason-help": "Паведамленьне, якое паказваецца ў журнале стварэньня рахункаў", @@ -596,7 +589,7 @@ "changeemail-no-info": "Для непасрэднага доступу да гэтай старонкі Вам неабходна ўвайсьці ў сыстэму.", "changeemail-oldemail": "Цяперашні адрас электроннай пошты:", "changeemail-newemail": "Новы адрас электроннай пошты:", - "changeemail-newemail-help": "Поле трэба пакінуць пустым, калі вы хочаце выдаліць свой адрас электроннай пошты. Пасьля выдаленьня вы ня зможаце ануляваць забыты пароль і ня будзеце атрымліваць лісты электроннай пошты з гэтай вікі.", + "changeemail-newemail-help": "Калі вы хочаце выдаліць свой адрас электроннай пошты, пакіньце гэтае поле пустым. Пасьля выдаленьня вы ня зможаце ануляваць забыты пароль і ня будзеце атрымліваць лісты электроннай пошты з гэтай вікі.", "changeemail-none": "(няма)", "changeemail-password": "Ваш пароль у {{GRAMMAR:месны|{{SITENAME}}}}:", "changeemail-submit": "Зьмяніць адрас электроннай пошты", @@ -646,7 +639,7 @@ "selfredirect": "<strong>Папярэджаньне:</strong> вы перанакіроўваеце старонку саму на сябе.\nМагчыма, вы пазначылі няслушную старонку для перанакіраваньня або вы рэдагуеце ня тую старонку.\nКалі вы націсьніце «{{int:savearticle}}» яшчэ раз, перанакіраваньне будзе створанае.", "missingcommenttext": "Калі ласка, увядзіце камэнтар ніжэй.", "missingcommentheader": "<strong>Напамін:</strong> Вы не пазначылі загаловак камэнтара. Калі Вы націсьніце кнопку «{{int:savearticle}}» яшчэ раз, Вашая зьмена будзе захаваная без камэнтара.", - "summary-preview": "Папярэдні прагляд апісаньня:", + "summary-preview": "Папярэдні прагляд апісаньня зьменаў:", "subject-preview": "Папярэдні прагляд загалоўку:", "previewerrortext": "Адбылася памылка пры спробе папярэдняга прагляду вашых зьменаў.", "blockedtitle": "Удзельнік заблякаваны", @@ -769,16 +762,16 @@ "node-count-exceeded-warning": "Старонка перавысіла дазволеную колькасьць вузлоў", "expansion-depth-exceeded-category": "Старонкі зь перавышанай глыбінёй уключэньня", "expansion-depth-exceeded-category-desc": "Старонка перавышае максымальную глыбіню раскрыцьця.", - "expansion-depth-exceeded-warning": "Старонка перавысіла дазволеную глыбіню ўключэньняў", - "parser-unstrip-loop-warning": "Вызначаная незачыненая пятля", - "parser-unstrip-recursion-limit": "Перавышанае абмежаваньне глыбіні рэкурсіі ($1)", - "converter-manual-rule-error": "Знойдзеная памылка ў ручным правіле моўнага канвэртара", + "expansion-depth-exceeded-warning": "Старонка перавысіла дазволеную глыбіню разгортваньня", + "parser-unstrip-loop-warning": "Вызначаная пятля unstrip", + "parser-unstrip-recursion-limit": "Перавышаны ліміт рэкурсіі unstrip ($1)", + "converter-manual-rule-error": "Знойдзеная памылка ў ручным правіле моўнага канвэртару", "undo-success": "Рэдагаваньне можа быць адмененае. Калі ласка, параўнайце адрозьненьні паміж вэрсіямі, каб упэўніцца, што гэта адпаведныя зьмены, а потым запішыце зьмены для сканчэньня рэдагаваньня.", "undo-failure": "Рэдагаваньне ня можа быць скасаванае праз канфлікт паміж папярэднімі рэдагаваньнямі.", "undo-norev": "Рэдагаваньне ня можа быць адмененае, таму што яно не існуе альбо было выдаленае.", "undo-nochange": "Выглядае, што праўка ўжо была адмененая.", "undo-summary": "Скасаваньне праўкі $1 {{GENDER:$2|удзельніка|удзельніцы}} [[Special:Contributions/$2|$2]] ([[User talk:$2|гутаркі]])", - "undo-summary-username-hidden": "Вэрсія $1 скасаваная схаваным удзельнікам", + "undo-summary-username-hidden": "Скасаваньне вэрсіі $1 схаванага ўдзельніка", "cantcreateaccount-text": "Стварэньне рахункаў з гэтага IP-адрасу ('''$1''') было заблякаванае [[User:$3|$3]].\n\nПрычына блякаваньня пададзеная $3: ''$2''", "cantcreateaccount-range-text": "Стварэньне рахункаў з IP-адрасоў у дыяпазоне <strong>$1</strong>, у які ўваходзіць ваш IP-адрас (<strong>$4</strong>), было забароненае {{GENDER:$3|ўдзельнікам|ўдзельніцай}} [[User:$3|$3]].\n\n{{GENDER:$3|Удзельнікам|Удзельніцай}} $3 была пададзеная наступная прычына: <em>$2</em>.", "viewpagelogs": "Паказаць журналы падзеяў для гэтай старонкі", @@ -795,15 +788,15 @@ "last": "папярэдняя", "page_first": "першая", "page_last": "апошняя", - "histlegend": "Параўнаньне: пазначце кропкамі дзьве вэрсіі для параўнаньня і націсьніце enter альбо кнопку ўнізе.<br />\nТлумачэньне: (цяп) = адрозьненьні ад цяперашняй вэрсіі, (папярэдняя) = адрозьненьні ад папярэдняй вэрсіі, д = дробная праўка.", + "histlegend": "Параўнаньне: пазначце кропкамі дзьве вэрсіі для параўнаньня і націсьніце «ўвод» альбо кнопку ўнізе.<br />\nТлумачэньне: <strong>({{int:cur}})</strong> = адрозьненьні ад цяперашняй вэрсіі, <strong>({{int:last}})</strong> = адрозьненьні ад папярэдняй вэрсіі, <strong>{{int:minoreditletter}}</strong> = дробная праўка.", "history-fieldset-title": "Пошук у гісторыі", "history-show-deleted": "Толькі выдаленыя", "histfirst": "найстарэйшыя", - "histlast": "найнавейшыя", + "histlast": "найноўшыя", "historysize": "($1 {{PLURAL:$1|байт|байты|байтаў}})", "historyempty": "(пуста)", "history-feed-title": "Гісторыя зьменаў", - "history-feed-description": "Гісторыя зьменаў гэтай старонкі", + "history-feed-description": "Гісторыя зьменаў гэтай старонкі ў вікі", "history-feed-item-nocomment": "$1 у $2", "history-feed-empty": "Запатрабаванай старонкі не існуе.\nМагчыма, яна была выдаленая альбо яе перанесьлі.\nПаспрабуйце [[Special:Search|пашукаць]] падобныя старонкі.", "history-edit-tags": "Рэдагаваць меткі абраных вэрсіяў", @@ -811,18 +804,18 @@ "rev-deleted-user": "(імя ўдзельніка выдаленае)", "rev-deleted-event": "(падрабязнасьці выдаленыя з журнала падзеяў)", "rev-deleted-user-contribs": "[імя ўдзельніка альбо IP-адрас выдалены — рэдагаваньне схаванае з унёску]", - "rev-deleted-text-permission": "Гэтая вэрсія старонкі была '''выдаленая'''.\nМагчыма, падрабязнасьці могуць быць знойдзеныя ў [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} журнале выдаленьняў].", + "rev-deleted-text-permission": "Гэтая вэрсія старонкі была <strong>выдаленая</strong>.\nПадрабязнасьці могуць быць знойдзеныя ў [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} журнале выдаленьняў].", "rev-suppressed-text-permission": "Гэтая вэрсія старонкі была <strong>схаваная</strong>.\nПадрабязнасьці могуць быць знойдзеныя ў [{{fullurl:{{#Special:Log}}/suppress|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}}}} журнале хаваньняў].\nВы можаце [$1 праглядзець гэтую вэрсію], калі жадаеце.", - "rev-deleted-text-view": "Гэтая вэрсія старонкі была '''выдаленая'''.\nПадрабязнасьці могуць быць знойдзеныя ў [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} журнале выдаленьняў].", - "rev-suppressed-text-view": "Гэтая вэрсія старонкі была '''схаваная'''.\nВы можаце яе праглядзець; падрабязнасьці могуць быць знойдзеныя ў [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} журнале хаваньняў].", - "rev-deleted-no-diff": "Вы ня можаце праглядаць гэтую розьніцу паміж вэрсіямі, таму што адна з вэрсіяў была '''выдаленая'''.\nМагчыма, падрабязнасьці могуць быць знойдзеныя ў [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} журнале выдаленьняў].", - "rev-suppressed-no-diff": "Вы ня можаце праглядзець гэтую розьніцу, таму што адна з вэрсіяў была '''выдаленая'''.", - "rev-deleted-unhide-diff": "Адна з вэрсіяў гэтай старонкі была '''выдаленая'''.\nПадрабязнасьці могуць быць знойдзеныя ў [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} журнале выдаленьняў].\nВы можаце праглядзець [$1 розьніцу паміж вэрсіямі], калі жадаеце.", - "rev-suppressed-unhide-diff": "Адна з вэрсіяў гэтага параўнаньня была '''схаваная'''.\nПадрабязнасьці могуць быць знойдзеныя ў [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} журнале хаваньняў].\nВы можаце [$1 паглядзець гэту розьніцу], калі жадаеце.", - "rev-deleted-diff-view": "Адна з вэрсіяў гэтага параўнаньня была '''выдаленая'''.\nВы можаце праглядзець гэтую розьніцу паміж вэрсіямі. Падрабязнасьці могуць быць знойдзеныя ў [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} журнале выдаленьняў].", - "rev-suppressed-diff-view": "Адна з вэрсіяў гэтага параўнаньня была '''схаваная'''.\nВы можаце праглядзець гэтую розьніцу паміж вэрсіямі; падрабязнасьці могуць быць знойдзеныя ў [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} журнале хаваньняў].", + "rev-deleted-text-unhide": "Гэтая вэрсія старонкі была <strong>выдаленая</strong>.\nПадрабязнасьці могуць быць знойдзеныя ў [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} журнале выдаленьняў].\nВы можаце [$1 праглядзець гэтую вэрсію], калі жадаеце.", + "rev-suppressed-text-unhide": "Гэтая вэрсія старонкі была <strong>схаваная</strong>.\nПадрабязнасьці могуць быць знойдзеныя ў [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} журнале хаваньняў].\nВы можаце [$1 праглядзець гэтую вэрсію], калі жадаеце.", + "rev-deleted-text-view": "Гэтая вэрсія старонкі была <strong>выдаленая</strong>.\nВы можаце праглядзець яе; падрабязнасьці могуць быць знойдзеныя ў [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} журнале выдаленьняў].", + "rev-suppressed-text-view": "Гэтая вэрсія старонкі была <strong>схаваная</strong>.\nВы можаце яе праглядзець; падрабязнасьці могуць быць знойдзеныя ў [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} журнале хаваньняў].", + "rev-deleted-no-diff": "Вы ня можаце праглядаць гэтую розьніцу паміж вэрсіямі, таму што адна з вэрсіяў была <strong>выдаленая</strong>.\nПадрабязнасьці могуць быць знойдзеныя ў [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} журнале выдаленьняў].", + "rev-suppressed-no-diff": "Вы ня можаце праглядзець гэтую розьніцу, таму што адна з вэрсіяў была <strong>выдаленая</strong>.", + "rev-deleted-unhide-diff": "Адна з вэрсіяў гэтай старонкі была <strong>выдаленая</strong>.\nПадрабязнасьці могуць быць знойдзеныя ў [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} журнале выдаленьняў].\nВы можаце праглядзець [$1 розьніцу паміж вэрсіямі], калі жадаеце.", + "rev-suppressed-unhide-diff": "Адна з вэрсіяў гэтага параўнаньня была <strong>схаваная</strong>.\nПадрабязнасьці могуць быць знойдзеныя ў [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} журнале хаваньняў].\nВы можаце [$1 паглядзець гэту розьніцу], калі жадаеце.", + "rev-deleted-diff-view": "Адна з вэрсіяў гэтага параўнаньня была <strong>выдаленая</strong>.\nВы можаце праглядзець гэтую розьніцу паміж вэрсіямі. Падрабязнасьці могуць быць знойдзеныя ў [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} журнале выдаленьняў].", + "rev-suppressed-diff-view": "Адна з вэрсіяў гэтага параўнаньня была <strong>схаваная</strong>.\nВы можаце праглядзець гэтую розьніцу паміж вэрсіямі; падрабязнасьці могуць быць знойдзеныя ў [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} журнале хаваньняў].", "rev-delundel": "паказаць/схаваць", "rev-showdeleted": "паказаць", "revisiondelete": "Выдаліць/аднавіць вэрсіі", @@ -842,7 +835,7 @@ "revdelete-suppress-text": "Скрываньне можа выкарыстоўвацца '''толькі''' ў наступных выпадках:\n* патэнцыйна паклёпніцкая інфармацыя\n* раскрыцьцё асабістых зьвестак\n*: ''хатнія адрасы, тэлефонныя нумары, нумары пашпартоў і г. д.''", "revdelete-legend": "Усталяваць абмежаваньні бачнасьці", "revdelete-hide-text": "Тэкст вэрсіі", - "revdelete-hide-image": "Схаваць зьмест файла", + "revdelete-hide-image": "Схаваць зьмест файлу", "revdelete-hide-name": "Схаваць мэту і парамэтры", "revdelete-hide-comment": "Апісаньне зьменаў", "revdelete-hide-user": "Імя ўдзельніка/IP-адрас", @@ -953,6 +946,7 @@ "search-interwiki-caption": "Сумежныя праекты", "search-interwiki-default": "Вынікі з $1:", "search-interwiki-more": "(яшчэ)", + "search-interwiki-more-results": "больш вынікаў", "search-relatedarticle": "Зьвязаны", "searchrelated": "зьвязаны", "searchall": "усе", @@ -1042,6 +1036,7 @@ "youremail": "Адрас электроннай пошты:", "username": "Імя {{GENDER:$1|ўдзельніка|ўдзельніцы}}:", "prefs-memberingroups": "{{GENDER:$2|Удзельнік|Удзельніца}} {{PLURAL:$1|1=групы|групаў}}:", + "group-membership-link-with-expiry": "$1 (да $2)", "prefs-registration": "Час рэгістрацыі:", "yourrealname": "Сапраўднае імя:", "yourlanguage": "Мова інтэрфэйсу:", @@ -1086,17 +1081,26 @@ "editusergroup": "Загрузіць групы ўдзельніка", "editinguser": "Зьмена правоў {{GENDER:$1|удзельніка|удзельніцы}} <strong>[[User:$1|$1]]</strong> $2", "viewinguserrights": "Прагляд правоў {{GENDER:$1|удзельніка|удзельніцы}} <strong>[[User:$1|$1]]</strong> $2", - "userrights-editusergroup": "Рэдагаваць групы ўдзельнікаў і ўдзельніц", - "userrights-viewusergroup": "Прагляд групаў удзельніка", + "userrights-editusergroup": "Рэдагаваць групы {{GENDER:$1|ўдзельніка|ўдзельніцы}}", + "userrights-viewusergroup": "Прагляд групаў {{GENDER:$1|удзельніка|удзельніцы}}", "saveusergroups": "Захаваць групы {{GENDER:$1|ўдзельнікаў і ўдзельніц}}", "userrights-groupsmember": "Уваходзіць у:", "userrights-groupsmember-auto": "Няяўны чалец:", - "userrights-groups-help": "Тут можна зьмяняць групы, да якіх належыць гэты ўдзельнік:\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", + "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-invalid-expiry": "Тэрмін заканчэньня для групы «$1» зьяўляецца няслушным.", + "userrights-expiry-in-past": "Час заканчэньня для групы «$1» знаходзіцца ў мінулым.", + "userrights-cannot-shorten-expiry": "Вы ня можаце падоўжыць час дзеяньня групы «$1». Толькі ўдзельнікі з правамі на дадаваньне і выдаленьне гэтай групы могуць падаўжаць час дзеяньня.", "userrights-conflict": "Канфлікт пры зьмене правоў удзельнікаў! Калі ласка, праверце і захавайце вашыя зьмены.", "group": "Група:", "group-user": "Удзельнікі", @@ -1297,21 +1301,55 @@ "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (глядзіце таксама [[Special:NewPages|сьпіс новых старонак]])", "recentchanges-submit": "Паказаць", "rcfilters-activefilters": "Актыўныя фільтры", + "rcfilters-restore-default-filters": "Аднавіць фільтры па змоўчаньні", + "rcfilters-clear-all-filters": "Ачысьціць усе фільтры", "rcfilters-search-placeholder": "Фільтар апошніх зьменаў (праглядзець або пачніце друкаваць)", "rcfilters-invalid-filter": "Няслушны фільтар", + "rcfilters-empty-filter": "Няма актыўных фільтраў. Паказаны ўвесь унёсак.", "rcfilters-filterlist-title": "Фільтры", + "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-filter-unregistered-conflicts-user-experience-level": "Фільтар «Незарэгістраваны» неактыўны, бо яго эфэкт адменены {{PLURAL:$2|1=наступным фільтрам|наступнымі фільтрамі}} дасьведчаных удзельнікаў, {{PLURAL:$2|1=які знаходзіць|якія знаходзяць}} толькі зарэгістраваных удзельнікаў: $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-userExpLevel-newcomer-label": "Навічкі", - "rcfilters-filter-userExpLevel-newcomer-description": "Зусім новыя рэдактары: менш за 10 правак і 4 дні актыўнасьці.", - "rcfilters-filter-userExpLevel-learner-label": "Вучні", - "rcfilters-filter-userExpLevel-learner-description": "Болей дзён актыўнасьці і правак, чым у «навічкоў», але меней чым у «дасьведчаных удзельнікаў».", - "rcfilters-filter-userExpLevel-experienced-label": "Дасьведчаныя ўдзельнікі", + "rcfilters-filter-editsbyother-description": "Праўкі, зробленыя іншымі ўдзельнікамі (ня вамі).", + "rcfilters-filtergroup-userExpLevel": "Узровень досьведу (толькі для зарэгістраваных удзельнікаў)", + "rcfilters-filtergroup-user-experience-level-conflicts-unregistered": "Гэты фільтар не актыўны, бо ён знаходзіць толькі зарэгістраваных удзельнікаў, такім чынам фільтар «Незарэгістраваныя» касуе яго эфэкт.", + "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": "Больш за 30 дзён актыўнасьці і 500 правак.", + "rcfilters-filtergroup-automated": "Аўтаматычны ўнёсак", + "rcfilters-filter-bots-label": "Робат", + "rcfilters-filter-bots-description": "Праўкі, зробленыя з дапамогай аўтаматызаваных інструмэнтаў.", + "rcfilters-filter-humans-label": "Чалавек (ня робат)", + "rcfilters-filter-humans-description": "Праўкі, зробленыя людзьмі.", + "rcfilters-filtergroup-significance": "Значэньне", + "rcfilters-filter-minor-label": "Дробныя праўкі", + "rcfilters-filter-minor-description": "Праўкі, якія аўтар пазначыў як дробныя.", + "rcfilters-filter-major-label": "Звычайныя праўкі", + "rcfilters-filter-major-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": "Адміністрацыйныя дзеяньні, стварэньні рахункаў, выдаленьні старонак, загрузкі…", "rcnotefrom": "Ніжэй {{PLURAL:$5|знаходзіцца зьмена|знаходзяцца зьмены}} з <strong>$4 $3</strong> (да <strong>$1</strong> на старонку).", "rclistfrom": "Паказаць зьмены з $2 $3", "rcshowhideminor": "$1 дробныя праўкі", @@ -1445,7 +1483,7 @@ "uploaded-setting-handler-svg": "SVG, які выстаўляе атрыбут «handler» з дапамогай аддаленага адрасу/зьвестак/скрыпту, блякуецца. У загружаным SVG-файле знойдзена <code>$1=\"$2\"</code>.", "uploaded-remote-url-svg": "SVG, які выстаўляе любы атрыбут з дапамогай аддаленага URL-адрасу, блякуецца. У загружаным SVG-файле знойдзена <code>$1=\"$2\"</code>.", "uploaded-image-filter-svg": "У загружаным SVG-файле знойдзены фільтар выяваў з URL-адрасам: <code><$1 $2=\"$3\"></code>.", - "uploadscriptednamespace": "Гэты SVG-файл утрымлівае няслушную прастору назваў «$1»", + "uploadscriptednamespace": "Гэты SVG-файл утрымлівае няслушную прастору назваў «<nowiki>$1</nowiki>»", "uploadinvalidxml": "Не атрымалася прааналізаваць XML у загружаным файле.", "uploadvirus": "Файл утрымлівае вірус! Падрабязнасьці: $1", "uploadjava": "Файл зьяўляецца ZIP-архівам, які зьмяшчае .class-файл Java.\nЗагрузка Java-файлаў забароненая ў мэтах бясьпекі.", @@ -1687,7 +1725,7 @@ "statistics-users-active-desc": "Удзельнікі, якія выканалі нейкае дзеяньне цягам {{PLURAL:$1|апошняга $1 дня|апошніх $1 дзён|апошніх $1 дзён}}", "pageswithprop": "Старонкі з уласьцівасьцямі старонак", "pageswithprop-legend": "Старонкі з уласьцівасьцямі старонак", - "pageswithprop-text": "На гэтай старонцы адлюстроўваюцца старонкі, якія ўжываюць пэўныя ўласьцівасьці старонак", + "pageswithprop-text": "На гэтай старонцы адлюстроўваюцца старонкі, якія ўжываюць пэўную ўласьцівасьць старонкі.", "pageswithprop-prop": "Імя ўласьцівасьці:", "pageswithprop-submit": "Паказаць", "pageswithprop-prophidden-long": "доўгае тэкставае значэньне ўласьцівасьці схавана ($1)", @@ -1722,6 +1760,7 @@ "uncategorizedcategories": "Некатэгарызаваныя катэгорыі", "uncategorizedimages": "Некатэгарызаваныя файлы", "uncategorizedtemplates": "Некатэгарызаваныя шаблёны", + "uncategorized-categories-exceptionlist": "# Утрымлівае сьпіс катэгорыяў, якія не павінны згадвацца на Special:UncategorizedCategories. Па адной на радок, пачынаецца з «*». Радкі, якія пачынаюцца зь іншага сымбалю (у тым ліку і з прабелу) ігнаруюцца. Ужывайце «#» для камэнтароў.", "unusedcategories": "Катэгорыі, якія не выкарыстоўваюцца", "unusedimages": "Файлы, якія не выкарыстоўваюцца", "wantedcategories": "Запатрабаваныя катэгорыі", @@ -1820,7 +1859,10 @@ "apisandbox-sending-request": "Адпраўка API-запыту…", "apisandbox-loading-results": "Атрымліваем API-вынікі…", "apisandbox-results-error": "Адбылася памылка пры загрузцы адказу на API-запыт: $1.", + "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».", @@ -1963,7 +2005,7 @@ "emailccsubject": "Копія Вашага ліста да $1: $2", "emailsent": "Ліст адасланы", "emailsenttext": "Ваш ліст быў адасланы.", - "emailuserfooter": "Гэты ліст быў дасланы {{GENDER:$1|ўдзельнікам|ўдзельніцай}} $1 да {{GENDER:$2|ўдзельніка|ўдзельніцы}} $2 з дапамогай функцыі «{{int:emailuser}}» {{GRAMMAR:родны|{{SITENAME}}}}. {{GENDER:$2|Ваш}} ліст у адказ будзе дасланы {{GENDER:$1|адпраўніку|адпраўніцы}}, і {{GENDER:$1|яму|ёй}} будзе бачны {{GENDER:$2|ваш}} адрас электроннай пошты.", + "emailuserfooter": "Гэты ліст быў дасланы {{GENDER:$1|ўдзельнікам|ўдзельніцай}} $1 да {{GENDER:$2|ўдзельніка|ўдзельніцы}} $2 з дапамогай функцыі «{{int:emailuser}}» {{GRAMMAR:родны|{{SITENAME}}}}. Калі вы адкажаце на гэты ліст, {{GENDER:$2|ваш}} ліст у адказ будзе дасланы непасрэдна {{GENDER:$1|адпраўніку|адпраўніцы}}, і {{GENDER:$1|яму|ёй}} будзе бачны {{GENDER:$2|ваш}} адрас электроннай пошты.", "usermessage-summary": "Паведамленьне пра выхад з сыстэмы.", "usermessage-editor": "Дастаўка сыстэмных паведамленьняў", "watchlist": "Сьпіс назіраньня", @@ -2061,7 +2103,7 @@ "editcomment": "Кароткае апісаньне зьменаў было: <em>$1</em>.", "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}};\nвернутая папярэдняя вэрсія {{GENDER:$4|$2}}.", "rollback-success-notify": "Адмененыя праўкі $1;\nвернутая папярэдняя вэрсія $2. [$3 Паказаць зьмены]", "sessionfailure-title": "Памылка сэсіі", "sessionfailure": "Магчыма ўзьніклі праблемы ў Вашым цяперашнім сэансе працы;\nгэта дзеяньне было скасавана для прадухіленьня перахопу сэансу.\nКалі ласка, націсьніце «назад» і перазагрузіце старонку, зь якой Вы прыйшлі, і паспрабуйце ізноў.", @@ -2337,6 +2379,7 @@ "proxyblockreason": "Ваш IP-адрас быў заблякаваны таму што ён належыць адкрытаму проксі.\nКалі ласка, зьвяжыцеся з Вашым Інтэрнэт-правайдарам альбо са службай тэхнічнай падтрымкі і паведаміце ім пра гэтую сур'ёзную праблему бясьпекі.", "sorbsreason": "Ваш IP-адрас знаходзіцца ў сьпісе адкрытых проксі ў DNSBL, якім карыстаецца {{SITENAME}}.", "sorbs_create_account_reason": "Ваш IP-адрас знаходзіцца ў сьпісе адкрытых проксі ў DNSBL, якім карыстаецца {{SITENAME}}.\nВы ня зможаце стварыць рахунак", + "softblockrangesreason": "Ананімны ўнёсак не дазволены з вашага IP-адрасу ($1). Калі ласка, увайдзіце ў сыстэму.", "xffblockreason": "IP-адрас, прыведзены ў загалоўку X-Forwarded-For, які належыць або вам, або проксі-сэрвэру, быў заблякаваны. Прычынай блякаваньня было: $1", "cant-see-hidden-user": "Удзельнік, якога Вы спрабуеце заблякаваць, ужо заблякаваны і схаваны. З-за таго, што Вы ня маеце правоў хаваньня ўдзельнікаў, Вы ня можаце бачыць альбо зьмяняць блякаваньне удзельніка.", "ipbblocked": "Вы ня можаце блякаваць ці раблякоўваць іншых удзельнікаў, таму што заблякаваныя самі", @@ -3492,7 +3535,7 @@ "logentry-tag-update-revision": "$1 {{GENDER:$2|абнавіў|абнавіла}} цэтлікі на вэрсіі $4 старонкі $3 ({{PLURAL:$7|дададзена}} $6; {{PLURAL:$9|выдалена}} $8)", "logentry-tag-update-logentry": "$1 {{GENDER:$2|абнавіў|абнавіла}} цэтлікі на запісе журналу $5 старонкі $3 ({{PLURAL:$7|дададзена}} $6; {{PLURAL:$9|выдалена}} $8)", "rightsnone": "(няма)", - "revdelete-summary": "кароткае апісаньне зьменаў", + "rightslogentry-temporary-group": "$1 (часова, да $2)", "feedback-adding": "Даданьне водгуку на старонку…", "feedback-back": "Назад", "feedback-bugcheck": "Выдатна! Толькі праверце, магчыма гэтыя памылкі ўжо [$1 вядомыя].", @@ -3517,56 +3560,12 @@ "feedback-useragent": "Агент удзельніка:", "searchsuggest-search": "Пошук у {{GRAMMAR:месны|{{SITENAME}}}}", "searchsuggest-containing": "утрымлівае...", - "api-error-autoblocked": "Ваш IP-адрас быў аўтаматычна заблякаваны, бо ён быў выкарыстаны заблякаваным удзельнікам.", - "api-error-badaccess-groups": "У Вас няма дазволу загружаць файлы ў гэтую вікі.", "api-error-badtoken": "Унутраная памылка: няслушны ключ.", - "api-error-blocked": "Рэдагаваньне было для вас заблякаванае.", - "api-error-copyuploaddisabled": "Загрузка з URL-адрасу забароненая на гэтым сэрвэры.", - "api-error-duplicate": "На сайце ўжо {{PLURAL:$1|1=існуе іншы файл|існуюць іншыя файлы}} з такім жа зьместам.", - "api-error-duplicate-archive": "Раней на сайце {{PLURAL:$1|1=быў файл|былі файлы}} з дакладна такім жа зьместам, але {{PLURAL:$1|1=ён быў выдалены|яны былі выдаленыя}}.", - "api-error-empty-file": "Дасланы Вамі файл быў пусты.", "api-error-emptypage": "Стварэньне новых пустых старонак забаронена.", - "api-error-fetchfileerror": "Унутраная памылка: падчас атрыманьня файла штосьці здарылася.", - "api-error-fileexists-forbidden": "Файл з назвай «$1» ужо існуе і ня можа быць перазапісаны.", - "api-error-fileexists-shared-forbidden": "Файл з назвай «$1» ужо існуе ў супольным сховішчы файлаў і ня можа быць перазапісаны.", - "api-error-file-too-large": "Дасланы Вамі файл занадта вялікі.", - "api-error-filename-tooshort": "Назва файла занадта кароткая.", - "api-error-filetype-banned": "Гэты тып файла забаронены.", - "api-error-filetype-banned-type": "$1 — {{PLURAL:$4|1=забаронены тып файлаў|забароненыя тыпы файлаў}}. {{PLURAL:$3|1=Дазволены тып файлаў|Дазволеныя тыпы файлаў}}: $2.", - "api-error-filetype-missing": "У файла няма пашырэньня.", - "api-error-hookaborted": "Прапанаваная Вамі зьмена была адхіленая апрацоўшчыкам пашырэньня.", - "api-error-http": "Унутраная памылка: немагчыма далучыцца да сэрвэра.", - "api-error-illegal-filename": "Недазволеная назва файла.", - "api-error-internal-error": "Унутраная памылка: падчас апрацоўкі Вашага файла штосьці здарылася.", - "api-error-invalid-file-key": "Унутраная памылка: ня быў знойдзены часовы файл.", - "api-error-missingparam": "Унутраная памылка: запыт бракуе парамэтраў.", - "api-error-missingresult": "Унутраная памылка: немагчыма вызначыць, ці пасьпяхова зробленае капіяваньне.", - "api-error-mustbeloggedin": "Для загрузкі файлаў неабходна ўвайсьці ў сыстэму.", - "api-error-mustbeposted": "Памылка гэтага праграмнага забесьпячэньня; яно не выкарыстоўвае слушны HTTP-мэтад.", - "api-error-noimageinfo": "Файл загружаны, але сэрвэр ня даў пра яго ніякай інфармацыі.", - "api-error-nomodule": "Унутраная памылка: ня выбраны модуль загрузкі.", - "api-error-ok-but-empty": "Унутраная памылка: няма адказу ад сэрвэра.", - "api-error-overwrite": "Замена існуючага файла забароненая.", - "api-error-ratelimited": "Вы спрабуеце загрузіць за кароткі час болей файлаў, чым дазваляе вікі.\nКалі ласка, паспрабуйце яшчэ раз празь некалькі хвілінаў.", - "api-error-stashfailed": "Унутраная памылка: сэрвэр ня змог захаваць часовы файл.", "api-error-publishfailed": "Унутраная памылка: сэрвэр ня змог захаваць часловы файл.", - "api-error-stasherror": "Падчас загрузкі файла ў сховішча адбылася памылка.", - "api-error-stashedfilenotfound": "Схаваны файл ня быў знойдзены пры спробе загрузіць яго з схованкі.", - "api-error-stashpathinvalid": "Шлях, дзе павінен быў знаходзіцца схаваны файл, апынуўся няслушным.", - "api-error-stashfilestorage": "Адбылася памылка пры захаваньні файла ў схованку.", - "api-error-stashzerolength": "Сэрвэр ня змог схаваць файл, бо ён мае нулявы памер.", - "api-error-stashnotloggedin": "Вы мусіце ўвайсьці ў сыстэму, каб захоўваць файлы ў схованку загрузкі.", - "api-error-stashwrongowner": "Файл, да якога вы спрабуеце атрымаць доступ у схованцы, не належыць вам.", - "api-error-stashnosuchfilekey": "Ключ файла, да якога вы спрабуеце атрымаць доступ у схованцы, не існуе.", - "api-error-timeout": "Сэрвэр не адказаў у чаканы тэрмін.", - "api-error-unclassified": "Узьнікла невядомая памылка", - "api-error-unknown-code": "Невядомая памылка: «$1».", - "api-error-unknown-error": "Унутраная памылка: падчас загрузкі файла здарылася штосьці невядомае.", + "api-error-stashfailed": "Унутраная памылка: сэрвэр ня змог захаваць часовы файл.", "api-error-unknown-warning": "Невядомае папярэджаньне: «$1».", "api-error-unknownerror": "Невядомая памылка: «$1».", - "api-error-uploaddisabled": "Загрузка ў гэтую вікі адключаная.", - "api-error-verification-error": "Гэты файл можа быць пашкоджаны, ці мае няслушнае пашырэньне.", - "api-error-was-deleted": "Файл з такой назвай ужо загружаўся раней і быў потым выдалены.", "duration-seconds": "$1 {{PLURAL:$1|сэкунда|сэкунды|сэкундаў}}", "duration-minutes": "$1 {{PLURAL:$1|хвіліна|хвіліны|хвілінаў}}", "duration-hours": "$1 {{PLURAL:$1|гадзіна|гадзіны|гадзінаў}}", @@ -3611,7 +3610,12 @@ "pagelang-language": "Мова", "pagelang-use-default": "Ужываць мову па змоўчаньні", "pagelang-select-lang": "Абярыце мову", + "pagelang-reason": "Прычына", "pagelang-submit": "Адправіць", + "pagelang-nonexistent-page": "Старонка $1 не існуе.", + "pagelang-unchanged-language": "Мова старонкі $1 ужо вызначаная як $2.", + "pagelang-unchanged-language-default": "Мова старонкі $1 ужо вызначаная як мова па змоўчаньні гэтай вікі.", + "pagelang-db-failed": "База зьвестак не змагла зьмяніць мову старонкі.", "right-pagelang": "Зьмяніць мову старонкі", "action-pagelang": "зьмену мовы старонкі", "log-name-pagelang": "Журнал зьменаў мовы", @@ -3683,6 +3687,7 @@ "mw-widgets-titleinput-description-new-page": "старонка яшчэ не існуе", "mw-widgets-titleinput-description-redirect": "перанакіраваньне на $1", "mw-widgets-categoryselector-add-category-placeholder": "Дадаць катэгорыю…", + "mw-widgets-usersmultiselect-placeholder": "Дадаць яшчэ…", "sessionmanager-tie": "Немагчыма выкарыстаць адначасова некалькі тыпаў аўтэнтыфікацыі: $1.", "sessionprovider-generic": "$1 сэсіі", "sessionprovider-mediawiki-session-cookiesessionprovider": "сэсіі на падставе файлаў-кукі", @@ -3741,8 +3746,20 @@ "authmanager-authn-not-in-progress": "Аўтэнтыфікацыя не выконваецца або страчаныя зьвесткі пра сэсію. Калі ласка, пачніце зноў з самага пачатку.", "authmanager-authn-no-primary": "Пададзеныя ўліковыя зьвесткі ня могуць быць правераныя на сапраўднасьць.", "authmanager-authn-no-local-user": "Пададзеныя ўліковыя зьвесткі не зьвязаныя зь ніводным удзельнікам гэтай вікі.", + "authmanager-authn-no-local-user-link": "Пададзеныя ўліковыя зьвесткі зьяўляюцца карэктнымі, але не належаць ніводнаму ўдзельніку гэтай вікі. Увайдзіце іншым шляхам, або стварыце новага ўдзельніка і ў вас будзе магчымасьць злучыць вашыя папярэднія ўліковыя зьвесткі з гэтым рахункам.", "authmanager-authn-autocreate-failed": "Аўтаматычнае стварэньне лякальнага рахунку не атрымалася: $1", "authmanager-change-not-supported": "Пададзеныя ўліковыя зьвесткі ня могуць быць зьмененыя, бо яны ня будуць выкарыстаныя.", + "authmanager-create-disabled": "Стварэньне рахункаў адключанае.", + "authmanager-create-from-login": "Каб стварыць рахунак, калі ласка, запоўніце палі.", + "authmanager-create-not-in-progress": "Стварэньне рахунку не выконваецца або страчаныя зьвесткі пра сэсію. Калі ласка, пачніце наноў з самага пачатку.", + "authmanager-create-no-primary": "Пададзеныя ўліковыя зьвесткі ня могуць быць выкарыстаныя для стварэньня рахунку.", + "authmanager-link-no-primary": "Пададзеныя ўліковыя зьвесткі ня могуць быць выкарыстаныя для злучэньня рахункаў.", + "authmanager-link-not-in-progress": "Злучэньне рахункаў не выконваецца або страчаныя зьвесткі сэсіі. Калі ласка, пачніце ізноў спачатку.", + "authmanager-authplugin-setpass-failed-title": "Памылка зьмены паролю", + "authmanager-authplugin-setpass-failed-message": "Дадатак аўтэнтыфікацыі адмовіў зьмену паролю.", + "authmanager-authplugin-create-fail": "Дадатак аўтэнтыфікацыі адмовіў у стварэньні рахунку.", + "authmanager-authplugin-setpass-denied": "Дадатак аўтэнтыфікацыі не дазваляе зьмяняць паролі.", + "authmanager-authplugin-setpass-bad-domain": "Няслушны дамэн.", "authmanager-realname-label": "Сапраўднае імя", "authmanager-provider-temporarypassword": "Часовы пароль", "changecredentials": "Зьмена ўліковых зьвестак", diff --git a/languages/i18n/be.json b/languages/i18n/be.json index d8a0a8ca8f..de9737f19f 100644 --- a/languages/i18n/be.json +++ b/languages/i18n/be.json @@ -197,6 +197,7 @@ "searcharticle": "Артыкул", "history": "Гісторыя старонкі", "history_short": "Гісторыя", + "history_small": "гісторыя", "updatedmarker": "абноўлена ад часу апошняга наведвання", "printableversion": "Для друку", "permalink": "Нязменная спасылка", @@ -249,7 +250,7 @@ "jumpto": "Перайсці да:", "jumptonavigation": "рух", "jumptosearch": "знайсці", - "view-pool-error": "На жаль, у гэты момант серверы перагружаны.\nЗанадта многія чытачы спрабуюць адкрыць гэтую старонку.\nКалі ласка, трохі пачакайце, перш чым адкрываць гэтую старонку ізноў.\n\n$1", + "view-pool-error": "На жаль, у гэты момант серверы перагружаны.\nВельмі шмат чытачоў спрабуе адкрыць гэтую старонку.\nКалі ласка, трохі пачакайце, перш чым адкрываць гэтую старонку ізноў.\n\n$1", "generic-pool-error": "На жаль, у гэты момант серверы перагружаны.\nЗанадта многія карыстальнікі спрабуюць адкрыць гэты рэсурс.\nКалі ласка, трохі пачакайце, перш чым спрабаваць атрымаць доступ да гэтага рэсурсу ізноў.", "pool-timeout": "Выйшаў час чакання блакіроўкі", "pool-queuefull": "Чарга запытаў перапоўнена", @@ -436,19 +437,12 @@ "login": "Увайсці ў сістэму", "login-security": "Праверыць вашу асобу", "nav-login-createaccount": "Увайсці ў сістэму / стварыць рахунак", - "userlogin": "Увайсці ў сістэму / стварыць рахунак", - "userloginnocreate": "Увайсці", "logout": "Выйсці з сістэмы", "userlogout": "Выйсці з сістэмы", "notloggedin": "Не ўвайшоў", "userlogin-noaccount": "Не маеце ўліковага запісу?", "userlogin-joinproject": "Далучайцеся да {{GRAMMAR:родны|{{SITENAME}}}}", - "nologin": "Не маеце рахунка? $1.", - "nologinlink": "Завесці рахунак", "createaccount": "Стварыць рахунак", - "gotaccount": "Ужо маеце рахунак? '''$1'''.", - "gotaccountlink": "Увайсці ў сістэму", - "userlogin-resetlink": "Забыліся даныя для ўваходу?", "userlogin-resetpassword-link": "Забылі пароль?", "userlogin-helplink2": "Даведка па прадстаўленні сістэме", "userlogin-loggedin": "Вы ўжо ўвайшлі ў сістэму як {{GENDER:$1|$1}}.\nСкарыстайцеся формай ніжэй, каб прадставіцца сістэме як іншы ўдзельнік.", @@ -461,7 +455,6 @@ "createaccountmail": "Ужыць часовы выпадковы пароль і даслаць яго праз эл.пошту", "createaccountmail-help": "Можа быць выкарыстаны для стварэння ўліковага запісу для іншага чалавека без пазнання пароля.", "createacct-realname": "Сапраўднае імя (неабавязкова)", - "createaccountreason": "Прычына:", "createacct-reason": "Прычына", "createacct-reason-ph": "Чаму вы ствараеце іншы ўліковы запіс", "createacct-reason-help": "Паведамленне паказана ў логу стварэння ўліковага запісу", @@ -777,9 +770,9 @@ "parser-template-loop-warning": "Цыклічнае ўключэнне шаблона: [[$1]]", "parser-template-recursion-depth-warning": "Вычарпаны ліміт глыбіні ўключэння шаблонаў ($1)", "language-converter-depth-warning": "Перавышана глыбіня моўнага канвертэра ($1)", - "node-count-exceeded-category": "Старонкі, якія перасягнулі колькасць кропак", + "node-count-exceeded-category": "Старонкі, якія перасягнулі колькасць вузлоў", "node-count-exceeded-category-desc": "На старонцы перавышана максімальная колькасць кропак.", - "node-count-exceeded-warning": "Старонка перасягнула колькасць кропак", + "node-count-exceeded-warning": "Старонка перасягнула колькасць вузлоў", "expansion-depth-exceeded-category": "Старонкі, якія перасягнулі глыбіню разгортвання", "expansion-depth-exceeded-category-desc": "На старонцы перасягнута максімальная глыбіня разгортвання.", "expansion-depth-exceeded-warning": "Старонка перасягнула глыбіню разгортвання", @@ -1015,8 +1008,6 @@ "saveprefs": "Запісаць", "restoreprefs": "Аднавіць усе прадвызначэнні (ва ўсіх раздзелах)", "prefs-editing": "Праца", - "rows": "Радкі:", - "columns": "Калонкі:", "searchresultshead": "Пошук", "stub-threshold": "Парог для паказу спасылкі як на пачатковы артыкул ($1):", "stub-threshold-sample-link": "прыклад", @@ -1057,6 +1048,7 @@ "youremail": "Эл.пошта *", "username": "Імя {{GENDER:$1|ўдзельніка|ўдзельніцы}}:", "prefs-memberingroups": "Уваходзіць у {{PLURAL:$1|групу|групы}}:", + "group-membership-link-with-expiry": "$1 (да $2)", "prefs-registration": "Час рэгістрацыі:", "yourrealname": "Сапраўднае імя:", "yourlanguage": "Мова:", @@ -1112,6 +1104,11 @@ "userrights-nodatabase": "Не знойдзена тут, або не існуе база даных $1.", "userrights-changeable-col": "Групы, якія вам дазволена мяняць", "userrights-unchangeable-col": "Групы, якія вам не дазволена мяняць", + "userrights-expiry-current": "Канчаецца $1", + "userrights-expiry-none": "Бестэрмінова", + "userrights-expiry": "Канчаецца:", + "userrights-expiry-existing": "Цяперашні час сканчэння: $3, $2", + "userrights-expiry-othertime": "Іншы час:", "userrights-conflict": "Канфлікт змянення ўдзельніцкіх дазволаў! Калі ласка, праверце і пацвердзіце змены.", "group": "Група:", "group-user": "Удзельнікі", @@ -1262,7 +1259,7 @@ "action-reupload-shared": "запісваць паўзверх гэтага файла ў супольным сховішчы", "action-upload_by_url": "загрузіць гэты файл з адраса URL", "action-writeapi": "ужываць API запісвання", - "action-delete": "сціраць гэтую старонку", + "action-delete": "выдаліць гэтую старонку", "action-deleterevision": "сціраць версіі старонак", "action-deletelogentry": "выдаленне запісаў у журнале", "action-deletedhistory": "бачыць сцёртую гісторыю гэтай старонкі", @@ -1307,10 +1304,13 @@ "recentchanges-label-minor": "Дробная па значэнні праўка", "recentchanges-label-bot": "Праўка зроблена праграмай-робатам", "recentchanges-label-unpatrolled": "Праўка яшчэ не атрымала адзнакі ўхваленасці (за ёй не сочыць \"патруль\")", - "recentchanges-label-plusminus": "Аб'ём старонкі змяніўся на гэтую лічбу байтаў", + "recentchanges-label-plusminus": "Аб'ём старонкі змяніўся на гэты лік байтаў", "recentchanges-legend-heading": "<strong>Легенда:</strong>", "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (гл. асобна [[Special:NewPages|новыя старонкі]])", "recentchanges-submit": "Паказаць", + "rcfilters-filter-user-experience-level-learner-description": "Болей дзён актыўнасці і правак, чым у «навічкоў», але меней чым у «дасведчаных удзельнікаў».", + "rcfilters-filter-user-experience-level-experienced-description": "Больш за 30 дзён актыўнасці і 500 правак.", + "rcfilters-filter-bots-label": "Бот", "rcnotefrom": "Ніжэй {{PLURAL:$5|паказана змяненне|паказаны змены}} з <strong>$3, $4</strong> (не больш за <strong>$1</strong>).", "rclistfrom": "Паказаць змены з $3 $2", "rcshowhideminor": "$1 дробныя праўкі", @@ -1441,7 +1441,7 @@ "uploaded-setting-event-handler-svg": "Устаноўка атрыбутаў апрацоўкі падзей заблакавана, у ўкладзеным SVG-файле знойдзены код <code><$1 $2=\"$3\"></code>.", "uploaded-setting-href-svg": "Выкарыстанне тэга \"set\" для дадання атрыбута \"href\" у бацькоўскі элемент заблакавана.", "uploaded-wrong-setting-svg": "Ужыванне тэга \"set\" для задання ў якасці мэты аддаленага адраса/звестак/сцэнарыя для любога атрыбута заблакавана. У ўкладзеным SVG-файле знойдзены <code><set to=\"$1\"></code>.", - "uploadscriptednamespace": "Гэты файл SVG утрымлівае недапушчальную прастору імёнаў \"$1\".", + "uploadscriptednamespace": "Гэты файл SVG утрымлівае недапушчальную прастору імёнаў \"<nowiki>$1</nowiki>\".", "uploadinvalidxml": "Немагчыма прааналізаваць XML ва ўкладзеным файле.", "uploadvirus": "Файл утрымлівае вірус! Падрабязнасці: $1", "uploadjava": "Файл ўяўляе сабой ZIP-архіў, які змяшчае .class файл Java.", @@ -1877,7 +1877,7 @@ "activeusers-intro": "Гэта пералік удзельнікаў, якія нешта рабілі за апошнія $1 {{PLURAL:$1|дзень|дзён}}.", "activeusers-count": "$1 {{PLURAL:$1|дзеянне|дзеянні|дзеянняў}} за апошні{{PLURAL:$3| дзень|я $3 дні|я $3 дзён}}", "activeusers-from": "Паказ, пачынаючы з:", - "activeusers-groups": "Паказаць удзельнікаў, якія належаць да групаў:", + "activeusers-groups": "Паказаць удзельнікаў, якія належаць да груп:", "activeusers-noresult": "Няма такіх удзельнікаў.", "activeusers-submit": "Паказаць актыўных удзельнікаў", "listgrouprights": "Дазволы для груп удзельнікаў", @@ -2344,6 +2344,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": "Перанесці старонку", @@ -2364,10 +2366,11 @@ "movelogpagetext": "Ніжэй пададзены спіс пераносаў старонак.", "movesubpage": "{{PLURAL:$1|Пад-старонка|Пад-старонкі}}", "movesubpagetext": "Старонка мае $1 {{PLURAL:$1|пад-старонку, паказаную ніжэй|пад-старонкі, паказаныя ніжэй}}.", + "movesubpagetalktext": "Адпаведная старонка размоў мае $1 {{PLURAL:$1|падстаронку, паказаную|падстаронкі, паказаныя|падстаронак, паказаныя}} ніжэй.", "movenosubpage": "Старонка не мае пад-старонак.", "movereason": "Прычына:", "revertmove": "адкат", - "delete_and_move_text": "==Патрабуецца сціранне==\n\nУжо існуе артыкул з мэтавай назвай \"[[:$1]]\". Дык ці жадаеце сцерці яго, каб зрабіць месца для пераносу?", + "delete_and_move_text": "Ужо існуе артыкул з мэтавай назвай \"[[:$1]]\".\nХочаце сцерці яго, каб зрабіць месца для пераносу?", "delete_and_move_confirm": "Так, сцерці старонку", "delete_and_move_reason": "Сцёрта, каб зрабіць месца для пераносу \"[[$1]]\"", "selfmove": "Назвы вытока і мэты такія самыя; нельга пераносіць старонку саму на сябе.", @@ -3408,7 +3411,6 @@ "logentry-tag-update-add-logentry": "$1 {{GENDER:$2|дадаў|дадала}} {{PLURAL:$7|1=бірку|біркі}} $6 да запісу ў журнале $5 старонкі $3", "logentry-tag-update-remove-revision": "$1 {{GENDER:$2|выдаліў|выдаліла}} {{PLURAL:$9|1=бірку|біркі}} $8 з версіі $4 старонкі $3", "rightsnone": "(няма)", - "revdelete-summary": "тлумачэнне праўкі", "feedback-adding": "Даданне водгуку на старонку…", "feedback-back": "Назад", "feedback-bugcheck": "Выдатна! Толькі праверце, што ў спісе [$1 вядомых памылак] яе няма падобнага запісу.", @@ -3427,45 +3429,12 @@ "feedback-thanks-title": "Дзякуем!", "searchsuggest-search": "Шукаць у {{GRAMMAR:месны|{{SITENAME}}}}", "searchsuggest-containing": "змяшчае...", - "api-error-badaccess-groups": "У Вас няма дазволу загружаць файлы ў гэтую вікі.", "api-error-badtoken": "Унутраная памылка: няслушны ключ.", - "api-error-copyuploaddisabled": "Загрузка з URL-адраса забаронена на гэтым серверы.", - "api-error-duplicate": "Ужо {{PLURAL:$1|існуе іншы файл|існуюць іншыя файлы}} з такім жа зместам.", - "api-error-duplicate-archive": "Раней на сайце {{PLURAL:$1|ўжо быў файл|былі файлы}} з дакладна такім жа зместам, але {{PLURAL:$1|ён быў выдалены|яны былі выдаленыя}}.", - "api-error-empty-file": "Дасланы Вамі файл быў пусты.", "api-error-emptypage": "Стварэнне новых пустых старонак забаронена.", - "api-error-fetchfileerror": "Унутраная памылка: падчас атрымання файла штосьці здарылася.", - "api-error-fileexists-forbidden": "Файл з назвай \"$1\" ужо ёсць і не можа быць перапісаны.", - "api-error-fileexists-shared-forbidden": "Файл з назвай \"$1\" ужо ёсць у супольным сховішчы файлаў, ён не можа быць перапісаны.", - "api-error-file-too-large": "Дасланы Вамі файл занадта вялікі.", - "api-error-filename-tooshort": "Імя файла занадта кароткае.", - "api-error-filetype-banned": "Гэты тып файлаў забаронены.", - "api-error-filetype-banned-type": "$1 {{PLURAL:$4|належыць да недазволенага тыпу файлаў|належаць да недазволеных тыпаў файлаў}}. Пералік дазволеных тыпаў складаецца з {{PLURAL:$3|тыпу|тыпаў}}: $2.", - "api-error-filetype-missing": "У файла няма пашырэння.", - "api-error-hookaborted": "Прапанаванае вамі змяненне было адменена ў апрацоўшчыку пашырэння.", - "api-error-http": "Унутраная памылка: немагчыма далучыцца да сервера.", - "api-error-illegal-filename": "Імя файла не дапускаецца.", - "api-error-internal-error": "Унутраная памылка: падчас апрацоўкі Вашага файла штосьці здарылася.", - "api-error-invalid-file-key": "Унутраная памылка: не быў знойдзены часовы файл.", - "api-error-missingparam": "Унутраная памылка: запыт бракуе параметраў.", - "api-error-missingresult": "Унутраная памылка: немагчыма вызначыць, ці паспяхова зробленае капіяванне.", - "api-error-mustbeloggedin": "Для загрузкі файлаў неабходна ўвайсці ў сістэму.", - "api-error-mustbeposted": "Памылка гэтага праграмнага забеспячэння; яно не выкарыстоўвае слушны HTTP-метад.", - "api-error-noimageinfo": "Файл загружаны, але сервер не даў пра яго ніякай інфармацыі.", - "api-error-nomodule": "Унутраная памылка: не выбраны модуль загрузкі.", - "api-error-ok-but-empty": "Унутраная памылка: няма адказу ад сервера.", - "api-error-overwrite": "Замена існуючага файла не дапускаецца.", - "api-error-stashfailed": "Унутраная памылка: сервер не змог захаваць часовы файл.", "api-error-publishfailed": "Унутраная памылка: сервер не змог апублікаваць тымчасовы файл.", - "api-error-stasherror": "У час укладання файла ў сховішча здарылася памылка.", - "api-error-timeout": "Сервер не адказаў у чаканы тэрмін.", - "api-error-unclassified": "Узнікла невядомая памылка", - "api-error-unknown-code": "Невядомая памылка: «$1».", - "api-error-unknown-error": "Унутраная памылка: падчас загрузкі файла здарылася штосьці невядомае.", + "api-error-stashfailed": "Унутраная памылка: сервер не змог захаваць часовы файл.", "api-error-unknown-warning": "Невядомае папярэджанне: $1", "api-error-unknownerror": "Невядомая памылка: «$1».", - "api-error-uploaddisabled": "Загрузка ў гэтую вікі адключаная.", - "api-error-verification-error": "Гэты файл можа быць пашкоджаны, ці мае няслушны канчатак назвы.", "duration-seconds": "$1 {{PLURAL:$1|секунда|секунды|секунд}}", "duration-minutes": "$1 {{PLURAL:$1|мінута|мінуты|мінут}}", "duration-hours": "$1 {{PLURAL:$1|гадзіна|гадзіны|гадзін}}", diff --git a/languages/i18n/bg.json b/languages/i18n/bg.json index 2ec3bc7f82..21dd334e46 100644 --- a/languages/i18n/bg.json +++ b/languages/i18n/bg.json @@ -81,9 +81,9 @@ "tog-watchlisthidepatrolled": "Скриване на патрулираните редакции от списъка за наблюдение", "tog-watchlisthidecategorization": "Скриване на категоризацията на статии", "tog-ccmeonemails": "Получаване на копия на писмата, които пращам на другите потребители", - "tog-diffonly": "Без показване на съдържанието на страницата при преглед на разлики", + "tog-diffonly": "Да не се показва съдържанието на страницата при преглед на разлики", "tog-showhiddencats": "Показване на скритите категории", - "tog-norollbackdiff": "Не показвай разликата между редакциите след отмяна на редакции", + "tog-norollbackdiff": "Да не се показва разликата между редакциите след отмяна на редакции", "tog-useeditwarning": "Предупреждаване при опит за напускане на страница, отворена в режим на редактиране, без да са запазени промените", "tog-prefershttps": "Да се използва винаги защитена връзка при влизане", "underline-always": "Винаги", @@ -192,7 +192,7 @@ "qbpageoptions": "Тази страница", "qbmyoptions": "Моите страници", "faq": "ЧЗВ", - "faqpage": "Проект:ЧЗВ", + "faqpage": "Project:ЧЗВ", "actions": "Действия", "namespaces": "Именни пространства", "variants": "Варианти", @@ -207,6 +207,7 @@ "searcharticle": "Отваряне", "history": "История", "history_short": "История", + "history_small": "история", "updatedmarker": "има промяна (от последното ви влизане)", "printableversion": "Версия за печат", "permalink": "Постоянна препратка", @@ -231,7 +232,7 @@ "unprotectthispage": "Промяна на защитата на тази страница", "newpage": "Нова страница", "talkpage": "Дискусионна страница", - "talkpagelinktext": "Беседа", + "talkpagelinktext": "беседа", "specialpage": "Специална страница", "personaltools": "Лични инструменти", "articlepage": "Преглед на страница", @@ -438,19 +439,12 @@ "login": "Влизане", "login-security": "Потвърдете идентичността си", "nav-login-createaccount": "Регистриране или влизане", - "userlogin": "Влизане / създаване на сметка", - "userloginnocreate": "Влизане", "logout": "Излизане", "userlogout": "Излизане", "notloggedin": "Не сте влезли в системата", "userlogin-noaccount": "Нямате сметка?", "userlogin-joinproject": "Присъединяване към {{SITENAME}}", - "nologin": "Нямате потребителско име? $1.", - "nologinlink": "Създаване на сметка", "createaccount": "Регистриране", - "gotaccount": "Имате ли вече сметка? '''$1'''.", - "gotaccountlink": "Влизане", - "userlogin-resetlink": "Забравени данни за влизане в системата?", "userlogin-resetpassword-link": "Забравена парола?", "userlogin-helplink2": "Помощ за влизане", "userlogin-loggedin": "Вече сте влезли в системата като {{GENDER:$1|$1}}.\nЧрез формуляра по-долу можете да влезете като друг потребител.", @@ -461,7 +455,6 @@ "createacct-another-email-ph": "Въведете електронна поща", "createaccountmail": "Използване на случайна временна парола, която се изпраща на електронната поща, посочена по-долу", "createacct-realname": "Истинско име (незадължително)", - "createaccountreason": "Причина:", "createacct-reason": "Причина", "createacct-reason-ph": "Защо създавате друга сметка", "createacct-submit": "Създаване на сметката", @@ -505,7 +498,7 @@ "throttled-mailpassword": "Функцията за напомняне на паролата е използвана през {{PLURAL:$1|последния един час|последните $1 часа}}.\nЗа предотвратяване на злоупотреби е разрешено да се изпраща не повече от едно напомняне в рамките на {{PLURAL:$1|един час|$1 часа}}.", "mailerror": "Грешка при изпращане на писмо: $1", "acct_creation_throttle_hit": "През последните $2, през този IP-адрес посетители на това уики са създали {{PLURAL:$1|1 сметка |$1 сметки}}, което е максималният допустим брой за този период.\nВ резултат, към момента не могат да създават повече потребителски сметки през този IP-адрес.", - "emailauthenticated": "Адресът на електронната ви поща беше потвърден на $2 в $3.", + "emailauthenticated": "Адресът на електронната поща e потвърден на $2 в $3.", "emailnotauthenticated": "Адресът на електронната ви поща все още не е потвърден.\nНяма да получавате писма за никоя от следните възможности.", "noemailprefs": "За да работят тези функционалности, трябва да посочите адрес на електронна поща в своите настройки.", "emailconfirmlink": "Потвърждаване на адреса за електронна поща", @@ -672,7 +665,7 @@ "continue-editing": "Продължаване към полето за редактиране", "previewconflict": "Този предварителен преглед отразява текста в горната текстова кутия така, както би се показал, ако съхраните.", "session_fail_preview": "За съжаление редакцията ви не успя да бъде обработена поради загуба на данните за текущата сесия.\n\nМоже би сте излезли от системата. <strong>Моля, уверете се, че сте влезли в профила си и опитайте отново.</strong>\nАко все още не работи, опитайте да [[Special:UserLogout|излезете]] и да влезете отново, също така проверете дали браузърът ви позволява бисквитки от този сайт.", - "session_fail_preview_html": "'''За съжаление редакцията ви не беше записана поради изтичането на сесията ви.'''\n\n''Тъй като {{SITENAME}} приема обикновен HTML, предварителният преглед е скрит като предпазна мярка срещу атаки чрез Джаваскрипт.''\n\n'''Опитайте отново. Ако все още не сработва, пробвайте да [[Special:UserLogout|излезете]] и влезете отново.'''", + "session_fail_preview_html": "За съжаление редакцията ви не беше записана поради изтичането на сесията ви.\n\n<em>Тъй като {{SITENAME}} приема обикновен HTML, предварителният преглед е скрит като предпазна мярка срещу атаки чрез JavaScript.</em>\n\n<strong>Ако това е обикновен опит за редактиране, моля опитайте отново.</strong>\nАко все още не сработва, пробвайте да [[Special:UserLogout|излезете]] и влезете отново, и се уверете, че браузъра ви приема бисквитки от този сайт.", "token_suffix_mismatch": "'''Редакцията ви беше отхвърлена, защото браузърът ви е развалил пунктуационните знаци в редакционната отметка. Евентуалното съхранение би унищожило съдържанието на страницата. Понякога това се случва при използването на грешно работещи анонимни междинни сървъри.'''", "edit_form_incomplete": "'''Някои части от формуляра за редактиране не достигнаха до сървъра; проверете дали редакциите ви са непокътнати и опитайте отново.'''", "editing": "Редактиране на „$1“", @@ -921,10 +914,12 @@ "search-interwiki-caption": "Сродни проекти", "search-interwiki-default": "Резултати от $1:", "search-interwiki-more": "(още)", + "search-interwiki-more-results": "повече резултати", "search-relatedarticle": "Свързани", "searchrelated": "свързани", "searchall": "всички", "showingresults": "Показване на до {{PLURAL:$1|'''1''' резултат|'''$1''' резултата}}, като се започва от номер '''$2'''.", + "showingresultsinrange": "Показване на до {{PLURAL:$1|<strong>1</strong> резултат|<strong>$1</strong> резултата}} в диапазона от #<strong>$2</strong> до #<strong>$3</strong>.", "search-showingresults": "{{PLURAL:$4|Резултат <strong>$1</strong> от <strong>$3</strong>|Резултати <strong>$1 - $2</strong> от <strong>$3</strong>}}", "search-nonefound": "Няма резултати, които да отговарят на заявката.", "powersearch-legend": "Разширено търсене", @@ -967,8 +962,6 @@ "saveprefs": "Съхраняване", "restoreprefs": "Възстановяване на всички настройки по подразбиране (за всички раздели)", "prefs-editing": "Редактиране", - "rows": "Редове:", - "columns": "Колони:", "searchresultshead": "Търсене", "stub-threshold": "Праг за форматиране на препратки към мъничета ($1):", "stub-threshold-sample-link": "пример", @@ -1007,6 +1000,7 @@ "youremail": "Е-поща:", "username": "{{GENDER:$1|Потребителско име}}:", "prefs-memberingroups": "{{GENDER:$2|Член}} на {{PLURAL:$1|група|групи}}:", + "group-membership-link-with-expiry": "$1 (до $2)", "prefs-registration": "Регистрация:", "yourrealname": "Истинско име:", "yourlanguage": "Език:", @@ -1043,12 +1037,13 @@ "prefs-diffs": "Разлики", "prefs-help-prefershttps": "Това предпочитание ще бъде активирано при следващото влизане.", "userrights": "Управление на потребителските права", - "userrights-lookup-user": "Управляване на потребителските групи", + "userrights-lookup-user": "Изберете потребител", "userrights-user-editname": "Потребителско име:", - "editusergroup": "Редактиране на {{GENDER:$1|потребителските}} групи", + "editusergroup": "Зареждане на потребителските групи", "editinguser": "Промяна на потребителските права на {{GENDER:$1|потребител }} <strong>[[User:$1|$1]]</strong> $2", - "userrights-editusergroup": "Редактиране на потребителските групи", - "saveusergroups": "Съхраняване на потребителските групи", + "userrights-editusergroup": "Редактиране на {{GENDER:$1|потребителските}} групи", + "userrights-viewusergroup": "Преглед на {{GENDER:$1|потребителските}} групи", + "saveusergroups": "Съхраняване на {{GENDER:$1|потребителските}} групи", "userrights-groupsmember": "Член на:", "userrights-groupsmember-auto": "Подразбиращ се член на:", "userrights-groups-help": "Може да променяте групите, в които е потребителят:\n* Поставена отметка означава, че потребителят е член на групата.\n* Поле без отметка означава, че потребителят не е член на групата.\n* Знакът * показва, че не можете да премахнете групата, след като е вече добавена (или обратно).", @@ -1057,6 +1052,10 @@ "userrights-nodatabase": "Базата данни $1 не съществува или не е на локалния сървър.", "userrights-changeable-col": "Групи, които можете да променяте", "userrights-unchangeable-col": "Групи, които не можете да променяте", + "userrights-expiry-current": "Изтича на $1", + "userrights-expiry": "Изтича на:", + "userrights-expiry-othertime": "Друго време:", + "userrights-expiry-options": "1 ден:1 day,1 седмица:1 week,1 месец:1 month,3 месеца:3 months,6 месеца:6 months,1 година:1 year", "group": "Потребителска група:", "group-user": "Потребители", "group-autoconfirmed": "Автоматично одобрени потребители", @@ -1078,7 +1077,7 @@ "grouppage-bureaucrat": "{{ns:project}}:Бюрократи", "grouppage-suppress": "{{ns:project}}:Ревизори", "right-read": "Четене на страници", - "right-edit": "редактиране на страници", + "right-edit": "Редактиране на страници", "right-createpage": "Създаване на страници (които не са беседи)", "right-createtalk": "Създаване на дискусионни страници", "right-createaccount": "Създаване на нови потребителски сметки", @@ -1093,35 +1092,35 @@ "right-reupload": "Презаписване на съществуващ файл", "right-reupload-own": "Презаписване на съществуващ файл, качен от същия потребител", "right-reupload-shared": "Предефиниране на едноименните файлове от общото мултимедийно хранилище с локални", - "right-upload_by_url": "качване на файл от URL адрес", - "right-purge": "изчистване на складираното съдържание на страниците без показване на страница за потвърждение", + "right-upload_by_url": "Качване на файл от URL адрес", + "right-purge": "Изчистване на складираното съдържание на страниците без показване на страница за потвърждение", "right-autoconfirmed": "Редактиране на полузащитени страници", "right-bot": "Третиране като автоматизиран процес", "right-nominornewtalk": "Малките промени по дискусионните страници не предизвикват известието за ново съобщение", "right-apihighlimits": "Използване на крайните предели в API заявките", "right-writeapi": "Употреба на API за писане", "right-delete": "Изтриване на страници", - "right-bigdelete": "изтриване на страници с големи редакционни истории", + "right-bigdelete": "Изтриване на страници с големи редакционни истории", "right-deletelogentry": "Изтриване и възстановяване на отделни записи в дневника", "right-deleterevision": "Изтриване и възстановяване на отделни версии на страниците", - "right-deletedhistory": "преглеждане на записи от изтрити редакционни истории без асоциирания към тях текст", + "right-deletedhistory": "Преглеждане на записи от изтрити редакционни истории без асоциирания към тях текст", "right-deletedtext": "Преглед на изтрития текст и промените между изтритите версии", - "right-browsearchive": "търсене на изтрити страници", + "right-browsearchive": "Търсене на изтрити страници", "right-undelete": "Възстановяване на страници", "right-suppressrevision": "Преглед и възстановяване на версии, скрити от администраторите", "right-viewsuppressed": "Преглеждане на версии, скрити от който и да е потребител", "right-suppressionlog": "Преглеждане на тайните дневници", - "right-block": "спиране на достъпа до редактиране", + "right-block": "Спиране на достъпа до редактиране", "right-blockemail": "Блокиране на потребители да изпращат писма по е-поща", - "right-hideuser": "блокиране и скриване на потребителско име", - "right-ipblock-exempt": "пренебрегване на блокирания по IP blocks, автоматични блокирания и блокирани IP интервали", + "right-hideuser": "Блокиране и скриване на потребителско име", + "right-ipblock-exempt": "Пренебрегване на блокирания по IP blocks, автоматични блокирания и блокирани IP интервали", "right-unblockself": "Собствено отблокиране", - "right-protect": "променяне на нивото на защита и редактиране на защитени страници", + "right-protect": "Променяне на нивото на защита и редактиране на каскадно-защитените страници", "right-editprotected": "Редактиране на страници защитени като „{{int:protect-level-sysop}}“", "right-editinterface": "Редактиране на потребителския интерфейс", "right-editusercssjs": "редактиране на CSS и JS файловете на други потребители", - "right-editusercss": "редактиране на CSS файловете на други потребители", - "right-edituserjs": "редактиране на JS файловете на други потребители", + "right-editusercss": "Редактиране на CSS файловете на други потребители", + "right-edituserjs": "Редактиране на JS файловете на други потребители", "right-editmyusercss": "Редактиране на собствените потребителски CSS файлове", "right-editmyuserjs": "Редактиране на собствените потребителски JavaScript файлове", "right-viewmywatchlist": "Преглеждане на собствения списък за наблюдение", @@ -1130,16 +1129,16 @@ "right-editmyprivateinfo": "Редактиране на собствените лични данни (например: адрес на електронната поща, истинско име)", "right-editmyoptions": "Редактиране на собствените настройки", "right-rollback": "Бърза отмяна на промените, направени от последния потребител, редактирал дадена страница", - "right-markbotedits": "отбелязване на възвърнатите редакции като редакции на ботове", + "right-markbotedits": "Отбелязване на върнатите редакции като редакции на ботове", "right-noratelimit": "Пренебрегване на всякакви ограничения", - "right-import": "внасяне на страници от други уикита", - "right-importupload": "внасяне на страници от качен файл", - "right-patrol": "отбелязване на редакциите като проверени", + "right-import": "Внасяне на страници от други уикита", + "right-importupload": "Внасяне на страници от качен файл", + "right-patrol": "Отбелязване на редакциите като проверени", "right-autopatrol": "Автоматично отбелязване на редакции като проверени", "right-patrolmarks": "Показване на отбелязаните като патрулирани последни промени", "right-unwatchedpages": "преглеждане на списъка с ненаблюдаваните страници", "right-mergehistory": "сливане на редакционни истории на страници", - "right-userrights": "редактиране на потребителските права", + "right-userrights": "Редактиране на потребителските права", "right-userrights-interwiki": "редактиране на потребителски права на потребители в други уикита", "right-siteadmin": "заключване и отключване на базата от данни", "right-override-export-depth": "Изнасяне на страници, включително свързаните с тях в дълбочина до пето ниво", @@ -1152,7 +1151,7 @@ "grant-editinterface": "Редактиране на пространството нарича МедияУики и CSS/JavaScript участник", "grant-editmycssjs": "Редактиране на личния CSS/JavaScript", "grant-editmyoptions": "Редактиране на вашите потребителски настройки", - "grant-editmywatchlist": "редактиране на списъка ви за наблюдение", + "grant-editmywatchlist": "Редактиране на списъка ви за наблюдение", "grant-editpage": "Редактиране на съществуващи страници", "grant-editprotected": "Редактиране на защитени страници", "grant-highvolume": "Голям обем за редактиране", @@ -1166,7 +1165,7 @@ "grant-uploadfile": "Качване на нови файлове", "grant-basic": "Основни права", "grant-viewdeleted": "Преглед на изтрити файлове и страници", - "grant-viewmywatchlist": "преглед на списъка ви за наблюдение", + "grant-viewmywatchlist": "Преглед на списъка ви за наблюдение", "newuserlogpage": "Дневник на регистрациите", "newuserlogpagetext": "В този дневник се записват регистрациите на потребители.", "rightslog": "Дневник на потребителските права", @@ -1189,11 +1188,12 @@ "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-suppressrevision": "преглеждане и възстановяване на тази скрита версия", + "action-undelete": "възстановяване на страници", + "action-suppressrevision": "преглеждане и възстановяване на скрити версии", "action-suppressionlog": "преглеждане на този поверителен дневник", "action-block": "блокиране на редакциите на този потребител", "action-protect": "променяне на нивото на защита на тази страница", @@ -1231,6 +1231,23 @@ "recentchanges-legend-heading": "<strong>Легенда:</strong>", "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (вижте също [[Special:NewPages|списъка с нови страници]])", "recentchanges-submit": "Покажи", + "rcfilters-clear-all-filters": "Изчистване на всички филтри", + "rcfilters-filterlist-title": "Филтри", + "rcfilters-filterlist-noresults": "Не са намерени филтри", + "rcfilters-filtergroup-registration": "Регистрация на потребители", + "rcfilters-filter-unregistered-label": "Нерегистрирани", + "rcfilters-filter-editsbyself-label": "Ваши собствени редакции", + "rcfilters-filter-editsbyself-description": "Ваши редакции.", + "rcfilters-filter-editsbyother-label": "Чужди редакции", + "rcfilters-filter-user-experience-level-newcomer-label": "Новодошли", + "rcfilters-filter-bots-label": "Бот", + "rcfilters-filter-humans-label": "Човек (не бот)", + "rcfilters-filter-minor-label": "Малки промени", + "rcfilters-filter-major-label": "Обикновени редакции", + "rcfilters-filtergroup-changetype": "Вид на промяната", + "rcfilters-filter-pageedits-label": "Редакции на страници", + "rcfilters-filter-newpages-label": "Създавания на страници", + "rcfilters-filter-categorization-label": "Промяна на категории", "rcnotefrom": "{{PLURAL:$5|Дадена е промяната|Дадени са промените}} от <strong>$3, $4</strong> (до <strong>$1</strong> показани).", "rclistfrom": "Показване на промени, като се започва от $3 $2", "rcshowhideminor": "$1 на малки промени", @@ -1346,7 +1363,7 @@ "uploaddisabledtext": "Качването на файлове е забранено.", "php-uploaddisabledtext": "Качванията на файлове са спрени през PHP. Проверете настройката file_uploads.", "uploadscripted": "Файлът съдържа HTML или скриптов код, който може да бъде погрешно интерпретиран от браузъра.", - "uploadscriptednamespace": "Този SVG файл съдържа неправилно именно пространство „$1“", + "uploadscriptednamespace": "Този SVG файл съдържа неправилно именно пространство „<nowiki>$1</nowiki>“", "uploadinvalidxml": "XML-кода в качения файл не може да бъде анализиран.", "uploadvirus": "Файлът съдържа вирус! Подробности: $1", "uploadjava": "Файлът е ZIP файл, който съдържа Java .class файл.\nКачването на Java файлове не е позволено, тъй като могат да причинят заобикаляне на ограниченията за сигурност.", @@ -1485,6 +1502,7 @@ "uploadnewversion-linktext": "Качване на нова версия на файла", "shared-repo-from": "от $1", "shared-repo": "споделено хранилище", + "shared-repo-name-wikimediacommons": "Общомедия", "upload-disallowed-here": "Не можете да презапишете файла.", "filerevert": "Възвръщане на $1", "filerevert-legend": "Възвръщане на файла", @@ -1559,7 +1577,7 @@ "withoutinterwiki-summary": "Следните страници не препращат към версии на други езици:", "withoutinterwiki-legend": "Представка", "withoutinterwiki-submit": "Показване", - "fewestrevisions": "Страници с най-малко версии", + "fewestrevisions": "Страници с най-малко редакции", "nbytes": "$1 {{PLURAL:$1|байт|байта}}", "ncategories": "$1 {{PLURAL:$1|категория|категории}}", "ninterwikis": "$1 {{PLURAL:$1|междууики|междууикита}}", @@ -1601,6 +1619,7 @@ "deadendpagestext": "Следните страници нямат препратки към други страници от {{SITENAME}}.", "protectedpages": "Защитени страници", "protectedpages-indef": "Само безсрочни защити", + "protectedpages-summary": "Списък на страниците, които са защитени. За списък на заглавията, които са защитени от създаване, вижте [[{{#special:ProtectedTitles}}|{{int:protectedtitles}}]].", "protectedpages-cascade": "Само каскадни защити", "protectedpages-noredirect": "Скриване на пренасочванията", "protectedpagesempty": "В момента няма защитени страници с тези параметри.", @@ -1610,10 +1629,13 @@ "protectedpages-performer": "Защитаващ потребител", "protectedpages-params": "Параметри на защита", "protectedpages-reason": "Причина", + "protectedpages-submit": "Показване на страниците", "protectedpages-unknown-timestamp": "Неизвестни", "protectedpages-unknown-performer": "Неизвестен потребител", "protectedtitles": "Защитени заглавия", + "protectedtitles-summary": "Списък на заглавията, които са защитени от създаване. За списък на съществуващите страници, които са защитени, вижте [[{{#special:ProtectedPages}}|{{int:protectedpages}}]].", "protectedtitlesempty": "В момента няма заглавия, защитени с тези параметри.", + "protectedtitles-submit": "Показване на заглавията", "listusers": "Списък на потребителите", "listusers-editsonly": "Показване само на потребители с редакции", "listusers-creationsort": "Сортиране по дата на създаване", @@ -1634,7 +1656,7 @@ "nopagetext": "Посочената целева страница не съществува.", "pager-newer-n": "{{PLURAL:$1|по-нова 1|по-нови $1}}", "pager-older-n": "{{PLURAL:$1|по-стара 1|по-стари $1}}", - "suppress": "Премахване от публичния архив", + "suppress": "Подтискане", "querypage-disabled": "Тази специална страница е изключена, защото затруднява производителността на уикито.", "apihelp": "Помощ за API", "apihelp-no-such-module": "Модул \"$1\" не беше намерен.", @@ -1657,6 +1679,8 @@ "apisandbox-request-url-label": "URL-адрес на заявката:", "apisandbox-continue": "Продължаване", "apisandbox-continue-clear": "Изчистване", + "apisandbox-multivalue-all-namespaces": "$1 (Всички именни пространства)", + "apisandbox-multivalue-all-values": "$1 (Всички стойности)", "booksources": "Източници на книги", "booksources-search-legend": "Търсене на информация за книга", "booksources-search": "Търсене", @@ -1711,9 +1735,10 @@ "activeusers-count": "$1 {{PLURAL:$1|действие|действия}} за {{PLURAL:$3|последния ден|последните $3 дни}}", "activeusers-from": "Показване на потребителите, започвайки от:", "activeusers-noresult": "Няма намерени потребители.", + "activeusers-submit": "Показване на активните потребители", "listgrouprights": "Права по потребителски групи", "listgrouprights-summary": "По-долу на тази страница е показан списък на групите потребители в това уики и права им за достъп. Допълнителна информация за отделните права може да бъде намерена [[{{MediaWiki:Listgrouprights-helppage}}|тук]].", - "listgrouprights-key": "Легенда:\n* <span class=\"listgrouprights-granted\">Поверено право</span>\n* <span class=\"listgrouprights-revoked\">Отнето право</span>", + "listgrouprights-key": "Легенда:\n* <span class=\"listgrouprights-granted\">Дадено право</span>\n* <span class=\"listgrouprights-revoked\">Отнето право</span>", "listgrouprights-group": "Група", "listgrouprights-rights": "Права", "listgrouprights-helppage": "Help:Права на групите", @@ -1728,6 +1753,8 @@ "listgrouprights-removegroup-self-all": "Може да премахва всички групи от собствената сметка", "listgrouprights-namespaceprotection-header": "Ограничения на именните пространства", "listgrouprights-namespaceprotection-namespace": "Именно пространство", + "listgrants": "Разрешения", + "listgrants-grant": "Разрешение", "listgrants-rights": "Права", "trackingcategories": "Категории за проследяване", "trackingcategories-summary": "Тази страница съдържа списък на категории за проследяване, които се попълват автоматично от софтуера на МедияУики. Имената им могат да се променят чрез съответните системни съобщения в именното пространство {{ns:8}}.", @@ -1856,11 +1883,12 @@ "editcomment": "Резюмето на редакцията беше: <em>$1</em>.", "revertpage": "Премахване на [[Special:Contributions/$2|редакции на $2]] ([[User talk:$2|беседа]]); възвръщане към последната версия на [[User:$1|$1]]", "revertpage-nouser": "Премахнати редакции на (скрито потребителско име) и връщане към последната версия на [[User:$1|$1]]", - "rollback-success": "Отменени редакции на $1; възвръщане към последната версия на $2.", + "rollback-success": "Отменени редакции на {{GENDER:$3|$1}};\nвъзвръщане към последната версия на {{GENDER:$4|$2}}.", "sessionfailure-title": "Прекъсната сесия", "sessionfailure": "Изглежда има проблем със сесията ви; действието беше отказано като предпазна мярка срещу крадене на сесията. Натиснете бутона за връщане на браузъра, презаредете страницата, от която сте дошли, и опитайте отново.", "changecontentmodel-title-label": "Заглавие на страницата", "changecontentmodel-reason-label": "Причина:", + "changecontentmodel-submit": "Променяне", "changecontentmodel-success-text": "Типът на съдържанието на [[:$1]] е успешно променен.", "log-name-contentmodel": "Дневник на cъдържанието промяна модела", "log-description-contentmodel": "Събития, отнасящи се до модели на съдържанието на страницата", @@ -1942,7 +1970,7 @@ "undeletedrevisions": "{{PLURAL:$1|Една версия беше възстановена|$1 версии бяха възстановени}}", "undeletedrevisions-files": "{{PLURAL:$1|Една версия|$1 версии}} и {{PLURAL:$1|един файл|$2 файла}} бяха възстановени", "undeletedfiles": "{{PLURAL:$1|Един файл беше възстановен|$1 файла бяха възстановени}}", - "cannotundelete": "Възстановяването беше неуспешно:\n$1", + "cannotundelete": "Една или повече операции по възстановяване се провалиха:\n$1", "undeletedpage": "'''Страницата „$1“ беше възстановена.'''\n\nМожете да видите последните изтрити и възстановени страници в [[Special:Log/delete|дневника на изтриванията]].", "undelete-header": "Прегледайте [[Special:Log/delete|дневника на изтриванията]] за текущо изтритите страници.", "undelete-search-title": "Търсене на изтрити страници", @@ -2042,6 +2070,7 @@ "ipb-unblock": "Отблокиране на потребителско име IP-адрес", "ipb-blocklist": "Преглед на текущите блокирания", "ipb-blocklist-contribs": "Приноси на {{GENDER:$1|$1}}", + "ipb-blocklist-duration-left": "{{PLURAL:$1|остава още $1|остават още $1}}", "unblockip": "Отблокиране на потребител", "unblockiptext": "Използвайте долния формуляр, за да възстановите правото на писане на по-рано блокиран IP-адрес или потребител.", "ipusubmit": "Сваляне на блокирането", @@ -2096,6 +2125,7 @@ "block-log-flags-hiddenname": "скрито потребителско име", "range_block_disabled": "Възможността на администраторите да задават интервали при IP-адресите е изключена.", "ipb_expiry_invalid": "Невалиден срок на изтичане.", + "ipb_expiry_old": "Срокът на изтичане е минал.", "ipb_expiry_temp": "Скритите потребителски имена трябва да се блокират безсрочно.", "ipb_hide_invalid": "Тази потребителска сметка не може да бъде прикрита; с нея са направени повече от {{PLURAL:$1|една редакция|$1 редакции}}.", "ipb_already_blocked": "„$1“ е вече блокиран", @@ -2127,6 +2157,7 @@ "lockdbsuccesstext": "Базата данни на {{SITENAME}} беше заключена.\n<br />Не забравяйте да я [[Special:UnlockDB|отключите]] когато привършите с работата по поддръжката.", "unlockdbsuccesstext": "Базата от данни на {{SITENAME}} беше отключена.", "lockfilenotwritable": "Няма права за писане върху файла за заключване на базата данни. За да заключи или отключи базата данни, уеб-сървърът трябва да има тези права.", + "databaselocked": "Базата от данни е вече заключена.", "databasenotlocked": "Базата от данни не е заключена.", "lockedbyandtime": "(от $1 на $2 в $3)", "move-page": "Преместване на $1", @@ -2410,9 +2441,10 @@ "pageinfo-category-pages": "Брой страници", "pageinfo-category-subcats": "Брой подкатегории", "pageinfo-category-files": "Брой файлове", + "pageinfo-user-id": "Потребителски номер", "markaspatrolleddiff": "Отбелязване като проверена редакция", "markaspatrolledtext": "Отбелязване на редакцията като проверена", - "markaspatrolledtext-file": "Маркирай версията на файла като проверена", + "markaspatrolledtext-file": "Отбелязване на версията на файла като проверена", "markedaspatrolled": "Проверена редакция", "markedaspatrolledtext": "Избраната редакция на [[:$1]] беше отбелязана като патрулирана.", "rcpatroldisabled": "Патрулът е деактивиран", @@ -2792,6 +2824,7 @@ "exif-dc-rights": "Права", "exif-dc-source": "Източник медия", "exif-dc-type": "Вид медия", + "exif-rating-rejected": "Отхвърлен", "exif-isospeedratings-overflow": "По-голяма от 65535", "exif-iimcategory-ace": "Изкуствa, култура и забавление", "exif-iimcategory-clj": "Престъпност и право", @@ -3030,6 +3063,7 @@ "tags-edit-revision-selected": "{{PLURAL:$1|Избрана версия|Избрани версии}} от [[:$2]]:", "tags-edit-revision-legend": "Добавяне или премахване на етикети от {{PLURAL:$1|тази редакция|всичките $1 редакции}}", "tags-edit-existing-tags": "Съществуващи етикети:", + "tags-edit-existing-tags-none": "<em>Няма</em>", "tags-edit-new-tags": "Нови етикети:", "tags-edit-add": "Добавете тези етикети:", "tags-edit-remove": "Премахнете тези етикети:", @@ -3081,6 +3115,7 @@ "htmlform-user-not-exists": "<strong>$1</strong> не съществува.", "htmlform-user-not-valid": "<strong>$1</strong> не е валидно потребителско име.", "logentry-delete-delete": "$1 {{GENDER:$2|изтри}} страницата $3", + "logentry-delete-delete_redir": "$1 {{GENDER:$2|изтри}} пренасочване $3 чрез препокриване", "logentry-delete-restore": "$1 {{GENDER:$2|възстанови}} страницата $3", "logentry-delete-revision": "$1 {{GENDER:$2|промени}} видимостта на {{PLURAL:$5|една редакция|$5 редакции}} в страница $3: $4", "logentry-delete-event-legacy": "$1 {{GENDER:$2|промени}} видимостта на събитията от дневниците за страница $3", @@ -3112,7 +3147,6 @@ "logentry-rights-autopromote": "$1 е автоматично {{GENDER:$2|повишен|повишена}} от $4 до $5", "logentry-upload-upload": "$1 {{GENDER:$2|качи}} $3", "rightsnone": "(никакви)", - "revdelete-summary": "резюме", "feedback-adding": "Добавяне на коментар към страницата...", "feedback-back": "Обратно", "feedback-bugcheck": "Страхотно! Само проверете дали това не сред вече [$1 докладваните грешки].", @@ -3128,52 +3162,15 @@ "feedback-submit": "Изпращане", "feedback-thanks": "Благодарности! Вашата обратна информация е публикувана на страницата „[$2 $1]“.", "feedback-thanks-title": "Благодарим ви!", + "feedback-useragent": "Браузър:", "searchsuggest-search": "Търсене в {{SITENAME}}", "searchsuggest-containing": "съдържа...", - "api-error-autoblocked": "Вашият IP адрес е блокиран автоматично, тъй като е бил използван от блокиран потребител.", - "api-error-badaccess-groups": "Нямате необходимите права, за да качвате файлове в това уики.", "api-error-badtoken": "Вътрешна грешка: неправилен маркер.", - "api-error-blocked": "Блокирани сте да редактирате.", - "api-error-copyuploaddisabled": "Качването през URL е забранено на този сървър.", - "api-error-duplicate": "На сайта вече има {{PLURAL:$1|качен друг файл|качени други файлове}} с идентично съдържание.", - "api-error-duplicate-archive": "На сайта вече е имало {{PLURAL:$1|качен друг файл|качени други файла}} с идентично съдържание, {{PLURAL:$1|който е бил изтрит|които са били изтрити}}.", - "api-error-empty-file": "Заявеният за качване файл беше празен.", "api-error-emptypage": "Създаването на нови, празени страници, не е разрешено.", - "api-error-fetchfileerror": "Вътрешна грешка: Нещо се обърка при извличане на файла.", - "api-error-fileexists-forbidden": "Вече съществува файл с име „$1“ и той не може да бъде заменен.", - "api-error-fileexists-shared-forbidden": "В споделеното хранилище вече съществува файл с име „$1“ и той не може да бъде заменен.", - "api-error-file-too-large": "Заявеният за качване файл беше твърде голям.", - "api-error-filename-tooshort": "Името на файла е твърде кратко.", - "api-error-filetype-banned": "Този файлов тип не е позволен за качване.", - "api-error-filetype-banned-type": "$1 не {{PLURAL:$4|е позволен файлов формат|са позволени файлови формати}}. {{PLURAL:$3|Позволеният файлов формат е|Позволените файлови формати са}} $2.", - "api-error-filetype-missing": "Липсва разширение на файла.", - "api-error-hookaborted": "Промените, които опитахте да направите, бяха отменени от някое разширение.", - "api-error-http": "Вътрешна грешка: Грешка при свързането със сървъра.", - "api-error-illegal-filename": "Непозволено име на файл.", - "api-error-internal-error": "Вътрешна грешка: Нещо се обърка при обработката на качването в уикито.", - "api-error-invalid-file-key": "Вътрешна грешка: Файлът не беше открит във временното хранилище.", - "api-error-missingparam": "Вътрешна грешка: Липсващи параметри на заявката.", - "api-error-missingresult": "Вътрешна грешка: Не може да се определи дали копирането е успешно.", - "api-error-mustbeloggedin": "Трябва да сте влезли в системата, за да можете да качвате файлове.", - "api-error-mustbeposted": "Вътрешна грешка: Заявката изисква HTTP POST.", - "api-error-noimageinfo": "Качването беше успешно, но сървърът не подаде никаква информация за файла.", - "api-error-nomodule": "Вътрешна грешка: Липсва настроен модул за качвания.", - "api-error-ok-but-empty": "Вътрешна грешка: Няма отговор от сървъра.", - "api-error-overwrite": "Не е позволено презаписването върху съществуващ файл.", - "api-error-stashfailed": "Вътрешна грешка: Сървърът не успя да съхрани временния файл.", "api-error-publishfailed": "Вътрешна грешка: Сървърът не успя да съхрани временния файл.", - "api-error-stasherror": "Имаше грешка при качване на файла в хранилището.", - "api-error-stashedfilenotfound": "Скритият файл не беше открит при опита за качването му от временното хранилище.", - "api-error-stashfilestorage": "Имаше грешка при съхраняването на файла в хранилището.", - "api-error-stashnotloggedin": "Трябва да сте влезли в системата за да съхранявате файлове във временното хранилище.", - "api-error-timeout": "Сървърът не отговори в рамките на предвиденото време.", - "api-error-unclassified": "Възникна непозната грешка.", - "api-error-unknown-code": "Непозната грешка: „$1“", - "api-error-unknown-error": "Вътрешна грешка: Нещо се обърка по време на качването на файла ви.", - "api-error-unknown-warning": "Непознато предупреждение: „$1“", + "api-error-stashfailed": "Вътрешна грешка: Сървърът не успя да съхрани временния файл.", + "api-error-unknown-warning": "Непознато предупреждение: „$1“.", "api-error-unknownerror": "Неизвестна грешка: „$1“.", - "api-error-uploaddisabled": "Достъпът за качване на файлове в това уики е прекратен.", - "api-error-verification-error": "Файлът може би е повреден или има грешно разширение.", "duration-seconds": "$1 {{PLURAL:$1|секунда|секунди}}", "duration-minutes": "$1 {{PLURAL:$1|минута|минути}}", "duration-hours": "$1 {{PLURAL:$1|час|часа}}", @@ -3205,13 +3202,14 @@ "pagelang-language": "Език", "pagelang-use-default": "Използване на езика по подразбиране", "pagelang-select-lang": "Избиране на език", + "pagelang-reason": "Причина", "pagelang-submit": "Изпращане", "right-pagelang": "Промяна езика на страница", "action-pagelang": "промяна езика на страницата", "log-name-pagelang": "Дневник на езиковите промени", "default-skin-not-found-row-enabled": "* <code>$1</code> / $2 (включено)", "default-skin-not-found-row-disabled": "* <code>$1</code> / $2 (<strong>изключено</strong>)", - "mediastatistics": "Медия статистики", + "mediastatistics": "Статистика за файлове", "mediastatistics-table-mimetype": "MIME тип", "mediastatistics-table-extensions": "Възможни разширения", "mediastatistics-table-count": "Брой файлове", diff --git a/languages/i18n/bgn.json b/languages/i18n/bgn.json index b288535c47..af8c1e1939 100644 --- a/languages/i18n/bgn.json +++ b/languages/i18n/bgn.json @@ -1186,7 +1186,7 @@ "uploaddisabled": "بُرز کورتین غیر پئال اینت.", "copyuploaddisabled": "بُرز کورتین شه اینترنیتی ادرسا غیرفعال اینت.", "uploaddisabledtext": "فایل ئی بُرز کورتین غیر فعال اینت.", - "uploadscriptednamespace": "این اس‌وی‌جی ئی پوشه شامل غیرقانونی ئین '$1' ئی پزای نام ئا اینت", + "uploadscriptednamespace": "این اس‌وی‌جی ئی پوشه شامل غیرقانونی ئین '<nowiki>$1</nowiki>' ئی پزای نام ئا اینت", "uploadinvalidxml": "XML بئ بُرز بوته ئین پایل تا نتوانت تجزیه بیئت.", "uploadvirus": "ای پایل ویروس داریت!\nگیشتیرین مه لومات : $1", "upload-source": "فایلی منشا", @@ -2792,26 +2792,10 @@ "feedback-useragent": "کارزوروکی آگینت:", "searchsuggest-search": "گشتین", "searchsuggest-containing": "شامیلین دیمان...", - "api-error-badaccess-groups": "شما اجازه په پایلی ئی بُرز کورتین ئا بئ ای ویکی ای تا نداریت.", "api-error-badtoken": "داخیلی ئین خه تا: امنیتی ئین کوڈ سه ئی نه اینت (Bad token).", - "api-error-empty-file": "فایلی که دیم داته بوت خالی ات.", "api-error-emptypage": "خالی ئین دیمانی جۆڑ کورتین جایز نه اینت.", - "api-error-file-too-large": "فایلی که دیم داتیت بئ حد ٹوو ات.", - "api-error-filename-tooshort": "فایلی نام بئ شه اندازگ ئا گۆنڈ ات.", - "api-error-filetype-banned": "ایرنگین فایل ئی اجازه نه اینت.", - "api-error-filetype-missing": "فایل ئی نام فرمت نه داریت.", - "api-error-hookaborted": "تغیر که شما لۆٹیت جۆڑ کنیت شه یک جنگک یی نیمگا بند بوت.", - "api-error-http": "داخلین خطا:وصل بوتین بئ سرویس ئا ممکن نه اینت.", - "api-error-illegal-filename": "فایل ئی نام غیرمجاز اینت.", - "api-error-invalid-file-key": "داخلین خطا: فایل نام بئ موقت ئین حافظه ئی تا موجود نه اینت.", - "api-error-missingparam": "داخلین خطا: ناموجودین پارامیترئان بئ ریکویست ئی تا.", - "api-error-mustbeloggedin": "په فایلی بُرز کورتینا، شما باید بئ سایٹ ئی تا داخل بئیت.", - "api-error-mustbeposted": "داخلین خطا: ریکویست باید شه POST HTTP ئی روش ئا دیم داته بیئت.", - "api-error-unclassified": "یک نا زانتین خطائی رخ دات.", - "api-error-unknown-code": "نازانتین خطای: \" $1 \"", "api-error-unknown-warning": "نادروستئ ئین ایختار: $1", "api-error-unknownerror": "نادروستئ ئین خه تا: «$1».", - "api-error-uploaddisabled": "پایلانی بُرز کورتین بئ ای ویکی تا غیر په هال اینت.", "duration-seconds": "$1 ثانیه", "duration-minutes": "$1 دقیقه", "duration-hours": "$1 سائت", diff --git a/languages/i18n/bho.json b/languages/i18n/bho.json index 244ac7a0bb..1990c2587e 100644 --- a/languages/i18n/bho.json +++ b/languages/i18n/bho.json @@ -27,17 +27,17 @@ "tog-watchuploads": "हम नया फाइल अपलोड करीं त उनहना के हमार धियानसूची में जोड़ल जाय", "tog-watchrollback": "हमरा द्वारा रोलबैक कइल गइल पन्ना सभ के हमार धियानसूची में जोड़ल जाव", "tog-minordefault": "डिफाल्ट रूप से सगरी संपादन के छोट संपादन की रुप में चिन्हित कइल जाव", - "tog-previewontop": "झलक (प्रीव्यू) संपादन बक्सा से पहिले देखावल जाय", - "tog-previewonfirst": "पहिला संपादन पर झलक (प्रीव्यू) देखावल जाय", - "tog-enotifwatchlistpages": "हमार धियानसूची में दर्ज कौनो भी पन्ना या फाइल में बदलाव होखला पर हमके ईमेल कइल जाव", + "tog-previewontop": "झलक के संपादन बक्सा से पहिले देखावल जाय", + "tog-previewonfirst": "पहिला संपादन पर झलक देखावल जाय", + "tog-enotifwatchlistpages": "हमार धियानसूची में जुड़ल कौनो भी पन्ना या फाइल में बदलाव होखला पर हमके ईमेल कइल जाव", "tog-enotifusertalkpages": "अगर हमरे बातचीत पन्ना पर कौनो बदलाव होखे त हमके ईमेल कइल जाव", - "tog-enotifminoredits": "पन्ना आ फाइल पर छोटो बदलाव होखे त हमके ईमेल कइल जाव", + "tog-enotifminoredits": "पन्ना आ फाइल पर छोट बदलाव होखे तबो हमके ईमेल कइल जाव", "tog-enotifrevealaddr": "नोटिफिकेशन ईमेल में हमार ईमेल पता देखावल जाव", - "tog-shownumberswatching": "धियान रखे वालन सदस्यन के संख्या देखावल जाव", + "tog-shownumberswatching": "धियान रखे वाला प्रयोगकर्ता लोग के संख्या देखावल जाव", "tog-oldsig": "राउर वर्तमान दसखत:", "tog-fancysig": "दसखत के विकी पाठ के रुप में उपयोग करीं (बिना ऑटोमेटिक कड़ी के)", "tog-uselivepreview": "लगातार झलक (लाइव प्रीव्यू) इस्तेमाल कइल जाव", - "tog-forceeditsummary": "संपादन संछेप ना भरल गइल होखे त हमके सूचित कइल जाय", + "tog-forceeditsummary": "संपादन सारांश ना भरल गइल होखे त हमके सूचित कइल जाय", "tog-watchlisthideown": "धियानसूची से हमार खुद के संपादन छिपावल जाय", "tog-watchlisthidebots": "धियानसूची से बॉट संपादन छिपावल जाय", "tog-watchlisthideminor": "धियानसूची से छोट संपादन छिपावल जाय", @@ -48,13 +48,13 @@ "tog-watchlisthidecategorization": "पन्ना श्रेणीकरण छिपावल जाय", "tog-ccmeonemails": "हमरा द्वारा अन्य प्रयोगकर्ता लोग के भेजल गइल ईमेल के कॉपी हमके भेजल जाय", "tog-diffonly": "अंतर देखावत समय नीचे पन्ना के सामग्री न देखावल जाय", - "tog-showhiddencats": "छिपल श्रेणियन के भी देखावल जाय", + "tog-showhiddencats": "छिपल श्रेणी देखावल जाय", "tog-norollbackdiff": "रोलबैक कइला के बाद अंतर न देखावल जाय", - "tog-useeditwarning": "जो हम कौनों पन्ना पर संपादन करत घरी परिवर्तन के बिना सहेजले छोड़ देईं त हमके खबर कइल जाय", + "tog-useeditwarning": "कौनों संपादन करत घरी बदलाव के बिना सहेजले पन्ना छोड़ देईं त हमके खबर कइल जाय", "tog-prefershttps": "खाता में प्रवेश रहले पर हमेशा सुरक्षित कनेक्शन के प्रयोग कइल जाय", "underline-always": "हमेशा", "underline-never": "कभी ना", - "underline-default": "जिल्द (स्किन) या ब्राउजर डिफॉल्ट", + "underline-default": "स्किन या ब्राउजर डिफॉल्ट", "editfont-style": "संपादन क्षेत्र के फॉन्ट स्टाइल:", "editfont-default": "ब्राउजर डिफाल्ट", "editfont-monospace": "मोनोस्पेस्ड फोंट", @@ -140,7 +140,7 @@ "listingcontinuesabbrev": "जारी...", "index-category": "सूचीबद्ध पन्ना", "noindex-category": "बिनासूचीबद्ध पन्ना", - "broken-file-category": "टूटल फाइल कड़ियन वाला पन्ना", + "broken-file-category": "गायब फाइल वाला पन्ना", "about": "बारे में", "article": "सामग्री पन्ना", "newwindow": "(नया विंडो में खोलीं)", @@ -174,23 +174,24 @@ "searcharticle": "जाईं", "history": "पन्ना के इतिहास", "history_short": "इतिहास", + "history_small": "इतिहास", "updatedmarker": "हमरे अंतिम बेर देखले के बाद के बदलाव", "printableversion": "छापे लायक संस्करण", "permalink": "स्थायी कड़ी", "print": "छापीं", - "view": "व्यू", + "view": "देखीं", "view-foreign": "$1 पर देखीं", "edit": "संपादन", - "edit-local": "लोकल विवरण देखीं", + "edit-local": "लोकल विवरण संपादन", "create": "बनाईं", "create-local": "लोकल विवरण जोड़ीं", "editthispage": "ए पन्ना के संपादन करीं", "create-this-page": "ई पन्ना बनाईं", - "delete": "मिटाईं", - "deletethispage": "ई पन्ना के मिटाईं", - "undeletethispage": "ई पन्ना के फिर से स्थापित करीं", - "undelete_short": "{{PLURAL:$1|एक ठो हटावल गइल संपादन|$1 ठे हटावल गइल संपादन कुल}} बिनामेटावल करीं", - "viewdeleted_short": "{{PLURAL:$1|एक ठो हटावल गइल संपादन|$1 हटावल गइल संपादन कुल}} देखीं", + "delete": "हटाईं", + "deletethispage": "ए पन्ना के हटाईं", + "undeletethispage": "हटावल पन्ना वापस ले आईं", + "undelete_short": "{{PLURAL:$1|एक ठो हटावल गइल संपादन|$1 ठे हटावल गइल संपादन कुल}} वापस ले आईं", + "viewdeleted_short": "{{PLURAL:$1|एक ठो हटावल गइल संपादन|$1 हटावल गइल संपादन}} देखीं", "protect": "सुरक्षित करीं", "protect_change": "बदलीं", "protectthispage": "ए पन्ना के सुरक्षित करीं।", @@ -203,12 +204,13 @@ "personaltools": "निजी औजार", "articlepage": "सामग्री पन्ना देखीं", "talk": "बातचीत", - "views": "व्यू", + "views": "बिबिध रूप", "toolbox": "औजार", "tool-link-userrights": "{{GENDER:$1|प्रयोगकर्ता}} के मंडली बदलीं", + "tool-link-userrights-readonly": "{{GENDER:$1|प्रयोगकर्ता}} मंडली देखीं", "tool-link-emailuser": "{{GENDER:$1|प्रयोगकर्ता}} के ईमेल करीं", "userpage": "प्रयोगकर्ता पन्ना देखीं", - "projectpage": "परियोजना पन्ना देखीं", + "projectpage": "प्रोजेक्ट पन्ना देखीं", "imagepage": "फाइल पन्ना देखीं", "mediawikipage": "सनेसा पन्ना देखीं", "templatepage": "टेम्पलेट पन्ना देखीं", @@ -227,8 +229,8 @@ "jumptosearch": "खोजीं", "view-pool-error": "माफ करीं, ए समय सर्वर पर बहुत ज्यादा लोड बढ़ गइल बा।\nए पन्ना के बहुते प्रयोगकर्ता लोग देखे के कोशिश कर रहल बा।\nए पन्ना के फिर से देखे से पहिले कृपया कुछ देर तक इंतजार करीं।\n\n$1", "generic-pool-error": "माफ करीं, ए समय सर्वर पर बहुत ज्यादा लोड बढ़ गइल बा।\nए संसाधन के बहुते प्रयोगकर्ता लोग देखे के कोशिश कर रहल बा।\nए संसाधन तक पहुँच बनावे के कोशिश से पहिले कृपया कुछ देर तक इंतजार करीं।", - "pool-timeout": "तालाबन्दी खातिर इंतजार समय समाप्त", - "pool-queuefull": "पूल पंक्ति भर गइल", + "pool-timeout": "तालाबंदी खुले के इंतजार समय समाप्त", + "pool-queuefull": "पूल कतार भरल बा", "pool-errorunknown": "नामालूम खराबी", "pool-servererror": "पूल काउंटर सर्विस उपलब्ध नइखे ($1)।", "poolcounter-usage-error": "इस्तमाल खराबी: $1", @@ -252,12 +254,12 @@ "badaccess": "परमीशन खराबी", "badaccess-group0": "जवन कार्रवाई के माँग कइले बानी, ओकरा लागू करे के इजाजत रउआँ के नइखे।", "badaccess-groups": "रउआ जौन कारवाई के माँग कइले बानी ऊ {{PLURAL:$2|$1 मंडली|$1 मंडली सभ}} के सदस्य लोग भर कर सकत बा।", - "versionrequired": "मिडीयाविकी के संस्करण $1 के होखल जरुरी बा", + "versionrequired": "मिडीयाविकी के वर्शन $1 के होखल जरुरी बा", "versionrequiredtext": "ए पन्ना के प्रयोग करे खातिर मीडियाविकी के वर्शन $1 जरूरी बा।\n[[Special:Version|वर्शन पन्ना]] देखीं।", "ok": "ठीक", "retrievedfrom": "\"$1\" से लिहल गइल", - "youhavenewmessages": "रउआ लगे बा $1 ($2).", - "youhavenewmessagesfromusers": "{{PLURAL:$4|रउवाँ खातिर}}{{PLURAL:$3|अउरी प्रयोगकर्ता के|$3 प्रयोगकर्ता लोग}} के $1 बा ($2)।", + "youhavenewmessages": "{{PLURAL:$3|रउआँ खातिर}} $1 ($2) बा।", + "youhavenewmessagesfromusers": "{{PLURAL:$4|रउवाँ खातिर}}{{PLURAL:$3|केहू प्रयोगकर्ता के|$3 प्रयोगकर्ता लोग}} के $1 बा ($2)।", "youhavenewmessagesmanyusers": "रउवाँ खातिर कई प्रयोगकर्ता लोग के भेजल $1 बा ($2)।", "newmessageslinkplural": "{{PLURAL:$1|नया सनेसा|999=नया सनेसा सभ}}", "newmessagesdifflinkplural": "पिछला {{PLURAL:$1|बदलाव|999=बदलाव}}", @@ -280,13 +282,13 @@ "viewdeleted": "$1 देखावल जाय?", "restorelink": "{{PLURAL:$1|एक ठो हटावल संपादन|$1 ठे हटावल संपादन}}", "feedlinks": "फीड:", - "feed-invalid": "अवैध सबस्क्रिप्शन फीड प्रकार", + "feed-invalid": "अवैध सबस्क्रिप्शन फीड प्रकार।", "feed-unavailable": "सिंडिकेशन फीड उपलब्ध नइखें", "site-rss-feed": "$1 आरएसएस फीड", "site-atom-feed": "$1 एटम फीड", - "page-rss-feed": "\"$1\" आरएसएस फिड", + "page-rss-feed": "\"$1\" आरएसएस फीड", "page-atom-feed": "\"$1\" एटम फीड", - "red-link-title": "$1 (पन्ना मौजूद नइखे)।", + "red-link-title": "$1 (पन्ना मौजूद नइखे)", "sort-descending": "उतरत क्रम में", "sort-ascending": "चढ़त क्रम में", "nstab-main": "पन्ना", @@ -301,7 +303,7 @@ "nstab-category": "श्रेणी", "mainpage-nstab": "मुख्य पन्ना", "nosuchaction": "अइसन कौनो कार्रवाई नइखे", - "nosuchactiontext": "ए यू॰आर॰एल द्वारा बतावल कार्रवाई अवैध बा।\nरउवाँ यू॰आर॰एल गलत लिखले होखब, या कव्नो गलत कड़ी के इस्तेमाल कइले होखब।\n{{SITENAME}} में इस्तमाल हो रहल सॉफ्टवेयर में खराबी के लच्छन भी हो सकत बा।", + "nosuchactiontext": "ए यू॰आर॰एल द्वारा बतावल कार्रवाई अवैध बा।\nरउवाँ यू॰आर॰एल गलत लिखले होखब, या कौनों गलत कड़ी के इस्तेमाल कइले होखब।\n{{SITENAME}} में इस्तमाल हो रहल सॉफ्टवेयर में खराबी के लच्छन भी हो सकत बा।", "nosuchspecialpage": "अइसन कौनो खास पन्ना नइखे", "nospecialpagetext": "<strong>रउआँ एगो अवैध खास पन्ना के अनुरोध कइले बानी।</strong>\n\nबैध खास पन्नासभ के लिस्ट [[Special:SpecialPages|{{int:specialpages}}]] पर देखल जा सकत बा।", "error": "खराबी", @@ -313,7 +315,7 @@ "databaseerror-error": "खराबी: $1", "transaction-duration-limit-exceeded": "हाई रिप्लिकेशन लैग बनावे से बचे खातिर ई ट्रांजेक्शन निरस्त कर दिहल गइल, काहें से की राइट करे में लागे वाला समय ($1), $2 के सीमा से अधिक रहल ह।\nअगर आप कई ठो आइटम एकही साथ बदलत होखीं, तब कई टुकड़ा में ई काम करे के कोसिस करीं।", "laggedslavemode": "<strong>चेतावनी:</strong> अइसन भी हो सकेला कि पन्ना पर हाल के अपडेट न होखे।", - "readonly": "डेटाबेस तालाबंदी बा", + "readonly": "डेटाबेस तालाबंद बा", "enterlockreason": "तालाबंदी के कारण दीं, आ अनुमान बताईं कि कब तालाबंदी हटी", "readonlytext": "नया संपादन आ अन्य बदलाव खातिर डाटाबेस पर तालाबंदी बा, शायद रुटीन मेंटेनन्स के चलते, जेकरा बाद ए के सामान्य स्थिती में आ जाये के चाहीं।\n\nतालाबंदी करे वाला सिस्टम प्रबंधक के बतावल कारण: $1", "missing-article": "डेटाबास के ओ पन्ना के पाठ ना मिलल जवन मिले के चाहत रहल, एकर नाँव रहल \"$1\" $2।\nआमतौर पर अइसन तब होला पुरान हो चुकल अंतर या हटावल पन्ना के इतिहास के कड़ी के पीछा कइल जा रहल होखे।\n\nयदि ई बात नइखे, तब हो सकेला आपके कौनों सॉफ्टवेयर बग मिल गइल होखे।\n[[Special:ListUsers/sysop|प्रबंधक]] के ई यूआरएल दे के खबर करीं।", @@ -386,15 +388,15 @@ "cannotlogoutnow-text": "$1 के इस्तेमाल करत समय लॉगआउट नइखे संभव।", "welcomeuser": "राउर स्वागत बा, $1!", "welcomecreation-msg": "राउर खाता बना दिहल गईल बा।\nआपन [[Special:Preferences|{{SITENAME}} वरीयतां]] के बदले के ना भूलब।", - "yourname": "सदस्यनाम:", - "userlogin-yourname": "सदस्यनाँव", - "userlogin-yourname-ph": "आपन सदस्यनाँव लिखीं", - "createacct-another-username-ph": "सदस्यनाम लिखीं", - "yourpassword": "गुप्त शब्द", + "yourname": "प्रयोगकर्तानाँव:", + "userlogin-yourname": "प्रयोगकर्तानाँव", + "userlogin-yourname-ph": "आपन प्रयोगकर्तानाँव लिखीं", + "createacct-another-username-ph": "प्रयोगकर्तानाँव लिखीं", + "yourpassword": "गुप्तशब्द:", "userlogin-yourpassword": "गुप्तशब्द (पासवर्ड)", "userlogin-yourpassword-ph": "आपन गुप्तशब्द लिखीं", "createacct-yourpassword-ph": "एगो गुप्तशब्द (पासवर्ड) प्रवेश करीं", - "yourpasswordagain": "गुप्त-शब्द पुन:डालीं:", + "yourpasswordagain": "गुप्तशब्द दोबारा डालीं:", "createacct-yourpasswordagain": "गुप्तशब्द (पासवर्ड) के पुष्टि करीं", "createacct-yourpasswordagain-ph": "गुप्तशब्द (पासवर्ड) फेर से प्रवेश करीं", "userlogin-remembermypassword": "हमके लॉग इन रहे दीं", @@ -411,113 +413,106 @@ "login": "लॉग इन", "login-security": "आपन पहिचान साबित करीं", "nav-login-createaccount": "खाता प्रवेश / खाता बनाईं", - "userlogin": "खाता प्रवेश / खाता बनाईं", - "userloginnocreate": "खाता में प्रवेश", "logout": "खाता से बाहर", "userlogout": "खाता से बाहर", - "notloggedin": "खाता में प्रवेश नईखीं भईल", + "notloggedin": "खाता में प्रवेश नइखीं भइल", "userlogin-noaccount": "का एगो खाता नइखे?", "userlogin-joinproject": "{{SITENAME}} से जुड़ीं", - "nologin": "का एगो खाता नईखे? $1.", - "nologinlink": "एगो खाता बनाईं", "createaccount": "खाता बनाईं", - "gotaccount": "का पहिले से एगो खाता बा? $1.", - "gotaccountlink": "खाता में प्रवेश", - "userlogin-resetlink": "का रउआ आपन प्रवेश जानकारी भूला गइल बानी?", - "userlogin-resetpassword-link": "आपन गुप्तशब्द भूला गईनी का?", - "userlogin-helplink2": "लॉग इन में मदद", - "userlogin-loggedin": "रउआ {{GENDER:$1|$1}} के रूप में पहिले से लॉग्ड इन बानीं।\nकौनो अन्य सदस्य के रूप में लॉग इन करे खातिर निम्नलिखित फ़ॉर्म के प्रयोग करीं।", - "userlogin-reauth": "आप के ई साबित करे खातिर की आपे {{GENDER:$1|$1}} बानी, दुबारा लॉगिन करे के पड़ी।", + "userlogin-resetpassword-link": "आपन गुप्तशब्द भुला गइनी का?", + "userlogin-helplink2": "खाता में प्रवेश में मदद", + "userlogin-loggedin": "रउआ {{GENDER:$1|$1}} के रूप में पहिले से खाता में प्रवेश क चुकल बानीं।\nकौनो अन्य सदस्य के रूप में खाता में प्रवेश करे खातिर नीचे दिहल फारम के प्रयोग करीं।", + "userlogin-reauth": "आप के ई साबित करे खातिर की आपे {{GENDER:$1|$1}} बानी, दुबारा खाता में प्रवेश करे के पड़ी।", "userlogin-createanother": "एगो दूसर खाता बनाईं", - "createacct-emailrequired": "ई-मेल पता", - "createacct-emailoptional": "ई-मेल पता (वैकल्पिक)", - "createacct-email-ph": "आपन ई-मेल पता लिखीं", - "createacct-another-email-ph": "ई-मेल पता लिखीं", - "createaccountmail": "एगो अस्थायी यादृच्छिक (रैन्डम) गुप्तशब्द के प्रयोग करीं आ निर्दिष्ट ई-मेल पता पर भेजीं", + "createacct-emailrequired": "ईमेल पता", + "createacct-emailoptional": "ईमेल पता (वैकल्पिक)", + "createacct-email-ph": "आपन ईमेल पता लिखीं", + "createacct-another-email-ph": "ईमेल पता लिखीं", + "createaccountmail": "एगो अस्थायी यादृच्छिक (रैन्डम) गुप्तशब्द के प्रयोग करीं आ दिहल गइल ईमेल पता पर भेजीं", "createaccountmail-help": "एकर इस्तेमाल केहू दुसरा खातिर खाता बनावे में कइल जा सके ला, बिना पासवर्ड जनले।", "createacct-realname": "असली नाम (वैकल्पिक)", - "createaccountreason": "कारण:", "createacct-reason": "कारण", - "createacct-reason-ph": "रउआ एगो अन्य खाता काहे बना रहल बानी", - "createacct-reason-help": "खाता बनवले के लॉग में देखाई पड़े वाला संदेस", + "createacct-reason-ph": "रउआ एगो अन्य खाता काहें बना रहल बानी", + "createacct-reason-help": "खाता बनवले के लॉग में देखाई पड़े वाला सनेसा", "createacct-submit": "आपन खाता बनाईं", "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|योगदानकर्ता}}", - "badretype": "रउआ जौन गुप्त शब्द डालत बानी उ नईखे मेल खात।", - "usernameinprogress": "एही सदस्यनाँव खातिर खाता खोले के काम पहिलहीं चालू बा।\nइंतजार करीं।", - "userexists": "लिखल गईल सदस्य नाम पहिले से प्रयोग में बा। कृपया कौनो दोसर नाम चुनीं।", - "loginerror": "खाता प्रवेश में त्रुटि", - "createacct-error": "खाता निर्माण त्रुटि", - "createaccounterror": "ई खाता ना बन पाईल: $1", - "nocookiesnew": "प्रयोगकर्ता खाता त बन गईल, बाँकी रउआ प्रवेश नईखीं भईल।\n{{SITENAME}} प्रयोगकर्ता लोग के खाता में प्रवेश करावे खातिर कुकिज के प्रयोग करेला।\nराउर कुकिज असक्षम बा।\nकृपया उ के सक्षम करीं, उ के बाद राउर नया प्रयोगकर्ता नाम आ गुप्त शब्द के साथ प्रवेश करीं।", - "nocookieslogin": "{{SITENAME}} प्रयोगकर्ता लोग के खाता में प्रवेश करावे खातिर कुकिज के प्रयोग करेला।\nराउर कुकिज असक्षम बा।\nकृपया उ के सक्षम करीं आ फिर से कोशिश करीं", - "nocookiesfornew": "स्रोत के पुष्टि ना हो पावे के कारण इ खाता निर्मित ना करल गइल। \nसुनिश्चित करीं कि रउआ कुकीज़ सक्षम कइले बानी, पृष्ठ के पुनः लोड करीं आ पुनः प्रयास करीं।", + "badretype": "रउआँ जौन गुप्तशब्द डालत बानी उ मेल नइखे खात।", + "usernameinprogress": "एही प्रयोगकर्तानाँव खातिर खाता खोले के काम पहिलहीं चालू बा।\nइंतजार करीं।", + "userexists": "लिखल गइल प्रयोगकर्तानाँव पहिले से प्रयोग में बा। कौनों दूसर नाम बीछीं।", + "loginerror": "खाता प्रवेश में खराबी", + "createacct-error": "खाता बनावे में खराबी", + "createaccounterror": "ई खाता ना बन पावल: $1", + "nocookiesnew": "प्रयोगकर्ता खाता त बन गइल, बाकी रउआ प्रवेश नइखीं भईल।\n{{SITENAME}} प्रयोगकर्ता लोग के खाता में प्रवेश करावे खातिर कुकी सब के प्रयोग करे ला।\nराउर कुकीज असक्षम बा।\nकुकीज सक्षम करीं, एकरा बाद आपन नया प्रयोगकर्तानाँव आ गुप्तशब्द के साथ प्रवेश करीं।", + "nocookieslogin": "{{SITENAME}} प्रयोगकर्ता लोग के खाता में प्रवेश करावे खातिर कुकी सभ के प्रयोग करेला।\nराउर कुकीज असक्षम बा।\nकृपया कुकी के सक्षम करीं आ फिर से कोशिश करीं", + "nocookiesfornew": "स्रोत के पुष्टि ना हो पावे के कारण इ खाता ना बनावलल गइल। \nसुनिश्चित करीं कि रउआँ कुकीज सक्षम कइले बानी, पन्ना दोबारा लोड करीं आ फिर से कोसिस करीं।", "createacct-loginerror": "खाता बनावल सफल भइल बाकी रउआँ अपने-आप लॉगिन ना हो पवलीं। [[Special:UserLogin|मैनुअल लॉगिन]] करीं।", - "noname": "रउआ उपयुक्त प्रयोगकर्ता नाम नईखीं निर्दिष्ट कईले।", - "loginsuccesstitle": "लॉगिन पूरा", - "loginsuccess": "''' \"$1\" के रुप में रउआ {{SITENAME}} में अब प्रवेश कर चुकल बानी।'''", - "nosuchuser": "\"$1\" नाँव के कौनो प्रयोगकर्ता नइखन।\nप्रयोगकर्ता नाम संवेदनशील मामला बा।\nशब्द आ इस्पेलिंग के जाँच करीं, या [[Special:CreateAccount|एगो नया खाता बनाईं]]।", - "nosuchusershort": "ई नाम से कौनो प्रयोगकर्ता नईखन \"$1\".\nआपन शब्द-वर्तनी के जाँच करीं।", - "nouserspecified": "रउआ एगो प्रयोगकर्ता नाम निर्दिष्ट करे के बा।", - "login-userblocked": "ई प्रयोगकर्ता के खाता निष्क्रिय हो चुकल बा। प्रवेश के आज्ञा नईखे।", - "wrongpassword": "गलत गुप्त-शब्द डलले बानी।\nकृपया फिर से कोशिश करीं।", - "wrongpasswordempty": "गुप्त-शब्द खाली बा। कृपया फिर से कोशिश करीं।", - "passwordtooshort": "गुप्त-शब्द कम से कम {{PLURAL:$1|1 अक्षर|$1 अक्षर}} के होवे के चाहीं।", - "passwordtoolong": "गुप्त-शब्द {{PLURAL:$1|$1 अक्षर}} से अधिक लमहर नइखे हो सकत।", - "passwordtoopopular": "अक्सरहा बीछल जाए वाला पासवर्ड ना इस्तेमाल होखी। कौनों अउरी खास अलग टाइप के पासवर्ड चुनीं।", - "password-name-match": "राउर गुप्त-शब्द राउर प्रयोगकर्ता नाम से अलग होवे के चाहीं।", - "password-login-forbidden": "इस सदस्यनाम आ गुप्तशब्द के प्रयोग वर्जित बा।", + "noname": "रउआ बैध प्रयोगकर्तानाँव नइखीं दिहले।", + "loginsuccesstitle": "खाता में प्रवेश हो गइल", + "loginsuccess": "''' \"$1\" के रुप में रउआँ {{SITENAME}} में अब प्रवेश कर चुकल बानी।'''", + "nosuchuser": "\"$1\" नाँव के कौनो प्रयोगकर्ता नइखन।\nप्रयोगकर्तानाँव संवेदनशील मामला बा।\nशब्द आ इस्पेलिंग के जाँच करीं, या [[Special:CreateAccount|एगो नया खाता बनाईं]]।", + "nosuchusershort": "\"$1\" नाँव के कौनो प्रयोगकर्ता नइखन।\nआपन इस्पेलिंग (हिज्जे) जाँचीं।", + "nouserspecified": "एगो प्रयोगकर्तानाँव देवे के परी।", + "login-userblocked": "ए प्रयोगकर्ता के खाता निष्क्रिय हो चुकल बा। प्रवेश के आज्ञा नईखे।", + "wrongpassword": "गलत गुप्तशब्द डलले बानी।\nकृपया फिर से कोसिस करीं।", + "wrongpasswordempty": "गुप्तशब्द खाली बा। कृपया फिर से कोसिस करीं।", + "passwordtooshort": "गुप्तशब्द कम से कम {{PLURAL:$1|1 अक्षर|$1 अक्षर}} के होवे के चाहीं।", + "passwordtoolong": "गुप्तशब्द {{PLURAL:$1|$1 अक्षर}} से लमहर ना चाहीं।", + "passwordtoopopular": "अक्सरहा बीछल जाए वाला गुप्तशब्द ना इस्तेमाल हो सके ला। कौनों अउरी खास अलग किसिम के गुप्तशब्द चुनीं।", + "password-name-match": "राउर गुप्तशब्द राउर प्रयोगकर्तानाँव से अलग होखे के चाहीं।", + "password-login-forbidden": "इस प्रयोगकर्तानाँव आ गुप्तशब्द के प्रयोग वर्जित बा।", "mailmypassword": "गुप्तशब्द रिसेट करीं", - "passwordremindertitle": "{{SITENAME}} खातिर नया अस्थायी गुप्त-शब्द", - "passwordremindertext": "केहु (शायद रउए, $1 आइ॰पी पता से) {{SITENAME}} ($4) पर प्रयोग खातिर नया गुप्तशब्द के निवेदन कईले बानी। सदस्य \"$2\" खातिर एगो अस्थायी गुप्तशब्द बना दिहल गईल बा, आ ई अभी \"$3\" बा। यदि ई राउरे आशय रहल, त अब रउआ खाता प्रवेश खातिर एगो नया गुप्तशब्द चुने के पड़ी।\nराउर अस्थायी गुप्तशब्द के अवधि {{PLURAL:$5|एक दिन|$5 दिनं}} में समाप्त हो जाई।\n\nयदि इ निवेदन केहु अउर कइले रहल, या रउआ आपन पुरान गुप्तशब्द अब नइखी बदले के चाहत काहे कि रउआ राउर पुरनका गुप्तशब्द के स्मरण हो आइल बा, त रउआ इ संदेश के अनदेखा कर सकत बानी, आ आपन पुरान गुप्तशब्द के प्रयोग पहिले हि जइसन कर सकत बानी।", - "noemail": "\"$1\" सदस्य खातिर कउनो भी ई-मेल पता दर्ज नइखे करल गइल।", - "noemailcreate": "रउआ एगो जायज ई-मेल पता उपलब्ध करावे के पड़ी।", - "passwordsent": "\"$1\" के ई-मेल पता पर एगो नया गुप्तशब्द भेज दिहल गइल बा।\nई-मेल पावे के बाद कृपया दुबारा खाता में प्रवेश करब।", - "blocked-mailpassword": "राउर आइपी पता के संपादन करे से रोक दिहल गइल बा। दुरुपयोग रोके खातिर, ए आइपी से पासवर्ड रिकवरी के अनुमति नइखे।", - "eauthentsent": "दर्ज करावल गइल ई-मेल पता पर एगो पुष्टिकरण ई-मेल भेज दिहल गइल बा।\nउ खाता पर कौनो दुसर ईमेल भेजल जाओ उ से पहिले, रउआ भेजल गईल ई-मेल पर दिहल गइल निर्देश के अनुसरण कर के ई-मेल पता के पुष्टिकरण करावे के पड़ी ताकि पता चले की सही में उ राउरे खाता ह।", - "throttled-mailpassword": "पिछला {{PLURAL:$1|एक घंटा|$1 घंटा}} के अंदर एगो गुप्तशब्द पुनर्स्थापन ई-मेल भेजल जा चुकल बा।\nदुरुपयोग से बचावे खातिर {{PLURAL:$1|एक घंटा|$1 घंटा}} में सिर्फ एगो गुप्तशब्द पुनर्स्थापन ई-मेल भेजल जाई।", - "mailerror": "ई-मेल भेजे में त्रुटि: $1", + "passwordremindertitle": "{{SITENAME}} खातिर नया अस्थायी गुप्तशब्द", + "passwordremindertext": "केहू (शायद रउए, $1 आइपी पता से) {{SITENAME}} ($4) पर प्रयोग खातिर नया गुप्तशब्द के निवेदन कइले बा। प्रयोगकर्ता \"$2\" खातिर एगो अस्थायी गुप्तशब्द बना दिहल गइल बा, आ ई \"$3\" बा। यदि ई रउवें चाहत रहलीं, त अब रउआँ के खाता में प्रवेश क के एगो नया गुप्तशब्द चुने के पड़ी।\nराउर अस्थायी गुप्तशब्द के अवधि {{PLURAL:$5|एक दिन|$5 दिन}} में खतम हो जाई।\n\nयदि ई निवेदन केहु अउर कइले रहल, या रउआँ के आपन पुरनका गुप्तशब्द इयाद आ गइल बा आ बदलाव नइखीं चाहत, त रउआँ ए सनेसा के अनदेखा कर सकत बानी, आ आपन पुरनका गुप्तशब्द के प्रयोग पहिले नियर कर सकत बानी।", + "noemail": "\"$1\" प्रयोगकर्ता खातिर कौनों ईमेल पता रिकार्ड में नइखे।", + "noemailcreate": "रउआँ के एगो जायज ईमेल पता देवे के पड़ी।", + "passwordsent": "\"$1\" के ईमेल पता पर एगो नया गुप्तशब्द भेज दिहल गइल बा।\nईमेल पावे के बाद कृपया दुबारा खाता में प्रवेश करीं।", + "blocked-mailpassword": "राउर आइपी पता के संपादन करे से रोक दिहल गइल बा। दुरुपयोग रोके खातिर, ए आइपी से गुप्तशब्द दोबारा हासिल करे के इजाजत नइखे।", + "eauthentsent": "दर्ज करावल गइल ईमेल पता पर एगो पुष्टिकरण ईमेल भेज दिहल गइल बा।\nउ खाता पर कौनो दूसर ईमेल भेजल जाव ओ से पहिले, रउआँ भेजल गइल ईमेल पर दिहल गइल निर्देश के अनुसार ईमेल पता के पुष्टिकरण करावे के पड़ी ताकि पता चले की सही में ऊ राउरे खाता हऽ।", + "throttled-mailpassword": "पिछला {{PLURAL:$1|एक घंटा|$1 घंटा}} के अंदर एगो गुप्तशब्द बदलाव ईमेल भेजल जा चुकल बा।\nदुरुपयोग से बचावे खातिर {{PLURAL:$1|एक घंटा|$1 घंटा}} में सिर्फ एगो गुप्तशब्द बदलाव ईमेल भेजल जाई।", + "mailerror": "ईमेल भेजे में गड़बड़ी: $1", "acct_creation_throttle_hit": "राउर आइपी पता से आइल आगंतुक लोग पिछला $2 में एह विकि पर {{PLURAL:$1|एक ठो खाता|$1 खाता}} बना चुकल बा जवन एह समयअवधि में अधिकतम सीमा बा।\nएही कारण, एह आइपी पता के इस्तेमाल करे वाला आगंतुक अब कौनों अउरी खाता एह समय नइखें बना सकत।", - "emailauthenticated": "$2 के $3 पर राउर ई-मेल पता के पुष्टीकरण हो चुकल बा।", - "emailnotauthenticated": "राउर ई-मेल पता के अभी तक प्रमाणिकरण नइखे भईल।\nनिम्नलिखित कउनो भी सुविधा खातिर रउआ के कौनो भी ई-मेल ना भेजल जाई।", - "noemailprefs": "इ सुविधा के प्रयोग करे खातिर आपन वरियता में एगो ई-मेल पता दिहीं।", - "emailconfirmlink": "अपना ई-मेल पता कन्फर्म करीं", - "invalidemailaddress": "राउर ई-मेल पता स्वीकार करल नइखे जा सकत काहे कि ई-मेल के जउन रुप दिखाई दे रहल बा उ गलत लागत बा।\nकृपया एगो सहि ई-मेल पता उपलब्ध कराईं या उ जगह के खाली छोड़ दिहीं।", - "cannotchangeemail": "इ विकी पर ई-मेल पता बदलल नईखे जा सकत।", - "emaildisabled": "इ साईट से ई-मेल नईखे भेजल जा सकत।", - "accountcreated": "खाता बनावल गईल", - "accountcreatedtext": "[[{{ns:User}}:$1|$1]] ([[{{ns:User talk}}:$1|वार्ता]]) खातिर खाता निर्मित कर दिहल गईल बा।", + "emailauthenticated": "$2 के $3 पर राउर ईमेल पता के पुष्टीकरण हो चुकल बा।", + "emailnotauthenticated": "राउर ईमेल पता के अभी तक प्रमाणिकरण नइखे भइल।\nनीचे लिखल कौनों भी सुविधा खातिर रउआ के कौनो भी ईमेल ना भेजल जाई।", + "noemailprefs": "ए सुविधा के प्रयोग करे खातिर आपन सेटिंग में एगो ईमेल पता देईं।", + "emailconfirmlink": "अपना ईमेल पता के पुष्टी करीं", + "invalidemailaddress": "राउर ईमेल पता अबैध फॉरमैट में बुझात बा आ स्वीकार नइखे हो सकत।\nसही-फॉरमैट में ईमेल पता देईं या जगह के खाली छोड़ देईं।", + "cannotchangeemail": "ए विकी पर ईमेल पता ना बदलल जा सकत बा।", + "emaildisabled": "इ साइट से ईमेल नइखे भेजल जा सकत।", + "accountcreated": "खाता बनावल गइल", + "accountcreatedtext": "[[{{ns:User}}:$1|$1]] ([[{{ns:User talk}}:$1|वार्ता]]) खातिर खाता बना दिहल गइल।", "createaccount-title": "{{SITENAME}} खातिर खाता बनाईं", - "createaccount-text": "राउर ई-मेल पता खातिर {{SITENAME}} ($4) पर \"$2\" सदस्य नाम से \"$3\" गुप्तशब्द (पासवर्ड) सहित खाता खोलले बानी। रउआ खाता में प्रवेश कर के आपन गुप्तशब्द (पासवर्ड) तुरंत बदल लेवे के चाहीं।\n\nयदि इ खाता गलती से खोलल गईल बा, त रउआ इ संदेश के अनदेखा कर सकत बानी।", - "login-throttled": "रउआ हाले में कईयन बार खाता में प्रवेश करे के कोशिश कर चुकल बानी।\nकृपया $1 प्रतिक्षा करला के बाद फिर से प्रयास करब।", - "login-abort-generic": "राउर लॉगिन बिफल रहल - रद्द कइल गइल", - "login-migrated-generic": "आप के खाता माइग्रेट हो चुकल बा अउर आप के सदस्यनाम इ विकी पर अब मौजूद नइखे।", + "createaccount-text": "राउर ईमेल पता खातिर {{SITENAME}} ($4) पर \"$2\" प्रयोगकर्तानाँव से \"$3\" गुप्तशब्द के साथ केहू खाता खोलले बा।\nरउआँ के खाता में प्रवेश कर के आपन गुप्तशब्द तुरंत बदल लेवे के चाहीं।\n\nयदि ई खाता गलती से खोलल गइल बा, त रउआ ए सनेसा के अनदेखा कर सकत बानी।", + "login-throttled": "रउआ हाले में कइयन बेर खाता में प्रवेश करे के कोशिश क चुकल बानी।\nकृपया $1 इंतजार के बाद फिर से कोसिस करब।", + "login-abort-generic": "राउर खाता में प्रवेश बिफल रहल - रद्द कइल गइल", + "login-migrated-generic": "आप के खाता माइग्रेट हो चुकल बा अउर आप के प्रयोगकर्तानाँव ए विकी पर अब मौजूद नइखे।", "loginlanguagelabel": "भाषा: $1", - "suspicious-userlogout": "राउर खाता से बाहर जाये के अनुरोध अस्वीकृत कर दिहल गइल बा काहे कि अइसन लग रहल बा कि इ कउनो खराब ब्राउज़र या कैश करे वाली प्रॉक्सी द्वारा भेजल गईल रहल।", - "createacct-another-realname-tip": "असली नाम वैकल्पिक बा।\nयदि रउआ इ के उपलब्ध करावे के चुनत बानी त, एकर प्रयोग सदस्य के ओकरा काम के अधिकार देवे खातिर होखी।", + "suspicious-userlogout": "राउर खाता से बाहर जाये के अनुरोध अस्वीकृत कर दिहल गइल बा काहे कि अइसन बुझाता कि ई कौनों खराब ब्राउजर या कशे करे वाली प्रॉक्सी द्वारा भेजल गइल रहल।", + "createacct-another-realname-tip": "असली नाम वैकल्पिक बा।\nअगर रउआँ असली नाँव देवे के बिकल्प चुनब, एकर इस्तेमाल प्रयोगकर्ता के ओकरा काम के श्रेय देवे खातिर होखी।", "pt-login": "खाता में प्रवेश", - "pt-login-button": "लॉग इन", - "pt-login-continue-button": "लॉगिन जारी राखीं", + "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": "लॉग इन सम्पूर्ण करे खातिर रउआ एगो नया पासवर्ड देवे के होई।", + "pt-userlogout": "खाता से बाहर", + "php-mail-error-unknown": "PHP के mail() फंक्शन में नामालूम गड़बड़ी बा।", + "user-mail-no-addy": "बिना कौनो ईमेल पता के ईमेल भेजे के कोसिस भइल बा।", + "user-mail-no-body": "एगो खाली या बहुत छोट ईमेल भेजे के कोसिस भइल बा।", + "changepassword": "गुप्तशब्द बदलीं", + "resetpass_announce": "खाता में प्रवेश पूरा करे खातिर रउआँ के एगो नया पासवर्ड देवे के पड़ी।", "resetpass_header": "खाता के गुप्तशब्द बदलीं", - "oldpassword": "पुराना गुप्त-शब्द:", - "newpassword": "नया गुप्त-शब्द:", - "retypenew": "नया गुप्त-शब्द पुन: डालीं:", + "oldpassword": "पुरान गुप्तशब्द:", + "newpassword": "नया गुप्तशब्द:", + "retypenew": "नया गुप्तशब्द फिर डालीं:", "resetpass_submit": "गुप्तशब्द बनाईं आ खाता में प्रवेश करीं", - "changepassword-success": "राउर पासवर्ड बदल दिहल गइल बा!", - "changepassword-throttled": "रउआ हाले में कईयन बार खाता में प्रवेश करे के कोशिश कर चुकल बानी।\nकृपया $1 प्रतिक्षा करला के बाद फिर से प्रयास करब।", + "changepassword-success": "राउर गुप्तशब्द बदल दिहल गइल बा!", + "changepassword-throttled": "रउआँ हाले में कइयन बेर खाता में प्रवेश करे के कोसिस क चुकल बानी।\nकृपया $1 इंतजार के बाद फिर से कोसिस करब।", "botpasswords": "बॉट पासवर्ड", + "botpasswords-summary": "<em>बॉट पासवर्ड</em> खाता के मुख्य प्रवेश-पहिचान-जानकारी के बिना, सीधे एपीआई के माध्यम से खाता ले पहुँच देवे लें। बॉट पासवर्ड दे के खाता में प्रवेश के बाद खाता के प्रयोगकर्ता अधिकार कुछ सीमित हो सकेला।\n\nअगर आपके ई नइखे मालूम कि ई करे के आपके का जरूरत बा, साइद आपके ई ना करे के चाहीं। केहू भी रउवाँ से कबो ई पासवर्ड जनरेट करे के ना कही न आपसे ई पासवर्ड माँगी।", "botpasswords-disabled": "बॉट पासवर्ड अक्षम कइल गइल बा।", "botpasswords-no-central-id": "बॉट पासवर्ड के प्रयोग करे खातिर आपके सेंट्रलाइज्ड खाता से लॉगिन होखल जरूरी बा।", "botpasswords-existing": "मौजूद बॉट पासवर्ड", @@ -541,46 +536,54 @@ "botpasswords-deleted-title": "बॉट पासवर्ड मिटावल गइल", "botpasswords-deleted-body": "प्रयोगकर्ता \"$2\" के बॉट नाँव \"$1\" खातिर बॉट पासवर्ड मिटावल गइल।", "resetpass_forbidden": "गुप्तशब्द बदलल नइखे जा सकत", - "resetpass-no-info": "इ पन्ना के सिधे प्रयोग करे खातिर रउआ पहिले खाता में प्रवेश करे के पड़ी।", - "resetpass-submit-loggedin": "गुप्त शब्द बदलीं", + "resetpass_forbidden-reason": "गुप्तशब्द बदलल नइखे जा सकत:$1", + "resetpass-no-info": "इ पन्ना के सिधे प्रयोग करे खातिर रउआँ के पहिले खाता में प्रवेश करे के पड़ी।", + "resetpass-submit-loggedin": "गुप्तशब्द बदलीं", "resetpass-submit-cancel": "रद्द करीं", - "resetpass-wrong-oldpass": "अवैद्य अस्थायी या वर्तमान गुप्तशब्द।\nरउआ पहिले हिं सफलतापूर्वक आपन गुप्तशब्द बदल चुकल बानी, या रउआ एगो अस्थायी गुप्तशब्द के अनुरोध कइले होखब।", + "resetpass-wrong-oldpass": "अबैध अस्थायी या वर्तमान गुप्तशब्द।\nरउआ पहिलहीं आपन गुप्तशब्द बदल चुकल बानी, या रउआ एगो अस्थायी गुप्तशब्द के अनुरोध कइले हो सकत बानी।", "resetpass-recycled": "रीसेट करे खातिर नया पासवर्ड में कृपया आपन वर्तमान पासवर्ड के अलावा कौनो अन्य पासवर्ड के प्रयोग करीं।", - "resetpass-temp-emailed": "अस्थाई ईमेल कोड के द्वारा रउआ लॉग इन भइल बानी।\nलॉग इन पूरा करे खातिर, रउआ एगो नया पासवर्ड सेट करे के पड़ी:", + "resetpass-temp-emailed": "अस्थाई ईमेल कोड के द्वारा रउआ खाता में प्रवेश कइले बानी।\nखाता में प्रवेश पूरा करे खातिर एगो नया गुप्तशब्द सेट करे के पड़ी:", "resetpass-temp-password": "अस्थायी गुप्तशब्द:", - "resetpass-abort-generic": "कउनो एक्सटेंशन द्वारा गुप्तशब्द में बदलाव रोक दिहल गईल बा।", - "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-disabled": "इ विकी पर पासवर्ड पुनर्स्थापन अक्षम बा।", - "passwordreset-emaildisabled": "इ विकि पर ई-मेल सुविधा अक्षम कर दिहल गईल बा।", - "passwordreset-username": "प्रयोगकर्ता नाम", + "resetpass-abort-generic": "कउनो एक्सटेंशन द्वारा गुप्तशब्द में बदलाव रोक दिहल गइल बा।", + "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-disabled": "ए विकि पर गुप्तशब्द बदलल अक्षम कइल गइल बा।", + "passwordreset-emaildisabled": "ए विकि पर ईमेल सुबिधा अक्षम कइल गइल बा।", + "passwordreset-username": "प्रयोगकर्तानाँव:", "passwordreset-domain": "डोमेन:", - "passwordreset-email": "ई-मेल पता:", + "passwordreset-email": "ईमेल पता:", "passwordreset-emailtitle": "{{SITENAME}} पर खाता विवरण", - "passwordreset-emailtext-ip": "केहु (शायद रउए, $1 आइ॰पी पता से) {{SITENAME}} ($4) पर आपन {{PLURAL:$3|गुप्तशब्द}} के रीसेट करे के अनुरोध कईले बानी। इ ई-मेल पता से निम्न {{PLURAL:$3|खाता जुड़ल बा}}:\n\n$2\n\n{{PLURAL:$3|इ}} अस्थायी गुप्तशब्द {{PLURAL:$5|एक दिन|$5 दिन}} के बाद काम ना करी। रउआ खाता में प्रवेश करकà¥‡ एगो नया गुप्तशब्द अभी चुन लेवे के चाहीं। यदि इ अनुरोध केहु अउर कइले बा, या फिर रउआ आपन मूल गुप्तशब्द याद आ गईल बा, अउर आप {{PLURAL:$3|आपन}} गुप्तशब्द नइखी बदले के चाहत त, रउआ इ संदेश के अनदेखा कर के आपन पुरानका गुप्तशब्द के प्रयोग जारी रख सकत बानी।", - "passwordreset-emailtext-user": "{{SITENAME}} ($4) पर सदस्य $1 राउर {{PLURAL:$3|खाता}} के गुप्तशब्द के पुनर्स्थापित करे के अनुरोध कइले बानी। इ ई-मेल पता से निम्न {{PLURAL:$3|खाता जुड़ल बा}}:\n\n$2\n\n{{PLURAL:$3|इ}} अस्थायी गुप्तशब्द {{PLURAL:$5|एक दिन|$5 दिन}} के बाद काम ना करी।\nरउआ खाता में प्रवेश करके एगो नया गुप्तशब्द अभीये चुन लेवे के चाहीं। यदि इ अनुरोध केहु अउर कइले बा, या फिर रउआ आपन मूल गुप्तशब्द याद आ गईल बा, अउर रउआ {{PLURAL:$3|आपन}} गुप्तशब्द नईखीं बदले के चाहत त, रउआ इ संदेश के अनदेखा कर के आपन पुरनका गुप्तशब्द के प्रयोग जारी रख सकत बानीं।", - "passwordreset-emailelement": "सदस्यनाम: \n$1\n\nअस्थायी गुप्तशब्द: \n$2", - "passwordreset-emailsentemail": "एगो गुप्तशब्द रिसेट ई-मेल भेजल जा चुकल बा।", + "passwordreset-emailtext-ip": "केहु (शायद रउए, $1 आइपी पता से) {{SITENAME}} ($4) पर आपन {{PLURAL:$3|गुप्तशब्द}} के रीसेट करे के अनुरोध कइले बा। ए ईमेल पता से नीचे दिहल {{PLURAL:$3|खाता जुड़ल बा}}:\n\n$2\n\n{{PLURAL:$3|इ}} अस्थायी गुप्तशब्द {{PLURAL:$5|एक दिन|$5 दिन}} के बाद काम ना करी। रउआँ के खाता में प्रवेश क के एगो नया गुप्तशब्द अब्बे चुन लेवे के चाहीं। यदि ई अनुरोध केहु अउर कइले बा, या फिर रउआँ के आपन मूल गुप्तशब्द इयाद आ गइल बा, आ आप {{PLURAL:$3|आपन}} गुप्तशब्द नइखीं बदलल चाहत त ए सनेसा के अनदेखा क के आपन पुरानका गुप्तशब्द के प्रयोग जारी रख सकत बानी।", + "passwordreset-emailtext-user": "{{SITENAME}} ($4) पर सदस्य $1 राउर {{PLURAL:$3|खाता}} के गुप्तशब्द के पुनर्स्थापित करे के अनुरोध कइले बानी। ए ईमेल पता से नीचे दिहल {{PLURAL:$3|खाता जुड़ल बा}}:\n\n$2\n\n{{PLURAL:$3|इ}} अस्थायी गुप्तशब्द {{PLURAL:$5|एक दिन|$5 दिन}} के बाद काम ना करी।\nरउआँ के खाता में प्रवेश करके एगो नया गुप्तशब्द अब्बे चुन लेवे के चाहीं। यदि ई अनुरोध केहु अउर कइले बा, या फिर रउआँ के आपन मूल गुप्तशब्द इयाद आ गइल बा, आ रउआँ {{PLURAL:$3|आपन}} गुप्तशब्द नइखीं बदलल चाहत त ए सनेसा के अनदेखा क के आपन पुरनका गुप्तशब्द के प्रयोग जारी रख सकत बानीं।", + "passwordreset-emailelement": "प्रयोगकर्तानाँव: \n$1\n\nअस्थायी गुप्तशब्द: \n$2", + "passwordreset-emailsentemail": "अगर दिहल गइल ईमेल पता आपके खाता के साथ जुड़ल होखी, गुप्तशब्द दुबारा सेट करे खातिर एक ठो ईमेल भेज दिहल जाई।", + "passwordreset-emailsentusername": "अगर एह प्रयोगकर्तानाँव के साथ कौनों ईमेल जुड़ल होखी, गुप्तशब्द बदले खातिर एक ठो ईमेल भेज दिहल जाई।", + "passwordreset-nocaller": "एक ठो काल करे वाला दिहल जरूरी बाटे", + "passwordreset-nosuchcaller": "काल करे वाला मौजूद नइखे:$1", + "passwordreset-ignored": "गुप्तशब्द दुबारा सेट कइले के हैंडिल ना कइल गइल। शाइत केहू उपलब्ध करावे वाला ना बुझाइल?", "passwordreset-invalidemail": "अवैध ईमेल पता", - "changeemail": "ई-मेल पता बदलीं", - "changeemail-header": "खाता के ई-मेल पता बदलीं", + "passwordreset-nodata": "प्रयोगकर्ता नाँव या ई मेल कुच्छू ना दिहल गइल रहल", + "changeemail": "ईमेल पता बदलीं या हटाईं", + "changeemail-header": "आपन ईमेल पता बदले खातिर ई फार्म भरीं। अगर आप अपना खाता से जुड़ल ईमेल हटावल चाहत बानी, तब नया ईमेल वाला बिकल्प के फार्म में खाली छोड़ देईं।", "changeemail-no-info": "इ पन्ना के सिधे प्रयोग करे खातिर रउआ पहिले खाता में प्रवेश करे के पड़ी।", "changeemail-oldemail": "वर्तमान ई-मेल पता:", - "changeemail-newemail": "नया ई-मेल पता:", - "changeemail-none": "(कउनो नाहीं)", + "changeemail-newemail": "नया ईमेल पता:", + "changeemail-newemail-help": "ई बिकल्प के खाली तबे छोड़ल जाय जब आप आपन ईमेल खाता से हटावल चाहत होखीं। एकरा बाद आपन भुलाइल पासवर्ड बदले खातिर ईमेल ना माँग पाइब, न एह विकि से कौनों ईमेल आपके भेजल जा पाई अगर आप आपन ईमेल पता इहाँ से हटा देइब।", + "changeemail-none": "(कौनो ना)", "changeemail-password": "राउर {{SITENAME}} गुप्तशब्द:", - "changeemail-submit": "ई-मेल बदलीं", - "changeemail-throttled": "रउआ हाले में कईयन बार खाता में प्रवेश करे के कोशिश कर चुकल बानी।\nकृपया $1 प्रतिक्षा करला के बाद फिर से प्रयास करब।", + "changeemail-submit": "ईमेल बदलीं", + "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)", - "resettokens-watchlist-token": "[[Special:Watchlist|आपके ध्यानसूची के पन्नन में बदलावसभ]] के वेब फ़ीड (Atom/RSS) हेतु टोकन", + "resettokens-token-label": "$1 (वर्तमान वैल्यू: $2)", + "resettokens-watchlist-token": "[[Special:Watchlist|आपके धियानसूची के पन्नन में बदलावसभ]] के वेब फीड (एटम/आरऍसऍस) खातिर टोकन", "resettokens-done": "टोकन रीसेट हो चुकल बा।", "resettokens-resetbutton": "चुनल गइल टोकन रीसेट करीं", "bold_sample": "मोट अच्छर में", @@ -601,7 +604,7 @@ "media_tip": "फाइल कड़ी", "sig_tip": "समय मोहर की संघे राउर दस्खत", "hr_tip": "पड़ी लकीर (कम प्रयोग करीं)", - "summary": "छोट विवरण (सारांश):", + "summary": "सारांश:", "subject": "बिसय:", "minoredit": "छोट परिवर्तन", "watchthis": "धियानसूची में डालीं", @@ -609,22 +612,23 @@ "savechanges": "बदलाव सहेजीं", "publishpage": "पन्ना प्रकाशित करीं", "publishchanges": "बदलाव प्रकाशित करीं", - "preview": "पूर्वावलोकन", + "preview": "झलक", "showpreview": "झलक देखीं", "showdiff": "बदलाव देखीं", - "blankarticle": "<strong>चेतावनी:</strong> आप एगो खाली पन्ना के बनावे जा रहल बानी।\nयदि आप \"{{int:savearticle}}\" के फेर से दबायेब त पन्ना बिना कउनो सामग्री के बन जाई।", - "anoneditwarning": "<strong>चेतावनी:</strong> रउआ आपन खाता में प्रवेश नइखीं कइले। अगर रउआ कौनों बदलाव करत बानी त राउर आईपी पता दर्ज होई। अगर रउआ <strong>[$1 लॉग इन]</strong> या <strong>[$2 नया खाता बनाइब]</strong> त, अउरी सुबिधा सब की संघे राउर संपादन के श्रेय भी राउर सदस्य-नाँव से जुड़ जाई!", - "anonpreviewwarning": "''रउआ खाता में प्रवेश नईखीं भईल। सुरक्षित करेब त ई पन्ना के सम्पादन इतिहास पर राउर आई पी पता दर्ज हो जाई।\"", - "missingsummary": "'''स्मरणपत्र:'''रउआ एगो सारांश के सम्पादन नईखीं प्रदान कईले। अगर रउआ \"फिर से सुरक्षित करीं\" पर क्लिक करेब, त राउर सम्पादन बिना एगो सारांश के सुरक्षित हो जाई।", - "selfredirect": "<strong>चेतावनी:</strong> आप खुद के इ पन्ना पर पुनः निर्देशित कर रहल बानी।\nआप अनुप्रेषित खातिर गलत लक्ष्य निर्दिष्ट हो सकत बानी, या आप के द्वारा गलत पन्ना के संपादन हो सकत बा।\nआप यदि फेर से \"{{int:savearticle}}\" क्लिक करत बानी त, पुन: निर्देषण ओइसहु बनावल जाई।", - "missingcommenttext": "कृपया निचे एगो टिप्पणी करीं।", + "blankarticle": "<strong>चेतावनी:</strong> आप एगो खाली पन्ना बनावे जा रहल बानी।\nयदि आप \"{{int:savearticle}}\" के फेर से दबायेब त पन्ना बिना कउनो सामग्री के बन जाई।", + "anoneditwarning": "<strong>चेतावनी:</strong> रउआँ आपन खाता में प्रवेश नइखीं कइले। अगर रउआँ कौनों बदलाव करब त राउर आईपी पता सभके लउकी। अगर रउआ <strong>[$1 खाता में प्रवेश करब]</strong> या <strong>[$2 नया खाता बनाइब]</strong> त, अउरी सुबिधा सब की संघे राउर संपादन के श्रेय भी राउर प्रयोगकर्तानाँव के मिली!", + "anonpreviewwarning": "''रउआँ खाता में प्रवेश नइखीं भइल। सहेजब तब ए पन्ना के संपादन इतिहास में राउर आईपी पता दर्ज हो जाई।\"", + "missingsummary": "'''याद दियावल जात बा:'''रउआँ एगो संपादन सारांश नइखीं दिहले। अगर फिर \"{{int:savearticle}}\" पर क्लिक करब, त राउर संपादन एकरे बिना सहेजा जाई।", + "selfredirect": "<strong>चेतावनी:</strong> आप ई पन्ना के खुदे एही पर अनुप्रेषण क रहल बानी।\nया त आप अनुप्रेषण खातिर गलत लक्ष्य देत बानी, या आप गलत पन्ना के संपादन करत बानी।\nएक बेर अउरी \"{{int:savearticle}}\" क्लिक करब त, ओइसहूँ ई अनुप्रेषण बना दिहल जाई।", + "missingcommenttext": "नीचे एगो टिप्पणी भरीं।", "missingcommentheader": "'''याद दियावल जात बा:''' रउआँ एह कमेंट खातिर कौनों बिसय नइखीं दिहले। अगर आप \"{{int:savearticle}}\" पर क्लिक करब तब राउर संपादन एकरे बिना सहेजा जाई।", - "summary-preview": "सारांश पूर्वावलोकन:", + "summary-preview": "संपादन सारांश क झलक:", "subject-preview": "बिसय के झलक:", - "previewerrortext": "जब आप आपन बदलाव के पुर्वावलोकन देखे खातिर प्रयास कइनी ह तवने घड़ी एगो त्रुटी उत्पन्न हो गइल बा।", - "blockedtitle": "निष्क्रिय प्रयोगकर्ता", + "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 ह अउर अवरोध क्रमांक #$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:<em>$2</em>\n\n* रोक के सुरुआत: $8\n* रोक समाप्त होखी: $6\n* रोक लगावे वाला: $7\n\nराउर वर्तमान आइपी पता $3 बा।\nअगर कौनों सवाल करीं तब ऊपर बतावल सगरी जानकारी देईं।", "blockednoreason": "कउनो कारण उल्लेखित नईखे", "whitelistedittext": "रउआ पन्ना सम्पादन करे खातिर $1 करे के पड़ी।", "confirmedittext": "संपादन करे से पहिले आपके अापना ई-मेल पता प्रमाणित करावल जरुरी बा।\nकृपया आपन [[Special:Preferences|राउर पसन्द]] में जाके अापन ई-मेल पता दिहीं अउर उके प्रमाणित करीं।", @@ -637,14 +641,14 @@ "accmailtext": "[[User talk:$1|$1]] खातिर एगो यंत्र जनित गुप्तशब्द $2 के भेज दिहल गइल बा। खाता में प्रवेश कइला के बाद इ '''[[Special:ChangePassword|गुप्तशब्द बदल लीं]]'' वाला पन्ना पर बदलल जा सकत बा।", "newarticle": "(नया)", "newarticletext": "रउआ एगो अइसन कड़ी के पन्ना के अनुसरण कइले बानी जवन अभी तक उपलब्ध नइखे।\nपन्ना बनावे खातिर, नीचे के बाकस में टाइप करे के शुरु करीं (ज्यादा जानकारी खातिर देखीं [$1 मदद पन्ना])।\nयदि रउआ अहिजा गलती से आ गइल बानी त, आपन ब्राउजर के '''बैक''' (Back) बटन दबाईं!", - "anontalkpagetext": "----''इ वार्ता पन्ना उन अनाम सदस्यन खातिर बा जिन्हन के या त खाता नइखे खोलल गइल या खाता के प्रयोग नइखन करत।\nएहि खातिर उन्हन के पहिचान खातिर हमनी के उनकर आइ॰पी पता के प्रयोग करे के पड़ेला।\nआइ॰पी पता कई सदस्यन खातिर साझा हो सकत बा।\nयदि आप एगो अनाम सदस्य बानी अउर आपके लागत बा कि आपके बारे में अप्रासंगिक टीका टिप्पणी करल गइल बा त कृपया [[Special:CreateAccount|सदस्यता लिहीं]] या [[Special:UserLogin|सत्रारंभ करीं]] ताकि अन्य अनाम सदस्यन में से आपके अलग से पहिचानल जा सके।''", + "anontalkpagetext": "----\n<em>ई अइसन बेनाम प्रयोगकर्ता के बातचीत पन्ना बा जे या त अभी खाता नइखे बनवले या खाता के इस्तेमाल नइखे करत।</em>\nएही कारन ओह ब्यक्ति के पहिचान खातिर ई अंक वाला आइपी पता इस्तेमाल करे के परत बा।\nअइसन आइपी पता कई लोग के सझिया भी हो सकत बा।\nअगर आप बेनाम प्रयोगकर्ता बानी आ ई बुझाता कि कौनों बिना बात के कमेंट आपके ओर बा, [[Special:CreateAccount|खाता बनाईं]] या [[Special:UserLogin|लॉग इन]] करीं जेवना से भबिस्य में केहू रउवाँ पर केहू दूसर बेनाम प्रयोगकर्ता होखे के भरम न होखे।", "noarticletext": "ए पन्ना मे अभी कौनों सामग्री नइखे।\nरउआँ दुसरा पन्ना में [[Special:Search/{{PAGENAME}}|ए टाइटिल के खोज]] कर सकत बानीं,\nया <span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} या संबंधित लॉग खोज सकत बानी]</span>, बाकी रउआ के ई पन्ना बनावे के परमीशन नइखे।", "noarticletext-nopermission": "ए पन्ना मे अभी कौनों सामग्री नइखे।\nरउआँ दुसरा पन्ना में [[Special:Search/{{PAGENAME}}|ए टाइटिल के खोज]] कर सकत बानीं,\nया <span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} या संबंधित लॉग खोज सकत बानी]</span>, बाकी रउआ के ई पन्ना बनावे के परमीशन नइखे।", "missing-revision": "\"{{FULLPAGENAME}}\" पन्ना के संशोधन #$1 उपलब्ध नइखे।\n\nसाधारण रुप से इ एगो हटावल गइल पन्ना के पुरान लिंक पर क्लिक कइला से होखेला।\nअधिक जानकारी खातिर आप [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} हटावे के लॉग] देख सकत बानी।", "userpage-userdoesnotexist": "सदस्य खाता \"$1\" पंजीकृत नइखे।\nकृपया जाँच लीं कि आप इ पन्ना संपादित अथवा निर्मित करे के चाहत बानी कि ना।", "userpage-userdoesnotexist-view": "सदस्य खाता \"$1\" पंजीकृत नईखे भईल।", "blocked-notice-logextract": "ई प्रयोगकर्ता के ई समय निष्क्रीय कर दिहल गईल बा।\nनविनतम नष्ट लौग प्रविष्टी उद्धरण खातिर निचे दिहल बा:", - "clearyourcache": "'''ध्यान दिं:''' पन्ना सुरक्षित कइला के बाद बदलाव देखे खातिर आपके आपन ब्राउज़र के कैश खाली करे के पड़ सकत बा।\n* '''फ़ायरफ़ॉक्स / सफ़ारी:''' ''Reload'' (रीलोड) दबाते समय ''Shift'' (शिफ़्ट) दबा के रखीं, या फिर ''Ctrl-F5'' (कंट्रोल-F5) या ''Ctrl-R'' (कंट्रोल-R) दबाईं (मैक पर ''⌘-R'')\n* '''गूगल क्रोम:''' ''Ctrl-Shift-R'' (कंट्रोल-शिफ़्ट-R) दबाईं (मैक पर ''⌘-Shift-R'')\n* '''इन्टर्नेट एक्सप्लोरर:''' ''Ctrl'' (कंट्रोल) दबाके ''Refresh'' (रिफ़्रेश) करीं या ''Ctrl-F5'' (कंट्रोल-F5) दबाईं\n* '''ऑपेरा:''' ''Tools → Preferences'' (उपकरण → पसन्द) में कैश साफ़ करीं", + "clearyourcache": "<strong>नोट:</strong> सहेजे के बाद, बदलाव देखे खातिर आपके अपने ब्राउजर के कैशे खाली करे के पड़ सकत बा।\n* <strong>फायरफॉक्स / सफारी:</strong><em>शिफ्ट</em> दबा के <em>रीलोड</em> पर क्लिक करीं, या फिर <em>Ctrl-F5</em> या <em>Ctrl-R</em> दबाईं (मैक पर <em>⌘-R</em>)\n* <strong>गूगल क्रोम:</strong> <em>Ctrl-Shift-R</em> दबाईं (मैक पर <em>⌘-Shift-R</em>)\n* <strong>इंटरनेट एक्स्प्लोरर:</strong> <em>Ctrl</em> दबा के <em>Refresh</em> पर क्लिक करीं, या <em>Ctrl-F5</em> दबईं\n* <strong>ओपेरा:</strong> <em>Menu → Settings</em> में जाईं (मैक में <em>Opera → Preferences</em>) आ एकरे बाद <em>Privacy & security → Clear browsing data → Cached images and files</em> क्लिक करीं।", "usercssyoucanpreview": "<strong>टिप:</strong> आपन नया CSS के टेस्ट करे खातिर सहेजे से पहिले \"{{int:showpreview}}\" बटन के प्रयोग करीं।", "userjsyoucanpreview": "<strong>टिप:</strong> आपन नया जावास्क्रिप्ट के टेस्ट करे खातिर सहेजे से पहिले \"{{int:showpreview}}\" बटन के प्रयोग करीं।", "usercsspreview": "<strong>याद रहे की आप अपनी सदस्य CSS के खाली नमूना भर देखत बानी।\nई अबहिन ले सहेजल ना गइल बाटे।</strong>", @@ -658,7 +662,7 @@ "continue-editing": "संपादन क्षेत्र में जाईं", "previewconflict": "ई नमूना ई देखावत बा की अगर रउआँ ए संपादन बक्सा में मौजूद पाठ के सहेजब त ऊ कइसन देखाई पड़ी।", "session_fail_preview": "माफ करीं! एह सत्र के आँकड़ा के गायब हो गइला के कारण आपके संपादन के प्रॉसेस करे में हमनी के असमर्थ बानी जा।\nहो सकेला आप लॉगआउट हो गइल होखीं।\n<strong>जाँच लेईं कि आप अभी लॉगिन बानी आ दुबारा कोसिस करीं</strong>।\nअगर तबो काम ना होखे तब [[Special:UserLogout|लॉगआउट कइके]] आ दोबारा लॉग इन कइ के कोसिस करी, आ जाँच करीं कि आपके ब्राउजर एह साइट से कुकीज सभ के मंजूर करत बा।", - "session_fail_preview_html": "<strong>माफ करीं! सत्र आँकड़ा के गायब होखला की कारन आपके संपादन सहेजल नइखे जा सकत।</strong>\n\n<em>चूँकि, {{SITENAME}} में मूल HTML सक्षम कइल बाटे, जावास्क्रिप्ट हमला से बचाव की खातिर नमूना देखावे के छिपावल गइल बा।</em>\n\n<strong>अगर ई एगो वैध संपादन बाटे तब एक बेर फिर से कोसिस करीं।</strong>\nअगर तबो पर काम नइखे हो पावत त [[Special:UserLogout|लॉग आउट करीं]] आ दुबारा लॉगिन क के कोसिस करीं।", + "session_fail_preview_html": "<strong>माफ करीं! सत्र आँकड़ा के गायब होखला की कारन आपके संपादन सहेजल नइखे जा सकत।</strong>\n\n<em>चूँकि, {{SITENAME}} में मूल HTML सक्षम कइल बाटे, जावास्क्रिप्ट हमला से बचाव खातिर झलक छिपावल गइल बा।</em>\n\n<strong>अगर ई एगो वैध संपादन बाटे तब एक बेर फिर से कोसिस करीं।</strong>\nअगर तबो पर काम नइखे हो पावत त [[Special:UserLogout|लॉग आउट करीं]] आ दुबारा लॉगिन क के कोसिस करीं, आ ईहो जाँच लेईं की आपके ब्राउजर एह साइट से कुकी सभ के एलाऊ करत बा कि ना।", "token_suffix_mismatch": "<strong>राउर संपादन रिजेक्ट कइल जात बा काहें से की राउर क्लायंट संपादन टोकन में विराम चीन्हा सब से गड़बड़ क दिहले बा।</strong>\nपन्ना के पाठ के तहस-नहस होखे से बचावे खाती ई संपादन रिजेक्ट कइल गइल बा।\nकबो-कबो अइसन एहू दसा में हो सकेला जब आप खराबी-युक्त वेबआधारित बेनाम प्रॉक्सी सर्वर के इस्तेमाल करत होखीं।", "edit_form_incomplete": "<strong>संपादन के कुछ हिस्सा सर्वर ले ना पहुँच पावल ह; दोहरा के चेक करीं की राउर संपादन बदलल न होखे आ एक बेर फिर से सहेजे के कोसिस करीं।</strong>", "editing": "$1 संपादन", @@ -676,7 +680,7 @@ "copyrightwarning2": "ई नोट कर लीं कि {{SITENAME}} पर सगरी योगदान के दुसरा योगदानकर्ता लोगन द्वारा संपादित कइल जा सकेला, बदलल या हटावल जा सकेला।\nअगर आप ई नइखीं चाहत की राउर लिखल चीज के केहू भी बे-मोहछोह के संपादित क दे, तब ए के इहाँ मत डालीं।<br />\nरउआँ इहो वादा करत बानी की आप ई खुद लिखले बानी या फिर पब्लिक पहुँच में मौजूद या अइसने कौनों फ्री स्रोत से नकल कइले बानी (ढेर जानकारी खातिर $1 देखीं)।\n<strong>बिना परमीशन के कॉपीराइट वाली चीज इहाँ कब्बो मत डालीं!</strong>", "editpage-cannot-use-custom-model": "ए पन्ना के सामग्री के मॉडल के ना बदलल जा सकत बा।", "longpageerror": "<strong>खराबी: आप जवन पाठ लिख के दिहले बानी ऊ {{PLURAL:$1|एक किलोबाइट|$1 किलोबाइट्स}} के बाटे, जेवन अधिकतम सीमा {{PLURAL:$2|एक किलोबाइट|$2 किलोबाइट्स}} से ढेर बा।</strong>\nई सहेजल ना जा सकेला।", - "readonlywarning": "<strong>चेतावनी: डेटाबेस ए समय मरम्मत खातिर लॉक कइल गइल बा, आ एही कारण आप तुरंते एही समय आपन सम्पादन ना सहेज पाइब।</strong>\nरउआँ अपनी पाठ (text) के कौनों पाठ फाइल (text file) में बाद खातिर सहेज के रख लीं।\n\nजे एडमिनिस्ट्रेटर एकरा के लॉक कइले बा ऊ नीचे लिखल कारण दिहले बा: $1", + "readonlywarning": "<strong>चेतावनी: एह समय मरम्मत खातिर डेटाबेस लॉक कइल गइल बा, एही कारन आप तुरंते एही समय आपन संपादन ना सहेज पाइब।</strong>\nरउआँ अपनी पाठ (टेक्स्ट) के कौनों पाठ फाइल (टेक्स्ट फाइल) में बाद खातिर सहेज के रख लीं।\n\nजे सिस्टम प्रबंधक एकरा के लॉक कइले बा ऊ नीचे लिखल कारण दिहले बा: $1", "protectedpagewarning": "<strong>चेतावनी: ई पन्ना सुरक्षित कइल गइल बा जेवना से कि एकरा के खाली प्रबंधक (Admin) विशेषाधिकार वाला सदस्य लोग संपादित क सकत बा।</strong>\nप्रसंग बूझे खातिर सबसे नया लॉग एंट्री नीचे दिहल जात बा:", "semiprotectedpagewarning": "<strong>नोट:</strong> ई पन्ना सुरक्षित कइल गइल बा कि एकरा के खाली रजिस्टर्ड सदस्य लोग संपादित क सकत बा।\nसभसे नया लॉग एंट्री नीचे प्रसंग बतावे खातिर दिहल जात बा:", "cascadeprotectedwarning": "<strong>चेतावनी:</strong> ई पन्ना सुरक्षित क दिहल गइल बा कि एकरा के खाली प्रबंधक (Admin) विशेषाधिकार वाला सदस्य लोग संपादित क सकेला काहें से की ई नीचे दिहल बिस्तारित(कैस्केडिंग)-सुरक्षा वाला {{PLURAL:$1|पन्ना|पन्नवन}} में समाइल बाटे:", @@ -849,28 +853,32 @@ "mergehistory-empty": "कौनों अवतरण विलय नइखे कइल जा सकत।", "mergehistory-done": " $1 के $3 {{PLURAL:$3|अवतरण|अवतरण सभ}} सफलता से [[:$2]] में विलय भइल।", "mergehistory-fail": "इतिहास विलय करे में अक्षम, पन्ना आ एकर टाइम पैरामीटर चेक करीं।", + "mergehistory-autocomment": "[[:$1]] के [[:$2]] में विलय कइल गइल", + "mergehistory-comment": "[[:$1]] के [[:$2]] में विलय कइल गइल: $3", + "mergehistory-same-destination": "स्रोत आ लक्ष्य पन्ना एकही ना होखे सकत बा", "mergehistory-reason": "कारण:", + "mergelog": "विलय लॉग", "revertmerge": "अलग करीं", "mergelogpagetext": "एक पन्ना इतिहास के दुसर पन्ना इतिहास में तुरंत विलय भइले के एगो सूची नीचे दिहल बा।", "history-title": "''$1'' के संशोधन इतिहास", "difference-title": "\"$1\" की अवतरण में अंतर", "lineno": "लाइन $1:", - "compareselectedversions": "चुनल गईल संशोधन में अन्तर देखीं", - "showhideselectedversions": "चुनल गईल संशोधन दिखाईं/छुपाईं", + "compareselectedversions": "चुनल गइल संशोधन में अंतर देखीं", + "showhideselectedversions": "चुनल गइल संशोधन के दृश्यता बदलीं", "editundo": "वापस लीं", - "diff-multi-sameuser": "(एही सदस्य द्वारा कइल {{PLURAL:$1|बीच के एगो बदलाव|$1 बीच के बदलाव सब}} नइखे देखावल जात)", + "diff-multi-sameuser": "(एही सदस्य द्वारा कइल {{PLURAL:$1|बीच के एगो बदलाव|बीच के $1 बदलाव}} नइखे देखावल जात)", "searchresults": "खोज परिणाम", "searchresults-title": "$1 खातिर खोज परिणाम", - "titlematches": "पन्ना के शिर्षक मिलत बा।", - "textmatches": "पन्ना के पाठ्य मिलत बा", - "notextmatches": "पन्ना के पाठ्य नईखे मिलत", + "titlematches": "पन्ना टाइटिल मिलान", + "textmatches": "पन्ना पाठ मिलान", + "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|परिणाम}} देखाईं", + "shown-title": "प्रति पन्ना $1 {{PLURAL:$1|परिणाम}} देखाईं", "viewprevnext": "देखीं ($1 {{int:pipe-separator}} $2) ($3)", "searchmenu-exists": "'''इ विकि पर ''[[:$1]]'' नाम से एगो पन्ना उपलब्ध बा'''", "searchmenu-new": "<strong> ए विकि पर \"[[:$1]]\" नाँव के पन्ना बनाईं !</strong> {{PLURAL:$2|0=|अपनी खोज से मिलल पन्ना भी देखीं|खोज के परिणाम भी देखीं।}}", @@ -909,8 +917,8 @@ "skin-preview": "पूर्वावलोकन", "datedefault": "वरीयता नईखे", "prefs-user-pages": "सदस्य पन्ना", - "prefs-personal": "सदस्य प्रोफाईल", - "prefs-rc": "तुरंत भइल परिवर्तन", + "prefs-personal": "प्रयोगकर्ता प्रोफाइल", + "prefs-rc": "हाल के बदलाव", "prefs-watchlist": "धियानसूची", "prefs-editwatchlist": "धियानसूची संपादन", "prefs-editwatchlist-label": "अपनी धियानसूची के चीज संपादित करीं:", @@ -922,19 +930,17 @@ "prefs-watchlist-edits": "बिस्तारित धियानसूची में देखावे खातिर अधिकतम बदलाव संख्या:", "prefs-watchlist-edits-max": "अधिकतम संख्या:1000", "prefs-watchlist-token": "धियानसूची टोकन:", - "prefs-misc": "अउरी कुल", - "prefs-resetpass": "पासवर्ड बदलीं", + "prefs-misc": "बिबिध", + "prefs-resetpass": "गुप्तशब्द बदलीं", "prefs-changeemail": "ईमेल पता बदलीं", "prefs-setemail": "ईमेल पता सेट करीं", "prefs-email": "ईमेल बिकल्प", "prefs-rendering": "रंगरूप", - "saveprefs": "सुरक्षित करीं", + "saveprefs": "सहेजीं", "restoreprefs": "सगरी डिफाल्ट सेटिंग पहिले जइसन करीं (सगरी खंड में)", "prefs-editing": "संपादन", - "rows": "रो कुल:", - "columns": "कालम कुल:", "searchresultshead": "खोज", - "stub-threshold-disabled": "निरस्त", + "stub-threshold-disabled": "अक्षम", "recentchangesdays": "हाल में भइल परिवर्तन में देखावे खातिर दिन:", "recentchangesdays-max": "अधिकतम $1{{PLURAL:$1|दिन}}", "recentchangescount": "डिफाल्ट में देखावे खातिर संपादन संख्या:", @@ -967,6 +973,7 @@ "prefs-reset-intro": "रउआँ आपन पसंद बदल के डिफाल्ट करे खातिर ए पन्ना के इस्तेमाल नइखीं कर सकत।\n\nई फिर से वापस ना हो पाई।", "prefs-emailconfirm-label": "ईमेल जाँच:", "youremail": "ईमेल:", + "username": "{{GENDER:$1|प्रयोगकर्तानाँव}}:", "prefs-registration": "रजिस्ट्रेशन के समय:", "yourrealname": "असली नाम", "yourlanguage": "भाषा:", @@ -994,6 +1001,12 @@ "prefs-tokenwatchlist": "टोकन", "prefs-diffs": "अंतर", "prefs-help-prefershttps": "राउर ई पसंद के सेटिंग अगिला बेर लॉग इन कइले पर लागू होई।", + "userrights": "प्रयोगकर्ता अधिकार मैनेजमेंट", + "userrights-lookup-user": "प्रयोगकर्ता चुनीं", + "userrights-user-editname": "प्रयोगकर्ता नाँव लिखीं:", + "editusergroup": "प्रयोगकर्ता मंडली लोड करीं", + "editinguser": "अधिकार बदलाव {{GENDER:$1|प्रयोगकर्ता}}<strong>[[User:$1|$1]]</strong> $2", + "userrights-reason": "कारण:", "group": "मंडली (ग्रुप):", "group-user": "सदस्य", "group-autoconfirmed": "खुद परीक्षित सदस्य", @@ -1321,7 +1334,7 @@ "listusers-desc": "घटत क्रम से सरियाईं", "usereditcount": "$1 {{PLURAL:$1|संपादन|संपादन सभ}}", "newpages": "नया पन्ना", - "newpages-username": "सदस्यनाँव:", + "newpages-username": "प्रयोगकर्तानाँव:", "ancientpages": "पुरान पन्ना", "move": "स्थानांतरण", "movethispage": "एह पन्ना के स्थानांतरण करीं", @@ -1352,6 +1365,7 @@ "trackingcategories-msg": "निगरानी श्रेणी", "trackingcategories-name": "संदेस नाँव", "emailuser": "ई प्रयोगकर्ता के ईमेल करीं", + "emailusername": "प्रयोगकर्तानाँव:", "watchlist": "धियानसूची", "mywatchlist": "धियानसूची", "watch": "धियानसूची में डालीं", @@ -1563,9 +1577,7 @@ "revdelete-unrestricted": "प्रबंधक पर से प्रतिबंध समाप्त", "logentry-move-move": "$1 पन्ना $3 के $4 पर {{GENDER:$2|स्थानांतरण कइलें}}", "logentry-newusers-create": "खाता $1 {{GENDER:$2|बनावल गइल}}", - "revdelete-summary": "सारांश संपादन", "searchsuggest-search": "खोजीं", - "api-error-nomodule": "भितरी खराबी:कउनो अपलोड मॉड्युल सेट नइखे", "expandtemplates": "टेम्पलेट बिस्तार", "mediastatistics": "मीडिया सांख्यिकी" } diff --git a/languages/i18n/bn.json b/languages/i18n/bn.json index 2f21fd5b1b..5cb1bf901c 100644 --- a/languages/i18n/bn.json +++ b/languages/i18n/bn.json @@ -31,7 +31,8 @@ "Matma Rex", "আজিজ", "Kayser Ahmad", - "NahidSultan" + "NahidSultan", + "Elias Ahmmad" ] }, "tog-underline": "সংযোগগুলির নিচে দাগ দেখানো হোক:", @@ -198,6 +199,7 @@ "searcharticle": "চলো", "history": "পাতার ইতিহাস", "history_short": "ইতিহাস", + "history_small": "ইতিহাস", "updatedmarker": "আমার শেষ পরিদর্শনের পর থেকে হালনাগাদকৃত", "printableversion": "ছাপার যোগ্য সংস্করণ", "permalink": "স্থায়ী সংযোগ", @@ -436,19 +438,12 @@ "login": "প্রবেশ", "login-security": "আপনার পরিচয় যাচাই করুন", "nav-login-createaccount": "প্রবেশ/নতুন অ্যাকাউন্ট", - "userlogin": "প্রবেশ/নতুন অ্যাকাউন্ট", - "userloginnocreate": "প্রবেশ", "logout": "প্রস্থান করুন", "userlogout": "প্রস্থান", "notloggedin": "আপনি সংযুক্ত নন", "userlogin-noaccount": "কোনও অ্যাকাউন্ট নেই?", "userlogin-joinproject": "{{SITENAME}}-এ যোগ দিন", - "nologin": "আপনার কি উইকিপিডিয়াতে অ্যাকাউন্ট নেই? তাহলে '''$1'''।", - "nologinlink": "অ্যাকাউন্ট তৈরি করুন", "createaccount": "নতুন অ্যাকাউন্ট খুলুন", - "gotaccount": "আপনার কি ইতিমধ্যে একটি অ্যাকাউন্ট তৈরি করা আছে? '''$1''' করুন।", - "gotaccountlink": "প্রবেশ", - "userlogin-resetlink": "আপনার প্রবেশকরণের তথ্যাদি ভুলে গেছেন?", "userlogin-resetpassword-link": "পাসওয়ার্ড ভুলে গেছেন?", "userlogin-helplink2": "প্রবেশ সংক্রান্ত সাহায্য", "userlogin-loggedin": "আপনি বর্তমানে {{GENDER:$1|$1}} হিসাবে প্রবেশরত আছেন।\nঅন্য ব্যবহারকারী নামে প্রবেশ করতে চাইলে নিচের ফর্মটি ব্যবহার করুন।", @@ -461,7 +456,6 @@ "createaccountmail": "একটি র‌্যান্ডম পাসওয়ার্ড নির্বাচন করুন এবং নির্ধারিত ইমেইল ঠিকানায় পাঠিয়ে দিন", "createaccountmail-help": "পাসওয়ার্ড জানা ছাড়াই অন্য ব্যক্তির জন্য অ্যাকাউন্ট তৈরি করতে ব্যবহার করা যেতে পারে।", "createacct-realname": "আসল নাম (ঐচ্ছিক)", - "createaccountreason": "কারণ:", "createacct-reason": "কারণ", "createacct-reason-ph": "কেন আপনি আরেকটি অ্যাকাউন্ট তৈরি করছেন", "createacct-reason-help": "অ্যাকাউন্ট তৈরির লগে দেখানো বার্তা", @@ -502,7 +496,7 @@ "passwordremindertext": "কেউ একজন ($1 আইপি ঠিকানাটি থেকে সম্ভবত আপনি) অনুরোধ করেছেন যেন আমরা আপনাকে {{SITENAME}} ($4) এর জন্য একটি নতুন পাসওয়ার্ড পাঠাই।\n\"$2\" নামে অ্যাকাউন্ট খোলা হয়েছে এবং এর পাসওয়ার্ড \"$3\"। আপনি যদি এটাই চেয়ে থাকেন, তাহলে আপনাকে এখন অ্যাকাউন্টে প্রবেশ করতে হবে ও নতুন একটি পাসওয়ার্ড পছন্দ করতে হবে।\n{{PLURAL:$5|এক দিন|$5 দিন}} পরে আপনার এই অস্থায়ী পাসওয়ার্ডের মেয়াদ উত্তীর্ণ হয়ে যাবে।\n\nযদি আপনি ছাড়া অন্য কেউ এই অনুরোধ করে থাকে, কিংবা যদি আপনার পুরনো পাসওয়ার্ড মনে পড়ে গিয়ে থাকে ও সেটি আর বদলাবার ইচ্ছা না থাকে, তাহলে এই বার্তাটি উপেক্ষা করতে পারেন এবং পুরনো পাসওয়ার্ডটিই ব্যবহার করে যেতে পারেন।", "noemail": "\"$1\" ব্যবহারকারীর জন্য কোন ই-মেইল ঠিকানা সংরক্ষিত নেই।", "noemailcreate": "আপনাকে অবশ্যই একটি সঠিক ইমেইল ঠিকানা দিতে হবে", - "passwordsent": "একটি নতুন পাসওয়ার্ড \"$1\" ব্যবহারকারীর ই-মেইল ঠিকানায় পাঠানো হয়েছে। দয়াকরে তা পাওয়ার পর আবার লগ-ইন করুন।", + "passwordsent": "একটি নতুন পাসওয়ার্ড \"$1\" ব্যবহারকারীর ই-মেইল ঠিকানায় পাঠানো হয়েছে। দয়া করে তা পাওয়ার পর আবার প্রবেশ করুন।", "blocked-mailpassword": "আপনার আইপি ঠিকানাটি থেকে সম্পাদনা করতে বাধা আছে। অপব্যবহার রোধ করার জন্য, এই আইপি ঠিকানা থেকে পাসওয়ার্ড পুনরুদ্ধার করার অনুমতি দেয়া হয়নি।", "eauthentsent": "মনোনীত ই-মেইল ঠিকানায় একটি নিশ্চিতকরণ ই-মেইল পাঠানো হয়েছে।\nঐ অ্যাকাউন্টটে অন্য কোন ই-মেইল পাঠানোর আগে আপনাকে ই-মেইলের নির্দেশগুলি অনুসরণ করতে হবে, যাতে অ্যাকাউন্টটি যে আসলেই আপনার, তা নিশ্চিত হয়।", "throttled-mailpassword": "বিগত {{PLURAL:$1|ঘণ্টার|$1 ঘণ্টার}} মধ্যে ইতিমধ্যেই একবার পাসওয়ার্ড বদলের তথ্য পাঠানো হয়েছে। অপব্যবহার রোধে প্রতি {{PLURAL:$1|ঘণ্টায়|$1 ঘণ্টায়}} কেবল একবার পাসওয়ার্ড বদলের তথ্য পাঠানো যাবে।", @@ -512,7 +506,7 @@ "emailnotauthenticated": "আপনার ই-মেইলের ঠিকানা এখনও যাচাই করা হয়নি।\nনিচের বৈশিষ্ট্যগুলোর (features) জন্য কোনো ই-মেইল পাঠানো হবে না।", "noemailprefs": "এই বৈশিষ্টটি কাজ করাতে হলে একটি ই-মেইল ঠিকানা নির্ধারণ করতে হবে।", "emailconfirmlink": "আপনার ই-মেইলের ঠিকানা নিশ্চিত করুন", - "invalidemailaddress": "এই ই-মেইল ঠিকানাটি গ্রহণযোগ্য নয়, কারণ সম্ভবত এটি সঠিক ফরম্যাটে লেখা হয়নি। অনুগ্রহ করে সঠিক ফরম্যাটে লেখা ই-মেইল ঠিকানা দিন, অথবা ক্ষেত্রটি খালি রাখুন।", + "invalidemailaddress": "এই ইমেইল ঠিকানাটি গ্রহণযোগ্য নয়, কারণ সম্ভবত এটি সঠিক বিন্যাসে লেখা হয়নি। অনুগ্রহ করে সঠিক বিন্যাসে লেখা ইমেইল ঠিকানা দিন, অথবা ক্ষেত্রটি খালি রাখুন।", "cannotchangeemail": "একাউন্ট ইমেইল ঠিকানা এই উইকিতে পরিবর্তন করা যাবে না।", "emaildisabled": "এই সাইটটিতে ই-মেইল প্রদানের সুবিধা নেই।", "accountcreated": "অ্যাকাউন্ট তৈরি করা হয়েছে", @@ -655,8 +649,8 @@ "selfredirect": "<strong>সতর্কতা:</strong> আপনি এই পাতাকে এর নিজের দিকে পুনঃনির্দেশিত করছেন।\nআপনাকে পুনঃনির্দেশিত করার জন্য হয় ভুল লক্ষ্য নির্দিষ্ট করেছেন, অথবা আপনি ভুল পাতা সম্পাদনা করছেন।\nআপনি যদি আবার \"{{int:savearticle}}\" ক্লিক করেন, পুনর্নির্দেশ যেকোনোভাবেই হোক তৈরি করা হবে।", "missingcommenttext": "দয়া করে নিচে মন্তব্য যোগ করুন।", "missingcommentheader": "<strong>খেয়াল করুন:</strong> আপনি এই মন্তব্যের জন্য কোন বিষয় প্রদান করেননি।আপনি যদি আবার \"{{int:savearticle}}\" বোতামে ক্লিক করেন, আপনার এই সম্পাদনা কোন বিষয় ছাড়াই সংরক্ষিত হবে।", - "summary-preview": "সারাংশ প্রাকদর্শন:", - "subject-preview": "বিষয় প্রাকদর্শন:", + "summary-preview": "সম্পাদনা সারাংশের প্রাকদর্শন:", + "subject-preview": "বিষয়ের প্রাকদর্শন:", "previewerrortext": "আপনার পরিবর্তনগুলি প্রাকদর্শন করার চেষ্টা করার সময় একটি ত্রুটি ঘটেছে।", "blockedtitle": "ব্যবহারকারীকে বাধা দেয়া হয়েছে", "blockedtext": "আপনার ব্যবহারকারী নাম বা আইপি ঠিকানার ঊপর নিষেধাজ্ঞা আরোপিত হয়েছে।\n\n$1 নিষেধাজ্ঞা আরোপ করেছেন। নিষেধের কারণ হিসেবে বলা হয়েছে:''$2''।\n\n* নিষেধাজ্ঞা শুরুর সময়:$8\n* নিষেধাজ্ঞা উঠিয়ে নেয়ার সময়: $6\n* যার উপর নিষেধাজ্ঞা আরোপ করা হয়েছে: $7\n\nআপনি $1 অথবা [[{{MediaWiki:Grouppage-sysop}}|প্রশাসকদের]] কারও সাথে এই নিষেধাজ্ঞা সংক্রান্ত বিষয়ে আলোচনা করতে পারেন।\n\nআপনি '(ব্যবহারকারীকে) ইমেইল করুন' ফিচারটি ব্যবহার করতে পারবেন না। তবে [[Special:Preferences|আপনার পছন্দ তালিকাতে]] যদি একটি বৈধ ই-মেইল ঠিকানা নির্দিষ্ট করা হয়ে থাকে এবং ফিচারটি ব্যবহারে যদি আপনাকে বাধা না দেওয়া হয়ে থাকে, তবে আপনি ফিচারটি ব্যবহার করতে পারবেন।\n\nআপনার বর্তমান আইপি ঠিকানা $3, এবং আপনার নিষেধাজ্ঞা নং হল #$5।\n\nদয়া করে আপনার যেকোন জিজ্ঞাসাতে উপরের সমস্ত বিবরণ অন্তর্ভুক্ত করুন।", @@ -962,6 +956,7 @@ "search-interwiki-caption": "সহপ্রকল্পসমূহ", "search-interwiki-default": "$1 থেকে ফলাফলসমূহ:", "search-interwiki-more": "(আরও)", + "search-interwiki-more-results": "আরও ফলাফল", "search-relatedarticle": "সম্পর্কিত", "searchrelated": "সম্পর্কিত", "searchall": "সমস্ত", @@ -1051,6 +1046,7 @@ "youremail": "ইমেইল *", "username": "{{GENDER:$1|ব্যবহারকারী নাম}}:", "prefs-memberingroups": "{{PLURAL:$1|দলের|দলসমূহের}} {{GENDER:$2|সদস্য}}:", + "group-membership-link-with-expiry": "$1 ($2 পর্যন্ত)", "prefs-registration": "নিবন্ধনের সময়:", "yourrealname": "আসল নাম *", "yourlanguage": "ভাষা:", @@ -1095,17 +1091,25 @@ "editusergroup": "ব্যবহারকারী দল লোড করুন", "editinguser": "<strong>[[User:$1|$1]]</strong> $2 {{GENDER:$1|ব্যবহারকারীর}} ব্যবহারকারী অধিকার পরিবর্তন করছেন", "viewinguserrights": "<strong>[[User:$1|$1]]</strong> $2 {{GENDER:$1|ব্যবহারকারীর}} ব্যবহারকারী অধিকার দেখছেন", - "userrights-editusergroup": "ব্যবহারকারীর দল সম্পাদনা করো", - "userrights-viewusergroup": "ব্যবহারকারী দল দেখা", + "userrights-editusergroup": "{{GENDER:$1|ব্যবহারকারী}} দল সম্পাদনা করে", + "userrights-viewusergroup": "{{GENDER:$1|ব্যবহারকারী}} দল দেখা", "saveusergroups": "{{GENDER:$1|ব্যবহারকারীর}} দল সংরক্ষণ করো", "userrights-groupsmember": "সদস্য:", "userrights-groupsmember-auto": "শর্তহীন সদস্য", - "userrights-groups-help": "আপনি এই ব্যবহারকারীর বর্তমান দল পরিবর্তন করতে পারবেন:\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", + "userrights-expiry-othertime": "অন্য সময়:", + "userrights-expiry-options": "১ দিন:1 day,১ সপ্তাহ:1 week,১ মাস:1 month,৩ মাস:3 months,৬ মাস:6 months,১ বছর:1 year", + "userrights-invalid-expiry": "\"$1\" দলের জন্য মেয়াদোত্তীর্ণের সময় অবৈধ।", + "userrights-expiry-in-past": "\"$1\" দলের জন্য মেয়াদোত্তীর্ণের সময় অতীতে।", "userrights-conflict": "ব্যবহারকারী অধিকার দ্বন্দ্ব! অনুগ্রহ করে নিশ্চিত হোন এবং পুনরায় চেষ্টা করুন।", "group": "দল:", "group-user": "ব্যবহারকারীগণ", @@ -1306,14 +1310,49 @@ "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (আরও দেখুন [[Special:NewPages|নতুন পাতার তালিকা]])", "recentchanges-legend-plusminus": "(''±১২৩'')", "recentchanges-submit": "দেখাও", + "rcfilters-activefilters": "সক্রিয় ফিল্টার", + "rcfilters-restore-default-filters": "পূর্বনির্ধারিত ছাঁকনি পুনরুদ্ধার করুন", + "rcfilters-clear-all-filters": "সমস্ত ফিল্টার অপসারণ", + "rcfilters-search-placeholder": "সাম্প্রতিক পরিবর্তনসমূহ ছাঁকুন (ব্রাউজ বা টাইপ করা শুরু করুন)", + "rcfilters-invalid-filter": "অকার্যকর ফিল্টার", + "rcfilters-empty-filter": "কোনো সক্রিয় ফিল্টার নেই। সমস্ত অবদান দেখানো হয়েছে।", + "rcfilters-filterlist-title": "ছাঁকনি", + "rcfilters-highlightbutton-title": "ফলাফল আলোকপাত করুন", + "rcfilters-highlightmenu-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-userExpLevel-newcomer-label": "নতুন আগত", - "rcfilters-filter-userExpLevel-learner-label": "শিক্ষার্থী", - "rcfilters-filter-userExpLevel-experienced-label": "অভিজ্ঞ ব্যবহারকারী", + "rcfilters-filtergroup-userExpLevel": "অভিজ্ঞতার স্তর (শুধু মাত্র নিবন্ধিত ব্যবহারকারীর জন্য)", + "rcfilters-filter-user-experience-level-newcomer-label": "নতুন আগত", + "rcfilters-filter-user-experience-level-newcomer-description": "১০টি সম্পাদনার কম ও ৪ দিনের কার্যকলাপ।", + "rcfilters-filter-user-experience-level-learner-label": "শিক্ষার্থী", + "rcfilters-filter-user-experience-level-experienced-label": "অভিজ্ঞ ব্যবহারকারী", + "rcfilters-filter-user-experience-level-experienced-description": "৩০ দিনের বেশী কার্যকলাপ ও ৫০০টি সম্পাদনা।", + "rcfilters-filtergroup-automated": "স্বয়ংক্রিয় অবদান", + "rcfilters-filter-bots-label": "বট", + "rcfilters-filter-bots-description": "স্বয়ংক্রিয় সরঞ্জাম দিয়ে করা সম্পাদনা।", + "rcfilters-filter-humans-label": "মানুষ (বট নয়)", + "rcfilters-filter-humans-description": "মানব সম্পাদক দ্বারা করা সম্পাদনা।", + "rcfilters-filtergroup-reviewstatus": "পর্যালোচনার অবস্থা", + "rcfilters-filtergroup-significance": "তাৎপর্য", + "rcfilters-filter-minor-label": "অনুল্লেখ্য সম্পাদনা", + "rcfilters-filter-major-label": "অ-অনুল্লেখ্য সম্পাদনা", + "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-label": "প্রবেশকৃত কার্য", + "rcfilters-filter-logactions-description": "প্রশাসনিক কর্ম, অ্যাকাউন্ট সৃষ্টিকরণ, পাতা অপসারণ, আপলোড....", "rcnotefrom": "<strong>$2</strong>টা থেকে সংঘটিত পরিবর্তনগুলি (সর্বোচ্চ <strong>$1টি</strong> দেখানো হয়েছে)।", "rclistfrom": "$2, $3 তারিখের পর সংঘটিত নতুন পরিবর্তনগুলো দেখাও", "rcshowhideminor": "অনুল্লেখ্য পরিবর্তনগুলো $1", @@ -1369,7 +1408,7 @@ "uploadbtn": "ফাইল আপলোড করুন", "reuploaddesc": "আপলোড বাতিল করো এবং আপলোড ফর্মে ফেরত যাও।", "upload-tryagain": "পরিবর্তিত ফাইল বর্ণনা জমা দিন", - "uploadnologin": "আপনি লগ-ইন করেননি।", + "uploadnologin": "আপনি প্রবেশ করেননি", "uploadnologintext": "ফাইল আপলোড করতে হলে আপনাকে অবশ্যই $1 করতে হবে।", "upload_directory_missing": "আপলোড ডাইরেক্টরি ($1) পাওয়া যাচ্ছে না এবং ওয়েব সার্ভার কর্তৃক তৈরি করা যাচ্ছে না।", "upload_directory_read_only": "আপলোড ডিরেক্টরিটি ($1) ওয়েবসার্ভার কর্তৃক লিখনযোগ্য নয়।", @@ -1437,7 +1476,7 @@ "uploaded-hostile-svg": "আপলোড করা SVG ফাইলের শৈলী উপাদানে অনিরাপদ সিএসএস পাওয়া গেছে।", "uploaded-href-unsafe-target-svg": "অনিরাপদ উপাত্তে href পাওয়া গেছে: আপলোডকৃত SVG ফাইলে URI লক্ষ্য ছিল <code><$1 $2=\"$3\"></code>।", "uploaded-image-filter-svg": "আপলোডকৃত SVG ফাইলে URL: <code><$1 $2=\"$3\"></code> সহ ছবি পরিশোধক পাওয়া গেছে।", - "uploadscriptednamespace": "এই SVG ফাইলে অবৈধ নামস্থান \"$1\" রয়েছে", + "uploadscriptednamespace": "এই SVG ফাইলে অবৈধ নামস্থান \"<nowiki>$1</nowiki>\" রয়েছে", "uploadinvalidxml": "আপলোডকৃত ফাইলে XML পার্স করা যাবে না।", "uploadvirus": "এই ফাইলটিতে ভাইরাস আছে! ব্যাখ্যা: $1", "uploadjava": "এটি একটি ZIP ফরম্যাটের ফাইল, যেখানে একটি জাভা .class ফরম্যাটের ফাইল রয়েছে।\nজাভা ফাইল আপলোডের কোনো অনুমতি নেই, কারণ এই ধরনের ফাইল সিস্টেমে নিরাপত্তা ত্রুটি তৈরী করতে পারে।", @@ -1801,10 +1840,14 @@ "apisandbox-results": "ফলাফল", "apisandbox-sending-request": "API অনুরোধ পাঠানো হচ্ছে...", "apisandbox-loading-results": "API ফলাফল গ্রহণ করা হচ্ছে...", - "apisandbox-request-params-json": "JSON প্যারামিটার:", + "apisandbox-results-error": "এপিআই কুয়েরির প্রতিক্রিয়া লোড করার সময় একটি ত্রুটি ঘটেছে: $1।", + "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": "অব্যাহত", @@ -1937,7 +1980,7 @@ "emailccsubject": "আপনার বার্তার অনুলিপি $1-কে: $2", "emailsent": "ই-মেইল প্রেরণ করা হয়েছে", "emailsenttext": "আপনার ই-মেইল বার্তা প্রেরণ করা হয়েছে।", - "emailuserfooter": "এই ইমেইলটি {{SITENAME}} সাইটের \"{{int:emailuser}}\" সুবিধা ব্যবহার করে $1-এর পক্ষ থেকে {{GENDER:$2|$2}}-এর নিকট {{GENDER:$1|পাঠানো হয়েছে}}। {{GENDER:$2|আপনার}} উত্তরের ইমেইলটি সরাসরি {{GENDER:$1|মূল প্রেরকের}} কাছে পাঠানো হবে, সেই সাথে {{GENDER:$2|আপনার}} ইমেল ঠিকানা {{GENDER:$1|তাঁর}} কাছে প্রকাশ করা হবে।", + "emailuserfooter": "এই ইমেইলটি {{SITENAME}} সাইটের \"{{int:emailuser}}\" সুবিধা ব্যবহার করে $1-এর পক্ষ থেকে {{GENDER:$2|$2}}-এর নিকট {{GENDER:$1|পাঠানো হয়েছে}}। যদি {{GENDER:$2|আপনি}} এই ইমেইলটির উত্তর দেন, তাহলে {{GENDER:$2|আপনার}} উত্তরের ইমেইলটি সরাসরি {{GENDER:$1|মূল প্রেরকের}} কাছে পাঠানো হবে, সেই সাথে {{GENDER:$2|আপনার}} ইমেল ঠিকানা {{GENDER:$1|তাঁর}} কাছে প্রকাশ করা হবে।", "usermessage-summary": "বাদবাকি সিস্টেম বার্তা", "usermessage-editor": "সিস্টেম ম্যাসেঞ্জার", "usermessage-template": "MediaWiki:ব্যবহারকারী বার্তা", @@ -2036,7 +2079,7 @@ "editcomment": "সম্পাদনা সারাংশ ছিল: \"''$1''\"।", "revertpage": "[[Special:Contributions/$2|$2]] ([[User talk:$2|আলাপ]]) এর সম্পাদিত সংস্করণ হতে [[User:$1|$1]] এর সম্পাদিত সর্বশেষ সংস্করণে ফেরত যাওয়া হয়েছে।", "revertpage-nouser": "একজন গোপন ব্যবহারকারী কর্তৃক সম্পাদিত সম্পাদনাটি বাতিলপূর্বক {{GENDER:$1|[[User:$1|$1]]}}-এর সর্বশেষ সম্পাদনায় ফেরত যাওয়া হয়েছে।", - "rollback-success": "$1-এর সম্পাদনাগুলি পূর্বাবস্থায় ফিরিয়ে নেওয়া হয়েছে; $2-এর করা শেষ সংস্করণে পাতাটি ফেরত নেওয়া হয়েছে।", + "rollback-success": "{{GENDER:$3|$1}}-এর সম্পাদনাগুলি পূর্বাবস্থায় ফিরিয়ে নেওয়া হয়েছে; {{GENDER:$4|$2}}-এর করা শেষ সংস্করণে পাতাটি ফেরত নেওয়া হয়েছে।", "rollback-success-notify": "$1-এর সম্পাদনাগুলি বাতিল করা হয়েছে; \n$2-এর করা শেষ সংস্করণে ফেরত নেওয়া হয়েছে। [$3 পরিবর্তন দেখুন]", "sessionfailure-title": "সেশন পরিত্যক্ত", "sessionfailure": "আপনার প্রবেশ সেশনে একটি সমস্যা হয়েছে বলে মনে হচ্ছে;\nসেশন হাইজ্যাক প্রতিরোধের উপায় হিসেবে এই কাজটি বাতিল করা হয়েছে।\nঅনুগ্রহ ব্রাউজারের \"পিছনে\" বোতাম চাপুন এবং যে পাতা থেকে এসেছিলেন, তা পুনঃলোড করুন এবং আবার চেষ্টা করুন।", @@ -2125,6 +2168,7 @@ "undeletehistorynoadmin": "এই পাতাটি মুছে ফেলা হয়েছে। মুছে ফেলার কারণ নিচের সারাংশে দেখানো হল। সেই সাথে মুছে ফেলার আগে যেসমস্ত ব্যবহারকারী পাতাটি সম্পাদনা করেছেন, তাদের সম্পর্কেও বিস্তারিত দেখানো হল। এই মুছে ফেলা সংশোধনগুলির বিষয়বস্তু কেবল প্রশাসকদের কাছে লভ্য।", "undelete-revision": "$3-এর করা $1 সংশোধন ($4 তারিখে, $5 সময়ের) মুছে ফেলা হয়েছে:", "undeleterevision-missing": "সংশোধনটি অবৈধ কিংবা হারানো গেছে। আপনি হয়ত অচল সংযোগে ক্লিক করেছেন, কিংবা সংশোধনটি হয়ত বাতিল করে পাতাটি পূর্বাবস্থায় নেওয়া হয়েছে, অথবা সংশোধনটি আর্কাইভ থেকে মুছে ফেলা হয়েছে।", + "undeleterevision-duplicate-revid": "{{PLURAL:$1|একটি সংশোধন|$1টি সংশোধন}} পুনরুদ্ধার করা যাবে না, কারণ {{PLURAL:$1|এটির|এগুলির}} <code>rev_id</code> ইতিমধ্যেই ব্যবহৃত হয়েছে।", "undelete-nodiff": "পূর্বের কোন সংশোধন খুঁজে পাওয়া যায়নি।", "undeletebtn": "পুনরুদ্ধার", "undeletelink": "দেখুন/পুনর্বহাল করুন", @@ -2307,6 +2351,7 @@ "proxyblockreason": "আপনার আইপি ঠিকানাকে বাধা দেয়া হয়েছে কারণ এটি একটি উন্মুক্ত প্রক্সি। অনুগ্রহ করে আপনার ইন্টারনেট সেবা প্রদানকারী কোম্পানির সাথে কারিগরি সহায়তার ব্যাপারে যোগাযোগ করুন এবং এই গুরুত্বপূর্ণ নিরাপত্তা সমস্যার ব্যাপারে তাদেরকে অবহিত করুন।", "sorbsreason": "আপনার আইপি ঠিকানাটি {{SITENAME}}-এর ব্যবহার করা DNSBL-এ উন্মুক্ত প্রক্সি হিসেবে তালিকাভুক্ত আছে।", "sorbs_create_account_reason": "আপনার আইপি ঠিকানাটি {{SITENAME}}-এর ব্যবহার করা DNSBL-এ উন্মুক্ত প্রক্সি হিসেবে তালিকাভুক্ত আছে। আপনি কোন অ্যাকাউন্ট সৃষ্টি করতে পারবেন না।", + "softblockrangesreason": "বেনামী অবদান আপনার আইপি ঠিকানা থেকে অনুমোদিত নয় ($1)। দয়া করে প্রবেশ করুন।", "xffblockreason": "X-Forwarded-For হেডারে থাকা আইপি ঠিকানাটি ব্লক করা হয়েছে, হয় এটি আপনার নিজের অথবা আপনার ব্যবহৃত প্রক্সি সার্ভারের আইপি ঠিকানা। ব্লক করার কারণ হল: $1", "cant-see-hidden-user": "আপনি যে ব্যবহারকারীকে ব্লক বা লুকিয়ে রাখতে চাচ্ছেন তাকে আগে থেকেই ব্লক বা লুকিয়ে রাখা হয়েছে। এছাড়া আপনার Hideuser অধিকার নেই, তাই আপনি ব্যবহারকারীর অবস্থা পরিবর্তন করতে পারবেন না।", "ipbblocked": "আপনি অন্য কোন ব্যবহারকরীকে ব্লক বা আনব্লক করতে পারবেন না, কারণ আপনি নিজেই ব্লক রয়েছেন", @@ -2343,6 +2388,7 @@ "cant-move-category-page": "আপনার বিষয়শ্রেণী পাতা স্থানান্তরের অনুমতি নেই।", "cant-move-to-category-page": "আপনার পাতাটিকে বিষয়শ্রেণী পাতায় স্থানান্তরের অনুমতি নেই।", "cant-move-subpages": "আপনার উপপাতা স্থানান্তরের অনুমতি নেই।", + "namespace-nosubpages": "\"$1\" নামস্থান উপপাতার অনুমতি দেয় না।", "newtitle": "নতুন শিরোনাম:", "move-watch": "এই পাতাটি নজরে রাখুন", "movepagebtn": "পাতা স্থানান্তর করুন", @@ -2363,6 +2409,7 @@ "movelogpagetext": "সরানো পাতাগুলির একটি তালিকা নিচে দেয়া হল।", "movesubpage": "{{PLURAL:$1|উপপাতা|উপপাতাসমূহ}}", "movesubpagetext": "এই পাতার $1টি {{PLURAL:$1|উপপাতা}} রয়েছে যেগুলো নিচে দেখানো হচ্ছে।", + "movesubpagetalktext": "সংশ্লিষ্ট আলাপ পাতার $1টি {{PLURAL:$1|উপপাতা}} রয়েছে যেগুলো নিচে দেখানো হচ্ছে।", "movenosubpage": "এই পাতাটির কোনো উপপাতা নেই।", "movereason": "কারণ:", "revertmove": "পূর্বাবস্থায় ফেরত নেওয়া হোক", @@ -3337,6 +3384,7 @@ "tags-delete-reason": "কারণ:", "tags-delete-submit": "অপরিবর্তনীয় এই ট্যাগ অপসারন করো", "tags-delete-not-found": "\"$1\" ট্যাগ বিদ্যমান নয়।", + "tags-delete-too-many-uses": "\"$1\" ট্যাগটি $2টিরও অধিক {{PLURAL:$2|সংশোধনে}} প্রয়োগ করা হয়েছে, যার অর্থ এটি অপসারণ করা যাবে না।", "tags-delete-no-permission": "আপনার পরিবর্তন ট্যাগ মুছে ফেলার অনুমতি নেই।", "tags-activate-title": "সক্রিয় ট্যাগ", "tags-activate-question": "আপনি ট্যাগ \"$1\" সক্রিয় করতে চলেছেন।", @@ -3349,10 +3397,19 @@ "tags-deactivate-reason": "কারণ:", "tags-deactivate-not-allowed": "ট্যাগ \"$1\" নিষ্ক্রিয় করা সম্ভব নয়।", "tags-deactivate-submit": "নিষ্ক্রিয়", + "tags-apply-no-permission": "আপনার পরিবর্তনসহ আপনার ট্যাগ পরিবর্তন প্রয়োগ করার অনুমতি নেই।", + "tags-apply-not-allowed-one": "\"$1\" ট্যাগটি ম্যানুয়ালি প্রয়োগ করা যাবে না।", + "tags-apply-not-allowed-multi": "নিন্মলিখিত {{PLURAL:$2|ট্যাগটি|ট্যাগগুলি}} ম্যানুয়ালি প্রয়োগ করা যাবে না: $1", + "tags-update-no-permission": "স্বতন্ত্র সংশোধন বা লগের ভুক্তি থেকে আপনার ট্যাগ পরিবর্তন যোগ বা বাতিল করার অনুমতি নেই।", + "tags-update-add-not-allowed-one": "\"$1\" ট্যাগটি ম্যানুয়ালি যোগ করা যাবে না।", + "tags-update-add-not-allowed-multi": "নিন্মলিখিত {{PLURAL:$2|ট্যাগটি|ট্যাগগুলি}} ম্যানুয়ালি যোগ করা যাবে না: $1", + "tags-update-remove-not-allowed-one": "\"$1\" ট্যাগটি বাতিল করা যাবে না।", + "tags-update-remove-not-allowed-multi": "নিন্মলিখিত {{PLURAL:$2|ট্যাগটি|ট্যাগগুলি}} ম্যানুয়ালি বাতিল করা যাবে না: $1", "tags-edit-title": "ট্যাগ সম্পাদনা করুন", "tags-edit-manage-link": "ট্যাগ পরিচালনা করুন", "tags-edit-revision-selected": "[[:$2]] পাতার {{PLURAL:$1|নির্বাচিত সংশোধন|নির্বাচিত সংশোধনসমূহ}}:", "tags-edit-logentry-selected": "{{PLURAL:$1|নির্বাচিত লগ ইভেন্ট}}:", + "tags-edit-logentry-legend": "{{PLURAL:$1|এই লগের ভুক্তি|$1টি লগের ভুক্তি}} থেকে ট্যাগ যোগ বা বাতিল করুন", "tags-edit-existing-tags": "বিদ্যমান ট্যাগ:", "tags-edit-existing-tags-none": "<em>কোনটি নয়</em>", "tags-edit-new-tags": "নতুন ট্যাগ:", @@ -3362,7 +3419,8 @@ "tags-edit-chosen-placeholder": "কিছু ট্যাগ নির্বাচন করুন", "tags-edit-chosen-no-results": "কোন ট্যাগ মিল পাওয়া যায়নি", "tags-edit-reason": "কারণ:", - "tags-edit-revision-submit": "Apply changes to {{PLURAL:$1|এই সংশোধনে|$1 সংশোধনসমূহে}} পরিবর্তন প্রয়োগ করুন", + "tags-edit-revision-submit": "{{PLURAL:$1|এই সংশোধনে|$1টি সংশোধনে}} পরিবর্তন প্রয়োগ করুন", + "tags-edit-logentry-submit": "{{PLURAL:$1|এই লগের ভুক্তিতে|$1টি লগের ভুক্তিতে}} পরিবর্তন প্রয়োগ করুন", "tags-edit-success": "পরিবর্তন প্রয়োগ করা হয়েছে।", "tags-edit-failure": "পরিবর্তন প্রয়োগ করা যায়নি: $1", "tags-edit-nooldid-title": "লক্ষ্য সংশোধন অবৈধ", @@ -3402,6 +3460,15 @@ "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-এর অস্তিত্ব নেই।", @@ -3461,11 +3528,12 @@ "logentry-upload-overwrite": "$1 $3-এর একটি নতুন সংস্করণ {{GENDER:$2|আপলোড করেছেন}}", "logentry-upload-revert": "$1 $3 {{GENDER:$2|আপলোড করেছেন}}", "log-name-managetags": "ট্যাগ ব্যবস্থাপনা লগ", - "logentry-managetags-create": "$1 \"$4\" ট্যাগ {{GENDER:$2|তৈরি করেছে}}", + "logentry-managetags-create": "$1 \"$4\" ট্যাগটি {{GENDER:$2|তৈরি করেছেন}}", "logentry-managetags-delete": "$1 \"$4\" ট্যাগটি {{GENDER:$2|অপসারণ করেছেন}} ($5টি {{PLURAL:$5|সংস্করণ বা লগ ভুক্তি|সংস্করণ ও/বা লগ ভুক্তি}} সরানো হয়েছে)", + "logentry-managetags-deactivate": "$1 \"$4\" ট্যাগটি ব্যবহারকারী ও বট দ্বারা ব্যবহারের জন্য {{GENDER:$2|নিষ্ক্রিয়}} করেছেন", "log-name-tag": "ট্যাগ লগ", "rightsnone": "(কিছু নাই)", - "revdelete-summary": "সম্পাদনা সারাংশ", + "rightslogentry-temporary-group": "$1 (সাময়িক, $2 পর্যন্ত)", "feedback-adding": "পাতায় প্রতিক্রিয়া যোগ হচ্ছে...", "feedback-back": "পিছনে", "feedback-bugcheck": "উত্তম! যাচাই করুন যে এই [$1 জানা বাগের] কোন একটি কিনা।", @@ -3490,48 +3558,12 @@ "feedback-useragent": "ব্যবহারকারী এজেন্ট:", "searchsuggest-search": "{{SITENAME}} অনুসন্ধান", "searchsuggest-containing": "যা আছে...", - "api-error-autoblocked": "আপনার আইপি ঠিকানাকে স্বয়ংক্রিয়ভাবে বাধা দেয়া হয়েছে কারণ এটি একজন অবরুদ্ধ ব্যবহারকারী দ্বারা ব্যবহৃত হয়েছিল।", - "api-error-badaccess-groups": "আপনার এই উইকিতে ফাইল আপলোডের অনুমতি নেই।", "api-error-badtoken": "অভ্যন্তরীণ ত্রুটি: খারাপ টোকেন।", - "api-error-blocked": "আপনাকে সম্পাদনা করা থেকে বাধা দেয়া হয়েছে।", - "api-error-copyuploaddisabled": "এই সার্ভারে ইউআরএল-এর মাধ্যমে আপলোড করার সুবিধা নিস্ক্রিয় রয়েছে।", - "api-error-duplicate": "ইতোমধ্যে এই সাইটে একই রকমের বিষয় সমৃদ্ধ {{PLURAL:$1|অন্য ফাইল|কিছু অন্য ফাইল}} রয়েছে।", - "api-error-duplicate-archive": "একই নাম ও বিষয়বস্তু বিশিষ্ট {{PLURAL:$1|অপর একটি ফাইল|কয়েকটি ফাইল}} পূর্বে এই উইকিতে ছিলো, এবং {{PLURAL:$1|সেটিকে|সেগুলোকে}} অপসারণ করা হয়েছে।", - "api-error-empty-file": "আপনার জমাকৃত ফাইলটি খালি।", "api-error-emptypage": "নতুন পাতা তৈরি হচ্ছে, খালি পাতা গ্রহণযোগ্য নয়।", - "api-error-fetchfileerror": "অভ্যন্তরীণ ত্রুটি: ফাইল নিয়ে আসার সময় কোনো সমস্যা হয়েছিলো।", - "api-error-fileexists-forbidden": "\"$1\" নামের একটি ফাইল রয়েছে, প্রতিস্থাপন সম্ভব নয়।", - "api-error-fileexists-shared-forbidden": "\"$1\" নামে শেয়ার্ড রিপোজিরীতে একটি ফাইল রয়েছে, প্রতিস্থাপন সম্ভব নয়।", - "api-error-file-too-large": "আপনার জমাকৃত ফাইলটি অনেক বড়।", - "api-error-filename-tooshort": "এই ফাইল নামটি খুবই ছোট।", - "api-error-filetype-banned": "এই ধরনের ফাইল নিষিদ্ধ।", - "api-error-filetype-banned-type": "$1 {{PLURAL:$4|ফাইল ধরনটি অনুমোদিত নয়|ফাইল ধরনগুলো অনুমোদিত নয়}}। অনুমোদিত {{PLURAL:$3|ফাইলের ধরন|ফাইলের ধরনগুলো}} হল $2।", - "api-error-filetype-missing": "এই ফাইলটির কোনো এক্সটেনশন নেই।", - "api-error-hookaborted": "যে পরিবর্তনটি আপনি করার চেষ্টা করেছিলেন তা এক্সটেনশন হুক দ্বারা বাতিলকৃত হয়েছে।", - "api-error-http": "অভ্যন্তরীণ ত্রুটি: সার্ভারে সংযোগ প্রদান করা সম্ভব হচ্ছে না।", - "api-error-illegal-filename": "ফাইলের এই নামটি গ্রহণযোগ্য নয়।", - "api-error-internal-error": "অভ্যন্তরীণ ত্রুটি: এই উইকিতে আপনার আপলোড প্রক্রিয়াকরণ করার সময় কোনো ত্রুটি দেখা দিয়েছে।", - "api-error-invalid-file-key": "অভ্যন্তরীণ ত্রুটি: অস্থায়ী সংরক্ষণশালায় ফাইলটি খুঁজে পাওয়া যায়নি।", - "api-error-missingparam": "অভ্যন্তরীণ ত্রুটি: অনুরোধে কিছু প্যারামিটারের ঘাটতি রয়েছে।", - "api-error-missingresult": "অভ্যন্তরীণ ত্রুটি: সফলভাবে অনুলিপি করা হয়েছে কিনা তা নিশ্চিত করা সম্ভব হয়নি।", - "api-error-mustbeloggedin": "ফাইল আপলোড করার জন্য আপনাকে অবশ্যই এই উইকিতে প্রবেশ করতে হবে।", - "api-error-mustbeposted": "অভ্যন্তরীণ ত্রুটি: এই অনুরোধের জন্য এইচটিটিপি পোস্ট প্রয়োজন।", - "api-error-noimageinfo": "আপলোড সফল হয়েছে, কিন্তু ফাইলটি সম্পর্কে সার্ভার কোন তথ্য প্রদান করে নি।", - "api-error-nomodule": "অভ্যন্তরীণ ত্রুটি: কোন আপলোড মডিউল সেট করা হয়নি।", - "api-error-ok-but-empty": "অভ্যন্তরীণ ত্রুটি: সার্ভার হতে কোন সাড়া পাওয়া যাচ্ছে না।", - "api-error-overwrite": "ইতিমধ্যেই রয়েছে এমন কোনো ফাইলের প্রতিস্থাপন গ্রহণযোগ্য নয়।", - "api-error-stashfailed": "অভ্যন্তরীণ ত্রুটি: সার্ভার অস্থায়ী ফাইলটি সংরক্ষণ করতে ব্যর্থ হয়েছে।", "api-error-publishfailed": "অভ্যন্তরীন ত্রুটি: সার্ভার অস্থায়ী ফাইলটি প্রকাশ করতে ব্যর্থ হয়েছে।", - "api-error-stasherror": "স্ট্যাশে আপলোডের সময় চিত্র আপলোডের সময় একটি সমস্যা দেখা দিয়েছে।", - "api-error-stashfilestorage": "স্ট্যাশে ফাইল সংরক্ষণের সময় একটি ত্রুটি হয়েছে।", - "api-error-timeout": "কাঙ্খিত সময়ের মধ্যে সার্ভারের কোন সাড়া পাওয়া যায়নি।", - "api-error-unclassified": "একটি অজানা ত্রুটি দেখা দিয়েছে", - "api-error-unknown-code": "অজানা ত্রুটি: \"$1\"", - "api-error-unknown-error": "অভ্যন্তরীণ ত্রুটি: আপনার ফাইলটি আপলোড করার সময় কিছু সমস্যা হয়েছে।", - "api-error-unknown-warning": "অজানা সতর্কীকরণ: $1", + "api-error-stashfailed": "অভ্যন্তরীণ ত্রুটি: সার্ভার অস্থায়ী ফাইলটি সংরক্ষণ করতে ব্যর্থ হয়েছে।", + "api-error-unknown-warning": "অজানা সতর্কীকরণ: \"$1\"।", "api-error-unknownerror": "অজানা ত্রুটি: \"$1\"।", - "api-error-uploaddisabled": "এই উইকির জন্য আপলোড সুবিধা নিস্ক্রিয় রয়েছে।", - "api-error-verification-error": "সম্ভবত এই ফাইলটি ত্রুটিপূর্ণ অথবা এর এক্সটেনশনটি ভুল।", "duration-seconds": "$1 {{PLURAL:$1|সেকেন্ড|সেকেন্ড}}", "duration-minutes": "$1 {{PLURAL:$1|মিনিট|মিনিট}}", "duration-hours": "$1 {{PLURAL:$1|ঘণ্টা}}", @@ -3568,6 +3600,8 @@ "expand_templates_generate_xml": "XML পার্স বৃক্ষ দেখাও", "expand_templates_generate_rawhtml": "এইচটিএমএল দেখাও", "expand_templates_preview": "প্রাকদর্শন", + "expand_templates_preview_fail_html": "<em>{{SITENAME}}-এ raw HTML সক্রিয় আছে ও সেশন উপাত্ত হারিয়ে গিয়েছে, জাভাস্ক্রিপ্ট ভিত্তিক আক্রমণ থেকে প্রতিরক্ষার জন্য প্রাকদর্শনটি লুকায়িত আছে।</em>\n\n<strong>যদি এটি সম্পাদনার একটি বৈধ প্রচেষ্টা হয়, তবে অনুগ্রহ করে আবার চেষ্টা করুন।</strong>\nযদি তারপরেও কাজ না হয়, তবে অ্যাকাউন্ট থেকে [[Special:UserLogout|বেরিয়ে গিয়ে]] আবার প্রবেশ করুন, এবং পরীক্ষা করে দেখুন যে আপনার ব্রাউজারে এই সাইট থেকে কুকি অনুমতি দেয়।", + "expand_templates_preview_fail_html_anon": "<em>{{SITENAME}}-এ raw HTML সক্রিয় আছে ও আপনি প্রবেশ করেন নি, জাভাস্ক্রিপ্ট ভিত্তিক আক্রমণ থেকে প্রতিরক্ষার জন্য প্রাকদর্শনটি লুকায়িত আছে।</em>\n\n<strong>যদি এটি সম্পাদনার একটি বৈধ প্রচেষ্টা হয়, তবে অনুগ্রহ করে [[Special:UserLogin|প্রবেশ করুন]] ও আবার চেষ্টা করুন।</strong>", "expand_templates_input_missing": "আপনাকে অন্তত কিছু ইনপুট লেখা প্রদান করতে হবে।", "pagelanguage": "পাতার ভাষা পরিবর্তন করুন", "pagelang-name": "পাতা", @@ -3576,6 +3610,8 @@ "pagelang-select-lang": "ভাষা নির্বাচন করুন", "pagelang-reason": "কারণ", "pagelang-submit": "জমা দাও", + "pagelang-nonexistent-page": "$1 শিরোনামে কোন পাতা নেই।", + "pagelang-db-failed": "ডাটাবেস পৃষ্ঠার ভাষা পরিবর্তন করতে ব্যর্থ হয়েছে।", "right-pagelang": "পাতার ভাষা পরিবর্তন করুন", "action-pagelang": "পাতার ভাষা পরিবর্তন করুন", "log-name-pagelang": "ভাষা পরিবর্তন লগ", @@ -3643,6 +3679,7 @@ "mw-widgets-titleinput-description-new-page": "পাতা এখনো বিদ্যমান নয়", "mw-widgets-titleinput-description-redirect": "$1-এ পুনঃনির্দেশিত", "mw-widgets-categoryselector-add-category-placeholder": "একটি বিষয়শ্রেণী যোগ করুন...", + "mw-widgets-usersmultiselect-placeholder": "আরও যোগ করুন...", "sessionmanager-tie": "একাধিক অনুরোধের প্রমাণীকরণের ধরন একত্রিত করা যাবে না: $1।", "sessionprovider-generic": "$1টি সেশন", "sessionprovider-mediawiki-session-cookiesessionprovider": "কুকি-ভিত্তিক সেশন", @@ -3754,7 +3791,7 @@ "usercssispublic": "অনুগ্রহ করে লক্ষ্য করুন: সিএসএসের উপপাতাগুলিতে গোপনীয় তথ্য থাকা উচিত নয় যেহেতু অন্যান্য ব্যবহারকারীও এগুলি দেখতে পান।", "restrictionsfield-badip": "আইপি ঠিকানা অথবা পরিসীমা অবৈধ: $1", "restrictionsfield-label": "অনুমোদিত আইপি পরিসীমা:", - "restrictionsfield-help": "লাইন প্রতি একটি আইপি ঠিকানা বা CIDR পরিসীমা। সবকিছু সক্রিয় করতে<br><code>0.0.0.0/0</code><br><code>::/0</code><br>ব্যবহার করুন", + "restrictionsfield-help": "লাইন প্রতি একটি আইপি ঠিকানা বা CIDR পরিসীমা। সবকিছু সক্রিয় করতে ব্যবহার করুন: :<pre>0.0.0.0/0\n::/0</pre>", "revid": "সংশোধন $1", "pageid": "পাতার আইডি $1" } diff --git a/languages/i18n/bqi.json b/languages/i18n/bqi.json index a0d4c0572e..6ef5b5f5e4 100644 --- a/languages/i18n/bqi.json +++ b/languages/i18n/bqi.json @@ -104,6 +104,11 @@ "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|دسته|دسته ها}}", @@ -121,6 +126,7 @@ "category-file-count-limited": "ذیل الذکر {{PLURAL:$1|فایل است|$1 فایلها هستند}} درآن دسته جریانی.", "listingcontinuesabbrev": "دنباله", "about": "درباره", + "article": "بلگه Ø¢ مینونه دار", "newwindow": "(پنجره تازه واز کن)", "cancel": "لغو", "moredotdotdot": "بيشدر", @@ -136,6 +142,7 @@ "qbmyoptions": "بألگإ Ø¢ مو", "faq": "اف ای کیو", "faqpage": "Project:اف ای کیو", + "actions": "کونئشتکاریا", "namespaces": "نوم ڤأرگأ Ø¢", "variants": "آلشدگأرا", "navigation-heading": "نوم جاگأ ناڤگردي", @@ -149,6 +156,7 @@ "searcharticle": "برو", "history": "گزارش صفحه", "history_short": "گزارش تاریخی", + "history_small": "ڤیرگار", "printableversion": "نوسقئ پئلا ڤابیدٙئنی", "permalink": "لینک دایمی", "print": "چاپ گرهڌن", @@ -159,8 +167,11 @@ "create-local": "یأ توزی ڤولات نشيني إزافإ کونين", "editthispage": "اصلاح ای صفحه", "delete": "حذف", + "deletethispage": "اي بلگأ نأ پاکسا کونين", + "undeletethispage": "اي بلگأ نأ پاکسا نکونين", "protect": "حفاظت وحمایت", "protect_change": "آلإشت کونين", + "protectthispage": "ز اي بلگأ هامينداري کونين", "newpage": "صفحه تازه", "talkpage": "بحث ای صفحه", "talkpagelinktext": "چأک چئنە", @@ -188,6 +199,7 @@ "jumpto": "پریدن به:", "jumptonavigation": "راندن یا هدایت کردن", "jumptosearch": "جستن", + "pool-errorunknown": "خطا نادیار", "aboutsite": "راجوڤ بئ {{SITENAME}}", "aboutpage": "Project:راجڤ بئ", "copyright": "محتوا باای شماره قابل دسترسیه\n $1.", @@ -224,6 +236,7 @@ "toc": "محتواها", "showtoc": "نمایش", "hidetoc": "قایم", + "collapsible-collapse": "جأم كردن", "collapsible-expand": "گأپ کلۈن کردن", "confirmable-yes": "هرإ", "confirmable-no": "نأ", @@ -239,17 +252,24 @@ "red-link-title": "$1 (چونو بألگئ یی نیدٙئس)", "nstab-main": "بلگه", "nstab-user": "صفحه کاربر", + "nstab-media": "بلگأ ڤارسگأري", "nstab-special": "بألگه ڤیجه", "nstab-project": "صفحه پروژه", "nstab-image": "فایل", + "nstab-mediawiki": "پیغوم", "nstab-template": "قالب یا الگو", + "nstab-help": "بألگإ هومیاری", "nstab-category": "دسته", "mainpage-nstab": "سأرآسوٙنە", "error": "خطا", + "databaseerror-query": "جوستکاری: $1", + "databaseerror-error": "خطا: $1", + "internalerror": "خطا مإنجقایي", "badtitle": "عنوان بد", "badtitletext": "عنوان درخواستی نامعتبر، خالی، یا عنوانی بین زبانی یا بین‌ویکی‌ای با پیوند نادرسته\nو ممکنه دارای یک یا چند کاراکتر بوه که در عنوان مربوط نوا زش استفاده کنین", "viewsource": "مشاهده منبع", "viewsourcetext": "ایسا ترین بوینین وکپی کنین منبع ای صفحه را:", + "welcomeuser": "خۈش أڤوڌين،$1!", "yourname": "نام کاربر:", "userlogin-yourname": "نوم کارياري", "userlogin-yourname-ph": "نوم کاریاريتونأ بزنين", @@ -260,24 +280,23 @@ "createacct-yourpasswordagain": "پشت راسدکاري رازينإ گوڤأرتن", "createacct-yourpasswordagain-ph": "ز نۉ رازينإ گوڤأرتن نأ بزأ", "userlogin-remembermypassword": "مۈنإ مإن سامۈنإ ڤاڌار", + "yourdomainname": "پوشگر ايسا:", "login": "اویدن به سیستم", "nav-login-createaccount": "اویدن به سیستم", - "userlogin": "اویدن به سیستم / درست کردن حساب کاربری", - "userloginnocreate": "ڤامین اوڤیڌن", "logout": "رهدن زه سیستم", "userlogout": "رهدن زه سیستم", "userlogin-noaccount": "یأ هساڤ کارياري دارين؟", "userlogin-joinproject": "أندوم ديارگأ {{SITENAME}} ڤابۈین", - "nologin": "آیا ایسا حساب کاربری ندارین? '''$1'''.", - "nologinlink": "درست کردن یه حساب کاربری", "createaccount": "درست کردن حساب کاربری", - "gotaccount": "آیا تقریبا یه حساب کاربری دارین? '''$1'''.", - "gotaccountlink": "اویدن به", "userlogin-resetpassword-link": "رازینإ گوڤأرتن تۈ ز ڤيرتۈن رأهڌإ", "userlogin-helplink2": "هومياري کردن سي ڤامإن أڤوڌن", + "createacct-emailrequired": "تيرنشۈن أنجومانامأ", "createacct-emailoptional": "تيرنشۈن أنجومانامأ", "createacct-email-ph": "تيرنشۈن أنجومانامأ تۈنأ بزنين", + "createacct-another-email-ph": "تيرنشۈن أنجومانامأ تۈنأ بزنين", + "createacct-reason": "دلیل", "createacct-submit": "هساڤ خوتۈنإ راسد کونين", + "createacct-another-submit": "راسد کردن هساڤ کارياري", "createacct-benefit-body1": "{{PLURAL:$1|ڤيرایشد|ڤيرایشدا}}", "createacct-benefit-body2": "{{PLURAL:$1|بألگأ|بألگإ Ø¢}}", "createacct-benefit-body3": "تازأ{{PLURAL:$1|هوميار|هوميارا}}", @@ -295,22 +314,42 @@ "noemail": "وجود نداره نشانی امیل ضبط وابده زه کاریر \"$1\".", "passwordsent": "یه رمز تازه ارسال وابید به نشانی امیل ثبت وابده سی \"$1\".\nلطفا بعد از دریافت آن داخل سیستم بوین.", "eauthentsent": "یه ایمیل سی تایید آدرس ایمیل به آدرس مورنظر ارسال وابید. قبل زه یو که ایمیل دیگری قابل ارسال به این آدرس بوه، وا دستورهایی که در آن ایمیل اویده را جهت تأیید ای مساله که ای آدرس مال ایسانه اجرا کنین.", + "emaildisabled": "اي ديارگأ نترإ إنجومانامإ سيتۈن بفرشنإ", + "accountcreated": "هساڤ راسد ڤابي", + "createaccount-title": "هساڤ سي {{SITENAME}} راسد ڤابي", "loginlanguagelabel": "زۈن:$1", "pt-login": "ڤامین اوڤیڌن", "pt-login-button": "ڤامین اوڤیڌن", "pt-createaccount": "راسد کردن هساڤ کارياري", "pt-userlogout": "ز سامۈنإ درأڤوڌن", + "changepassword": "آلشد کردن رازينإ گوڤأرتن", + "oldpassword": "رازينإ گوڤأرتن ديندایي:", + "newpassword": "رازينإ گوڤأرتن تازأ:", "retypenew": "تایپ دوباره رمز:", + "botpasswords": "رازينإیل گوڤأرتن بوتا", + "botpasswords-label-appid": "نوم بوت:", "botpasswords-label-create": "راس كردن", + "botpasswords-label-update": "ب هنگوم سازی", "botpasswords-label-cancel": "أنجومشيڤ کردن", "botpasswords-label-delete": "پاکسا کردن", "botpasswords-label-resetpassword": "ز نۉ داڌن رازينإ گوأرتن", + "botpasswords-label-grants-column": "داڌإ ڤابي", + "resetpass-submit-loggedin": "آلشد کردن رازينإ گوڤأرتن", "resetpass-submit-cancel": "أنجومشيڤ کردن", "passwordreset": "ز نۉ داڌن رازينإ گوأرتن", "passwordreset-username": "نوم کارياري", "passwordreset-domain": "پوشگر", "passwordreset-email": "تيرنشۈن أنجومانامأ", + "passwordreset-emailtitle": "جوزيات هساڤ مإن{{SITENAME}}", + "passwordreset-invalidemail": "تيرنشۈن أنجومانامأ نادوروسد", + "changeemail-oldemail": "تيرنشۈن أنجومانامإ ايسني", + "changeemail-newemail": "تيرنشۈن أنجومانامإ تازأ:", "changeemail-none": "(هيش كوم)", + "changeemail-password": "رازينإ گوڤأرتن {{SITENAME}} ایسا:", + "changeemail-submit": "آلشد کردن أنجومانامأ", + "resettokens": "ز نۉ کردن نشۈنإیل", + "resettokens-tokens": "نشۈنإیل:", + "resettokens-token-label": "$1 (أرزایشت تازأ: $2)", "bold_sample": "متن Ú¯Ù¾ نما", "bold_tip": "متن Ú¯Ù¾ نما", "italic_sample": "متن شکسته", @@ -338,7 +377,9 @@ "anoneditwarning": "'''توجه:''' ایسا داخل سیستم نوابیدین.\nآی پی آدرستو درگزارش اصلاح صفحه ضبط ابوه.", "summary-preview": "پیش نمایش - خلاصه:", "blockedtext": " \"'''دسترسی نام کاربری یا نشانی اینترنتی ایسا بسته وابیده.'''\nای کار توسط $1 انجام شده‌است.\nدلیلی که گده اینه: $2''\n* آغاز قطع دسترسی: $8\n* زمان اتمام ای قطع دسترسی: $6\n* کاربری که قطع دسترسی‌اش در نظر بیده: $7\nایساترین با $1 یا یکی از [[{{MediaWiki:Grouppage-sysop}}|مدیران]] تماس بگیرین و در ای باره صحبت کنین.\nتوجه کنین که ایسا نترین زه امکان «ارسال پست الکترونیکی به ای کاربر» استفاده کنین مگر این که نشانی پست الکترونیکی معتبری در [[Special:Preferences|اولویتهای کاربری]]خود ثبت کرده بوین.\nنشانی IP ایسا $3 و شماره قطع دسترسی ایسا $5 است. لطفاً ای شماره‌ها را در همه کاوشهاتون ذکر کنین.\nایسا ترین با $1 یا یکی دیه زه [[{{MediaWiki:Grouppage-sysop}}|مدیران]] تماس بگیرین، تا در باره ای قطع دسترسی صحبت کنین.\nدقت کنین که سی ارسال پست الکترونیکی در ویکی، وا پست الکترونیکی خود را زه طریق صفحه[[Special:Preferences|تنظیمات]] فعال کرده بوین، و نیز، وا امکان استفاده زه ای ویژگی سی ایساقطع نبوه.\nنشانی اینترنتی الان ایسا $3 است و شماره قطع دسترسی $5 است.\nلطفاً ای شماره را در هر درخواستی که در ای مورد مطرح اکنین ذکر کنین", + "loginreqtitle": "ڤامإن إڤوڌن لازومإ", "loginreqlink": "ڤامین اوڤیڌن", + "accmailtitle": "رازينإ گوڤأرتن فرشناڌإ ڤابيڌإ", "newarticle": "(تازه)", "newarticletext": "ايسا ز دين یأ هومپیڤأندي هڌين Ú©Ø¥ نيڌس. سي رأڤأندياري بألگإ شورۈ کونين مإن اي جأڤإ دإڤۈني بنڤيسين(سي دونسدن بیشدر سإیل [$1]کونین).\nأر ايسا سي إشتڤاکاري ايچونين، دوگمإ رأهڌن ڤاپوشد نأ بپۈرنين.", "noarticletext": " ايسإ اي بألگإ نإڤشدإیي نارإ، ايسا تإرين [[Special:Search/{{PAGENAME}}داسۈن اي بألگإ نإ مإن بألگإآ ديأري پی جۈري کونين]] یا [{{fullurl:{{FULLPAGENAME}}|action=edit}} اي بألگإ نأ ڤيرایشد کونين].", @@ -346,12 +387,14 @@ "editing": "درحال اصلاح $1", "creating": "راسد کردن $1", "editingsection": "درحال اصلاح $1 (قسمت)", + "yourtext": "متن ايسا", "copyrightwarning": "لطفاً دقت کنین که درنظر گریده ابوه که همه شراکتهای ایسا {{SITENAME}} تحت «$2» منتشر ابون ).\n\n\n(سی دیدن جزئیات بیشتر به $1 برین\n\nایر نه خوین نوشته‌هاتو بی‌رحمانه اصلاح بوه و به دلخواه ارسال بوه، ایچو نفرستن.<br />\nدرضمن ایسادارین به ایما قول ادین که خودتو یونه نوشتین یا هونه زه یک منبع آزاد با مالکیت عمومی یا مثل هو ورداشتین. '''کارهای دارای کارهای دارای حق کپی رایت را بی‌اجازه نفرستین!'''',", "templatesused": "{{PLURAL:$1|چوٙأ|چوٙأیل}} ب کار گرهڌأ ڤابيڌإ مإن اي بألگأ:", "templatesusedpreview": "قالبها یا الگوهای استفاده وابیده در ای پیش نمایش:", "template-protected": "(تحت حمایت)", "template-semiprotected": "(نیمه حمایت وابیده)", "nocreatetext": "{{SITENAME}}قابلیت درست کردن صفحات تازه را محدود کرده‌. ترین برگردین و صفحه‌ موجود را اصلاح کنین یا اینکه [[Special:UserLogin|به سیستم داخل بوین یا حساب کاربری درست کنین]].", + "permissionserrorstext-withaction": "ايسا سی نياگري $2 سإلا\nنارين {{PLURAL:$1|دلیل|دليلا}}:", "recreate-moveddeleted-warn": "'''هشدار: ایسا در حال درست کردن دوباره صفحه‌ای هدین که قبلاً حذف وابیده '''در نظر داشته بوین که ادامه اصلاح ای صفحه کار درستی هده یا نه. نمایه حذف مربوط به ای صفحه سی راحتی کار در ادامه اویده", "content-model-wikitext": "ڤيکي تکست", "content-model-javascript": "جاڤا إسکريپت", @@ -376,6 +419,9 @@ "rev-delundel": "آلشد هال و بال ديإن", "rev-showdeleted": "دياري کردن", "revdelete-show-file-submit": "هأرإ", + "revdelete-log": "دلیل:", + "mergehistory-from": "بألگإ سرچشمأ:", + "mergehistory-reason": "دلیل:", "history-title": "دڤارتإ دیئن ڤيرگار $1", "difference-title": "فرخ مإنجقا ڤانإیريا \"$1\"", "lineno": "سطر $1:", @@ -400,10 +446,25 @@ "search-redirect": "(ڤاگردۈني ز $1)", "search-section": "(بهرجا $1)", "search-suggest": "منزۈرت یو بي:$1", + "search-interwiki-more": "(بيشدر)", "searchall": "همه", "search-nonefound": "هیژ نتیجه یی وا پی جست تو یکی نئ.", + "powersearch-toggleall": "همأ", + "powersearch-togglenone": "هيش کوم", "preferences": "اولویتها", "mypreferences": "خوصوٙیات هأنی", + "prefs-skin": "پۈسدأ", + "skin-preview": "پيش سإیل", + "prefs-watchlist": "سإیل برگ", + "prefs-editwatchlist": "ڤيرایشد سإیل برگ", + "prefs-misc": "شيڤسدن", + "prefs-resetpass": "آلشد کردن رازينإ گوڤأرتن", + "saveprefs": "إمایإ کردن", + "searchresultshead": "پی جۈري", + "stub-threshold-sample-link": "نمۈنأ", + "timezoneregion-africa": "إفرقا", + "timezoneregion-america": "إمرکا", + "timezoneregion-asia": "آسيا", "yourrealname": "نام واقعی:", "prefs-help-realname": "ذکر نام واقعی اختیاریه ایر تصمیم به گدن بگیرین هنگام ارجاع به آثارتو و انتساب هونو به ایسا زه نام واقعیتو استفاده ابوه", "grouppage-sysop": "{{ns:project}}:مدیران", @@ -719,6 +780,7 @@ "exif-software": "نرم افزار ب کارگرهڌني", "exif-exifversion": "نوسقإ Exif", "exif-colorspace": "رنگ ڤأرگأ", + "exif-datetimeoriginal": "گات و ڤخت راسد ڤابيإن دۈنسمنديا", "exif-datetimedigitized": "گات و وخت دیجیتالی کردن", "exif-orientation-1": "عادي", "namespacesall": "همه", diff --git a/languages/i18n/br.json b/languages/i18n/br.json index 139091a3da..29383dac6c 100644 --- a/languages/i18n/br.json +++ b/languages/i18n/br.json @@ -43,7 +43,7 @@ "tog-previewonfirst": "Rakwelet tres ar bajenn kerkent hag an aozadenn gentañ", "tog-enotifwatchlistpages": "Kas ur postel din pa vez kemmet ur bajenn zo war ma roll evezhiañ", "tog-enotifusertalkpages": "Kas ur postel din pa vez kemmet ma fajenn gaozeal", - "tog-enotifminoredits": "Kas ur postel din, ha pa vije evit kemenn kemmoù dister", + "tog-enotifminoredits": "Kas ur postel din, ha pa vije evit kemenn kemmoù dister war pajennoù pe restroù", "tog-enotifrevealaddr": "Lakaat ma chomlec'h postel war wel er posteloù kemenn-diwall", "tog-shownumberswatching": "Diskouez an niver a lennerien", "tog-oldsig": "Ho sinadur evit poent :", @@ -180,11 +180,13 @@ "tagline": "Eus {{SITENAME}}", "help": "Skoazell", "search": "Klask", + "search-ignored-headings": " #<!-- lezel al linenn-mañ tre evel m'emañ --> <pre>\n# Titloù a vo lezet a-gostez gant ar c'hlask.\n# Ar c'hemmoù graet amañ a vo lakaet e pleustr kerkent ha menegeret ar bajenn gant an titl.\n# Gallout a rit forsiñ un advenegeriñ ma rit ur c'hemm goullo en ur bajenn.\n# Setu penaos emañ an ereadur :\n# * Kement linenn zo, adalek an arouezenn \"#\" betek dibenn al linenn a zo un evezhiadenn.\n# * Kement linenn ha n'eo ket goullo a verk an titl rik a zo da vezañ lezet a-gostez, pennlizherennoù hag all.\nDaveennoù\nLiammoù diavaez\nGwelet ivez\n #</pre> <!-- lezel al linenn-mañ tre evel m'emañ -->", "searchbutton": "Klask", "go": "Kas", "searcharticle": "Mont", "history": "Istor ar bajenn", "history_short": "Istor", + "history_small": "istor", "updatedmarker": "kemmet abaoe ma zaol-sell diwezhañ", "printableversion": "Stumm da voullañ", "permalink": "Chomlec'h ar stumm-mañ", @@ -242,6 +244,7 @@ "pool-timeout": "Aet eur dreist d'an termen gortoz evit ar stankadenn", "pool-queuefull": "Soulgarget eo ar servijerioù", "pool-errorunknown": "Fazi dianav", + "pool-servererror": "N'eo ket hegerz ar servij kontañ ($1).", "poolcounter-usage-error": "Fazi implij : $1", "aboutsite": "Diwar-benn {{SITENAME}}", "aboutpage": "Project:Diwar-benn", @@ -268,11 +271,11 @@ "ok": "Mat eo", "retrievedfrom": "Adtapet diwar « $1 »", "youhavenewmessages": "$1 zo ganeoc'h ($2).", - "youhavenewmessagesfromusers": "$1 ho peus eus {{PLURAL:$3|un implijer all|$3 implijer}} ($2).", + "youhavenewmessagesfromusers": "{{PLURAL:$4|Bez' hoc'h eus}} $1 a-berzh {{PLURAL:$3|un implijer all|$3 implijer}} ($2).", "youhavenewmessagesmanyusers": " $1 ho peus implijerien a-leizh ($2).", - "newmessageslinkplural": "{{PLURAL:$1|ur gemennad nevez|999=kemennadoù nevez}}", - "newmessagesdifflinkplural": "{{PLURAL:$1|kemennad diwezhañ|999=kemennadoù diwezhañ}}", - "youhavenewmessagesmulti": "Kemennoù nevez zo ganeoc'h war $1", + "newmessageslinkplural": "{{PLURAL:$1|ur gemennadenn nevez|999=kemennadennoù nevez}}", + "newmessagesdifflinkplural": "{{PLURAL:$1|kemm diwezhañ|999=kemmoù diwezhañ}}", + "youhavenewmessagesmulti": "Kemennadennoù nevez zo ganeoc'h war $1", "editsection": "kemmañ", "editold": "kemmañ", "viewsourceold": "sellet ouzh tarzh an destenn", @@ -322,6 +325,7 @@ "databaseerror-query": "Reked : $1", "databaseerror-function": "Arc'hwel : $1", "databaseerror-error": "Fazi : $1", + "transaction-duration-limit-exceeded": "Kuit da lakaat kreskiñ betek re an termen respont eo bet nullet an treuzgread-mañ rak aet e oa ar pad skrivañ ($1) en tu all d'ar vevenn a $2 eilenn.\nM'emaoc'h o cheñch kalz elfennoù war un dro klaskit kentoc'h troc'hañ anezho e meur a oberiadenn disteroc'h.", "laggedslavemode": "Diwallit : marteze a-walc'h n'emañ ket ar c'hemmoù diwezhañ war ar bajenn-mañ", "readonly": "Hizivadurioù stanket war ar bank roadennoù", "enterlockreason": "Merkit perak eo stanket hag istimit pegeit e chomo evel-henn", @@ -330,8 +334,10 @@ "missingarticle-rev": "(adweladenn # : $1)", "missingarticle-diff": "(Dif : $1, $2)", "readonly_lag": "Stanket eo bet ar bank roadennoù ent emgefre p'emañ an eilservijerioù oc'h adpakañ o dale e-keñver ar pennservijer", + "nonwrite-api-promise-error": "Kaset e oa bet an talbenn HTTP 'Promise-Non-Write-API-Action' met savet e oa bet ar reked ouzh ur vodulenn skrivañ API.", "internalerror": "Fazi diabarzh", "internalerror_info": "Fazi diabarzh : $1", + "internalerror-fatal-exception": "Fazi groñs a seurt \"$1\"", "filecopyerror": "Dibosupl eilañ \"$1\" war-du \"$2\".", "filerenameerror": "Dibosupl da adenvel « $1 » e « $2 ».", "filedeleteerror": "Dibosupl eo diverkañ « $1 ».", @@ -345,21 +351,32 @@ "cannotdelete": "Dibosupl diverkañ ar bajenn pe ar restr \"$1\".\nMarteze e o bet diverket gant unan bennak all dija.", "cannotdelete-title": "N'haller ket diverkañ ar bajenn \"$1\"", "delete-hook-aborted": "Nullet ar c'hemmañ gant un astenn.\nAbeg dianav.", + "no-null-revision": "N'eus ket bet gallet krouiñ un adweladenn nevez c'houllo evit ar bajenn \"$1\"", "badtitle": "Titl fall", "badtitletext": "Faziek pe c'houllo eo titl ar bajenn goulennet; pe neuze eo faziek al liamm etreyezhel pe etrewiki.\nMarteze ez eus ennañ arouezennoù n'haller ket degemer en titloù.", + "title-invalid-empty": "Pe eo goullo titl ar bajenn c'houlennet pe n'eus ennañ nemet anv an esaouenn anv.", + "title-invalid-utf8": "Titl ar bajenn c'houlennet zo ennañ un heuliad UTF-8 direizh.", + "title-invalid-interwiki": "Titl ar bajenn c'houlennet zo ennañ ul liamm etrewiki n'haller ket ober gantañ en titloù.", + "title-invalid-talk-namespace": "Titl ar bajenn c'houlennet a ra dave d'ur bajenn gaozeal n'eus ket anezhi.", + "title-invalid-characters": "Titl ar bajenn c'houlennet zo ennañ arouezennoù direizh : \"$1\".", + "title-invalid-relative": "Un hent amvat zo gant an titl. Direizh eo titloù ar pajennoù amvat (./, ../) peogwir e vint dibosupl da dizhout dre merdeerioù implijet gant tud zo.", + "title-invalid-magic-tilde": "Titl ar bajenn c'houlennet zo ennañ un heuliad tildennoù burzhudus direizh (<nowiki>~~~</nowiki>).", + "title-invalid-too-long": "Re hir eo titl ar bajenn c'houlennet. N'hall ket bezañ hiroc'h eget $1 {{PLURAL:$1|okted}} er c'hod UTF-8.", + "title-invalid-leading-colon": "Titl ar bajenn c'houlennet zo ennañ un daoubik direizh er penn-kentañ.", "perfcached": "Krubuilhet eo ar roadennoù da-heul ha marteze n'int ket bet hizivaet. D'ar muiañ e c'haller kaout {{PLURAL:$1|un disoc'h|$1 disoc'h}} er grubuilh.", "perfcachedts": "Krubuilhet eo ar roadennoù da-heul hag hizivaet int bet da ziwezhañ d'an $1. D'ar muiañ e c'haller kaout {{PLURAL:$4|un disoc'h|$4 disoc'h}} er grubuilh.", "querypage-no-updates": "Diweredekaet eo an hizivaat evit ar bajenn-mañ. Evit poent ne vo ket nevesaet ar roadennoù amañ.", "viewsource": "Sellet ouzh tarzh an destenn", "viewsource-title": "Gwelet an tarzh evit $1", "actionthrottled": "Ober daleet", - "actionthrottledtext": "A-benn dizarbenn ar strob, n'haller ket implijout an ober-mañ re alies en ur frapad amzer lakaet, hag aet oc'h dreist ar muzul. Klaskit en-dro a-benn un nebeut munutennoù.", + "actionthrottledtext": "A-benn dizarbenn ar strob, n'haller ket implijout an ober-mañ re alies en ur frapad amzer lakaet, hag aet oc'h dreist ar muzul. Klaskit en-dro a-benn un nebeudig munutennoù.", "protectedpagetext": "Prennet eo bet ar bajenn-mañ kuit na vefe skrivet pe cheñchet un dra bennak enni", - "viewsourcetext": "Gallout a rit gwelet hag eilañ danvez ar bajenn-mañ", + "viewsourcetext": "Gallout a rit gwelet hag eilañ mammenn ar bajenn-mañ.", "viewyourtext": "Gallout a rit gwelet hag eilañ mammenn ho <strong>kemmoù</strong> d'ar bajenn-mañ.", "protectedinterface": "Testenn ar bajenn-mañ a dalvez evit etrefas ar meziant er wiki-mañ. Setu perak eo bet gwarezet ar bajenn.", "editinginterface": "'''Diwallit :''' Emaoc'h o kempenn ur bajenn a dalvez da sevel skridoù evit etrefas ar meziant. Ar c'hemmoù graet d'ar bajenn-mañ a cheñcho etrefas an holl implijerien. Mar fell deoc'h skoazellañ evit treiñ traoù, soñjit kentoc'h implijout [https://translatewiki.net/wiki/Main_Page?setlang=br translatewiki.net], ar raktres evit lec'helaat MediaWiki.", - "cascadeprotected": "Gwarezet eo ar bajenn-mañ; n'haller ket kemmañ anezhi ken p'he c'haver {{PLURAL:$1|er bajenn|e-mesk ar pajennoù}} da-heul zo bet gwarezet en ur zibab an dibarzh \"skalierad\" :\n$2", + "translateinterface": "Evit ouzhpennañ pe cheñch troidigezhioù en holl wikioù, grit gant [https://translatewiki.net/ translatewiki.net], anezhañ raktres lec'helaat MediaWiki.", + "cascadeprotected": "Gwarezet eo ar bajenn-mañ ; n'haller ket kemmañ anezhi ken p'he c'haver treuzkludet {{PLURAL:$1|er bajenn|e-mesk ar pajennoù}} da-heul zo bet gwarezet en ur zibab an dibarzh \"skalierad\" :\n$2", "namespaceprotected": "N'oc'h ket aotreet da gemmañ pajennoù an esaouenn anv '''$1'''.", "customcssprotected": "N'oc'h ket aotreet da gemmañ ar bajenn CSS-mañ rak kavout a reer enni arventennoù personel un implijer all.", "customjsprotected": "N'oc'h ket aotreet da gemmañ ar bajenn JavaScript-mañ rak kavout a reer enni arventennoù personel un implijer all.", @@ -369,7 +386,7 @@ "mypreferencesprotected": "N'ho peus ket ar gwirioù evit kemmañ ho Penndibaboù.", "ns-specialprotected": "N'haller ket kemmañ ar pajennoù en esaouenn anv {{ns:special}}.", "titleprotected": "Gwarezet eo bet an titl-mañ p'eo bet krouet gant [[User:$1|$1]].\nSetu amañ perak <em>$2</em>.", - "filereadonlyerror": "Dibosupl kemmañ ar restr \"$1\" abalamour m'emañ ar c'havlec'h restroù \"$2\" e mod lenn nemetken.\n\n\"''$3''\" eo an abeg roet gant ar merour en deus prennet anezhi.", + "filereadonlyerror": "Dibosupl kemmañ ar restr \"$1\" abalamour m'emañ ar c'havlec'h restroù \"$2\" e mod lenn nemetken.\n\n\"$3\" eo an abeg roet gant merour ar reizhiad en deus prennet anezhi.", "invalidtitle-knownnamespace": "Titl direizh gant an esaouenn anv \"$2\" hag an destenn \"$3\"", "invalidtitle-unknownnamespace": "Titl direizh gant an niverenn esaouenn anv $1 hag an destenn \"$2\" dianav", "exception-nologin": "N'oc'h ket kevreet", @@ -386,7 +403,7 @@ "yourname": "Anv implijer :", "userlogin-yourname": "Anv implijer", "userlogin-yourname-ph": "Merkit hoc'h anv implijer", - "createacct-another-username-ph": "Ebarzhiñ an anv implijer", + "createacct-another-username-ph": "Merkañ an anv implijer", "yourpassword": "Ger-tremen :", "userlogin-yourpassword": "Ger-tremen", "userlogin-yourpassword-ph": "Merkit ho ker-tremen", @@ -408,19 +425,12 @@ "login": "Kevreañ", "login-security": "Gwiriit hoc'h identelezh", "nav-login-createaccount": "Krouiñ ur gont pe kevreañ", - "userlogin": "Kevreañ / krouiñ ur gont", - "userloginnocreate": "Kevreañ", "logout": "Digevreañ", "userlogout": "Digevreañ", "notloggedin": "Digevreet", "userlogin-noaccount": "Kont ebet ganeoc'h c'hoazh ?", "userlogin-joinproject": "Kemer perzh e {{SITENAME}}", - "nologin": "N'hoc'h eus kont ebet ? $1.", - "nologinlink": "Krouiñ ur gont", "createaccount": "Krouiñ ur gont nevez", - "gotaccount": "Ur gont zo ganeoc'h dija ? '''$1'''.", - "gotaccountlink": "Kevreañ", - "userlogin-resetlink": "Ha disoñjet eo bet ho titouroù kevreañ ganeoc'h ?", "userlogin-resetpassword-link": "Ankouaet ho ker-tremen ganeoc'h ?", "userlogin-helplink2": "Skoazell evit kevreañ", "userlogin-loggedin": "Kevreet oc'h dija evel {{GENDER:$1|$1}}.\nImplijit ar furmskrid amañ dindan evit kevreañ evel un implijer all.", @@ -429,11 +439,10 @@ "createacct-emailrequired": "Chomlec'h postel", "createacct-emailoptional": "Chomlec'h postel (diret)", "createacct-email-ph": "Skrivit ho chomlec'h postel", - "createacct-another-email-ph": "Ebarzhiñ ur chomlec'h postel", + "createacct-another-email-ph": "Merkañ ur chomlec'h postel", "createaccountmail": "Implijout ur ger-tremen dibad ha kas anezhañ d'ar chomlec'h postel diferetDre bostel", "createaccountmail-help": "Gallout a ra bezañ implijet evit krouiñ ur gont evit unan bennak all hep gouzout ar ger-tremen.", "createacct-realname": "Anv gwir (diret)", - "createaccountreason": "Abeg :", "createacct-reason": "Abeg", "createacct-reason-ph": "Perak emaoc'h o krouiñ ur gont all", "createacct-reason-help": "Kemennadenn embannet e marilh ar c'hrouiñ kontoù", @@ -465,7 +474,8 @@ "wrongpassword": "Ger-tremen kamm. Klaskit en-dro.", "wrongpasswordempty": "Ger-tremen ebet. Lakait unan mar plij.", "passwordtooshort": "{{PLURAL:$1|1 arouezenn|$1 arouezenn}} hir a rank bezañ ar gerioù-tremen da nebeutañ.", - "passwordtoolong": "N'hall ket ar gerioù-tremen bezañ enno ouzhpenn $1 arouezenn.", + "passwordtoolong": "N'hall ket ar gerioù-tremen bezañ enno ouzhpenn $1 {{PLURAL:$1|1 arouezenn|$1 arouezenn}}.", + "passwordtoopopular": "N'haller ket ober gant gerioù-ter boutin betek re. Grit gant ur ger-tremen raloc'h.", "password-name-match": "Rankout a ra ho ker-tremen bezañ disheñvel diouzh hoc'h anv implijer.", "password-login-forbidden": "Berzet eo ober gant an anv implijer hag ar ger-tremen-mañ.", "mailmypassword": "Adderaouekaat ar ger-tremen", @@ -474,11 +484,11 @@ "noemail": "N'eus bet enrollet chomlec'h postel ebet evit an implijer \"$1\".", "noemailcreate": "Ret eo deoc'h merkañ ur chomlec'h postel reizh", "passwordsent": "Kaset ez eus bet ur ger-tremen nevez da chomlec'h postel an implijer \"$1\".\nTrugarez deoc'h da gevreañ kerkent ha ma vo bet resevet ganeoc'h.", - "blocked-mailpassword": "N'haller ket kemmañ pajennoù gant ar chomlec'h IP-mañ ken rak stanket eo bet. Gant se n'hallit ket implijout an arc'hwel adtapout gerioù-tremen, kuit m'en em ledfe gwallimplijoù.", + "blocked-mailpassword": "N'haller ket kemmañ pajennoù gant ar chomlec'h IP-mañ ken rak stanket eo bet. Kuit m'en em ledfe gwallimplijoù n'hallit ket implijout an arc'hwel adtapout gerioù-tremen adalek ar chomlec'h IP-mañ.", "eauthentsent": "Kaset ez eus bet ur postel kadarnaat war-du ar chomlec'h postel spisaet.\nA-raok na vije kaset postel ebet d'ar gont-se e vo ret deoc'h heuliañ ar c'huzulioù merket er postel resevet evit kadarnaat ez eo mat ho kont deoc'h.", "throttled-mailpassword": "Kaset ez eus bet deoc'h ur postel adderaouekaat e-kerzh an\n{{PLURAL:$1|eurvezh|$1 eurvezh}} tremenet. Evit mirout ouzh nep gaou ne gaser ket ouzhpenn ur postel a seurt-se bep {{PLURAL:$1|eurvezh|$1 eurvezh}}.", "mailerror": "Fazi en ur gas ar postel : $1", - "acct_creation_throttle_hit": "{{PLURAL:$1|1 gont|$1 kont}} zo bet krouet c'hoazh nevez zo dre ho chomlec'h IP gant gweladennerien d'ar wiki-mañ, ar pezh zo an niver brasañ aotreet. Dre se, n'hall ket ket ar weladennerien a implij an IP-mañ krouiñ kontoù mui evit ar mare.", + "acct_creation_throttle_hit": "Gweladennerien zo o deus implijet ho chomlec'h IP evit krouiñ {{PLURAL:$1|1 gont|$1 kont}} e-kerzh an $2 diwezhañ, ar pezh zo an niver brasañ aotreet. Dre se, n'hall ket ket ar weladennerien a implij an IP-mañ krouiñ kontoù mui evit ar mare.", "emailauthenticated": "Gwiriet eo bet ho chomlec'h postel d'an $2 da $3.", "emailnotauthenticated": "N'eo ket bet gwiriekaet ho chomlec'h postel evit c'hoazh.\nNe vo ket tu da gas postel ebet deoc'h evit hini ebet eus an dezverkoù dindan.", "noemailprefs": "Merkit ur chomlec'h postel mar fell deoc'h ez afe an arc'hwelioù-mañ en-dro.", @@ -528,18 +538,21 @@ "botpasswords-label-delete": "Dilemel", "botpasswords-label-resetpassword": "Adderaouekaat ar ger-tremen", "botpasswords-label-grants": "Aotreoù a c'haller ober ganto :", + "botpasswords-help-grants": "Gant an aotreoù e c'haller kaout ar gwirioù grataet d'ho kont implijer. N'eo ket peogwir e vo gweredekaet un aotre amañ e vo digoret gwirioù ouzhpenn deoc'h estreget ar re zo stag ouzh ho kont implijer. Kit da welet [[Special:ListGrants|taolenn an aotreoù]] evit gouzout hiroc'h.", "botpasswords-label-grants-column": "Aotreet", "botpasswords-bad-appid": "N'eo ket reizh anv ar robot « $1 »", "botpasswords-insert-failed": "C'hwitet eo ouzhpennadenn ar robot « $1 ». Hag ouzhpennet eo bet ?", "botpasswords-update-failed": "C'hwitet eo bet hizivadur anv ar robot « $1 ». Ha dilamet eo bet ?", "botpasswords-created-title": "Ger-tremen robotoù krouet", - "botpasswords-created-body": "Krouet mat eo bet ar ger-tremen « $1 ».", + "botpasswords-created-body": "Krouet eo bet ger-tremen ar robot \"$1\" evit an implijer \"$2\".", "botpasswords-updated-title": "Ger-tremen robotoù hizivaet", - "botpasswords-updated-body": "Hizivaet mat eo bet ar ger-tremen « $1 ».", + "botpasswords-updated-body": "Hizivaet mat eo bet ger-tremen ar robot \"$1\" evit an implijer \"$2\".", "botpasswords-deleted-title": "Ger-tremen robotoù dilamet", - "botpasswords-deleted-body": "Ar ger-tremen robotoù « $1 » zo bet dilamet.", - "botpasswords-newpassword": "<strong>\"$2\"</strong> eo ar ger-tremen evit kevreañ gant <strong>$1</strong>. Enrollit anezhañ, par plij, evit ober dave dezhañ diwezhatoc'h.</em>", + "botpasswords-deleted-body": "Dilamet eo bet ger-tremen ar robot \"$1\" evit an implijer \"$2\".", + "botpasswords-newpassword": "<strong>\"$2\"</strong> eo ar ger-tremen nevez evit kevreañ ouzh <strong>$1</strong>. Enrollit anezhañ evit ober dave dezhañ diwezhatoc'h.</em>(Evit ar robotoù kozh zo rekis evito e vefe heñvel an anv kevreañ ouzh hini an implijer a c'hall bezañ, e c'hallit ober gant <strong>$3</strong> da anv implijer ha gant <strong>$4</strong> evel ger-tremen).", "botpasswords-no-provider": "N'eo ket hegerz BotPasswordsSessionProvider.", + "botpasswords-restriction-failed": "N'hallit ket kevreañ abalamour d'ar strishadurioù war gerioù-tremen ar robotoù.", + "botpasswords-invalid-name": "N'eus ket a zispartier gerioù-tremen robot en anv implijer spisaet (\"$1\").", "botpasswords-not-exist": "N'eus ger-tremen bot ebet anvet \"$2\" gant an implijer \"$1\".", "resetpass_forbidden": "N'haller ket cheñch ar gerioù-termen", "resetpass_forbidden-reason": "N'haller ket cheñch ar gerioù-termen : $1", @@ -552,6 +565,8 @@ "resetpass-temp-password": "Ger-tremen da c'hortoz :", "resetpass-abort-generic": "Nullet eo bet kemm ar ger-tremen gant un astenn.", "resetpass-expired": "Deuet eo ho ker-tremen d'e dermen. Lakait ur ger-tremen nevez, mar plij, evit kevreañ.", + "resetpass-expired-soft": "Aet eo ho ker-tremen d'e dermen, ret eo adderaouekaat anezhañ. Dibabit ur ger-tremen nevez diouzhtu pe klikit war \"{{int:authprovider-resetpass-skip-label}}\" evit ober war-dro diwezhatoc'h.", + "resetpass-validity-soft": "Direizh eo ho ker-tremen : $1\n\nDibabit ur ger-tremen nevez diouzhtu, pe klikit war \"{{int:authprovider-resetpass-skip-label}}\" evit ober war-dro diwezhatoc'h.", "passwordreset": "Adderaouekaat ar ger-tremen", "passwordreset-text-one": "Leugnit ar furmskrid-mañ evit adderaouekaat ho ker-tremen.", "passwordreset-text-many": "{{PLURAL:$1|Leugnit unan eus ar maeziennoù da adderaouekaat ho ker-tremen.}}", @@ -564,25 +579,30 @@ "passwordreset-emailtext-ip": "Unan bennak (c'hwi moarvat gant ar chomlec'h IP $1) en deus goulennet ma vefe degaset soñj dezhañ eus titouroù e gont evit {{SITENAME}} ($4). Emañ liammet {{PLURAL:$3|ar gont implijer|ar c'hontoù implijer}} da-heul gant ar chomlec'h postel-mañ :\n\n$2\n\nMont a raio da get {{PLURAL:$3|ar ger-tremen da c'hortoz|ar gerioù-tremen da c'hortoz}} a-benn {{PLURAL:$5|un devezh|$5 deiz}}.\nMat e vefe deoc'h kevreañ ha dibab ur ger-tremen nevez bremañ. Mard eo bet goulennet kement-se gant unan bennak all pe m'hoc'h eus soñj eus ho ker-tremen orin ha mar ne fell ket deoc'h e cheñch ken, na daolit ket evezh ouzh ar gemennadenn-mañ ha dalc'hit d'ober gant ho ker-tremen kozh.", "passwordreset-emailtext-user": "Goulennet en deus an implijer $1 war {{SITENAME}} e vefe degaset soñj dezhañ eus titouroù e gont evit {{SITENAME}} ($4). Emañ liammet {{PLURAL:$3|ar gont implijer|ar c'hontoù implijer}} da-heul gant ar chomlec'h postel-mañ :\n\n$2\n\nMont a raio da get {{PLURAL:$3|ar ger-tremen da c'hortoz|ar gerioù-tremen da c'hortoz}} a-benn {{PLURAL:$5|un devezh|$5 deiz}}.\nMat e vefe deoc'h kevreañ ha dibab ur ger-tremen nevez bremañ. Mard eo bet goulennet kement-se gant unan bennak all pe m'hoc'h eus soñj eus ho ker-tremen orin ha mar ne fell ket deoc'h e cheñch ken, na daolit ket evezh ouzh ar gemennadenn-mañ ha dalc'hit d'ober gant ho ker-tremen kozh.", "passwordreset-emailelement": "Anv implijer : \n$1\n\nGer-tremen da c'hortoz : \n$2", - "passwordreset-emailsentemail": "Kaset ez eus bet ur postel deoc'h da adderaouekaat ho ker-tremen.", + "passwordreset-emailsentemail": "Mard eo liammet ar chomlec'h postel-mañ ouzh ho kont, neuze e vo kaset ur postel deoc'h da adderaouekaat ho ker-tremen.", + "passwordreset-emailsentusername": "Mard eo liammet ar chomlec'h postel-mañ gant an anv implijer-mañ, neuze e vo kaset ur postel deoc'h da adderaouekaat ho ker-tremen.", "passwordreset-nocaller": "Ret eo merkañ anv ur galver", "passwordreset-nosuchcaller": "N'eus ket eus ar galver : $1", + "passwordreset-ignored": "N'eus ket bet gallet adderaouekaat ar ger-termen. Marteze a-walc'h peogwir n'eus ket bet kefluniet pourvezer ebet ?", "passwordreset-invalidemail": "Chomlec'h postel direizh", "passwordreset-nodata": "N'eus bet lakaet anv implijer na chomlec'h postel ebet", "changeemail": "Kemmañ pe dilemel ar chomlec'h postel", - "changeemail-header": "Kemmañ chomlec'h postel ar gont", + "changeemail-header": "Leuniit ar furmskrid-mañ evit cheñch ho chomlec'h postel. Mar fell deoc'h distagañ ur chomlec'h postel bennak diouzh ho kont, lezit goullo lec'h ar chomlec'h postel nevez a-raok kadarnaat ar furmskrid.", "changeemail-no-info": "Ret eo deoc'h bezañ kevreet a-benn mont d'ar bajenn-se war-eeun.", "changeemail-oldemail": "Chomlec'h postel a-vremañ :", "changeemail-newemail": "Chomlec'h postel nevez :", + "changeemail-newemail-help": "Goullo e tlefe chom ar vaezienn-mañ mar fell deoc'h lemel kuit ho chomlec'h postel. Ne viot ket gouest da adderaouekaat ur ger-tremen ankouaet ganeoc'h ken ha ne resevot postel ebet a-berzh ar wiki-mañ ma lamit kuit ar chomlec'h postel.", "changeemail-none": "(hini ebet)", "changeemail-password": "Ho ker-tremen war {{SITENAME}}:", "changeemail-submit": "Cheñch chomlec'h postel", "changeemail-throttled": "Betek re hoc'h heus klasket kevreañ en aner.\nGortozit $1, mar plij, a-raok esaeañ en-dro.", "changeemail-nochange": "Merkit ur chomlec'h postel all.", "resettokens": "Adderaouekaat ar jedoueroù", + "resettokens-text": "Gallout a ri adderaouekaat amañ ar jedoueroù a aotre ac'hanoc'h da vont war roadennoù prevez zo hag a zo staget ouzh ho kont.\n\nMat e vefe deoc'h en ober m'hoc'h eus rannet anezho gant unan bennak dre fazi pe mard eo bet implijet ho kont gant unan bennak all mod pe vod.", "resettokens-no-tokens": "N'eus jedouer ebet da adderaouekaat.", "resettokens-tokens": "Jedoueroù :", "resettokens-token-label": "$1 (talvoud bremañ : $2)", + "resettokens-watchlist-token": "Jedouer evit lanvad web (Atom/RSS) [[Special:Watchlist|kemmañ pajennoù eus ho roll evezhiañ]]", "resettokens-done": "Jedoueroù adderaouekaet.", "resettokens-resetbutton": "Adderaouekaat ar jedoueroù diuzet", "bold_sample": "Testenn dev", @@ -614,17 +634,20 @@ "preview": "Rakwelet", "showpreview": "Rakwelet", "showdiff": "Diskouez ar c'hemmoù", + "blankarticle": "<strong>Taolit evezh :</strong> Goullo eo ar bajenn emaoc'h o krouiñ.\nMar klikit war \"{{int:savearticle}}\" en-dro e vo krouet hep netra ebet e-barzh.", "anoneditwarning": "</strong>Diwallit :</strong> N'oc'h ket kevreet.\nGallout a raio an holl dud gwelet ho chomlec'h IP ma rit kemmoù. Ma <strong>[$1kevreit]</strong>pe<strong>[$2 krouit ur gont]</strong>, e vo deroet ho kemmoù d'hoc'h anv-implijer, e-touez spletoù all.", "anonpreviewwarning": "''N'oc'h ket kevreet. Enrollañ a lakao war-wel ho chomlec'h IP e istor kemmoù ar bajenn.''", "missingsummary": "'''Taolit evezh:''' N'hoc'h eus ket lakaet tamm testenn diverrañ ebet evit ho kemmoù. Mar klikit war enrollañ en-dro, e vo enrollet ho testenn evel m'emañ hepmuiken.", + "selfredirect": "<strong>Taolit evezh :</strong> Emaoc'h oc'h adkas ar bajenn-mañ warni hec'h-unan.\nPe hoc'h eus spisaet ur pal a-dreuz evit an adkas pe emaoc'h o cheñch ur bajenn n'emañ ket da vezañ cheñchet evel-se.\nMar klikit war \"{{int:savearticle}}\" en-dro, e vo krouet an adkas forzh penaos.", "missingcommenttext": "Skrivit hoc'h evezhiadenn a-is.", - "missingcommentheader": "'''Taolit evezh :''' N'hoc'h eus lakaet tamm danvez/titl ebet d'hoc'h evezhiadenn.\nMar klikit war \"{{int:savearticle}}\" en-dro, e vo enrollet ho testenn evel m'emañ hepmuiken.", - "summary-preview": "Rakwelet an diverrañ :", + "missingcommentheader": "<strong>Taolit evezh :</strong> N'hoc'h eus lakaet tamm danvez/titl ebet d'hoc'h evezhiadenn.\nMar klikit war \"{{int:savearticle}}\" en-dro, e vo enrollet ho testenn evel m'emañ hepmuiken.", + "summary-preview": "Rakwelet un diverrañ eus ar c'hemmoù :", "subject-preview": "Rakwelet an danvez :", "previewerrortext": "C'hoarvezet ez eus ur fazi e-ser klask rakwelet ho kemmoù", "blockedtitle": "Implijer stanket", "blockedtext": "'''Stanket eo bet ho kont implijer pe ho chomlec'h IP'''\n\nGant $1 eo bet graet.\nSetu an abeg evit se : ''$2''.\n\n* Stanket adalek : $8\n* Stanket betek : $6\n* Pad ar stankadenn : $7\n\nGallout a rit mont e darempred gant $1 pe gant unan eus ar [[{{MediaWiki:Grouppage-sysop}}|verourien]] all evit eskemm ganto war se. N'hallit implijout an arc'hwel 'kas ur postel d'an implijer-mañ' nemet ma'z eus bet spisaet ganeoc'h ur chomlec'h postel reizh en ho [[Special:Preferences|penndibaboù kont]] ha ma n'eo ket bet stanket.\n$3 eo ho chomlec'h IP, ha #$5 eo niverenn an identelezh stanket.\nMerkit anezho en ho koulennoù bep tro.", "autoblockedtext": "Stanket eo bet ho chomlec'h IP ent emgefreek rak implijet e veze gant un implijer all bet stanket gant $1.\nSetu aze an abeg :\n\n: ''$2''\n\n* Deroù ar stankadenn : $8\n* Termen ar stankadenn : $6\n* Kont stanket : $7\n\nGallout a rit mont e darempred gant $1 pe gant unan eus ar\n[[{{MediaWiki:Grouppage-sysop}}|verourien]] all ma kavit abeg er stankadenn.\n\nNotennit mat ne c'hallot implijout an dibarzh \"kas ur postel d'an implijer\" nemet ma'z eus bet merket ganeoc'h ur chomlec'h postel reizh en ho [[Special:Preferences|penndibaboù implijer]] ha ma n'eo ket bet stanket ivez.\n\n$3 eo ho chomlec'h IP evit poent ha #$5 ho niverenn stankadenn.\nMerkit mat an titouroù-se war kement goulenn savet ganeoc'h.\n\n$5 eo ho niverenn stankadenn. Merkit mat an niverenn-se pa rit goulennoù.", + "systemblockedtext": "Stanket eo bet hoc'h anv implijer pe ho chomlec'h IP ent emgefre gant MediaWiki.\nSetu perak :\n\n:<em>$2</em>\n\n* Deroù ar stankadenn : $8\n* Termen ar stankadenn : $6\n* Hinienn a sell ar stankadenn outi : $7\n\n$3 eo ho chomlec'h IP diouzhtu.\nMerkit mat ar munudoù skrivet a-us er c'hlemmoù a c'halljec'h ober.", "blockednoreason": "n'eus bet roet abeg ebet", "whitelistedittext": "Ret eo deoc'h en em $1 evit gallout skridaozañ.", "confirmedittext": "Rankout a ri bezañ kadarnaet ho chomlec'h postel a-raok gallout kemmañ pajennoù. Skrivit ha kadarnait ho chomlec'h postel en ho [[Special:Preferences|penndibaboù implijer]] mar plij.", @@ -637,14 +660,14 @@ "accmailtext": "Kaset ez eus bet ur ger-tremen dargouezhek evit [[User talk:$1|$1]] da $2. Cheñchet e c'hall ar ger-tremen evit ar gont nevez-mañ bezañ war ar bajenn ''[[Special:ChangePassword|cheñch ger-tremen]]'', ur wezh kevreet.", "newarticle": "(Nevez)", "newarticletext": "Heuliet hoc'h eus ul liamm a gas d'ur bajenn n'eo ket bet savet evit c'hoazh.\nA-benn krouiñ ar bajenn-se, krogit da skrivañ er prenestr skridaozañ dindan (gwelet ar [$1 bajenn skoazell] evit gouzout hiroc'h).\nM'emaoc'h en em gavet amañ dre fazi, klikit war bouton '''kent''' ho merdeer evit mont war ho kiz.", - "anontalkpagetext": "---- ''Homañ eo ar bajenn gaozeal evit un implijer(ez) dizanv n'eus ket krouet kont ebet evit c'hoazh pe na implij ket anezhi.\nSetu perak e rankomp ober gant ar chomlec'h IP niverel evit anavezout anezhañ/i.\nGallout a ra ur chomlec'h a seurt-se bezañ rannet etre meur a implijer(ez).\nMa'z oc'h un implijer(ez) dizanv ha ma stadit ez eus bet kaset deoc'h kemennadennoù na sellont ket ouzhoc'h, gallout a rit [[Special:CreateAccount|krouiñ ur gont]]pe [[Special:UserLogin|kevreañ]] kuit a vagañ muioc'h a gemmesk gant implijerien dizanv all.", + "anontalkpagetext": "<em>Homañ eo ar bajenn gaozeal evit un implijer dizanv n'en deus ket krouet kont ebet evit c'hoazh pe na implij ket anezhi</em>.\nSetu perak e rankomp ober gant ar chomlec'h IP niverel evit anavezout anezhañ.\nGallout a ra ur chomlec'h a seurt-se bezañ rannet etre meur a implijer.\nMa'z oc'h un implijer dizanv ha ma stadit ez eus bet kaset deoc'h kemennadennoù na sellont ket ouzhoc'h, gallout a rit [[Special:CreateAccount|krouiñ ur gont]] pe [[Special:UserLogin|kevreañ]] kuit a vagañ muioc'h a gemmesk gant implijerien dizanv all.", "noarticletext": "N'eus tamm skrid ebet war ar bajenn-mañ evit poent.\nGallout a rit [[Special:Search/{{PAGENAME}}|klask an titl anezhi]] e pajennoù all,\n<span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} klask en oberiadennoù liammet], pe [{{fullurl:{{FULLPAGENAME}}|action=edit}} krouiñ ar bajenn]</span>.", "noarticletext-nopermission": "N'eus, evit ar mare, tamm testenn ebet war ar bajenn-mañ.\nGallout a rit [[Special:Search/{{PAGENAME}}|klask titl ar bajenn-mañ]] war pajennoù all,\npe <span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} klask er marilhoù kar]</span>, met n'oc'h ket aotreet da grouiñ ar bajenn-mañ.", "missing-revision": "N'eus ket eus adwel niv. $1 eus ar bajenn anvet « {{FULLPAGENAME}} ».\n\nC'hoarvezout a ra peurliesañ pa vez heuliet ul liamm istorel dispredet war-zu ur bajenn zo bet dilamet.\nGallout a reot kavout muioc'h a vunudoù e [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} renabl an dilamadurioù].", "userpage-userdoesnotexist": "N'eo ket enrollet ar gont \"<nowiki>$1</nowiki>\". Merkit ma fell deoc'h krouiñ/kemmañ ar bajenn-mañ.", "userpage-userdoesnotexist-view": "N'eo ket enrollet ar gont implijer \"$1\".", "blocked-notice-logextract": "Stanket eo an implijer-mañ evit poent.\nDindan emañ merket moned diwezhañ marilh ar stankadennoù, d'ho kelaouiñ :", - "clearyourcache": "Notenn :''' Goude bezañ enrollet ho pajenn e rankot freskaat krubuilh ho merdeer a-benn gwelet ar c'hemmoù.\n* '''Firefox / Safari:''' Derc'hel da bouezañ war ''Pennlizherenn'' en ur glikañ war ''Adkargañ'', pe pouezañ war ''Ctrl-F5'' pe ''Ctrl-R'' (''⌘-R'' war ur Mac); \n* ''''Google Chrome:''' Pouezañ war ''Ctrl-Pennlizh-R'' (''⌘-Shift-R'' war ur Mac)\n* '''Internet Explorer:''' Derc'hel da bouezañ war ''Ctrl'' en ur glikañ war ''Freskaat,'' pe pouezañ war ''Ctrl-F5''\n* ''''Konqueror: '''Klikañ war ''Adkargañ'' pe pouezañ war ''F5;'' \n* '''Opera:''' Riñsañ ar grubuilh e ''Ostilhoù → Penndibaboù''", + "clearyourcache": "<strong>Notenn :</strong> Goude bezañ enrollet ho pajenn e rankot freskaat krubuilh ho merdeer a-benn gwelet ar c'hemmoù.\n* <strong>Firefox / Safari:</strong> Derc'hel da bouezañ war <em>Pennlizherenn</em> en ur glikañ war <em>Adkargañ</em>, pe pouezañ war <em>Ctrl-F5</em> pe <em>Ctrl-R</em> (<em>⌘-R</em> war ur Mac); \n* <strong>Google Chrome:</strong> Pouezañ war <em>Ctrl-Pennlizh-R</em> (<em>⌘-Shift-R</em> war ur Mac)\n* <strong>Internet Explorer :</strong> Derc'hel da bouezañ war <em>Ctrl</em> en ur glikañ war <em>Freskaat</em>, pe pouezañ war <em>Ctrl-F5</em>\n* <strong>Konqueror :</strong> Klikañ war <em>Adkargañ</em> pe pouezañ war <em>F5</em>\n* <strong>Opera :</strong> Mont da <em>Arventennoù → lañser</em> (<em>Opera → Penndibaboù</em> war ur Mac) ha goude mont da <em>Prevezded & surentez → Riñsañ roadennoù ar grubuilh → Skeudennoù krubuilhet ha restroù</em>.", "usercssyoucanpreview": "'''Tun :''' Grit gant ar bouton \"{{int:showpreview}}\" evit testiñ ho follenn CSS nevez a-raok enrollañ anezhi.", "userjsyoucanpreview": "'''Tun :''' Grit gant ar bouton \"{{int:showpreview}}\" evit testiñ ho follenn JS nevez a-raok enrollañ anezhi.", "usercsspreview": "'''Dalc'hit soñj n'emaoc'h ken nemet o rakwelet ho follenn CSS deoc'h.'''\n'''N'eo ket bet enrollet evit c'hoazh!'''", @@ -657,8 +680,8 @@ "previewnote": "'''Diwallit mat, n'eus ken ur rakweled eus an destenn-mañ.'''\nN'eo ket bet enrollet ho kemmoù evit c'hoazh !", "continue-editing": "Mont d'an takad kemmañ", "previewconflict": "Gant ar rakweled e teu testenn ar bajenn war wel evel ma vo pa vo bet enrollet.", - "session_fail_preview": "'''Ho tigarez! N'eus ket bet tu da enrollañ ho kemmoù rak kollet eo bet roadennoù an dalc'h.'''\nKlaskit en-dro mar plij.\nMa ne'z a ket en-dro c'hoazh, klaskit [[Special:UserLogout|digevreañ]] hag adkevreañ war-lerc'h.", - "session_fail_preview_html": "'''Ho tigarez! N'omp ket bet gouest da enrollañ ho kemmoù rak kollet ez eus bet roadennoù e-kerzh an dalc'h.'''\n\n''Gweredekaet eo al linennoù HTML e {{SITENAME}}. Rak-se eo kuzh ar rakweledoù a-benn en em zifenn diouzh an tagadennoù JavaScript.''\n\n'''Mard e oa onest ar c'hemmoù hoc'h eus klasket degas, klaskit en-dro. '''\nMar ned a ket en-dro, klaskit [[Special:UserLogout|digevreañ]] ha kevreañ en-dro.", + "session_fail_preview": "Ho tigarez ! N'eus ket bet tu da enrollañ ho kemmoù rak kollet eo bet roadennoù an dalc'h.\n\nMarteze n'oc'h ket kevreet ken. <strong>Gwiriit emaoc'h mat kevreet ha klaskit en-dro</strong>.\n\nMa ne'z a ket en-dro c'hoazh, klaskit [[Special:UserLogout|digevreañ]] hag adkevreañ war-lerc'h. Gwiriit mat e asant ho merdeer resev toupinoù a-berzh al lec'hienn-mañ ivez.", + "session_fail_preview_html": "Ho tigarez ! N'omp ket bet gouest da enrollañ ho kemmoù rak kollet ez eus bet roadennoù e-kerzh an dalc'h.\n\n<em>Gweredekaet eo al linennoù HTML e {{SITENAME}}. Rak-se eo kuzh ar rakweledoù a-benn en em zifenn diouzh an tagadennoù JavaScript.</em>\n\n<strong>Ma oa reizh ar c'hemmoù hoc'h eus klasket degas, klaskit en-dro.</strong>\nMa ned a ket en-dro, klaskit [[Special:UserLogout|digevreañ]] hag adkevreañ goude. Gwiriit e asant mat ho merdeer degemer toupinoù a-berzh al lec'hienn-mañ ivez.", "token_suffix_mismatch": "'''Distaolet eo bet ar c'hemmoù degaset ganeoc'h abalamour ma oa bet kemmesket an arouezennoù poentadur gant ho merdeer en daveer kemmañ. Distaolet eo bet ar c'hemmoù kuit na vije breinet ar bajennad skrid.\nC'hoarvezout a ra a-wechoù pa implijit ur servijer proksi dreinek dizanav.'''", "edit_form_incomplete": "'''Darn eus ar furmskrid kemmañ zo chomet hep tizhout ar servijer ; gwiriit ervat emañ mat ho kemmoù tre evel m'int bet graet ganeoc'h ha klaskit en-dro.'''", "editing": "Oc'h aozañ $1", @@ -674,11 +697,12 @@ "yourdiff": "Diforc'hioù", "copyrightwarning": "Sellet e vez ouzh an holl degasadennoù graet war {{SITENAME}} evel ouzh degasadennoù a zouj da dermenoù ar $2 (Sellet ouzh $1 evit gouzout hiroc'h). Mar ne fell ket deoc'h e vefe embannet ha skignet ho skridoù, arabat kas anezho.<br />\nHeñveldra, prometiñ a rit kemer perzh dre zegas skridoù savet ganeoc'h hepken pe tennet eus ur vammenn frank a wirioù.\n'''NA IMPLIJIT KET LABOURIOÙ GANT GWIRIOÙ AOZER (COPYRIGHT) HEP AOTRE D'OBER KEMENT-SE!'''", "copyrightwarning2": "Notit mat e c'hall kement degasadenn graet ganeoc'h war {{SITENAME}} bezañ kemmet, adaozet pe lamet kuit gant an implijerien all. Mar ne fell ket deoc'h e vije kemmet-digemmet ar pezh hoc'h eus skrivet na gemerit ket perzh er raktres-mañ.<br /> Gouestlañ a rit ivez eo bet savet ar boued spered ganeoc'h pe eilet diwar ur vammenn frank a wirioù pe en domani foran (gwelet $1 evit gouzout hiroc'h). '''NA IMPLIJIT KET LABOURIOÙ GANT GWIRIOÙ AOZER HEP AOTRE D'OBER KEMENT-SE!'''", + "editpage-cannot-use-custom-model": "N'haller ket cheñch patrom danvez ar bajenn-mañ.", "longpageerror": "'''FAZI : {{PLURAL:$1|Ur c'hilookted|$1 kilookted}} hir eo an destenn lakaet ganeoc'h, ar pezh zo hiroc'h eget {{PLURAL:$2|ur c'hilookted|$2 kilookted}}, ar vent vrasañ aotreet. N'haller ket enrollañ.'''", - "readonlywarning": "'''KEMENN DIWALL : prennet eo bet an diaz titouroù evit bezañ trezalc'het; setu ne viot ket evit enrollañ ho kemmoù diouzhtu-diouzhtu eta.'''\n\nGallout a rit eilañ ha pegañ ho testenn en ur restr skrid all hag enrollañ anezhi a-benn diwezhatoc'hik.'''\n\nSetu an displegadenn lakaet gant ar merour eo bet prennet an traoù gantañ : $1", + "readonlywarning": "<strong>Diwallit : prennet eo bet an diaz roadennoù evit bezañ trezalc'het; setu ne viot ket evit enrollañ ho kemmoù diouzhtu-diouzhtu eta.</strong>\n\nGallout a rit eilañ ha pegañ ho skrid en ur restr testenn all hag enrollañ anezhañ a-benn diwezhatoc'hik.\n\nSetu an displegadenn lakaet gant ar merour reizhiad eo bet prennet an traoù gantañ : $1", "protectedpagewarning": "'''KEMENN DIWALL: Gwarezet eo bet ar bajenn-mañ. N'eus nemet an implijerien ganto ar statud merour a c'hall kemmañ anezhi.'''\nEnmont diwezhañ ar marilh a ziskouezer amañ a-is evel dave :", "semiprotectedpagewarning": "''Notenn :''' Gwarezet eo ar bajenn-mañ; n'eus nemet an implijerien bet krouet ur gont ganto a kemmañ anezhi. Kasadenn ziwezhañ ar marilh zo diskouezet amañ a-is evel dave :", - "cascadeprotectedwarning": "'''Diwallit :''' Prennet eo ar bajenn-mañ. N'eus nemet ar verourien a c'hall kemmañ anezhi peogwir he c'haver {{PLURAL:$1|er bajenn|e-mesk ar pajennoù}} da-heul zo bet gwarezet en ur zibab an dibarzh \"skalierad\" :", + "cascadeprotectedwarning": "<strong>Diwallit :</strong> Prennet eo ar bajenn-mañ. N'eus nemet ar verourien a c'hall kemmañ anezhi peogwir emañ treuzkludet {{PLURAL:$1|er bajenn|e-mesk ar pajennoù}} da-heul zo bet gwarezet en ur zibab an dibarzh \"skalierad\" :", "titleprotectedwarning": "'''DIWALLIT : Gwarezet eo bet ar bajenn-mañ e doare ma ranker kaout [[Special:ListGroupRights|gwirioù dibar]] a-benn krouiñ anezhi.''' Kasadenn ziwezhañ ar marilh a zo diskouezet amañ a-is evel dave :", "templatesused": "{{PLURAL:$1|Patrom|Patromoù}} implijet war ar bajenn-mañ :", "templatesusedpreview": "{{PLURAL:$1|Patrom|Patromoù}} implijet er rakweladenn-mañ :", @@ -694,8 +718,10 @@ "permissionserrors": "Fazi aotre", "permissionserrorstext": "N'oc'h ket aotreet d'ober kement-mañ evit {{PLURAL:$1|an abeg-mañ|an abegoù-mañ}} :", "permissionserrorstext-withaction": "N'oc'h ket aotreet da $2, evit an {{PLURAL:$1|abeg-mañ|abeg-mañ}} :", + "contentmodelediterror": "N'hallit ket kemmañ an adweladenn-mañ peogwir ez eo par he fatrom danvez da <code>$1</code>, ar pezh zo disheñvel diouzh ar patrom danvez implijet bremañ war ar bajenn <code>$2</code>.", "recreate-moveddeleted-warn": "'''Diwallit : Emaoc'h o krouiñ ur bajenn zo bet diverket c'hoazh.'''\n\nEn em soñjit ervat ha talvoudus eo kenderc'hel krouiñ ar bajenn.\nDeoc'h da c'houzout, aze emañ ar marilhoù diverkañ hag adenvel :", "moveddeleted-notice": "Diverket eo bet ar bajenn-mañ.\nDindan emañ ar marilh diverkañ hag adenvel.", + "moveddeleted-notice-recent": "Ho tigarez, nevez ziverket eo bet ar bajenn-mañ (e-kerzh an 24 eurvezh tremenet).\nDindan emañ ar marilhoù diverkañ hag adenvel evit ho kelaouiñ.", "log-fulllog": "Gwelet ar marilh klok", "edit-hook-aborted": "C'hwitet ar c'hemmañ gant un astenn.\nAbeg dianav.", "edit-gone-missing": "Dibosupl hizivaat ar bajenn.\nDiverket eo bet evit doare.", @@ -710,21 +736,29 @@ "invalid-content-data": "n'eo ket mat roadennoù an endalc'had", "content-not-allowed-here": "N'eo ket aotreet an endalc'had \"$1\" er bajenn [[$2]]", "editwarning-warning": "Mar kuitait ar bajenn-mañ e c'hallit koll ar c'hemmoù degaset ganeoc'h.\nMa'z oc'h kevreet e c'hallit diweredekaat ar c'hemenn-diwall-mañ e rann \"{{int:prefs-editing}}\" en ho penndibaboù.", + "editpage-invalidcontentmodel-title": "N'eo ket skoret ar patrom danvez", + "editpage-invalidcontentmodel-text": "N'eo ket skoret ar patrom danvez \"$1\".", "editpage-notsupportedcontentformat-title": "Furmad endalc'had ha n'eo ket kemeret e karg", + "editpage-notsupportedcontentformat-text": "N'eo ket skoret ar patrom $1 gant ar patrom danvez $2.", "content-model-wikitext": "wikitestenn", "content-model-text": "testenn blaen", "content-model-javascript": "Javascript", "content-model-css": "CSS", "content-json-empty-object": "Elfenn goullo", "content-json-empty-array": "Taolenn c'houllo", - "expensive-parserfunction-warning": "Diwallit : Re a c'halvoù koustus e-keñver an arc'hwelioù parser zo gant ar bajenn-mañ.\n\nDleout a rafe bezañ nebeutoc'h eget $2 {{PLURAL:$2|galv|galv}}, ha {{PLURAL:$1|$1 galv|$1 galv}} zo.", + "deprecated-self-close-category": "Pajennoù a ra gant tikedennoù HTML emserriñ direizh", + "deprecated-self-close-category-desc": "Er bajenn-mañ ez eus tikedennoù HTML emserriñ, evel <code><b/></code> pe <code><span/></code>. Cheñch a raio o emzalc'h a-raok pell evit bezañ diouzh an erbedadennoù HTML5. Gant se eo dispredet implijout anezho er wikitestenn.", + "duplicate-args-warning": "<strong>Taolit evezh : Emañ </strong> [[:$1]] o c'hervel [[:$2]] gant muioc'h eget un talvoud evit an arventenn \"$3\". N'eus nemet an talvoud pourchaset da ziwezhañ a vo implijet.", + "duplicate-args-category": "Pajennoù a ra gant arguzennoù eilet er galvoù patrom", + "duplicate-args-category-desc": "Er bajenn-mañ ez eus galvoù patroù a ra gant arguzennoù eilet, evel <code><nowiki>{{foo|bar=1|bar=2}}</nowiki></code> pe <code><nowiki>{{foo|bar|1=baz}}</nowiki></code>.", + "expensive-parserfunction-warning": "<strong>Diwallit :</strong>: Re a c'halvoù koustus e-keñver an arc'hwelioù parser zo er bajenn-mañ.\n\nDleout a rafe bezañ nebeutoc'h eget $2 {{PLURAL:$2|galv}}, ha {{PLURAL:$1|$1 galv}} zo.", "expensive-parserfunction-category": "Pagjennoù enno re a c'halvoù koustus e-keñver an arc'hwelioù parser.", "post-expand-template-inclusion-warning": "Diwallit : re a batromoù zo war ar bajenn-mañ.\nLod anezho a vo lakaet a-gostez.", "post-expand-template-inclusion-category": "Pajennoù enno re a batromoù", "post-expand-template-argument-warning": "Diwallit : war ar bajenn-mañ ez eus eus da nebeutañ un arventenn eus ur patrom zo re vras.\nA-gostez eo bet lezet an arventenn-se.", "post-expand-template-argument-category": "Pajennoù enno arventennoù patrom bet lezet a-gostez", "parser-template-loop-warning": "Patrom e kelc'h detektet : [[$1]]", - "parser-template-recursion-depth-warning": "Tizhet bevenn donder galvoù ar patromoù ($1)", + "parser-template-recursion-depth-warning": "Tizhet bevenn donder galvoù rekursivek ar patromoù ($1)", "language-converter-depth-warning": "Aet eur en tu all d'ar vevenn amdreiñ yezhoù ($1)", "node-count-exceeded-category": "Pajennoù m'eur aet en tu all d'an niver a skoulmoù", "node-count-exceeded-category-desc": "Mont a ra ar bajenn-mañ en tu all da gont uhelañ ar skoulmoù.", @@ -742,6 +776,7 @@ "undo-summary": "Dizober kemmoù $1 a-berzh [[Special:Contributions/$2|$2]] ([[User talk:$2|kaozeal]])", "undo-summary-username-hidden": "Dizober ar reizhadenn $1 gant un implijer kuzhet", "cantcreateaccount-text": "Stanket eo bet ar c'hrouiñ kontoù adal ar chomlec'h IP ('''$1''') gant [[User:$3|$3]].\n\nAn abeg roet gant $3 zo ''$2''", + "cantcreateaccount-range-text": "Berzet eo bet gant [[User:$3|$3]] ar c'hrouiñ kontoù adalek ar chomlec'hioù IP el lijorennoù <strong>$1</strong> m'emañ ho chomlec'h IP (<strong>$4</strong>), \n\n<em>$2</em> eo an abeg roet gant $3", "viewpagelogs": "Gwelet ar marilhoù evit ar bajenn-mañ", "nohistory": "Ar bajenn-mañ n'he deus tamm istor ebet.", "currentrev": "Stumm a-vremañ pe stumm red", @@ -767,11 +802,13 @@ "history-feed-description": "Istor ar c'hemmoù degaset war ar bajenn-mañ eus ar wiki", "history-feed-item-nocomment": "$1 d'an $2", "history-feed-empty": "Ar bajenn goulennet n'eus ket anezhi.\nMarteze eo bet diverket eus ar wiki, pe adanvet.\nImplijit [[Special:Search|klaskit er wiki]] evit kavout pajennoù all a c'hallfe klotañ.", + "history-edit-tags": "Kemmañ tikedennoù ar stummoù diuzet", "rev-deleted-comment": "(diverradenn ar c'hemm diverket)", "rev-deleted-user": "(anv implijer diverket)", - "rev-deleted-event": "(elfenn dilamet)", + "rev-deleted-event": "(munudoù ar marilh bet dilamet)", "rev-deleted-user-contribs": "[anv implijer pe chomlec'h IP diverket - kemm kuzhet diouzh an degasadennoù]", "rev-deleted-text-permission": "'''Diverket''' eo bet ar stumm-mañ eus ar bajenn.\nMarteze e kavot munudoù war [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} roll ar pajennoù diverket].", + "rev-suppressed-text-permission": "<strong>Diverket</strong> eo bet ar stumm-mañ eus ar bajenn.\nGallout a reot kavout ar munudoù e [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} marilh an diverkadennoù].", "rev-deleted-text-unhide": "!'''Diverket''' eo bet ar stumm-mañ eus ar bajenn.\nMarteze e kavot munudoù war [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} marilh ar pajennoù diverket].\nGallout a rit [$1 gwelet ar stumm-se] c'hoazh mar fell deoc'h kenderc'hel.", "rev-suppressed-text-unhide": "'''Diverket''' eo bet ar stumm-mañ eus ar bajenn.\nTitouroù zo da gaout war [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} marilh ar pajennoù diverket].\nGallout a rit [$1 gwelet ar stumm-se] c'hoazh mar fell deoc'h kenderc'hel.", "rev-deleted-text-view": "'''Diverket''' eo bet ar stumm-mañ eus ar bajenn.\nGallout a rit sellet outañ ; titouroù all a gavot war [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} marilh ar pajennoù diverket].", @@ -786,11 +823,14 @@ "rev-showdeleted": "diskouez", "revisiondelete": "Diverkañ/diziverkañ stummoù", "revdelete-nooldid-title": "N'eus stumm pal ebet evit an degasadennoù", - "revdelete-nooldid-text": "Pe n'eo ket bet spisaet ganeoc'h ar stumm(où) pal da implijout an arc'hwel-mañ evito. pe n'eus ket eus ar stummoù spisaet, pe emaoc'h o klask kuzhat ar stumm red.", + "revdelete-nooldid-text": "Pe n'eus ket bet spisaet ganeoc'h stumm pal ebet da lakaat an arc'hwel-mañ da vont en-dro warnañ, pe n'eus ket eus ar stummoù spisaet, pe emaoc'h o klask kuzhat ar stumm red.", "revdelete-no-file": "N'eus ket eus ar restr spisaet ganeoc'h.", "revdelete-show-file-confirm": "Ha sur oc'h e fell deoc'h gwelet stumm diverket ar restr \"<nowiki>$1</nowiki>\" deiziataet eus an $2 da $3?", "revdelete-show-file-submit": "Ya", + "revdelete-selected-text": "{{PLURAL:$1|Stummoù diuzet|Stumm diuzet}} of [[:$2]]:", + "revdelete-selected-file": "{{PLURAL:$1|Stumm eus ar restr diuzet}} evit [[:$2]] :", "logdelete-selected": "{{PLURAL:$1|Darvoud eus ar marilh diuzet}} :", + "revdelete-text-text": "Dont a raio c'hoazh war wel ar stummoù diverket en istor ar bajenn met ne c'hallo ket an dud gwelet darn eus an danvez ken.", "revdelete-text-file": "Dalc'het e vo da welet stummoù restroù dilamet en istor ar restr, nemet ne c'hallo ket an dud mont da welet un darn anezho.", "logdelete-text": "Gwelet e vo c'hoazh dilamadennoù er marilhoù, nemet ne c'hallo ket an dud mont da welet un darn anezho.", "revdelete-text-others": "Ar verourien a c'hallo c'hoazh mont da welet petra zo e-barzh, hag eilpennañ an dilamadenn, nemet ha reolennoù strishoc'h ouzhpenn a vefe.", @@ -799,7 +839,7 @@ "revdelete-legend": "Lakaat strishadurioù gwelet", "revdelete-hide-text": "Testenn ar stumm", "revdelete-hide-image": "Kuzhat danvez ar restr", - "revdelete-hide-name": "Kuzhat an ober hag ar vukadenn", + "revdelete-hide-name": "Kuzhat ar pal hag an arventennoù", "revdelete-hide-comment": "Notenn ar c'hemm", "revdelete-hide-user": "Anv implijer pe chomlec'h IP an aozer", "revdelete-hide-restricted": "Diverkañ ar roadennoù kement d'ar verourien ha d'ar re all", @@ -810,9 +850,9 @@ "revdelete-unsuppress": "Lemel ar strishadurioù war ar stummoù assavet", "revdelete-log": "Abeg :", "revdelete-submit": "Lakaat da dalvezout evit an {{PLURAL:$1|adweladenn|adweladennoù}} diuzet", - "revdelete-success": "''Gweluster ar stummoù hizivaet mat.'''", + "revdelete-success": "Gweluster ar stummoù hizivaet.", "revdelete-failure": "''Dibosupl hizivaat gweluster ar stumm :'''\n$1", - "logdelete-success": "'''Gweluster ar marilh arventennet evel m'eo dleet.'''", + "logdelete-success": "Kemmet eo bet gweluster ar marilh.", "logdelete-failure": "'''N'eus ket bet gallet termeniñ gweluster ar marilh :'''\n$1", "revdel-restore": "Cheñch ar gweluster", "pagehist": "Istor ar bajenn", @@ -841,8 +881,15 @@ "mergehistory-go": "Diskouez ar stummoù a c'haller kendeuziñ", "mergehistory-submit": "Kendeuziñ ar stummoù", "mergehistory-empty": "N'haller ket kendeuziñ stumm ebet.", - "mergehistory-done": "Kendeuzet ez eus bet $3 {{PLURAL:$3|stumm|stumm}} eus $1 e [[:$2]].", + "mergehistory-done": "Kendeuzet ez eus bet $3 {{PLURAL:$3|stumm}} eus $1 e [[:$2]].", "mergehistory-fail": "Dibosupl kendeuziñ an istorioù. Gwiriit ar bajenn hag arventennoù an deiziadoù.", + "mergehistory-fail-bad-timestamp": "Merk amzer direizh.", + "mergehistory-fail-invalid-source": "Pajenn darzh direizh.", + "mergehistory-fail-invalid-dest": "Pajenn vuket direizh.", + "mergehistory-fail-no-change": "N'eus ket bet kendeuzet stumm ebet p'eo bet kendeuzet an istor. Gwiriit en-dro ar bajenn hag an arventennoù amzer.", + "mergehistory-fail-permission": "Re izel eo ho kwirioù evit gallout kendeuziñ an istor.", + "mergehistory-fail-self-merge": "Mammenn ha pal ar bajenn n'hall ket bezañ heñvel.", + "mergehistory-fail-timestamps-overlap": "En em frikañ a ra stummoù ar vammenn pe dont a reont war-lerc'h stummoù pal.", "mergehistory-fail-toobig": "Ne c'haller ket kendeuziñ an istorioù o vezañ ma vefe mont en tu all d'ar harzh a $1 reizhadenn da zilec'hiañ.", "mergehistory-no-source": "N'eus ket eus ar bajenn orin $1.", "mergehistory-no-destination": "N'eus ket eus ar bajenn dal $1.", @@ -898,9 +945,11 @@ "search-category": "(rummad $1)", "search-file-match": "(klotañ a ra gant endalc'had ar restr)", "search-suggest": "N'hoc'h eus ket soñjet kentoc'h e : $1", + "search-rewritten": "O tiskouez disoc'hoù evit $1. Klask $2 kentoc'h.", "search-interwiki-caption": "Raktresoù kar", "search-interwiki-default": "Disoc'hoù eus $1 :", "search-interwiki-more": "(muioc'h)", + "search-interwiki-more-results": "Muioc'h a zisoc'hoù", "search-relatedarticle": "Disoc'hoù kar", "searchrelated": "disoc'hoù kar", "searchall": "An holl", @@ -908,6 +957,7 @@ "showingresultsinrange": "O tiskouez amañ dindan betek {{PLURAL:$1|<strong>1</strong> disoc'h|<strong>$1</strong> a zisoc'hoù}} etre #<strong>$2</strong> ha #<strong>$3</strong>.", "search-showingresults": "{{PLURAL:$4|Disoc'h <strong>$1</strong> of <strong>$3</strong>|a zisoc'hoù <strong>$1 - $2</strong> diwar <strong>$3</strong>}}", "search-nonefound": "An enklask-mañ ne zisoc'h war netra.", + "search-nonefound-thiswiki": "N'eus bet kavet disoc'h ebet o klotañ gant ar reked el lec'hienn-mañ.", "powersearch-legend": "Klask araokaet", "powersearch-ns": "Klask en esaouennoù anv :", "powersearch-togglelabel": "Dibab :", @@ -917,6 +967,7 @@ "search-external": "Klask diavaez", "searchdisabled": "<p>Diweredekaet eo bet an arc'hwel klask war an destenn a-bezh evit ur frapad rak ur samm re vras e oa evit ar servijer. Emichañs e vo tu d'e adlakaat pa vo ur servijer galloudusoc'h ganeomp. Da c'hortoz e c'hallit klask gant Google:</p>", "search-error": "Ur fazi a zo bet e-ser klask : $1", + "search-warning": "Ur c'hemenn-diwall zo bet e-ser klask : $1", "preferences": "Penndibaboù", "mypreferences": "Penndibaboù", "prefs-edits": "Niver a zegasadennoù :", @@ -930,6 +981,8 @@ "prefs-rc": "Kemmoù diwezhañ", "prefs-watchlist": "Roll evezhiañ", "prefs-editwatchlist": "Kemmañ ar roll evezhiañ", + "prefs-editwatchlist-label": "Kemmañ titloù eus ho roll evezhiañ :", + "prefs-editwatchlist-edit": "Gwelet ha lemel titloù a-ziwar ho roll evezhiañ", "prefs-editwatchlist-raw": "Kemmañ ar roll evezhiañ (mod diginkl)", "prefs-editwatchlist-clear": "Diverkañ ho roll evezhiañ", "prefs-watchlist-days": "Niver a zevezhioù da ziskouez er rollad evezhiañ :", @@ -956,6 +1009,7 @@ "prefs-help-recentchangescount": "Kemer a ra an dra-mañ e kont ar c'hemmoù diwezhañ, istor ar pajennoù hag ar marilhoù.", "prefs-help-watchlist-token2": "Homañ zo an alc'hwez kuzh d'ho roll-evezhiañ davit boued war ar web. Forzh piv a anavez anezhañ a c'hall lenn ho roll-evezhiañ, setu na lavarit grit diwar e benn. M'ho pez ezhomm, e c'hallit [[Special:ResetTokens|assevel anezhañ]].", "savedprefs": "Enrollet eo bet ar penndibaboù.", + "savedrights": "Enrollet eo bet strolladoù implijer {{GENDER:$1|$1}}.", "timezonelegend": "Takad eur :", "localtime": "Eur lec'hel :", "timezoneuseserverdefault": "Ober gant talvoudenn dre ziouer ar wiki ($1)", @@ -985,6 +1039,7 @@ "youremail": "Postel :", "username": "{{GENDER:$1|Anv implijer|Anv implijerez}}:", "prefs-memberingroups": "{{GENDER:$2|Ezel}} eus {{PLURAL:$1|ar strollad|ar strolladoù}}:", + "group-membership-link-with-expiry": "$1 (betek $2)", "prefs-registration": "Deiziad enskrivañ :", "yourrealname": "Anv gwir*", "yourlanguage": "Yezh an etrefas ", @@ -995,12 +1050,12 @@ "badsig": "Direizh eo ho sinadur kriz; gwiriit ho palizennoù HTML.", "badsiglength": "Re hir eo ho sinadur.\nDre ret e rank bezañ nebeutoc'h eget {{PLURAL:$1|arouezenn|arouezenn}} ennañ.", "yourgender": "Penaos eo plij deoc'h bezañ deskrivet ?", - "gender-unknown": "Gwell eo ganin tevel war se", + "gender-unknown": "Pa vo graet anv ac'hanoc'h gant ar meziant e vo graet gant gerioù dic'hour bep tro ma vo posupl", "gender-male": "Aozañ a ra-eñ pajennoù wiki", "gender-female": "Aozañ a ra-hi pajennoù wiki", "prefs-help-gender": "Diret : implijet evit kenglotadurioù gour e troidigezh etrefas ar meziant.\nA-wel d'an holl e vo an titour-mañ.", "email": "Postel", - "prefs-help-realname": "Diret eo skrivañ hoc'h anv gwir.\nMa skrivit anezhañ e vo implijet evit lakaat war wel ar pezh a vo bet degaset ganeoc'h.", + "prefs-help-realname": "Diret eo skrivañ e anv gwir.\nMa rit gantañ e c'hall bezañ implijet evit reiñ hoc'h anv d'ar pezh a vo bet degaset ganeoc'h.", "prefs-help-email": "Diret eo merkañ ur chomlec'h postel met ma lakait unan e vo tu da adkas ur ger-tremen nevez deoc'h ma tichañsfe deoc'h disoñjal ho hini.", "prefs-help-email-others": "Gallout a rit lezel tud all da vont e darempred ganeoc'h dre ho pajennoù implijer ha kaozeal hep na vefe ret deoc'h diskuliañ piv oc'h ivez.", "prefs-help-email-required": "Ezhomm zo eus ur chomlec'h postel.", @@ -1021,23 +1076,34 @@ "prefs-tokenwatchlist": "Jedouer", "prefs-diffs": "Diforc'hioù", "prefs-help-prefershttps": "Efediñ a ray an dibarzh-mañ kentañ gwech ma kevreoc'h.", + "prefswarning-warning": "Kemmet eo bet ho penndibaboù ganeoc'h, met enrollet n'int ket bet avat.\nMar kuitait ar bajenn-mañ hep klikañ war \"$1\" ne vo ket nevesaet ho penndibaboù", "prefs-tabs-navigation-hint": "Titourig : Gallout a rit implijout an touchennoù bir kleiz ha bir dehoù evit merdeiñ etre an ivinelloù e roll an ivinelloù.", "userrights": "Merañ statud an implijerien", "userrights-lookup-user": "Diuzañ un implijer", "userrights-user-editname": "Lakait un anv implijer :", "editusergroup": "Kargañ strolladoù implijerien", "editinguser": "O kemmañ gwirioù an {{GENDER:$1|implijer|implijerez}} <strong>[[User:$1|$1]]</strong> $2", - "userrights-editusergroup": "Kemmañ strolladoù an implijer", - "userrights-viewusergroup": "Gwelet ar strolladoù implijerien", + "viewinguserrights": "Gwelet gwirioù an {{GENDER:$1|implijer|implijerez}} <strong>[[User:$1|$1]]</strong> $2", + "userrights-editusergroup": "Kemmañ strolladoù an {{GENDER:$1|implijer|implijerez}}", + "userrights-viewusergroup": "Gwelet strolladoù an {{GENDER:$1|implijer|implijerez}}", "saveusergroups": "Enrollañ strolladoù an {{GENDER:$1|implijer|implijerez}}", "userrights-groupsmember": "Ezel eus :", "userrights-groupsmember-auto": "Ezel emplegat eus :", - "userrights-groups-help": "Cheñch strollad an implijer a c'hallit ober.\n* Ul log asket a verk emañ an implijer er strollad.\n* Ul log diask a verk n'emañ ket an implijer er strollad.\n* Ur * a verk n'hallit ket dilemel ar strollad ur wech bet ouzhpennet, pe ar c'hontrol.", + "userrights-groups-help": "Cheñch strolladoù an implijer a c'hallit ober.\n* Ul log asket a verk emañ an implijer er strollad.\n* Ul log diask a verk n'emañ ket an implijer er strollad.\n* Ur * a verk n'hallit ket dilemel ar strollad ur wech bet ouzhpennet ganeoc'h, pe ar c'hontrol.\n* Ur # a verk a c'hallit astenn termen echuiñ ar strollad hepken ; n'hallit ket berraat anezhañ.", "userrights-reason": "Abeg :", "userrights-no-interwiki": "N'oc'h ket aotreet da gemmañ ar gwirioù implijer war wikioù all.", "userrights-nodatabase": "N'eus ket eus an diaz titouroù $1 pe n'eo ket lec'hel.", "userrights-changeable-col": "Ar strolladoù a c'hallit cheñch", "userrights-unchangeable-col": "Ar strolladoù n'hallit ket cheñch", + "userrights-expiry-current": "A ya d'e dermen d'an $1", + "userrights-expiry-none": "Didermen", + "userrights-expiry": "Termen :", + "userrights-expiry-existing": "Termen echuiñ merket : $3, $2", + "userrights-expiry-othertime": "Termen all :", + "userrights-expiry-options": "1 deiz:1 day,1 sizhun:1 week,1 miz:1 month,3 miz:3 months,6 miz:6 months, bloaz:1 year", + "userrights-invalid-expiry": "Direizh eo termen echuiñ ar strollad \"$1\".", + "userrights-expiry-in-past": "Re gozh eo termen echuiñ ar strollad \"$1\".", + "userrights-cannot-shorten-expiry": "N'hallit ket astenn termen echuiñ ar strollad \"$1\". N'eus nemet an implijerien aotreet da ouzhpennañ ha lemel ar strollad-mañ a c'hall astenn an termen.", "userrights-conflict": "Bec'h zo abalamour da gemmoù e gwirioù an implijerien. Adwelit an traoù, mar plij, ha kadarnait ho kemmoù.", "group": "Strollad :", "group-user": "Implijerien", @@ -1058,12 +1124,13 @@ "grouppage-bot": "{{ns:project}}:Botoù", "grouppage-sysop": "{{ns:project}}:Merourien", "grouppage-bureaucrat": "{{ns:project}}: Burevidi", - "grouppage-suppress": "{{ns:project}}: Dindan evezh", + "grouppage-suppress": "{{ns:project}}: Diverkerien", "right-read": "Lenn ar pajennoù", "right-edit": "Kemmañ ar pajennoù", "right-createpage": "Krouiñ pajennoù (estreget pajennoù kaozeal)", "right-createtalk": "Krouiñ pajennoù kaozeal", "right-createaccount": "Krouiñ kontoù implijer nevez", + "right-autocreateaccount": "Kevreañ ent emgefre gant ur gont implijer diavaez", "right-minoredit": "Merkañ ar c'hemmoù evel kemmoù dister", "right-move": "Adenvel pajennoù", "right-move-subpages": "Dilec'hiañ ar pajennoù gant o ispajennoù", @@ -1077,7 +1144,7 @@ "right-reupload-shared": "Gwaskañ restroù ent lec'hel war an diellaoueg vedia rannet", "right-upload_by_url": "Enporzhiañ ur restr adal ur chomlec'h URL", "right-purge": "Spujañ krubuilh ar pajennoù hep kadarnaat", - "right-autoconfirmed": "Kemmañ ar pajennoù damwarezet", + "right-autoconfirmed": "Na vezañ trubuilhet gant ar bevennoù kas liammet ouzh ar chomlec'hioù IP", "right-bot": "Plediñ ganti evel gant un argerzh emgefre", "right-nominornewtalk": "Arabat diskouez ar c'hemenn \"Kemennoù nevez zo ganeoc'h\" pa vez lakaet kemmoù dister e pajenn gaozeal un implijer", "right-apihighlimits": "Kreskiñ ar bevennoù er goulennoù API", @@ -1090,16 +1157,18 @@ "right-deletedtext": "Gwelet ar skrid diverket hag an diforc'hioù etre ar stummoù diverket", "right-browsearchive": "Klask pajennoù bet diverket", "right-undelete": "Assevel ur bajenn", - "right-suppressrevision": "Teuler ur sell war ar stummoù kuzhet ouzh ar verourien hag assevel anezho", + "right-suppressrevision": "Gwelet, kuzhat ha diguzhat stummoù resis pajennoù zo diouzh selloù an implijerien all", + "right-viewsuppressed": "Gwelet ar stummoù kuzhet diouzh an implijerien all", "right-suppressionlog": "Gwelet ar marilhoù prevez", "right-block": "Mirout ouzh an implijerien all a gemmañ pajennoù pelloc'h", "right-blockemail": "Mirout ouzh un implijer a gas posteloù", "right-hideuser": "Stankañ un implijer, en ur guzhat anezhañ diouzh ar re all", "right-ipblock-exempt": "Tremen dreist an IPoù stanket, ar stankadennoù emgefre hag ar bloc'hadennoù IP stanket", "right-unblockself": "En em zistankañ", - "right-protect": "Kemmañ live gwareziñ ar pajennoù ha kemmañ ar pajennoù gwarezet", + "right-protect": "Kemmañ live gwareziñ ar pajennoù ha kemmañ ar pajennoù gwarezet dre skalierad", "right-editprotected": "Aozañ ar pajennoù gwarezet evel \"{{int:protect-level-sysop}}\"", "right-editsemiprotected": "Aozañ ar pajennoù gwarezet evel \"{{int:protect-level-autoconfirmed}}\"", + "right-editcontentmodel": "Kemmañ patrom danvez ur bajenn bennak", "right-editinterface": "Kemmañ an etrefas implijer", "right-editusercssjs": "Kemmañ restroù CSS ha JS implijerien all", "right-editusercss": "Kemmañ restroù CSS implijerien all", @@ -1107,6 +1176,7 @@ "right-editmyusercss": "Aozañ ho restroù implijer CSS deoc'h-c'hwi", "right-editmyuserjs": "Aoazañ ho restroù JavaScript implijer deoc'h-c'hwi", "right-viewmywatchlist": "Gwelet ho roll-evezhiañ deoc'h-c'hwi", + "right-editmywatchlist": "Kemmañ ho roll evezhiañ deoc'h-c'hwi. Notit mat e vo c'hoazh ouzhpennet pajennoù hep ar gwir-mañ gant obererezhioù zo.", "right-viewmyprivateinfo": "Gwelet ho roadennoù prevez deoc'h-c'hwi (da sk. chomlec'h postel, anv gwirion)", "right-editmyprivateinfo": "Aozañ ho roadennoù prevez deoc'h-c'hwi (da sk. chomlec'h postel, anv gwirion)", "right-editmyoptions": "Kemmañ ho penndibaboù", @@ -1125,21 +1195,43 @@ "right-siteadmin": "Prennañ ha dibrennañ ar bank-titouroù", "right-override-export-depth": "Ezporzhiañ ar pajennoù en ur lakaat e-barzh ar pajennoù liammet betek un donder a 5 live", "right-sendemail": "Kas ur postel d'an implijerien all", + "right-managechangetags": "Krouiñ ha gweredekaat/diweredekaat [[Special:Tags|tikedennoù]]", + "right-applychangetags": "Lakaat [[Special:Tags|an tikedennoù]] e pleustr asambles gant kemmoù an-unan", + "right-changetags": "Ouzhpennañ ha dilemel [[Special:Tags|tikedennoù]], diwar ziviz, war adweladennoù hiniennel pe monedoù marilh.", + "right-deletechangetags": "Diverkañ[[Special:Tags|tikedennoù]] a-ziwar an diaz roadennoù", + "grant-generic": "Pakad aotreoù \"$1\"", + "grant-group-page-interaction": "Etreober gant pajennoù", + "grant-group-file-interaction": "Etreober gant mediaoù", + "grant-group-watchlist-interaction": "Etreober gant ho roll evezhiañ", "grant-group-email": "Kas ur postel", + "grant-group-high-volume": "Seveniñ ur pikol obererezh", + "grant-group-customization": "Personeladur ha penndibaboù", + "grant-group-administration": "Seveniñ oberoù melestradurel", + "grant-group-private-information": "Gwelet ar roadennoù prevez diwar ho penn", + "grant-group-other": "Obererezh liesseurt", "grant-blockusers": "Stankañ ha distankañ implijerien", "grant-createaccount": "Krouiñ kontoù", "grant-createeditmovepage": "Krouiñ, aozañ ha dilec'hiañ pajennoù", + "grant-delete": "Diverkañ ar pajennoù, an adweladennoù hag an enmontoù er marilh", + "grant-editinterface": "Kemmañ esaouenn anvioù MediaWiki hag ar CSS/JavaScript implijer", + "grant-editmycssjs": "Kemmañ ho CSS/JavaScript implijer", "grant-editmyoptions": "Kemmañ ho penndibaboù implijer.", "grant-editmywatchlist": "Kemmañ ho roll evezhiañ", "grant-editpage": "Kemmañ pajennoù a zo anezho c'hoazh", "grant-editprotected": "Kemmañ pajennoù gwarezet", + "grant-highvolume": "Kemmañ kementadoù bras", + "grant-oversight": "Kuzhat an implijerien ha diverkañ an adweladennoù", + "grant-patrol": "Gwiriañ ar c'hemmoù graet d'ar pajennoù", + "grant-privateinfo": "Gwelet an titouroù prevez", "grant-protect": "Gwareziñ ha diwareziñ pajennoù", "grant-rollback": "Distreiñ war ar c'hemmoù er pajennoù", "grant-sendemail": "Kas ur postel d'an implijerien all", + "grant-uploadeditmovefile": "Enporzhiañ, erlec'hiañ hag adenvel restroù", "grant-uploadfile": "Enporzhiañ restroù nevez", "grant-basic": "Gwirioù diazez", "grant-viewdeleted": "Gwelet ar restroù ha pajennoù dilamet", "grant-viewmywatchlist": "Gwelet ho roll evezhiañ", + "grant-viewrestrictedlogs": "Diskouez an enmontoù marilh kuzh", "newuserlogpage": "Marilh ar c'hontoù krouet", "newuserlogpagetext": "Marilh krouiñ ar c'hontoù implijer.", "rightslog": "Marilh statud an implijerien", @@ -1147,8 +1239,9 @@ "action-read": "lenn ar bajenn-mañ", "action-edit": "kemmañ ar bajenn-mañ", "action-createpage": "krouiñ ar bajenn-mañ", - "action-createtalk": "krouiñ pajennoù kaozeal", + "action-createtalk": "krouiñ ar bajenn-gaozeal-mañ", "action-createaccount": "krouiñ ar gont implijer-mañ", + "action-autocreateaccount": "Krouiñ ent emgefre ar gont implijer diavaez-mañ", "action-history": "gwelet istor ar bajenn-mañ", "action-minoredit": "merkañ ar c'hemm-mañ evel dister", "action-move": "dilec'hiañ ar bajenn-mañ", @@ -1162,11 +1255,13 @@ "action-upload_by_url": "pellgargañ ar restr-mañ adal ur chomlec'h URL", "action-writeapi": "Ober gant an API skrivañ", "action-delete": "diverkañ ar bajenn-mañ", - "action-deleterevision": "diverkañ ar stumm-mañ", - "action-deletedhistory": "Gwelet istor diverket ar bajenn-mañ", + "action-deleterevision": "diverkañ adweladennoù", + "action-deletelogentry": "Diverkañ enmontoù ar marilh", + "action-deletedhistory": "Gwelet istor diverket ur bajenn", + "action-deletedtext": "gwelet testenn diverket ar stumm-mañ", "action-browsearchive": "Klask pajennoù bet diverket", - "action-undelete": "diziverkañ ar bajenn-mañ", - "action-suppressrevision": "gwelet hag assevel ar stumm diverket-mañ", + "action-undelete": "diziverkañ pajennoù", + "action-suppressrevision": "gwiriañ hag assevel an adweladennoù kuzh", "action-suppressionlog": "gwelet ar marilh prevez-mañ", "action-block": "mirout ouzh an impplijer-mañ da zegas kemmoù", "action-protect": "kemmañ liveoù gwareziñ ar bajenn-mañ", @@ -1186,6 +1281,10 @@ "action-viewmywatchlist": "gwelet ho roll evezhiañ", "action-viewmyprivateinfo": "Gwelet ho titouroù prevez", "action-editmyprivateinfo": "aozañ ho titouroù prevez", + "action-editcontentmodel": "Kemmañ patrom danvez ur bajenn", + "action-managechangetags": "krouiñ ha gweredekaat/diweredekaat tikedennoù", + "action-applychangetags": "lakaat e pleustr an tikedennoù a-gevret gant ho kemmoù", + "action-changetags": "ouzhpennañ ha dilemel tikedennoù diwar ziviz diouzh adweladennoù hiniennel pe monedoù marilh", "action-deletechangetags": "Diverkañ tikedennoù a-ziwar an diaz-roadennoù", "action-purge": "spurjañ ar bajenn-mañ", "nchanges": "$1 {{PLURAL:$1|kemm|kemm}}", @@ -1205,18 +1304,61 @@ "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (gwelet ivez [[Special:NewPages|roll ar pajennoù nevez]])", "recentchanges-submit": "Diskouez", "rcfilters-activefilters": "Siloù oberiant", + "rcfilters-restore-default-filters": "Assevel ar siloù dre ziouer", + "rcfilters-clear-all-filters": "Riñsañ an holl siloù", + "rcfilters-search-placeholder": "Silañ ar c'hemmoù diwezhañ (merdeiñ pe kregiñ da skrivañ)", "rcfilters-invalid-filter": "Sil direizh", + "rcfilters-empty-filter": "Sil oberiant ebet. War wel emañ an holl gemmoù.", "rcfilters-filterlist-title": "Siloù", + "rcfilters-filterlist-feedbacklink": "Reiñ ho soñj diwar-benn ar siloù (beta) nevez", + "rcfilters-highlightbutton-title": "Lakaat an disoc'hoù war wel", + "rcfilters-highlightmenu-title": "Dibabit ul liv", + "rcfilters-highlightmenu-help": "Diuzañ ul liv evit lakaat ar perzh-mañ war wel", "rcfilters-filterlist-noresults": "N'eus bet kavet sil ebet", + "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": "Dizoberiant eo ar sil \"dienroll\" peogwir eo nullet e wered gant ar {{PLURAL:$2|sil|siloù}} Arroutet, na {{PLURAL:$2|gav|gavont}} nemet an implijerien enrollet : $1", + "rcfilters-filtergroup-authorship": "Kemmañ anv an aozer", "rcfilters-filter-editsbyself-label": "Kemmet ganeoc'h", "rcfilters-filter-editsbyself-description": "Kemmet ganeoc'h", "rcfilters-filter-editsbyother-label": "Kemmet gant tud all", "rcfilters-filter-editsbyother-description": "Kemmoù graet gant implijerien all (ket ganeoc'h).", - "rcfilters-filtergroup-userExpLevel": "Live skiant-prenañ an implijer", - "rcfilters-filter-userExpLevel-newcomer-label": "Tud nevez-deuet", - "rcfilters-filter-userExpLevel-learner-label": "Deskarded", - "rcfilters-filter-userExpLevel-experienced-label": "Implijerien arroutet", - "rcfilters-filter-userExpLevel-experienced-description": "Ouzhpenn 30 devezh oberiantiz ha 500 kemm.", + "rcfilters-filtergroup-userExpLevel": "Live skiant-prenañ (evit an implijer enrollet hepken)", + "rcfilters-filtergroup-user-experience-level-conflicts-unregistered": "Dizoberiant eo ar sil-mañ peogwir ne gav nemet implijerien enrollet, dre se emañ nullet e wered gant ar sil \"Dienroll\".", + "rcfilters-filtergroup-user-experience-level-conflicts-unregistered-global": "Emañ ar sil \"Dienroll\" oc'h en em sikanañ gant ur sil Arroutet pe meur a hini. Ar siloù Arroutet a gav implijerien enrollet hepken. Ar siloù o tabutal zo merket evel dizoberiant a-us.", + "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", + "rcfilters-filter-user-experience-level-learner-description": "Muioc'h a zeizioù obererezh hag a gemmoù eget \"deraouidi\" hogen nebeutoc'h eget an \"implijerien arroutet\".", + "rcfilters-filter-user-experience-level-experienced-label": "Implijerien arroutet", + "rcfilters-filter-user-experience-level-experienced-description": "Ouzhpenn 30 devezh oberiantiz ha 500 kemm.", + "rcfilters-filtergroup-automated": "Degasadennoù emgefre", + "rcfilters-filter-bots-label": "Robot", + "rcfilters-filter-bots-description": "Kemmoù graet gant ostilhoù emgefre.", + "rcfilters-filter-humans-label": "Den (ket ur robot)", + "rcfilters-filter-humans-description": "Kemmoù graet gant tud kig-hag-eskern.", + "rcfilters-filtergroup-reviewstatus": "Adwelet ar statud", + "rcfilters-filter-patrolled-label": "Gwiriet", + "rcfilters-filter-patrolled-description": "Merkañ ar c'hemmoù evel gwiriet.", + "rcfilters-filter-unpatrolled-label": "Anwiriet", + "rcfilters-filter-unpatrolled-description": "Kemmoù n'int ket merket evit gwiriet.", + "rcfilters-filtergroup-significance": "Talvoudegezh", + "rcfilters-filter-minor-label": "Kemmoù dister", + "rcfilters-filter-minor-description": "Kemmoù merket evel dister gant an aozer.", + "rcfilters-filter-major-label": "Kemmoù n'int ket dister", + "rcfilters-filter-major-description": "Kemmoù n'int ket bet merket evel dister", + "rcfilters-filtergroup-changetype": "Seurt kemm", + "rcfilters-filter-pageedits-label": "Kemmoù pajennoù", + "rcfilters-filter-pageedits-description": "Kemmoù da danvez ar wiki, d'ar c'haozeadennoù, da zeskrivadurioù rummadoù...", + "rcfilters-filter-newpages-label": "Krouidigezhioù pajennoù", + "rcfilters-filter-newpages-description": "Kemmoù a grou pajennoù nevez.", + "rcfilters-filter-categorization-label": "Kemmoù rummad", + "rcfilters-filter-categorization-description": "Roll ar pajennoù ouzhpennet da rummadoù zo pe dilamet diouto.", + "rcfilters-filter-logactions-label": "Obererezhioù enrollet", + "rcfilters-filter-logactions-description": "Obererezhioù melestradurel, krouiñ kontoù, diverkañ pajennoù, enporzhiañ...", "rcnotefrom": "Setu aze {{PLURAL:$5|ar c'hemm|ar c'hemmoù}} c'hoarvezet abaoe an <strong>$3, $4</strong> (<strong>$1</strong> d'ar muiañ).", "rclistfrom": "Diskouez ar c'hemmoù diwezhañ abaoe an/ar $3 $2", "rcshowhideminor": "$1 ar c'hemmoù dister", @@ -1237,6 +1379,7 @@ "rcshowhidemine": "$1 ma c'hemmoù", "rcshowhidemine-show": "Diskouez", "rcshowhidemine-hide": "Kuzhat", + "rcshowhidecategorization": "$1 rummatadur ar bajenn", "rcshowhidecategorization-show": "Diskouez", "rcshowhidecategorization-hide": "Kuzhat", "rclinks": "Diskouez an/ar $1 kemm diwezhañ c'hoarvezet e-pad an/ar $2 devezh diwezhañ.<br />$3", @@ -1248,7 +1391,7 @@ "newpageletter": "N", "boteditletter": "b", "number_of_watching_users_pageview": "[$1 {{PLURAL:$1|implijer o heuliañ|implijer}} o heuliañ]", - "rc_categories": "Bevenn ar rummadoù (dispartiañ gant \"|\")", + "rc_categories": "Bevenniñ d'ar rummadoù (dispartiet gant \"|\") :", "rc_categories_any": "Unan e-touez ar re zibabet", "rc-change-size-new": "$1 {{PLURAL:$1|okted|okted}} goude kemmañ", "newsectionsummary": "/* $1 */ rann nevez", @@ -1259,11 +1402,14 @@ "recentchangeslinked-feed": "Heuliañ ar pajennoù liammet", "recentchangeslinked-toolbox": "Heuliañ ar pajennoù liammet", "recentchangeslinked-title": "Kemmoù a denn da \"$1\"", - "recentchangeslinked-summary": "Rollet eo war ar bajenn dibar-mañ ar c'hemmoù diwezhañ bet degaset war ar pajennoù liammet ouzh ur bajenn lakaet (pe ouzh izili ur rummad lakaet).\nE '''tev''' emañ ar pajennoù zo war ho [[Special:Watchlist|roll evezhiañ]].", + "recentchangeslinked-summary": "Rollet eo war ar bajenn dibar-mañ ar c'hemmoù diwezhañ bet degaset war ar pajennoù liammet ouzh ur bajenn lakaet (pe ouzh izili ur rummad lakaet).\nE <strong>tev</strong> emañ ar pajennoù zo war ho [[Special:Watchlist|roll evezhiañ]].", "recentchangeslinked-page": "Anv ar bajenn :", "recentchangeslinked-to": "Diskouez ar c'hemmoù war-du ar pajennoù liammet kentoc'h eget re ar bajenn lakaet", "recentchanges-page-added-to-category": "[[:$1]] ouzhpennet d'ar rummad", - "recentchanges-page-removed-from-category": "Diverket eo bet [[$1]] diouzh ar rummad", + "recentchanges-page-added-to-category-bundled": "[[:$1]] ouzhpennet d'ar rummad, [[Special:WhatLinksHere/$1|emañ ensoc'het ar bajenn-mañ e diabarzh pajennoù all]]", + "recentchanges-page-removed-from-category": "Diverket eo bet [[:$1]] diouzh ar rummad", + "recentchanges-page-removed-from-category-bundled": "[[:$1]] dilamet diouzh ar rummad, [[Special:WhatLinksHere/$1|emañ ensoc'het ar bajenn-mañ e diabarzh pajennoù all]]", + "autochange-username": "Kemm emgefre gant MediaWiki", "upload": "Kargañ war ar servijer", "uploadbtn": "Kargañ ur restr", "reuploaddesc": "Distreiñ d'ar furmskrid.", @@ -1275,9 +1421,9 @@ "uploaderror": "Fazi enporzhiañ", "upload-recreate-warning": "'''Diwallit''' : Diverket pe dilec'hiet ez eus bet ur restr gant an anv-se.'''\n\nDeoc'h da c'houzout, setu aze marilh an diverkañ hag an dilec'hiañ evit ar bajenn-mañ.", "uploadtext": "Grit gant ar furmskrid a-is evit enporzhiañ restroù war ar servijer.\nEvit sellet pe klask skeudennoù bet enporzhiet a-raok sellit ouzh [[Special:FileList|roll ar skeudennoù]]. Kavet e vo ar skeudennoù enporzhiet war [[Special:Log/upload|marilh ar pajennoù enporzhiet]] hag an diverkadennoù war [[Special:Log/delete|istor an diverkadennoù]].\n\nEvit enklozañ ur skeudenn en ur pennad, lakait er pennad-se ul liamm skrivet evel-henn :\n*'''<code><nowiki>[[</nowiki>{{ns:file}}<nowiki>:anv_ar_restr.jpg]]</nowiki></code>''' evit diskouez ar restr en he spider brasañ ;\n*'''<code><nowiki>[[</nowiki>{{ns:file}}<nowiki>:anv_ar_restr.png|deskrivadenn]]</nowiki></code>''' evit ober gant ur munud 200 piksel ledander er ur voest a-gleiz enni \"testenn zeskrivañ\" da zeskrivadenn\n*'''<code><nowiki>[[</nowiki>{{ns:media}}<nowiki>:anv_ar_restr.ogg]]</nowiki></code>''' evit sevel ul liamm war-eeun war-du ar restr hep diskouez anezhi.", - "upload-permitted": "Seurtoù restroù aotreet : $1.", - "upload-preferred": "Seurtoù restroù gwellañ : $1.", - "upload-prohibited": "Seurtoù restroù berzet : $1.", + "upload-permitted": "{{PLURAL:$2|Seurt|Seurtoù}} restr aotreet : $1.", + "upload-preferred": "{{PLURAL:$2|Seurt|Seurtoù}} restr karetañ : $1.", + "upload-prohibited": "{{PLURAL:$2|Seurt|Seurtoù}} restr berzet : $1.", "uploadlogpage": "Marilh ar pajennoù enporzhiet", "uploadlogpagetext": "Setu a-is marilh ar restroù diwezhañ bet karget war ar servijer.\nS.o [[Special:NewFiles|rann ar skeudennoù nevez]] evit kaout ur sell gwiroc'h", "filename": "Anv ar restr", @@ -1313,15 +1459,18 @@ "largefileserver": "Brasoc'h eo ar restr-mañ eget ar pezh a c'hall ar servijer aotren.", "emptyfile": "Evit doare eo goullo ar restr bet karget ganeoc'h. Moarvat eo abalamour d'an tipo en anv ar restr. Gwiriit mat e fell deoc'h pellgargañ ar restr-mañ.", "windows-nonascii-filename": "N'eo ket skoret anvioù ar restroù enno arouezennoù dibar gant ar wiki-mañ.", - "fileexists": "Ur restr all gant an anv-se zo c'hoazh.\nTrugarez da wiriañ <strong>[[:$1]]</strong> ma n'oc'h ket sur e fell deoc'h kemmañ anezhi.\n[[$1|thumb]]", + "fileexists": "Ur restr all gant an anv-mañ zo c'hoazh.\nTrugarez da wiriañ <strong>[[:$1]]</strong> ma n'{{GENDER:|oc'h}} ket sur e fell deoc'h kemmañ anezhi.\n[[$1|thumb]]", "filepageexists": "Amañ <strong>[[:$1]]</strong> eo bet krouet ar bajenn zeskrivañ evit ar restr-mañ, padal n'eus restr ebet dezhi an anv-se evit c'hoazh.\nAn diverradenn skrivet ganeoc'h ne vo ket gwelet war ar bajenn zeskrivañ.\nMar fell deoc'h e teufe ho tiverradenn war wel eno eo ret deoc'h-c'hwi kemmañ anezhi hoc'h-unan.\n[[$1|thumb]]", - "fileexists-extension": "Bez' ez eus dija ur restr gant an anv-se war-bouez nebeut : [[$2|thumb]]\n* Anv ar restr emeur oc'h enporzhiañ : <strong>[[:$1]]</strong>\n* Anv ar restr zo anezhi dija : <strong>[[:$2]]</strong>\nDibabit un anv all mar plij.", + "fileexists-extension": "Bez' ez eus ur restr gant an hevelep anv koulz lavaret : [[$2|thumb]]\n* Anv ar restr emeur oc'h enporzhiañ : <strong>[[:$1]]</strong>\n* Anv ar restr zo anezhi c'hoazh : <strong>[[:$2]]</strong>\nDibab un anv all a fell deoc'h kentoc'h marteze ?", "fileexists-thumbnail-yes": "Evit doare ez eus ur skeudenn krennet he ment eus ar restr ''(thumbnail)''. [[$1|thumb]]\nGwiriit ar restr <strong>[[:$1]]</strong>.\nMard eo an hevelep skeudenn ha hini ar restr orin, ha heñvel he ment, n'eo ket dav pellgargañ ur stumm krennet ouzhpenn.", "file-thumbnail-no": "Kregiñ a ra anv ar restr gant <strong>$1</strong>.\nEvit doare eo ur skeudenn krennet he ment ''(thumbnail)''.\nMa'z eus ganeoc'h ur skeudenn uhel he fizhder, pellgargit anezhi; a-hend-all cheñchit anv ar restr.", "fileexists-forbidden": "Ur restr all gant an anv-se zo c'hoazh ha n'hall ket bezan diverket.\nMar fell deoc'h enporzhiañ ho restr memes tra, kit war ho kiz ha grit gant un anv all [[File:$1|thumb|center|$1]]", "fileexists-shared-forbidden": "Ur restr all dezhi an hevelep anv zo c'hoazh er c'havlec'h eskemm restroù.\nMar fell deoc'h enporzhiañ ar restr-mañ da vat, kit war ho kiz hag enporzhiit anezhi adarre dindan un anv all. [[File:$1|thumb|center|$1]]", + "fileexists-no-change": "Rik-heñvel ouzh ar stumm a-vremañ eus <strong>[[:$1]]</strong> eo an enporzhiadenn-mañ.", + "fileexists-duplicate-version": "Rik-heñvel ouzh {{PLURAL:$2|ur stumm koshoc'h|stummoù koshoc'h}} eus <strong>[[:$1]]</strong> eo an enporzhiadenn-mañ.", "file-exists-duplicate": "Un eil eus ar {{PLURAL:$1|restr|restroù}} da-heul eo ar restr-mañ :", "file-deleted-duplicate": "Diverket ez eus bet c'hoazh ur restr heñvel-poch ouzh ar restr-mañ ([[:$1]]). Gwelloc'h e vefe deoc'h teuler ur sell war istor diverkadenn ar bajenn-se a-raok hec'h enporzhiañ en-dro.", + "file-deleted-duplicate-notitle": "Ur restr rik-heñvel ouzh homañ zo bet dilamet c'hoazh, hag an titl zo bet diverket. Gwelloc'h e vefe deoc'h gwelet gant unan bennak a c'hall gwelet roadennoù ar restroù diverket evit gwiriañ an traoù a-raok mont da adenporzhiañ anezhi.", "uploadwarning": "Kemenn diwall en ur ezporzhiañ", "uploadwarning-text": "Cheñchit deskrivadur ar restr a-is ha klaskit en-dro.", "savefile": "Enrollañ ar restr", @@ -1330,6 +1479,20 @@ "uploaddisabledtext": "Diweredekaet eo an enporzhiañ restroù.", "php-uploaddisabledtext": "Diweredekaet eo bet ar pellgargañ e PHP. Gwiriit an dibarzh arventennoù file_uploads.", "uploadscripted": "Er restr-mañ ez eus kodoù HTML pe skriptoù a c'hallfe bezañ kammgomprenet gant ur merdeer Kenrouedad.", + "upload-scripted-pi-callback": "Dibosupl eo enporzhiañ ur restr enni kemennoù plediñ gant ur follenn stil XML.", + "uploaded-script-svg": "Kavet ez eus bet ul elfenn skriptadus \"$1\" er restr SVG enporzhiet.", + "uploaded-hostile-svg": "Kavet ez eus bet ur CSS diasur en elfenn stil ur restr SVG.", + "uploaded-event-handler-on-svg": "N'eo ket aotreet spisaat perzhioù merañ darvoudoù <code>$1=\"$2\"</code> er restroù SVG.", + "uploaded-href-attribute-svg": "N'eo aotreet ar perzhioù href ere restroù SVG nemet evit liammañ ouzh palioù http:// pe https://, <code><$1 $2=\"$3\"></code> kavet.", + "uploaded-href-unsafe-target-svg": "Kavet ez eus bet un href war-zu roadennoù diasur er restr SVG bet enporzhiet : URI pal <code><$1 $2=\"$3\"></code>.", + "uploaded-animate-svg": "Kavet ez eus bet un dikedenn \"vevaet\" a c'hallfe cheñch an href, en ur ober gant ar perzh \"from\" <code><$1 $2=\"$3\"></code> er restr SVG enporzhiet.", + "uploaded-setting-event-handler-svg": "Stanket eo kefluniañ perzhioù dre ar merer darvoudoù, <code><$1 $2=\"$3\"></code> kavet er restr SVG bet enporzhiet.", + "uploaded-setting-href-svg": "Difennet eo ober gant an dikedenn \"set\" evit ouzhpennañ ur perzh \"href\" d'an elfenn kar.", + "uploaded-wrong-setting-svg": "Difennet eo ober gant an dikedenn \"set\" evit ouzhpennañ ur pal a-bell/roadenn/skript d'ur perzh bennak. Kavet eo bet <code><set to=\"$1\"></code> er restr SVG enporzhiet.", + "uploaded-setting-handler-svg": "Stanket eo an SVG a spisa ar perzh \"handler\" gant a-bell/roadennoù/skript. Kavet eo bet <code>$1=\"$2\"</code> er restr SVG enporzhiet.", + "uploaded-remote-url-svg": "Stanket eo an SVG a spisa ur perzh stil gant un URL a-bell. Kavet eo bet <code>$1=\"$2\"</code> er restr SVG enporzhiet.", + "uploaded-image-filter-svg": "Kavet ez eus bet ur sil skeudennoù gant un URL : <code><$1 $2=\"$3\"></code> er restr SVG enporzhiet.", + "uploadscriptednamespace": "Un anv esaouenn berzet zo er restr SVG \"<nowiki>$1</nowiki>\".", "uploadinvalidxml": "N'eus ket bet gallet dielfennañ an XML er restr ezporzhiet.", "uploadvirus": "Viruzet eo ar restr! Titouroù : $1", "uploadjava": "Ur restr ZIP a ra gant Java .class eo homañ.\nN'haller ket enporzhiañ restroù Java peogwir e c'haller mont dreist da vevennoù surentez ganto.", @@ -1342,6 +1505,7 @@ "upload-options": "Dibaboù kargañ", "watchthisupload": "Evezhiañ ar bajenn-mañ", "filewasdeleted": "Ur restr gant an anv-mañ zo bet enporzhiet dija ha diverket goude-se. Mat e vefe deoc'h gwiriañ an $1 a-raok hec'h enporzhiañ en-dro.", + "filename-thumb-name": "Tennañ a ra da ditl ur munud. Na enpotzhiit ket munudoù skeudennoù zo er wiki dija. Ma n'eo ket unan, cheñchit anv ar restr evit ma vefe splannoc'h ha na grogfe ket evel titl ur munud.", "filename-bad-prefix": "Anv ar restr emaoc'h oc'h enporzhiañ a grog gant '''\"$1\"''', da lavaret eo un anv dizeskrivus roet alies ent emgefre gant luc'hskeudennerezioù niverel. Dibabit un anv splannoc'h evit deskrivañ ar restr.", "filename-prefix-blacklist": " #<!-- lezel al linenn-mañ tre ha tre evel m'emañ --> <pre>\n# Setu penaos emañ an ereadur :\n# * Pep tra adal un arouezenn \"#\" betek dibenn al linenn a ya d'ober un notenn\n# * Pep linenn n'eo ket goullo zo ur rakger evit anvioù restroù heverk roet ent emgefre gant luc'hskeudennerezioù niverel\nCIMG # Casio\nDSC_ # Nikon\nDSCF # Fuji\nDSCN # Nikon\nDUW # pellgomzerioù hezoug zo\nIMG # jenerik\nJD # Jenoptik\nMGP # Pentax\nPICT # misc.\n #</pre> <!-- leave this line exactly as it is -->", "upload-proto-error": "Protokol direizh", @@ -1353,6 +1517,9 @@ "upload-too-many-redirects": "Re a adkasoù zo en URL-mañ.", "upload-http-error": "Ur fazi HTTP zo bet : $1", "upload-copy-upload-invalid-domain": "N'haller ket seveniñ enporzhiadennoù a-bell adalek an domani-mañ.", + "upload-foreign-cant-upload": "N'eo ket kefluniet ar wiki-mañ evit enporzhiañ restroù d'ar c'havlec'h diellaouiñ diavaez goulennet.", + "upload-foreign-cant-load-config": "N'eus ket bet gallet kargañ ar c'hefluniadur enporzhiañ restroù diavaez d'ar c'havlec'h diellaouiñ.", + "upload-dialog-disabled": "Diweredekaet eo enporzhiañ restroù dre ar prenestr kaozeal-mañ war ar wiki-mañ.", "upload-dialog-title": "Kargañ ar restr", "upload-dialog-button-cancel": "Nullañ", "upload-dialog-button-back": "Kent", @@ -1361,12 +1528,20 @@ "upload-dialog-button-upload": "Enporzhiañ", "upload-form-label-infoform-title": "Munudoù", "upload-form-label-infoform-name": "Anv", + "upload-form-label-infoform-name-tooltip": "Un anv deskrivus nemetken evit ar restr a servijo da anv restr. Gallout a rit implijout ur yezh plaen gant esaouennoù. Arabat lakaat astenn ar restr.", "upload-form-label-infoform-description": "Deskrivadur", + "upload-form-label-infoform-description-tooltip": "Grit un tamm diverrañ eus perzhioù heverkañ al labour.\nEvit ur skeudenn, merkit ar pep pouezusañ eus ar pezh a weler, an degouezh pe al lec'h.", "upload-form-label-usage-title": "Implij", "upload-form-label-usage-filename": "Anv ar restr", "upload-form-label-own-work": "Setu aze ma zammig labour din-me", "upload-form-label-infoform-categories": "Rummadoù", "upload-form-label-infoform-date": "Deiziad", + "upload-form-label-own-work-message-generic-local": "Kadarnaat a ran emaon oc'h enporzhiañ ar restr-mañ en ur zoujañ d'an termenoù implijout ha d'ar reolennoù perc'henniezh a dalvez war {{SITENAME}}.", + "upload-form-label-not-own-work-message-generic-local": "Ma n'oc'h ket gouest da enporzhiañ ar restr-mañ en ur zoujañ da reolennoù implij {{SITENAME}}, serrit ar prenestr-mañ ha klaskit un doare all.", + "upload-form-label-not-own-work-local-generic-local": "Gallout a ri klask gant [[Special:Upload|ar bajenn enporzhiañ dre ziouer]] ivez.", + "upload-form-label-own-work-message-generic-foreign": "Kompren mat a ran emaon oc'h enporzhiañ ar restr-mañ en ur c'havlec'h rannet. Kadarnaat a ran e ran se en ur zoujañ d'an termenoù servij hag ar reolennoù war ar berc'henniezh.", + "upload-form-label-not-own-work-message-generic-foreign": "Ma n'oc'h ket gouest da enporzhiañ ar restr-mañ en ur zoujañ da reolennoù ar c'havlec'h rannet, serrit ar prenestr-mañ ha klaskit un doare all.", + "upload-form-label-not-own-work-local-generic-foreign": "Marteze hoc'h eus c'hoazh da glask en ur implijout [[Special:Upload|ar bajenn enporzhiañ war {{SITENAME}}]], ma c'hall ar restr-mañ bezañ enporzhiet eno en ur zoujañ d'o reolennoù implijout.", "backend-fail-stream": "Dibosupl eo lenn ar restr $1.", "backend-fail-backup": "Dibosupl enrollañ ar restr $1.", "backend-fail-notexists": "N'eus ket eus ar restr $1.", @@ -1385,7 +1560,7 @@ "backend-fail-read": "Dibosupl lenn ar restr $1.", "backend-fail-create": "Dibosupl eo krouiñ ar restr $1.", "backend-fail-maxsize": "Dibosupl skrivañ er restr $1 peogwir eo brasoc'h eget {{PLURAL:$2|un okted|$2 okted}}.", - "backend-fail-readonly": "Emañ an dermenell stokañ \"$1\" e mod lenn hepken. Setu aze an abeg a oa bet roet : \"$2\".", + "backend-fail-readonly": "Emañ an dermenell stokañ \"$1\" e mod lenn hepken. Setu aze an abeg a oa bet roet : <em>$2</em>.", "backend-fail-synced": "Emañ ar restr \"$1\" en ur stad direizhet en termenelloù stokañ diabarzh", "backend-fail-connect": "Dibosupl kevreañ ouzh termenell stokañ ar restr \"$1\".", "backend-fail-internal": "C'hoarvezet ez eus ur fazi dianav e termenell stokañ ar restr \"$1\".", @@ -1415,6 +1590,8 @@ "uploadstash-badtoken": "N'haller ket kas an ober-mañ da benn vat, marteze a-walc'h abalamour m'eo aet d'o zermen an titouroù kred ho poa roet. Klaskit en-dro.", "uploadstash-errclear": "N'eus ket bet gallet riñsañ ar restroù.", "uploadstash-refresh": "Freskaat roll ar restroù", + "uploadstash-thumbnail": "gwelet ar munud", + "uploadstash-exception": "Dibosupl stokañ an enporzhiadenn er sanailh ($1) : \"$2\".", "invalid-chunk-offset": "Direizh eo offset ar rannad", "img-auth-accessdenied": "Moned nac'het", "img-auth-nopathinfo": "Mankout a ra ar PATH_INFO.\nN'eo ket kefluniet ho servijer evit reiñ an titour-mañ.\nMarteze eo diazezet war CGI ha n'hall ket skorañ img_auth.\nGwelet https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Image_Authorization", @@ -1447,6 +1624,7 @@ "listfiles-delete": "dilemel", "listfiles-summary": "Diskouez a ra ar bajenn dibar-mañ an holl restroù bet ezporzhiet.", "listfiles_search_for": "Klask anv ar skeudenn :", + "listfiles-userdoesnotexist": "N'eo ket enrollet ar gont implijer \"$1\".", "imgfile": "restr", "listfiles": "Roll ar skeudennoù", "listfiles_thumb": "Munud", @@ -1501,6 +1679,7 @@ "filerevert-submit": "Disteuler", "filerevert-success": "'''Distroet eo bet [[Media:$1|$1]]''' da [stumm $4 an $3, $2].", "filerevert-badversion": "N'eus stumm lec'hel kent ebet eus ar restr-mañ d'ar mare spisaet.", + "filerevert-identical": "Heñvel-mik eo stumm a-vremañ ar restr ouzh an hini zo bet diuzet.", "filedelete": "Diverkañ $1", "filedelete-legend": "Diverkañ ar restr", "filedelete-intro": "War-nes diverkañ '''[[Media:$1|$1]]''' a-gevret gant e istor emaoc'h.", @@ -1518,12 +1697,14 @@ "filedelete-maintenance": "Evit ar mare eo diweredekaet an diverkañ hag an assevel restroù, amzer d'ober un tamm trezalc'h.", "filedelete-maintenance-title": "Dibosupl diverkañ ar restr", "mimesearch": "Klask MIME", - "mimesearch-summary": "Aotren a ra ar bajenn-mañ ar silañ restroù evit ar seurt restroù MIME. Enmont : seurt/isseurt, evel <code>skeudenn/jpeg</code>.", + "mimesearch-summary": "Aotren a ra ar bajenn-mañ silañ restroù dre o seurt MIME. Enmont : seurt danvez/isseurt pe seurt danvez, evel <code>skeudenn/jpeg</code>.", "mimetype": "Seurt MIME :", "download": "pellgargañ", "unwatchedpages": "Pajennoù n'int ket evezhiet", "listredirects": "Roll an adkasoù", "listduplicatedfiles": "Roll restroù gant doublennoù", + "listduplicatedfiles-summary": "Hemañ zo ur roll restroù m'eo stumm diwezhañ ur restr un eilad eus stumm diwezhañ ur restr bennak all. Ne vez kemeret e kont nemet ar restroù lec'hel.", + "listduplicatedfiles-entry": "[[$3|{{PLURAL:$2|un doubl|$2 doubl}}]] en deus [[:File:$1|$1]].", "unusedtemplates": "Patromoù dizimplij", "unusedtemplatestext": "Rollet eo amañ an holl bajennoù zo en esaouenn anv \"{{ns:template}}\" ha n'int ket implijet war pajenn ebet. Ho pet soñj da wiriañ mat hag-eñ n'eus ket liammoù all war-du ar patromoù-se a-raok diverkañ anezho.", "unusedtemplateswlh": "liammoù all", @@ -1553,9 +1734,11 @@ "statistics-users-active-desc": "Implijerien o deus degaset da nebeutañ ur c'hemm {{PLURAL:$1|an deiz paseet|e-kerzh an $1 deiz diwezhañ}}", "pageswithprop": "Pajennoù gant ur perzh pajenn", "pageswithprop-legend": "Pajennoù gant ur perzh pajenn", + "pageswithprop-text": "Rollañ a ra ar bajenn-mañ ar pajennoù a ra gant ur perzh pajenn dibar", "pageswithprop-prop": "Anv ar perzh :", "pageswithprop-submit": "Mont", "pageswithprop-prophidden-long": "talvoud perzh testenn hir kuzhet ($1)", + "pageswithprop-prophidden-binary": "Talvoud perzh binarel kuzhet ($1)", "doubleredirects": "Adkasoù doubl", "doubleredirectstext": "Rollañ a ra ar bajenn-mañ ar pajennoù a adkas da bajennoù adkas all.\nWar bep linenn ez eus liammoù war-du pajennoù an adkas kentañ hag en eil adkas, hag ivez war-du pajenn-dal an eil adkas zo sañset bezañ ar pal \"gwirion\" a zlefe an adkas kentañ kas di.\nDiskoulmet eo bet an enmontoù <del>barrennet</del>.", "double-redirect-fixed-move": "Dilec'hiet eo [[$1]].\nHizivaet eo bet ent emgefre ha bremañ ez adkas da [[$2]].", @@ -1586,10 +1769,12 @@ "uncategorizedcategories": "Rummadoù dirumm", "uncategorizedimages": "Restroù hep rummad", "uncategorizedtemplates": "Patromoù hep rummad", + "uncategorized-categories-exceptionlist": " # Ur roll rummadoù zo ennañ na zlefent ket bezañ meneget war Special:UncategorizedCategories. Unan dre linenn, en ur gregiñ gant \"*\". Ne vez ket kemeret e kont al linennoù a grog gant un arouezenn all (zoken gant esaouennoù c'houllo). Ober gant \"#\" evit ouzhpennañ evezhiadennoù.", "unusedcategories": "Rummadoù dizimplij", "unusedimages": "Skeudennoù en o-unan", "wantedcategories": "Rummadoù goulennet a vank", "wantedpages": "Pajennoù goulennet ar muiañ", + "wantedpages-summary": "Roll ar pajennoù a vank, gant ar muiañ a liammoù o kas war o zu, hep kontañ ar pajennoù n'eus nemet adkasoù o kas war o zu. Evit kaout roll ar pajennoù a vank gant adkasoù o kas war o zu, sellet ouzh [[{{#special:BrokenRedirects}}|roll an adkasoù a-dreuz]].", "wantedpages-badtitle": "Titl direizh er strollad disoc'hoù : $1", "wantedfiles": "Restroù a vank", "wantedfiletext-cat": "Ober a reer gant ar restroù da-heul koulskoude n'eus ket anezho. Gallout a reer rollañ kavlec'hioù diavaez ha pa vefe anezho. <del>Barrennet</del> e vo an holl falspozitivoù-se. Ouzhpenn-se emañ renablet an holl bajennoù zo enno restroù n'eus ket anezho e [[:$1]].", @@ -1614,6 +1799,7 @@ "deadendpagestext": "Ar pajennoù da-heul n'int ket liammet ouzh pajenn ebet all eus {{SITENAME}}.", "protectedpages": "Pajennoù gwarezet", "protectedpages-indef": "Gwarezoù da badout hepken", + "protectedpages-summary": "Rollañ a ra ar bajenn-mañ ar pajennoù zo gwarezet evit ar mare. Evit kaout roll ar pajennoù n'haller ket krouiñ, sellet ouzh [[{{#special:ProtectedTitles}}|{{int:protectedtitles}}]].", "protectedpages-cascade": "Gwarez dre skalierad hepken", "protectedpages-noredirect": "Kuzhat an adkasoù", "protectedpagesempty": "N'eus pajenn gwarezet ebet gant an arventennoù-mañ evit poent.", @@ -1627,6 +1813,7 @@ "protectedpages-unknown-timestamp": "Dianav", "protectedpages-unknown-performer": "Implijer dianav", "protectedtitles": "Titloù gwarezet", + "protectedtitles-summary": "Rollañ a ra ar bajenn-mañ an titloù n'haller ket implijout evit krouiñ pajennoù. Evit kaout roll ar pajennoù krouet gwarezet, sellet ouzh [[{{#special:ProtectedPages}}|{{int:protectedpages}}]].", "protectedtitlesempty": "N'eus bet gwarezet titl ebet dezhañ an arventennoù-se evit poent.", "protectedtitles-submit": "Diskwel an titloù", "listusers": "Roll an implijerien", @@ -1654,23 +1841,47 @@ "apihelp": "Skoazell an API", "apihelp-no-such-module": "N'eo ket bet kavet ar vodulenn \"$1\".", "apisandbox": "Poull-traezh API", + "apisandbox-jsonly": "Rekis eo JavaScript evit implijout poull-traezh an API.", "apisandbox-api-disabled": "Diweredekaet eo API war al lec'hienn-mañ.", - "apisandbox-intro": "Grit gant ar bajenn-mañ evit amprouiñ '''servij Web API MediaWiki'''.\nKit da deuler ur sell war [https://www.mediawiki.org/wiki/API:Main_page titouroù an API] evit gouzout hiroc'h war an doare da embreger API. Da skouer :\n[https://www.mediawiki.org/wiki/API#A_simple_example gwelet danvez ur bennbajenn]. Dibabit un oberiadenn bennak evit gwelet skouerioù all", + "apisandbox-intro": "Grit gant ar bajenn-mañ evit amprouiñ <strong>servij Web API MediaWiki</strong>.\nKit da deuler ur sell war [[mw:API:Main page|teuliadur API]] evit gouzout hiroc'h war an doare da embreger API. Da skouer :\n[https://www.mediawiki.org/wiki/API#A_simple_example gwelet danvez ur bajenn zegemer]. Dibabit un oberiadenn bennak evit gwelet skouerioù all.\n\nNotit mat : ha pa vefe ar bajenn-mañ ur poull-traezh, an oberiadennoù a rit amañ a c'hall kemmañ ar wiki.", + "apisandbox-fullscreen": "Dispakañ ar banell", + "apisandbox-fullscreen-tooltip": "Brasaat panell ar poull-traezh evit leuniañ prenestr ar merdeer.", "apisandbox-unfullscreen": "Diskouez ar bajenn", + "apisandbox-unfullscreen-tooltip": "Bihanaat panell ar poull-traezh evit ma vefe hegerz liammoù merdeiñ MediaWiki.", "apisandbox-submit": "Sevel ar goulenn", "apisandbox-reset": "Riñsañ", "apisandbox-retry": "Klask en-dro", + "apisandbox-loading": "O kargañ titouroù modulenn \"$1\" an API...", + "apisandbox-load-error": "C'hoarvezet ez eus ur fazi en ur gargañ modulenn \"$1\" an API : $2", + "apisandbox-no-parameters": "N'eus arventenn ebet d'ar vodulenn API-mañ.", "apisandbox-helpurls": "Liammoù skoazell", "apisandbox-examples": "Skouerioù", "apisandbox-dynamic-parameters": "Arventenn ouzhpenn", "apisandbox-dynamic-parameters-add-label": "Ouzhpennañ un arventenn:", "apisandbox-dynamic-parameters-add-placeholder": "Anv an arventenn", + "apisandbox-dynamic-error-exists": "Bez' ez eus c'hoazh eus un arventenn anvet \"$1\".", + "apisandbox-deprecated-parameters": "Arventennoù dispredet", + "apisandbox-fetch-token": "Leuniañ emgefre ar jedouer", + "apisandbox-submit-invalid-fields-title": "Direizh eo maeziennoù zo", + "apisandbox-submit-invalid-fields-message": "Reizhit ar maeziennoù merket ha klaskit en-dro.", "apisandbox-results": "Disoc'hoù", - "apisandbox-request-params-json": "Arventennoù JSON :", + "apisandbox-sending-request": "O kas ur reked API...", + "apisandbox-loading-results": "O resev ur reked API...", + "apisandbox-results-error": "C'hoarvezet ez eus ur fazi en ur gargañ respont ar reked API : $1.", + "apisandbox-request-selectformat-label": "Diskouez roadennoù ar reked evel :", + "apisandbox-request-format-url-label": "Neudennad reked an URL", "apisandbox-request-url-label": "Goulenn URL :", - "apisandbox-request-time": "Pad ar goulenn: $1", + "apisandbox-request-json-label": "Goulenn JSON :", + "apisandbox-request-time": "Pad ar goulenn : {{PLURAL:$1|$1 ms}}", + "apisandbox-results-fixtoken": "Reizhañ ar jedouer ha kas en-dro", + "apisandbox-results-fixtoken-fail": "N'eus ket bet gallet adtapout ar jedouer \"$1\".", + "apisandbox-alert-page": "Direizh eo maeziennoù ar bajenn-mañ.", + "apisandbox-alert-field": "Talvoud ar vaezienn-mañ n'eo ket reizh.", "apisandbox-continue": "Kenderc'hel", "apisandbox-continue-clear": "Riñsañ", + "apisandbox-continue-help": "{{int:apisandbox-continue}} a [https://www.mediawiki.org/wiki/API:Query#Continuing_queries gendalc'ho] ar reked diwezhañ ; {{int:apisandbox-continue-clear}} a ziverko an arventennoù a denn d'ar c'hendalc'h.", + "apisandbox-param-limit": "Merkañ <kbd>max</kbd> evit ober gant ar vevenn vrasañ.", + "apisandbox-multivalue-all-namespaces": "$1 (An holl esaouennoù anv)", "apisandbox-multivalue-all-values": "$1 (An holl dalvoudoù)", "booksources": "Oberennoù dave", "booksources-search-legend": "Klask en oberennoù dave", @@ -1678,9 +1889,14 @@ "booksources-search": "Klask", "booksources-text": "Ur roll liammoù a gas da lec'hiennoù all ma werzher levrioù kozh ha nevez a gavot a-is; marteze e kavot eno titouroù pelloc'h war al levrioù a glaskit :", "booksources-invalid-isbn": "Evit doare n'eo ket reizh an ISBN merket; gwiriit ha n'oc'h ket faziet en ur eilañ adal ar vammenn orin.", + "magiclink-tracking-rfc": "Pajennoù a ra gant liammoù hud RFC", + "magiclink-tracking-rfc-desc": "Ober a ra ar bajenn-mañ gant liammoù hud RFC. Gwelet [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Magic_links mediawiki.org] evit an doare da dreuzlec'hiañ.", + "magiclink-tracking-pmid": "Pajennoù a ra gant liammoù hud PMID", + "magiclink-tracking-pmid-desc": "Ober a ra ar bajenn-mañ gant liammoù hud PMID. Gwelet [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Magic_links mediawiki.org] evit an doare da dreuzlec'hiañ.", "magiclink-tracking-isbn": "Pajennoù a ra gant liammoù burzhudus ISBN", + "magiclink-tracking-isbn-desc": "Ober a ra ar bajenn-mañ gant liammoù hud ISBN. Gwelet [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Magic_links mediawiki.org] evit an doare da dreuzlec'hiañ.", "specialloguserlabel": "Implijer :", - "speciallogtitlelabel": "Bukadenn (titl pe implijer) :", + "speciallogtitlelabel": "Pal (titl pe {{ns:user}}:anv implijer) :", "log": "Marilhoù", "logeventslist-submit": "Diskouez", "all-logs-page": "An holl varilhoù foran", @@ -1688,6 +1904,7 @@ "logempty": "Goullo eo istor ar bajenn-mañ.", "log-title-wildcard": "Klask an titloù a grog gant an destenn-mañ", "showhideselectedlogentries": "Diskouez/kuzhat penngerioù ar marilh bet diuzet", + "log-edit-tags": "Kemmañ tikedennoù an enmontoù marilh diuzet", "checkbox-select": "Diuzañ : $1", "checkbox-all": "An holl", "checkbox-none": "Hini ebet", @@ -1729,7 +1946,10 @@ "activeusers-intro": "Setu aze ur roll eus an implijerien zo bet oberiant mui pe vui e-pad an $1 {{PLURAL:$1|deiz|deiz}} diwezhañ.", "activeusers-count": "$1 {{PLURAL:$1|oberiadenn}} abaoe an {{PLURAL:$3|deiz|$3 deiz}} diwezhañ", "activeusers-from": "Diskouez an implijerien adal :", + "activeusers-groups": "Diskouez an implijerien zo ezel eus ar strolladoù :", + "activeusers-excludegroups": "Skarzhañ an implijerien ezel eus ar strolladoù :", "activeusers-noresult": "N'eus bet kavet implijer ebet.", + "activeusers-submit": "Diskouez an implijerien oberiant", "listgrouprights": "Gwirioù ar strolladoù implijer", "listgrouprights-summary": "Da-heul ez eus ur roll eus ar strolladoù implijerien termenet war ar wiki-mañ, gant ar gwirioù moned stag outo.\nGallout a ra bezañ [[{{MediaWiki:Listgrouprights-helppage}}|titouroù ouzhpenn]] diwar-benn ar gwirioù hiniennel.", "listgrouprights-key": "Alc'hwez :\n* <span class=\"listgrouprights-granted\">Gwirioù grataet</span>\n* <span class=\"listgrouprights-revoked\">Gwirioù lamet</span>", @@ -1745,16 +1965,27 @@ "listgrouprights-removegroup-self": "Gallout a ra tennañ {{PLURAL:$2|ar strollad|strolladoù}} eus kont an-unan : $1", "listgrouprights-addgroup-self-all": "Gallout a ra ouzhpennañ an holl strolladoù da gont an-unan", "listgrouprights-removegroup-self-all": "Gallout a ra tennañ kuit an holl strolladoù eus kont an-unan.", + "listgrouprights-namespaceprotection-header": "Strishadurioù esaouennoù anv", "listgrouprights-namespaceprotection-namespace": "Esaouenn anv", "listgrouprights-namespaceprotection-restrictedto": "Gwir(ioù) hag a aotre an implijer da aozañ", "listgrants": "Aotreoù", + "listgrants-summary": "Setu aze ur roll eus an aotreoù gant ar gwirioù moned stag ouzh ar gwirioù implijer. Gallout a ra an implijerien aotren an arloadoù da implijout o c'hont gant aotreoù strishaet diazezet war ar gwirioù bet grataet d'an arload gant an implijer. Un arload a ra en anv un implijer n'hall ket ober gant gwirioù n'int ket bet roet d'an implijer da gentañ. Gallout a ra bezañ tammoù [[{{MediaWiki:Listgrouprights-helppage}}|titouroù ouzhpenn]] diwar-benn ar gwirioù hiniennel.", "listgrants-grant": "Aotren", "listgrants-rights": "Gwirioù", "trackingcategories": "Rummadoù evezhiañ", + "trackingcategories-summary": "Rollañ a ra ar bajenn-mañ ar rummadoù heuliañ leuniet ent emgefre gant MediaWiki. Gallout a ra o anvioù bezañ cheñchet en ur gemmañ ar c'hemennadennoù reizhiad a glot ganto en esaouenn anv {{ns:8}}.", "trackingcategories-msg": "Rummad evezhiañ", "trackingcategories-name": "Anv ar gemennadenn", "trackingcategories-desc": "Dezverkoù evit degemer rummadoù", + "restricted-displaytitle-ignored": "Pajennoù gant titloù diskwel lezet a-gostez", + "restricted-displaytitle-ignored-desc": "Ar bajenn-mañ zo dezhi un <code><nowiki>{{DISPLAYTITLE}}</nowiki></code> zo bet laosket a-gostez peogwir n'eo ket kevatal d'an titl zo d'ar bajenn bremañ.", + "noindex-category-desc": "Ar bajenn-mañ n'eo ket menegeret gant ar robotoù rak ar ger hud <code><nowiki>__NOINDEX__</nowiki></code> zo enni hag emañ en un esaouenn anv m'eo aotreet ar merkañ.", + "index-category-desc": "Un <code><nowiki>__INDEX__</nowiki></code> zo er bajenn (hag emañ en un esaouenn anv m'eo aotreet ober gant ar merk-se). Abalamour da se e vo menegeret gant robotoù pa ne vije ket bet a-hend-all.", + "post-expand-template-inclusion-category-desc": "Brasoc'h eo ment ar bajenn eget <code>$wgMaxArticleSize</code> ur wech dispaket he holl batromoù. Gant se n'eus ket bet gallet dispakañ patromoù zo.", + "post-expand-template-argument-category-desc": "Brasoc'h eo ar bajenn eget <code>$wgMaxArticleSize</code> ur wech dispaket arguzenn ur patrom (un dra bennak etre un triad briataennoù, evel <code>{{{Foo}}}</code>).", + "expensive-parserfunction-category-desc": "Ur re implij eus arc'hwelioù koustus an dielfenner a vez graet gant ar bajenn (evel <code>#ifexist</code>). Gwelet [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:$wgExpensiveParserFunctionLimit Manual:$wgExpensiveParserFunctionLimit].", "broken-file-category-desc": "Er bajenn-mañ ez eus ul liamm restr torr (ul liamm da enframmañ ur restr pa n'eus ket eus ar restr-se).", + "hidden-category-category-desc": "E pajenn ar rummad emañ <code><nowiki>__HIDDENCAT__</nowiki></code>, ar pezh a vir outi a zont war wel e takad al liammoù rummad dre ziouer.", "trackingcategories-nodesc": "N'eus deskrivadur ebet.", "trackingcategories-disabled": "Diweredekaet eo ar rummad", "mailnologin": "Chomlec'h ebet", @@ -1783,7 +2014,7 @@ "emailccsubject": "Eilenn eus ho kemennadenn da $1: $2", "emailsent": "Postel kaset", "emailsenttext": "Kaset eo bet ho postel.", - "emailuserfooter": "Kaset eo bet ar postel-mañ gant $1 da $2 dre an arc'hwel \"Kas ur postel d'an implijer\" war {{SITENAME}}.", + "emailuserfooter": "{{GENDER:$1|Kaset}} eo bet ar postel-mañ gant $1 da {{GENDER:$2|$2}} dre an arc'hwel \"{{int:emailuser}}\" war {{SITENAME}}. Ma {{GENDER:$2|respontit}} d'ar postel-mañ e vo kaset {{GENDER:$2|ho}} postel war-eeun d'ar {{GENDER:$1|c'haser|gaserez}} orin a {{GENDER:$1|c'hallo}} gwelet {{GENDER:$2|ho}} chomlec'h postel .", "usermessage-summary": "En deus laosket ur gemennadenn sistem.", "usermessage-editor": "Kemennerezh ar reizhiad", "watchlist": "Roll evezhiañ", @@ -1793,10 +2024,12 @@ "watchlistanontext": "Ret eo deoc'h kevreañ evit gwelet pe aozañ an elfennoù a zo en ho roll evezhiañ.", "watchnologin": "Digevreet", "addwatch": "Ouzhpennañ d'ar roll evezhiañ", - "addedwatchtext": "Ouzh ho [[Special:Watchlist|rollad evezhiañ]] eo bet ouzhpennet ar bajenn \"[[:$1]]\".\nAmañ e vo rollet ar c'hemmoù da zont evit ar bajenn-mañ hag ar bajenn gaozeal stag outi.", + "addedwatchtext": "Ouzh ho [[Special:Watchlist|rollad evezhiañ]] eo bet ouzhpennet ar bajenn \"[[:$1]]\" hag ar bajenn gaozeal stag outi.", + "addedwatchtext-talk": "Ouzhpennet eo bet \"[[:$1]]\" hag ar bajenn stag outi ouzh ho [[Special:Watchlist|roll evezhiañ]].", "addedwatchtext-short": "Ouzhpennet eo bet ar bajenn \"$1\" d'ho roll-evezhiañ.", "removewatch": "Lemel a-ziwar ar roll evezhiañ", - "removedwatchtext": "Lamet eo bet ar bajenn \"[[:$1]]\" a-ziwar ho [[Special:Watchlist|roll evezhiañ]].", + "removedwatchtext": "Lamet eo bet ar bajenn \"[[:$1]]\" hag ar bajenn gaozeal stag outi a-ziwar ho [[Special:Watchlist|roll evezhiañ]].", + "removedwatchtext-talk": "Lamet eo bet \"[[:$1]]\" hag ar bajenn stag outi a-ziwar ho [[Special:Watchlist|roll evezhiañ]].", "removedwatchtext-short": "Lamet eo bet ar bajenn \"$1\" eus ho roll-evezhiañ.", "watch": "Evezhiañ", "watchthispage": "Evezhiañ ar bajenn-mañ", @@ -1811,11 +2044,14 @@ "wlshowlast": "Diskouez an $1 eurvezh $2 devezh diwezhañ", "watchlist-hide": "Kuzhat", "watchlist-submit": "Diskouez", + "wlshowtime": "Prantad amzer war wel :", "wlshowhideminor": "kemmoù dister", "wlshowhidebots": "robotoù", "wlshowhideliu": "implijerien enrollet", "wlshowhideanons": "implijerien dizanv", + "wlshowhidepatr": "kemmoù gwiriet", "wlshowhidemine": "ma c'hemmoù", + "wlshowhidecategorization": "rummatadur ar bajenn", "watchlist-options": "Dibarzhioù ar roll evezhiañ", "watching": "Heuliet...", "unwatching": "Paouez da evezhiañ...", @@ -1835,13 +2071,13 @@ "enotif_lastvisited": "Sellet ouzh $1 evit gwelet an holl gemmoù abaoe ho selladenn ziwezhañ.", "enotif_lastdiff": "Gwelet $1 evit sellet ouzh ar c'hemm-mañ.", "enotif_anon_editor": "implijer dizanv $1", - "enotif_body": "$WATCHINGUSERNAME ker,\n\n$CHANGEDORCREATED eo bet pajenn $PAGETITLE {{SITENAME}} gant $PAGEEDITOR d'an $PAGEEDITDATE gwelet $PAGETITLE_URL evit gwelet ar stumm red.\n\n$NEWPAGE\n\nDiverrañ an aozer : $PAGESUMMARY $PAGEMINOREDIT\n\nMont e darempred gant an aozer :\npostel: $PAGEEDITOR_EMAIL\nwiki: $PAGEEDITOR_WIKI\n\nNemet ez afec'h da welet ar bajenn end-eeun, ne vo kemenn all ebet ma vez kemmet pelloc'h.\nGallout a rit nevesaat doare ar pennadoù evezhiet ganeoc'h en ho rollad evezhiañ ivez.\n\n Ho reizhiad kemenn {{SITENAME}} muiañ karet\n\n--\nEvit kemmañ arventennoù ho kemennoù dre bostel, sellit ouzh\n{{canonicalurl:{{#special:Preferences}}}}\n\nEvit kemmañ doare ho rollad evezhiañ, sellit ouzh\n{{canonicalurl:{{#special:EditWatchlist}}}}\n\nEvit dilemel ar bajenn eus ho rollad evezhiañ, sellit ouzh\n$UNWATCHURL\n\nEvezhiadennoù ha skoazell pelloc'h :\n$HELPPAGE", + "enotif_body": "$WATCHINGUSERNAME ker,\n\n$PAGEINTRO $NEWPAGE\n\nDiverrañ an aozer : $PAGESUMMARY $PAGEMINOREDIT\n\nMont e darempred gant an aozer :\npostel: $PAGEEDITOR_EMAIL\nwiki: $PAGEEDITOR_WIKI\n\nNemet ez afec'h da welet ar bajenn end-eeun en ur vezañ kevreet, ne vo kemenn all ebet ma vez un tamm obererezh pelloc'h.\n\n\n Ho reizhiad kemenn {{SITENAME}} muiañ karet\n\n--\nEvit kemmañ arventennoù ho kemennoù dre bostel, sellit ouzh\n{{canonicalurl:{{#special:Preferences}}}}\n\nEvit kemmañ doare ho rollad evezhiañ, sellit ouzh\n{{canonicalurl:{{#special:EditWatchlist}}}}\n\nEvit dilemel ar bajenn eus ho rollad evezhiañ, sellit ouzh\n$UNWATCHURL\n\nEvezhiadennoù ha skoazell pelloc'h :\n$HELPPAGE", "created": "Krouet", "changed": "kemmet", "deletepage": "Diverkañ ur bajenn", "confirm": "Kadarnaat", "excontent": "endalc'had '$1'", - "excontentauthor": "an danvez a oa : '$1' (ha '[[Special:Contributions/$2|$2]]' a oa bet an implijer nemetañ)", + "excontentauthor": "an danvez a oa : ''$1'' ha ''[[Special:Contributions/$2|$2]]'' ([[User talk:$2|kaozeal]]) a oa bet an implijer nemetañ", "exbeforeblank": "A-raok diverkañ e oa an endalc'had : '$1'", "delete-confirm": "Diverkañ \"$1\"", "delete-legend": "Diverkañ", @@ -1863,22 +2099,39 @@ "delete-toobig": "Bras eo istor ar bajenn-mañ, ouzhpenn $1 {{PLURAL:$1|stumm|stumm}} zo. Bevennet eo bet an diverkañ pajennoù a-seurt-se kuit da zegas reuz war {{SITENAME}} dre fazi .", "delete-warning-toobig": "Bras eo istor ar bajenn-mañ, ouzhpenn {{PLURAL:$1|stumm|stumm}} zo.\nDiverkañ anezhi a c'hallo degas reuz war mont en-dro diaz titouroù {{SITENAME}};\ntaolit evezh bras.", "deleteprotected": "Ne c'hallit ket dilemel ar bajenn-mañ rak gwarezet eo bet.", + "deleting-backlinks-warning": "<strong>Taolit pled :</strong> [[Special:WhatLinksHere/{{FULLPAGENAME}}|Pajennoù all]] zo enno liammoù war-zu ar bajenn emaoc'h o vont da zilemel pe a zo treuzkludet ar bajenn enno.", "rollback": "disteuler ar c'hemmoù", "rollbacklink": "disteuler", "rollbacklinkcount": "disteurel $1 {{PLURAL:$1|kemm}}", "rollbacklinkcount-morethan": "disteurel ouzhpenn $1 {{PLURAL:$1|kemm}}", "rollbackfailed": "C'hwitet eo bet an distaoladenn", + "rollback-missingparam": "Arventennoù rekis d'ar reked a vank.", + "rollback-missingrevision": "Dibosupl kargañ roadennoù ar stumm.", "cantrollback": "Dibosupl da zisteuler: an aozer diwezhañ eo an hini nemetañ da vezañ kemmet ar pennad-mañ", "alreadyrolled": "Dibosupl eo disteuler ar c'hemm diwezhañ graet d'ar bajenn [[:$1]] gant [[User:$2|$2]] ([[User talk:$2|Kaozeal]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]]);\nkemmet pe distaolet eo bet c'hoazh gant unan bennak all.\n\nAr c'hemm diwezhañ d'ar bajenn-mañ a oa bet graet gant [[User:$3|$3]] ([[User talk:$3|Kaozeal]]{{int:pipe-separator}}[[Special:Contributions/$3|{{int:contribslink}}]]).", "editcomment": "Diverradenn ar c'hemm a oa : <em>$1</em>.", "revertpage": "Kemmoù distaolet gant [[Special:Contributions/$2|$2]] ([[User talk:$2|Kaozeal]]); adlakaet d'ar stumm diwezhañ a-gent gant [[User:$1|$1]]", "revertpage-nouser": "Disteuler kemmoù un implijer kuzhet ha distreiñ d'ar stumm diwezhañ gant an {{GENDER:$1|[[implijer :$1|$1]]}}", - "rollback-success": "Disteuler kemmoù $1; distreiñ da stumm diwezhañ $2.", + "rollback-success": "Nullet ar c'hemmoù gant {{GENDER:$3|$1}};\nadlakaet diouzh ar stumm diwezhañ gant {{GENDER:$4|$2}}.", + "rollback-success-notify": "Nullet ar c'hemmoù gant $1;\nadlakaet diouzh ar stumm diwezhañ gant $2. [$3 Diskouez ar c'hemmoù]", "sessionfailure-title": "Fazi dalc'h", "sessionfailure": "Evit doare ez eus ur gudenn gant ho talc'h;\nNullet eo bet an ober-mañ a-benn en em wareziñ diouzh an tagadennoù preizhañ.\nKlikit war \"kent\" hag adkargit ar bajenn oc'h deuet drezi; goude klaskit en-dro.", + "changecontentmodel": "Cheñch patrom danvez ur bajenn", + "changecontentmodel-legend": "Cheñch ar patrom danvez", "changecontentmodel-title-label": "Anv ar bajenn", + "changecontentmodel-model-label": "Patrom danvez nevez", "changecontentmodel-reason-label": "Abeg :", "changecontentmodel-submit": "Kemmañ", + "changecontentmodel-success-title": "Cheñchet eo bet ar patrom danvez", + "changecontentmodel-success-text": "Kemmet eo bet patrom danvez [[:$1]].", + "changecontentmodel-cannot-convert": "N'hall ket danvez [[:$1]] bezañ troet en ur seurt $2.", + "changecontentmodel-nodirectediting": "N'haller ket ober kemmoù ar-eeun gant ar patrom danvez $1", + "changecontentmodel-emptymodels-title": "N'eus patrom danvez hegerz ebet", + "changecontentmodel-emptymodels-text": "N'haller ket amdreiñ danvez [[:$1]] e doare ebet.", + "log-name-contentmodel": "Marilh kemmañ patrom danvez", + "log-description-contentmodel": "Rollañ a ra ar bajenn-mañ ar c'hemmoù graet e patrom danvez ar pajennoù hag ar pajennoù a oa bet krouet gant ur patrom danvez all estreget an hini a zeu dre ziouer.", + "logentry-contentmodel-new": "{{GENDER:$2|Krouet eo bet}} ar bajenn $3 gant $1 en ur ober gant ur patrom danvez \"$5\" disheñvel diouzh an hini dre ziouer", + "logentry-contentmodel-change": "$1 {{GENDER:$2|Kemmet eo bet}} patrom danvez ar bajenn $3 gant $1, eus \"$4\" da \"$5\"", "logentry-contentmodel-change-revertlink": "disteuler", "logentry-contentmodel-change-revert": "disteuler", "protectlogpage": "Log_gwareziñ", @@ -1887,6 +2140,9 @@ "modifiedarticleprotection": "Kemmañ live gwareziñ \"[[$1]]\"", "unprotectedarticle": "diwarezet eo bet ''[[$1]]''", "movedarticleprotection": "en deus adkaset an arventennoù gwareziñ eus \"[[$2]]\" da \"[[$1]]\"", + "protectedarticle-comment": "{{GENDER:$2|En deus gwarezet|He deus gwarezet}} \"[[$1]]\"", + "modifiedarticleprotection-comment": "{{GENDER:$2|En deus kemmet live gwareziñ|He deus kemmet live gwareziñ}} \"[[$1]]\"", + "unprotectedarticle-comment": "{{GENDER:$2|En deus lamet gwarez|He deus lamet gwarez}} \"[[$1]]\"", "protect-title": "Kemmañ al live gwareziñ evit \"$1\"", "protect-title-notallowed": "Gwelet al live gwareziñ evit \"$1\"", "prot_1movedto2": "[[$1]] adkaset war-du [[$2]]", @@ -1904,7 +2160,7 @@ "protect-locked-blocked": "E-keit ha ma viot stanket ne viot ket evit cheñch al live gwareziñ. Setu aze arventennoù a-vremañ ar bajenn '''$1''':", "protect-locked-dblock": "N'haller ket cheñch al liveoù gwareziñ rak prennet eo an diaz titouroù.\nSetu doare a-vremañ ar bajenn '''$1''' :", "protect-locked-access": "N'eo ket aotreet ho kont da zegas kemmoù e live gwareziñ ur bajenn.\nSetu an doare a-vremañ evit ar bajenn-mañ '''$1''':", - "protect-cascadeon": "Gwarezet eo ar bajenn-mañ peogwir he c'haver er {{PLURAL:$1|bajenn|pajennoù}} da-heul zo gweredekaet enno ar gwareziñ dre skalierad. Gallout a rit kemmañ al live gwareziñ met ne cheñcho ket ar gwareziñ dre skalierad.", + "protect-cascadeon": "Gwarezet eo ar bajenn-mañ peogwir emañ treuzkludet er {{PLURAL:$1|bajenn|pajennoù}} da-heul zo gweredekaet enno ar gwareziñ dre skalierad. Ma kemmit live gwareziñ ar bajenn-mañ ne cheñcho ket ar gwareziñ dre skalierad.", "protect-default": "Aotren an holl implijerien", "protect-fallback": "Degemer hepken an implijerien gant an aotre \"$1\"", "protect-level-autoconfirmed": "Degemer hepken an implijerien emgadarnaet", @@ -1918,6 +2174,7 @@ "protect-othertime": "Termen all :", "protect-othertime-op": "termen all", "protect-existing-expiry": "Termen echuiñ merket : $3, $2", + "protect-existing-expiry-infinity": "Termen echuiñ merket : difin", "protect-otherreason": "Abeg all/ouzhpenn :", "protect-otherreason-op": "Abeg all", "protect-dropdown": "*Abegoù gwareziñ boutin\n** Vandalerezh betek re\n** Stroberezh betek re\n** Tabutoù toull war kemmoù zo\n** Pajenn kemmet alies-tre", @@ -1942,12 +2199,13 @@ "undeletepagetext": "Diverket eo bet {{PLURAL:$1|ar bajenn da-heul; emañ|ar pajennoù da-heul; emaint}} e bank roadennoù an dielloù, ma c'hallont bezañ assavet.\nIngal e c'hall an diell bezañ goullonderet.", "undelete-fieldset-title": "Assevel ar stummoù", "undeleteextrahelp": "Evit assevel istor klok ar bajenn, laoskit goullo an holl logoù ha klikit war '''''{{int:undeletebtn}}'''''.\nEvit assevel stummoù zo hepken, askit ar logoù a glot gant ar stummoù da vezañ assavet, ha klikit war '''''{{int:undeletebtn}}'''''.", - "undeleterevisions": "$1 {{PLURAL:$1|stumm|stumm}} diellaouet", + "undeleterevisions": "$1 {{PLURAL:$1|adweladenn}} diverket", "undeletehistory": "Ma tiziverkit ar bajenn e vo erlec'hiet an holl gemmoù bet degaset enni er roll istor.\n\nMa'z eus bet krouet ur bajenn nevez dezhi an hevelep anv abaoe an diverkadenn, e teuio war wel ar c'hemmoù assavet er roll istor kent ha ne vo ket erlec'hiet ar stumm red en un doare emgefre ken.", "undeleterevdel": "Ne vo ket adsavet ar stumm-se eus ar bajenn ma talvez kement ha diverkañ evit darn an doare diwezhañ anezhi. En degouezh-mañ e rankit diaskañ pe diguzhat ar stummoù diverket da ziwezhañ.", "undeletehistorynoadmin": "Diverket eo bet ar pennad-mañ. Displeget eo perak en diverradenn a-is, war un dro gant munudoù an implijerien o deus kemmet ar bajenn a-raok na vije diverket. N'eus nemet ar verourien a c'hall tapout krog en destenn bet diverket.", "undelete-revision": "Stumm diverket eus $1, (gwiriadenn eus $4 da $5) gant $3 :", "undeleterevision-missing": "Stumm fall pe diank. Pe hoc'h eus heuliet ul liamm fall, pe eo bet diziverket ar stumm pe c'hoazh eo bet lamet diouzh an dielloù.", + "undeleterevision-duplicate-revid": "N'eus ket bet gallet assevel {{PLURAL:$1|ur stumm|$1 stumm}} peogwir e oa en implij {{PLURAL:$1|e|o}} <code>rev_id</code> c'hoazh.", "undelete-nodiff": "N'eus bet kavet stumm kent ebet.", "undeletebtn": "Assevel", "undeletelink": "gwelet/assevel", @@ -1957,7 +2215,7 @@ "undeletedrevisions": "Adsavet {{PLURAL:$1|1 stumm|$1 stumm}}", "undeletedrevisions-files": "Adsavet ez ez eus bet {{PLURAL:$1|1 stumm|$1 stumm}} ha {{PLURAL:$2|1 restr|$2 restr}}", "undeletedfiles": "{{PLURAL:$1|1 restr|$1 restr}} adsavet", - "cannotundelete": "Dibosupl eo diziverkañ:\n$1", + "cannotundelete": "Dibosupl eo bet nullañ diziverkadennoù zo pe an holl anezho :\n$1", "undeletedpage": "'''Diziverket eo bet $1'''\n\nSellit ouzh [[Special:Log/delete|marilh an diverkadennoù]] evit teuler ur sell ouzh an diverkadennoù diwezhañ.", "undelete-header": "Gwelet [[Special:Log/delete|al log diverkañ]] evit ar pajennoù diverket nevez zo.", "undelete-search-title": "Klask pajennoù bet diverket", @@ -1977,6 +2235,7 @@ "namespace": "Esaouenn anv :", "invert": "Eilpennañ an dibab", "tooltip-invert": "Askañ ar voest-mañ da guzhat ar c'hemmoù er pajennoù stag ouzh an esaouenn anv diuzet (hag an esaouenn anv stag, m'emañ asket)", + "tooltip-whatlinkshere-invert": "Askañ ar log-mañ evit kuzhat liammoù ar pajennoù en esaouenn anv diuzet.", "namespace_association": "Esaouennoù anv liammet", "tooltip-namespace_association": "Askañ ar voest-mañ da lakaat ivez e-barzh ar gaozeadenn pe danvez an esaouenn anv liammet ouzh an esaouenn anv diuzet", "blanknamespace": "(Pennañ)", @@ -1994,8 +2253,8 @@ "sp-contributions-newbies-sub": "Evit an implijerien nevez", "sp-contributions-newbies-title": "Degasadennoù implijer evit ar c'hontoù nevez", "sp-contributions-blocklog": "Roll ar stankadennoù", - "sp-contributions-suppresslog": "degasadennoù diverket un implijer", - "sp-contributions-deleted": "Degasadennoù diverket", + "sp-contributions-suppresslog": "degasadennoù diverket {{GENDER:$1|an implijer|an implijerez}}", + "sp-contributions-deleted": "degasadennoù diverket {{GENDER:$1|an implijer|an implijerez}}", "sp-contributions-uploads": "Enporzhiadennoù", "sp-contributions-logs": "marilhoù", "sp-contributions-talk": "kaozeal", @@ -2114,6 +2373,7 @@ "block-log-flags-hiddenname": "anv implijer kuzhet", "range_block_disabled": "Diweredekaet eo bet ar stankañ stuc'hadoù IP.", "ipb_expiry_invalid": "amzer termen direizh.", + "ipb_expiry_old": "Tremenet eo an termen echuiñ.", "ipb_expiry_temp": "Peurbadus e rank bezañ bloc'hadoù an implijerien guzh.", "ipb_hide_invalid": "Ne c'haller ket dilemel ar gont-mañ : Ouzhpenn {{PLURAL:$1|ur c'hemm|$1 kemm}} zo enni.", "ipb_already_blocked": "Stanket eo \"$1\" dija", @@ -2161,6 +2421,8 @@ "cant-move-to-user-page": "Noc'h ket aotreet da adenvel ur bajenn gant anv hini un implijer all (nemet un ispajenn e vefe).", "cant-move-category-page": "N'oc'h ket aotreet da zilec'hiañ pajennoù rummad.", "cant-move-to-category-page": "N'oc'h ket aotreet da zilec'hiañ ur bajenn d'ur bajenn rummad.", + "cant-move-subpages": "N'oc'h ket aotreet da zilec'hiañ ispajennoù.", + "namespace-nosubpages": "N'eo ket aotreet ober gant ispajennoù gant an esaouenn anv \"$1\".", "newtitle": "Titl nevez :", "move-watch": "Evezhiañ ar bajenn-mañ", "movepagebtn": "Adenvel ar pennad", @@ -2242,6 +2504,7 @@ "thumbnail-temp-create": "Dibosupl krouiñ ur restr vunut padennek", "thumbnail-dest-create": "Dibosupl enrollañ ar munud.", "thumbnail_invalid_params": "Arventennoù direizh evit ar munud", + "thumbnail_toobigimagearea": "Restr brasoc'h e ventoù eget $1", "thumbnail_dest_directory": "Dibosupl krouiñ ar c'havlec'h pal", "thumbnail_image-type": "N'eo ket skoret ar seurt skeudennoù", "thumbnail_gd-library": "Kefluniadur diglok al levraoueg GD : dibosupl kavout an arc'hwel $1", @@ -2254,6 +2517,8 @@ "import-interwiki-history": "Eilañ holl stummoù istor ar bajenn-mañ", "import-interwiki-templates": "Lakaat e-barzh an holl batromoù", "import-interwiki-submit": "Enporzhiañ", + "import-mapping-default": "Enporzhiañ d'al lec'hiadurioù dre ziouer", + "import-mapping-namespace": "Enporzhiañ d'un esaouenn anv :", "import-upload-filename": "Anv ar restr :", "import-comment": "Notenn :", "importtext": "Ezporzhiit ar restr adal ar wiki orin en ur ober gant an arc'hwel [[Special:Export|ezporzhiañ]].\nEnrollit ar bajenn war hoc'h urzhiataer ha kargit anezhi amañ.", @@ -2291,6 +2556,7 @@ "import-logentry-upload-detail": "$1 {{PLURAL:$1|adweladenn}} enporzhiet", "import-logentry-interwiki-detail": "$1 {{PLURAL:$1|adweladenn}} enporzhiet eus $2", "javascripttest": "Amprouadenn JavaScript", + "javascripttest-pagetext-unknownaction": "Obererezh dianav \"$1\".", "javascripttest-qunit-intro": "Sellet ouzh [$1 an teulioù amprouiñ] e mediawiki.org.", "tooltip-pt-userpage": "{{GENDER:|Ho pajenn}} implijer", "tooltip-pt-anonuserpage": "Ar bajenn implijer evit ar c'homlec'h IP implijet ganeoc'h", @@ -2299,6 +2565,7 @@ "tooltip-pt-preferences": "{{GENDER:|Ma}} fenndibaboù", "tooltip-pt-watchlist": "Roll ar pajennoù evezhiet ganeoc'h.", "tooltip-pt-mycontris": "Roll ho tegasadennoù", + "tooltip-pt-anoncontribs": "Ur roll eus ar c'hemmoù graet adalek ar chomlec'h IP-mañ", "tooltip-pt-login": "Daoust ma n'eo ket ret, ec'h aliomp deoc'h kevreañ", "tooltip-pt-logout": "Digevreañ", "tooltip-pt-createaccount": "Erbedet eo deoc'h krouiñ ur gont ha kevreañ ; n'eo ket ret koulskoude.", @@ -2330,7 +2597,7 @@ "tooltip-feed-rss": "Magañ ar red RSS evit ar bajenn-mañ", "tooltip-feed-atom": "Magañ ar red Atom evit ar bajenn-mañ", "tooltip-t-contributions": "Gwelet roll degasadennoù {{GENDER:$1|this user}} an implijer-mañ", - "tooltip-t-emailuser": "Kas ur postel d'an implijer-mañ", + "tooltip-t-emailuser": "Kas ur postel d'an {{GENDER:$1|implijer-mañ|implijerez-mañ}}", "tooltip-t-info": "Titouroù ouzhpenn a-zivout ar bajenn-mañ", "tooltip-t-upload": "Enporzhiañ ur skeudenn pe ur restr media war ar servijer", "tooltip-t-specialpages": "Roll an holl bajennoù dibar", @@ -2375,7 +2642,7 @@ "lastmodifiedatby": "Kemmet eo bet ar bajenn-mañ da ziwezhañ da $2, d'an $1 gant $3", "othercontribs": "Diazezet war labour $1.", "others": "re all", - "siteusers": "$1 {{PLURAL:$2|implijer|implijer}} eus {{SITENAME}}", + "siteusers": "{{PLURAL:$2|{{GENDER:$1|An implijer|An implijerez}}|{{GENDER:$1|An implijerien|An implijerezed}}}} $1 eus {{SITENAME}}", "anonusers": "{{PLURAL:$2|implijer dizanv|implijerien dizanv}} $1 eus {{SITENAME}}", "creditspage": "Pajennoù kredoù", "nocredits": "N'eus tamm titour kred hegerz ebet evit ar bajenn-mañ.", @@ -2405,6 +2672,7 @@ "pageinfo-robot-index": "Aotreet", "pageinfo-robot-noindex": "Diaotreet", "pageinfo-watchers": "Niver a dud o heuliañ", + "pageinfo-visiting-watchers": "Niver a dud oc'h evezhiañ ar bajenn-mañ o deus sellet ouzh ar c'hemmoù diwezhañ bet graet enni", "pageinfo-few-watchers": "Nebeutoc'h eget $1 {{PLURAL:$1|lenner}}", "pageinfo-redirects-name": "Niver a adkasoù war-zu ar bajenn-mañ", "pageinfo-subpages-name": "Ispajennoù eus ar bajenn-mañ", @@ -2427,6 +2695,7 @@ "pageinfo-contentpage-yes": "Ya", "pageinfo-protect-cascading-yes": "Ya", "pageinfo-category-info": "Titouroù ar rummad", + "pageinfo-category-total": "Niver hollek a izili", "pageinfo-category-pages": "Niver a bajennoù", "pageinfo-category-subcats": "Niver a isrummadoù", "pageinfo-category-files": "Niver a restroù", @@ -2444,6 +2713,7 @@ "patrol-log-page": "Log gwiriañ", "patrol-log-header": "Setu ur marilh eus ar stummoù patrouilhet.", "log-show-hide-patrol": "$1 istor ar stummoù gwiriet", + "log-show-hide-tag": "$1 marilh an dikedenn", "confirm-markpatrolled-button": "Mat eo", "deletedrevision": "Diverket stumm kozh $1.", "filedeleteerror-short": "Fazi e-ser diverkañ ar restr : $1", @@ -2694,6 +2964,7 @@ "exif-compression-4": "CCITT Strollad 4 kodañ ar pelleiler", "exif-copyrighted-true": "Pep gwir miret strizh", "exif-copyrighted-false": "Domani foran", + "exif-photometricinterpretation-1": "Gwenn ha du (0 zo evit du)", "exif-unknowndate": "Deiziad dianav", "exif-orientation-1": "Boutin", "exif-orientation-2": "Eilpennet a-hed", @@ -2870,6 +3141,8 @@ "confirmemail_body_set": "Unan bennak, c'hwi moarvat, gant ar chomlec'h IP $1,\nen deus enrollet ur gont \"$2\" gant ar chomlec'h postel-mañ war lec'hienn {{SITENAME}}.\n\nEvit kadarnaat eo deoc'h ar gont-se ha gweredekaat en-dro\nan arc'hwelioù postelerezh war {{SITENAME}}, digorit al liamm-mañ en ho merdeer :\n\n$3\n\nMa n'eo *ket* deoc'h ar gont heuilhit al liamm-mañ\nevit nullañ kadarnaat ar chomlec'h postel :\n\n$5\n\nMont a raio ar c'hod-mañ d'e dermen d'ar $4.", "confirmemail_invalidated": "Nullet eo bet kadarnaat ar chomlec'h postel", "invalidateemail": "Nullañ kadarnaat ar postel", + "notificationemail_subject_changed": "Cheñchet eo bet ar chomlec'h postel enrollet e {{SITENAME}}", + "notificationemail_subject_removed": "Lamet eo bet ar chomlec'h postel enrollet e {{SITENAME}}", "scarytranscludedisabled": "[Diweredekaet eo an treuzkludañ etrewiki]", "scarytranscludefailed": "[N'eus ket bet gallet tapout ar patrom evit $1]", "scarytranscludefailed-httpstatus": "[c'hwitet adtapout ar patrom evit $1: HTTP $2]", @@ -2960,14 +3233,14 @@ "version-extensions": "Astennoù staliet", "version-skins": "Gwiskadurioù staliet", "version-specialpages": "Pajennoù dibar", - "version-parserhooks": "Galvoù dielfennañ", + "version-parserhooks": "Astennoù an dielfenner", "version-variables": "Argemmennoù", "version-antispam": "Mirout ouzh ar strob", "version-other": "Diseurt", "version-mediahandlers": "Merer danvez liesvedia", - "version-hooks": "Galvoù", - "version-parser-extensiontags": "Balizenn dielfennañ o tont eus an astennoù", - "version-parser-function-hooks": "Galv an arc'hwelioù dielfennañ", + "version-hooks": "Krogoù", + "version-parser-extensiontags": "Tikedenn astennet an dielfenner ereadurel", + "version-parser-function-hooks": "Arc'hwelioù astennet an dielfenner ereadurel", "version-hook-name": "Anv ar galv", "version-hook-subscribedby": "Termenet gant", "version-version": "($1)", @@ -3035,38 +3308,51 @@ "blankpage": "Pajenn c'houllo", "intentionallyblankpage": "A-ratozh e leusker gwenn ar bajenn-mañ", "external_image_whitelist": " #Lezel al linenn-mañ tre evel m'emañ<pre>\n#Merkañ an tammoù bommoù reoliek (ar rann zo etre ar // nemetken) a-is\n#Klotañ a raint gant URLoù ar skeudennoù diavaez (gourliammet)\n#En em ziskwel evel skeudennoù a raio ar re a glot, evit ar re all e vo diskwelet ul liamm war-du ar skeudenn nemetken\n#Sellet e vo ouzh a linennoù a grog gant # evel ouzh notennoù\n#Kizidik eo ar roll-mañ ouzh an diforc'h etre lizherennoù bihan ha lizherennoù bras\n\n#Merkit holl rannoù ar bommoù reoliek a-us d'al linenn-mañ. Lezit al linenn ziwezhañ-mañ tre evel m'emañ</pre>", - "tags": "Balizennoù ar c'hemmoù reizh", - "tag-filter": "Silañ ar [[Special:Tags|balizennoù]] :", + "tags": "Tikedennoù ar c'hemmoù reizh", + "tag-filter": "Silañ an [[Special:Tags|tikedennoù]] :", "tag-filter-submit": "Silañ", - "tag-list-wrapper": "([[Special:Tags|{{PLURAL:$1|Balizenn}}]]: $2)", - "tags-title": "Balizennoù", - "tags-intro": "Rollañ a ra ar bajenn-mañ ar balizennoù a c'hall ar meziant implijout da verkañ kemmoù hag an dalvoudegezh anezho.", - "tags-tag": "Anv ar valizenn", + "tag-list-wrapper": "([[Special:Tags|{{PLURAL:$1|Dikedenn|Tikedenn}}]] : $2)", + "tag-mw-contentmodelchange": "cheñch ar patrom danvez", + "tags-title": "Tikedennoù", + "tags-intro": "Rollañ a ra ar bajenn-mañ an tikedennoù a c'hall ar meziant implijout da verkañ kemmoù hag o zalvoudegezh.", + "tags-tag": "Anv an dikedenn", "tags-display-header": "Neuz e rolloù ar c'hemmoù", - "tags-description-header": "Deskrivadur klok ar valizenn", + "tags-description-header": "Deskrivadur klok an dalvoudegezh", "tags-source-header": "Mammenn", "tags-active-header": "Oberiant ?", "tags-hitcount-header": "Kemmoù balizennet", "tags-actions-header": "Oberoù", "tags-active-yes": "Ya", "tags-active-no": "Ket", + "tags-source-extension": "Termenet gant ar meziant", + "tags-source-none": "N'emañ ket en implij ken", "tags-edit": "aozañ", "tags-delete": "diverkañ", "tags-activate": "gweredekaat", "tags-deactivate": "diweredekaat", "tags-hitcount": "$1 {{PLURAL:$1|kemm|kemm}}", + "tags-manage-no-permission": "N'oc'h ket aotreet da verañ ar c'hemmañ tikedennoù.", + "tags-manage-blocked": "N'hallit ket merañ ar c'hemmañ tikedennoù e-keit hag {{GENDER:$1|emaoc'h}} stanket.", "tags-create-heading": "Krouiñ un dikedenn nevez", "tags-create-tag-name": "Anv an dikedenn :", "tags-create-reason": "Abeg :", "tags-create-submit": "Krouiñ", "tags-create-no-name": "Rekis eo merkañ anv un dikedenn.", + "tags-create-already-exists": "Bez' ez eus eus an tikedenn \"$1\" c'hoazh.", + "tags-create-warnings-below": "Kenderc'hel da grouiñ an dikedenn a fell deoc'h ?", "tags-delete-title": "Diverkañ an dikedenn", "tags-delete-reason": "Abeg :", + "tags-delete-not-found": "N'eus ket eus an dikedenn \"$1\".", + "tags-activate-title": "Gweredekaat an dikedenn", "tags-activate-reason": "Abeg :", "tags-activate-submit": "Gweredekaat", + "tags-deactivate-title": "Diweredekaat an dikedenn", "tags-deactivate-reason": "Abeg :", "tags-deactivate-submit": "Diweredekaat", - "tags-edit-existing-tags-none": "''Hini ebet''", + "tags-edit-title": "Kemmañ an tikedennoù", + "tags-edit-manage-link": "Merañ an tikedennoù", + "tags-edit-existing-tags": "Tikedennoù zo anezho :", + "tags-edit-existing-tags-none": "<em>Hini ebet</em>", "tags-edit-new-tags": "Tikedennoù nevez :", "tags-edit-add": "Ouzhpennañ an tikedennoù-mañ :", "tags-edit-remove": "Dilemel an tikedennoù-mañ :", @@ -3148,7 +3434,7 @@ "logentry-upload-overwrite": "$1 {{GENDER:$2|en deus|he deus}} ezporzhiet ur stumm nevez eus $3", "logentry-upload-revert": "$1 {{GENDER:$2|en deus|he deus}} ezporzhiet $3", "rightsnone": "(netra)", - "revdelete-summary": "diverradenn eus ar c'hemmoù", + "rightslogentry-temporary-group": "$1 (da c'hortoz, betek $2)", "feedback-adding": "Oc'h ouzhpennañ ho soñj war ar bajenn...", "feedback-back": "Distreiñ", "feedback-bugcheck": "Eus ar c'hentañ ! Gwiriit mat n'emañ ket e-touez an [$1 draen diskoachet c'hoazh].", @@ -3166,44 +3452,12 @@ "feedback-thanks-title": "Trugarez !", "searchsuggest-search": "Klask e {{SITENAME}}", "searchsuggest-containing": "ennañ...", - "api-error-badaccess-groups": "N'oc'h ket aotreet da enporzhiañ restroù war ar wiki-mañ.", "api-error-badtoken": "Fazi diabarzh : \"jedouer\" fall.", - "api-error-copyuploaddisabled": "Diweredekaet eo an enporzhioù dre URL war ar servijer-mañ.", - "api-error-duplicate": "Bez' {{PLURAL:$1|ez eus restr all|restr all}} gant an hevelep danvez war al lec'hienn-mañ c'hoazh", - "api-error-duplicate-archive": "Bez' e oa {{PLURAL:$1|ur restr all|restroù all}} c'hoazh enno an hevelep danvez, nemet {{PLURAL:$1|eo bet diverket|int bet diverket}}.", - "api-error-empty-file": "Ar restr hoc'h eus roet a oa goullo.", "api-error-emptypage": "N'eo ket aotreet krouiñ pajennoù goullo.", - "api-error-fetchfileerror": "Fazi diabarzh : aet ez eus un dra bennak a-dreuz en ur glask adtapout ar restr.", - "api-error-fileexists-forbidden": "Bez' ez eus c'hoazh eus ur restr anvet \"$1\" ha n'hall ket bezañ friket.", - "api-error-fileexists-shared-forbidden": "Bez' ez eus c'hoazh eus ur restr anvet \"$1\" er c'havlec'h kenrannañ restroù ha n'hall ket bezañ friket anezhi.", - "api-error-file-too-large": "Ar restr hoc'h eus roet a oa re vras.", - "api-error-filename-tooshort": "Re verr eo anv ar restr.", - "api-error-filetype-banned": "Difennet eo ar seurt restroù", - "api-error-filetype-banned-type": "N'eo ket $1{{PLURAL:$4|ur seurt restr aotreet | seurtoù restroù aotreet}}. $2 zo {{PLURAL:$3|ar seurt restroù|ar seurtoù restroù}} degemeret.?", - "api-error-filetype-missing": "Un astenn a vank d'ar restr.", - "api-error-hookaborted": "Ar c'hemm hoc'h eus klasket degas zo bet harzet gant ur c'hrog astenn.", - "api-error-http": "Fazi diabarzh : dibosupl kevreañ d'ar servijer.", - "api-error-illegal-filename": "N'eo ket aotreet anv ar restr.", - "api-error-internal-error": "Fazi diabarzh : aet ez eus un dra bennak a dreuz en ur dretiñ hoc'h enporzhiadenn war ar wiki.", - "api-error-invalid-file-key": "Fazi diabarzh : n'eo ket bet kavet ar restr er stokañ da c'hortoz.", - "api-error-missingparam": "Fazi diabarzh : Arventennoù a vank er reked.", - "api-error-missingresult": "Fazi diabarzh : dibosupl termeniñ hag eilet eo bet an traoù ervat.", - "api-error-mustbeloggedin": "Ret eo deoc'h bezañ kevreet evit pellgargañ restroù.", - "api-error-mustbeposted": "Un draen a zo er poellad-mañ ; ne implij ket an hentenn HTTP ret.", - "api-error-noimageinfo": "Kaset eo bet ar pellgargañ ervat met n'eus ket bet roet tamm titour ebet deomp diwar-benn ar restr gant ar servijer", - "api-error-nomodule": "Fazi diabarzh : tamm modulenn enporzhiañ ebet.", - "api-error-ok-but-empty": "Fazi diabarzh : respont ebet a-berzh ar servijer.", - "api-error-overwrite": "N'eo ket aotreet frikañ ur restr zo anezhi c'hoazh.", - "api-error-stashfailed": "Fazi diabarzh : dibosupl d'ar servijer enrollañ ar restr padennek.", "api-error-publishfailed": "Fazi diabarzh : dibosupl d'ar servijer embann ar restr padennek.", - "api-error-timeout": "N'eo ket bet ar servijer evit respont en termen lakaet.", - "api-error-unclassified": "C'hoarvezet ez eus ur gudenn dianav.", - "api-error-unknown-code": "Fazi dianav : \"$1\"", - "api-error-unknown-error": "Fazi diabarzh : aet ez eus un dra bennak a-dreuz en ur glask enporzhiañ ho restr.", - "api-error-unknown-warning": "Kemenn diwall dianav : $1", + "api-error-stashfailed": "Fazi diabarzh : dibosupl d'ar servijer enrollañ ar restr padennek.", + "api-error-unknown-warning": "Kemenn-diwall dianav : \"$1\".", "api-error-unknownerror": "Fazi dianav : \"$1\".", - "api-error-uploaddisabled": "Diweredekaat eo an enporzh war ar wiki-mañ.", - "api-error-verification-error": "Pe eo brein ar restr pe eo fall an astenn anezhi.", "duration-seconds": "$1 {{PLURAL:$1|eilenn|eilenn}}", "duration-minutes": "$1 {{PLURAL:$1|munut|munut}}", "duration-hours": "($1 {{PLURAL:$1|eurvezh|eurvezh}})", @@ -3235,7 +3489,7 @@ "expand_templates_html_output": "Disoc'h HTML kriz", "expand_templates_ok": "Mat eo", "expand_templates_remove_comments": "Lemel an notennoù kuit", - "expand_templates_remove_nowiki": "Diverkañ a ra ar balizennoù <nowiki> en disoc'h", + "expand_templates_remove_nowiki": "Diverkañ a ra an tikedennoù <nowiki> en disoc'h", "expand_templates_generate_xml": "Gwelet ar gwezennadur XML", "expand_templates_generate_rawhtml": "Diskouez an HTML kriz", "expand_templates_preview": "Rakwelet", @@ -3244,12 +3498,15 @@ "pagelang-language": "Yezh", "pagelang-use-default": "Implijout ar yezh dre ziouer", "pagelang-select-lang": "Dibab ar yezh", + "pagelang-reason": "Abeg", "pagelang-submit": "Kas", + "pagelang-nonexistent-page": "N'eus ket eus ar bajenn $1.", + "pagelang-unchanged-language": "Kefluniet eo c'hoazh ar bajenn $1 e $2.", "right-pagelang": "Cheñch yezh ar bajenn", "action-pagelang": "cheñch yezh ar bajenn", - "log-name-pagelang": "Cheñch yezh", + "log-name-pagelang": "Marilh ar cheñchamantoù yezh", "log-description-pagelang": "Hemañ zo ur marilh eus ar c'hemmoù e pajenn ar yezhoù.", - "logentry-pagelang-pagelang": "$1 {{GENDER:$2|en deus|he deus}} cheñchet yezh ar bajenn evit $3 eus $4 da $5.", + "logentry-pagelang-pagelang": "$1 {{GENDER:$2|en deus|he deus}} cheñchet yezh ar bajenn $3 eus $4 da $5.", "default-skin-not-found-row-enabled": "* <code>$1</code> / $2 (gweredekaet)", "default-skin-not-found-row-disabled": "* <code>$1</code> / $2 (<strong>diweredekaet</strong>)", "mediastatistics": "Stadegoù ar media", @@ -3279,6 +3536,7 @@ "special-characters-group-ipa": "LFE (IPA)", "special-characters-group-symbols": "Arouezennoù", "special-characters-group-greek": "Gresianek", + "special-characters-group-greekextended": "Gresianeg astennet", "special-characters-group-cyrillic": "Kirillek", "special-characters-group-arabic": "Arabeg", "special-characters-group-arabicextended": "Arabeg astennet", @@ -3293,23 +3551,77 @@ "special-characters-group-thai": "Thai", "special-characters-group-lao": "Laoseg", "special-characters-group-khmer": "Khmer", + "mw-widgets-mediasearch-noresults": "N'eus bet kavet disoc'h ebet.", + "mw-widgets-titleinput-description-new-page": "N'eus ket eus ar bajenn-se c'hoazh", "mw-widgets-titleinput-description-redirect": "adkas war-zu $1", "mw-widgets-categoryselector-add-category-placeholder": "Ouzhpennañ ur rummad...", + "mw-widgets-usersmultiselect-placeholder": "Ouzhpennañ muioc'h...", + "sessionprovider-generic": "$1 estez", + "sessionprovider-mediawiki-session-cookiesessionprovider": "Eztez diazezet war toupinoù", + "sessionprovider-nocookies": "Marteze eo diweredekaet an toupinoù. Bezit sur eo gweredekaet an toupinoù ha klaskit en-dro.", "randomrootpage": "Pajenn wrizienn dargouezhek", "log-action-filter-block": "Seurt bloc'had :", + "log-action-filter-contentmodel": "Mod kemmañ ar patrom danvez :", + "log-action-filter-delete": "Mod diverkañ :", + "log-action-filter-import": "Seurt enporzhiadur :", + "log-action-filter-managetags": "Mod embreger ar merañ tikedennoù :", + "log-action-filter-move": "Mod dilec'hiañ :", + "log-action-filter-newusers": "Seurt krouidigezh kont :", + "log-action-filter-patrol": "Mod evezhiañ :", + "log-action-filter-protect": "Mod gwareziñ :", + "log-action-filter-rights": "Mod kemmañ ar gwirioù :", + "log-action-filter-suppress": "Mod dilemel :", + "log-action-filter-upload": "Mod enporzhiañ :", "log-action-filter-all": "An holl", "log-action-filter-block-block": "Stankañ", + "log-action-filter-block-reblock": "Stankañ ar c'hemm", "log-action-filter-block-unblock": "Distankañ", + "log-action-filter-contentmodel-change": "Cheñch ar patrom danvez", + "log-action-filter-contentmodel-new": "Krouiñ pajennoù gant ur patrom danvez n'eo ket raktermenet", + "log-action-filter-delete-delete": "Diverkañ pajennoù", + "log-action-filter-delete-delete_redir": "Adkas ar frikañ", + "log-action-filter-delete-restore": "Diziverkañ pajennoù", + "log-action-filter-delete-event": "Diverkañ ar marilh", + "log-action-filter-delete-revision": "Diverkañ an adweladennoù", + "log-action-filter-import-interwiki": "Enporzh Treuzwiki", + "log-action-filter-import-upload": "Enporzh dre bellgarg XML", + "log-action-filter-managetags-create": "Krouiñ tikedenn", + "log-action-filter-managetags-delete": "Diverkañ tikedenn", + "log-action-filter-managetags-activate": "Gweredekaat tikedenn", + "log-action-filter-managetags-deactivate": "Diweredekaat tikedenn", + "log-action-filter-move-move": "Dilec'hiañ hep frikañ an adkasoù", + "log-action-filter-move-move_redir": "Dilec'hiañ en ur frikañ an adkasoù", + "log-action-filter-newusers-create": "Krouiñ gant un implijer dizanv", + "log-action-filter-newusers-create2": "Krouiñ gant un implijer enrollet", + "log-action-filter-newusers-autocreate": "Krouiñ ent emgefre", + "log-action-filter-newusers-byemail": "Krouiñ gant ur ger-tremen kaset dre bostel", + "log-action-filter-patrol-patrol": "Gwiriet gant an dorn", + "log-action-filter-patrol-autopatrol": "Gwiriet ent emgefre", "log-action-filter-protect-protect": "Gwarez", + "log-action-filter-protect-modify": "Cheñchamant er gwarez", "log-action-filter-protect-unprotect": "Diwarez", + "log-action-filter-protect-move_prot": "Gwarez dilec'hiañ", + "log-action-filter-rights-rights": "Cheñchamant graet gant an dorn", "log-action-filter-rights-autopromote": "Kemm emgefre", + "log-action-filter-suppress-event": "Diverkañ marilhoù", + "log-action-filter-suppress-revision": "Diverkañ adweladennoù", + "log-action-filter-suppress-delete": "Diverkañ pajennoù", + "log-action-filter-suppress-block": "Diverkañ implijerien dre stankadennoù", + "log-action-filter-suppress-reblock": "Diverkañ implijerien dre stankadennoù lies", + "log-action-filter-upload-upload": "Enporzhiadenn nevez", + "log-action-filter-upload-overwrite": "Adenporzhiañ", "authmanager-authn-no-primary": "N'eus ket bet gallet gwiriañ an titouroù kred lakaet.", "authmanager-authn-no-local-user-link": "Reizh eo an titouroù kred lakaet met n'int ket liammet ouzh implijer ebet eus ar wiki-mañ. Ma kevreit en ur mod all pe ma krouit ur gont implijer nevez e c'hallot liammañ ho titouroù kred kent ouzh ar gont-mañ.", "authmanager-change-not-supported": "N'haller ket cheñch an titouroù kred rak netra na rafe ganto.", + "authmanager-create-disabled": "Diweredekaet eo ar c'hrouiñ kontoù.", + "authmanager-create-from-login": "Evit krouiñ ho kont, leuniit ar maeziennoù.", "authmanager-create-no-primary": "N'eus ket bet gallet implijout an titouroù kred lakaet evit krouiñ ur gont.", "authmanager-authplugin-setpass-failed-title": "C'hwitet eo bet ar cheñchamant ger-tremen", "authmanager-authplugin-setpass-bad-domain": "Domani direizh.", "authmanager-userdoesnotexist": "N'eo ket enrollet ar gont implijer \"$1\".", + "authmanager-username-help": "Anv implijer evit ar gwiriekaat.", + "authmanager-password-help": "Ger-tremen evit ar gwiriekaat.", + "authmanager-domain-help": "Domani evit ar gwiriekaat diavaez.", "authmanager-retype-help": "Adkadarnaat ar ger-tremen.", "authmanager-email-label": "Postel", "authmanager-email-help": "Chomlec'h postel", @@ -3317,6 +3629,7 @@ "authmanager-realname-help": "Anv gwir an implijer", "authmanager-provider-password": "Gwiriekadur diazezet war ur ger-termen", "authmanager-provider-temporarypassword": "Ger-tremen da c'hortoz", + "authprovider-confirmlink-request-label": "Kontoù a zlefe bezañ liammet", "authprovider-confirmlink-success-line": "$1: bet liammet ervat.", "authprovider-resetpass-skip-label": "Lammat", "authprovider-resetpass-skip-help": "Lammat adderaouekaat ar ger-tremen.", @@ -3326,14 +3639,18 @@ "specialpage-securitylevel-not-allowed-title": "Berzet", "authpage-cannot-login": "N'haller ket kregiñ da gevreañ", "authpage-cannot-create": "N'haller ket kregiñ da grouiñ ar gont.", + "authpage-cannot-link": "Dibosupl kregiñ da liammañ ar gont.", + "authpage-cannot-link-continue": "Dibosupl kenderc'hel da liammañ ar gont. Aet eo an eztez d'he zermen moarvat.", "cannotauth-not-allowed-title": "Aotre nac'het", "cannotauth-not-allowed": "N'oc'h ket aotreet d'ober gant ar bajenn-mañ", "changecredentials": "Kemmañ an titouroù kred", "changecredentials-submit": "Kemmañ an titouroù kred", "changecredentials-invalidsubpage": "N'eo ket $1 ur seurt titour kred reizh.", + "changecredentials-success": "Cheñchet eo bet ho titouroù anaout.", "removecredentials": "Lemel an titouroù kred", "removecredentials-submit": "Lemel an aotreoù", "removecredentials-invalidsubpage": "N'eo ket $1 ur seurt titour kred reizh.", + "removecredentials-success": "Lamet kuit eo bet ho titouroù anaout.", "credentialsform-provider": "Seurt titouroù kred :", "credentialsform-account": "Anv ar gont :", "cannotlink-no-provider-title": "N'eus kont ebet da liammañ", @@ -3343,6 +3660,10 @@ "linkaccounts-submit": "Liammañ ar c'hontoù", "unlinkaccounts": "Diliammañ ar c'hontoù", "unlinkaccounts-success": "Diliammet eo bet ar gont.", + "authenticationdatachange-ignored": "N'eus ket bet gallet cheñch ho roadennoù anaout. Marteze a-wac'h peogwir ne oa ket bet kefluniet pourvezer ebet.", + "restrictionsfield-badip": "Chomlec'h IP pe lijorenn direizh : $1", + "restrictionsfield-label": "Lijorennoù IP aotreet :", + "restrictionsfield-help": "Ur chomlec'h IP pe un esaouenn CIDR dre linenn. Evit gweredekaat pep tra, ober gant <pre>0.0.0.0/0\n::/0</pre>", "revid": "Adweladenn $1", "pageid": "ID ar bajenn $1" } diff --git a/languages/i18n/bs.json b/languages/i18n/bs.json index 2a3c356ce3..16910aeb85 100644 --- a/languages/i18n/bs.json +++ b/languages/i18n/bs.json @@ -23,7 +23,8 @@ "Emir Mujadzic", "Srdjan m", "Semso98", - "Matma Rex" + "Matma Rex", + "Сербијана" ] }, "tog-underline": "Podvuci veze:", @@ -40,7 +41,7 @@ "tog-watchcreations": "Dodaj stranice i datoteke koje napravim na moj spisak praćenih članaka", "tog-watchdefault": "Dodaj stranice i datoteke koje uređujem na moj spisak praćenih članaka", "tog-watchmoves": "Dodaj stranice i datoteke koje premjestim na moj spisak praćenih članaka", - "tog-watchdeletion": "Dodaj stranice i datoteke koje izbriÅ¡em na moj spisak praćenih članaka", + "tog-watchdeletion": "Dodaj stranice i datoteke koje obriÅ¡em na moj spisak praćenja", "tog-watchuploads": "Dodaj datoteke koje postavim na moj spisak praćenja", "tog-watchrollback": "Sve stranice za koje sam izvrÅ¡io povrat izmjena stavi na spisak praćenja", "tog-minordefault": "Označi sve izmjene manjim isprva", @@ -74,7 +75,7 @@ "underline-default": "Prema predodređenim postavkama teme ili preglednika", "editfont-style": "Stil fonta u okviru za uređivanje:", "editfont-default": "Po postavkama preglednika", - "editfont-monospace": "Slova sa jednostrukim razmakom", + "editfont-monospace": "Neproporcionalni font", "editfont-sansserif": "Beserifni font", "editfont-serif": "Serifni font", "sunday": "nedjelja", @@ -84,13 +85,13 @@ "thursday": "četvrtak", "friday": "petak", "saturday": "subota", - "sun": "Ned", - "mon": "Pon", - "tue": "Uto", - "wed": "Sri", - "thu": "Čet", - "fri": "Pet", - "sat": "Sub", + "sun": "ned", + "mon": "pon", + "tue": "uto", + "wed": "sri", + "thu": "čet", + "fri": "pet", + "sat": "sub", "january": "januar", "february": "februar", "march": "mart", @@ -145,7 +146,7 @@ "category_header": "Stranice u kategoriji \"$1\"", "subcategories": "Potkategorije", "category-media-header": "Datoteke u kategoriji \"$1\"", - "category-empty": "''Ova kategorija trenutno ne sadrži članke ni medije.''", + "category-empty": "<em>Ova kategorija trenutno ne sadrži članke ni medije.</em>", "hidden-categories": "{{PLURAL:$1|Sakrivena kategorija|Sakrivene kategorije}}", "hidden-category-category": "Skrivene kategorije", "category-subcat-count": "{{PLURAL:$2|Ova kategorija samo ima sljedeću potkategoriju.|Ova kategorija ima {{PLURAL:$1|sljedeću potkategoriju|sljedeće $1 potkategorije|sljedećih $1 potkategorija}}, od $2 ukupno.}}", @@ -169,7 +170,7 @@ "anontalk": "Razgovor", "navigation": "Navigacija", "and": " i", - "qbfind": "Pronađite", + "qbfind": "Pronađi", "qbbrowse": "Potraži", "qbedit": "Uredi", "qbpageoptions": "Opcije stranice", @@ -190,6 +191,7 @@ "searcharticle": "Idi", "history": "Historija stranice", "history_short": "Historija", + "history_small": "historija", "updatedmarker": "promjene od moje posljednje posjete", "printableversion": "Za Å¡tampanje", "permalink": "Trajni link", @@ -209,7 +211,7 @@ "viewdeleted_short": "Pogledaj {{PLURAL:$1|jednu obrisanu izmjenu|$1 obrisane izmjene|$1 obrisanih izmjena}}", "protect": "ZaÅ¡titi", "protect_change": "promijeni", - "protectthispage": "ZaÅ¡titite ovu stranicu", + "protectthispage": "ZaÅ¡titi ovu stranicu", "unprotect": "Promijeni zaÅ¡titu", "unprotectthispage": "Promijeni zaÅ¡titu ove stranice", "newpage": "Nova stranica", @@ -222,12 +224,13 @@ "views": "Pregledi", "toolbox": "Alati", "tool-link-userrights": "Promijeni {{GENDER:$1|korisničke}} grupe", + "tool-link-userrights-readonly": "Vidi {{GENDER:$1|korisničke}} grupe", "tool-link-emailuser": "PoÅ¡alji e-poruku {{GENDER:$1|korisniku|korisnici}}", "userpage": "Pogledaj korisničku stranicu", "projectpage": "Pogledaj stranicu projekta", - "imagepage": "Pogledajte stranicu datoteke", + "imagepage": "Pogledaj stranicu datoteke", "mediawikipage": "Pogledaj stranicu sa porukama", - "templatepage": "Pogledajte stranicu za Å¡ablone", + "templatepage": "Pogledaj stranicu za Å¡ablone", "viewhelppage": "Pogledajte stranicu za pomoć", "categorypage": "Pogledaj stranicu kategorije", "viewtalkpage": "Pogledaj razgovor", @@ -235,12 +238,12 @@ "redirectedfrom": "(Preusmjereno sa $1)", "redirectpagesub": "Preusmjerenje", "redirectto": "Preusmjerenje na:", - "lastmodifiedat": "Ova stranica je posljednji put izmijenjena u $2 na $1.", + "lastmodifiedat": "Ova stranica je posljednji put izmijenjena na dan $1 u $2.", "viewcount": "Ovoj stranici je pristupljeno {{PLURAL:$1|$1 put|$1 puta}}.", "protectedpage": "ZaÅ¡tićena stranica", "jumpto": "Idi na:", - "jumptonavigation": "navigacija", - "jumptosearch": "traži", + "jumptonavigation": "navigaciju", + "jumptosearch": "pretragu", "view-pool-error": "Žao nam je, serveri su trenutno preopterećeni.\nPreviÅ¡e korisnika pokuÅ¡ava da pregleda ovu stranicu.\nMolimo pričekajte trenutak prije nego Å¡to ponovno pokuÅ¡ate pristupiti ovoj stranici.\n\n$1", "generic-pool-error": "Nažalost, serveri su trenutno preopterećeni.\nPreviÅ¡e korisnika pokuÅ¡ava da vidi ovaj resurs.\nMolimo pričekajte trenutak prije nego Å¡to ponovo pokuÅ¡ate da mu pristupite.", "pool-timeout": "Zaustavi čekanje na zaključavanje", @@ -249,7 +252,7 @@ "pool-servererror": "Usluga brojača poola nije dostupna ($1).", "poolcounter-usage-error": "GreÅ¡ka pri upotrebi: $1", "aboutsite": "O {{GRAMMAR:dativ|{{SITENAME}}}}", - "aboutpage": "Project:O_projektu_{{SITENAME}}", + "aboutpage": "Project:O {{GRAMMAR:dativ|{{SITENAME}}}}", "copyright": "Sadržaj je dostupan pod licencom $1 osim ako je navedeno drugačije.", "copyrightpage": "{{ns:project}}:Autorska_prava", "currentevents": "Novosti", @@ -327,29 +330,29 @@ "databaseerror-query": "Upit: $1", "databaseerror-function": "Funkcija: $1", "databaseerror-error": "GreÅ¡ka: $1", - "laggedslavemode": "'''Upozorenje''': Stranica, možda, nije ažurirana.", + "laggedslavemode": "<strong>Upozorenje:</strong> Moguće je da stranica nije ažurirana.", "readonly": "Baza je zaključana", "enterlockreason": "Unesite razlog za zaključavanje, uključujući procjenu vremena otključavanja", "readonlytext": "Baza podataka trenutno je zaključana za nove unose i druge izmjene, vjerovatno zbog rutinskog održavanja, nakon čega će biti vraćena u uobičajeno stanje.\n\nSistemski administrator koji ju je zaključao naveo je sljedeće objaÅ¡njenje: $1", - "missing-article": "U bazi podataka nije pronađen tekst stranice tražen pod nazivom \"$1\" $2.\n\nDo ovoga dolazi kad se prati pomjeranje ili historija linka za stranicu koja je pobrisana.\n\n\nU slučaju da se ne radi o gore navedenom moguće je da ste pronaÅ¡li greÅ¡ku u programu.\nMolimo Vas da ovo prijavite [[Special:ListUsers/sysop|administratoru]] s navođenjem tačne adrese stranice.", - "missingarticle-rev": "(revizija#: $1)", + "missing-article": "U bazi podataka nije pronađen tekst stranice koji je trebao biti pronađen pod nazivom \"$1\" $2.\n\nNajčešći uzrok ove greÅ¡ke jest zastarjela razlika izmjena ili link ka obrisanoj stranici.\n\nU slučaju da se ne radi o gore navedenom moguće je da ste pronaÅ¡li greÅ¡ku u programu.\nMolimo Vas da ovo prijavite [[Special:ListUsers/sysop|administratoru]] uz odgovarajuću adresu stranice.", + "missingarticle-rev": "(izmjena#: $1)", "missingarticle-diff": "(Razlika: $1, $2)", "readonly_lag": "Baza podataka je zaključana dok se sekundarne baze podataka na serveru ne sastave sa glavnom.", "internalerror": "UnutraÅ¡nja greÅ¡ka", "internalerror_info": "Interna greÅ¡ka: $1", "internalerror-fatal-exception": "Fatalna greÅ¡ka tipa \"$1\"", - "filecopyerror": "Ne može se kopirati \"$1\" na \"$2\".", - "filerenameerror": "Ne može se promjeniti ime datoteke \"$1\" u \"$2\".", - "filedeleteerror": "Ne može se izbrisati datoteka \"$1\".", + "filecopyerror": "Ne mogu kopirati datoteku \"$1\" na \"$2\".", + "filerenameerror": "Ne mogu preimenovati datoteku \"$1\" u \"$2\".", + "filedeleteerror": "Ne mogu obrisati datoteku \"$1\".", "directorycreateerror": "Nije moguće napraviti direktorijum \"$1\".", "directoryreadonlyerror": "Direktorij \"$1\" je samo za čitanje.", "directorynotreadableerror": "Direktorij \"$1\" nije čitljiv.", - "filenotfound": "Ne može se naći datoteka \"$1\".", + "filenotfound": "Ne mogu pronaći datoteku \"$1\".", "unexpected": "Neočekivana vrijednost: \"$1\"=\"$2\".", - "formerror": "GreÅ¡ka: ne može se poslati upitnik", - "badarticleerror": "Ova akcija ne može biti izvrÅ¡ena na ovoj stranici.", - "cannotdelete": "Ne može se obrisati stranica ili datoteka \"$1\".\nMoguće je da ju je neko već obrisao.", - "cannotdelete-title": "Ne mogu izbrisati stranicu \"$1\"", + "formerror": "GreÅ¡ka: ne mogu poslati upitnik.", + "badarticleerror": "Ova radnja se ne može izvrÅ¡iti na ovoj stranici.", + "cannotdelete": "Ne mogu obrisati stranicu ili datoteku \"$1\".\nMoguće je da ju je neko već obrisao.", + "cannotdelete-title": "Ne mogu obrisati stranicu \"$1\"", "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", @@ -396,6 +399,7 @@ "virus-scanfailed": "skeniranje nije uspjelo (code $1)", "virus-unknownscanner": "nepoznati anti-virus program:", "logouttext": "'''Sad ste odjavljeni.'''\n\nObratite pažnju da neke stranice mogu nastaviti da se prikazuju kao da ste joÅ¡ uvijek prijavljeni, dok ne očistite keÅ¡ svog preglednika.", + "cannotlogoutnow-title": "Odjava trenutno nije moguća", "welcomeuser": "Dobro doÅ¡li, $1", "welcomecreation-msg": "VaÅ¡ nalog je napravljen.\nNe zaboravite da prilagodite sebi svoja [[Special:Preferences|{{SITENAME}} podeÅ¡avanja]].", "yourname": "Korisničko ime:", @@ -411,62 +415,65 @@ "createacct-yourpasswordagain-ph": "Unesite lozinku opet", "userlogin-remembermypassword": "Ostavi me prijavljenog/-u", "userlogin-signwithsecure": "Koristite sigurnu konekciju", + "cannotlogin-title": "Prijava nije moguća", + "cannotlogin-text": "Prijava nija moguća.", + "cannotloginnow-title": "Prijava trenutno nije moguća", + "cannotcreateaccount-title": "Pravljenje računa nije moguće", + "cannotcreateaccount-text": "Direktno pravljenje računa nije omogućeno na ovom wikiju.", "yourdomainname": "VaÅ¡ domen:", "password-change-forbidden": "Ne možete da promjenite lozinku na ovom wikiju.", "externaldberror": "DoÅ¡lo je do greÅ¡ke pri vanjskoj autorizaciji baze podataka ili vam nije dopuÅ¡teno osvježavanje VaÅ¡eg vanjskog korisničkog računa.", "login": "Prijavi me", + "login-security": "Potvrdite svoj identitet", "nav-login-createaccount": "Prijavi se / Registruj se", - "userlogin": "Prijavi se / Registruj se", - "userloginnocreate": "Prijavi se", "logout": "Odjavi me", "userlogout": "Odjavi me", "notloggedin": "Niste prijavljeni", "userlogin-noaccount": "Nemate korisnički račun?", "userlogin-joinproject": "Pridružite se {{GRAMMAR:dativ|{{SITENAME}}}}", - "nologin": "Nemate korisničko ime? $1.", - "nologinlink": "Otvorite račun", "createaccount": "Napravi korisnički račun", - "gotaccount": "Već imate korisnički račun? $1.", - "gotaccountlink": "Prijavite se", - "userlogin-resetlink": "Zaboravili ste detalje vaÅ¡e prijave?", "userlogin-resetpassword-link": "Zaboravili ste lozinku?", "userlogin-helplink2": "Pomoć pri prijavljivanju", "userlogin-loggedin": "Već ste prijavljeni kao {{GENDER:$1|$1}}.\nKoristite donji obrazac da biste se prijavili kao drugi korisnik.", "userlogin-reauth": "Morate se ponovo prijaviti da bismo potvrdili da ste zaista {{GENDER:$1|$1}}.", "userlogin-createanother": "Napravi joÅ¡ jedan račun", "createacct-emailrequired": "Adresa e-poÅ¡te", - "createacct-emailoptional": "Adresa e-poÅ¡te (opcionalno)", + "createacct-emailoptional": "Adresa e-poÅ¡te (neobavezno)", "createacct-email-ph": "Unesite VaÅ¡u adresu e-pоšte", "createacct-another-email-ph": "Unesite adresu e-poÅ¡te", "createaccountmail": "Koristite privremenu, slučajno stvorenu lozinku i poÅ¡aljite na navedenu adrеsu e-poÅ¡te", + "createaccountmail-help": "Može se koristiti da se nekome napravi račun bez da se sazna lozinka.", "createacct-realname": "Pravo ime (opcionalno)", - "createaccountreason": "Razlog:", "createacct-reason": "Razlog", "createacct-reason-ph": "ZaÅ¡to pravite joÅ¡ jedan korisnički račun?", - "createacct-submit": "Napravite svoj korisnički račun", + "createacct-reason-help": "Poruka koja se prikazuje u zapisniku stvaranja korisničkih računa", + "createacct-submit": "Napravi račun", "createacct-another-submit": "Napravi korisnički račun", + "createacct-continue-submit": "Nastavi sa stvaranjem računa", + "createacct-another-continue-submit": "Nastavi sa stvaranjem računa", "createacct-benefit-heading": "{{GRAMMAR:akuzativ|{{SITENAME}}}} stvaraju ljudi poput Vas.", - "createacct-benefit-body1": "{{PLURAL:$1|izmjena|izmjene}}", + "createacct-benefit-body1": "{{PLURAL:$1|izmjena|izmjene|izmjena}}", "createacct-benefit-body2": "{{PLURAL:$1|stranica|stranice|stranica}}", - "createacct-benefit-body3": "nedavnih {{PLURAL:$1|doprinosa}}", + "createacct-benefit-body3": "{{PLURAL:$1|nedavni korisnik|nedavnih korisnika}}", "badretype": "Lozinke koje ste unijeli se ne poklapaju", "usernameinprogress": "Račun za ovo korisničko ime već se pravi. Molimo sačekajte.", "userexists": "Korisničko ime je već u upotrebi.\nIzaberite drugo.", "loginerror": "GreÅ¡ka pri prijavljivanju", "createacct-error": "DoÅ¡lo je do greÅ¡ke pri otvaranju naloga", - "createaccounterror": "Ne može se napraviti račun: $1", - "nocookiesnew": "Korisnički nalog je napravljen, ali niste prijavljeni.\n{{SITENAME}} koristi kolačiće (cookies) da bi se korisnici prijavili.\nVi ste isključili kolačiće na VaÅ¡em računaru.\nMolimo Vas da ih uključite, a onda se prijavite sa svojim novim korisničkim imenom i lozinkom.", - "nocookieslogin": "{{SITENAME}} koristi kolačiće (''cookies'') da bi se korisnici prijavili. Vi ste onemogućili kolačiće na VaÅ¡em kompjuteru. Molimo Vas da ih omogućite i da pokuÅ¡ate ponovo sa prijavom.", + "createaccounterror": "Ne mogu napraviti račun: $1", + "nocookiesnew": "Korisnički račun je napravljen, ali niste prijavljeni.\n{{SITENAME}} koristi kolačiće (cookies) za prijavu korisnika.\nVama su kolačići onemogućeni.\nOmogućite ih pa se onda prijavite s novim korisničkim imenom i lozinkom.", + "nocookieslogin": "{{SITENAME}} koristi kolačiće (''cookies'') za prijavu korisnika.\nVama su kolačići onemogućeni.\nOmogućite ih i pokuÅ¡ajte ponovo.", "nocookiesfornew": "Korisnički račun nije napravljen, jer nismo mogli da potvrdimo njegov izvor.\nProvjerite da li su cookies omogućeni, ponovo učitajte ovu stranicu i pokuÅ¡ajte ponovo.", + "createacct-loginerror": "Račun je uspjeÅ¡no napravljen, ali Vas nije bilo moguće automatski prijaviti. Prijavite se [[Special:UserLogin|ručno]].", "noname": "Niste izabrali ispravno korisničko ime.", - "loginsuccesstitle": "Prijavljen", + "loginsuccesstitle": "Prijava uspjeÅ¡na", "loginsuccess": "<strong>Prijavili ste se na {{GRAMMAR:akuzativ|{{SITENAME}}}} kao \"$1\".</strong>", "nosuchuser": "Ne postoji korisnik s imenom \"$1\".\nKorisnička imena razlikuju velika i mala slova.\nProvjerite jeste li ga tačno upisali ili [[Special:CreateAccount|otvorite novi račun]].", "nosuchusershort": "Ne postoji korisnik s imenom \"$1\".\nProvjerite jeste li dobro ukucali.", "nouserspecified": "Morate izabrati korisničko ime.", "login-userblocked": "Ovaj korisnik je blokiran. Prijava nije dopuÅ¡tena.", "wrongpassword": "Lozinka koju ste unijeli je netačna.\nPokuÅ¡ate ponovno.", - "wrongpasswordempty": "Lozinka koju ste unijeli je bila prazna.\nMolimo Vas da pokuÅ¡ate ponovno.", + "wrongpasswordempty": "Niste upisali lozinku.\nPokuÅ¡ajte ponovo.", "passwordtooshort": "Lozinka mora imati najmanje {{PLURAL:$1|1 znak|$1 znaka|$1 znakova}}.", "passwordtoolong": "Lozinke ne mogu biti duže od {{PLURAL:$1|jednog znaka|$1 znaka|$1 znakova}}.", "passwordtoopopular": "Ovo je često koriÅ¡tena lozinka i ne može se koristiti. Molimo Vas da izaberete jaču lozinku.", @@ -482,11 +489,11 @@ "eauthentsent": "Na navedenu adresu e-poÅ¡te poslana je poruka s potvrdom.\nPrije nego Å¡to poÅ¡aljemo daljnje poruke, pratite uputstva s e-poÅ¡te da biste potvrdili da je račun zaista VaÅ¡.", "throttled-mailpassword": "Već Vam je poslana e-poruka za promjenu lozinke u {{PLURAL:$1|posljednjih sat vremena|posljednja $1 sata|posljednjih $1 sati}}.\nDa bi se spriječila zloupotreba, može se poslati samo jedna e-poruka za promjenu lozinke {{PLURAL:$1|svakih sat vremena|svaka $1 sata|svakih $1 sati}}.", "mailerror": "GreÅ¡ka pri slanju e-poÅ¡te: $1", - "acct_creation_throttle_hit": "Posjetioci na ovoj wiki koji koriste VaÅ¡u IP adresu su već napravili {{PLURAL:$1|$1 račun|$1 računa}} u zadnjih nekoliko dana, Å¡to je najveći broj dopuÅ¡tenih napravljenih računa za ovaj period.\nKao rezultat, posjetioci koji koriste ovu IP adresu ne mogu trenutno praviti viÅ¡e računa.", + "acct_creation_throttle_hit": "Posjetioci ovog wikija koji koriste VaÅ¡u IP-adresu već su napravili {{PLURAL:$1|$1 račun|$1 računa}} u posljednjih $2, Å¡to je najveći dozvoljeni broj u tom vremenskom periodu.\nZbog toga posjetioci s ove IP-adrese trenutno ne mogu praviti viÅ¡e računa.", "emailauthenticated": "VaÅ¡a adresa e-poÅ¡te potvrđena je $2 u $3.", "emailnotauthenticated": "VaÅ¡a adresa e-poÅ¡te joÅ¡ nije potvrđena.\nNijedna e-poruka neće biti poslana za bilo koju uslugu od sljedećih.", "noemailprefs": "Unesite e-mail adresu za osposobljavanje slijedećih usluga.", - "emailconfirmlink": "Potvrdite VaÅ¡u e-mail adresu", + "emailconfirmlink": "Potvrdite svoju adresu e-poÅ¡te", "invalidemailaddress": "Ova e-mail adresa ne može biti prihvaćena jer je u neodgovarajućem obliku.\nMolimo vas da unesete ispravnu adresu ili ostavite prazno polje.", "cannotchangeemail": "Na ovom wikiju ne možete promijeniti e-mail adresu računa.", "emaildisabled": "Ova web-stranica ne može da Å¡alje e-poruke.", @@ -502,6 +509,7 @@ "createacct-another-realname-tip": "Pravo ime nije obavezno.\nAko izaberete da date ime, biće koriÅ¡teno za pripisivanje za vaÅ¡ rad.", "pt-login": "Prijavi me", "pt-login-button": "Prijavi me", + "pt-login-continue-button": "Nastavi prijavljivanje", "pt-createaccount": "Napravi korisnički račun", "pt-userlogout": "Odjavi me", "php-mail-error-unknown": "Nepoznata greÅ¡ka u PHP funkciji mail()", @@ -517,7 +525,30 @@ "resetpass_submit": "Postavi lozinku i prijavi se", "changepassword-success": "VaÅ¡a lozinka je promijenjena.", "changepassword-throttled": "PreviÅ¡e puta ste se pokuÅ¡ali prijaviti.\nMolimo Vas da sačekate $1 prije nego Å¡to pokuÅ¡ate ponovo.", + "botpasswords": "Lozinke botova", + "botpasswords-disabled": "Lozinke botova su onemogućene.", + "botpasswords-no-central-id": "Da biste koristili lozinke botova, morate biti prijavljeni na srediÅ¡nji račun.", + "botpasswords-existing": "Postojeće lozinke botova", + "botpasswords-createnew": "Napravi novu lozinku bota", + "botpasswords-editexisting": "Uredi postojeću lozinku bota", + "botpasswords-label-appid": "Ime bota:", + "botpasswords-label-create": "Napravi", + "botpasswords-label-update": "Ažuriraj", + "botpasswords-label-cancel": "Otkaži", + "botpasswords-label-delete": "ObriÅ¡i", + "botpasswords-label-resetpassword": "Ponovo postavi lozinku", + "botpasswords-label-grants": "Primjenjive dozvole:", + "botpasswords-label-grants-column": "Odobreno", + "botpasswords-bad-appid": "Ime bota \"$1\" nije ispravno.", + "botpasswords-insert-failed": "Ne mogu dodati bota pod nazivom \"$1\". Možda je već dodano?", + "botpasswords-update-failed": "Ne mogu ažurirati bota pod nazivom \"$1\". Možda je obrisan?", + "botpasswords-created-title": "Napravljena lozinka bota", + "botpasswords-created-body": "Napravljena lozinka za bota \"$1\" korisnika \"$2\".", + "botpasswords-updated-title": "Ažurirana lozinka bota", + "botpasswords-updated-body": "Ažurirana lozinka za bota \"$1\" korisnika \"$2\".", + "botpasswords-deleted-title": "Obrisana lozinka bota", "resetpass_forbidden": "Lozinke ne mogu biti promijenjene", + "resetpass_forbidden-reason": "Lozinke ne mogu biti promijenjene: $1", "resetpass-no-info": "Morate biti prijavljeni da biste pristupili ovoj stranici direktno.", "resetpass-submit-loggedin": "Promijeni lozinku", "resetpass-submit-cancel": "Odustani", @@ -542,6 +573,9 @@ "passwordreset-emailtext-user": "Korisnik $1 na {{SITENAME}} je zatražio podsjetnik o detaljima VaÅ¡eg računa za {{SITENAME}} ($4). Sljedeći {{PLURAL:$3|korisnički račun je|korisnički računi su}} povezani s ovom e-mail adresom:\n\n$2\n\n{{PLURAL:$3|Ova privremena Å¡ifra|Ove privremene Å¡ifre}} će isteći za {{PLURAL:$5|jedan dan|$5 dana}}.\nTrebate se prijaviti i odabrati novu Å¡ifru. Ako je neko drugi napravio ovaj zahtjev, ili ako ste se sjetili VaÅ¡e originalne Å¡ifre, a ne želite je viÅ¡e promijeniti, možete zanemariti ovu poruku i nastaviti koristiti staru Å¡ifru.", "passwordreset-emailelement": "Korisničko ime: \n$1\n\nPrivremena Å¡ifra: \n$2", "passwordreset-emailsentemail": "Ako je ova adresa e-poÅ¡te povezana s VaÅ¡im računom, podsjetnik o lozinci bit će Vam poslan na adresu e-poÅ¡te.", + "passwordreset-nocaller": "Mora se navesti pozivalac", + "passwordreset-nosuchcaller": "Pozivalac ne postoji: $1", + "passwordreset-invalidemail": "Neispravna adresa e-poÅ¡te", "changeemail": "Promjena ili uklanjanje e-adrese", "changeemail-header": "Ispunite sljedeći formular da biste promijenili adresu e-poÅ¡te. Ako želite ukloniti postojeću adresu e-poÅ¡te s vaÅ¡eg korisničkog računa, pri ispunjavanju formulara, polje nove adrese e-poÅ¡te ostavite prazno.", "changeemail-no-info": "Morate biti prijavljeni za direktan pristup ovoj stranici.", @@ -572,12 +606,12 @@ "headline_sample": "Naslov", "headline_tip": "Podnaslov", "nowiki_sample": "Dodaj neformatirani tekst ovdje", - "nowiki_tip": "IgnoriÅ¡i viki formatiranje teksta", + "nowiki_tip": "Zanemari wikiformatiranje", "image_sample": "ime_slike.jpg", "image_tip": "Uklopljena slika", "media_sample": "ime_medija_fajla.ogg", "media_tip": "Putanja ka multimedijalnoj datoteci", - "sig_tip": "VaÅ¡ potpis sa trenutnim vremenom", + "sig_tip": "VaÅ¡ potpis s trenutnim vremenom", "hr_tip": "Horizontalna linija (koristite oskudno)", "summary": "Sažetak:", "subject": "Tema:", @@ -593,9 +627,9 @@ "blankarticle": "<strong>Upozorenje:</strong> Napravili ste praznu stranicu.\nAko ponovno kliknete \"{{int:savearticle}}\", napravit ćete praznu stranicu bez sadržaja.", "anoneditwarning": "<strong>Upozorenje:</strong> Niste prijavljeni. \nVaÅ¡a IP adresa će biti javno vidljiva ako napravite neku izmjenu. Ako se <strong>[$1 prijavite]</strong> ili <strong>[$2 napravite račun]</strong>, vaÅ¡e izmjene će biti pripisane vaÅ¡em korisničkom imenu, zajedno sa drugim pogodnostima.", "anonpreviewwarning": "''Niste prijavljeni. Nakon spremanja izmjena vaÅ¡a IP adresa će biti zapisana u historiji uređivanja ove stranice.''", - "missingsummary": "'''Napomena:''' Niste unijeli sažetak izmjene.\nAko kliknete na Sačuvaj, VaÅ¡a izmjena će biti sačuvana bez sažetka.", + "missingsummary": "<strong>Napomena:</strong> Niste unijeli sažetak izmjene.\nAko ponovo kliknete na \"{{int:savearticle}}\", VaÅ¡a izmjena će biti sačuvana bez sažetka.", "selfredirect": "<strong>Upozorenje:</strong> Preusmjerili ste stranicu na samu sebe.\nMožda ste naveli pogreÅ¡an cilj preusmjeravanja ili ste uređivali pogreÅ¡nu stranicu.\nAko ponovno kliknete \"{{int:savearticle}}\", ipak će nastati preusmjerenje.", - "missingcommenttext": "Molimo unesite komentar ispod.", + "missingcommenttext": "Unesite komentar ispod.", "missingcommentheader": "<strong>Podsjetnik:</strong> Niste napisali temu za ovaj komentar.\nAko ponovo kliknete na \"{{int:savearticle}}\", vaÅ¡a izmjena će biti sačuvana bez teme/naslova.", "summary-preview": "Pregled sažetka:", "subject-preview": "Pregled teme:", @@ -605,36 +639,36 @@ "autoblockedtext": "VaÅ¡a IP-adresa automatski je blokirana jer ju je koristio drugi korisnik, a blokirao ju je $1.\nNaveden je sljedeći razlog:\n\n:''$2''\n\n* Početak blokade: $8\n* Kraj blokade: $6\n* Blokirani korisnik: $7\n\nMožete kontaktirati sa $1 ili nekim drugim iz grupe [[{{MediaWiki:Grouppage-sysop}}|administratora]] i zahtijevati da Vas deblokira.\n\nZapamtite da ne možete koristiti opciju \"poÅ¡alji e-mail ovom korisniku\" sve dok ne unesete validnu e-mail adresu pri registraciji u VaÅ¡im [[Special:Preferences|korisničkim postavkama]] i dok niste spriječeni (blokadom) da je koristite.\n\nVaÅ¡a trenutna IP-adresa je $3, a ID blokade je $5.\nMolimo da navedete sve gore navedene detalje u zahtjevu za deblokadu.", "blockednoreason": "razlog nije naveden", "whitelistedittext": "Morate biti $1 da biste uređivali stranice.", - "confirmedittext": "Morate potvrditi VaÅ¡u e-mail adresu prije nego počnete mijenjati stranice.\nMolimo da postavite i verifikujete VaÅ¡u e-mail adresu putem VaÅ¡ih [[Special:Preferences|korisničkih opcija]].", + "confirmedittext": "Morate potvrditi svoju adresu e-poÅ¡te prije nego počnete mijenjati stranice.\nPostavite i potvrdite svoju adresu e-poÅ¡te u [[Special:Preferences|korisničkim postavkama]].", "nosuchsectiontitle": "Ne mogu pronaći sekciju", "nosuchsectiontext": "PokuÅ¡ali ste uređivati sekciju koja ne postoji.\nMožda je premjeÅ¡tena ili obrisana dok ste pregledavali stranicu.", "loginreqtitle": "Potrebna je prijava", "loginreqlink": "prijavljeni", "loginreqpagetext": "Morate biti $1 da biste vidjeli druge stranice.", "accmailtitle": "Å ifra poslana.", - "accmailtext": "Nasumično odabrana Å¡ifra za [[User talk:$1|$1]] je poslata na adresu $2.\n\nÅ ifra/lozinka za ovaj novi račun može biti promijenjena na stranici ''[[Special:ChangePassword|izmjene Å¡ifre]]'' nakon prijave.", + "accmailtext": "Nasumično odabrana lozinka za [[User talk:$1|$1]] poslana je na $2. Lozinka se <em>[[Special:ChangePassword|može promijeniti]]</em> nakon prijave.", "newarticle": "(Novi)", "newarticletext": "DoÅ¡li ste na stranicu koja joÅ¡ nema sadržaja.\n*Ako želite unijeti sadržaj, počnite tipkati u prozor ispod ovog teksta.\n*Ako Vam treba pomoć, idite na [$1 stranicu za pomoć].\n*Ako ste ovamo dospjeli slučajno, kliknite na dugme \"Nazad\" (''Back'') u VaÅ¡em internetskom pregledniku.", "anontalkpagetext": "----\n<em>Ovo je stranica za razgovor s anonimnim korisnikom koji joÅ¡ nije napravio račun ili ga ne koristi.</em>\nZbog toga moramo koristiti brojčanu IP-adresu kako bismo ga prepoznali.\nTakvu adresu može dijeliti viÅ¡e korisnika.\nAko ste anonimni korisnik i smatrate da su Vam upućene nebitne primjedbe, molimo Vas da [[Special:CreateAccount|napravite račun]] ili se [[Special:UserLogin|prijavite]] da biste izbjegli buduću zabunu s ostalim anonimnim korisnicima.", "noarticletext": "Na ovoj stranici trenutno nema teksta.\nMožete [[Special:Search/{{PAGENAME}}|tražiti naslov ove stranice]] na drugim stranicama,\n<span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} tražiti u povezanim zapisnicima] ili [{{fullurl:{{FULLPAGENAME}}|action=edit}} napraviti ovu stranicu]</span>.", "noarticletext-nopermission": "Trenutno nema teksta na ovoj stranici.\nMožete [[Special:Search/{{PAGENAME}}|tražiti ovaj naslov stranice]] na drugim stranicama ili <span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} pretražiti povezane zapisnike]</span>, ali nemate dozvolu da napravite ovu stranicu.", "missing-revision": "Uređivanje broj $1 na stranici \"{{FULLPAGENAME}}\" ne postoji.\n\nOvo se obično deÅ¡ava kad pratite zastarjelu vezu na stranicu koja je obrisana.\nViÅ¡e informacija možete pronaći u [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} protokolu brisanja].", - "userpage-userdoesnotexist": "Korisnički račun \"<nowiki>$1</nowiki>\" nije registrovan.\nMolimo provjerite da li želite napraviti/izmijeniti ovu stranicu.", - "userpage-userdoesnotexist-view": "Korisnički račun \"$1\" nije registrovan.", + "userpage-userdoesnotexist": "Korisnički račun \"$1\" nije registriran.\nRazmislite želite li zaista napraviti/izmijeniti ovu stranicu.", + "userpage-userdoesnotexist-view": "Korisnički račun \"$1\" nije registriran.", "blocked-notice-logextract": "Ovaj korisnik je trenutno blokiran.\nPosljednje stavke zapisnika blokiranja možete pogledati ispod:", "clearyourcache": "<strong>Napomena:</strong> Nakon Å¡to sačuvate izmjene, možda ćete morati osvježiti keÅ¡ preglednika da biste vidjeli izmjene.\n* <strong>Firefox / Safari:</strong> Držite <em>Shift</em> i kliknite na <em>Reload</em> ili pritisnite <em>Ctrl-F5</em> ili <em>Ctrl-R</em> (<em>⌘-R</em> na Macu)\n* <strong>Google Chrome:</strong> Pritisnite <em>Ctrl-Shift-R</em> (<em>⌘-Shift-R</em> na Macu)\n* <strong>Internet Explorer:</strong> Držite <em>Ctrl</em> i kliknite na <em>Refresh</em> ili pritisnite <em>Ctrl-F5</em>\n* <strong>Opera:</strong> Idite na <em>Menu → Settings</em> (<em>Opera → Preferences</em> na Macu) i zatim <em>Privacy & security → Clear browsing data → Cached images and files</em>.", "usercssyoucanpreview": "'''Pažnja:''' Koristite dugme \"{{int:showpreview}}\" da testirate svoj novi CSS prije nego Å¡to sačuvate.", "userjsyoucanpreview": "'''Pažnja:''' Koristite dugme \"{{int:showpreview}}\" da testirate svoj novi JavaScript prije nego Å¡to sačuvate.", - "usercsspreview": "'''Zapamtite ovo je samo izgled VaÅ¡eg CSS-a.'''\n'''Ovaj pregled joÅ¡ uvijek nije sačuvan!'''", - "userjspreview": "'''Zapamtite ovo je samo izgled vaÅ¡e JavaScript-e, joÅ¡ uvijek nije sačuvan!'''", + "usercsspreview": "<strong>Zapamtite da je ovo samo pregled VaÅ¡eg CSS-a.\nStranica joÅ¡ nije sačuvana!</strong>", + "userjspreview": "<strong>Zapamtite da je ovo samo pregled VaÅ¡eg JavaScripta.\nStranica joÅ¡ nije sačuvana!</strong>", "sitecsspreview": "'''Zapamtite ovo je samo izgled ovog CSS-a.'''\n'''JoÅ¡ uvijek nije sačuvan!'''", "sitejspreview": "'''Zapamtite ovo je samo izgled ovog koda JavaScripte.'''\n'''JoÅ¡ uvijek nije sačuvan!'''", - "userinvalidcssjstitle": "'''Upozorenje:''' Ne postoji interfejs pod imenom \"$1\".\nNe zaboravite da imena stranica s .css i .js kodom počinju malim slovom, npr, {{ns:user}}:Foo/vector.css, a ne {{ns:user}}:Foo/Vector.css.", + "userinvalidcssjstitle": "<strong>Upozorenje:</strong> Ne postoji tema \"$1\".\nNe zaboravite da imena stranica s .css i .js kodom počinju malim slovom, npr, {{ns:user}}:Foo/vector.css, a ne {{ns:user}}:Foo/Vector.css.", "updated": "(Osvježeno)", "note": "'''Pažnja:'''", "previewnote": "<strong>Ne zaboravite da je ovo samo pregled.</strong>\nVaÅ¡e izmjene joÅ¡ nisu sačuvane!", "continue-editing": "Idi na područje uređivanja", - "previewconflict": "Ovaj pregled prikazuje kako će tekst u gornjem polju\nizgledati ako kliknete \"Sačuvaj članak\".", + "previewconflict": "Ovaj pregled prikazuje kako će tekst u gornjem polju izgledati ako odlučite sačuvati stranicu.", "session_fail_preview": "Izvinjavamo se! Nismo mogli obraditi VaÅ¡u izmjenu zbog gubitka podataka o prijavi.\n\nMožda ste odjavljeni. <strong>Provjerite jeste li prijavljeni i pokuÅ¡ajte ponovo</strong>.\nAko i dalje ne radi, pokuÅ¡ajte se [[Special:UserLogout|odjaviti]] i ponovo prijaviti i provjerite dozvoljava li VaÅ¡ preglednik kolačiće s ovog sajta.", "session_fail_preview_html": "'''Žao nam je! Nismo mogli da obradimo vaÅ¡u izmjenu zbog gubitka podataka.'''\n\n''Zbog toga Å¡to {{SITENAME}} ima omogućen izvorni HTML, predpregled je sakriven kao predostrožnost protiv JavaScript napada.''\n\n'''Ako ste pokuÅ¡ali da napravite pravu izmjenu, molimo pokuÅ¡ajte ponovo. Ako i dalje ne radi, pokuÅ¡ajte da se [[Special:UserLogout|odjavite]] i ponovo prijavite.'''", "token_suffix_mismatch": "'''VaÅ¡a izmjena nije prihvaćena jer je VaÅ¡ web preglednik ubacio znakove interpunkcije u token uređivanja.\nIzmjena je odbačena da bi se spriječilo uniÅ¡tavanje teksta stranice.\nTo se događa ponekad kad korisite problematični anonimni proxy koji je baziran na web-u.'''", @@ -642,7 +676,7 @@ "editing": "Uređujete $1", "creating": "Pravljenje stranice $1", "editingsection": "Uređujete $1 (dio)", - "editingcomment": "Uređujete $1 (nova sekcija)", + "editingcomment": "Uređujete $1 (novi odlomak)", "editconflict": "Sukob izmjena: $1", "explainconflict": "Neko drugi je promijenio ovu stranicu otkad ste je Vi počeli mijenjati.\nGornje tekstualno polje sadrži tekst stranice koji trenutno postoji.\nVaÅ¡e izmjene prikazane su u donjem tekstu.\nMorat ćete unijeti svoje promjene u postojeći tekst.\n'''Samo''' tekst u gornjem tekstualnom polju bit će sačuvan kad\nkliknete \"{{int:savearticle}}\".", "yourtext": "VaÅ¡ tekst", @@ -654,7 +688,7 @@ "copyrightwarning2": "Zapamtite da svi doprinosi na stranici {{SITENAME}} može biti izmijenjen, promijenjen ili uklonjen od strane ostalih korisnika. Ako ne želite da ovo desi sa VaÅ¡im tekstom, onda ga nemojte slati ovdje.<br />\nTakođer nam garantujete da ste ovo Vi napisali, ili da ste ga kopirali iz javne domene ili sličnog slobodnog izvora informacija (pogledajte $1 za viÅ¡e detalja).\n'''NE Å ALJITE AUTORSKIM PRAVOM ZAÅ TIĆENE TEKSTOVE BEZ DOZVOLE!'''", "editpage-cannot-use-custom-model": "Model sadržaja ove stranice se ne može promijeniti.", "longpageerror": "'''GreÅ¡ka: Tekst, koji ste poslali, je dug {{PLURAL:$1|jedan kilobajt|$1 kilobajta}}, Å¡to je veće od maksimuma, koji iznosi {{PLURAL:$2|jedan kilobajt|$2 kilobajta}}.'''\nStranica ne može biti sačuvana.", - "readonlywarning": "'''PAŽNJA: Baza je zaključana zbog održavanja, tako da nećete moći da sačuvate svoje izmjene za sada.'''\nMožda želite da kopirate i nalijepite tekst u tekst editor i sačuvate ga za kasnije.\n\nAdministrator koji je zaključao bazu je naveo slijedeće objaÅ¡njenje: $1", + "readonlywarning": "<strong>Upozorenje: Baza je zaključana zbog održavanja, tako da nećete moći da sačuvate svoje izmjene za sada.</strong>\nMožda želite da kopirate i nalijepite tekst u tekst editor i sačuvate ga za kasnije.\n\nAdministrator koji je zaključao bazu je naveo sljedeće objaÅ¡njenje: $1", "protectedpagewarning": "'''PAŽNJA: Ova stranica je zaključana tako da samo korisnici sa administratorskim privilegijama mogu da je mijenjaju.'''\nPosljednja stavka u zapisniku je prikazana ispod kao referenca:", "semiprotectedpagewarning": "'''Pažnja:''' Ova stranica je zaključana tako da je samo registrovani korisnici mogu uređivati.\nPosljednja stavka zapisnika je prikazana ispod kao referenca:", "cascadeprotectedwarning": "<strong>Upozorenje:</strong> Ova stranica je zaključana tako da je samo administratori mogu mijenjati, jer je ona uključena u {{PLURAL:$1|ovu, lančanu povezanu, zaÅ¡tićenu stranicu|sljedeće, prenosivo povezane, zaÅ¡tićene stranice}}:", @@ -674,7 +708,7 @@ "permissionserrorstext": "Nemate dopuÅ¡tenje za ovu radnju iz {{PLURAL:$1|sljedećeg razloga|sljedećih razloga}}:", "permissionserrorstext-withaction": "Nemate dopuÅ¡tenje da $2, iz {{PLURAL:$1|sljedećeg|sljedećih}} razloga:", "contentmodelediterror": "Ne možete urediti ovu izmjenu jer je njen model sadržaja <code>$1</code>, a trenutni model sadržaja stranice je <code>$2</code>.", - "recreate-moveddeleted-warn": "'''Upozorenje: Postavljate stranicu koja je prethodno brisana.'''\n\nRazmotrite da li je nastavljanje uređivanja ove stranice u skladu s pravilima.\nOvdje je naveden zapisnik brisanja i premjeÅ¡tanja s obrazloženjem:", + "recreate-moveddeleted-warn": "<strong>Upozorenje: Ponovo pravite stranicu koja je prethodno obrisana.</strong>\n\nRazmotrite je li prikladno nastaviti s uređivanjem ove stranice.\nOvdje je naveden zapisnik brisanja i premjeÅ¡tanja:", "moveddeleted-notice": "Ova stranica je obrisana.\nZapisnik brisanja i premjeÅ¡tanja stranice je prikazan ispod kao referenca.", "moveddeleted-notice-recent": "Žao nam je, ova stranica je nedavno obrisana (u prethodna 24 sata).\nNiže su navedeni zapisnici brisanja i premjeÅ¡tanja.", "log-fulllog": "Prikaži cijeli zapisnik", @@ -691,6 +725,8 @@ "invalid-content-data": "Nevaljani podaci sadržaja", "content-not-allowed-here": "Sadržaj napisan u obliku \"$1\" nije dozvoljen na stranici [[$2]]", "editwarning-warning": "NapuÅ¡tanje ove stranice može dovesti do gubitka svih promjena koje ste načinili.\nAko ste prijavljeni, možete isključiti ovo upozorenje u Sekciji za \"{{int:prefs-editing}}\" vaÅ¡ih opcija.", + "editpage-invalidcontentmodel-title": "Model sadržaja nije podržan", + "editpage-invalidcontentmodel-text": "Model sadržaja \"$1\" nije podržan.", "editpage-notsupportedcontentformat-title": "Format sadržaja nije podržan", "editpage-notsupportedcontentformat-text": "Format sadržaja $1 nije podržan za model sadržaja $2.", "content-model-wikitext": "wikitekst", @@ -699,6 +735,7 @@ "content-model-css": "CSS", "content-json-empty-object": "Prazan objekat", "content-json-empty-array": "Prazan niz", + "deprecated-self-close-category": "Stranice s neispravnim samozatvorenim HTML oznakama", "duplicate-args-warning": "<strong>Upozorenje:</strong> [[:$1]] poziva na [[:$2]] sa viÅ¡e od jedne vrijednosti za parametar \"$3\". Koristit će se samo posljednja navedena vrijednost.", "duplicate-args-category": "Stranice sa istim argumentima kod poziva Å¡ablona", "duplicate-args-category-desc": "Stranica sadrži pozive Å¡ablona koji koriste argumente dvojnike, kao Å¡to su <code><nowiki>{{foo|bar=1|bar=2}}</nowiki></code> ili <code><nowiki>{{foo|bar|1=baz}}</nowiki></code>.", @@ -738,11 +775,11 @@ "nextrevision": "Novija izmjena →", "currentrevisionlink": "Trenutna verzija", "cur": "tren", - "next": "slijed", + "next": "sljed", "last": "preth", "page_first": "prva", "page_last": "posljednja", - "histlegend": "Odabir razlika: označite radio dugme verzija koje uspoređujete i pritistnite enter ili dugme na dnu. <br />\nObjaÅ¡njenje: '''(tren)''' = razlika sa trenutnom verzijom,\n'''(preth)''' = razlika sa prethodnom verzijom, '''m''' = mala izmjena.", + "histlegend": "Odabir razlika: označite radio dugme verzija koje uspoređujete i pritistnite enter ili dugme na dnu. <br />\nObjaÅ¡njenje: <strong>({{int:cur}})</strong> = razlika sa trenutnom verzijom, <strong>({{int:last}})</strong> = razlika sa prethodnom verzijom, <strong>{{int:minoreditletter}}</strong> = mala izmjena.", "history-fieldset-title": "Pretraga historije", "history-show-deleted": "Samo obrisane", "histfirst": "najstarije", @@ -750,49 +787,49 @@ "historysize": "({{PLURAL:$1|1 bajt|$1 bajta|$1 bajtova}})", "historyempty": "(prazno)", "history-feed-title": "Historija izmjena", - "history-feed-description": "Historija promjena ove stranice na wikiju", + "history-feed-description": "Historija izmjena ove stranice na wikiju", "history-feed-item-nocomment": "$1 u $2", - "history-feed-empty": "Tražena stranica ne postoji.\nMoguće da je izbrisana sa wikija, ili preimenovana.\nPokuÅ¡ajte [[Special:Search|pretražiti wiki]] za slične stranice.", + "history-feed-empty": "Tražena stranica ne postoji.\nMoguće da je obrisana s wikija ili je preimenovana.\nPokuÅ¡ajte [[Special:Search|pretražiti wiki]] za slične stranice.", "history-edit-tags": "Uredi oznake izabranih verzija", "rev-deleted-comment": "(sažetak izmjene uklonjen)", "rev-deleted-user": "(korisničko ime uklonjeno)", - "rev-deleted-event": "(stavka zapisa obrisana)", + "rev-deleted-event": "(detalji unosa uklonjeni)", "rev-deleted-user-contribs": "[korisničko ime ili IP adresa uklonjeni - izmjena sakrivena u spisku doprinosa]", - "rev-deleted-text-permission": "Revizija ove stranice je '''obrisana'''.\nDetalje možete vidjeti u [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} zapisniku brisanja].", + "rev-deleted-text-permission": "Izmjena ove stranice je <strong>obrisana</strong>.\nDetalje možete pronaći u [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} zapisniku brisanja].", "rev-suppressed-text-permission": "Revizija ove stranice je <strong>prekrivena</strong>.\nDetalji se mogu naći u [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} zapisniku prekrivanja].", - "rev-deleted-text-unhide": "Izmjena ove stranice je <strong>obrisana</strong>.\nDetalje možete vidjeti u [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} zapisniku brisanja].\nIpak možete [$1 vidjeti ovu izmjenu] ako želite nastaviti.", - "rev-suppressed-text-unhide": "Ova revizija stranice je '''uklonjena'''.\nMožete pogledati detalje u [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} zapisu uklanjanja].\nVi i dalje možete [$1 vidjeti ovu reviziju] ako želite.", + "rev-deleted-text-unhide": "Izmjena ove stranice je <strong>obrisana</strong>.\nDetalje možete pronaći u [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} zapisniku brisanja].\nIpak možete [$1 vidjeti ovu izmjenu] ako želite nastaviti.", + "rev-suppressed-text-unhide": "Izmjena ove stranice je <strong>sakrivena</strong>.\nDetalje možete pronaći u [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} zapisniku sakrivanja].\nIpak možete [$1 vidjeti ovu izmjenu] ako želite nastaviti.", "rev-deleted-text-view": "Revizija ove stranice je '''obrisana'''.\nVi je možete vidjeti; detalji o tome mogu se vidjeti u [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} zapisniku brisanja].", - "rev-suppressed-text-view": "Ova revizija stranice je '''uklonjena'''.\nVi je možete vidjeti; možete pogledati detalje u [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} zapisu uklanjanja].", + "rev-suppressed-text-view": "Izmjena ove stranice je <strong>sakrivena</strong>.\nMožete je pogledati; detalje možete pronaći u [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} zapisniku sakrivanja].", "rev-deleted-no-diff": "Ne možete vidjeti ovu razliku jer je jedna od izmjena '''obrisana'''.\nDetalji se nalaze u [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} zapisniku brisanja].", "rev-suppressed-no-diff": "Ne možete vidjeti ove razlike jer je jedna od revizija '''obrisana'''.", - "rev-deleted-unhide-diff": "Jedna od revizija u ovom pregledu razlika je '''obrisana'''.\nMožete pregledati detalje u [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} zapisniku brisanja].\nVi joÅ¡ uvijek možete [$1 vidjeti ove razlike] ako želite nastaviti.", - "rev-suppressed-unhide-diff": "Jedna od revizija ove razlike je '''uklonjena'''.\nMožete pogledati detalje u [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} zapisniku uklanjanja].\nVi i dalje možete [$1 vidjeti ove razlike] ako želite nastaviti.", - "rev-deleted-diff-view": "Jedna od revizija u ovoj razlici je '''obrisana'''.\nVi možete vidjeti ovu razliku; detalji o tome mogu se vidjeti u [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} zapisniku brisanja].", - "rev-suppressed-diff-view": "Jedna od revizija u ovoj razlici je '''sakrivena'''.\nVi možete vidjeti ovu razliku; detalji se mogu vidjeti u [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} zapisniku sakrivanja].", + "rev-deleted-unhide-diff": "Jedna od izmjena u ovom pregledu razlika je <strong>obrisana</strong>.\nDetalje možete pronaći u [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} zapisniku brisanja].\nIpak možete [$1 vidjeti ovaj pregled razlika] ako želite nastaviti.", + "rev-suppressed-unhide-diff": "Jedna od izmjena u ovom pregledu razlika je <strong>sakrivena</strong>.\nDetalje možete pronaći u [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} zapisniku sakrivanja].\nIpak možete [$1 vidjeti ovaj pregled razlika] ako želite nastaviti.", + "rev-deleted-diff-view": "Jedna od izmjena u ovom pregledu razlika je <strong>obrisana</strong>.\nMožete pogledati razliku izmjena; detalje možete pronaći u [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} zapisniku brisanja].", + "rev-suppressed-diff-view": "Jedna od izmjena u ovom pregledu razlika je <strong>sakrivena</strong>.\nMožete pogledati razliku izmjena; detalje možete pronaći u [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} zapisniku sakrivanja].", "rev-delundel": "pokaži/sakrij", "rev-showdeleted": "prikaži", - "revisiondelete": "ObriÅ¡i/vrati revizije", + "revisiondelete": "ObriÅ¡i/vrati izmjene", "revdelete-nooldid-title": "Nije unesena tačna revizija", "revdelete-nooldid-text": "Niste odredili odrediÅ¡nu verziju da se izvrÅ¡i ova funkcija, ili ta verzija ne postoji, ili pokuÅ¡avate sakriti trenutnu verziju.", "revdelete-no-file": "Navedena datoteka ne postoji.", "revdelete-show-file-confirm": "Da li ste sigurni da želite pogledati obrisanu reviziju datoteke \"<nowiki>$1</nowiki>\" od $2 u $3?", "revdelete-show-file-submit": "Da", - "revdelete-selected-text": "{{PLURAL:$1|Odabrana revizija|Odabrane revizije}} od [[:$2]]:", + "revdelete-selected-text": "{{PLURAL:$1|Izabrana izmjena|Izabrane izmjene}} stranice [[:$2]]:", "revdelete-selected-file": "{{PLURAL:$1|Odabrana vezija datoteke|Odabrane verzije datoteke}} [[:$2]]:", - "logdelete-selected": "{{PLURAL:$1|Označena stavka zapisa|Označene stavke zapisa}}:", - "revdelete-text-text": "Obrisane revizije i dalje su prikazane u historiji stranice, ali dijelovi njihovog sadržaja neće biti dostupni javnosti.", + "logdelete-selected": "{{PLURAL:$1|Izabrana stavka zapisnika|Izabrane stavke zapisnika}}:", + "revdelete-text-text": "Obrisane izmjene i dalje će biti vidljive u historiji stranice, ali dijelovi njihovog sadržaja neće biti dostupni javnosti.", "revdelete-text-file": "Obrisane verzije datoteke i dalje su prikazane u historiji datoteke, ali dijelovi njihovog sadržaja nisu dostupni javnosti.", "logdelete-text": "Obrisani događaji zapisnika i dalje se pojavljuju u zapisniku, ali dijelovi njihovih sadržaja nisu dostupni javnosti.", - "revdelete-text-others": "Drugi administratori će i dalje moći pristupiti sakrivenom sadržaju i vratiti ga, bez obzira na postavljena dodatna ograničenja.", - "revdelete-confirm": "Molimo potvrdite da namjeravate ovo učiniti, da razumijete posljedice i da to činite u skladu s [[{{MediaWiki:Policy-url}}|pravilima]].", + "revdelete-text-others": "Ostali administratori i dalje će moći pristupiti sakrivenom sadržaju i vratiti ga, osim ako se postave dodatna ograničenja.", + "revdelete-confirm": "Potvrdite da namjeravate ovo uraditi, da razumijete posljedice i da to činite u skladu s [[{{MediaWiki:Policy-url}}|pravilima]].", "revdelete-suppress-text": "Ograničenja bi trebala biti koriÅ¡tena <strong>samo</strong> u sijedećim slučajevima:\n* Potencijalni klevetnički podaci\n* Osjetljive korisničke informacije\n*: <em>kućne adrese, brojevi telefona, brojevi bankovnih kartica itd.</em>", "revdelete-legend": "Postavi ograničenja vidljivosti", - "revdelete-hide-text": "Tekst revizije", + "revdelete-hide-text": "Tekst izmjene", "revdelete-hide-image": "Sakrij sadržaj datoteke", "revdelete-hide-name": "Sakrij cilj i parametre", - "revdelete-hide-comment": "Uredi sažetak", - "revdelete-hide-user": "Korisničko ime urednika/IP", + "revdelete-hide-comment": "Sažetak izmjene", + "revdelete-hide-user": "Korisničko ime urednika/IP-adresa", "revdelete-hide-restricted": "Ograniči podatke za administratore kao i za druge korisnike", "revdelete-radio-same": "(ne mijenjaj)", "revdelete-radio-set": "Sakriveno", @@ -800,27 +837,27 @@ "revdelete-suppress": "Sakrij podatke od administratora kao i od drugih", "revdelete-unsuppress": "Ukloni ograničenja na vraćenim revizijama", "revdelete-log": "Razlog:", - "revdelete-submit": "Primijeni na odabrane {{PLURAL:$1|reviziju|revizije}}", + "revdelete-submit": "Primijeni na {{PLURAL:$1|izabranu izmjenu|izabrane izmjene}}", "revdelete-success": "'''Vidljivost izmjene je ažurirana.'''", - "revdelete-failure": "'''Vidljivost revizije nije mogla biti ažurirana:'''\n$1", + "revdelete-failure": "Ne mogu ažurirati vidljivost izmjene:\n$1", "logdelete-success": "Postavljena je vidljivost unosa u zapisniku.", "logdelete-failure": "'''Zapisnik vidljivosti nije mogao biti postavljen:'''\n$1", - "revdel-restore": "Promijeni dostupnost", + "revdel-restore": "promijeni vidljivost", "pagehist": "Historija stranice", - "deletedhist": "Izbrisana historija", + "deletedhist": "Obrisana historija", "revdelete-hide-current": "GreÅ¡ka pri sakrivanju stavke od $2, $1: ovo je trenutna verzija.\nNe može biti sakrivena.", "revdelete-show-no-access": "GreÅ¡ka pri prikazivanju stavke od $2, $1: ova stavka je označena kao \"zaÅ¡tićena\".\nNemate pristup do ove stavke.", "revdelete-modify-no-access": "GreÅ¡ka pri izmjeni stavke od $2, $1: ova stavka je označena kao \"zaÅ¡tićena\".\nNemate pristup ovoj stavci.", "revdelete-modify-missing": "GreÅ¡ka pri mijenjanju stavke ID $1: nedostaje u bazi podataka!", "revdelete-no-change": "'''Upozorenje:''' stavka od $2, $1 već posjeduje zatražene postavke vidljivosti.", - "revdelete-concurrent-change": "GreÅ¡ka pri mijenjanju stavke od $2, $1: njen status je izmijenjen od strane nekog drugog dok ste je pokuÅ¡avali mijenjati.\nMolimo provjerite zapise.", + "revdelete-concurrent-change": "GreÅ¡ka pri mijenjanju stavke od $2, $1: Izgleda da je neko drugi promijenio njen status dok ste je pokuÅ¡avali mijenjati.\nProvjerite zapisnike.", "revdelete-only-restricted": "GreÅ¡ka pri sakrivanju stavke od dana $2, $1: ne možete ukloniti stavke od pregledavanja administratora bez da odaberete neku od drugih opcija za uklanjanje.", "revdelete-reason-dropdown": "*Uobičajeni razlozi brisanja\n** KrÅ¡enje autorskih prava\n** Neprikladan komentar ili lični podac\n** Neprikladno korisničko ime\n** Uvredljivi podaci", "revdelete-otherreason": "Drugi/dodatni razlog:", "revdelete-reasonotherlist": "Ostali razlozi", "revdelete-edit-reasonlist": "Uredi razloge brisanja", - "revdelete-offender": "Autor revizije:", - "suppressionlog": "Zapisi sakrivanja", + "revdelete-offender": "Autor izmjene:", + "suppressionlog": "Zapisnik sakrivanja", "suppressionlogtext": "Ispod je spisak brisanja i blokiranja koja su povezana sa sadržajem koji je sakriven od administratora. \nVidi [[Special:BlockList|spisak blokiranja]] za pregled trenutno važećih blokada.", "mergehistory": "Spoji historije stranice", "mergehistory-header": "Ova stranica Vam omogućuje spajanje revizija historije neke izvorne stranice u novu stranicu. Zapamtite da će ova promjena ostaviti nepromjenjen sadržaj historije stranice.", @@ -830,10 +867,16 @@ "mergehistory-list": "Historija izmjena koja se može spojiti", "mergehistory-merge": "Slijedeće revizije stranice [[:$1]] mogu biti spojene u [[:$2]].\nKoristite dugmiće u stupcu da bi ste spojili revizije koje su napravljene prije navedenog vremena.\nKoriÅ¡tenje navigacionih linkova će resetovati ovaj stupac.", "mergehistory-go": "Prikaži izmjene koje se mogu spojiti", - "mergehistory-submit": "Spoji revizije", - "mergehistory-empty": "Nema revizija za spajanje.", + "mergehistory-submit": "Spoji izmjene", + "mergehistory-empty": "Nema izmjena za spajanje.", "mergehistory-done": "$3 {{PLURAL:$3|izmjena|izmjene|izmjena}} stranice $1 uspjeÅ¡no je spojeno u [[:$2]].", "mergehistory-fail": "Ne može se izvrÅ¡iti spajanje historije, molimo provjerite opet stranicu i parametre vremena.", + "mergehistory-fail-bad-timestamp": "Vremenska oznaka nije ispravna.", + "mergehistory-fail-invalid-source": "Izvorna stranica nije ispravna.", + "mergehistory-fail-invalid-dest": "OdrediÅ¡na stranica nije ispravna.", + "mergehistory-fail-no-change": "Spajanje historije nije spojilo nijednu izmjenu. Provjerite parametre stranice i vremena.", + "mergehistory-fail-permission": "Nemate dopuÅ¡tenje da spojite historiju.", + "mergehistory-fail-self-merge": "Izvorna i odrediÅ¡na stranica su iste.", "mergehistory-fail-toobig": "Ne može se izvrÅ¡iti spajanje historije jer će se viÅ¡e premjestiti viÅ¡e od ograničenja od $1 {{PLURAL:$1|revizije|revizija}}.", "mergehistory-no-source": "Izvorna stranica $1 ne postoji.", "mergehistory-no-destination": "OdrediÅ¡na stranica $1 ne postoji.", @@ -855,7 +898,7 @@ "showhideselectedversions": "Prikaži/sakrij izabrane izmjene", "editundo": "poniÅ¡ti", "diff-empty": "(Nema razlike)", - "diff-multi-sameuser": "({{PLURAL:$1|Nije prikazana jedna međurevizija|Nisu prikazane $1 međurevizije}} istog korisnika)", + "diff-multi-sameuser": "({{PLURAL:$1|Nije prikazana jedna međuizmjena|Nisu prikazane $1 međuizmjene|Nije prikazano $1 međuizmjena}} istog korisnika)", "diff-multi-otherusers": "(Nije prikazana {{PLURAL:$1|jedna međuverzija|$1 međuverzija}} {{PLURAL:$2|drugog korisnika|$2 korisnika}})", "diff-multi-manyusers": "({{PLURAL:$1|Jedna međurevizija|$1 međurevizije|$1 međurevizija}} od viÅ¡e od $2 {{PLURAL:$2|korisnika|korisnika}} {{PLURAL:$1|nije prikazana|nisu prikazane}})", "difference-missing-revision": "{{PLURAL:$2|Jedna izmjena|$2 izmjene}} od ove razlike ($1) ne {{PLURAL:$2|postoji|postoje}}.\n\nOvo se obično deÅ¡ava kada pratite zastarjelu vezu na stranice koja je obrisana.\nViÅ¡e informacija možete pronaći u [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} protokol brisanja].", @@ -893,6 +936,7 @@ "search-interwiki-caption": "Srodni projekti", "search-interwiki-default": "$1 rezultati:", "search-interwiki-more": "(viÅ¡e)", + "search-interwiki-more-results": "viÅ¡e rezultata", "search-relatedarticle": "Povezano", "searchrelated": "povezano", "searchall": "sve", @@ -910,6 +954,7 @@ "search-external": "Vanjska pretraga", "searchdisabled": "Pretraga na stranici {{SITENAME}} je onemogućena.\nU međuvremenu možete tražiti preko Googlea.\nUpamtite da ispisi stranice {{SITENAME}} mogu biti zastarjeli.", "search-error": "Desila se greÅ¡ka prilikom pretraživanja: $1", + "search-warning": "DoÅ¡lo je do upozorenja prilikom pretraživanja: $1", "preferences": "Postavke", "mypreferences": "Postavke", "prefs-edits": "Broj izmjena:", @@ -932,7 +977,7 @@ "prefs-watchlist-edits": "Najveći broj izmjena za prikaz u proÅ¡irenom spisku praćenja:", "prefs-watchlist-edits-max": "Najveći broj: 1000", "prefs-watchlist-token": "Žeton praćenih članaka:", - "prefs-misc": "Ostala podeÅ¡avanja", + "prefs-misc": "Razno", "prefs-resetpass": "Promijeni lozinku", "prefs-changeemail": "Promijeni ili ukloni adresu e-poÅ¡te", "prefs-setemail": "Postavite e-mail adresu", @@ -941,8 +986,6 @@ "saveprefs": "Sačuvaj", "restoreprefs": "Vrati sve postavke na podrazumijevane (u svim odjeljcima)", "prefs-editing": "Uređivanje", - "rows": "Redova:", - "columns": "Kolona:", "searchresultshead": "Pretraga", "stub-threshold": "Prag za formatiranje linkova ka stranicama u začetku ($1):", "stub-threshold-sample-link": "primjer", @@ -953,7 +996,7 @@ "prefs-help-recentchangescount": "Ovo uključuje nedavne izmjene, historije stranice i zapisnike.", "prefs-help-watchlist-token2": "Ovo je tajni ključ sažetka vaÅ¡eg spiska izmjena. Ko god da ga zna, moći će ga čitati. Ne dijelite ga ni s kim. Ako je potrebno, [[Special:ResetTokens|možete ga ponovo postaviti]].", "savedprefs": "VaÅ¡e postavke su sačuvane.", - "savedrights": "Korisnička prava {{GENDER:$1|korisnika|korisnice}} $1 su sačuvana.", + "savedrights": "Korisničke grupe {{GENDER:$1|korisnika|korisnice}} $1 su sačuvana.", "timezonelegend": "Vremenska zona:", "localtime": "Lokalno vrijeme:", "timezoneuseserverdefault": "Koristi postavke wikija ($1)", @@ -983,6 +1026,7 @@ "youremail": "Adresa e-poÅ¡te:", "username": "{{GENDER:$1|Korisničko}} ime:", "prefs-memberingroups": "{{GENDER:$2|Korisnik|Korisnica}} je član {{PLURAL:$1|grupe|grupâ}}:", + "group-membership-link-with-expiry": "$1 (do $2)", "prefs-registration": "Vrijeme registracije:", "yourrealname": "VaÅ¡e pravo ime:", "yourlanguage": "Jezik:", @@ -993,11 +1037,11 @@ "badsig": "LoÅ¡ sirovi potpis.\nProvjerite HTML tagove.", "badsiglength": "VaÅ¡ potpis je predug.\nMora biti manji od $1 {{PLURAL:$1|znaka|znaka|znakova}}.", "yourgender": "Kako želite da se predstavite?", - "gender-unknown": "Kad vas spominje, softver će pokuÅ¡ati koristiti srednji rod kad god je to moguće", + "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.", - "email": "E-mail", + "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.", "prefs-help-email-others": "Također možete dopustiti drugim korisnicima da vas kontaktiraju preko linka na lijevoj strani vaÅ¡e stranice ili stranice za razgovor.\nVaÅ¡a adresa e-poÅ¡te neće biti prikazana drugim korisnicima koji vas kontaktiraju.", @@ -1022,180 +1066,212 @@ "prefswarning-warning": "Napravili ste promjene u vaÅ¡im postavkama koje joÅ¡ uvijek nisu sačuvane. Ako napustite ovu stranicu bez da pritisnete na \"$1\", postavke neće biti ažurirane.", "prefs-tabs-navigation-hint": "Savjet: Možete koristiti tipke sa lijevom i desnom strelicom za kretanje kroz kartice.", "userrights": "Postavke korisničkih prava", - "userrights-lookup-user": "Menadžment korisničkih grupa", + "userrights-lookup-user": "Izaberi korisnika", "userrights-user-editname": "UpiÅ¡ite korisničko ime:", - "editusergroup": "Uredi {{GENDER:$1|korisničke}} grupe", - "editinguser": "Mijenjate korisnička prava korisnika <strong>[[User:$1|$1]]</strong> $2", - "userrights-editusergroup": "Uredi korisničke grupe", + "editusergroup": "Učitaj korisničke grupe", + "editinguser": "Mijenjate korisnička prava {{GENDER:$1|korisnika|korisnice}} <strong>[[User:$1|$1]]</strong> $2", + "viewinguserrights": "Pregledavate korisnička prava {{GENDER:$1|korisnika|korisnice}} <strong>[[User:$1|$1]]</strong> $2", + "userrights-editusergroup": "Uredi {{GENDER:$1|korisničke}} grupe", + "userrights-viewusergroup": "Vidi {{GENDER:$1|korisničke}} grupe", "saveusergroups": "Sačuvaj {{GENDER:$1|korisničke}} grupe", "userrights-groupsmember": "Član:", "userrights-groupsmember-auto": "Uključeni član od:", - "userrights-groups-help": "Možete promijeniti grupe kojima ovaj korisnik pripada:\n* Označeni kvadratić znači da je korisnik u toj grupi.\n* Neoznačen kvadratić znači da korisnik nije u toj grupi.\n* Oznaka * (zvjezdica) označava da Vi ne možete izbrisati ovu grupu ako je dodate i obrnutno.", + "userrights-groups-help": "Možete promijeniti grupe kojima ovaj korisnik pripada:\n* Označeni kvadratić znači da je korisnik u toj grupi.\n* Neoznačeni kvadratić znači da korisnik nije u toj grupi.\n* Zvjezdica (*) označava da ne možete ukloniti grupu nakon Å¡to je dodate i obrnuto.\n* Taraba (#) označava da jedino možete odložiti vrijeme isteka ove grupe; ne možete ga ubrzati.", "userrights-reason": "Razlog:", "userrights-no-interwiki": "Nemate dopuÅ¡tenja da uređujete korisnička prava na drugim wikijima.", "userrights-nodatabase": "Baza podataka $1 ne postoji ili nije lokalna baza.", "userrights-changeable-col": "Grupe koje možete mijenjati", "userrights-unchangeable-col": "Grupe koje ne možete mijenjati", + "userrights-expiry-current": "Ističe $1", + "userrights-expiry-none": "Ne ističe", + "userrights-expiry": "Ističe:", + "userrights-expiry-existing": "Postojeće vrijeme isticanja: $3, $2", + "userrights-expiry-othertime": "Drugo vrijeme:", + "userrights-expiry-options": "1 dan:1 day,1 sedmica:1 week,1 mjesec:1 month,3 mjeseca:3 months,6 mjeseci:6 months,1 godina:1 year", + "userrights-invalid-expiry": "Vrijeme isticanja grupe \"$1\" nije ispravno.", + "userrights-expiry-in-past": "Vrijeme isticanja grupe \"$1\" je u proÅ¡losti.", + "userrights-cannot-shorten-expiry": "Ne možete ubrzati vrijeme isteka grupe \"$1\". Jedino je mogu ubrzati korisnici koji mogu dodavati i uklanjati ovu grupu.", "userrights-conflict": "Sukob u izmjeni korisničkih prava! Molimo da razmotrite i potvrdite VaÅ¡e promjene.", "group": "Grupa:", "group-user": "Korisnici", - "group-autoconfirmed": "Potvrđeni korisnici", + "group-autoconfirmed": "Automatski potvrđeni korisnici", "group-bot": "Botovi", "group-sysop": "Administratori", "group-bureaucrat": "Birokrati", "group-suppress": "Skrivači", "group-all": "(sve)", "group-user-member": "{{GENDER:$1|korisnik|korisnica}}", - "group-autoconfirmed-member": "Potvrđeni korisnik", - "group-bot-member": "bot", + "group-autoconfirmed-member": "{{GENDER:$1|automatski potvrđen korisnik|automatski potvrđena korisnica}}", + "group-bot-member": "{{GENDER:$1|bot}}", "group-sysop-member": "{{GENDER:$1|administrator|administratorica}}", "group-bureaucrat-member": "{{GENDER:$1|birokrat|birokratica}}", "group-suppress-member": "{{GENDER:$1|skrivač|skrivačica}}", "grouppage-user": "{{ns:project}}:Korisnici", - "grouppage-autoconfirmed": "{{ns:project}}:Potvrđeni korisnici", + "grouppage-autoconfirmed": "{{ns:project}}:Automatski potvrđeni korisnici", "grouppage-bot": "{{ns:project}}:Botovi", "grouppage-sysop": "{{ns:project}}:Administratori", "grouppage-bureaucrat": "{{ns:project}}:Birokrati", "grouppage-suppress": "{{ns:project}}:Skrivač", "right-read": "Čitanje stranica", "right-edit": "Uređivanje stranica", - "right-createpage": "Pravljenje stranica (neuključujući stranice za razgovor)", + "right-createpage": "Pravljenje stranica (izuzev stranica za razgovor)", "right-createtalk": "Pravljenje stranica za razgovor", - "right-createaccount": "Pravljenje korisničkog računa", - "right-minoredit": "Označavanje izmjena kao malih", + "right-createaccount": "Pravljenje novih korisničkih računa", + "right-minoredit": "Označavanje izmjena manjim", "right-move": "PremjeÅ¡tanje stranica", - "right-move-subpages": "Preusmjeravanje stranica sa svim podstranicama", - "right-move-rootuserpages": "PremjeÅ¡tanje stranica osnovnih korisnika", - "right-move-categorypages": "Pomakni stranice kategorije", + "right-move-subpages": "PremjeÅ¡tanje stranica s njihovim podstranicama", + "right-move-rootuserpages": "PremjeÅ¡tanje osnovnih korisničkih stranica", + "right-move-categorypages": "PremjeÅ¡tanje kategorija", "right-movefile": "PremjeÅ¡tanje datoteka", - "right-suppressredirect": "Ne pravi preusmjeravanje sa starog imena pri preusmjeravanju stranica", + "right-suppressredirect": "PremjeÅ¡tanje stranica bez ostavljanja preusmjerenja", "right-upload": "Postavljanje datoteka", - "right-reupload": "Postavljanje nove verzije datoteke", - "right-reupload-own": "Postavljanje nove verzije datoteke koju je postavio korisnik", - "right-reupload-shared": "Postavljanje novih lokalnih verzija datoteka identičnih onima u zajedničkoj ostavi", + "right-reupload": "Postavljanje novih verzija datoteka", + "right-reupload-own": "Postavljanje novih verzija vlastitih datoteka", + "right-reupload-shared": "Lokalno premošćivanje datoteka sa zajedničke ostave", "right-upload_by_url": "Postavljanje datoteke sa URL adrese", - "right-purge": "Osvježavanje keÅ¡a za stranice bez konfirmacije", - "right-autoconfirmed": "Bez ograničavanja stavki za IP adrese", + "right-purge": "Osvježavanje keÅ¡a stranice bez potvrde", + "right-autoconfirmed": "Izbjegavanje ograničenja stavki za IP adrese", "right-bot": "Postavljen kao automatski proces", - "right-nominornewtalk": "Male izmjene na stranici za razgovor ne uzrokuju prikazivanje oznake ''nova poruka'' na stranici za razgovor", + "right-nominornewtalk": "Izbjegavanje prikazivanja obavjeÅ¡tenja o novim porukama kad je označeno da je izmjena manja", "right-apihighlimits": "KoriÅ¡tenje viÅ¡ih ograničenja u API upitima", - "right-writeapi": "KoriÅ¡tenje opcije ''write API''", + "right-writeapi": "KoriÅ¡tenje API-ja za pisanje", "right-delete": "Brisanje stranica", "right-bigdelete": "Brisanje stranica sa velikom historijom", - "right-deletelogentry": "Brisanje i vraćanje određenih zapisa u evidenciji", - "right-deleterevision": "Brisanje i vraćanje određenih revizija stranice", - "right-deletedhistory": "Pregled stavki obrisane historije, bez povezanog teksta", - "right-deletedtext": "Pregled obrisanog teksta i izmjena između obrisanih revizija", + "right-deletelogentry": "Brisanje i vraćanje određenih stavki u zapisniku", + "right-deleterevision": "Brisanje i vraćanje određenih izmjena stranice", + "right-deletedhistory": "Pregledanje stavki obrisane historije, bez povezanog teksta", + "right-deletedtext": "Pregledanje obrisanog teksta i izmjena između obrisanih izmjena", "right-browsearchive": "Pretraživanje obrisanih stranica", "right-undelete": "Vraćanje obrisanih stranica", - "right-suppressrevision": "Pregled, sakrivanje i povratak određenih revizija stranice od svih korisnika", + "right-suppressrevision": "Pregledanje, sakrivanje i vraćanje određenih verzija stranica od svih korisnika", "right-viewsuppressed": "Pregledaj izmjene skrivene od svih korisnika", - "right-suppressionlog": "Gledanje privatnih zapisa", - "right-block": "Blokiranje uređivanja drugih korisnika", - "right-blockemail": "Blokiranje korisnika da Å¡alje e-mail", - "right-hideuser": "Blokiranje korisničkog imena, i njegovo sakrivanje od javnosti", - "right-ipblock-exempt": "Zaobilaženje IP blokada, autoblokada i blokada IP grupe", - "right-unblockself": "Deblokiraj samog sebe", - "right-protect": "Promjena nivoa zaÅ¡tite i uređivanje kaskadno zaÅ¡tićenih stranica", - "right-editprotected": "Uređivanje stranice zaÅ¡tićenih kao \"{{int:protect-level-sysop}}\"", - "right-editsemiprotected": "Uređivanje stranica zaÅ¡tićenih kao \"{{int:protect-level-autoconfirmed}}\"", + "right-suppressionlog": "Pregledanje privatnih zapisnika", + "right-block": "Blokiranje mogućnosti uređivanja drugim korisnicima", + "right-blockemail": "Blokiranje korisnikove mogućnosti da Å¡alje e-poÅ¡tu", + "right-hideuser": "Blokiranje korisničkog imena i njegovo sakrivanje od javnosti", + "right-ipblock-exempt": "Zaobilaženje IP-blokada, autoblokada i blokada opsega", + "right-unblockself": "Deblokiranje samog sebe", + "right-protect": "Mijenjanje nivoâ zaÅ¡tite i uređivanje stranica pod prenosivom zaÅ¡titom", + "right-editprotected": "Uređivanje stranica pod zaÅ¡titom \"{{int:protect-level-sysop}}\"", + "right-editsemiprotected": "Uređivanje stranica pod zaÅ¡titom \"{{int:protect-level-autoconfirmed}}\"", "right-editcontentmodel": "Uređivanje modela sadržaja stranice", "right-editinterface": "Uređivanje korisničkog interfejsa", "right-editusercssjs": "Uređivanje CSS i JS datoteka drugih korisnika", - "right-editusercss": "Uređivanje CSS datoteka drugih korisnika", - "right-edituserjs": "Uređivanje JS datoteka drugih korisnika", - "right-editmyusercss": "Uredite svoje vlastite korisničke CSS datoteke", - "right-editmyuserjs": "Uredite vlastite korisničke JavaScript datoteke", - "right-viewmywatchlist": "Pogledaj svoj spisak praćenih stranica", - "right-editmywatchlist": "Uredite vlastiti spisak praćenja. Važno je spomenuti da će neke radnje dodati stranice na spisak, čak i bez ovog prava.", - "right-viewmyprivateinfo": "Pogledajte VaÅ¡e privatne podatke (npr, adresa e-poÅ¡te, pravo ime)", - "right-editmyprivateinfo": "Uredite svoje privatne podatke (npr. adresa e-poÅ¡te, pravo ime)", - "right-editmyoptions": "Uredite svoje postavke", + "right-editusercss": "Uređivanje tuđih CSS datoteka", + "right-edituserjs": "Uređivanje tuđih JavaScript datoteka", + "right-editmyusercss": "Uređivanje vlastitih CSS datoteka", + "right-editmyuserjs": "Uređivanje vlastitih JavaScript datoteka", + "right-viewmywatchlist": "Pregledanje vlastitog spiska praćenja", + "right-editmywatchlist": "Uređivanje vlastitog spiska praćenja. Važno je spomenuti da će neke radnje dodati stranice na spisak, čak i bez ovog prava.", + "right-viewmyprivateinfo": "Pregledanje vlastitih ličnih podataka (npr, adresa e-poÅ¡te, pravo ime)", + "right-editmyprivateinfo": "Uređivanje vlastitih ličnih podataka (npr. adresa e-poÅ¡te, pravo ime)", + "right-editmyoptions": "Uređivanje vlastitih postavki", "right-rollback": "Brzo vraćanje izmjena posljednjeg korisnika koji je uređivao određenu stranicu", "right-markbotedits": "Označavanje vraćenih izmjena kao izmjene bota", "right-noratelimit": "Izbjegavanje ograničenja uzrokovanih brzinom", - "right-import": "Uvoz stranica iz drugih wikija", - "right-importupload": "Uvoz stranica putem postavljanja datoteke", - "right-patrol": "Označavanje izmjena drugih korisnika patroliranim", - "right-autopatrol": "Vlastite izmjene se automatski označavaju kao patrolirane", + "right-import": "Uvoženje stranica iz drugih wikija", + "right-importupload": "Uvoženje stranica putem postavljanja datoteke", + "right-patrol": "Označavanje tuđih izmjena patroliranim", + "right-autopatrol": "Automatsko označavanje vlastitih izmjena patroliranim", "right-patrolmarks": "Pregled oznaka patroliranja u spisku nedavnih izmjena", - "right-unwatchedpages": "Gledanje spiska nepraćenih stranica", + "right-unwatchedpages": "Pregledanje spiska nepraćenih stranica", "right-mergehistory": "Spajanje historije stranica", "right-userrights": "Uređivanje svih korisničkih prava", "right-userrights-interwiki": "Uređivanje korisničkih prava korisnika na drugim wikijima", "right-siteadmin": "Zaključavanje i otključavanje baze podataka", "right-override-export-depth": "Izvoz stranica uključujući povezane stranice do dubine od 5 linkova", - "right-sendemail": "Slanje e-maila drugim korisnicima", - "right-managechangetags": "Napravi i (de)aktiviraj [[Special:Tags|oznake]]", - "right-applychangetags": "Primijeni [[Special:Tags|oznake]] na nečije izmjene", - "right-changetags": "Dodavanje ili uklanjanje raznih [[Special:Tags|oznaka]] na pojedinačnim verzijama i unosima zapisnika", + "right-sendemail": "Slanje e-poÅ¡te drugim korisnicima", + "right-managechangetags": "Pravljenje i (de)aktiviranje [[Special:Tags|oznaka]]", + "right-applychangetags": "Primjenjivanje [[Special:Tags|oznaka]] na nečije izmjene", + "right-changetags": "Dodavanje ili uklanjanje raznih [[Special:Tags|oznaka]] na pojedinačnim verzijama i unosima u zapisnicima", + "right-deletechangetags": "Brisanje [[Special:Tags|oznaka]] iz baze podataka", "grant-group-page-interaction": "Upravljanje stranicama", + "grant-group-file-interaction": "Rad s medijskim datotekama", "grant-group-watchlist-interaction": "Upravljanje VaÅ¡im spiskom praćenja", + "grant-group-email": "Slanje e-poÅ¡te", "grant-group-high-volume": "IzvrÅ¡avanje velikog broja radnji", "grant-group-customization": "Prilagodbe i postavke", + "grant-group-administration": "IzvrÅ¡avanje administrativnih radnji", + "grant-group-private-information": "Pristupanje VaÅ¡im ličnim podacima", "grant-group-other": "Raznovrsno djelovanje", + "grant-blockusers": "Blokiranje i deblokiranje korisnika", + "grant-createaccount": "Stvaranje računa", "grant-createeditmovepage": "Pravljenje, uređivanje i premjeÅ¡tanje stranica", + "grant-delete": "Brisanje stranica, izmjena i unosa u zapisnicima", + "grant-editinterface": "Uređivanje imenskog prostora MediaWiki i korisničkih CSS/JavaScript stranica", "grant-editmycssjs": "Uređivanje VaÅ¡eg korisničkog CSS-a ili JavaScripta", "grant-editmyoptions": "Uređivanje VaÅ¡ih postavki", "grant-editmywatchlist": "Uređivanje VaÅ¡eg spiska praćenja", "grant-editpage": "Uređivanje postojećih stranica", "grant-editprotected": "Uređivanje zaÅ¡tićenih stranica", "grant-highvolume": "Veliki broj izmjena", + "grant-oversight": "Skrivanje korisnika i izmjena", "grant-patrol": "Patroliranje izmjena stranica", + "grant-privateinfo": "Pristupanje ličnim podacima", + "grant-protect": "Dodavanje i uklanjanje zaÅ¡tita sa stranica", + "grant-rollback": "Vraćanje izmjena", + "grant-sendemail": "Slanje e-poÅ¡te drugim korisnicima", "grant-uploadeditmovefile": "Postavljanje, zamjena i premjeÅ¡tanje datoteka", "grant-uploadfile": "Postavljanje novih datoteka", "grant-basic": "Osnovna prava", + "grant-viewdeleted": "Pregledanje obrisanih datoteka i stranica", "grant-viewmywatchlist": "Pregled VaÅ¡eg spiska praćenja", + "grant-viewrestrictedlogs": "Pregledanje ograničenih unosa u zapisniku", "newuserlogpage": "Zapisnik novih korisnika", "newuserlogpagetext": "Ovo je zapisnik o registraciji novih korisnika.", "rightslog": "Zapisnik korisničkih prava", "rightslogtext": "Ovo je zapisnik promjena korisničkih prava.", "action-read": "čitate ovu stranicu", - "action-edit": "uređujete ovu stranicu", + "action-edit": "uredite ovu stranicu", "action-createpage": "napravite ovu stranicu", - "action-createtalk": "pravite stranice za razgovor", + "action-createtalk": "napravite ovu stranicu za razgovor", "action-createaccount": "napravite ovaj korisnički račun", "action-history": "gledate historiju ove stranice", - "action-minoredit": "da označite ovu izmjenu kao malu", + "action-minoredit": "označite ovu izmjenu manjom", "action-move": "premjestite ovu stranicu", - "action-move-subpages": "premjestite ovu stranicu, i njene podstranice", - "action-move-rootuserpages": "premjestite stranice osnovnog korisnika", - "action-move-categorypages": "pomakni stranice kategorije", - "action-movefile": "premjesti ovu datoteku", - "action-upload": "postavljate ovu datoteku", - "action-reupload": "stavite novu verziju postojeće datoteke", - "action-reupload-shared": "postavite ovu datoteku iz zajedničke ostave", + "action-move-subpages": "premjestite ovu stranicu i njene podstranice", + "action-move-rootuserpages": "premjeÅ¡tate osnovne korisničke stranice", + "action-move-categorypages": "premjeÅ¡tate kategorije", + "action-movefile": "premjestite ovu datoteku", + "action-upload": "postavite ovu datoteku", + "action-reupload": "postavite novu verziju postojeće datoteke", + "action-reupload-shared": "premostite ovu datoteku sa zajedničke ostave", "action-upload_by_url": "postavite ovu datoteku putem URL adrese", - "action-writeapi": "koristite ''write API'' opciju", + "action-writeapi": "koristite API za pisanje", "action-delete": "obriÅ¡ete ovu stranicu", - "action-deleterevision": "obriÅ¡ete ovu reviziju", - "action-deletedhistory": "gledate obrisanu historiju ove stranice", + "action-deleterevision": "briÅ¡ete izmjene", + "action-deletelogentry": "briÅ¡ete stavke u zapisniku", + "action-deletedhistory": "pregledate obrisanu historiju ove stranice", + "action-deletedtext": "pregledate obrisani tekst izmjene", "action-browsearchive": "pretražujete obrisane stranice", - "action-undelete": "vratite ovu stranicu", - "action-suppressrevision": "pregledate i vratite ovu skrivenu reviziju", - "action-suppressionlog": "vidite ovaj privatni zapis", - "action-block": "blokirate uređivanje ovog korisnika", - "action-protect": "promijeniti nivo zaÅ¡tite za ovu stranicu", - "action-rollback": "brzo vraćanje izmjena posljednjeg korisnika koji je uređivao određenu stranicu", - "action-import": "uvozite stranice iz druge wiki", - "action-importupload": "uvoz stranica putem postavljanja datoteke", - "action-patrol": "označite izmjene drugih kao patrolirane", - "action-autopatrol": "da VaÅ¡e izmjene budu označene kao patrolirane", + "action-undelete": "vraćate stranice", + "action-suppressrevision": "pregledate i vraćate sakrivene izmjene", + "action-suppressionlog": "pregledate ovaj privatni zapisnik", + "action-block": "blokirate mogućnost uređivanja ovom korisniku", + "action-protect": "promijenite nivoe zaÅ¡tite ove stranice", + "action-rollback": "brzo vratite izmjenu posljednjeg korisnika koji je uređivao određenu stranicu", + "action-import": "uvozite stranice iz drugih wikija", + "action-importupload": "uvozite stranice putem postavljanja datoteke", + "action-patrol": "označite tuđe izmjene patroliranim", + "action-autopatrol": "označite vlastite izmjene patroliranim", "action-unwatchedpages": "pregledate spisak nepraćenih stranica", "action-mergehistory": "spajate historiju ove stranice", "action-userrights": "uređujete sva korisnička prava", "action-userrights-interwiki": "uređujete korisnička prava korisnika na drugim wikijima", "action-siteadmin": "zaključavate ili otključavate bazu podataka", - "action-sendemail": "poÅ¡alji e-mail poruke", - "action-editmywatchlist": "uredite svoj spisak praćenih stranica", - "action-viewmywatchlist": "pogledajte svoj spisak praćenih stranica", - "action-viewmyprivateinfo": "pogledajte svoje privatne informacije", - "action-editmyprivateinfo": "uredite svoje privatne podatke", - "action-editcontentmodel": "uredi model sadržaja stranice", + "action-sendemail": "Å¡aljete e-poÅ¡tu", + "action-editmyoptions": "uređujete vlastite postavke", + "action-editmywatchlist": "uredite vlastiti spisak praćenja", + "action-viewmywatchlist": "pregledate vlastiti spisak praćenja", + "action-viewmyprivateinfo": "pregledate vlastite lične podatke", + "action-editmyprivateinfo": "uređujete vlastite lične podatke", + "action-editcontentmodel": "uređujete model sadržaja stranice", "action-managechangetags": "pravite i (de)aktivirate oznake", - "action-applychangetags": "dodate oznake uz vaÅ¡e izmjene", + "action-applychangetags": "dodate oznake uz vlastite izmjene", "action-changetags": "dodate ili uklonite razne oznake na pojedinačnim verzijama i unosima u zapisnicima", - "nchanges": "$1 {{PLURAL:$1|promjena|promjene|promjena}}", + "action-deletechangetags": "briÅ¡ete oznake iz baze podataka", + "action-purge": "osvježite keÅ¡ ove stranice", + "nchanges": "$1 {{PLURAL:$1|izmjena|izmjene|izmjena}}", "enhancedrc-since-last-visit": "$1 {{PLURAL:$1|izmjena od VaÅ¡e posljedne posjete}}", "enhancedrc-history": "historija", "recentchanges": "Nedavne izmjene", @@ -1211,6 +1287,48 @@ "recentchanges-legend-heading": "<strong>Legenda:</strong>", "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} ([[Special:NewPages|spisak novih stranica]])", "recentchanges-submit": "Prikaži", + "rcfilters-activefilters": "Aktivni filteri", + "rcfilters-restore-default-filters": "Vrati predodređene filtere", + "rcfilters-clear-all-filters": "Ukloni sve filtere", + "rcfilters-invalid-filter": "Neispravan filter", + "rcfilters-empty-filter": "Nema aktivnih filtera. Svi doprinosi su prikazani.", + "rcfilters-filterlist-title": "Filteri", + "rcfilters-filterlist-noresults": "Nema filtera", + "rcfilters-filter-registered-label": "Registrirani", + "rcfilters-filter-registered-description": "Prijavljeni korisnici.", + "rcfilters-filter-unregistered-label": "Anonimni", + "rcfilters-filter-unregistered-description": "Neprijavljeni korisnici.", + "rcfilters-filtergroup-authorship": "Autorstvo izmjena", + "rcfilters-filter-editsbyself-label": "Vlastite izmjene", + "rcfilters-filter-editsbyself-description": "Izmjene koje ste Vi napravili.", + "rcfilters-filter-editsbyother-label": "Tuđe izmjene", + "rcfilters-filter-editsbyother-description": "Izmjene koje su napravili drugi korisnici (ne Vi).", + "rcfilters-filtergroup-userExpLevel": "Korisničko iskustvo (samo za registrirane)", + "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", + "rcfilters-filter-user-experience-level-learner-description": "ViÅ¡e dana aktivnosti i izmjena od \"novajlija\", ali manje od \"iskusnih korisnika\".", + "rcfilters-filter-user-experience-level-experienced-label": "Iskusni korisnici", + "rcfilters-filter-user-experience-level-experienced-description": "Preko 30 dana aktivnosti i 500 izmjena.", + "rcfilters-filtergroup-automated": "Automatski doprinosi", + "rcfilters-filter-bots-label": "Bot", + "rcfilters-filter-bots-description": "Izmjene napravljene automatiziranim alatima.", + "rcfilters-filter-humans-label": "Čovjek (ne bot)", + "rcfilters-filter-humans-description": "Izmjene koje su napravili ljudi.", + "rcfilters-filtergroup-significance": "Značaj", + "rcfilters-filter-minor-label": "Manje izmjene", + "rcfilters-filter-minor-description": "Izmjene koje je njihov autor označio manjim.", + "rcfilters-filter-major-label": "Obične izmjene", + "rcfilters-filter-major-description": "Izmjene koje nisu označene manjim.", + "rcfilters-filtergroup-changetype": "Vrsta izmjene", + "rcfilters-filter-pageedits-label": "Izmjene stranica", + "rcfilters-filter-pageedits-description": "Izmjene wiki sadržaja, rasprava, opisa kategorija....", + "rcfilters-filter-newpages-label": "Stvaranje stranica", + "rcfilters-filter-newpages-description": "Izmjene kojima se stvaraju nove stranice.", + "rcfilters-filter-categorization-label": "Izmjene kategorija", + "rcfilters-filter-categorization-description": "Izmjene kojima se dodavaju ili uklanjaju kategorije.", + "rcfilters-filter-logactions-label": "Zapisane radnje", + "rcfilters-filter-logactions-description": "Administrativne radnje, pravljenje računa, brisanje stranica, postavljenje datoteka....", "rcnotefrom": "Ispod {{PLURAL:$5|je izmjena|su izmjene}} od <strong>$3, $4</strong> (do <strong>$1</strong> prikazano).", "rclistfrom": "Prikaži nove izmjene počev od $3 u $2", "rcshowhideminor": "$1 manje izmjene", @@ -1219,7 +1337,7 @@ "rcshowhidebots": "$1 botove", "rcshowhidebots-show": "Prikaži", "rcshowhidebots-hide": "Sakrij", - "rcshowhideliu": "$1 registrovane korisnike", + "rcshowhideliu": "$1 registrirane korisnike", "rcshowhideliu-show": "Prikaži", "rcshowhideliu-hide": "Sakrij", "rcshowhideanons": "$1 anonimne korisnike", @@ -1257,10 +1375,10 @@ "recentchangeslinked-summary": "Ova posebna stranica prikazuje promjene na povezanim stranicama.\nStranice koje su na vaÅ¡em [[Special:Watchlist|spisku praćenja]] su '''podebljane'''.", "recentchangeslinked-page": "Naslov stranice:", "recentchangeslinked-to": "Pokaži promjene stranica koji su povezane sa datom stranicom", - "recentchanges-page-added-to-category": "[[:$1]] dodana je u kategoriju", - "recentchanges-page-added-to-category-bundled": "[[:$1]] i joÅ¡ [[Special:WhatLinksHere/$1|{{PLURAL:$2|jedna stranica|$2 stranice|$2 stranica}}]] su dodane u kategoriju", - "recentchanges-page-removed-from-category": "[[:$1]] je uklonjena iz kategorije", - "recentchanges-page-removed-from-category-bundled": "[[:$1]] i joÅ¡ {{PLURAL:$2|jedna stranica|$2 stranice|$2 stranica}} su uklonjene iz kategorije", + "recentchanges-page-added-to-category": "Stranica [[:$1]] dodana je u kategoriju", + "recentchanges-page-added-to-category-bundled": "Stranica [[:$1]] dodana je u kategoriju, [[Special:WhatLinksHere/$1|ovu stranicu sadrže druge stranice]]", + "recentchanges-page-removed-from-category": "Stranica [[:$1]] uklonjena je iz kategorije", + "recentchanges-page-removed-from-category-bundled": "Stranica [[:$1]] uklonjena je iz kategorije, [[Special:WhatLinksHere/$1|ovu stranicu sadrže druge stranice]]", "autochange-username": "Automatska promjena MediaWikija", "upload": "Postavi datoteku", "uploadbtn": "Postavi datoteku", @@ -1307,7 +1425,7 @@ "unknown-error": "Desila se nepoznata greÅ¡ka.", "tmp-create-error": "Nije moguće napraviti privremenu datoteku.", "tmp-write-error": "GreÅ¡ka pri pisanju privremene datoteke.", - "large-file": "Preporučeno je da datoteke nisu veće od $1;\nOva datoteka je velika $2.", + "large-file": "Preporučeno je da datoteke ne budu veće od $1;\nova datoteka je velika $2.", "largefileserver": "Ova datoteka je veća nego Å¡to je dozvoljeno u postavkama servera.", "emptyfile": "Datoteka koju ste poslali je prazna. Ovo je moguće zbog greÅ¡ke u imenu datoteke. Molimo Vas da provjerite da li stvarno želite da poÅ¡aljete ovu datoteku.", "windows-nonascii-filename": "Ova wiki ne podržava imena datoteka sa posebnim znacima.", @@ -1324,7 +1442,7 @@ "uploadwarning": "Upozorenje pri postavljanju", "uploadwarning-text": "Molimo izmijeniti opis datoteke ispod i pokuÅ¡ajte kasnije.", "savefile": "Sačuvaj datoteku", - "uploaddisabled": "Slanje fajlova je isključeno", + "uploaddisabled": "Postavljanje datoteka je onemogućeno.", "copyuploaddisabled": "Postavljanje putem URL nije omogućeno.", "uploaddisabledtext": "Postavljanje datoteka je onemogućeno.", "php-uploaddisabledtext": "Postavljanje datoteka preko PHP je onemogućeno. Molimo provjerite postavku file_uploads.", @@ -1341,7 +1459,7 @@ "uploaded-setting-handler-svg": "SVG datoteka koja koristi atribut \"handler\" sa udaljenom/podatkovnoj/skriptnom vrijednosti je blokirana. Pronađeno <code>$1=\"$2\"</code> u postavljenoj SVG datoteci.", "uploaded-remote-url-svg": "SVG datoteka koja postavlja stilski atribut koristeći se vanjskim linkom je blokiranja. Pronađeno <code>$1=\"$2\"</code> u postavljenoj SVG datoteci.", "uploaded-image-filter-svg": "Pronađen slikovni filter sa URLom: <code><$1 $2=\"$3\"></code> u postavljenoj SVG datoteci.", - "uploadscriptednamespace": "Ova SVG datoteka sadrži pogreÅ¡an imenski prostor \"$1\".", + "uploadscriptednamespace": "Ova SVG datoteka sadrži pogreÅ¡an imenski prostor \"<nowiki>$1</nowiki>\".", "uploadinvalidxml": "Nije moguće raščlaniti XML postavljene datoteke.", "uploadvirus": "Datoteka sadrži virus! Detalji: $1", "uploadjava": "Datoteka je ZIP datoteka koja sadrži Java .class datoteku.\nPostavljanje Java datoteka nije dopuÅ¡teno, jer one mogu prouzrokovati da se zaobiđu sigurnosne zabrane.", @@ -1366,8 +1484,10 @@ "upload-too-many-redirects": "URL sadrži previÅ¡e preusmjerenja", "upload-http-error": "Desila se HTTP greÅ¡ka: $1", "upload-copy-upload-invalid-domain": "Kopije postavljenih datoteka nisu dostupne sa ove domene.", + "upload-dialog-disabled": "Onemogućeno je postavljanje datoteka pomoću ovog dijaloga.", "upload-dialog-title": "Postavi datoteku", "upload-dialog-button-cancel": "Odustani", + "upload-dialog-button-back": "Nazad", "upload-dialog-button-done": "Gotovo", "upload-dialog-button-save": "Sačuvaj", "upload-dialog-button-upload": "Postavi", @@ -1391,7 +1511,7 @@ "backend-fail-hashes": "Nisam naÅ¡ao datoteku disperzije radi usporedbe.", "backend-fail-notsame": "Već postoji različita datoteka $1.", "backend-fail-invalidpath": "$1 nije valjana putanja za skladiÅ¡tenje.", - "backend-fail-delete": "Ne može se izbrisati datoteka $1.", + "backend-fail-delete": "Ne mogu obrisati datoteku \"$1\".", "backend-fail-describe": "Ne mogu promijeniti metapodatke za datoteku \"$1\".", "backend-fail-alreadyexists": "Datoteka $1 već postoji.", "backend-fail-store": "Ne može se spremiti datoteka $1 na $2.", @@ -1465,7 +1585,7 @@ "listfiles-delete": "obriÅ¡i", "listfiles-summary": "Ova posebna stranica prikazuje sve postavljene datoteke.", "listfiles_search_for": "Traži medije po imenu:", - "listfiles-userdoesnotexist": "Korisnički račun \"$1\" nije registrovan.", + "listfiles-userdoesnotexist": "Korisnički račun \"$1\" nije registriran.", "imgfile": "datoteka", "listfiles": "Spisak slika", "listfiles_thumb": "Smanjeni pregled", @@ -1482,7 +1602,7 @@ "file-anchor-link": "Datoteka", "filehist": "Historija datoteke", "filehist-help": "Kliknite na datum/vrijeme da vidite verziju datoteke iz tog vremena.", - "filehist-deleteall": "izbriÅ¡i sve", + "filehist-deleteall": "obriÅ¡i sve", "filehist-deleteone": "obriÅ¡i", "filehist-revert": "vrati", "filehist-current": "trenutno", @@ -1520,6 +1640,7 @@ "filerevert-submit": "Vrati", "filerevert-success": "'''Datoteka [[Media:$1|$1]]''' je vraćena na [$4 verziju od $3, $2].", "filerevert-badversion": "Ne postoji ranija lokalna verzija ove datoteke sa navedenim vremenskim podacima.", + "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.", @@ -1545,7 +1666,7 @@ "listduplicatedfiles": "Spisak duplih datoteka", "listduplicatedfiles-summary": "Ovo je spisak datoteka koje su duplikat nekih drugih datoteka. Prikazane su samo lokalne datoteke.", "listduplicatedfiles-entry": "[[:File:$1|$1]] ima [[$3|{{PLURAL:$2|jedan duplikat|$2 duplikata}}]].", - "unusedtemplates": "NekoriÅ¡teni Å¡abloni", + "unusedtemplates": "NeiskoriÅ¡teni Å¡abloni", "unusedtemplatestext": "Ova stranica prikazuje sve stranice u imenskom prostoru {{ns:template}} koji se ne koriste.\nPrije brisanja provjerite da li druge stranice vode na te Å¡ablone.", "unusedtemplateswlh": "ostali linkovi", "randompage": "Slučajna stranica", @@ -1569,7 +1690,7 @@ "statistics-files": "Broj postavljenih datoteka", "statistics-edits": "Broj izmjena od kako je instalirana {{SITENAME}}", "statistics-edits-average": "Prosječno izmjena po stranici", - "statistics-users": "Registrovani [[Special:ListUsers|korisnici]]", + "statistics-users": "Registrirani [[Special:ListUsers|korisnici]]", "statistics-users-active": "Aktivni korisnici", "statistics-users-active-desc": "Korisnici koji su izvrÅ¡ili akciju u toku {{PLURAL:$1|posljednjeg dana|posljednja $1 dana|posljednjih $1 dana}}", "pageswithprop": "Stranice sa svojstvom stranice", @@ -1588,54 +1709,54 @@ "brokenredirectstext": "Sljedeća preusmjerenja vode na nepostojeće stranice:", "brokenredirects-edit": "uredi", "brokenredirects-delete": "obriÅ¡i", - "withoutinterwiki": "Članci bez interwiki linkova", + "withoutinterwiki": "Stranice bez jezičkih linkova", "withoutinterwiki-summary": "Slijedeće stranice nemaju linkove prema verzijama na drugim jezicima.", "withoutinterwiki-legend": "Prefiks", "withoutinterwiki-submit": "Prikaži", - "fewestrevisions": "Stranice sa najmanje izmjena", + "fewestrevisions": "Stranice s najmanje izmjena", "nbytes": "$1 {{PLURAL:$1|bajt|bajta|bajtova}}", - "ncategories": "$1 {{PLURAL:$1|kategorija|kategorije}}", + "ncategories": "$1 {{PLURAL:$1|kategorija|kategorije|kategorija}}", "ninterwikis": "$1 {{PLURAL:$1|međujezična veza|međujezične veze}}", - "nlinks": "$1 {{PLURAL:$1|veza|veze}}", - "nmembers": "$1 {{PLURAL:$1|član|članova}}", + "nlinks": "$1 {{PLURAL:$1|linka|linka|linkova}}", + "nmembers": "$1 {{PLURAL:$1|član|člana|članova}}", "nmemberschanged": "$1 → $2 {{PLURAL:$2|član|člana|članova}}", "nrevisions": "$1 {{PLURAL:$1|verzija|verzije|verzija}}", "nimagelinks": "Koristi se na $1 {{PLURAL:$1|stranici|stranice|stranica}}", "ntransclusions": "koristi se na $1 {{PLURAL:$1|stranici|stranice|stranica}}", "specialpage-empty": "Nema rezultata za ovaj izvjeÅ¡taj.", "lonelypages": "Siročad", - "lonelypagestext": "Slijedeće stranice nemaju linkove na ostalim stranicama na ovoj {{SITENAME}}.", - "uncategorizedpages": "Nekategorisane stranice", - "uncategorizedcategories": "Nekategorisane kategorije", - "uncategorizedimages": "Slike bez kategorije", - "uncategorizedtemplates": "Å abloni bez kategorije", + "lonelypagestext": "Sljedeće stranice nisu povezane niti su uključene transkluzijom u druge stranice na {{GRAMMAR:dativ|{{SITENAME}}}}.", + "uncategorizedpages": "Nekategorizirane stranice", + "uncategorizedcategories": "Nekategorizirane kategorije", + "uncategorizedimages": "Nekategorizirane datoteke", + "uncategorizedtemplates": "Nekategorizirani Å¡abloni", "unusedcategories": "NeiskoriÅ¡tene kategorije", "unusedimages": "NekoriÅ¡tene slike", "wantedcategories": "Tražene kategorije", - "wantedpages": "Najpotrebnije stranice", + "wantedpages": "Tražene stranice", "wantedpages-summary": "Spisak nepostojećih stranica sa najviÅ¡e veza ka njima. Na spisku se ne nalaze stranice do kojih vode preusmjerenja. Za spisak nepostojećih stranica na koje su povezana preumsjerenja, pogledajte [[{{#special:BrokenRedirects}}|spisak pokvarenih preusmerenja]].", "wantedpages-badtitle": "Nevaljan naslov u setu rezultata: $1", "wantedfiles": "Tražene datoteke", - "wantedfiletext-cat": "Sljedeće datoteke se koriste, ali ne postoje. Datoteke iz drugih baza mogu biti navedene iako ne postoje. Takve datoteke će biti <del>izbrisane</del> sa spiska. Pored toga, stranice koje sadrže nepostojeće datoteke se nalaze u [[:$1]].", + "wantedfiletext-cat": "Sljedeće datoteke se koriste, ali ne postoje. Datoteke iz drugih baza mogu biti navedene iako postoje. Takve datoteke će biti <del>precrtane</del> sa spiska. Pored toga, stranice koje sadrže nepostojeće datoteke nalaze se u [[:$1]].", "wantedfiletext-cat-noforeign": "Sljedeće datoteke se koriste, ali ne postoje. Dodatno, stranice koje ugrađuju datoteke koje ne postoje prikazane su u [[:$1]].", - "wantedfiletext-nocat": "Sljedeće datoteke se koriste, ali ne postoje. Datoteke iz drugih baza mogu biti navedene iako ne postoje. Takve datoteke će biti <del>izbrisane</del> sa spiska.", + "wantedfiletext-nocat": "Sljedeće datoteke se koriste, ali ne postoje. Datoteke iz drugih baza mogu biti navedene iako postoje. Takve datoteke će biti <del>precrtane</del> sa spiska.", "wantedfiletext-nocat-noforeign": "Sljedeće datoteke se koriste, ali ne postoje.", - "wantedtemplates": "Potrebni Å¡abloni", - "mostlinked": "Članci sa najviÅ¡e linkova", - "mostlinkedcategories": "Kategorije sa najviÅ¡e linkova", + "wantedtemplates": "Traženi Å¡abloni", + "mostlinked": "Stranice s najviÅ¡e linkova", + "mostlinkedcategories": "Kategorije s najviÅ¡e linkova", "mostlinkedtemplates": "NajviÅ¡e uključene stranice", - "mostcategories": "Članci sa najviÅ¡e kategorija", + "mostcategories": "Stranice s najviÅ¡e kategorija", "mostimages": "Datoteke s najviÅ¡e veza", "mostinterwikis": "Stranice sa najviÅ¡e međuwikija", - "mostrevisions": "Članci sa najviÅ¡e izmjena", - "prefixindex": "Sve stranice sa prefiksom", + "mostrevisions": "Stranice s najviÅ¡e izmjena", + "prefixindex": "Sve stranice s prefiksom", "prefixindex-namespace": "Sve stranice s predmetkom (imenski prostor $1)", "prefixindex-submit": "Prikaži", "prefixindex-strip": "Sakrij prefiks u spisku", "shortpages": "Kratke stranice", - "longpages": "Dugačke stranice", - "deadendpages": "Stranice bez unutraÅ¡njih veza", - "deadendpagestext": "Slijedeće stranice nisu povezane s drugim stranicama na {{SITENAME}}.", + "longpages": "Duge stranice", + "deadendpages": "Stranice bez unutraÅ¡njih linkova", + "deadendpagestext": "Sljedeće stranice nisu povezane s drugim stranicama na {{GRAMMAR:dativ|{{SITENAME}}}}.", "protectedpages": "ZaÅ¡tićene stranice", "protectedpages-indef": "Samo neograničena zaÅ¡tićenja", "protectedpages-summary": "Na ovoj stranici se nalazi spisak trenutno zaÅ¡tićenih stranica. Za spisak zaÅ¡tićenih naslova vidi [[{{#special:ProtectedTitles}}|{{int:protectedtitles}}]].", @@ -1648,11 +1769,13 @@ "protectedpages-performer": "ZaÅ¡tita korisnika", "protectedpages-params": "Parametri zaÅ¡tite", "protectedpages-reason": "Razlog", + "protectedpages-submit": "Prikaži stranice", "protectedpages-unknown-timestamp": "Nepoznato", "protectedpages-unknown-performer": "Nepoznati korisnik", "protectedtitles": "ZaÅ¡tićeni naslovi", "protectedtitles-summary": "Na ovoj stranici se nalazi spisak trenutno zaÅ¡tićenih naslova. Za spisak trenutno zaÅ¡tićenih stranica vidi [[{{#special:ProtectedPages}}|{{int:protectedpages}}]].", "protectedtitlesempty": "Nijedan naslov članka trenutno nije zaÅ¡tićen ovim parametrima.", + "protectedtitles-submit": "Prikaži naslove", "listusers": "Spisak korisnika", "listusers-editsonly": "Pokaži samo korisnike koji su uređivali", "listusers-creationsort": "Sortiraj po datumu pravljenja", @@ -1677,6 +1800,23 @@ "querypage-disabled": "Ova posebna stranica je onemogućena jer smanjuje performanse.", "apihelp": "API pomoć", "apihelp-no-such-module": "Modul \"$1\" nije pronađen.", + "apisandbox-unfullscreen": "Prikaži stranicu", + "apisandbox-reset": "Očisti", + "apisandbox-retry": "PokuÅ¡aj ponovo", + "apisandbox-loading": "Učitavam podatke o API modulu \"$1\"...", + "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 pod nazivom \"$1\" već postoji.", + "apisandbox-deprecated-parameters": "Zastarjeli parametri", + "apisandbox-fetch-token": "Automatski ispuni žeton", + "apisandbox-submit-invalid-fields-title": "Neka polja nisu ispravna", + "apisandbox-submit-invalid-fields-message": "Ispravite naznačena polja i pokuÅ¡ajte ponovo.", + "apisandbox-results": "Rezultati", + "apisandbox-continue": "Nastavi", + "apisandbox-continue-clear": "Očisti", + "apisandbox-multivalue-all-values": "$1 (sve vrijednosti)", "booksources": "Književni izvori", "booksources-search-legend": "Traži književne izvore", "booksources-search": "Traži", @@ -1690,7 +1830,7 @@ "alllogstext": "Skupni prikaz svih dostupnih zapisnika sa {{GRAMMAR:genitiv|{{SITENAME}}}}.\nMožete suziti prikaz izabiranjem specifičnog zapisnika, korisničkog imena (razlikovati velika i mala slova) ili izmijenjenog članka (također treba razlikovati velika i mala slova).", "logempty": "Nema zatraženih stavki u zapisniku.", "log-title-wildcard": "Traži naslove koji počinju ovim tekstom", - "showhideselectedlogentries": "Pokaži/sakrij izabrane zapise u evidenciji", + "showhideselectedlogentries": "Pokaži/sakrij izabrane unose u zapisniku", "log-edit-tags": "Uredi oznake izabranih zapisničkih unosa", "checkbox-select": "Izaberi: $1", "checkbox-all": "Sve", @@ -1713,9 +1853,9 @@ "cachedspecial-refresh-now": "Pogledaj najnoviju.", "categories": "Kategorije", "categories-submit": "Prikaži", - "categoriespagetext": "{{PLURAL:$1|Slijedeća kategorija sadrži|Slijedeće kategorije sadrže}} stranice ili multimedijalne datoteke.\n[[Special:UnusedCategories|NekoriÅ¡tene kategorije]] nisu prikazane ovdje.\nVidi također [[Special:WantedCategories|zatražene kategorije]].", + "categoriespagetext": "{{PLURAL:$1|Sljedeća kategorija sadrži|Sljedeće kategorije sadrže}} stranice ili multimedijalne datoteke.\n[[Special:UnusedCategories|NekoriÅ¡tene kategorije]] nisu prikazane ovdje.\nTakođer pogledajte [[Special:WantedCategories|zatražene kategorije]].", "categoriesfrom": "Prikaži kategorije počev od:", - "deletedcontributions": "Obrisani doprinosi korisnika", + "deletedcontributions": "Obrisani korisnički doprinosi", "deletedcontributions-title": "Obrisani doprinosi korisnika", "sp-deletedcontributions-contribs": "doprinosi", "linksearch": "Pretraga vanjskih linkova", @@ -1734,6 +1874,7 @@ "activeusers-count": "$1 {{PLURAL:$1|izmjena|izmjene|izmjena}} u {{PLURAL:$3|posljednji $3 dan|posljednja $3 dana|posljednjih $3 dana}}", "activeusers-from": "Prikaži korisnike koji počinju sa:", "activeusers-noresult": "Nije pronađen korisnik.", + "activeusers-submit": "Prikaži aktivne korisnike", "listgrouprights": "Prava korisničkih grupa", "listgrouprights-summary": "Slijedi spisak korisničkih grupa na ovoj wiki, s njihovim pripadajućim pravima pristupa.\nMoguće je da o svakoj grupi postoje [[{{MediaWiki:Listgrouprights-helppage}}|dodatne informacije]].", "listgrouprights-key": "Legenda:\n* <span class=\"listgrouprights-granted\">Dodano pravo</span>\n* <span class=\"listgrouprights-revoked\">Uklonjeno pravo</span>", @@ -1741,8 +1882,8 @@ "listgrouprights-rights": "Prava", "listgrouprights-helppage": "Help:Prava grupe", "listgrouprights-members": "(spisak članova)", - "listgrouprights-addgroup": "Mogu dodati {{PLURAL:$2|grupu|grupe}}: $1", - "listgrouprights-removegroup": "Mogu ukloniti {{PLURAL:$2|grupu|grupe}}: $1", + "listgrouprights-addgroup": "Dodavanje {{PLURAL:$2|sljedeće grupe|sljedećih grupa}}: $1", + "listgrouprights-removegroup": "Uklanjanje {{PLURAL:$2|sljedeće grupe|sljedećih grupa}}: $1", "listgrouprights-addgroup-all": "Može dodavati sve grupe", "listgrouprights-removegroup-all": "Može ukloniti sve grupe", "listgrouprights-addgroup-self": "Može dodati {{PLURAL:$2|grupu|grupe|grupa}} na svoj račun: $1", @@ -1752,8 +1893,11 @@ "listgrouprights-namespaceprotection-header": "Ograničenja imenskog prostora", "listgrouprights-namespaceprotection-namespace": "Imenski prostor", "listgrouprights-namespaceprotection-restrictedto": "Prava kojima se dozvoljava korisniku da uređuje", + "listgrants": "Dozvole", "listgrants-summary": "Ovo je spisak OAuth dozvola s odgovarajućim pravima uz svaku dozvolu s desne strane. Korisnici aplikacijama mogu odobriti da koriste njihov korisnički račun ali uz ograničena prava u zavisnosti od tog koju dozvolu im korisnik omogući. Međutim, aplikacija koja se koristi korisničkim računom ne može koristiti prava koja korisnik ne posjeduje. Moguće je da postoje [[{{MediaWiki:Listgrouprights-helppage}}|dodatne informacije]] o pojedinim pravima.", - "trackingcategories": "Praćenje kategorija", + "listgrants-grant": "Dozvola", + "listgrants-rights": "Prava", + "trackingcategories": "Kategorije za praćenje", "trackingcategories-summary": "Ova stranica prikazuje prateće kategorije koje MediaWiki softver automatski popunjava. Njihovi nazivi se mogu promijeniti izmjenom odgovarajućih sistemskih poruka u imenskom prostoru {{ns:8}}.", "trackingcategories-msg": "Praćenje kategorije", "trackingcategories-name": "Ime poruke", @@ -1793,14 +1937,14 @@ "emailccsubject": "Kopiraj VaÅ¡u poruku za $1: $2", "emailsent": "Poruka poslata", "emailsenttext": "VaÅ¡a poruka je poslata e-poÅ¡tom.", - "emailuserfooter": "Ovu e-poruku {{GENDER:$1|poslao|poslala}} je $1 {{GENDER:$2|korisniku|korisnici}} $2 pomoću funkcije \"{{int:emailuser}}\" s projekta {{SITENAME}}.", + "emailuserfooter": "Ovu e-poruku {{GENDER:$1|poslao|poslala}} je $1 {{GENDER:$2|korisniku|korisnici}} $2 pomoću funkcije \"{{int:emailuser}}\" s {{GRAMMAR:genitiv|{{SITENAME}}}}. Ako {{GENDER:$2|odgovorite}} na ovu e-poruku, {{GENDER:$2|VaÅ¡a}} će se poruka direktno poslati {{GENDER:$1|originalnom poÅ¡iljaocu|originalnoj poÅ¡iljatejici}} i otkrit ćete {{GENDER:$1|mu|joj}} {{GENDER:$2|svoju}} adresu e-poÅ¡te.", "usermessage-summary": "Ostavljanje sistemske poruke.", "usermessage-editor": "Sistem za poruke", "watchlist": "Spisak praćenja", "mywatchlist": "Spisak praćenja", "watchlistfor2": "Za $1 $2", "nowatchlist": "Nemate niÅ¡ta na svom spisku praćenih članaka.", - "watchlistanontext": "Morate biti prijavljeni kako biste vidjeli ili uređivali svoj spisak praćenih članaka.", + "watchlistanontext": "Morate biti prijavljeni da biste vidjeli ili uređivali svoj spisak praćenih članaka.", "watchnologin": "Niste prijavljeni", "addwatch": "Dodaj na spisak praćenja", "addedwatchtext": "Stranica \"[[:$1]]\" i njena stranica za razgovor dodani su na VaÅ¡ [[Special:Watchlist|spisak praćenja]].", @@ -1810,26 +1954,27 @@ "removedwatchtext": "Stranica \"[[:$1]]\" i njena stranica za razgovor uklonjeni su s VaÅ¡eg [[Special:Watchlist|spiska praćenja]].", "removedwatchtext-talk": "\"[[:$1]]\" i njoj pridružena stranica uklonjene su s VaÅ¡eg [[Special:Watchlist|spiska praćenja]].", "removedwatchtext-short": "Stranica \"$1\" je uklonjena sa vaÅ¡eg spiska praćenja.", - "watch": "Prati članak", + "watch": "Prati", "watchthispage": "Prati ovu stranicu", "unwatch": "Prestani pratiti", "unwatchthispage": "Prestani pratiti", - "notanarticle": "Nije članak", - "notvisiblerev": "Revizija je obrisana", + "notanarticle": "Nije stranica sa sadržajem", + "notvisiblerev": "Obrisana je posljednja izmjena drugog korisnika", "watchlist-details": "Imate {{PLURAL:$1|$1 stranica|$1 stranice|$1 stranica}} na VaÅ¡em spisku praćenja, ne računajući posebno stranice za razgovor.", "wlheader-enotif": "Uključeno je obavjeÅ¡tenje e-poÅ¡tom.", "wlheader-showupdated": "Stranice koje su izmijenjene otkad ste ih posljednji put posjetili prikazane su <strong>podebljanim slovima</strong>.", - "wlnote": "Ispod {{PLURAL:$1|je najskorija izmjena|su <strong>$1</strong> najskorije izmjene|<strong>$1</strong> najskorijih izmjena}} načinjenih {{PLURAL:$2|posljednjeg sata|u posljednjih <strong>$2</strong> sata|u posljednjih <strong>$2</strong> sati}}, od $3, $4.", + "wlnote": "Ispod {{PLURAL:$1|je posljednja izmjena|su <strong>$1</strong> posljednje izmjene|su <strong>$1</strong> posljednjih izmjena}} načinjenih {{PLURAL:$2|posljednjeg sata|u posljednjih <strong>$2</strong> sata|u posljednjih <strong>$2</strong> sati}}, od $3, $4.", "wlshowlast": "Prikaži posljednjih $1 sati $2 dana", "watchlist-hide": "Sakrij", "watchlist-submit": "Prikaži", "wlshowtime": "Vremensko razdoblje za prikaz:", "wlshowhideminor": "manje izmjene", "wlshowhidebots": "botove", - "wlshowhideliu": "registrovane korisnike", + "wlshowhideliu": "registrirane korisnike", "wlshowhideanons": "anonimne korisnike", "wlshowhidepatr": "patrolirane izmjene", "wlshowhidemine": "moje izmjene", + "wlshowhidecategorization": "kategorizaciju stranica", "watchlist-options": "Opcije spiska praćenja", "watching": "Pratim...", "unwatching": "Ne pratim...", @@ -1851,9 +1996,9 @@ "enotif_anon_editor": "anonimni korisnik $1", "enotif_body": "PoÅ¡tovani $WATCHINGUSERNAME,\n\n$PAGEINTRO $NEWPAGE\n\nSažetak urednika: $PAGESUMMARY $PAGEMINOREDIT\n\nKontaktirajte urednika:\ne-poÅ¡ta: $PAGEEDITOR_EMAIL\nwiki: $PAGEEDITOR_WIKI\n\nNeće biti drugih obavjeÅ¡tenja u slučaju daljnjih izmjena osim ako prijavljeni ponovno posjetite stranicu. Također možete poniÅ¡titi oznake obavijesti za sve praćene stranice koje imate na vaÅ¡em spisku praćenja.\n\nVaÅ¡ prijateljski {{SITENAME}} sistem obavjeÅ¡tavanja\n\n--\nZa promjenu vaÅ¡ih postavki email obavijesti, posjetite\n{{canonicalurl:{{#special:Preferences}}}}\n\nZa promjenu postavki vaÅ¡eg praćenja, posjetite\n{{canonicalurl:{{#special:EditWatchlist}}}}\n\nDa obriÅ¡ete stranicu sa vaÅ¡eg spiska praćenja, posjetite\n$UNWATCHURL\n\nPovratne informacije i daljnja pomoć:\n$HELPPAGE", "created": "napravljena", - "changed": "promijenjena", + "changed": "izmijenjena", "deletepage": "ObriÅ¡i stranicu", - "confirm": "Potvrdite", + "confirm": "Potvrdi", "excontent": "sadržaj je bio: \"$1\"", "excontentauthor": "sadržaj je bio: \"$1\", a jedini urednik \"[[Special:Contributions/$2|$2]]\" ([[User talk:$2|razgovor]])", "exbeforeblank": "sadržaj prije brisanja je bio: \"$1\"", @@ -1877,12 +2022,13 @@ "delete-toobig": "Ova stranica ima veliku historiju promjena, preko $1 {{PLURAL:$1|revizije|revizija}}.\nBrisanje takvih stranica nije dopuÅ¡teno da bi se spriječilo slučajno preopterećenje servera na kojem je {{SITENAME}}.", "delete-warning-toobig": "Ova stranica ima veliku historiju izmjena, preko $1 {{PLURAL:$1|izmjene|izmjena}}.\nNjeno brisanje može dovesti do opterećenja operacione baze na {{SITENAME}};\nnastavite s oprezom.", "deleteprotected": "Ne možete obrisati ovu stranicu jer je zaÅ¡tićena.", - "deleting-backlinks-warning": "'''Upozorenje:''' [[Special:WhatLinksHere/{{FULLPAGENAME}}|Druge stranice]] sadrže link ili vode na stranicu koju briÅ¡ete.", + "deleting-backlinks-warning": "<strong>Upozorenje:</strong> [[Special:WhatLinksHere/{{FULLPAGENAME}}|Druge stranice]] sadrže link ili vode na stranicu koju briÅ¡ete.", "rollback": "Vrati izmjene", "rollbacklink": "vrati", "rollbacklinkcount": "vrati $1 {{PLURAL:$1|izmjenu|izmjene|izmjena}}", "rollbacklinkcount-morethan": "vrati viÅ¡e od $1 {{PLURAL:$1|izmjene|izmjene|izmjena}}", - "rollbackfailed": "NeuspeÅ¡no vraćanje", + "rollbackfailed": "NeuspjeÅ¡no vraćanje", + "rollback-missingrevision": "Ne mogu učitati podatke o izmjeni.", "cantrollback": "Ne mogu vratiti izmjenu;\nposljednji autor je ujedno i jedini.", "alreadyrolled": "Ne može se vratiti posljednja izmjena [[:$1]] od korisnika [[User:$2|$2]] ([[User talk:$2|razgovor]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]]); neko je već izmijenio ili vratio članak na prethodnu provjerenu verziju.\n\nPosljednju izmjenu napravio je korisnik [[User:$3|$3]] ([[User talk:$3|razgovor]]{{int:pipe-separator}}[[Special:Contributions/$3|{{int:contribslink}}]]).", "editcomment": "Sažetak izmjene je bio: <em>$1</em>.", @@ -1896,12 +2042,16 @@ "changecontentmodel-title-label": "Naslov stranice", "changecontentmodel-model-label": "Novi model sadržaja", "changecontentmodel-reason-label": "Razlog:", + "changecontentmodel-submit": "Promijeni", "changecontentmodel-success-title": "Model sadržaja je promijenjen", "changecontentmodel-success-text": "Model sadržaja stranice [[:$1]] je promijenjen.", "changecontentmodel-cannot-convert": "Model sadržaja stranice [[:$1]] se ne može pretvoriti u vrstu $2.", "changecontentmodel-nodirectediting": "Model sadržaja $1 ne podržava izravno uređivanje", + "changecontentmodel-emptymodels-title": "Nema dostupnih modela sadržaja", + "changecontentmodel-emptymodels-text": "Model sadržaja stranice [[:$1]] ne može se pretvoriti ni u jednu drugu vrstu.", "log-name-contentmodel": "Zapisnik promjene modela sadržaja", "log-description-contentmodel": "Događaji koji su povezani s modelom sadržaja stranice", + "logentry-contentmodel-new": "$1 {{GENDER:$2|napravio|napravila}} je stranicu $3 s nestandardnim modelom sadržaja \"$5\"", "logentry-contentmodel-change": "$1 {{GENDER:$2|promijenio|promijenila}} je model sadržaja stranice $3 iz \"$4\" u \"$5\"", "logentry-contentmodel-change-revertlink": "vrati", "logentry-contentmodel-change-revert": "vrati", @@ -1912,6 +2062,8 @@ "unprotectedarticle": "uklonjena zaÅ¡tita sa stranice \"[[$1]]\"", "movedarticleprotection": "podeÅ¡avanja zaÅ¡tite premjeÅ¡tena sa \"[[$2]]\" na \"[[$1]]\"", "protectedarticle-comment": "{{GENDER:$2|ZaÅ¡titio|ZaÅ¡titila}} je stranicu \"[[$1]]\"", + "modifiedarticleprotection-comment": "{{GENDER:$2|Promijenjen nivo zaÅ¡tite}} za \"[[$1]]\"", + "unprotectedarticle-comment": "{{GENDER:$2|Uklonjena zaÅ¡tita}} sa stranice \"[[$1]]\"", "protect-title": "Mijenjate nivo zaÅ¡ite za \"$1\"", "protect-title-notallowed": "Pregled stepena zaÅ¡tite za \"$1\"", "prot_1movedto2": "članak [[$1]] premjeÅ¡ten na [[$2]]", @@ -1969,7 +2121,7 @@ "undeletepagetext": "{{PLURAL:$1|Slijedeća $1 stranica je obrisana|Slijedeće $1 stranice su obrisane|Slijedećih $1 je obrisano}} ali su joÅ¡ uvijek u arhivi i mogu biti vraćene.\nArhiva moÅ¡e biti periodično čišćena.", "undelete-fieldset-title": "Vraćanje izmjena", "undeleteextrahelp": "Da biste vratili cijelu historiju stranice, ostavite sve kućice neoznačene i kliknite na <strong><em>{{int:undeletebtn}}</em></strong>.\nDa biste vratili određene izmjene, označite ih i kliknite na <strong><em>{{int:undeletebtn}}</em></strong>.", - "undeleterevisions": "$1 {{PLURAL:$1|izmjena je obrisana|izmjena je obrisano}}", + "undeleterevisions": "$1 {{PLURAL:$1|izmjena je obrisana|izmjene su obrisane|izmjena je obrisano}}", "undeletehistory": "Ako vratite stranicu, sve će izmjene biti vraćene u njenu historiju.\nAko je u međuvremenu napravljena nova izmjena s istim nazivom, vraćene izmjene pojavit će se u njenoj ranijoj historiji.", "undeleterevdel": "Vraćanje neće biti izvrÅ¡eno ako je rezultat toga djelomično brisanje posljednje izmjene.\nU takvim slučajevima morate isključiti ili otkriti najnoviju obrisanu izmjenu.", "undeletehistorynoadmin": "Ova stranica je obrisana.\nRazlog za brisanje se nalazi ispod, zajedno s detaljima o korisniku koji je mijenjao stranicu prije brisanja.\nTekst obrisanih verzija dostupan je samo administratorima.", @@ -1985,7 +2137,7 @@ "undeletedrevisions-files": "{{PLURAL:$1|1 verzija|$1 verzije|$1 verzija}} i {{PLURAL:$2|1 datoteka|$2 datoteke|$2 datoteka}} vraćeno", "undeletedfiles": "{{PLURAL:$1|1 datoteka vraćena|$1 datoteke vraćene|$1 datoteka vraćeno}}", "cannotundelete": "Vraćanje jedne ili svih stavki nije uspjelo:\n$1", - "undeletedpage": "'''$1 je vraćena'''\n\nProvjerite [[Special:Log/delete|zapis brisanja]] za zapise najskorijih brisanja i vraćanja.", + "undeletedpage": "<strong>Stranica $1 je vraćena</strong>\n\nProvjerite [[Special:Log/delete|zapisnik brisanja]] za zapise nedavnih brisanja i vraćanja.", "undelete-header": "Pogledajte [[Special:Log/delete|zapisnik brisanja]] za nedavno obrisane stranice.", "undelete-search-title": "Pretraga obrisanih stranica", "undelete-search-box": "Pretraga obrisanih stranica", @@ -2008,13 +2160,13 @@ "namespace_association": "Povezan imenski prostor", "tooltip-namespace_association": "Označite ovu kutiju da također uključite razgovor ili imenski prostor teme koja je povezana sa odabranim imenskim prostorom", "blanknamespace": "(glavni)", - "contributions": "Doprinosi {{GENDER:$1|korisnika|korisnice|korisnika}}", + "contributions": "{{GENDER:$1|Korisnički}} doprinosi", "contributions-title": "Doprinosi korisnika $1", "mycontris": "Doprinosi", "anoncontribs": "Doprinosi", "contribsub2": "Za {{GENDER:$3|$1}} ($2)", - "contributions-userdoesnotexist": "Korisnički račun \"$1\" nije registrovan.", - "nocontribs": "Nisu nađene promjene koje zadovoljavaju ove uslove.", + "contributions-userdoesnotexist": "Korisnički račun \"$1\" nije registriran.", + "nocontribs": "Nema izmjena koje odgovaraju navedenim kriterijima.", "uctop": "(trenutno)", "month": "Od mjeseca (i ranije):", "year": "Od godine (i ranije):", @@ -2039,11 +2191,11 @@ "whatlinkshere": "Å ta vodi ovamo", "whatlinkshere-title": "Stranice koje vode na \"$1\"", "whatlinkshere-page": "Stranica:", - "linkshere": "Sljedeći članci vode na '''[[:$1]]''':", + "linkshere": "Sljedeće stranice vode na <strong>[[:$1]]</strong>:", "nolinkshere": "Nijedna stranica nije povezana sa <strong>[[:$1]]</strong>.", "nolinkshere-ns": "Nijedna stranica nije povezana sa <strong>[[:$1]]</strong> u izabranom imenskom prostoru.", "isredirect": "preusmjerenje", - "istemplate": "Å¡ablon", + "istemplate": "uključivanje", "isimage": "veza na datoteku", "whatlinkshere-prev": "{{PLURAL:$1|prethodni|prethodna|prethodnih}} $1", "whatlinkshere-next": "{{PLURAL:$1|sljedeći|sljedeća|sljedećih}} $1", @@ -2053,6 +2205,7 @@ "whatlinkshere-hidelinks": "$1 linkove", "whatlinkshere-hideimages": "$1 linkova do datoteke", "whatlinkshere-filters": "Filteri", + "whatlinkshere-submit": "Idi", "autoblockid": "Automatska blokada #$1", "block": "Blokiraj korisnika", "unblock": "Odblokiraj korisnika", @@ -2086,6 +2239,7 @@ "ipb-unblock": "Deblokiraj korisničko ime ili IP adresu", "ipb-blocklist": "Vidi postojeće blokade", "ipb-blocklist-contribs": "Doprinosi za {{GENDER:$1|$1}}", + "ipb-blocklist-duration-left": "joÅ¡ $1", "unblockip": "Odblokiraj korisnika", "unblockiptext": "Upotrebite donji upitnik da bi ste vratili\npravo pisanja ranije blokiranoj IP adresi\nili korisničkom imenu.", "ipusubmit": "Ukloni ovu blokadu", @@ -2122,7 +2276,7 @@ "unblocklink": "deblokiraj", "change-blocklink": "promijeni blokadu", "contribslink": "doprinosi", - "emaillink": "poÅ¡alji e-mail", + "emaillink": "poÅ¡alji e-poruku", "autoblocker": "Automatski ste blokirani jer dijelite IP-adresu sa \"[[User:$1|$1]]\".\nRazlog za blokiranje korisnika $1 je ''$2''", "blocklogpage": "Zapisnik blokiranja", "blocklog-showlog": "Ovaj korisnik je ranije blokiran. Zapisnik blokiranja je prikazan ispod kao referenca:", @@ -2148,7 +2302,7 @@ "unblock-hideuser": "Ne možete deblokirati ovog korisnika jer je njegovo korisničko ime sakriveno.", "ipb_cant_unblock": "GreÅ¡ka: Blokirani ID $1 nije pronađen. Možda je korisnik već deblokiran.", "ipb_blocked_as_range": "GreÅ¡ka: IP adresa $1 nije direktno blokirana i ne može se deblokirati.\nMeđutim, možda je blokirana kao dio bloka $2, koji se ne može deblokirati.", - "ip_range_invalid": "Netačan raspon IP adresa.", + "ip_range_invalid": "Netačan opseg IP-adresa.", "ip_range_toolarge": "Nisu dopuÅ¡tene blokade veće od /$1.", "proxyblocker": "ZaÅ¡tita od proxya", "proxyblockreason": "VaÅ¡a IP adresa je blokirana jer je ona otvoreni proxy.\nMolimo vas da kontaktirate vaÅ¡eg davatelja internetskih usluga ili tehničku podrÅ¡ku i obavijestite ih o ovom ozbiljnom sigurnosnom problemu.", @@ -2158,18 +2312,18 @@ "cant-see-hidden-user": "Korisnik kojeg pokuÅ¡avate blokirati je već blokiran i sakriven. PoÅ¡to nemate prava hideuser (sakrivanje korisnika), ne možete vidjeti ni urediti korisnikovu blokadu.", "ipbblocked": "Ne možete blokirati ili deblokirati druge korisnike, jer ste i sami blokirani", "ipbnounblockself": "Nije Vam dopuÅ¡teno da deblokirate samog sebe", - "lockdb": "Zaključajte bazu", - "unlockdb": "Otključaj bazu", - "lockdbtext": "Zaključavanje baze će svim korisnicima ukinuti mogućnost izmjene stranica,\npromjene korisničkih podeÅ¡avanja, izmjene praćenih članaka, i svega ostalog\nÅ¡to zahtjeva promjene u bazi.\nMolimo Vas da potvrdite da je ovo zaista ono Å¡to namjeravate da uradite, i da ćete\notkučati bazu kad zavrÅ¡ite posao oko njenog održavanja.", + "lockdb": "Zaključavanje baze podataka", + "unlockdb": "Otključavanje baze podataka", + "lockdbtext": "Zaključavanje baze će svim korisnicima ukinuti mogućnost izmjene stranica,\nkorisničkih postavki, praćenih članaka i svega ostalog\nÅ¡to zahtijeva izmjenu u bazi.\nPotvrdite da je ovo zaista ono Å¡to namjeravate uraditi i da ćete\notkučati bazu kad zavrÅ¡ite posao oko njenog održavanja.", "unlockdbtext": "Otključavanje baze će svim korisnicima vratiti mogućnost\nizmjene stranica, promjene korisničkih stranica, izmjene spiska praćenih članaka,\ni svega ostalog Å¡to zahtjeva promjene u bazi.\nMolimo Vas da potvrdite da je ovo zaista ono Å¡to namijeravate da uradite.", - "lockconfirm": "Da, zaista želim da zaključam bazu.", - "unlockconfirm": "Da, zaista želim da otključam bazu.", - "lockbtn": "Zaključajte bazu", + "lockconfirm": "Da, zaista želim zaključati bazu.", + "unlockconfirm": "Da, zaista želim otključati bazu.", + "lockbtn": "Zaključaj bazu", "unlockbtn": "Otključaj bazu", "locknoconfirm": "Niste potvrdili svoju namjeru.", "lockdbsuccesssub": "Baza je zaključana", "unlockdbsuccesssub": "Baza je otključana", - "lockdbsuccesstext": "{{SITENAME}} baza podataka je zaključana. <br /> Sjetite se da je otključate kad zavrÅ¡ite sa održavanjem.", + "lockdbsuccesstext": "Baza podataka je zaključana.<br />\nNe zaboravite je [[Special:UnlockDB|otključati]] nakon Å¡to zavrÅ¡ite s održavanjem.", "unlockdbsuccesstext": "{{SITENAME}} baza podataka je otključana.", "lockfilenotwritable": "Datoteka zaključavanja baze je zaÅ¡tićena za pisanje.\nAko želite otključati ili zaključati bazu, ova datoteka mora biti omogućena za pisanje od strane web servera.", "databasenotlocked": "Baza podataka nije zaključana.", @@ -2181,13 +2335,15 @@ "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": "<strong>Upozorenje:</strong> PremjeÅ¡tate korisničku stranicu. Imajte u vidu da će samo stranica biti premjeÅ¡tena, a sam korisnik <em>neće</em> biti preimenovan.", "movecategorypage-warning": "<strong>Upozorenje:</strong> PremjeÅ¡tate stranicu kategorije. Imajte na umu da će samo stranica biti premjeÅ¡tena i da sve stranice u staroj kategoriji <em>neće</em> biti ponovo kategorirane u novu kategoriju.", - "movenologintext": "Morate biti registrovani korisnik i [[Special:UserLogin|prijavljeni]] da biste premjestili stranicu.", + "movenologintext": "Morate biti registrirani korisnik i [[Special:UserLogin|prijavljeni]] da biste premjestili stranicu.", "movenotallowed": "Nemate dopuÅ¡tenje za premjeÅ¡tanje stranica.", "movenotallowedfile": "Nemate dopuÅ¡tenja da premjeÅ¡tanje datoteke.", "cant-move-user-page": "Nemate dopuÅ¡tenje da premjeÅ¡tate korisničke stranice (bez podstranica).", "cant-move-to-user-page": "Nemate dopuÅ¡tenje da premjestite stranicu na korisničku stranicu (osim na korisničku podstranicu).", "cant-move-category-page": "Nemate dopuÅ¡tene da premjeÅ¡tate stranice kategorija.", "cant-move-to-category-page": "Nemate dopuÅ¡tenje da premjestite stranicu na stranicu kategorije.", + "cant-move-subpages": "Nemate dopuÅ¡tenje da premjeÅ¡tate podstranice.", + "namespace-nosubpages": "Imenski prostor \"$1\" ne dozvoljava podstranice.", "newtitle": "Novi naslov:", "move-watch": "Prati izvornu i odrediÅ¡nu stranicu", "movepagebtn": "Premjesti stranicu", @@ -2208,6 +2364,7 @@ "movelogpagetext": "Ispod je spisak premjeÅ¡tenih stranica.", "movesubpage": "{{PLURAL:$1|Podstranica|Podstranice}}", "movesubpagetext": "Ova stranica ima $1 {{PLURAL:$1|podstranicu|podstranice|podstranica}} prikazanih ispod.", + "movesubpagetalktext": "Odgovarajuća stranica za razgovor ima $1 {{PLURAL:$1|podstranicu|podstranice|podstranica}} prikazanih ispod.", "movenosubpage": "Ova stranica nema podstranica.", "movereason": "Razlog:", "revertmove": "vrati", @@ -2229,12 +2386,12 @@ "move-leave-redirect": "Ostavi preusmjerenje", "protectedpagemovewarning": "'''Upozorenje:''' Ova stranica je zaključana tako da je mogu premjeÅ¡tati samo korisnici sa ovlastima administratora.\nPosljednja stavka zapisnika je prikazana ispod kao referenca:", "semiprotectedpagemovewarning": "'''Napomena:''' Ova stranica je zaključana tako da je mogu uređivati samo registrovani korisnici.\nPosljednja stavka zapisnika je prikazana ispod kao referenca:", - "move-over-sharedrepo": "== Datoteka postoji ==\n[[:$1]] postoji na dijeljenom repozitorijumu. PremjeÅ¡tanje datoteke na ovaj naslov će prepisati dijeljenu datoteku.", + "move-over-sharedrepo": "[[:$1]] postoji na dijeljenom skladiÅ¡tu. PremjeÅ¡tanje datoteke na ovaj naslov zamijenit će dijeljenu datoteku.", "file-exists-sharedrepo": "Ime datoteke koje ste odabrali je već koriÅ¡teno u dijeljenom repozitorijumu.\nMolimo odaberite drugo ime.", - "export": "Izvezite stranice", + "export": "Izvoz stranica", "exporttext": "Možete izvesti tekst i historiju jedne ili viÅ¡e stranica uklopljene u XML kod.\nOvo se može uvesti u drugi wiki koristeći MediaWiki preko [[Special:Import|stranice uvoza]].\n\nZa izvoz stranica unesite njihove naslove u polje ispod, jedan naslov po retku, i označite želite li trenutnu verziju zajedno sa svim ranijim, ili samo trenutnu verziju sa informacijom o zadnjoj promjeni.\n\nU drugom slučaju možete koristiti i vezu, npr. [[{{#Special:Export}}/{{MediaWiki:Mainpage}}]] za stranicu [[{{MediaWiki:Mainpage}}]].", "exportall": "Izvezi sve stranice", - "exportcuronly": "Uključite samo trenutnu reviziju, ne cijelu historiju", + "exportcuronly": "Uključi samo trenutnu verziju, ne cijelu historiju", "exportnohistory": "----\n'''Pažnja:''' Izvoz cjelokupne historije stranica preko ovog obrasca je onemogućeno iz tehničkih razloga.", "exportlistauthors": "Uključi cjelokupan spisak doprinosilaca za svaku stranicu", "export-submit": "Izvezi", @@ -2245,11 +2402,12 @@ "export-download": "Spremi kao datoteku", "export-templates": "Uključi Å¡ablone", "export-pagelinks": "Uključi povezane stranice do dubine od:", + "export-manual": "Ručno dodaj stranice:", "allmessages": "Sve sistemske poruke", "allmessagesname": "Naziv", - "allmessagesdefault": "Uobičajeni tekst", + "allmessagesdefault": "Predodređeni tekst", "allmessagescurrent": "Trenutni tekst", - "allmessagestext": "Ovo je spisak svih sistemskih poruka u dostupnih u MediaWiki imenskom prostoru.\nMolimo posjetite [https://www.mediawiki.org/wiki/Special:MyLanguage/Localisation MediaWiki lokalizaciju] i [https://translatewiki.net translatewiki.net] ako želite doprinijeti općoj lokalizaciji MediaWikija.", + "allmessagestext": "Ovo je spisak svih sistemskih poruka u dostupnih u imenskom prostoru MediaWiki.\nPosjetite [https://www.mediawiki.org/wiki/Special:MyLanguage/Localisation lokalizaciju MediaWikija] i [https://translatewiki.net translatewiki.net] ako želite doprinijeti općoj lokalizaciji MediaWikija.", "allmessagesnotsupportedDB": "Ova stranica ne može biti koriÅ¡tena jer je <i>wgUseDatabaseMessages</i> isključen.", "allmessages-filter-legend": "Filter", "allmessages-filter": "Filter po stanju podeÅ¡avanja:", @@ -2270,7 +2428,7 @@ "thumbnail-dest-create": "Ne mogu da sačuvam smanjenu sliku (\"thumbnail\") na destinaciju", "thumbnail_invalid_params": "PogreÅ¡ne postavke smanjenog prikaza", "thumbnail_toobigimagearea": "Datoteka sa dimenzijama većim od $1", - "thumbnail_dest_directory": "Ne može se napraviti odrediÅ¡ni folder", + "thumbnail_dest_directory": "Ne mogu napraviti odrediÅ¡ni folder", "thumbnail_image-type": "Tip slike nije podržan", "thumbnail_gd-library": "Nekompletna konfiguracija GD biblioteke: nedostaje funkcija $1", "thumbnail_image-missing": "Datoteka ne dostaje: $1", @@ -2288,17 +2446,17 @@ "import-mapping-subpage": "Uvezi kao podstranice sljedeće stranice:", "import-upload-filename": "Naziv datoteke:", "import-comment": "Komentar:", - "importtext": "Molimo Vas da izvezete datoteku iz izvornog wikija koristeći [[Special:Export|alat za izvoz]].\nSačuvajte je na VaÅ¡em računaru i poÅ¡aljite ovdje.", - "importstart": "Uvoz stranica...", - "import-revision-count": "$1 {{PLURAL:$1|revizija|revizije|revizija}}", + "importtext": "Izvezite datoteku iz izvornog wikija koristeći [[Special:Export|alat za izvoz]].\nSačuvajte je na svoj računar i postavite je ovdje.", + "importstart": "Uvozim stranice...", + "import-revision-count": "$1 {{PLURAL:$1|izmjena|izmjene|izmjena}}", "importnopages": "Nema stranica za uvoz.", "imported-log-entries": "{{PLURAL:$1|Uvezena $1 stavka zapisnika|Uvezene $1 stavke zapisnika|Uvezeno $1 stavki zapisnika}}.", - "importfailed": "Uvoz nije uspjeo: $1", + "importfailed": "Uvoz nije uspio: $1", "importunknownsource": "Nepoznat izvorni tip uvoza", - "importcantopen": "Ne može se otvoriti uvozna datoteka", + "importcantopen": "Ne mogu otvoriti datoteku za uvoz", "importbadinterwiki": "LoÅ¡ interwiki link", "importsuccess": "UspjeÅ¡no ste uvezli stranicu!", - "importnosources": "Nije definisan međuwiki izvor za uvoz i direktna postavljanja historije su isključena.", + "importnosources": "Nije definiran međuwiki izvor za uvoz i direktna postavljanja historije su isključena.", "importnofile": "Uvozna datoteka nije postavljena.", "importuploaderrorsize": "Postavljanje uvozne datoteke nije uspjelo.\nDatoteka je veća nego Å¡to je dopuÅ¡teno.", "importuploaderrorpartial": "Postavljanje uvozne datoteke nije uspjelo.\nDatoteka je samo djelimično postavljena.", @@ -2309,7 +2467,7 @@ "xml-error-string": "$1 na liniji $2, kolona $3 (bajt $4): $5", "import-upload": "Postavljanje XML podataka", "import-token-mismatch": "Izgubljeni podaci sesije. Molimo pokuÅ¡ajte ponovno.", - "import-invalid-interwiki": "Ne može se uvesti iz navedenog wikija.", + "import-invalid-interwiki": "Ne mogu uvesti iz navedenog wikija.", "import-error-edit": "Stranica \"$1\" nije uvezena jer vam nije dopuÅ¡teno da je uređujete.", "import-error-create": "Stranica \"$1\" nije uvezena jer vam nije dozvoljeno da je napravite.", "import-error-interwiki": "Stranica \"$1\" nije uvezena jer je njen naziv rezerviran za vanjsko povezivanje (interwiki).", @@ -2322,8 +2480,8 @@ "import-rootpage-nosubpage": "Imenski prostor \"$1\" osnovne stranice ne dozvoljava podstranice.", "importlogpage": "Zapisnik uvoza", "importlogpagetext": "Administrativni uvozi stranica sa historijom izmjena sa drugih wikija.", - "import-logentry-upload-detail": "{{PLURAL:$1|Uvezena jedna revizija|Uvezene $1 revizije|Uvezeno $1 revizija}}", - "import-logentry-interwiki-detail": "{{PLURAL:$1|Uvezena $1 revizija|Uvezene $1 revizije|Uvezeno $1 revizija}} od $2", + "import-logentry-upload-detail": "{{PLURAL:$1|Uvezena jedna izmjena|Uvezene $1 izmjene|Uvezeno $1 izmjena}}", + "import-logentry-interwiki-detail": "{{PLURAL:$1|Uvezena $1 izmjena|Uvezene $1 izmjene|Uvezeno $1 izmjena}} sa $2", "javascripttest": "Testiranje JavaScript-e", "javascripttest-pagetext-unknownaction": "Nepoznata radnja \"$1\".", "javascripttest-qunit-intro": "Pogledajte [$1 dokumentaciju za testiranje] na mediawiki.org.", @@ -2352,7 +2510,7 @@ "tooltip-search": "Pretraži {{GRAMMAR:akuzativ|{{SITENAME}}}}", "tooltip-search-go": "Idi na stranicu s tačno ovim imenom ako postoji", "tooltip-search-fulltext": "Pretražite stranice s ovim tekstom", - "tooltip-p-logo": "Glavna stranica", + "tooltip-p-logo": "Posjetite početnu stranicu", "tooltip-n-mainpage": "Posjetite početnu stranicu", "tooltip-n-mainpage-description": "Posjetite početnu stranicu", "tooltip-n-portal": "O projektu, Å¡ta možete da uradite, gdje se Å¡ta nalazi", @@ -2383,6 +2541,7 @@ "tooltip-ca-nstab-category": "Pogledajte stranicu kategorije", "tooltip-minoredit": "Označi kao manju izmjenu", "tooltip-save": "Sačuvaj moje izmjene", + "tooltip-publish": "Objavi svoje izmjene", "tooltip-preview": "Pregledajte svoje izmjene. Preporučeno pri bilo kakvom uređivanju!", "tooltip-diff": "Prikaži moje izmjene u tekstu", "tooltip-compareselectedversions": "Uporedi razliku između dvije izabrane verzije ove stranice", @@ -2399,12 +2558,12 @@ "print.css": "/* CSS umetnut ovdje uticat će na izgled isprintane stranice */", "common.js": "/* Bilo koja JavaScript će biti učitana za sve korisnike pri svakom učitavanju stranice. */", "anonymous": "{{PLURAL:$1|Anonimni korisnik|$1 anonimna korisnika|$1 anonimnih korisnika}} projekta {{SITENAME}}", - "siteuser": "{{SITENAME}} korisnik $1", + "siteuser": "{{SITENAME}} {{GENDER:$2|korisnik|korisnica}} $1", "anonuser": "{{SITENAME}} anonimni korisnik $1", "lastmodifiedatby": "Ovu stranicu posljednji je put {{GENDER:$4|izmijenio|izmijenila}} $3 dana $1 u $2.", "othercontribs": "Bazirano na radu od strane korisnika $1.", "others": "ostali", - "siteusers": "{{SITENAME}} {{PLURAL:$2|korisnik|korisnika}} $1", + "siteusers": "{{SITENAME}} {{PLURAL:$2|{{GENDER:$1|korisnik|korisnica}}|korisnici}} $1", "anonusers": "{{SITENAME}} {{PLURAL:$2|anonimni korisnik|anonimni korisnici}} $1", "creditspage": "Autori stranice", "nocredits": "Autori ove stranice nisu navedeni.", @@ -2427,7 +2586,9 @@ "pageinfo-length": "Dužina stranice (u bajtovima)", "pageinfo-article-id": "ID stranice", "pageinfo-language": "Jezik sadržaja stranice", + "pageinfo-language-change": "promijeni", "pageinfo-content-model": "Model sadržaj stranice", + "pageinfo-content-model-change": "promijeni", "pageinfo-robot-policy": "Indeksiranje od strane robota", "pageinfo-robot-index": "Dozvoljeno", "pageinfo-robot-noindex": "Nije dozvoljeno", @@ -2463,22 +2624,26 @@ "pageinfo-category-pages": "Broj stranica", "pageinfo-category-subcats": "Broj potkategorija", "pageinfo-category-files": "Broj datoteka", + "pageinfo-user-id": "Korisnički ID", "markaspatrolleddiff": "Označi kao patrolirano", "markaspatrolledtext": "Označi stranicu kao patroliranu", + "markaspatrolledtext-file": "Označi ovu verziju datoteke kao patroliranu", "markedaspatrolled": "Označeno kao patrolirano", - "markedaspatrolledtext": "Izabrana revizija [[:$1]] je bila označena kao patrolirana.", + "markedaspatrolledtext": "Izabrana izmjena stranice [[:$1]] označena je patroliranom.", "rcpatroldisabled": "Patroliranje nedavnih izmjena onemogućeno", "rcpatroldisabledtext": "Funkcija patroliranja nedavnih izmjena je trenutno isključena.", - "markedaspatrollederror": "Ne može se označiti kao patrolirano", - "markedaspatrollederrortext": "Morate naglasiti reviziju koju treba označiti kao patroliranu.", + "markedaspatrollederror": "Ne mogu označiti kao patrolirano", + "markedaspatrollederrortext": "Morate izabrati izmjenu koju želite označiti patroliranom.", "markedaspatrollederror-noautopatrol": "Nije Vam dopuÅ¡teno da vlastite izmjene označavate patroliranim.", - "markedaspatrollednotify": "Ova izmjena na stranici „$1“ je označena kao pregledana.", + "markedaspatrollednotify": "Ova izmjena na stranici $1 označena je kao patrolirana.", "markedaspatrollederrornotify": "Označavanje stranice pregledanom nije uspjelo.", "patrol-log-page": "Zapisnik patroliranja", "patrol-log-header": "Ovo je zapisnik patroliranih izmjena.", - "log-show-hide-patrol": "$1 zapis patroliranja", + "log-show-hide-patrol": "$1 zapisnik patroliranja", "log-show-hide-tag": "$1 zapisnik oznaka", - "deletedrevision": "Obrisana stara revizija $1", + "confirm-markpatrolled-button": "U redu", + "confirm-markpatrolled-top": "Označiti izmjenu $3 stranice $2 patroliranom?", + "deletedrevision": "Obrisana stara izmjena $1", "filedeleteerror-short": "GreÅ¡ka pri brisanju datoteke: $1", "filedeleteerror-long": "Desile su se greÅ¡ke pri brisanju datoteke:\n\n$1", "filedelete-missing": "Datoteka \"$1\" ne može biti obrisana, jer ne postoji.", @@ -2488,7 +2653,7 @@ "previousdiff": "← Starija izmjena", "nextdiff": "Novija izmjena →", "mediawarning": "'''Upozorenje''': Ova datoteka sadrži loÅ¡ kod, njegovim izvrÅ¡avanjem možete da ugrozite VaÅ¡ sistem.", - "imagemaxsize": "Ograničenje veličine slike:<br />''(za stranice opisa datoteke)''", + "imagemaxsize": "Ograničenje veličine slike:<br /><em>(za stranice opisa datoteke)</em>", "thumbsize": "Veličina umanjenog prikaza:", "widthheightpage": "$1 × $2, $3 {{PLURAL:$3|stranica|stranice|stranica}}", "file-info": "veličina datoteke: $1, MIME tip: $2", @@ -2511,12 +2676,14 @@ "file-no-thumb-animation": "'''Napomena: Zbog tehničkih ograničenja minijature ove datoteke neće biti animirane.'''", "file-no-thumb-animation-gif": "'''Napomena: Zbog tehničkih ograničenja, minijature GIF slika visoke rezolucije kao Å¡to je ova neće biti animirane.'''", "newimages": "Galerija novih slika", - "imagelisttext": "Ispod je spisak od '''$1''' {{PLURAL:$1|datoteke|datoteke|datoteka}} poredanih $2.", + "imagelisttext": "Ispod je spisak od <strong>$1</strong> {{PLURAL:$1|datoteke|datoteke|datoteka}} poredanih $2.", "newimages-summary": "Ova posebna stranica prikazuje nedavno postavljene datoteke.", "newimages-legend": "Filter", "newimages-label": "Ime datoteke (ili dio imena):", "newimages-showbots": "Pokaži datoteke koje su poslali botovi", + "newimages-hidepatrolled": "Sakrij patrolirana postavljanja", "noimages": "Nema niÅ¡ta.", + "gallery-slideshow-toggle": "Uključi/isključi sličice", "ilsubmit": "Traži", "bydate": "po datumu", "sp-newimages-showfrom": "Prikaz novih datoteka počev od $2, $1", @@ -2543,8 +2710,8 @@ "bad_image_list": "Koristi se sljedeći format:\n\nRazmatraju se samo stavke u spisku (linije koje počinju sa *).\nPrvi link u liniji mora biti povezan sa loÅ¡om slikom.\nSvi drugi linkovi u istoj liniji se smatraju izuzecima, npr. kod stranica gdje se slike pojavljuju ''inline''.", "metadata": "Metapodaci", "metadata-help": "Ova datoteka sadržava dodatne podatke koje je vjerovatno dodala digitalna kamera ili skener u procesu snimanja, odnosno digitalizacije. Ako je datoteka mijenjana, podaci možda nisu u skladu sa stvarnim stanjem.", - "metadata-expand": "Pokaži sve detalje", - "metadata-collapse": "Sakrij dodatne podatke", + "metadata-expand": "Prikaži detalje", + "metadata-collapse": "Sakrij detalje", "metadata-fields": "Polja metapodataka slika su prikazani ispod slike će biti uključeni u prikaz stranice slike kada je sakrivena tabela metapodataka. U suprotnom će biti sakrivena po postavkama.\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": "Å irina", "exif-imagelength": "Visina", @@ -2595,8 +2762,8 @@ "exif-spectralsensitivity": "Spektralna osjetljivost", "exif-isospeedratings": "Rejting ISO brzine", "exif-shutterspeedvalue": "Brzina APEX okidača", - "exif-aperturevalue": "APEX otvor", - "exif-brightnessvalue": "APEX osvijetljenost", + "exif-aperturevalue": "Otvor blende", + "exif-brightnessvalue": "Osvijetljenost", "exif-exposurebiasvalue": "Kompozicija ekspozicije", "exif-maxaperturevalue": "Najveći broj otvora blende", "exif-subjectdistance": "Udaljenost objekta", @@ -2633,7 +2800,7 @@ "exif-gpslongituderef": "Istočna ili zapadna dužina", "exif-gpslongitude": "Dužina", "exif-gpsaltituderef": "Referenca visine", - "exif-gpsaltitude": "Nadmorska visina", + "exif-gpsaltitude": "Visina", "exif-gpstimestamp": "GPS vrijeme (atomski sat)", "exif-gpssatellites": "Sateliti koriÅ¡teni pri mjerenju", "exif-gpsstatus": "Status prijemnika", @@ -2892,17 +3059,17 @@ "monthsall": "sve", "confirmemail": "Potvrdite adresu e-poÅ¡te", "confirmemail_noemail": "Niste unijeli tačnu e-mail adresu u VaÅ¡e [[Special:Preferences|korisničke postavke]].", - "confirmemail_text": "Ova viki zahtjeva da potvrdite adresu VaÅ¡e e-poÅ¡te prije nego Å¡to koristite mogućnosti e-poÅ¡te. Aktivirajte dugme ispod kako bi ste poslali poÅ¡tu za potvrdu na VaÅ¡u adresu. PoÅ¡ta uključuje link koji sadrži kod; učitajte link u VaÅ¡ preglednik da bi ste potvrdili da je adresa VaÅ¡e e-poÅ¡te validna.", - "confirmemail_pending": "Konfirmacioni kod Vam je već poslan putem e-maila;\nako ste nedavno otvorili VaÅ¡ račun, trebali bi pričekati par minuta da poslana poÅ¡ta stigne, prije nego Å¡to ponovno zahtijevate novi kod.", + "confirmemail_text": "{{SITENAME}} zahtijeva da potvrdite adresu VaÅ¡e e-poÅ¡te prije nego Å¡to koristite mogućnosti e-poÅ¡te.\nAktivirajte dugme ispod kako biste poslali poÅ¡tu za potvrdu na VaÅ¡u adresu.\nPoÅ¡ta uključuje link koji sadrži kod;\nučitajte link u VaÅ¡ preglednik da biste potvrdili da je adresa VaÅ¡e e-poÅ¡te validna.", + "confirmemail_pending": "Potvrdni kod Vam je već poslan e-poÅ¡tom;\nako ste nedavno otvorili račun, trebali biste pričekati nekoliko minuta da poslana poÅ¡ta stigne, prije nego Å¡to ponovo zahtijevate novi kod.", "confirmemail_send": "PoÅ¡aljite kod za potvrdu", "confirmemail_sent": "E-poÅ¡ta za potvrđivanje poslata.", "confirmemail_oncreate": "Kod za potvrđivanje Vam je poslat na VaÅ¡u e-mail adresu.\nTaj kod nije neophodan za prijavljivanje, ali Vam ne potreban kako bi ste omogućili funkcije wikija zasnovane na e-mailu.", - "confirmemail_sendfailed": "{{SITENAME}} Vam ne može poslati poÅ¡tu za potvrđivanje. Provjerite adresu zbog nepravilnih karaktera.\n\nPovratna poÅ¡ta: $1", + "confirmemail_sendfailed": "{{SITENAME}} Vam ne može poslati potvrdnu e-poruku.\nProvjerite sadrži li adresa nedopuÅ¡tene znakove.\n\nGreÅ¡ka: $1", "confirmemail_invalid": "Netačan kod za potvrdu. Moguće je da je kod istekao.", "confirmemail_needlogin": "Morate biti $1 da biste potvrdili adresu vaÅ¡e e-poÅ¡te.", "confirmemail_success": "Adresa vaÅ¡e e-poÅ¡te je potvrđena. Možete sad da se prijavite i uživate u viki.", "confirmemail_loggedin": "Adresa VaÅ¡e e-poÅ¡te je potvrđena.", - "confirmemail_subject": "{{SITENAME}} – adresa e-poÅ¡te za potvrđivanje", + "confirmemail_subject": "Potvrda adrese e-poÅ¡te na {{GRAMMAR:dativ|{{SITENAME}}}}", "confirmemail_body": "Neko, vjerovatno Vi, je sa IP adrese $1 registrovao nalog \"$2\" sa ovom adresom e-poÅ¡te na {{SITENAME}}.\n\nDa potvrdite da ovaj nalog stvarno pripada vama i da aktivirate mogućnost e-poÅ¡te na {{SITENAME}}, otvorite ovaj link u vaÅ¡em pregledniku:\n\n$3\n\nAko ovo niste vi, pratite ovaj link da prekinete prijavu:\n$5\n\nOvaj kod za potvrdu će isteći u $4.", "confirmemail_body_changed": "Neko, vjerovatno Vi, je sa IP adrese $1\nje promijenio adresu e-poÅ¡te računa \"$2\" na ovu adresu za {{SITENAME}}.\n\nDa potvrdite da ovaj nalog stvarno pripada Vama i da reaktivirate mogućnosti e-poÅ¡te na {{SITENAME}}, otvorite ovaj link u VaÅ¡em pregledniku:\n\n$3\n\nAko ovaj račun *ne* pripada Vama, pratite ovaj link da prekinete odobravanje adrese e-poÅ¡te:\n\n$5\n\nOvaj kod za potvrdu će isteći u $4.", "confirmemail_body_set": "Neko, vjerovatno Vi, je sa IP adrese $1\npostavio adresu e-poÅ¡te računa \"$2\" na ovu adresu za {{SITENAME}}.\n\nDa potvrdite da ovaj račun stvarno pripada Vama i da aktivirate mogućnosti e-poÅ¡te na {{SITENAME}}, otvorite ovaj link u VaÅ¡em pregledniku:\n\n$3\n\nAko ovaj račun *ne* pripada Vama, pratite ovaj link da prekinete odobravanje adrese e-poÅ¡te:\n\n$5\n\nOvaj kôd za potvrdu će isteći u $4.", @@ -2912,18 +3079,20 @@ "scarytranscludefailed": "[NeuspjeÅ¡no preusmjerenje Å¡ablona na $1]", "scarytranscludefailed-httpstatus": "[Preuzimanje Å¡ablona nije uspjelo za $1: HTTP $2]", "scarytranscludetoolong": "[URL je predugačak]", - "deletedwhileediting": "'''Upozorenje''': Ova stranica je obrisana prije nego Å¡to ste počeli uređivati!", - "confirmrecreate": "Korisnik [[User:$1|$1]] ([[User talk:$1|razgovor]]) obrisao je ovaj članak poÅ¡to ste počeli uređivanje s razlogom:\n: ''$2''\n\nMolimo Vas da potvrdite da stvarno želite ponovo napraviti ovaj članak.", - "confirmrecreate-noreason": "Korisnik [[User:$1|$1]] ([[User talk:$1|razgovor]]) obrisao je ovaj članak nakon Å¡to ste ga počeli uređivati. Molimo Vas da potvrdite da stvarno želite ponovo napraviti ovaj članak.", + "deletedwhileediting": "<strong>Upozorenje:</strong> Ova stranica je obrisana prije nego Å¡to ste počeli uređivati!", + "confirmrecreate": "{{GENDER:$1|Korisnik|Korisnica}} [[User:$1|$1]] ([[User talk:$1|razgovor]]) {{GENDER:$1|obrisao|obrisala}} je ovu stranicu nakon Å¡to ste je počeli uređivati iz sljedećeg razloga:\n: <em>$2</em>\n\nPotvrdite da stvarno želite ponovo napraviti ovu stranicu.", + "confirmrecreate-noreason": "{{GENDER:$1|Korisnik|Korisnica}} [[User:$1|$1]] ([[User talk:$1|razgovor]]) {{GENDER:$1|obrisao|obrisala}} je ovu stranicu nakon Å¡to ste je počeli uređivati. Potvrdite da stvarno želite ponovo napraviti ovu stranicu.", "recreate": "Ponovno napravi", "unit-pixel": "px", "confirm_purge_button": "U redu", "confirm-purge-top": "Da li želite obrisati keÅ¡ ove stranice?", "confirm-purge-bottom": "Ispražnjava keÅ¡ stranice i prikazuje najsvježiju verziju.", "confirm-watch-button": "U redu", - "confirm-watch-top": "Dodajte ovu stranu na VaÅ¡ spisak praćenih članaka", + "confirm-watch-top": "Dodati ovu stranicu na spisak praćenja?", "confirm-unwatch-button": "U redu", - "confirm-unwatch-top": "IzbriÅ¡ite ovu stranu sa VaÅ¡eg spiska praćenih članaka", + "confirm-unwatch-top": "Ukloniti ovu stranicu sa spiska praćenja?", + "confirm-rollback-button": "U redu", + "confirm-rollback-top": "Ukloniti izmjene na ovoj stranici?", "quotation-marks": "\"$1\"", "imgmultipageprev": "← prethodna stranica", "imgmultipagenext": "slijedeća stranica →", @@ -2947,7 +3116,7 @@ "autoredircomment": "Preusmjereno na [[$1]]", "autosumm-new": "Nova stranica: $1", "autosumm-newblank": "Napravljena prazna stranica", - "size-bytes": "$1 B", + "size-bytes": "$1 {{PLURAL:$1|bajt|bajta|bajtova}}", "size-kilobytes": "$1 KB", "size-megabytes": "$1 MB", "size-gigabytes": "$1 GB", @@ -3032,8 +3201,10 @@ "hebrew-calendar-m12-gen": "Elul", "signature": "[[{{ns:user}}:$1|$2]] ([[{{ns:user_talk}}:$1|razgovor]])", "timezone-utc": "KSV", + "timezone-local": "Lokalno", "duplicate-defaultsort": "Upozorenje: Postavljeni ključ sortiranja \"$2\" zamjenjuje raniji ključ \"$1\".", "duplicate-displaytitle": "<strong>Upozorenje:</strong> Prikazivani naslov \"$2\" poniÅ¡tava prethodni naslov \"$1\".", + "restricted-displaytitle": "<strong>Upozorenje:</strong> Naslov za prikaz \"$1\" zanemaren je jer ne odgovara stvarnom naslovu stranice.", "invalid-indicator-name": "<strong>GreÅ¡ka:</strong> <code>Imena</code> pokazatelja stanja strance ne smiju biti prazna.", "version": "Verzija", "version-extensions": "Instalirana proÅ¡irenja", @@ -3080,7 +3251,7 @@ "version-libraries-license": "Licenca", "version-libraries-description": "Opis", "version-libraries-authors": "Autori", - "redirect": "Preusmjerenje na datoteku, korisnika, stranicu ili oznaku izmjene", + "redirect": "Preusmjerenje na datoteku, korisnika, stranicu, izmjenu ili zapisnik", "redirect-summary": "Ova posebna stranica preusmjerava na datoteku (datog imena), stranicu (date oznake izmjene) ili korisničku stranicu (datog numeričkog identifikatora korisnika). Oznake se koriste na sljedeći način: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/page/64308]], [[{{#Special:Redirect}}/revision/328429]] ili [[{{#Special:Redirect}}/user/101]].", "redirect-submit": "Idi", "redirect-lookup": "Tip vrijednosti:", @@ -3121,6 +3292,7 @@ "tag-filter": "Filter [[Special:Tags|oznaka]]:", "tag-filter-submit": "Filter", "tag-list-wrapper": "([[Special:Tags|{{PLURAL:$1|oznaka|oznake}}]]: $2)", + "tag-mw-contentmodelchange": "promjena modela sadržaja", "tags-title": "Oznake", "tags-intro": "Ova stranica prikazuje spisak oznaka koje softver može staviti na svaku izmjenu i njihovo značenje.", "tags-tag": "Naziv oznake", @@ -3136,11 +3308,12 @@ "tags-source-manual": "Ručno postavili korisnici ili botovi", "tags-source-none": "ViÅ¡e se ne koristi", "tags-edit": "uređivanje", - "tags-delete": "izbriÅ¡i", + "tags-delete": "obriÅ¡i", "tags-activate": "aktiviraj", "tags-deactivate": "dekativiraj", "tags-hitcount": "$1 {{PLURAL:$1|izmjena|izmjene|izmjena}}", "tags-manage-no-permission": "Nemate pravo upravljati promjenama oznaka.", + "tags-manage-blocked": "Ne možete mijenjati oznake za promjenu dok {{GENDER:$1|ste}} blokirani.", "tags-create-heading": "Napravi novu oznaku", "tags-create-explanation": "Predoređeno je da će korisnici i botovi moći koristiti novonapravljene oznake.", "tags-create-tag-name": "Naziv oznake:", @@ -3152,7 +3325,7 @@ "tags-create-already-exists": "Oznaka \"$1\" već postoji.", "tags-create-warnings-above": "{{PLURAL:$2|Dogodila se sljedeća greÅ¡ka|Dogodile su se sljedeće greÅ¡ke}} pri stvaranju oznake \"$1\":", "tags-create-warnings-below": "Želite li nastaviti stvaranje oznake?", - "tags-delete-title": "IzbriÅ¡i oznaku", + "tags-delete-title": "Brisanje oznaka", "tags-delete-explanation-initial": "BriÅ¡ete oznaku \"$1\" iz baze podataka.", "tags-delete-explanation-in-use": "Bit će obrisana sa {{PLURAL:$2|$2 verzije ili unosa u zapisniku|svih $2 verzija i/ili unosa u zapisniku}} na kojima se trenutno koristi.", "tags-delete-explanation-warning": "Ova radnja se <strong>ne može povratiti</strong> te se <strong>ne može poniÅ¡titi</strong>. Ovo ne mogu uraditi čak ni administratori baze podataka. Budite sigurni da je ovo oznaka koju želite obrisati.", @@ -3162,7 +3335,8 @@ "tags-delete-not-allowed": "Oznake koje su definirane proÅ¡irenjem se ne mogu obrisati ukoliko to proÅ¡irenje isključivo ne dopuÅ¡ta.", "tags-delete-not-found": "Oznaka \"$1\" ne postoji.", "tags-delete-too-many-uses": "Oznaka \"$1\" je primjenjena na viÅ¡e od {{PLURAL:$2|revizija|revizijǎ}}, Å¡to znači da se ne može obrisati.", - "tags-delete-warnings-after-delete": "Oznaka \"$1\" uspjeÅ¡no je obrisana. Međutim, doÅ¡lo je do {{PLURAL:$2|sljedećeg upozorenja|sljedećih upozorenja}}:", + "tags-delete-warnings-after-delete": "Oznaka \"$1\" je obrisana. Međutim, doÅ¡lo je do {{PLURAL:$2|sljedećeg upozorenja|sljedećih upozorenja}}:", + "tags-delete-no-permission": "Nemate dopuÅ¡tenje da briÅ¡ete oznake za promjenu.", "tags-activate-title": "Aktiviraj oznaku", "tags-activate-question": "Aktivirate oznaku \"$1\".", "tags-activate-reason": "Razlog:", @@ -3175,16 +3349,16 @@ "tags-deactivate-not-allowed": "Nije moguće deaktivirati oznaku \"$1\".", "tags-deactivate-submit": "Deaktiviraj", "tags-apply-no-permission": "Nemate dopuÅ¡tenja da dodate izmjenske oznake zajedno s vaÅ¡im promjenama.", - "tags-apply-not-allowed-one": "Oznaka \"$1\" se ne može ručno dodati.", + "tags-apply-not-allowed-one": "Nije dozvoljeno da se oznaka \"$1\" ručno dodaje.", "tags-apply-not-allowed-multi": "{{PLURAL:$2|Sljedeća oznaka ne dozvoljava da se ručno doda|Sljedeće oznake ne dozvoljavaju da se ručno dodaju}}: $1", "tags-update-no-permission": "Nemate dopuÅ¡tenje da dodate ili uklonite izmjenske oznake sa zasebnih verzija ili zapisničkih unosa.", - "tags-update-add-not-allowed-one": "Oznaka \"$1\" se ne može ručno dodati.", + "tags-update-add-not-allowed-one": "Nije dozvoljeno da se oznaka \"$1\" ručno dodaje.", "tags-update-add-not-allowed-multi": "{{PLURAL:$2|Sljedeća oznaka ne dozvoljava da se ručno doda|Sljedeće oznake ne dozvoljavaju da se ručno dodaju}}: $1", "tags-update-remove-not-allowed-one": "Oznaka \"$1\" se ne može ručno ukloniti.", "tags-update-remove-not-allowed-multi": "{{PLURAL:$2|Sljedeća oznaka ne dozvoljava da se ručno ukloni|Sljedeće oznake ne dozvoljavaju da se ručno uklone}}: $1", "tags-edit-title": "Uredi oznake", "tags-edit-manage-link": "Upravljaj oznakama", - "tags-edit-revision-selected": "{{PLURAL:$1|Izabrana verzija|Izabrane verzije}} od [[:$2]]:", + "tags-edit-revision-selected": "{{PLURAL:$1|Izabrana verzija|Izabrane verzije}} stranice [[:$2]]:", "tags-edit-logentry-selected": "{{PLURAL:$1|Izabran unos zapisnika|Izabrani unosi zapisnika}}:", "tags-edit-revision-legend": "Dodaj ili ukloni oznake sa {{PLURAL:$1|ove verzije|svih $1 verzija}}", "tags-edit-logentry-legend": "Dodaj ili ukloni oznake sa {{PLURAL:$1|ove zapisničke stavke|svih $1 zapisničkih stavki}}", @@ -3236,6 +3410,18 @@ "htmlform-cloner-create": "Dodaj joÅ¡", "htmlform-cloner-delete": "Ukloni", "htmlform-cloner-required": "Potrebna je barem jedna vrijednost.", + "htmlform-date-placeholder": "GGGG-MM-DD", + "htmlform-time-placeholder": "HH:MM:SS", + "htmlform-datetime-placeholder": "GGGG-MM-DD HH:MM:SS", + "htmlform-date-invalid": "Ne mogu prepoznati uneseni format datuma. Koristite format GGGG-MM-DD.", + "htmlform-time-invalid": "Ne mogu prepoznati uneseni format vremena. Koristite format GGGG-MM-DD.", + "htmlform-datetime-invalid": "Ne mogu prepoznati uneseni format za datum i vrijeme. Koristite format GGGG-MM-DD HH:MM:SS.", + "htmlform-date-toolow": "Navedena vrijednost je prije najranijeg dopuÅ¡tenog datuma – $1.", + "htmlform-date-toohigh": "Navedena vrijednost je poslije krajnjeg dopuÅ¡tenog datuma – $1.", + "htmlform-time-toolow": "Navedena vrijednost je prije najranijeg dopuÅ¡tenog vremena – $1.", + "htmlform-time-toohigh": "Navedena vrijednost je poslije krajnjeg dopuÅ¡tenog vremena – $1.", + "htmlform-datetime-toolow": "Navedena vrijednost je prije najranijeg dopuÅ¡tenog datuma i vremena – $1.", + "htmlform-datetime-toohigh": "Navedena vrijednost je poslije krajnjeg dopuÅ¡tenog datuma i vremena – $1.", "htmlform-title-badnamespace": "[[:$1]] nije u imenskom prostoru \"{{ns:$2}}\".", "htmlform-title-not-creatable": "Stranica \"$1\" se ne može napraviti", "htmlform-title-not-exists": "$1 ne postoji.", @@ -3261,13 +3447,15 @@ "revdelete-uname-unhid": "korisničko ime je otkriveno", "revdelete-restricted": "primijenjena ograničenja za administratore", "revdelete-unrestricted": "uklonjena ograničenja za administratore", - "logentry-block-block": "$1 {{GENDER:$2|blokirao|blokirala}} je {{GENDER:$4|$3}} sa vremenom isticanja blokade od $5 $6", + "logentry-block-block": "$1 {{GENDER:$2|blokirao|blokirala}} je {{GENDER:$4|$3}} u trajanju od $5 $6", "logentry-block-unblock": "$1 {{GENDER:$2|deblokirao|deblokirala}} je {{GENDER:$4|$3}}", "logentry-block-reblock": "$1 {{GENDER:$2|promijenio|promijenila}} je postavke za blokiranje {{GENDER:$4|korisnika|korisnice}} {{GENDER:$4|$3}} u trajanju od $5 $6", "logentry-suppress-block": "$1 {{GENDER:$2|blokirao|blokirala}} je {{GENDER:$4|$3}} sa vremenom isticanja blokade od $5 $6", "logentry-suppress-reblock": "$1 {{GENDER:$2|promijenio|promijenila}} je postavke za blokiranje {{GENDER:$4|korisnika|korisnice}} {{GENDER:$4|$3}} u trajanju od $5 $6", "logentry-import-upload": "$1 {{GENDER:$2|uvezao|uvezla}} je $3 postavljanjem datoteke", + "logentry-import-upload-details": "$1 {{GENDER:$2|uvezao|uvezla}} je $3 postavljanjem datoteke ($4 {{PLURAL:$4|izmjena|izmjene|izmjena}})", "logentry-import-interwiki": "$1 {{GENDER:$2|uvezao|uvezla}} je $3 s drugog wikija", + "logentry-import-interwiki-details": "$1 {{GENDER:$2|uvezao|uvezla}} je $3 sa $5 ($4 {{PLURAL:$4|izmjena|izmjene|izmjena}})", "logentry-merge-merge": "$1 {{GENDER:$2|spojio|spojila}} je $3 u $4 (sve do izmjene $5)", "logentry-move-move": "$1 {{GENDER:$2|premjestio|premjestila}} je stranicu $3 na $4", "logentry-move-move-noredirect": "$1 {{GENDER:$2|premjestio|premjestila}} je stranicu $3 na $4 bez ostavljanja preusmjerenja", @@ -3286,16 +3474,16 @@ "logentry-protect-protect-cascade": "$1 {{GENDER:$2|zaÅ¡titio|zaÅ¡titila}} je $3 $4 [prenosiva zaÅ¡tita]", "logentry-protect-modify": "$1 {{GENDER:$2|promijenio|promijenila}} je stepen zaÅ¡tite za $3 $4", "logentry-protect-modify-cascade": "$1 {{GENDER:$2|promijenio|promijenila}} je nivo zaÅ¡tite za $3 $4 [prenosiva zaÅ¡tita]", - "logentry-rights-rights": "$1 {{GENDER:$2|promijenio|promijenila}} je članstvo grupe za $3 iz $4 u $5", + "logentry-rights-rights": "$1 {{GENDER:$2|promijenio|promijenila}} je članstvo grupe {{GENDER:$6|korisnika|korisnice}} $3 iz $4 u $5", "logentry-rights-rights-legacy": "$1 je {{GENDER:$2|promijenio|promijenila|promijenio}} članstvo grupe za $3", "logentry-rights-autopromote": "$1 {{GENDER:$1|je automatski promijenjeno članstvo|su automatski promijenjena članstva}} iz $4 u $5", "logentry-upload-upload": "$1 {{GENDER:$2|postavio|postavila}} je $3", "logentry-upload-overwrite": "$1 {{GENDER:$2|postavio|postavila}} је novu verziju $3", "logentry-upload-revert": "$1 {{GENDER:$2|postavio|postavila}} је $3", "log-name-managetags": "Zapisnik upravljanja oznaka", - "log-description-managetags": "Ovaj zapisnik sadrži spisak izmjena u vezi [[Special:Tags|oznaka]]. Zapisnik sadrži samo radnje izvrÅ¡ene od strane administratora; unosi za oznake napravljene ili obrisane od strane wiki softvera se ne nalaze u ovom zapisniku.", + "log-description-managetags": "Ovaj zapisnik sadrži spisak izmjena u vezi s [[Special:Tags|oznakama]]. Zapisnik sadrži samo radnje koje su ručno izvrÅ¡ili administratori; unosi za oznake koje je napravio ili obrisao wiki softver ne nalaze se u ovom zapisniku.", "logentry-managetags-create": "$1 {{GENDER:$2|napravio|napravila}} je oznaku \"$4\"", - "logentry-managetags-delete": "$1 {{GENDER:$2|obrisao|obrisala}} je oznaku \"$4\" (uklonjena je iz $5 {{PLURAL:$5|izmjene ili zapisnika|izmjena i/ili zapisnikǎ}})", + "logentry-managetags-delete": "$1 {{GENDER:$2|obrisao|obrisala}} je oznaku \"$4\" (uklonjena je iz $5 {{PLURAL:$5|izmjene ili zapisnika|izmjena i/ili zapisnika}})", "logentry-managetags-activate": "$1 {{GENDER:$2|aktivirao|aktivirala}} je oznaku \"$4\" za upotrebu od strane korisnika i botova", "logentry-managetags-deactivate": "$1 {{GENDER:$2|deaktivirao|deaktivirala}} je oznaku \"$4\" za upotrebu od strane korisnika i botova", "log-name-tag": "Zapisnik oznaka", @@ -3307,7 +3495,7 @@ "logentry-tag-update-revision": "$1 {{GENDER:$2|ažurirao|ažurirala}} je oznake na verziji $4 strane $3 ({{PLURAL:$7|dodano}} $6; {{PLURAL:$9|uklonjeno}} $8)", "logentry-tag-update-logentry": "$1 {{GENDER:$2|ažurirao|ažurirala}} je oznake na zapisničkom unosu $5 strane $3 ({{PLURAL:$7|dodano}} $6; {{PLURAL:$9|uklonjeno}} $8)", "rightsnone": "(nema)", - "revdelete-summary": "sažetak", + "rightslogentry-temporary-group": "$1 (privremeno, do $2)", "feedback-adding": "Dodajem povratne informacije na stranicu...", "feedback-back": "Nazad", "feedback-bugcheck": "Odlično! Molimo provjerite da se ne radi o nekom [$1 poznatom \"bugu\"].", @@ -3332,52 +3520,12 @@ "feedback-useragent": "Korisnički agent:", "searchsuggest-search": "Pretraži {{GRAMMAR:akuzativ|{{SITENAME}}}}", "searchsuggest-containing": "sadrži...", - "api-error-badaccess-groups": "Nemate ovlasti da postavljate datoteke na ovoj wiki.", "api-error-badtoken": "UnutraÅ¡nja greÅ¡ka: token nije ispravan.", - "api-error-copyuploaddisabled": "Postavljanja putem URL-a su onemogućena na ovom serveru.", - "api-error-duplicate": "Već postoji {{PLURAL:$1|druga datoteka|druge datoteke}} na ovoj stranici s istim sadržajem.", - "api-error-duplicate-archive": "{{PLURAL:$1|Postojala je druga datoteka|Postojale su neke druge datoteke}} na sajtu sa istim sadržajem, ali {{PLURAL:$1|je obrisana|su obrisane}}.", - "api-error-empty-file": "Datoteka koju ste poslali je bila prazna.", "api-error-emptypage": "Stvaranje novih praznih stranica nije dozvoljeno.", - "api-error-fetchfileerror": "UnutraÅ¡nja greÅ¡ka: pojavio se neki problem pri dobijanju podataka o datoteci.", - "api-error-fileexists-forbidden": "Datoteka s imenom \"$1\" već postoji i ne može biti zamijenjena.", - "api-error-fileexists-shared-forbidden": "Datoteka s imenom \"$1\" već postoji u zajedničkom spremiÅ¡tu i ne može biti prepisana.", - "api-error-file-too-large": "Datoteka koju ste poslali je bila prevelika.", - "api-error-filename-tooshort": "Ime datoteke je prekratko.", - "api-error-filetype-banned": "Ova vrsta datoteke je zabranjena.", - "api-error-filetype-banned-type": "$1 {{PLURAL:$4|nije dopuÅ¡teni vrsta datoteke|su nedopuÅ¡teni vrste datoteke|su nedopuÅ¡teni vrste datoteka}}. {{PLURAL:$3|DopuÅ¡tena vrsta datoteke je|DopuÅ¡tene vrste datoteka su}} $2.", - "api-error-filetype-missing": "Datoteci nedostaje nastavak.", - "api-error-hookaborted": "Izmjena koji ste pokuÅ¡ali načiniti je obustavljena preko kuke proÅ¡irenja.", - "api-error-http": "UnutraÅ¡nja greÅ¡ka: ne može se spojiti na server.", - "api-error-illegal-filename": "Ime datoteke nije dopuÅ¡teno.", - "api-error-internal-error": "UnutraÅ¡nja greÅ¡ka: pojavio se neki problem sa obradom vaÅ¡eg postavljanja na wiki.", - "api-error-invalid-file-key": "UnutraÅ¡nja greÅ¡ka: datoteka nije pronađena u privremenom skladiÅ¡tu.", - "api-error-missingparam": "UnutraÅ¡nja greÅ¡ka: nedostaju parametri u zahtjevu.", - "api-error-missingresult": "UnutraÅ¡nja greÅ¡ka: ne može se otkriti da li je kopiranje uspjelo.", - "api-error-mustbeloggedin": "Morate biti prijavljeni da biste postavljali datoteke.", - "api-error-mustbeposted": "Postoji greÅ¡ka u ovom softveru; ne koristi pravilan HTTP metod.", - "api-error-noimageinfo": "Postavljanje je uspjelo, ali server nam nije dao nikakvu informaciju o datoteci.", - "api-error-nomodule": "UnutraÅ¡nja greÅ¡ka: nije postavljen modul za postavljanje.", - "api-error-ok-but-empty": "UnutraÅ¡nja greÅ¡ka: nema odgovora od servera.", - "api-error-overwrite": "Pisanje preko postojeće datoteke nije dopuÅ¡teno.", - "api-error-stashfailed": "UnutraÅ¡nja greÅ¡ka: server nije mogao da spremi privremenu datoteku.", "api-error-publishfailed": "UnutraÅ¡nja greÅ¡ka: Server nije uspio objaviti privremenu datoteku.", - "api-error-stasherror": "Dogodila se greÅ¡ka pri postavljaju datoteke u skladiÅ¡te.", - "api-error-stashedfilenotfound": "SkladiÅ¡tena datoteka nije pronađena pri pokuÅ¡aju postavljanja iste iz skladiÅ¡ta.", - "api-error-stashpathinvalid": "Putanja na kojoj je trebala biti skladiÅ¡tena datoteka je neispravna.", - "api-error-stashfilestorage": "Dogodila se greÅ¡ka pri postavljaju datoteke u skladiÅ¡te.", - "api-error-stashzerolength": "Server nije mogao skladiÅ¡titi datoteku jer joj je veličina iznosila 0.", - "api-error-stashnotloggedin": "Morate biti prijavljeni kako biste sačuvali datoteke u skladiÅ¡te postavljanja.", - "api-error-stashwrongowner": "Datoteka kojoj ste pokuÅ¡ali pristupiti u skladiÅ¡tu ne pripada vama.", - "api-error-stashnosuchfilekey": "Datotečni ključ kome ste pokuÅ¡ali pristupiti u skladiÅ¡tu ne pripada vama.", - "api-error-timeout": "Server nije odgovorio unutar očekivanog vremena.", - "api-error-unclassified": "Desila se nepoznata greÅ¡ka", - "api-error-unknown-code": "Nepoznata greÅ¡ka: \"$1\"", - "api-error-unknown-error": "UnutraÅ¡nja greÅ¡ka: desila se neka greÅ¡ka pri pokuÅ¡aju postavljanja vaÅ¡e datoteke.", - "api-error-unknown-warning": "Nepoznato upozorenje: $1", + "api-error-stashfailed": "UnutraÅ¡nja greÅ¡ka: server nije mogao da spremi privremenu datoteku.", + "api-error-unknown-warning": "Nepoznato upozorenje: \"$1\".", "api-error-unknownerror": "Nepoznata greÅ¡ka: \"$1\"", - "api-error-uploaddisabled": "Postavljanje je onemogućeno na ovoj wiki.", - "api-error-verification-error": "Ova datoteka je možda oÅ¡tećenja ili ima pogreÅ¡an nastavak.", "duration-seconds": "$1 {{PLURAL:$1|sekunda|sekunde}}", "duration-minutes": "$1 {{PLURAL:$1|minut|minute|minuta}}", "duration-hours": "$1 {{PLURAL:$1|sat|sata|sati}}", @@ -3416,11 +3564,17 @@ "expand_templates_preview": "Pregled", "expand_templates_preview_fail_html": "<em>PoÅ¡to stranica {{SITENAME}} ima uključen sirov HTML prikaz, te je bilo gubitka u podacima sesije, pregled je sakriven kao mjera predostrožnosti protiv JavaScript napada.</em>\n\n<strong>Ako je ovo ispravan pokuÅ¡aj pretpregleda, molim da ponovo pokuÅ¡ate.</strong>\nAko i dalje ne bude radilo, pokuÅ¡ajte se [[Special:UserLogout|odjaviti]], pa ponovo prijaviti.", "expand_templates_preview_fail_html_anon": "<em>PoÅ¡to stranica {{SITENAME}} ima uključen sirov HTML prikaz, a vi se niste prijavili, pregled je sakriven kao mjera predostrožnosti protiv JavaScript napada.</em>\n\n<strong>Ako je ovo ispravan pokuÅ¡aj pretpregleda, molim da se [[Special:UserLogin|prijavite]] i pokuÅ¡ate ponovo.</strong>", - "pagelanguage": "Odabir jezika stranice", + "pagelanguage": "Promijeni jezik stranice", "pagelang-name": "Stranica", "pagelang-language": "Jezik", "pagelang-use-default": "Koristi podrazumijevani jezik", "pagelang-select-lang": "Izaberi jezik", + "pagelang-reason": "Razlog", + "pagelang-submit": "PoÅ¡alji", + "pagelang-nonexistent-page": "Stranica $1 ne postoji.", + "pagelang-unchanged-language": "Stranica $1 već je postavljena na jezik $2.", + "pagelang-unchanged-language-default": "Stranica $1 već je postavljena na predodređeni jezik sadržaja ovog wikija.", + "pagelang-db-failed": "Baza podataka nije uspjela promijeniti jezik stranice.", "right-pagelang": "promjena jezika stranice", "action-pagelang": "promijenite jezik stranice", "log-name-pagelang": "Zapisnik promjene jezika", @@ -3433,6 +3587,8 @@ "mediastatistics": "Statistika datoteka", "mediastatistics-summary": "Statistike o tipovima poslanih datoteka. Ovdje su uračunate samo najnovije verzije datoteka. Stare ili obrisane verzije nisu uračunate.", "mediastatistics-nbytes": "{{PLURAL:$1|$1 bajt|$1 bajt|$1 bajtova}} ($2; $3%)", + "mediastatistics-bytespertype": "Ukupna veličina datoteke ovog odlomka: {{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-table-mimetype": "MIME tip", "mediastatistics-table-extensions": "Moguća proÅ¡irenja", "mediastatistics-table-count": "Broj datoteka", @@ -3447,6 +3603,7 @@ "mediastatistics-header-text": "Tekstualno", "mediastatistics-header-executable": "IzvrÅ¡ni", "mediastatistics-header-archive": "Kompresovani formati", + "mediastatistics-header-total": "Sve datoteke", "json-warn-trailing-comma": "$1 {{PLURAL:$1|prateća tačka uklonjena je|pratećih tački uklonjeno je}} iz JSON-a", "json-error-unknown": "Dogodio se problem s JSON-om. GreÅ¡ka: $1", "json-error-depth": "Prekoračena je maksimalna dubina", @@ -3469,11 +3626,11 @@ "special-characters-group-arabicextended": "proÅ¡ireni arapski", "special-characters-group-persian": "Perzijski", "special-characters-group-hebrew": "hebrejski", - "special-characters-group-bangla": "bangladeÅ¡ki", + "special-characters-group-bangla": "bengalski", "special-characters-group-tamil": "tamilski", "special-characters-group-telugu": "telugu", "special-characters-group-sinhala": "sinhalski", - "special-characters-group-gujarati": "gujarati", + "special-characters-group-gujarati": "gudžarati", "special-characters-group-devanagari": "devanagari", "special-characters-group-thai": "tajlandski", "special-characters-group-lao": "laoski", @@ -3482,9 +3639,13 @@ "special-characters-title-emdash": "duga crta", "special-characters-title-minus": "minus", "mw-widgets-dateinput-no-date": "Nikakav datum nije izabran", + "mw-widgets-mediasearch-noresults": "Nema rezultata.", "mw-widgets-titleinput-description-new-page": "stranica joÅ¡ ne postoji", "mw-widgets-titleinput-description-redirect": "preusmjerava na $1", - "randomrootpage": "Slučajna root stranica", + "mw-widgets-categoryselector-add-category-placeholder": "Dodaj kategoriju...", + "mw-widgets-usersmultiselect-placeholder": "Dodaj viÅ¡e...", + "sessionmanager-tie": "Ne možete istovremeno koristiti nekoliko vrsta provjera autentičnosti: $1.", + "randomrootpage": "Slučajna korijenska stranica", "log-action-filter-block": "Vrsta blokiranja:", "log-action-filter-contentmodel": "Vrsta izmjene modela sadržaja:", "log-action-filter-delete": "Vrsta brisanja:", @@ -3495,6 +3656,7 @@ "log-action-filter-patrol": "Vrsta patroliranja:", "log-action-filter-protect": "Vrsta zaÅ¡tite:", "log-action-filter-rights": "Vrsta izmjene korisničkih prava:", + "log-action-filter-suppress": "Vrsta skrivanja:", "log-action-filter-upload": "Vrsta postavljanja:", "log-action-filter-all": "Sve", "log-action-filter-block-block": "Blokiranje", @@ -3503,6 +3665,7 @@ "log-action-filter-contentmodel-change": "Izmjena modela sadržaja", "log-action-filter-contentmodel-new": "Nova stranica s nestandardnim modelom sadržaja", "log-action-filter-delete-delete": "Brisanje stranice", + "log-action-filter-delete-delete_redir": "Prepisivanje preusmjerenja", "log-action-filter-delete-restore": "Vraćanje obrisane stranice", "log-action-filter-delete-event": "Brisanje unosa u zapisniku", "log-action-filter-delete-revision": "Brisanje izmjene", @@ -3526,6 +3689,43 @@ "log-action-filter-protect-move_prot": "PremjeÅ¡tanje zaÅ¡tite", "log-action-filter-rights-rights": "Ručna izmjena", "log-action-filter-rights-autopromote": "Automatska izmjena", + "log-action-filter-suppress-event": "Skrivanje unosa u zapisniku", + "log-action-filter-suppress-revision": "Skrivanje izmjene", + "log-action-filter-suppress-delete": "Skrivanje stranice", + "log-action-filter-suppress-block": "Skrivanje korisnika blokiranjem", + "log-action-filter-suppress-reblock": "Skrivanje korisnika ponovnim blokiranjem", "log-action-filter-upload-upload": "Nova datoteka", - "log-action-filter-upload-overwrite": "Izmjena postojeće datoteke" + "log-action-filter-upload-overwrite": "Izmjena postojeće datoteke", + "authmanager-create-disabled": "Onemogućeno pravljenje računa.", + "authmanager-create-from-login": "Popunite polja da biste napravili račun.", + "authmanager-create-not-in-progress": "Pravljenje računa nije u toku ili su podaci o sesiji izgubljeni. Počnite ispočetka.", + "authmanager-authplugin-setpass-failed-title": "Promjena lozinke nije uspjela", + "authmanager-authplugin-setpass-bad-domain": "Neispravna domena.", + "authmanager-autocreate-noperm": "Automatsko pravljenje računa nije dozvoljeno.", + "authmanager-autocreate-exception": "Automatsko pravljenje računa privremeno je onemogućeno zbog prijaÅ¡njih greÅ¡ki.", + "authmanager-userdoesnotexist": "Korisnički račun \"$1\" nije registriran.", + "authmanager-email-help": "Adresa e-poÅ¡te", + "authmanager-realname-label": "Pravo ime", + "authmanager-realname-help": "Korisnikovo pravo ime", + "authmanager-provider-temporarypassword": "Privremena lozinka", + "authprovider-resetpass-skip-label": "Preskoči", + "specialpage-securitylevel-not-allowed-title": "Nije dozvoljeno", + "specialpage-securitylevel-not-allowed": "Žao nam je, nije Vam dozvoljeno koriÅ¡tenje ove stranice jer ne možemo potvrditi VaÅ¡ identitet.", + "cannotauth-not-allowed-title": "Pristup odbijen", + "cannotauth-not-allowed": "Nije Vam dozvoljeno da koristite ovu stranicu", + "changecredentials": "Promjena akreditiva", + "changecredentials-submit": "Promijeni akreditive", + "changecredentials-invalidsubpage": "$1 nije ispravna vrsta akreditiva.", + "credentialsform-account": "Naziv računa:", + "cannotlink-no-provider-title": "Nema spojivih računa", + "cannotlink-no-provider": "Nema spojivih računa.", + "linkaccounts": "Spajanje računa", + "linkaccounts-success-text": "Račun je spojen.", + "linkaccounts-submit": "Spoji račune", + "unlinkaccounts": "Razdvajanje računa", + "unlinkaccounts-success": "Račun je razdvojen.", + "restrictionsfield-badip": "Neispravna IP-adresa ili opseg: $1", + "restrictionsfield-label": "Dozvoljeni IP-opsezi:", + "revid": "izmjena $1", + "pageid": "ID stranice $1" } diff --git a/languages/i18n/ca.json b/languages/i18n/ca.json index 28e00c248a..e8161bce61 100644 --- a/languages/i18n/ca.json +++ b/languages/i18n/ca.json @@ -55,7 +55,8 @@ "KRLS", "Jaumeortola", "Kippelboy", - "Syum90" + "Syum90", + "Xð" ] }, "tog-underline": "Subratlla els enllaços:", @@ -224,6 +225,7 @@ "searcharticle": "Vés-hi", "history": "Historial de canvis", "history_short": "Historial", + "history_small": "historial", "updatedmarker": "actualitzat des de la darrera visita", "printableversion": "Versió per a impressora", "permalink": "Enllaç permanent", @@ -248,7 +250,7 @@ "unprotectthispage": "Desprotegeix aquesta pàgina", "newpage": "Pàgina nova", "talkpage": "Discussió", - "talkpagelinktext": "Discussió", + "talkpagelinktext": "discussió", "specialpage": "Pàgina especial", "personaltools": "Eines de l'usuari", "articlepage": "Mostra la pàgina", @@ -376,6 +378,7 @@ "missingarticle-rev": "(revisió#: $1)", "missingarticle-diff": "(dif: $1, $2)", "readonly_lag": "La base de dades s'ha bloquejat automàticament mentre els servidors esclaus se sincronitzen amb el mestre", + "nonwrite-api-promise-error": "L'encapçalament HTTP 'Promise-Non-Write-API-Action' ha estat enviat però la petició era a mòdul d'escriptura de l'API.", "internalerror": "Error intern", "internalerror_info": "Error intern: $1", "internalerror-fatal-exception": "Excepció fatal del tipus «$1»", @@ -466,19 +469,12 @@ "login": "Inici de sessió", "login-security": "Verificació de la identitat", "nav-login-createaccount": "Inicia una sessió / crea un compte", - "userlogin": "Inicia una sessió / crea un compte", - "userloginnocreate": "Inici de sessió", "logout": "Finalitza la sessió", "userlogout": "Finalitza la sessió", "notloggedin": "Sense sessió iniciada", "userlogin-noaccount": "No teniu cap compte?", "userlogin-joinproject": "Uniu-vos a {{SITENAME}}", - "nologin": "No teniu un compte? '''$1'''.", - "nologinlink": "Crea un compte", "createaccount": "Crea un compte", - "gotaccount": "Ja teniu un compte? $1.", - "gotaccountlink": "Inicia una sessió", - "userlogin-resetlink": "Heu oblidat les vostres dades d'accés?", "userlogin-resetpassword-link": "Heu oblidat la contrasenya?", "userlogin-helplink2": "Ajuda amb el registre", "userlogin-loggedin": "Heu iniciat una sessió com {{GENDER:$1|$1}}.\nFeu servir el formulari de sota per iniciar la sessió com un altre usuari.", @@ -491,7 +487,6 @@ "createaccountmail": "Utilitza una contrasenya aleatòria temporal i envia-la a l'adreça de correu indicada", "createaccountmail-help": "Pot utilitzar-se per crear un compte per a una altra persona sense necessitar una contrasenya.", "createacct-realname": "Nom real (opcional)", - "createaccountreason": "Motiu:", "createacct-reason": "Motiu", "createacct-reason-ph": "Per què creeu un altre compte", "createacct-reason-help": "Missatge mostrat en el registre de creació de comptes", @@ -538,7 +533,7 @@ "eauthentsent": "S'ha enviat un correu electrònic a la direcció especificada. Abans no s'enviï cap altre correu electrònic a aquesta adreça, cal verificar que és realment vostra. Per tant, cal que seguiu les instruccions presents en el correu electrònic que se us ha enviat.", "throttled-mailpassword": "Ja se us ha enviat un correu electrònic de reinicialització de contrasenya en {{PLURAL:$1|l'última hora|les últimes $1 hores}}.\nPer a prevenir abusos, només s'envia un correu electrònic de reinicialització de contrasenya cada {{PLURAL:$1|hora|$1 hores}}.", "mailerror": "S'ha produït un error en enviar el missatge: $1", - "acct_creation_throttle_hit": "Des de la vostra adreça IP ja {{PLURAL:$1|s'ha creat un compte|s'han creat $1 comptes}} en l'últim dia i aquest és el màxim permès en aquest wiki per aquest període de temps.\nAixí, des d'aquesta adreça IP no es poden crear més comptes actualment.", + "acct_creation_throttle_hit": "Des de la vostra adreça IP {{PLURAL:$1|s'ha creat un compte|s'han creat $1 comptes}} en aquest wiki durant $2 i aquest és el màxim permès per aquest període de temps.\nAixí, des d'aquesta adreça IP no es poden crear més comptes actualment.", "emailauthenticated": "S'ha autenticat la vostra adreça electrònica el $2 a les $3.", "emailnotauthenticated": "La vostra adreça de correu electrònic <strong>encara no està autenticada</strong>. No rebrà cap missatge de correu electrònic per a cap de les següents funcionalitats.", "noemailprefs": "Especifiqueu una adreça electrònica per activar aquestes característiques.", @@ -594,11 +589,13 @@ "botpasswords-created-title": "S'ha creat la contrasenya del bot", "botpasswords-created-body": "S'ha creat la contrasenya per al bot «$1» de l'usuari «$2».", "botpasswords-updated-title": "Contrasenya de bot actualitzada", + "botpasswords-updated-body": "La contrasenya pel bot «$1» de l'usuari «$2» ha estat actualitzada.", "botpasswords-deleted-title": "S'ha eliminat la contrasenya del bot", "botpasswords-deleted-body": "La contrasenya del bot \"$1\", pertanyent a l'usuari \"$2\", ha estat eliminada.", - "botpasswords-newpassword": "La nova contrasenya per a iniciar sessió amb <strong>$1</strong> és <strong>$2</strong>. Si us plau, guardeu-la de cara al futur.", + "botpasswords-newpassword": "La nova contrasenya per a iniciar sessió amb <strong>$1</strong> és <strong>$2</strong>. <em>Guardeu-la de cara al futur.</em><br> (Per a bots vells que necessiten que el nom per a iniciar sessió sigui el mateix que el nom d'usuari, també podeu usar <strong>$3</strong> com a nom d'usuari i <strong>$4</strong> com a contrasenya.)", "botpasswords-no-provider": "BotPasswordsSessionProvider no està disponible.", "botpasswords-restriction-failed": "Les restriccions de contrasenyes de bots impedeixen aquest inici de sessió.", + "botpasswords-invalid-name": "El nom d'usuari especificat no conté el separador de contrasenya de bot («$1»).", "botpasswords-not-exist": "L'usuari «$1» no té una contrasenya de bot anomenada «$2».", "resetpass_forbidden": "No poden canviar-se les contrasenyes", "resetpass_forbidden-reason": "Les contrasenyes no es poden canviar: $1", @@ -690,6 +687,7 @@ "blockedtitle": "L'usuari està blocat", "blockedtext": "'''S'ha procedit al blocatge del vostre compte d'usuari o la vostra adreça IP.'''\n\nEl blocatge l'ha dut a terme l'usuari $1.\nEl motiu donat és ''$2''.\n\n* Inici del blocatge: $8\n* Final del blocatge: $6\n* Compte blocat: $7\n\nPodeu contactar amb $1 o un dels [[{{MediaWiki:Grouppage-sysop}}|administradors]] per a discutir-ho.\n\nTingueu en compte que no podeu fer servir el formulari d'enviament de missatges de correu electrònic a cap usuari, a menys que tingueu una adreça de correu vàlida registrada a les vostres [[Special:Preferences|preferències d'usuari]] i no ho tingueu tampoc blocat.\n\nLa vostra adreça IP actual és $3, i el número d'identificació del blocatge és #$5.\nSi us plau, incloeu aquestes dades en totes les consultes que feu.", "autoblockedtext": "La vostra adreça IP ha estat blocada automàticament perquè va ser usada per un usuari actualment bloquejat. Aquest usuari va ser blocat per l'{{GENDER:$1|administrador|administradora}} $1. El motiu donat per al bloqueig ha estat:\n\n:''$2''\n\n* Inici del bloqueig: $8\n* Final del bloqueig: $6\n* Usuari bloquejat: $7\n\nPodeu contactar l'usuari $1 o algun altre dels [[{{MediaWiki:Grouppage-sysop}}|administradors]] per a discutir el bloqueig.\n\nRecordeu que per a poder usar l'opció «Envia un missatge de correu electrònic a aquest usuari» haureu d'haver validat una adreça de correu electrònic a les vostres [[Special:Preferences|preferències]].\n\nEl número d'identificació de la vostra adreça IP és $3, i l'ID del bloqueig és #$5. Si us plau, incloeu aquestes dades en totes les consultes que feu.", + "systemblockedtext": "El vostre nom d'usuari o adreça IP ha estat bloquejada automàticament pel MediaWiki.\nEl motiu donat és:\n\n:<em>$2</em>\n\n* Inici del bloqueig: $8\n* Caducitat del bloqueig: $6\n* Destinatari del bloqueig: $7\n\nLa vostra adreça IP actual és $3.\nAfegiu les dades de més amunt en qualsevol consulta que feu al respecte.", "blockednoreason": "no s'ha donat cap motiu", "whitelistedittext": "Heu de $1 per modificar pàgines.", "confirmedittext": "Heu de confirmar la vostra adreça electrònica abans de poder modificar les pàgines. Definiu i valideu la vostra adreça electrònica a través de les vostres [[Special:Preferences|preferències d'usuari]].", @@ -791,6 +789,7 @@ "content-json-empty-object": "Objecte buit", "content-json-empty-array": "Matriu buida", "deprecated-self-close-category": "Pàgines que usen etiquetes HTML autotancades no vàlides", + "deprecated-self-close-category-desc": "La pàgina conté etiquetes HTML auto-tancades no vàlides, com ara <code><b/></code> o <code><span/></code>. El seu comportament canviarà aviat per ser consistents amb l'especificació HTML5, per tant el seu ús en text wiki és obsolet.", "duplicate-args-warning": "<strong>Avís:</strong> [[:$1]] crida [[:$2]] amb més d'un valor pel paràmetre «$3». Només s'utilitzarà el darrer valor proporcionat.", "duplicate-args-category": "Pàgines amb arguments duplicats en utilització de plantilles", "duplicate-args-category-desc": "La pàgina conté crides a plantilles que fan servir duplicats d'arguments, com ara <code><nowiki>{{foo|bar=1|bar=2}}</nowiki></code> o <code><nowiki>{{foo|bar|1=baz}}</nowiki></code>.", @@ -992,6 +991,7 @@ "search-interwiki-caption": "Projectes germans", "search-interwiki-default": "Resultats de $1:", "search-interwiki-more": "(més)", + "search-interwiki-more-results": "més resultats", "search-relatedarticle": "Relacionat", "searchrelated": "relacionat", "searchall": "tots", @@ -1082,6 +1082,7 @@ "username": "{{GENDER:$1|Nom d'usuari}}:", "prefs-memberingroups": "{{GENDER:$2|Membre}} {{PLURAL:$1|del grup|dels grups}}:", "prefs-memberingroups-type": "$1", + "group-membership-link-with-expiry": "$1 (fins el $2)", "prefs-registration": "Hora de registre:", "prefs-registration-date-time": "$1", "yourrealname": "Nom real*:", @@ -1126,8 +1127,9 @@ "userrights-user-editname": "Introduïu un nom d'usuari:", "editusergroup": "Carrega els grups d'usuari", "editinguser": "Modificació dels permisos de {{GENDER:$1|l'usuari|la usuària}} <strong>[[User:$1|$1]]</strong>$2", - "userrights-editusergroup": "Edita els grups d'usuaris", - "userrights-viewusergroup": "Mostra els grups d'usuari", + "viewinguserrights": "Visualització del drets de {{GENDER:$1|l'usuari|la usuària}} <strong>[[User:$1|$1]]</strong> $2", + "userrights-editusergroup": "Edita els grups de l'{{GENDER:$1|usuari|usuària}}", + "userrights-viewusergroup": "Mostra els grups de l'{{GENDER:$1|usuari|usuària}}", "saveusergroups": "Desa els grups d'{{GENDER:$1|usuari}}", "userrights-groupsmember": "Membre de:", "userrights-groupsmember-auto": "Membre implícit de:", @@ -1139,6 +1141,12 @@ "userrights-changeable-col": "Grups que podeu canviar", "userrights-unchangeable-col": "Grups que no podeu canviar", "userrights-irreversible-marker": "$1*", + "userrights-expiry-current": "Venç el $1", + "userrights-expiry-none": "No venç", + "userrights-expiry": "Venciment:", + "userrights-expiry-existing": "Temps de venciment actual: $3, $2", + "userrights-expiry-othertime": "Altre temps:", + "userrights-expiry-options": "1 dia:1 day,1 setmana:1 week,1 mes:1 month,3 mesos:3 months,6 mesos:6 months,1 any:1 year", "userrights-conflict": "Conflicte de canvis dels permisos d'usuari. Reviseu i confirmeu els canvis.", "group": "Grup:", "group-user": "Usuaris", @@ -1265,6 +1273,7 @@ "grant-basic": "Permisos bàsics", "grant-viewdeleted": "Mostra fitxers eliminats i pàgines", "grant-viewmywatchlist": "Modifica la llista de seguiment", + "grant-viewrestrictedlogs": "Visualització d'entrades de registre restringides", "newuserlogpage": "Registre de creació d'usuaris", "newuserlogpagetext": "Aquest és un registre de creació de nous usuaris.", "rightslog": "Registre dels permisos d'usuari", @@ -1338,15 +1347,51 @@ "recentchanges-legend-plusminus": "(''±123'')", "recentchanges-submit": "Mostra", "rcfilters-activefilters": "Filtres actius", + "rcfilters-restore-default-filters": "Restaura els filtres per defecte", + "rcfilters-clear-all-filters": "Esborra tots els filtres", "rcfilters-search-placeholder": "Canvis recents dels filtres (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-highlightbutton-title": "Ressalta els resultats", + "rcfilters-highlightmenu-title": "Selecciona un color", "rcfilters-filterlist-noresults": "No s'ha trobat cap filtre", + "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-filtergroup-authorship": "Modifica l'autoria", "rcfilters-filter-editsbyself-label": "Les vostres modificacions", "rcfilters-filter-editsbyself-description": "Modificacions vostres.", "rcfilters-filter-editsbyother-label": "Modificacions d'altres", - "rcfilters-filter-editsbyother-description": "Modificacions creades per altres usuaris (no vostres)", + "rcfilters-filter-editsbyother-description": "Modificacions creades per altres usuaris (no vostres).", + "rcfilters-filtergroup-userExpLevel": "Nivell d'experiència (només per a usuaris registrats)", + "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-learner-label": "Aprenents", + "rcfilters-filter-user-experience-level-learner-description": "Més dies d'activitat i més edicions 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-filtergroup-automated": "Contribucions automatitzades", + "rcfilters-filter-bots-label": "Bot", + "rcfilters-filter-bots-description": "Modificacions fetes per eines automatitzades.", + "rcfilters-filter-humans-label": "Humà (no bot)", + "rcfilters-filter-humans-description": "Modificacions fetes per editors humans.", + "rcfilters-filtergroup-significance": "Significació", + "rcfilters-filter-minor-label": "Modificacions menors", + "rcfilters-filter-minor-description": "Modificacions que l'autor va etiquetar com a menors.", + "rcfilters-filter-major-label": "Modificacions no menors", + "rcfilters-filter-major-description": "Modificacions no etiquetades com a menors.", + "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...", + "rcfilters-filter-newpages-label": "Creacions de pàgines", + "rcfilters-filter-newpages-description": "Edicions que creen noves pàgines.", + "rcfilters-filter-categorization-label": "Canvis de categoria", + "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...", "rcnotefrom": "A sota hi ha {{PLURAL:$5|el canvi|els canvis}} a partir de <strong>$3, $4</strong> (fins a <strong>$1</strong>).", "rclistfrom": "Mostra els canvis nous des de $3, $2", "rcshowhideminor": "$1 edicions menors", @@ -1475,7 +1520,7 @@ "uploaded-event-handler-on-svg": "No es permet establir els atributs de gestió d’esdeveniments <code>$1=\"$2\"</code> en fitxers SVG.", "uploaded-href-unsafe-target-svg": "S’ha trobat un element «href» amb dades no segures: destinació URI <code><$1 $2=\"$3\"></code> en el fitxer SVG carregat.", "uploaded-animate-svg": "S'ha trobat l'etiqueta «animate» que pot estar canviant l'href mitjançant l'atribut <code><$1 $2=\"$3\"></code> en el fitxer SVG carregat.", - "uploadscriptednamespace": "Aquest fitxer SVG conté un espai de noms \"$1\" no autoritzat", + "uploadscriptednamespace": "Aquest fitxer SVG conté un espai de noms \"<nowiki>$1</nowiki>\" no autoritzat", "uploadinvalidxml": "No s'ha pogut analitzar l'XML del fitxer carregat.", "uploadvirus": "El fitxer conté un virus! Detalls: $1", "uploadjava": "El fitxer és un arxiu ZIP que conté un fitxer .class de Java. No està permesa la càrrega de fitxers Java, perquè poden passar per alt les restriccions de seguretat.", @@ -1749,6 +1794,7 @@ "uncategorizedcategories": "Categories sense categoria", "uncategorizedimages": "Fitxers sense categoria", "uncategorizedtemplates": "Plantilles sense categoria", + "uncategorized-categories-exceptionlist": " # Conté una llista de categories no no s'haurien de mencionar a Special:UncategorizedCategories. Una per línia, començant amb «*». Les línies que comencin amb un altre caràcter (incloent l'espai en blanc) són ignorades. Utilitzeu «#» per a comentaris.", "unusedcategories": "Categories sense cap ús", "unusedimages": "Fitxers no utilitzats", "wantedcategories": "Categories demanades", @@ -1819,8 +1865,9 @@ "apihelp": "Ajuda de l'API", "apihelp-no-such-module": "No s'ha trobat el mòdul \"$1\".", "apisandbox": "Pàgina de proves de l'API", + "apisandbox-jsonly": "Es necessita JavaScript per utilitzar l'espai de proves API.", "apisandbox-api-disabled": "L'API està desactivada en aquest lloc.", - "apisandbox-intro": "Utilitzeu aquesta pàgina per experimentar amb l'<nowiki />'''API de web service de MediaWiki'''.\nVisiteu [https://www.mediawiki.org/wiki/API:Main_page la documentació de l'API] per a més informació sobre l'ús de l'API. Exemple: [https://www.mediawiki.org/wiki/API#A_simple_example recuperar el contingut d'una Pàgina Principal]. Seleccioneu una acció per veure més exemples.\n\nTingueu en compte que, encara que això és una pàgina de proves, les accions que feu en aquesta pàgina poden modificar la wiki.", + "apisandbox-intro": "Utilitzeu aquesta pàgina per experimentar amb l'<strong>API de servei web de MediaWiki</strong>.\nVegeu la [[mw:API:Main page|documentació de l'API]] per a més informació sobre l'ús de l'API. Exemple: [https://www.mediawiki.org/wiki/API#A_simple_example recuperar el contingut d'una Pàgina Principal]. Seleccioneu una acció per veure més exemples.\n\nTingueu en compte que, encara que això és una pàgina de proves, les accions que feu en aquesta pàgina poden modificar la wiki.", "apisandbox-fullscreen": "Expandeix el plafó", "apisandbox-fullscreen-tooltip": "Expandeix el plafó de l'entorn de proves per tal que ocupi la finestra del navegador.", "apisandbox-unfullscreen": "Mostra la pàgina", @@ -1829,6 +1876,7 @@ "apisandbox-reset": "Neteja", "apisandbox-retry": "Torna a provar", "apisandbox-loading": "S'està carregant la informació del mòdul d'API «$1»...", + "apisandbox-no-parameters": "Aquest mòdul API no té paràmetres.", "apisandbox-helpurls": "Enllaços d'ajuda", "apisandbox-examples": "Exemples", "apisandbox-dynamic-parameters": "Paràmetres adicionals", @@ -1842,8 +1890,10 @@ "apisandbox-sending-request": "S'està enviant una sol·licitud API...", "apisandbox-loading-results": "S'estan reben els resultats de l'API...", "apisandbox-results-error": "S'ha produït un error en carregar la resposta de la consulta de l'API: $1.", - "apisandbox-request-params-json": "Paràmetres JSON:", + "apisandbox-request-selectformat-label": "Mostra les dades de sol·licitud com:", + "apisandbox-request-format-url-label": "Cadena de consulta de l'URL", "apisandbox-request-url-label": "Sol·licita URL:", + "apisandbox-request-json-label": "JSON de sol·licitud:", "apisandbox-request-time": "Temps de sol·licitud: {{PLURAL:$1|$1 ms}}", "apisandbox-results-fixtoken": "Corregeix el testimoni i torna-ho a enviar", "apisandbox-results-fixtoken-fail": "No s'ha pogut recuperar el testimoni «$1».", @@ -1860,8 +1910,11 @@ "booksources-text": "A sota hi ha una llista d'enllaços d'altres llocs que venen llibres nous i de segona mà, i també podrien tenir més informació dels llibres que esteu cercant:", "booksources-invalid-isbn": "El codi ISBN donat no és vàlid. Comproveu si l'heu copiat correctament.", "magiclink-tracking-rfc": "Pàgines que usen enllaços màgics RFC", + "magiclink-tracking-rfc-desc": "Aquesta pàgina utilitza enllaços màgics RFC. Vegeu [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Magic_links mediawiki.org] per saber com canviar-los.", "magiclink-tracking-pmid": "Pàgines que usen enllaços màgics PMID", + "magiclink-tracking-pmid-desc": "Aquesta pàgina utilitza enllaços màgics PMID. Vegeu [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Magic_links mediawiki.org] per saber com canviar-los.", "magiclink-tracking-isbn": "Pàgines que usen enllaços màgics d'ISBN", + "magiclink-tracking-isbn-desc": "Aquesta pàgina utilitza enllaços màgics ISBN. Vegeu [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Magic_links mediawiki.org] per saber com canviar-los.", "specialloguserlabel": "Realitzador:", "speciallogtitlelabel": "Objectiu (títol o «{{ns:user}}:nom d’usuari» per a un usuari):", "log": "Registres", @@ -1946,6 +1999,7 @@ "trackingcategories-name": "Nom del missatge", "trackingcategories-desc": "Criteris d'inclusió de categoria", "restricted-displaytitle-ignored": "Pàgines amb títols a mostrar ignorats", + "restricted-displaytitle-ignored-desc": "La pàgina té un <code><nowiki>{{DISPLAYTITLE}}</nowiki></code> que ha estat ignorat perquè no és equivalent al títol actual de la pàgina.", "noindex-category-desc": "La pàgina conté una paraula màgica <code><nowiki>__NOINDEX__</nowiki></code> (i és en un espai de noms on està permesa) i per tant no està indexada per robots.", "index-category-desc": "La pàgina conté un <code><nowiki>__INDEX__</nowiki></code> (i és en un espai de noms on està permès) i per tant està indexat per robots quan normalment no ho seria.", "post-expand-template-inclusion-category-desc": "La mida de la pàgina és més gran que <code>$wgMaxArticleSize</code> un cop expandides totes les plantilles, per tant algunes plantilles no s'han expandit.", @@ -1981,7 +2035,7 @@ "emailccsubject": "Còpia del vostre missatge a $1: $2", "emailsent": "Correu electrònic enviat", "emailsenttext": "S'ha enviat el vostre correu electrònic.", - "emailuserfooter": "Aquest missatge de correu electrònic l'ha {{GENDER:$1|enviat}} $1 a {{GENDER:$2|$2}} amb la funció «{{int:emailuser}}» de {{SITENAME}}.", + "emailuserfooter": "Aquest correu electrònic l'ha {{GENDER:$1|enviat}} $1 a {{GENDER:$2|$2}} amb la funció «{{int:emailuser}}» de {{SITENAME}}. Si {{GENDER:$2|responeu}} a aquest correu electrònic, {{GENDER:$2|la vostra resposta}} serà enviada directament {{GENDER:$1|al remitent|a la remitent}} original revelant-li {{GENDER:$2|la vostra}} adreça de correu.", "usermessage-summary": "Deixant missatges de sistema.", "usermessage-editor": "Missatger del sistema", "watchlist": "Llista de seguiment", @@ -1992,9 +2046,11 @@ "watchnologin": "No heu iniciat la sessió", "addwatch": "Afegeix a llista de seguiment", "addedwatchtext": "S'ha afegit «[[:$1]]» i la seva pàgina de discussió a la vostra [[Special:Watchlist|llista de seguiment]].", + "addedwatchtext-talk": "«[[:$1]]» i la seva pàgina associada han estat afegides a la vostra [[Special:Watchlist|llista de seguiment]].", "addedwatchtext-short": "S’ha afegit la pàgina «$1» a la vostra llista de seguiment.", "removewatch": "Treu de la llista de seguiment", "removedwatchtext": "S'ha tret «[[:$1]]» i la seva pàgina de discussió de la vostra [[Special:Watchlist|llista de seguiment]].", + "removedwatchtext-talk": "S'ha tret «[[:$1]]» i la seva pàgina associada de la vostra [[Special:Watchlist|llista de seguiment]].", "removedwatchtext-short": "S’ha tret la pàgina «$1» de la vostra llista de seguiment.", "watch": "Vigila", "watchthispage": "Vigila aquesta pàgina", @@ -2218,8 +2274,8 @@ "sp-contributions-newbies-sub": "Per a novells", "sp-contributions-newbies-title": "Contribucions dels comptes d'usuari més nous", "sp-contributions-blocklog": "Registre de bloquejos", - "sp-contributions-suppresslog": "contribucions suprimides de l'usuari", - "sp-contributions-deleted": "contribucions d'usuari esborrades", + "sp-contributions-suppresslog": "contribucions suprimides de {{GENDER:$1|l'usuari|la usuària}}", + "sp-contributions-deleted": "Contribucions de {{GENDER:$1|l’usuari|la usuària}} esborrades", "sp-contributions-uploads": "càrregues", "sp-contributions-logs": "registres", "sp-contributions-talk": "discussió", @@ -2377,8 +2433,8 @@ "move-page": "Reanomena $1", "move-page-legend": "Reanomena la pàgina", "movepagetext": "Amb el formulari següent reanomenareu una pàgina, movent tot el seu historial al nou nom.\nEl títol anterior es convertirà en una pàgina de redirecció al nou títol.\nPodeu actualitzar automàticament les redireccions que apuntin al títol original.\nSi no ho feu, assegureu-vos de verificar les redireccions [[Special:DoubleRedirects|dobles]] o [[Special:BrokenRedirects|trencades]].\nSerà de la vostra responsabilitat verificar que els enllaços segueixin apuntant cap a on se suposa que ho han de fer.\n\nTingueu en compte que la pàgina <strong>no</strong> serà traslladada si ja existeix una pàgina amb el títol nou, tret que sigui una redirecció sense més historial.\nAixò significa que podeu reanomenar de nou una pàgina al seu títol original si cometeu un error, i que no podeu sobreescriure una pàgina existent.\n\n<strong>Nota:</strong>\nAçò pot ser un canvi dràstic i inesperat en una pàgina que sigui popular; \nassegureu-vos d'entendre les conseqüències que comporta abans de seguir endavant.", - "movepagetext-noredirectfixer": "Amb el formulari següent podeu reanomenar una pàgina movent tot el seu historial al nom nou.\nEl títol anterior es convertirà en una pàgina de redirecció al nou títol. \nAssegureu-vos de verificar les redireccions [[Special:DoubleRedirects|dobles]] o [[Special:BrokenRedirects|trencades]].\nÉs responsabilitat vostra assegurar que els enllaços continuen apuntant cap a on se suposa que han d'anar. \n\nTingueu en compte que la pàgina '''no''' serà traslladada si ja existeix una pàgina amb el títol nou, tret que sigui una redirecció i no tingui més historial. \nAixò significa que podeu reanomenar de nou una pàgina al seu títol original si cometeu un error, i que no podeu sobreescriure una pàgina existent.\n \n'''Atenció!''' \nAixò pot ser un canvi dràstic i inesperat per una pàgina popular; \nassegureu-vos que sabeu el que feu abans de continuar.", - "movepagetalktext": "La pàgina de discussió associada també serà traslladada automàticament '''tret que''':\n* Ja existeixi una pàgina de discussió no buida amb el nou nom, o\n* Desactiveu l'opció de més avall.\n\nEn aquests casos, haureu de traslladar o fusionar la pàgina manualment si ho desitgeu.", + "movepagetext-noredirectfixer": "Amb el formulari següent podeu reanomenar una pàgina movent tot el seu historial al nom nou.\nEl títol anterior es convertirà en una pàgina de redirecció al nou títol. \nAssegureu-vos de verificar les redireccions [[Special:DoubleRedirects|dobles]] o [[Special:BrokenRedirects|trencades]].\nÉs responsabilitat vostra assegurar que els enllaços continuen apuntant cap a on se suposa que han d'anar. \n\nTingueu en compte que la pàgina <strong>no</strong> serà traslladada si ja existeix una pàgina amb el títol nou, tret que sigui una redirecció i no tingui més historial. \nAixò significa que podeu reanomenar de nou una pàgina al seu títol original si cometeu un error, i que no podeu sobreescriure una pàgina existent.\n \n<strong>Nota:</strong>\nAixò pot ser un canvi dràstic i inesperat per una pàgina popular; \nassegureu-vos que sabeu el que feu abans de continuar.", + "movepagetalktext": "Si marqueu aquesta casella, la pàgina de discussió associada també serà traslladada automàticament al nou títol, tret que ja existeixi allà una pàgina de discussió no buida.\n\nEn aquest cas, haureu de traslladar o fusionar la pàgina manualment si ho desitgeu.", "moveuserpage-warning": "'''Atenció:''' Esteu a punt de moure una pàgina d'usuari. Tingueu en compte que només la pàgina es desplaçarà i que el compte d'usuari ''no'' canviarà de nom.", "movecategorypage-warning": "<strong>Avís:</strong> Esteu a punt de moure una pàgina de categoria. Tingueu en compte que només es mourà aquesta pàgina, i que les pàgines dins la categoria antiga <em>no</em> es recategoritzaran automàticament en la nova.", "movenologintext": "Heu de ser un usuari registrat i estar [[Special:UserLogin|dintre d'una sessió]]\nper reanomenar una pàgina.", @@ -2388,6 +2444,7 @@ "cant-move-to-user-page": "No teniu permís per a moure una pàgina a una pàgina d'usuari (independentment de poder fer-ho cap a una subpàgina d'usuari).", "cant-move-category-page": "No teniu permisos per a moure pàgines de categoria.", "cant-move-to-category-page": "No teniu permisos per a moure una pàgina a una pàgina de categoria.", + "cant-move-subpages": "No teniu permís per a traslladar subpàgines.", "namespace-nosubpages": "L'espai de noms «$1» no permet subpàgines.", "newtitle": "Títol nou:", "move-watch": "Vigila aquesta pàgina", @@ -2409,10 +2466,11 @@ "movelogpagetext": "Vegeu la llista de les darreres pàgines reanomenades.", "movesubpage": "{{PLURAL:$1|Subpàgina|Subpàgines}}", "movesubpagetext": "Aquesta pàgina té {{PLURAL:$1|una subpàgina|$1 subpàgines}} que es mostren a continuació.", + "movesubpagetalktext": "La pàgina de discussió corresponent té $1 {{PLURAL:$1|subpàgina mostrada|subpàgines mostrades}} a continuació.", "movenosubpage": "Aquesta pàgina no té subpàgines.", "movereason": "Motiu:", "revertmove": "reverteix", - "delete_and_move_text": "==Cal l'eliminació==\n\nLa pàgina de destinació, «[[:$1]]», ja existeix. Voleu eliminar-la per a fer lloc al trasllat?", + "delete_and_move_text": "La pàgina de destinació, «[[:$1]]», ja existeix.\nVoleu eliminar-la per a fer lloc al trasllat?", "delete_and_move_confirm": "Sí, esborra la pàgina", "delete_and_move_reason": "S'ha eliminat per a permetre el reanomenament de \" [[$1]] \"", "selfmove": "Els títols d'origen i de destinació coincideixen: no és possible de reanomenar una pàgina a si mateixa.", @@ -2430,7 +2488,7 @@ "move-leave-redirect": "Deixa enrere una redirecció", "protectedpagemovewarning": "'''AVÍS: Aquesta pàgina està bloquejada i només els usuaris que tenen drets d'administrador la poden reanomenar.\nA continuació es mostra la darrera entrada del registre com a referència:", "semiprotectedpagemovewarning": "'''Nota:''' Aquesta pàgina està bloquejada i només els usuaris registrats la poden moure.\nA continuació es mostra la darrera entrada del registre com a referència:", - "move-over-sharedrepo": "== El fitxer ja existeix ==\n[[:$1]] ja existeix al dipòsit compartit. Moure un fitxer a aquest títol impedirà d'ús del fitxer compartit.", + "move-over-sharedrepo": "[[:$1]] ja existeix al repositori compartit. Traslladant un fitxer a aquest títol se substituirà el fitxer compartit.", "file-exists-sharedrepo": "El nom de fitxer escollit ja s'utilitza al dipòsit compartit. Escolliu un altre nom.", "export": "Exportació de pàgines", "exporttext": "Podeu exportar a XML el text i l'historial d'una pàgina en concret o d'un conjunt de pàgines; aleshores el resultat pot importar-se en un altre lloc web basat en wiki amb programari de MediaWiki mitjançant la [[Special:Import|pàgina d'importació]].\n\nPer a exportar pàgines, escriviu els títols que desitgeu al quadre de text de sota, un títol per línia, i seleccioneu si desitgeu o no la versió actual juntament amb totes les versions antigues, amb la pàgina d'historial, o només la pàgina actual amb la informació de la darrera modificació.\n\nEn el darrer cas, podeu fer servir un enllaç com ara [[{{#Special:Export}}/{{MediaWiki:Mainpage}}]] per a la pàgina «[[{{MediaWiki:Mainpage}}]]».", @@ -2510,7 +2568,7 @@ "import-nonewrevisions": "No s'ha importat cap revisió (ja hi eren abans o s'han omès a causa d'errors).", "xml-error-string": "$1 a la línia $2, columna $3 (byte $4): $5", "import-upload": "Carrega dades XML", - "import-token-mismatch": "Pèrdua de dades de sessió. Torneu-ho a intentar.", + "import-token-mismatch": "Pèrdua de dades de sessió.\n\nPotser heu finalitzat la sessió. <strong>Comproveu si encara teniu la sessió iniciada i torneu-ho a intentar</strong>.\nSi encara no funciona, proveu de [[Special:UserLogout|finalitzar la sessió]] i inicieu-la de nou, comprovant que el vostre navegador permeti les galetes per a aquest lloc.", "import-invalid-interwiki": "No es pot importar des del wiki especificat.", "import-error-edit": "La pàgina «$1» no s'ha importat perquè no teniu permís per modificar-la.", "import-error-create": "La pàgina «$1» no s'ha importat perquè no teniu permís per crear-la.", @@ -2723,6 +2781,7 @@ "svg-long-error": "El fitxer SVG no és vàlid: $1", "show-big-image": "Fitxer original", "show-big-image-preview": "Mida d'aquesta previsualització: $1.", + "show-big-image-preview-differ": "Mida d'aquesta previsualització $3 del fitxer $2: $1.", "show-big-image-other": "{{PLURAL:$2|Altra resolució|Altres resolucions}}: $1.", "show-big-image-size": "$1 × $2 píxels", "file-info-gif-looped": "en bucle", @@ -3359,6 +3418,7 @@ "tags-delete-not-found": "L'etiqueta «$1» no existeix.", "tags-delete-too-many-uses": "L'etiqueta «$1» s'aplica a més {{PLURAL:$2|d'$2 revisió|de $2 revisions}} i, per tant, no pot eliminar-se.", "tags-delete-warnings-after-delete": "L'etiqueta \"$1\" ha estat esborrada satisfactòriament, però {{PLURAL:$2|s'ha registrat l'advertència següent|s'han registrat les advertències següents}}:", + "tags-delete-no-permission": "No teniu permisos per a eliminar les etiquetes de canvis.", "tags-activate-title": "Activa l'etiqueta", "tags-activate-question": "Esteu a punt d'activar l'etiqueta «$1».", "tags-activate-reason": "Motiu:", @@ -3371,9 +3431,11 @@ "tags-deactivate-not-allowed": "No és possible desactivar l'etiqueta «$1».", "tags-deactivate-submit": "Desactiva", "tags-apply-no-permission": "No teniu permís per canviar etiquetes juntament amb altres canvis.", + "tags-apply-blocked": "No podeu aplicar etiquetes de canvis amb els vostres canvis mentre estigueu {{GENDER:$1|blocat|blocada}}.", "tags-apply-not-allowed-one": "No es permet aplicar l'etiqueta «$1» manualment.", "tags-apply-not-allowed-multi": "No es permet aplicar manualment {{PLURAL:$2|l'etiqueta següent|les etiquetes següents}}: $1", "tags-update-no-permission": "No teniu permisos per a afegir o suprimir etiquetes de canvi de revisions individuals o entrades de registre.", + "tags-update-blocked": "No podeu afegir o suprimir etiquetes de canvis mentre estigueu {{GENDER:$1|blocat|blocada}}.", "tags-update-add-not-allowed-one": "No es permet afegir manualment l'etiqueta «$1».", "tags-update-add-not-allowed-multi": "No es permet afegir manualment {{PLURAL:$2|l'etiqueta següent|les etiquetes següents}}: $1", "tags-update-remove-not-allowed-one": "No es permet treure l’etiqueta «$1».", @@ -3430,7 +3492,12 @@ "htmlform-cloner-create": "Afegeix més", "htmlform-cloner-delete": "Suprimeix", "htmlform-cloner-required": "Cal com a mínim un valor.", + "htmlform-date-placeholder": "AAAA-MM-DD", "htmlform-time-placeholder": "HH:MM:SS", + "htmlform-datetime-placeholder": "AAAA-MM-DD HH:MM:SS", + "htmlform-date-invalid": "El valor que heu especificat no és una data reconeguda. Proveu d'utilitzar el format AAAA-MM-DD.", + "htmlform-time-invalid": "El valor que heu especificat no és una hora reconeguda. Proveu d'utilitzar el format HH:MM:SS.", + "htmlform-datetime-invalid": "El valor que heu especificat no és una data i hora reconeguda. Proveu d'utilitzar el format AAAA-MM-DD HH:MM:SS.", "htmlform-title-badnamespace": "[[:$1]] no es troba en l'espai de noms \"{{ns:$2}}\".", "htmlform-title-not-creatable": "\"$1\" és un títol de pàgina no editable", "htmlform-title-not-exists": "$1 no existeix.", @@ -3493,7 +3560,7 @@ "logentry-managetags-deactivate": "$1 {{GENDER:$2|ha desactivat}} l'etiqueta \"$4\" per a ser utilitzada en usuaris i bots", "log-name-tag": "Registre d'etiquetes", "rightsnone": "(cap)", - "revdelete-summary": "el resum d'edició", + "rightslogentry-temporary-group": "$1 (temporal, fins a $2)", "feedback-adding": "S'està afegint el comentari a la pàgina...", "feedback-back": "Enrere", "feedback-bugcheck": "Fantàstic! Comproveu que no sigui un dels [$1 problemes ja coneguts].", @@ -3517,54 +3584,12 @@ "feedback-useragent": "Agent d'usuari:", "searchsuggest-search": "Cerca a {{SITENAME}}", "searchsuggest-containing": "que conté ...", - "api-error-autoblocked": "S'ha blocat la vostra IP automàticament perquè la va utilitzar un usuari blocat.", - "api-error-badaccess-groups": "No teniu permís per a carregar fitxers en aquest wiki.", "api-error-badtoken": "Error intern: argument incorrecte.", - "api-error-blocked": "Heu estat blocat per poder editar.", - "api-error-copyuploaddisabled": "Les càrregues via URL estan desactivades en aquest servidor.", - "api-error-duplicate": "Ja hi ha {{PLURAL:$1|un altre fitxer|altres fitxers}} en aquest lloc web amb el mateix contingut.", - "api-error-duplicate-archive": "Aquí ja hi ha hagut {{PLURAL:$1|un altre fitxer|altres fitxers}} amb el mateix contingut, i {{PLURAL:$1|va ser esborrat|varen ser esborrats}}.", - "api-error-empty-file": "El fitxer que heu tramès està buit.", "api-error-emptypage": "No es permet la creació de pàgines noves en blanc.", - "api-error-fetchfileerror": "Error intern: quelcom no ha funcionat en accedir al fitxer.", - "api-error-fileexists-forbidden": "Ja existeix un fitxer amb el nom «$1» i no pot sobreescriure's.", - "api-error-fileexists-shared-forbidden": "Ja existeix un fitxer amb el nom «$1» al repositori de fitxers compartits i no pot sobreescriure's.", - "api-error-file-too-large": "El fitxer que heu tramès és massa gran.", - "api-error-filename-tooshort": "El nom del fitxer és massa curt.", - "api-error-filetype-banned": "Aquest tipus de fitxer està prohibit.", - "api-error-filetype-banned-type": "$1 {{PLURAL:$4|no és un tipus de fitxer permès|no són tipus de fitxer permesos}}. {{PLURAL:$3|El tipus de fitxer permès és|Els tipus de fitxer permesos són}} $2.", - "api-error-filetype-missing": "El nom de fitxer no té extensió.", - "api-error-hookaborted": "Un mòdul d'extensió ha cancel·lat la modificació que heu intentat fer.", - "api-error-http": "Error intern: no es pot connectar al servidor.", - "api-error-illegal-filename": "El nom del fitxer no està permès.", - "api-error-internal-error": "Error intern: el procés de càrrega en el wiki no ha funcionat.", - "api-error-invalid-file-key": "Error intern: no s'ha trobat el fitxer al dipòsit temporal.", - "api-error-missingparam": "Error intern: falten paràmetres a la petició.", - "api-error-missingresult": "Error intern: no s'ha pogut determinar si la còpia ha reeixit.", - "api-error-mustbeloggedin": "Cal que estigueu autenticats en un compte d'usuari per a poder carregar fitxers.", - "api-error-mustbeposted": "Error intern: la sol·licitud necessita HTTP POST.", - "api-error-noimageinfo": "La pujada s'ha realitzat amb èxit, però el servidor no ha proporcionat cap informació del fitxer.", - "api-error-nomodule": "Error intern: no està definit el mòdul de càrregues.", - "api-error-ok-but-empty": "Error intern: no hi ha resposta del servidor.", - "api-error-overwrite": "No està permès sobreescriure un fitxer existent.", - "api-error-stashfailed": "Error intern: el servidor no ha pogut emmagatzemar fitxers temporals.", "api-error-publishfailed": "Error intern: el servidor no ha pogut publicar el fitxer temporal.", - "api-error-stasherror": "S'ha produït un error en carregar el fitxer al dipòsit.", - "api-error-stashedfilenotfound": "No s'ha trobat el fitxer de l'espai temporal quan es provava de carregar-lo d'allà.", - "api-error-stashpathinvalid": "El camí on s'havia de trobar el fitxer de l'espai temporal no és vàlid.", - "api-error-stashfilestorage": "S'ha produït un error en emmagatzemar el fitxer en l'espai temporal.", - "api-error-stashzerolength": "El servidor no ha pogut desar el fitxer a l'espai temporal perquè tenia longitud zero.", - "api-error-stashnotloggedin": "Cal haver iniciat una sessió per desar fitxers en l'espai temporal de càrrega.", - "api-error-stashwrongowner": "El fitxer que provàveu d'accedir en l'espai temporal no us pertany.", - "api-error-stashnosuchfilekey": "La clau de fitxer que provàveu d'accedir en l'espai temporal no existeix.", - "api-error-timeout": "El servidor no ha respost en el temps esperat.", - "api-error-unclassified": "S'ha produït un error desconegut", - "api-error-unknown-code": "Error desconegut: «$1»", - "api-error-unknown-error": "Error intern: quelcom no ha funcionat en intentar carregar el fitxer.", + "api-error-stashfailed": "Error intern: el servidor no ha pogut emmagatzemar fitxers temporals.", "api-error-unknown-warning": "Avís desconegut: $1", "api-error-unknownerror": "Error desconegut: «$1».", - "api-error-uploaddisabled": "Estan desactivades les càrregues en aquest wiki", - "api-error-verification-error": "Aquest fitxer pot estar danyat, o tenir una extensió incorrecta.", "duration-seconds": "$1 {{PLURAL:$1|segon|segons}}", "duration-minutes": "$1 {{PLURAL:$1|minut|minuts}}", "duration-hours": "$1 {{PLURAL:$1|hora|hores}}", @@ -3609,6 +3634,7 @@ "pagelang-language": "Idioma", "pagelang-use-default": "Utilitza l'idioma per defecte", "pagelang-select-lang": "Selecciona un idioma", + "pagelang-reason": "Motiu", "pagelang-submit": "Envia", "pagelang-nonexistent-page": "La pàgina $1 no existeix.", "pagelang-unchanged-language": "La pàgina $1 ja està configurada en la llengua: $2.", @@ -3683,6 +3709,7 @@ "mw-widgets-titleinput-description-new-page": "la pàgina no existeix encara", "mw-widgets-titleinput-description-redirect": "redirigeix a $1", "mw-widgets-categoryselector-add-category-placeholder": "Afegeix una categoria...", + "mw-widgets-usersmultiselect-placeholder": "Afegeix-ne més...", "sessionmanager-tie": "No es poden combinar diferents tipus de sol·licituds d'autenticació: $1.", "sessionprovider-generic": "$1 sessions", "sessionprovider-mediawiki-session-cookiesessionprovider": "sessions basades en galetes", @@ -3734,7 +3761,7 @@ "authmanager-authn-no-primary": "Les dades credencials no s'han pogut autenticar.", "authmanager-authn-autocreate-failed": "Ha fallat la creació automàtica d'un compte local: $1", "authmanager-create-disabled": "S'ha inhabilitat la creació de comptes.", - "authmanager-create-from-login": "Per crear un compte, ompliu els camps de sota.", + "authmanager-create-from-login": "Per crear un compte, ompliu els camps.", "authmanager-authplugin-setpass-failed-title": "El canvi de contrasenya ha fallat", "authmanager-authplugin-setpass-bad-domain": "Domini invàlid.", "authmanager-userdoesnotexist": "El compte d'usuari «$1» no està registrat.", @@ -3754,15 +3781,18 @@ "authprovider-resetpass-skip-label": "Omet", "authprovider-resetpass-skip-help": "Omet el restabliment de contrasenya.", "specialpage-securitylevel-not-allowed-title": "No permès", + "specialpage-securitylevel-not-allowed": "Ho sentim, no podeu utilitzar la pàgina perquè no es pot verificar la vostra identitat.", "authpage-cannot-login": "No s'ha pogut iniciar la sessió.", "authpage-cannot-login-continue": "No es pot continuar amb l'inicio de sessió. Probablement la vostra sessió ha expirat.", "authpage-cannot-create": "No s'ha pogut iniciar la creació del compte.", "authpage-cannot-create-continue": "No es pot prosseguir la creació del compte. Probablement la vostra sessió ha expirat.", "authpage-cannot-link": "No s'ha pogut iniciar l'enllaç del compte.", + "authpage-cannot-link-continue": "No es pot continuar amb l'enllaç del compte. Possiblement s'ha esgotat el temps de la vostra sessió.", "cannotauth-not-allowed-title": "S'ha denegat el permís", "cannotauth-not-allowed": "No teniu permisos per utilitzar la pàgina", "changecredentials": "Canvi de dades credencials", "changecredentials-submit": "Canvia les dades credencials", + "changecredentials-invalidsubpage": "$1 no és tipus de credencial vàlid.", "changecredentials-success": "Les vostres credencials han estat canviades.", "removecredentials": "Suprimeix les credencials", "removecredentials-submit": "Suprimeix les credencials", diff --git a/languages/i18n/ce.json b/languages/i18n/ce.json index 4c638d002e..ec38e90514 100644 --- a/languages/i18n/ce.json +++ b/languages/i18n/ce.json @@ -891,7 +891,7 @@ "restoreprefs": "МеттахӀоттабе гӀирс Iад битарца", "prefs-editing": "Тадар", "searchresultshead": "Лахар", - "stub-threshold": "Кеч яран доза <a href=\"#\" class=\"stub\">коьртамогӀамна хьажоргаш</a> (байташках):", + "stub-threshold": "Кеч яран доза коьртан хьажоргашна ($1):", "stub-threshold-sample-link": "масала", "stub-threshold-disabled": "ДӀадайина", "recentchangesdays": "Керла нисдар гайта динахь:", @@ -1262,7 +1262,7 @@ "uploaddisabled": "Чуяккхар магийна дац", "copyuploaddisabled": "URL тӀера чуяккхар дӀадайина ду.", "uploaddisabledtext": "Файлаш чуяхар дӀадайина ду.", - "uploadscriptednamespace": "ХӀокху SVG-файлан цӀерийн меттиг нийса яц '$1'", + "uploadscriptednamespace": "ХӀокху SVG-файлан цӀерийн меттиг нийса яц '<nowiki>$1</nowiki>'", "upload-source": "ДIайолалун файл", "sourcefilename": "ДIайолалун файл:", "sourceurl": "Хьостан URL-адрес:", @@ -1575,7 +1575,7 @@ "showhideselectedlogentries": "Гайта/къайлаяха хаьржина башхонаш", "checkbox-select": "Харжар: $1", "checkbox-all": "Массо", - "checkbox-none": "ХӀума а", + "checkbox-none": "ХӀума", "checkbox-invert": "Инверт ян", "allpages": "Массо агӀонаш", "nextpage": "ТӀаьхьа йогӀу агӀо ($1)", @@ -2849,24 +2849,10 @@ "feedback-useragent": "Браузер:", "searchsuggest-search": "Лахар", "searchsuggest-containing": "чуьраниг…", - "api-error-duplicate": "Иштта чулацам болу {{PLURAL:$1|кхин файл|кхин файлаш}} йолуш ю.", - "api-error-empty-file": "Ахьа яхьийтина файл еса ю.", - "api-error-mustbeposted": "Чоьхьара гӀалат: дехаро хьехам схьабоьху HTTP POST.", - "api-error-noimageinfo": "Кхиамца чуяьккхина, амма серверо файлахь лаьцна цхьаа хаам битина бац.", - "api-error-nomodule": "Чоьхьара гӀалат: чуйокху модуль нисйина яц.", - "api-error-ok-but-empty": "Чоьхьара гӀалат: серверара жоп дац.", - "api-error-overwrite": "йолуш йолу файл хийца магийна дац.", - "api-error-stashfailed": "Чоьхьара гӀалат: серверна хана йолу файл Ӏалашъян цаелира.", "api-error-publishfailed": "Чоьхьара гӀалат: серверна хана йолу файл Ӏалашъян цаелира.", - "api-error-stasherror": "Файл чуйоккхуш Ӏалашечехь гӀалат даьлла.", - "api-error-timeout": "Хьоьжу хана серверо жоп цало.", - "api-error-unclassified": "Ца довза гӀалат даьлла", - "api-error-unknown-code": "Доьвзуш доцу гӀалат: «$1».", - "api-error-unknown-error": "Чоьхьара гӀалат: файл чуйоккхуш цхьа хӀума гӀалате хилла.", + "api-error-stashfailed": "Чоьхьара гӀалат: серверна хана йолу файл Ӏалашъян цаелира.", "api-error-unknown-warning": "Доьвзуш доцу дӀахьедар: $1", "api-error-unknownerror": "Доьвзуш доцу гӀалат: «$1».", - "api-error-uploaddisabled": "ХӀокху вики чохь файлаш чуяхар дӀадайина ду.", - "api-error-verification-error": "ХӀара файл йоьхна я хила цаеза тайпан хила мега.", "duration-seconds": "$1 {{PLURAL:$1|секунд}}", "duration-minutes": "$1 {{PLURAL:$1|минот}}", "duration-hours": "$1 {{PLURAL:$1|сахьт}}", diff --git a/languages/i18n/ceb.json b/languages/i18n/ceb.json index 2a9ecd53c0..ba0fb7f8be 100644 --- a/languages/i18n/ceb.json +++ b/languages/i18n/ceb.json @@ -11,7 +11,8 @@ "לערי ריינהארט", "아라", "Leeheonjin", - "Macofe" + "Macofe", + "Bentong Isles" ] }, "tog-underline": "Binadlisan nga mga sumpay:", @@ -142,6 +143,7 @@ "actions": "Mga lihok", "namespaces": "Mga ngalang espasyo", "variants": "Mga baryant", + "navigation-heading": "Menu sa nabigasyon", "errorpagetitle": "Sayop", "returnto": "Balik sa $1.", "tagline": "Gikan sa {{SITENAME}}", @@ -152,10 +154,13 @@ "searcharticle": "Sige", "history": "Kaagi ning panid", "history_short": "Kaagi", + "history_small": "kaagi", "updatedmarker": "na-update sugod sa akong kataposang bisita", "printableversion": "Mapatik nga bersiyon", "permalink": "Permanenteng sumpay", "print": "I-print", + "view": "Tan-awa", + "view-foreign": "Tan-awa sa $1", "edit": "Usba", "create": "Himoa", "editthispage": "Usba kining panid", @@ -170,7 +175,7 @@ "unprotectthispage": "Ayaw na kini protektahi", "newpage": "Bag-ong panid", "talkpage": "Hisgoti kining panid", - "talkpagelinktext": "Hisgot", + "talkpagelinktext": "hisgot", "specialpage": "Espesyal nga panid", "personaltools": "Personal nga galamiton", "articlepage": "Tan-awa ang panid sa sulod", @@ -188,6 +193,7 @@ "otherlanguages": "Sa ubang pinulongan", "redirectedfrom": "(Naredirek gikan sa $1)", "redirectpagesub": "Panid sa redirekta", + "redirectto": "Iadto sa:", "lastmodifiedat": "Kini nga panid kataposang giusab niadtong $2, $1.", "viewcount": "Naablihan na sa {{PLURAL:$1|maka-usa|$1 ka higayon}} ang kining panid.", "protectedpage": "Giprotektahang panid", @@ -225,7 +231,7 @@ "viewsourceold": "tan-awa ang ginikanan", "editlink": "usba", "viewsourcelink": "tan-awa ang ginikanan", - "editsectionhint": "Usba ang seksyong: $1", + "editsectionhint": "Usba ang seksyon: $1", "toc": "Mga sulod", "showtoc": "ipakita", "hidetoc": "tagoa", @@ -250,6 +256,7 @@ "nstab-template": "Plantilya", "nstab-help": "Panid sa tabang", "nstab-category": "Kategoriya", + "mainpage-nstab": "Unang Panid", "nosuchaction": "Walay maong aksyon", "nosuchactiontext": "Ang aksyon nga anaa sa URL wala gi-ila sa wiki", "nosuchspecialpage": "Walay maong espesyal nga panid", @@ -303,16 +310,16 @@ "externaldberror": "May nahitabong authentication database error o kaha wala ka tugoti nga mag-update sa imong eksternal nga akawnt.", "login": "Sulod", "nav-login-createaccount": "Rehistro / Dayon", - "userlogin": "Rehistro / Dayon", "logout": "Biya", "userlogout": "Bıveciye", "notloggedin": "Wala ka pa masulod", - "nologin": "Wala pay akawnt? '''$1'''.", - "nologinlink": "Paghimo og akawnt", + "userlogin-noaccount": "Wala pay akawnt?", + "userlogin-joinproject": "Apil sa {{SITENAME}}", "createaccount": "Paghimo'g akawnt", - "gotaccount": "Naa ka nay akawnt? '''$1'''.", - "gotaccountlink": "Dayon", + "createacct-emailoptional": "Adres sa email (opsyonal)", "createaccountmail": "sa e-mail", + "createacct-benefit-heading": "Ang {{SITENAME}} hinimo sa mga tawo sama kanimo.", + "createacct-benefit-body3": "labing bag-ong {{PLURAL:$1|ka tampo|ka mga tampo}}", "badretype": "Ang mga pasword nga imong gientra wala mag-match.", "userexists": "Ang ngalan sa tiggamit nga imong gisulat nagamit na.\nPalihug pagpili og lain nga ngalan.", "loginerror": "Sayop sa pagdayon", @@ -327,7 +334,10 @@ "wrongpassword": "Sayop nga pasword ang naentra.\nPalihog sulayi'g usab.", "mailmypassword": "I-email ang bag-ong pasword", "loginlanguagelabel": "Pinulongan: $1", + "pt-login": "Sulod", + "pt-createaccount": "Paghimo og akawnt", "changepassword": "Usba ang pasword", + "passwordreset": "Usba ang password", "bold_sample": "Gilugom nga teksto", "bold_tip": "Gilugom nga teksto", "italic_sample": "Gitakilid nga teksto", @@ -354,9 +364,10 @@ "showdiff": "Ipakita ang kalainan", "anoneditwarning": "'''Pahibalo:''' Wala ikaw maka-login.\nAng imong ''IP address'' maoy itala sa kaagi niini nga panid.", "summary-preview": "Paunang tan-aw sa mubong sugid:", + "loginreqlink": "sulod", "newarticle": "(Bag-o)", "newarticletext": "Mitulpok ka sa sumpay ngadto sa usa ka wala pa masulat nga panid.\nAron mahimo ang maong panid, pagtayp sa kahon sa ubos (tan-awa ang [$1 panid sa tabang] alang sa dugang impormasyon).\nKon miabot ka dinhi pinaagi sa usa ka sayop, palihog tuploka ang back nga tuplokanan sa imong brawser.", - "noarticletext": "Sa kasamtangan walay sulod nga teksto ang kining panid.\nPuyde nimong [[Special:Search/{{PAGENAME}}|pangitaon kining titulo sa panid]] sa ubang mga panid, <span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} pangitaa ang related nga mga log],\no [{{fullurl:{{FULLPAGENAME}}|action=edit}} usba kining panid]</span>.", + "noarticletext": "Sa kasamtangan walay sulod nga teksto kining panid.\nPuyde nimong [[Special:Search/{{PAGENAME}}|pangitaon kining titulo sa panid]] sa ubang mga panid, <span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} pangitaa ang mga may kalabotan nga log],\no [{{fullurl:{{FULLPAGENAME}}|action=edit}} mugnaa kining panid]</span>.", "userpage-userdoesnotexist": "Ang akawnt sa tiggamit nga \"<nowiki>$1</nowiki>\" wala marehistro. Palihug tan-awa kon buot nimong himoon/usbon ang kining panid.", "previewnote": "'''Hinumdomi nga kini usa lang ka paunang tan-aw; wala pa matipigi ang imong giusab!'''", "editing": "Nagausab sa $1", @@ -476,10 +487,18 @@ "notextmatches": "Walay misaktong teksto sa panid", "prevn": "miaging {{PLURAL:$1|$1}}", "nextn": "sunod {{PLURAL:$1|$1}}", + "nextn-title": "Sunod nga $1 {{PLURAL:$1|resulta|mga resulta}}", + "shown-title": "Pagpakita og $1 {{PLURAL:$1|ka resulta|ka mga resulta}} matag panid", "viewprevnext": "Tan-awa sa ($1 {{int:pipe-separator}} $2) ($3)", - "searchprofile-everything": "Tanan ng bagay", + "searchprofile-articles": "Mga panid sa sulod", + "searchprofile-images": "Multimedia", + "searchprofile-everything": "Tanan", + "searchprofile-articles-tooltip": "Pangita sa $1", + "searchprofile-images-tooltip": "Pangita og mga payl", + "searchprofile-everything-tooltip": "Pangita sa tanang sulod (lakip ang mga panid sa hisgot)", + "searchprofile-advanced-tooltip": "Pangita sa mga espesyal nga <i>namespaces</i>", "search-result-size": "$1 ({{PLURAL:$2|1 pulong|$2 ka mga pulong}})", - "search-redirect": "(redirek $1)", + "search-redirect": "(redirek gikan sa $1)", "search-section": "(bahin $1)", "search-suggest": "Imo bang buot ipasabot: $1", "search-interwiki-caption": "Mga kaubang proyekto", @@ -514,8 +533,6 @@ "saveprefs": "Tipigi", "restoreprefs": "Ibalik ang tanang default settings", "prefs-editing": "Nagausab", - "rows": "Mga row:", - "columns": "Mga kolum:", "searchresultshead": "Pangitaa", "stub-threshold": "Threshold para sa <a href=\"#\" class=\"stub\">stub link</a> formatting (bytes):", "recentchangesdays": "Mga adlaw nga ipakita sa bag-ong giusab:", @@ -571,6 +588,7 @@ "prefs-signature": "Pirma", "group-sysop": "Mga tagdumala", "grouppage-sysop": "{{ns:project}}:Mga tigdumala", + "right-writeapi": "Paggamit sa write API", "newuserlogpage": "Log sa paghimo'g gumagamit", "newuserlogpagetext": "Kini mao ang ''log'' sa bag-ong namugnang mga gumagamit.", "rightslog": "Log sa mga katungod sa gumagamit", @@ -596,15 +614,27 @@ "action-undelete": "ayaaw papasa ang kining panid", "action-suppressrevision": "i-rebyu ug ibalik ang kining nakatagong rebisyon", "nchanges": "$1 {{PLURAL:$1|ka pag-usab|ka mga pag-usab}}", + "enhancedrc-history": "kaagi", "recentchanges": "Mga bag-ong giusab", "recentchanges-legend": "Mga opsyon sa bag-ong pag-usab", "recentchanges-feed-description": "Bantayi ang kinabag-ohang mga pag-usab sa wiki niining feed.", + "recentchanges-label-newpage": "Kining pag-usab nagmugna og bag-ong panid", + "recentchanges-label-minor": "Ginagmay nga pag-usab", + "recentchanges-label-bot": "Kining pag-usab ginamit ang <i>bot</i>", + "recentchanges-label-unpatrolled": "Kining maong pag-usab wala pa masuhid", + "recentchanges-label-plusminus": "Ang gidak-on sa panid nausab ning gidaghanona sa byte", + "recentchanges-legend-heading": "<strong>Pagpasabot:</strong>", "rclistfrom": "Ipakita ang mga bag-ong pag-usab gikan $3 $2", "rcshowhideminor": "$1 menor nga pag-usab", + "rcshowhideminor-hide": "Tagoa", "rcshowhidebots": "$1 mga bot", - "rcshowhideliu": "$1 mga gumagamit nga naka-log-in", + "rcshowhidebots-show": "Tagoa", + "rcshowhideliu": "$1 ka mga gumagamit ang natala", + "rcshowhideliu-hide": "Tagoa", "rcshowhideanons": "$1 mga wala mailhing gumagamit", + "rcshowhideanons-hide": "Tagoa", "rcshowhidemine": "$1 akong mga pag-usab", + "rcshowhidemine-hide": "Tagoa", "rclinks": "Ipakita ang miaging $1 ka kausaban sa miaging $2 ka mga adlaw<br />$3", "diff": "kalainan", "hist": "kaagi", @@ -613,6 +643,7 @@ "minoreditletter": "m", "newpageletter": "B", "boteditletter": "b", + "rc-change-size-new": "$1 {{PLURAL:$1|byte|mga byte}} human sa pag-usab", "rc-enhanced-expand": "Ipakita ang mga detalye (JavaScript kinahanglan)", "rc-enhanced-hide": "Tagoa ang mga detalye", "recentchangeslinked": "Mga may kalabotang kausaban", @@ -637,10 +668,12 @@ "filehist-user": "Tiggamit", "filehist-dimensions": "Mga dimensyon", "filehist-comment": "Komento", - "imagelinks": "Mga sumpay sa payl", + "imagelinks": "Mga paggamit sa payl", "linkstoimage": "Ang mosunod nga {{PLURAL:$1|mga panid misumpay|$1 panid misumpay}} niining payl:", "sharedupload": "Ang kining payl gikan sa $1 ug mahimong gigamit sa ubang mga proyekto.", + "sharedupload-desc-here": "Kining maong payl gikan sa $1 ug mahimong gigamit sa ubang proyekto.\nAng [$2 deskripsyon] niini didto gipakita sa ubos.", "uploadnewversion-linktext": "Pag-upload og bag-ong bersyon niining payl", + "upload-disallowed-here": "Dili mo mahimong pulihan kining maong payl.", "randompage": "Bisan unsang panid", "statistics": "Estadistika", "nbytes": "$1 {{PLURAL:$1|byte|mga byte}}", @@ -653,6 +686,7 @@ "pager-older-n": "{{PLURAL:$1|mas daan1|mas daan $1}}", "booksources": "Mga reperensiyang libro", "booksources-search-legend": "Pangitaa ang mga reperensiyang libro", + "booksources-search": "Pangita", "log": "Mga log", "allpages": "Tanang panid", "prevpage": "Miaging panid ($1)", @@ -713,9 +747,10 @@ "namespace": "Ngalang espasyo:", "invert": "Baliha ang gipili", "blanknamespace": "(Meyn)", - "contributions": "Mga tampo ning gumagamit", + "contributions": "Mga tampo ning {{GENDER:$1|gumagamit}}", "contributions-title": "Mga tampo sa gumagamit para kang $1", "mycontris": "Akong tampo", + "anoncontribs": "Mga tampo", "contribsub2": "Para $1 ($2)", "uctop": "(hitaas)", "month": "Gikan sa bulan (ug mas sayo pa):", @@ -772,8 +807,9 @@ "tooltip-pt-mycontris": "Talaan sa akong mga tampo", "tooltip-pt-login": "Gihangyo ka namo sa pag-''log-in'', apan wala kini gikinahanglan aron makausab ka sa mga panid.", "tooltip-pt-logout": "Biya", + "tooltip-pt-createaccount": "Gidasig ka sa paghimo og akawnt ug sa pagpaila; apan dili kini kinahanglanon", "tooltip-ca-talk": "Panaghisgot kabahin sa panid", - "tooltip-ca-edit": "Mahimo mong usbon ang kining panid. Palihog gamita ang ''Paunang tan-aw'' nga tuplokanan bag-o nimotipigan ang panid.", + "tooltip-ca-edit": "Usba kining panid", "tooltip-ca-addsection": "Paghimo'g bag-ong seksyon", "tooltip-ca-viewsource": "Giprotektahan kining panid.\nPwede nimong tan-awon ang ginikanan.", "tooltip-ca-history": "Mga miaging rebisyon ning panid", @@ -790,7 +826,7 @@ "tooltip-n-mainpage-description": "Bisitaha ang Unang Panid", "tooltip-n-portal": "Kabahin sa proyekto, unsay imong mahimo, asa mangita sa mga impormasyon", "tooltip-n-currentevents": "Pangita og nahaunang impormasyon sa mga bag-ong panghitabo", - "tooltip-n-recentchanges": "Ang talaan sa mga bag-ong giusab sa wiki.", + "tooltip-n-recentchanges": "Ang talaan sa mga bag-ong giusab sa wiki", "tooltip-n-randompage": "Pag-abli og bisan unsang panid", "tooltip-n-help": "Ang dapit nga angay mong pangitaan.", "tooltip-t-whatlinkshere": "Talaan sa mga wiki nga panid nga misumpay dinhi", @@ -818,26 +854,34 @@ "tooltip-watch": "Ipuno kining maong panid sa imong mga gibantayan", "tooltip-rollback": "\"Rollback\" mo-revert sa (mga) pag-usab niining panid ngadto sa kinaulhing mitampo sa usa lang ka klik", "tooltip-undo": "Ang \"undo\" mo-revert niining pag-usab ug moabli sa edit form sa paunang tan-aw nga mode.\nPuyde dugangan og rason sa mubong sugid.", + "tooltip-summary": "Mubong sugid", + "simpleantispam-label": "Pagkontra sa <i>spam</i>.\n<strong>Ayaw</stong> ni sudli!", + "pageinfo-toolboxlink": "Impormasyon kabahin sa panid", "previousdiff": "Mas daang pag-usab", "nextdiff": "Mas bag-ong pag-usab →", "file-info-size": "$1 × $2 pixels, size sa payl: $3, MIME type: $4", "file-nohires": "Walay mas taas nga resolusyon.", "svg-long-desc": "SVG nga payl, nominally $1 × $2 pixels, size sa payl: $3", "show-big-image": "Tibuok resolusyon", + "show-big-image-preview": "Gidak-on ning maong paunang tan-aw: $1.", + "show-big-image-size": "$1 x $2 ka mga piksel", "bad_image_list": "Ang pormat mao ang mosunod:\n\nAng mga list items (mga linya nga nagsugod sa*) ang gikonsiderar.\nAng unang sumpay sa linya kinahanglang sumpay sa payl nga daot.\nAng bisan unsang mosunod nga mga sumpay sa parehong linya gikonsiderar nga mga eksepsyon, i.e. mga panid diin ang payl mahimong inline.", "metadata": "Metadata", "metadata-help": "Ang kining payl adunay dugang nga impormasyon, mahimong nadugang gikan sa digital camera o scanner nga gigamit sa paghimo o pag-digitize niini.\nKon ang payl namodipikar gikan sa orihinal nga estado, ang ubang detalye mamahimong dili moreplek sa namodipikar nga payl.", "metadata-expand": "Ipakita ang mas daghang detalye", "metadata-collapse": "Tagoa ang mga ekstended nga detalye", - "metadata-fields": "Ang XIF metadata fields nga nakatala niining mensahe iapil sa display sa panid sa imahen kon gi-collapse ang metadata table.\nAng uban default nga nakatago.\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": "Ang <i>XIF metadata fields</i> nga nakatala niining mensahe iapil sa panid sa hulagway kon gi-<i>collapse</i> ang han-ay sa <i>metadata</i>.\n\nAng uban nakatago gawas kon ipakita.\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", "namespacesall": "tanan", "monthsall": "tanan", "watchlisttools-view": "Tan-awa ang may kalabotan nga mga pag-usab", "watchlisttools-edit": "Tan-awa ug usba ang mga gibantayan", "watchlisttools-raw": "Usba ang hilaw nga talaan sa gibantayan", "specialpages": "Espesyal nga mga panid", + "tag-filter": "[[Special:Tags|Tag]] nga pilter:", + "tag-list-wrapper": "([[Special:Tags|{{PLURAL:$1|Tag|Mga tag}}]]: $2)", "revdelete-restricted": "mga na-aplay nga restriksyon sa mga tagdumala", "revdelete-unrestricted": "gitangtang ang mga restriksyon alang sa mga tagdumala", + "logentry-newusers-create": "Ang akawnt nga $1 {{GENDER:$2|namugna}}", "rightsnone": "(wala)", - "revdelete-summary": "mubong sugid sa pag-usab" + "searchsuggest-search": "Pangitaa {{SITENAME}}" } diff --git a/languages/i18n/ckb.json b/languages/i18n/ckb.json index 0d9d219173..3933338069 100644 --- a/languages/i18n/ckb.json +++ b/languages/i18n/ckb.json @@ -18,7 +18,8 @@ "Macofe", "Pirehelokan", "Diyariq", - "Sarchia" + "Sarchia", + "Lost Whispers" ] }, "tog-underline": "ھێڵ ھێنان بەژێر بەستەرەکان:", @@ -33,9 +34,11 @@ "tog-editondblclick": "دەستکاریی پەڕە بە دووکرتە", "tog-editsectiononrightclick": "دەستکاریی بەشەکان بە کرتەی ڕاست لەسەر سەردێڕی بەشەکان", "tog-watchcreations": "ئەو پەڕانەی من دروستم کردوون و ئەو پەڕگانە من بارم کردوون زیاد بکە بە لیستی چاودێڕییەکەم", - "tog-watchdefault": "ئەو پەڕانە و ئەو پەڕگانە من دەستکاریان دەکەم زیاد بکە بە لیستی چاودێڕییەکەم", + "tog-watchdefault": "ئەو پەڕانە و ئەو پەڕگانە من دەستکاریان دەکەم زیاد بکە بە لیستی چاودێڕییەکەم", "tog-watchmoves": "ئەو پەڕانە و ئەو پەڕگانە کە من گواستومنەتەوە زیاد بکە بە لیستی چاودێڕییەکەم", "tog-watchdeletion": "ئەو پەڕانە و ئەو پەڕگانە من سڕیومنەتەوە زیاد بکە بە لیستی چاودێڕییەکەم", + "tog-watchuploads": "ئەو پەڕگە نوێیانەی باریان دەکەم زیاد بکە ناو پێڕستی چاودێرییەکەمەوە", + "tog-watchrollback": "ئەو پەڕانەی کە کرداری گەڕاندنەوەم لەسەر ئەنجام داون زیاد بکە ناو پێڕستی چاودێرییەکەمەوە", "tog-minordefault": "ھەموو دەستکارییەکان بە ورد نیشان بکە لە حاڵەتی دیفاڵت", "tog-previewontop": "پێشبینین بەرلە چوارچێوەی دەستکاری نیشان بدە‌", "tog-previewonfirst": "لە یەکەم دەستکاری دا پێشبینین نیشان بدە", @@ -156,7 +159,7 @@ "newwindow": "(لە پەڕەیەکی نوێدا دەکرێتەوە)", "cancel": "ھەڵوەشاندنەوە", "moredotdotdot": "زیاتر", - "morenotlisted": "ئەم لیستەیە تەواو نییە", + "morenotlisted": "ئەم لیستە لەوانەیە تەواو نەبێت", "mypage": "پەڕە", "mytalk": "لێدوان", "anontalk": "لێدوان", @@ -183,6 +186,7 @@ "searcharticle": "بڕۆ", "history": "مێژووی پەڕە", "history_short": "مێژووی پەڕە", + "history_small": "مێژوو", "updatedmarker": "لە دوایین سەردانمدا نوێ کراوەتەوە", "printableversion": "وەشانی ئامادەی چاپ", "permalink": "بەستەری ھەمیشەیی", @@ -190,6 +194,7 @@ "view": "بینین", "view-foreign": "لە $1دا بیبینە", "edit": "دەستکاری", + "edit-local": "دەستکاریکردنی زانیارییە ناوخۆییەکان", "create": "دروستکردن", "create-local": "وەسفی ناوچەیی زۆر بکە", "editthispage": "دەستکاری ئەم پەڕەیە بکە‌", @@ -213,6 +218,9 @@ "talk": "وتووێژ", "views": "بینینەکان", "toolbox": "ئامرازەکان", + "tool-link-userrights": "بینینی گرووپەکانی {{GENDER:$1|بەکارھێنەر}}", + "tool-link-userrights-readonly": "بینینی گرووپەکانی {{GENDER:$1|بەکارھێنەر}}", + "tool-link-emailuser": "ئیمەیلی ئەم {{GENDER:$1|بەکارھێنەر}}ە", "userpage": "بینینی پەڕەی بەکارھێنەر", "projectpage": "پەڕەی پرۆژە نیشان بدە", "imagepage": "پەڕەی پەڕگە نیشان بدە", @@ -232,6 +240,7 @@ "jumptonavigation": "ڕێدۆزی", "jumptosearch": "گەڕان", "view-pool-error": "ببورە، لەم کاتەدا ڕاژەکارەکان زیادەباریان لە سەرە.\nژمارەیەکی زۆر لە بەکارھێنەران ھاوکات ھەوڵی دیتنی ئەم پەڕەیان داوە.\nتکایە پێش ھەوڵی دووبارە بۆ دیتنی ئەم پەڕە، نەختێک بوەستە.\n\n$1", + "generic-pool-error": "ببورە، لەم کاتەدا ڕاژەکارەکان زیادەباریان لە سەرە.\nژمارەیەکی زۆر لە بەکارھێنەران ھاوکات ھەوڵی دیتنی ئەم پەڕەیان داوە.\nتکایە پێش ھەوڵی دووبارە بۆ دیتنی ئەم پەڕە، کەمێک بووەستە.", "pool-timeout": "لەکات دەرچوون ڕوویدا لەکاتی چاوەڕوانکردنی داخستندا", "pool-errorunknown": "هەڵەی نەزانراو", "aboutsite": "دەربارەی {{SITENAME}}", @@ -344,7 +353,7 @@ "viewsource": "بینینی سەرچاوە", "viewsource-title": "سەرچاوەی $1 ببینە", "actionthrottled": "چالاکی پێشی پێ گیرا", - "actionthrottledtext": "بە مەبەستی پێشگریی لە سپەم، ڕێگە نادرێت تۆ لە ماوەیەکی کورت دا لە سەر یەک ئەمە زۆر جار ئەنجام بدەی، وە ئیستا تۆ لە ڕادە بەدەرت کردووە.\nتکایە پاش چەند خولەک دووبارە تاقی بکەوە.", + "actionthrottledtext": "بە مەبەستی پێشگریی لە خراپکاری، ڕێگە نادرێت تۆ لە ماوەیەکی کورت دا لە سەر یەک ئەمە زۆر جار ئەنجام بدەی، ئیستا تۆ لە ڕادە بەدەرت کردووە.\nتکایە پاش چەند خولەک دووبارە تاقی بکەوە.", "protectedpagetext": "بۆ بەرگری لە دەستکاریکردن یان چالاکییەکانی تر ئەم پەڕەیە پارێزراوە.", "viewsourcetext": "دەتوانی سەرچاوەی ئەم پەڕە ببینی و کۆپیی بکەی٫", "viewyourtext": "دەتوانی ژێدەری <strong>دەستکارییەکەت</strong> لەم پەڕەیەدا ببینی و کۆپی بکەی.", @@ -369,6 +378,8 @@ "virus-scanfailed": "سکەن ئەنجام نەدرا(کۆد $1)", "virus-unknownscanner": "دژەڤایرس نەناسراوە:", "logouttext": "'''ئێستا چوویتە دەرەوە.'''\n\nئاگادار بە ھەتا ئەو کاتەی کەشی وێبگەڕەکەت پاک دەکەیتەوە، لەوانەیە ھەندێک لە پەڕەکان وا پێشان بدرێن کە ھێشتا لە ژوورەوە بیت.", + "cannotlogoutnow-title": "ناتوانیت لە ئێستادا بچیتە دەرەوە", + "cannotlogoutnow-text": "توانای چوونە دەرەوەت نییە لەکاتی بەکارھێنانی $1", "welcomeuser": "بەخێربێیت، $1!", "welcomecreation-msg": "ھەژمارەکەت دروست کرا.\nلە بیرت نەچێت [[Special:Preferences|ھەڵبژاردەکانی {{SITENAME}}]]ت بگۆڕی.", "yourname": "ناوی بەکارھێنەری:", @@ -384,44 +395,47 @@ "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": "بچۆ ژوورەوە / ھەژمار دروست بکە", - "userlogin": "بچۆ ژوورەوە / ھەژمار دروست بکە", - "userloginnocreate": "بچۆ ژوورەوە", "logout": "بچۆ دەرەوە", "userlogout": "بچۆ دەرەوە", "notloggedin": "لە ژوورەوە نیت", "userlogin-noaccount": "ھەژمارت نییە؟", "userlogin-joinproject": "ببە بە ئەندامی {{SITENAME}}", - "nologin": "ھەژمارت نییە؟ $1.", - "nologinlink": "ھەژمارێک دروست بکە", "createaccount": "ھەژمار دروست بکە", - "gotaccount": "ھەژمارت ھەیە لێرە؟ $1.", - "gotaccountlink": "بچۆ ژوورەوە", - "userlogin-resetlink": "وردەکارییەکانی چوونەژوورەوەتت لە بیر کردووە؟", "userlogin-resetpassword-link": "تێپەڕوشەکەت بیر کردووە؟", "userlogin-helplink2": "یارمەتی بۆ چوونەژوورەوە", "userlogin-loggedin": "تۆ ھەر ئێستا بە ناوی {{GENDER:$1|$1}} چوویتە ژوورەوە.\nفۆرمی ژێرەوە بەکاربھێنە بۆ چوونەژوورەوە وەک بەکارھێنەرێکی تر.", + "userlogin-reauth": "دەبێت دووبارە بچیتە ژوورەوە بۆ دڵنیا بوونەوە لە {{GENDER:$1|$1}}بوونت.", "userlogin-createanother": "ھەژمارێکی تر دروست بکە", "createacct-emailrequired": "ناونیشانی ئیمەیل", "createacct-emailoptional": "ناونیشانی ئیمەیل (دڵخوازانە)", "createacct-email-ph": "ناونیشانی ئیمەیلەکەت بنووسە", "createacct-another-email-ph": "ناونیشانی ئیمەیڵەکەت بنووسە", "createaccountmail": "تێپەڕوشەیەکی ھەڕەمەکیی کاتی بەکاربھێنە و بینێرە بۆ ناونیشانی ئیمەیلی دیاریکراو", + "createaccountmail-help": "دەتوانرێت بەکار بھێندرێت بۆ دروستکردنی ھەژمار بۆ کەسێکی تر بەبێ زانینی تێپەڕ وشەکەی.", "createacct-realname": "ناوی ڕاستی (دڵخوازانە)", - "createaccountreason": "هۆکار:", "createacct-reason": "ھۆکار", "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|پەڕە}}", "createacct-benefit-body3": "دوایین {{PLURAL:$1|بەشداربوو|بەشداربووان}}", "badretype": "تێپەڕوشەکان لەیەک ناچن.", + "usernameinprogress": "دروستکردنی ھەژمارێک بۆ ئەم ناوی بەکارھێنەرە لە پڕۆسەی بەرھەمھێناندایە. تکایە چاوەڕوان بە.", "userexists": "ئەو ناوەی تۆ داوتە پێشتر بەکارھێنراوە.\nناوێکی دیکە ھەڵبژێرە.", "loginerror": "ھەڵەی چوونەژوورەوە", "createacct-error": "ھەڵە لە دروستکردنی ھەژمار", @@ -429,16 +443,19 @@ "nocookiesnew": "ھەژماری بەکارھێنەری دروست کرا، بەڵام نەچوویتەوە ژوورەوە.\n{{SITENAME}} بۆ چوونەوە ژوورەوەی بەکارھێنەر کوکی بەکاردەھێنێت.\nتۆ کوکییەکەکەت لەکارخستووە.\nتکایە کوکییەکە کارا بکە، پاشان بە ناوی بەکارھێنەری و تێپەڕوشەکەت بچۆ ژوورەوە.", "nocookieslogin": "{{SITENAME}} بۆ چوونەژوورەوە لە کووکی‌یەکان کەڵک وەرئەگرێت.\nڕێگەت نەداوە بە کووکی‌یەکان.\nڕێگەیان پێ بدەو و دیسان تێبکۆشە.", "nocookiesfornew": "ھەژماری بەکارھێنەری دروست نەکرا، چون ناتوانین سەرچاوەکەی پشتڕاست بکەینەوە.\nدڵنیا بە کوکییەکانت چالاک کردووە، پەڕەکە بار بکەوە و دیسان ھەوڵ بدە.", + "createacct-loginerror": "ھەژمارەکە بە سەرکەوتوانە دروست کرا، بەڵام ناتوانرێت بە شێوەیەکی ئۆتۆماتیکی بکرێیتە ژوورەوە. تکایە سەردانی [[Special:UserLogin|ڕێنماییەکانی چوونەژوورەوە]] بکە.", "noname": "ناوی بەکارهێنەرییەکی گۆنجاوت دیاری نەکردووه.", "loginsuccesstitle": "چوویە ناوەوە", "loginsuccess": "'''ئێستا بە ناوی «$1»ەوە لە {{SITENAME}} چوویتەتەژوورەوە.'''", - "nosuchuser": "بەکارھێنەرێک بە ناوی «$1» نیە.\nناوی بەکارھێنەر بە گەورە و بچووک بوونی پیتەکان ھەستیارە.\nڕێنووسەکەت چاولێکەرەوە، یان [[Special:CreateAccount|ھەژمارێکی نوێ دروست بکە]].", + "nosuchuser": "بەکارھێنەرێک بە ناوی «$1» نییە.\nناوی بەکارھێنەر بە گەورە و بچووک بوونی پیتەکان ھەستیارە.\nڕێنووسەکەت چاولێکەرەوە، یان [[Special:CreateAccount|ھەژمارێکی نوێ دروست بکە]].", "nosuchusershort": "بەکارھێنەرێک بە ناوی «$1»ەوە نیە.\nبە نووسراوەکەتدا بچۆرەوە.", "nouserspecified": "دەبێت ناوێکی بەکارھێنەری دەستنیشان بکەیت.", "login-userblocked": "ئەم بەکارهێنەرە بڵۆک کراوە. چوونەژوورەوە ڕێگەپێنەدراوە.", "wrongpassword": "تێپەڕوشەی ھەڵە.\nتکایە دووبارە تێبکۆشە.", "wrongpasswordempty": "تێپەڕەوشەی لێدراو بەتاڵبوو.\nتکایە هەوڵ بدەوە.", "passwordtooshort": "تێپەڕوشەکەت لانی کەم دەبێ {{PLURAL:$1|Ù¡ پیت|$1 پیت}} بێت.", + "passwordtoolong": "تێپەڕ وشەکان ناتوانرێت لە {{PLURAL:$1|Ù¡ کارەکتەر|$1 کارەکتەر}} درێژتر بێت.", + "passwordtoopopular": "تێپەڕ وشە باوەکان ناتواندرێت دابنرێن. تکایە تێپەڕ وشەیەکی دەگمەنتر ھەڵبژێرە.", "password-name-match": "تێپەڕوشەکەت ئەبێ جیاواز بێت لە ناوی بەکارهێنەریت.", "password-login-forbidden": "بەکارهێنانی ئەم ناوی بەکارهێنەر و تێپەڕەووشەیە قەدەغەکراوە.", "mailmypassword": "تێپەڕوشەکە ڕێک بخەوە", @@ -447,7 +464,7 @@ "noemail": "ھیچ ئەدرەسێکی ئیمەیل تۆمار نەکراوە بۆ بەکارھێنەر « $1 ».", "noemailcreate": "دەبێ ناونیشانێکی دروستی ئیمەیل بنووسی", "passwordsent": "تێپەڕوشەیەکی نوێ نێررا بۆ ئەدرەسی ئیمێلی تۆمارکراوی «$1».\nتکایە دوای وەرگرتنی، دیسان بچۆ ژوورەوە.", - "blocked-mailpassword": "ئادرەسی ئای‌پی تۆ بۆ دەستکاری کردن بەستراوه بۆیە بۆ بەرگری لە بەکارهێنانی نابەجێ ئەنجامی گەڕانەوەی تێپەڕوشە ڕیگە نەدراوە.", + "blocked-mailpassword": "ناونیشانی ئای پی تۆ بۆ دەستکاری کردن بەستراوه. بۆ بەرگری لە بەکارهێنانی نابەجێ، ئەنجامی گەڕانەوەی تێپەڕوشە ڕیگە نەدراوە لەسەر ئەم ناونیشانە ئای پییە.", "eauthentsent": "ئیمێلێکی پشتڕاستکردنەوە بۆ ناونیشانی ئیمێلی دیاریکراو نێررا.\nپێش ئەوەی ئیمەیلی تر بۆ ئەم ھەژمارە بنێررێت، دەبێت پەیڕەوی ڕێکارەکانی ناو ئیمێلەکە بکەیت بۆ پشتڕاستکردنەوەی ئەوەی کە ئەم هەژمارە بە ڕاستی ھی تۆیە.", "throttled-mailpassword": "ئیمەیلێکی ڕیکخستنەوەی تێپەڕوشە لە ماوەی {{PLURAL:$1|ساعەت}}ی ڕابردوودا نێردراوە.\nبۆ ڕێگری لە بەکارھێنانی خراپ، ھەر {{PLURAL:$1|ساعەت}} تاکە یەک ئیمەیلی ڕیکخستنەوەی تێپەڕوشە دەنێردرێت.", "mailerror": "هەڵە ڕوویدا لە ناردنی ئیمەیل: $1", @@ -464,11 +481,17 @@ "createaccount-title": "درووست کردنی ھەژمار بۆ {{SITENAME}}", "createaccount-text": "کەسێک ھەژمارێکی بۆ ناونیشانی ئیمێلی تۆ لە {{SITENAME}}دا ($4) بە ناوی «$2»ـەوە و بە تێپەڕوشەی «$3»ـەوە دروست کردووە.\nدەبێت ھەر ئێستا بچیتە چوورەوە و تێپەڕوشەیەکەت بگۆڕیت.\n\nئەگەر ئەم ھەژمارە بە ھەڵە دروست کراوە، دەکرێت گوێ بەم پەیامە نەدەیت.", "login-throttled": "زۆر زۆر ھەوڵت داوە بۆ چوونە ژوورەوە.\nتکایە $1 بوەستە پێش ھەوڵی دووبارە.", + "login-abort-generic": "چوونەژوورەوەکەت شکستی ھێنا - بەجێ ھێڵدرا", + "login-migrated-generic": "ھەژمارەکەت گوازراوەتەوە و ناوی بەکارھێنەرەکەت چی تر لەسەر ئەم ویکیپیدیایە بوونی نییە.", "loginlanguagelabel": "زمان: $1", + "suspicious-userlogout": "داواکارییەکەت بۆ چوونە دەرەوە ڕەت کرایەوە لەبەر ئەوەی وا دیارە داواکارییەکە لەلایەن براوسەرێکی شکاوەوە نێردراوە.", + "createacct-another-realname-tip": "ناوی ڕاستیت پێویست نییە.\nئەگەر ھەڵت بژارد کە دایبنێیت، ئەوا بەکار دەھێندرێت بۆ ئاماژە کردن بە بەکارھێنەر بۆ بەشدارییەکانیان.", "pt-login": "بچۆ ژوورەوە", "pt-login-button": "بچۆ ژوورەوە", + "pt-login-continue-button": "بەردەوامبوونی چوونەژوورەوە", "pt-createaccount": "ھەژمار دروست بکە", "pt-userlogout": "بچۆ دەرەوە", + "user-mail-no-addy": "ھەوڵی ناردنی ئیمەڵ درا بەبێ ھەبوونی ناونیشانێکی ئیمەیڵ.", "changepassword": "تێپەڕوشە بگۆڕە", "resetpass_announce": "بۆ کۆتایی چوونە ژوورەوە، دەبێت تێپەڕوشەیەکی نوێ دابنێیت.", "resetpass_text": "<!-- تێپه‌ڕه‌وشه‌ی هه‌ژماره‌كه‌ سفر بكه‌ره‌وه‌ -->", @@ -478,18 +501,32 @@ "retypenew": "تێپەڕوشەی نوێ دوبارە بنووسەوە:", "resetpass_submit": "تێپەڕوشە رێکخە و بچۆ ژوورەوە", "changepassword-success": "تێپەڕەوشەکەت گۆڕدرا!", + "changepassword-throttled": "تۆ ھەوڵی زۆری چوونەژوورەوەت داوە. \nتکایە $1 چاوەڕوان بە پێش دووبارە ھەوڵدانەوە.", + "botpasswords": "تێپەڕ وشەی بۆت", + "botpasswords-disabled": "تێپەڕ وشەی بۆتەکان کوژێنرانەوە.", + "botpasswords-label-appid": "ناوی بۆت", "botpasswords-label-create": "دروستکردن", "botpasswords-label-update": "نوێکردنەوە", "botpasswords-label-cancel": "ھەڵوەشاندنەوە", "botpasswords-label-delete": "سڕینەوە", "botpasswords-label-resetpassword": "ڕێکخستنەوەی تێپەڕوشە", + "botpasswords-bad-appid": "ناوی بۆت «$1» دروست نییە.", + "botpasswords-created-title": "تێپەڕ وشەی بۆت دروست کرا", + "botpasswords-updated-title": "تێپەڕ وشەی بۆتەکە نوێ کرایەوە", + "botpasswords-deleted-title": "تێپەڕ وشەی بۆت سڕدرایەوە", "resetpass_forbidden": "تێپەڕوشەکە ناگۆڕدرێت", "resetpass-no-info": "بۆ گەیشتنی راستەوخۆ بەم پەڕە ئەشێ بچیتە ژوورەوە.", "resetpass-submit-loggedin": "تێپەڕوشە بگۆڕە", "resetpass-submit-cancel": "ھەڵوەشاندنەوە", "resetpass-wrong-oldpass": "تێپەڕوشەی ھەنووکەیی یان تێپەڕوشەی کاتی ھەڵەیە.\nوا دیارە تێپەڕوشەکەت بە سەرکەوتوویی گۆڕدراوە یان داوای تێپەڕوشەیەکی نوێت کردووە.", + "resetpass-recycled": "تکایە تێپەڕوشەکەت بگۆڕە بە دانەیەکی جیاواز لەوەی ئێستا.", + "resetpass-temp-emailed": "تۆ بە تێپەڕوشەیەکی کاتیی ھاتوویتە ژوورەوە. بۆ تەواوکردنی چوونە ژوورەوە تێپەڕوشەیەکی نوێ لێرە دابنێ.", "resetpass-temp-password": "تێپەڕوشەی کاتی:", + "resetpass-expired": "تێپەڕ وشەکەت بەسەر چووە، تکایە تێپەڕ وشەیەکی نوێ دابنێ بۆ چوونە ژوورەوە", + "resetpass-validity-soft": "تێپەڕ وشەکەت دروست نییە: $1", "passwordreset": "ڕێکخستنەوەی تێپەڕوشە", + "passwordreset-text-one": "ئەم فۆرمە تەواو بکە بۆ بەدەستھێنانی تێپەڕ وشەیەکی کاتیی بە ئیمەیڵ", + "passwordreset-text-many": "{{PLURAL:$1|یەکێک لەم بۆشاییانە بڕ بکەرەوە بۆ بەدەستھێنانی تێپەڕ وشەیەکی کاتیی بە ئیمەیڵ}}", "passwordreset-username": "ناوی بەکارھێنەری:", "passwordreset-domain": "پاوان:", "passwordreset-email": "ناونیشانی ئیمەیل:", @@ -497,15 +534,20 @@ "passwordreset-emailtext-ip": "‫کەسێک (لەوانەیە خۆت، بە ناونیشانی ئایپیی $1) داوای ڕیسێتکردنەوەی تێپەڕوشەکەت لە {{SITENAME}}دا ($4) کردووە. {{PLURAL:$3|ھەژماری بەکارھێنەریی ژێرەوە پەیوەندیی ھەیە|ھەژمارە بەکارھێنەرییەکانی ژێرەوە پەیوەندییان ھەیە}} بەم ناونیشانەی ئیمەیلەوە:\n\n$2\n\n{{PLURAL:$3|ئەم تێپەڕوشە کاتییە|ئەم تێپەڕوشە کاتییانە}} لە {{PLURAL:$5|ڕۆژێک|$5 ڕۆژ}}دا بەسەردەچێت.\nدەبێ بچیتە ژوورەوە و ھەر ئێستا تێپەڕوشەیەکی نوێ ھەڵبژێریت. ئەگەر کەسێکی تر ئەم داواکارییەی کردووە،\nیان ئەگەر تێپەڕوشە سەرەتاییەکەت ھاتووەتەوە بیرت و ئیتر ناتەوێ بیگۆڕی، دەتوانی گوێ بەم پەیامە نەدەیت و ھەر لە تێپەڕوشە کۆنەکەت کەڵک وەربگریت.", "passwordreset-emailtext-user": "‫بەکارھێنەر $1 لە {{SITENAME}} ڕیسێتکردنەوەی تێپەڕوشەکەت لە {{SITENAME}}دا ($4) کردووە. {{PLURAL:$3|ھەژماری بەکارھێنەریی ژێرەوە پەیوەندیی ھەیە|ھەژمارە بەکارھێنەرییەکانی ژێرەوە پەیوەندییان ھەیە}} بەم ناونیشانەی ئیمەیلەوە:\n\n$2\n\n{{PLURAL:$3|ئەم تێپەڕوشە کاتییە|ئەم تێپەڕوشە کاتییانە}} لە {{PLURAL:$5|ڕۆژێک|$5 ڕۆژ}}دا بەسەردەچێت.\nدەبێ بچیتە ژوورەوە و ھەر ئێستا تێپەڕوشەیەکی نوێ ھەڵبژێریت. ئەگەر کەسێکی تر ئەم داواکارییەی کردووە، یان ئەگەر تێپەڕوشە سەرەتاییەکەت ھاتووەتەوە بیرت و ئیتر ناتەوێ بیگۆڕی، \nدەتوانی گوێ بەم پەیامە نەدەیت و ھەر لە تێپەڕوشە کۆنەکەت کەڵک وەربگریت.", "passwordreset-emailelement": "ناوی بەکارھێنەری: \n$1\n\nتێپەڕوشەی کاتی: \n$2", - "passwordreset-emailsentemail": "ئیمەیلێکی ڕیسێتکردنەوەی تێپەڕوشە نێردرا.", - "changeemail": "گۆڕینی ناونیشانی ئیمەیل", - "changeemail-header": "ناونیشانی ئیمەیلی ھەژمار بگۆڕە", + "passwordreset-emailsentemail": "ئەگەر ناونیشانی ئەم ئیمەیڵە بەستراوەتەوە بە ھەژمارەکەتەوە، ئەوا ڕێکخستنەوەی تێپەڕ وشەت بە ئیمەیڵ پێ دەگات.", + "passwordreset-emailsentusername": "ئەگەر ناونیشانی ئەم ئیمەیڵە بەستراوەتەوە بە ناوی بەکارھێنەرتەوە، ئەوا ڕێکخستنەوەی تێپەڕ وشەت بە ئیمەیڵ پێ دەگات.", + "passwordreset-invalidemail": "ناونیشانی ئیمەیڵی نەگونجاو", + "passwordreset-nodata": "نە ئیمەیڵێک یان ناوی بەکارھێنەرێک ھەڵبژێردرا", + "changeemail": "گۆڕین یان لابردنی ناونیشانی ئیمەیل", + "changeemail-header": "ئەم فۆرمە تەواو بکە بۆ گۆڕینی ناونیشانی ئیمەیڵەکەت. ئەگەر ئارەزووی ئەوە دەکەیت کە ھەر ئیمەیڵێک لە ھەژمارەکەت بکەیتەوە، بۆشایی ئیمەیڵی نوێ بە بەتاڵی بەجێ بھێڵە لەکاتی پاشەکەوتکردنی فۆرمەکە.", "changeemail-no-info": "بۆ گەیشتنی راستەوخۆ بەم پەڕە دەبێت بچیتە ژوورەوە.", "changeemail-oldemail": "ئەدرەسی ئیمەیڵی ئێستا:", "changeemail-newemail": "ناونیشانی ئیمەیلی نوێ:", + "changeemail-newemail-help": "ئەم بۆشاییە دەبێت خاڵی بێت ئەگەر دەتەوێت ناونیشانی ئیمەیڵەکەت لابەریت. تۆ ناتوانیت ئیمەیڵی ڕێکخستنەوەی تێپەڕە وشە یاخود ھەر ئیمەیڵێکی تری ئەم ویکییەت پێ بگات ئەگەر ناونیشانی پۆستە ئەلیکترۆنییەکە لاببرێت.", "changeemail-none": "(ھیچ)", "changeemail-password": "تێپەڕوشەکەت لە {{SITENAME}}:", "changeemail-submit": "ئەمەیل بگۆڕە", + "changeemail-nochange": "تکایە ناونیشانی ئیمەیڵێکی جیاواز بەکار بھێنە.", "bold_sample": "دەقی ئەستوور", "bold_tip": "دەقی ئەستوور", "italic_sample": "دەقی لار", @@ -525,21 +567,26 @@ "sig_tip": "واژووەکەت بە مۆری ڕێکەوتەوە", "hr_tip": "هێڵی ئاسۆیی (دەگمەن بەکاری بێنە)", "summary": "کورتەی دەستکاری:", - "subject": "بابەت/سەردێڕ:", + "subject": "بابەت:", "minoredit": "ئەمە دەستکارییەکی بچووکە", "watchthis": "ئەم پەڕەیە بخە ژێر چاودێری", "savearticle": "پەڕەکە پاشەکەوت بکە", "savechanges": "پاشەکەوتکردنی گۆڕانکارییەکان", + "publishpage": "بڵاوکردنەوەی پەڕە", + "publishchanges": "پاشەکەوتکردنی گۆڕانکارییەکان", "preview": "پێشبینین", "showpreview": "پێشبینین نیشان بدە", "showdiff": "گۆڕانکارییەکان نیشان بدە", + "blankarticle": "<strong>ئاگاداری:</strong> ئەو پەڕەیەی کە ھەوڵی دروستکردنی دەدەیت واڵایە. ئەگەر کرتە لەسەر «{{int:savearticle}}» بکەیت دووبارە، پەڕەکە بەبێ ھیچ ناوەڕۆکێک دروست دەبێت.", "anoneditwarning": "<strong>ھۆشیار بە:</strong> نەڕۆیشتووتەتە ژوورەوە. ھەر دەستکارییەک بکەیت ناونیشانی IPیەکەت بۆ ھەموو کەسێک دیار دەبێت. بەڵام ئەگەر <strong>[$1 بچیتە ژوورەوە]</strong> یان <strong>[$2 ھەژمارێک دروست بکەیت]</strong>، دەستکارییەکانت بە ناوی بەکارھێنەرییەکەتەوە بڵاو دەبێتەوە و لە چەند قازانجی تریشی ھەیە.", "anonpreviewwarning": "«نەڕۆشتوویتە ژوورەوە. پاشەکەوتکردن، ئەدرەسی IPەکەت لە مێژووی دەستکاریی ئەم پەڕە تۆمار دەکات.»", "missingsummary": "'''وە بیر خستنەوە:''' پوختەیەکت نەنووسیوە بۆ چۆنیەتی گۆڕانکارییەکەت.\nئەگەر جارێکی تر پاشکەوت کردن لێبدەی، بێ پوختە تۆمار دەکرێ.", + "selfredirect": "<strong>ئاگاداری:</strong> تۆ خەریکی گواستنەوەی ئەم پەڕەیەیت بۆ سەر خۆی. لەوانەیە خەریکی گواستنەوەی پەڕەیەکی ھەڵە بیت یان ھەوڵی گواستنەوە دەدەیت بۆ ئامانجێکی ھەڵە. \nئەگەر دەەبارە کرتە لەسەر «{{int:savearticle}}» بکەیتەوە، ڕەوانەکەرەکە دروست دەکرێت بەھەرحاڵ.", "missingcommenttext": "تکایە لە خوارەوە شرۆڤەیەک بنووسە.", "missingcommentheader": "'''بیرهێنانەوە:''' بۆ ئەم بۆچوونەت سەردێڕ\\بابەت ڕاچاو نەکردووە.\nئەگەر دیسان «{{int:savearticle}}» لێبدەی، دەستکاریەکەت بێ سەردێڕ یان بابەت پاشەکەوت دەبێ.", "summary-preview": "پێشبینینی کورتە:", - "subject-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\nئای‌پی ئەدرەسی ئێستای تۆ $3 و پێناسەی بەربەست‌کراو #$5.\nتکایە لە هەر پرس و داواکاریەکت‌دا هەموو وردەکاریەکانی سەرەوە بگونجێنە.", "autoblockedtext": "ناونیشانی IPی تۆ بە شێوەی خۆکارانە بەرگیری لێ کراوە چوونکە بەکارھێنەرێکی دیکە بە خراپی بە کاری ھێناوە و بە دەستی $1 بەرگیری لێ کراوە.\nبەم ھۆکارەوە:\n\n:<em>$2</em>\n\n* دەست پێ کردنی بەرگیری: $8\n* بە سەر چوونی بەرگیری: $6\n* Intended blockee: $7\n\nدەتوانیت پەیوەندی بکەیت بە $1 یان یەکێکی دیکە لە [[{{MediaWiki:Grouppage-sysop}}|بەڕێوەبەران]] بۆ وتووێژ لە سەر بەرگیرییەکە.\n\nتێ بگە کە ناتوانیت ئامرازی «ئیمێل بنێرە بۆ ئەم بەکارھێنەرە» بە کار بھێنیت مەگەر ئەوەی کە پێشتر لە [[Special:Preferences|ھەڵبژاردەکانی بەکارھێنەر]]تدا ناونیشانێکی گونجاوی ئیمێلت تۆمار کردبێت و بەرگیریت لێ نەکرابێت لە بەکارھێنانی ئەو ئامرازەش.\n\nناونیشانی IPی ئێستای تۆ $3ـە و پێناسەی یەرگیرییەکە #$5ـە.\nتکایە ھەموو وردەکارییەکانی سەرەوە ھەبێت لە ھەر پرس و داوایک کە دەیکەیت.", @@ -555,13 +602,14 @@ "accmailtext": "تێپەڕوشەیەک کە بە هەڕەمەکی بۆ [[User talk:$1|$1]] دروست کرا، نێررا بۆ $2. دەتوانیت لە پەڕەی <em>[[Special:ChangePassword|گۆڕینی تێپەڕوشەدا]]</em> لە کاتی چوونەژوورەوەدا بیگۆڕی.", "newarticle": "(نوێ)", "newarticletext": "بە دوای بەستەری پەڕەیەک کەوتووی کە ھێشتا دروست نەکراوە.\nبۆ دروست کردنی پەڕەکە، لە چوارچێوەکەی خوارەوە دەست بکە بە تایپ کردن. (بۆ زانیاری زورتر\n[$1 یارمەتی] ببینە).\nئەگەر بە ھەڵەوە ھاتویتە ئێرە، لە سەر دوگمەی '''back'''ی وێبگەڕەکەت کلیک بکە.", - "anontalkpagetext": "----''ئەمە لاپەڕەی وتووێژە بۆ بەکارهێنەرێکی نەناسراوە کە هێشتا هەژمارەی درووست‌نەکردووه یان کەڵکی‌ لێ وەرناگرێ .\nلەبەر ئەوە مەجبوورین ئای‌پی ئەدرەسەکی ژمارەیی بۆ ناساندنی بەکار بێنین.\nئای‌پی ئەدرەسی وا لەوانەیه لە لایەن چەندین بەکارهێنەروە بەکاربێت.\nئەگەر تۆ بەکارهێنەرێکی نەناسراوی و هەست ئەکەی ئەم لێدوانە پەیوەندی بە تۆوە نیە تکایە [[Special:CreateAccount|ھەژمارێکی نوێ دروست بکە]] یان [[Special:UserLogin|بچۆ ژوورەوە]] لەبەر ئەوەی لەداهاتوودا دەگەڵ بەکارهێنەرانی‌ نەناسراوی دی تێکەڵ نەکرێیت. ''", + "anontalkpagetext": "----\n<em>ئەمە لاپەڕەی وتووێژە بۆ بەکارهێنەرێکی نەناسراوە کە هێشتا هەژمارەی درووست نەکردووه یان کەڵکی‌ لێ وەرناگرێ.</em>\nلەبەر ئەوە ناچارین ناونیشانی ئای پی ژمارەیی بۆ ناساندنی بەکار بێنین.\nناونیشانی ئای پی وا لەوانەیه لە لایەن چەندین بەکارهێنەری ترەوە بەکاربێت.\nئەگەر تۆ بەکارهێنەرێکی نەناسراویت و هەست دەکەیت ئەم لێدوانە پەیوەندی بە تۆوە نییە، تکایە [[Special:CreateAccount|ھەژمارێکی نوێ دروست بکە]] یان [[Special:UserLogin|بچۆ ژوورەوە]] بۆ تێکەڵ نەبوونت لەگەڵ بەکارھێنەرانی نەناسراوی تردا لە داھاتوودا.", "noarticletext": "ھەنووکە ھیچ دەقێک لەم پەڕەیەدا نییە.\nدەتوانیت لە پەڕەکانی تردا [[Special:Search/{{PAGENAME}}|بۆ ئەم سەرناوە بگەڕێیت]]،\n<span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} لە لۆگە پەیوەندیدارەکاندا بگەڕێیت]،\nیان [{{fullurl:{{FULLPAGENAME}}|action=edit}} ئەم پەڕەیە دروست بکەیت]</span>.", "noarticletext-nopermission": "ھەنووکە ھیچ دەقێک لەم پەڕەیەدا نییە.\nدەتوانی لە پەڕەکانی تردا [[Special:Search/{{PAGENAME}}|بۆ ئەم ناوە بگەڕێی]]، یان <span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} لە لۆگە پەیوەندیدارەکاندا بگەڕێی]</span>، بەڵام ناتوانی ئەم پەڕەیە دروست بکەی.", + "missing-revision": "بەسەرداچوونەوەی #$1 پەڕەی «{{FULLPAGENAME}}» بوونی نییە.\n\nئەمە ھەندێک جار ھۆکاری ئەوەیە کە مێژووەکەی بەسەرچووە یاخود پەڕەکە سڕدراوەتە.\nوردەکارییەکان دەتوانرێن ببینرێن لە [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} لۆگی سڕینەوەدا].", "userpage-userdoesnotexist": "ھەژماری بەکارھێنەریی «$1» تۆمار نەکراوە.\nتکایە دڵنیا ببەرەوە ئەگەر دەتھەوێت ئەم پەڕەیە دروست یان دەستکاری بکەیت.", "userpage-userdoesnotexist-view": "ھەژماری بەکارھێنەریی «$1» تۆمار نەکراوە.", "blocked-notice-logextract": "ھەنووکە ئەم بەکارھێنەرە بەربەست کراوە.\nدوایین بابەتی لۆگی بەربەستن لە ژێرەوە ھاتووە:", - "clearyourcache": "تێبینی:''' لە دوای پاشەکەوت کردن، لەوانەیە بۆ بینینی گۆڕانکارییەکان پێویست بێ cacheی وێبگەڕەکەت پاکبکەیتەوە.\n* '''Firefox / Safari:''' دوگمەی ''Shift'' بگرە کاتێک لەسەر ''Reload''دا کرتە دەکەی، یان ھەرکام لە ''Ctrl-F5'' یان ''Ctrl-R'' لێبدە (''⌘-R'' لەسەر Mac دا)\n* '''Google Chrome:''' دوگمەکانی ''Ctrl-Shift-R'' لێبدە (''⌘-Shift-R'' لەسەر Mac دا)\n* '''Internet Explorer:''' دوگمەی ''Ctrl'' بگرە کاتێک لەسەر ''Refresh''دا کرتە دەکەی، یان ''Ctrl-F5'' لێبدە\n* '''Opera:''' لە ڕێگەی ''Tools → Preferences'' ەوە cacheەکە بسڕەوە.", + "clearyourcache": "<strong>تێبینی:</strong> لە دوای پاشەکەوت کردن، لەوانەیە بۆ بینینی گۆڕانکارییەکان پێویست بێ کاشی وێبگەڕەکەت پاکبکەیتەوە.\n* '''Firefox / Safari:''' دوگمەی ''Shift'' بگرە کاتێک لەسەر ''Reload''دا کرتە دەکەی، یان ھەرکام لە ''Ctrl-F5'' یان ''Ctrl-R'' لێبدە (''⌘-R'' لەسەر Mac دا)\n* '''Google Chrome:''' دوگمەکانی ''Ctrl-Shift-R'' لێبدە (''⌘-Shift-R'' لەسەر Mac دا)\n* '''Internet Explorer:''' دوگمەی ''Ctrl'' بگرە کاتێک لەسەر ''Refresh''دا کرتە دەکەی، یان ''Ctrl-F5'' لێبدە\n* '''Opera:''' لە ڕێگەی ''Tools → Preferences'' ەوە cacheەکە بسڕەوە.", "usercssyoucanpreview": "'''سەرچەشن:''' «{{int:showpreview}}» بەکاربێنە بۆ تاقی‌کردنەوەی CSS نوێ‌کەت، پێش پاشەکەوت‌کردن.", "userjsyoucanpreview": "'''سەرچەشن:''' «{{int:showpreview}}» بەکاربێنە بۆ تاقی‌کردنەوەی جاڤاسکریپتە نوێ‌کەت، پێش پاشەکەوت‌کردن.", "usercsspreview": "<strong>لە بیرت ببێت کە تەنھا خەریکی پێشبینینی CSSـەکەت دەبینیت.\nھێشتا پاشەکەوەت نەکراوە!</strong>", @@ -574,9 +622,10 @@ "previewnote": "'''لە بیرت نەچێت ئەمە تەنیا پێشبینینە.'''\nگۆڕانکارییەکانت ھێشتا پاشەکەوت نەکراون!", "continue-editing": "چوونە سەر بەشی دەستکاریکردن", "previewconflict": "ئەم پێشبینینە بە تۆ نیشان ئەدات ئەو دەقەی لە شوێنی دەستکاری سەرەوە داتناوە چۆن بەرچاو ئەکەوێت ئەگەر پاشەکەوتی بکەیت.", - "session_fail_preview": "'''ببوورە! ناتوانین دەستکارییەکەت پێواژۆ بکەین بە ھۆی لەدەستدانی session data.'''\nتکایە دیسان ھەوڵبدەوە.\nئەگەر ھێشتا کار ناکات، [[Special:UserLogout|چوونەدەرەوە]] و گەڕانەوەژوورەوە تاقی بکەوە.", + "session_fail_preview": "ببوورە! ناتوانین دەستکارییەکەت پێواژۆ بکەین بە ھۆی لەدەستدانی زانیاری و داتاکانی ئەم کۆرسە.\nلەوانەیە ھەژمارەکەت کرابێتە دەرەوە. <strong>تکایە دڵنیا بکەرەوە کە ھێشتا لە ژوورەوەیت و دووبارە ھەوڵ بدەرەوە.</strong>\nئەگەر ھێشتا کار ناکات، [[Special:UserLogout|چوونەدەرەوە]] و گەڕانەوەژوورەوە تاقی بکەوە، دواتریش ئەگەر ھێشتا ڕێگەت نەداوە، ڕێگە بە براوسەرەکەت بدە کە ''کوکی'' لەم سایەتەوە وەربگرێت.", "session_fail_preview_html": "'''ببوورە! ناتوانین دەستکارییەکەت پێواژۆ بکەین بە ھۆی لەدەستدانی session data.'''\n\n''لەبەر ئەوەی {{SITENAME}} ڕێگەی داوە بە raw HTML، بۆ بەرگری بەرامبەر بە هێرشەکانی جاڤاسکریپت، پێشبینین شاردراوەتەوە.''\n\n'''ئەگەر ئەمە ھەوڵێکی دەستکاریکردنی ڕەوایە، تکایە دیسان ھەوڵبدەوە.'''\nئەگەر ھێشتا کار ناکات، [[Special:UserLogout|چوونە دەرەوە]] گەڕانەوەژوورەوە تاقی بکەوە.", "token_suffix_mismatch": "'''دەستکاریەکەت پەسەند نەکرا لەبەر ئەوەی ڕاژەخواز یان وێبگەڕەکەت نووسەکانی خاڵبەندی لەیەک پچڕاندوە.'''<br />\nدەستکاریەکەت بۆ بەرگری لە تێکەڵ‌بوونی دەقی لاپەڕەکە وەر نەگیرا.<br />\nئەمە بڕێ‌جار کاتێ ڕوو ئەدات کە لە خزمەتی پرۆکسی سەر وێب کەڵک وەر بگریت.", + "edit_form_incomplete": "<strong>ھەندێک بەشی دەستکارییەکانت بە سێرڤەرەکەمان نەگەیشت. دووبارە سەیری دەستکارییەکانت بکە بۆ دڵنیا بوون لە تەواوییان و دووبارە ھەوڵ بدەرەوە.</strong>", "editing": "دەستکاریکردنی $1", "creating": "دروستکردنی $1", "editingsection": "دەستکاریکردنی $1 (بەش)", @@ -591,10 +640,10 @@ "copyrightwarning": "تکایە ئاگادار بە کە هەموو بەشدارییەکان لە {{SITENAME}} وا فەرز دەکرێت کە لە ژێر $2دا بڵاودەبنەوە (سەیری $1 بکە بۆ وردەکاریەکان).\nئەگەر ناتەوێ نووسراوەکانت بە بێبەزەیی دەستکاری بکرێن و بە دڵخواز دابەشبکرێنەوە، مەینێرە بۆ ئێرە.<br />\nھەروەھا تۆ بەڵێنمان پێدەدەی کە خۆت ئەمەت نووسیوە یان لە پاوانێکی گشتی (public domain) یان سەرچاوە ئازادەکانی وەک ئەو وەرتگرتووە.\n'''ئەو کارانە کە مافی لەبەرگرتنەوەیان پارێزراوەکان بە بێ وەرگرتنی ئیجازە مەنێرە!'''", "copyrightwarning2": "ئاگادار بە کە هەموو بەشدارییەکان لە {{SITENAME}} لەوانەیە بەدەستی بەشداربووانی دیکەوە دەستکاری بکرێن، بگۆڕدرێن یا بسڕێنەوە.\nئەگەر ناتەوێ نووسراوەکانت بێبەزەیی دەستکاری بکرێن، ھەر مەینێرە بۆ ئێرە.<br />\nھەروەھا تۆ بەڵێنمان پێدەدەی کە خۆت ئەمەت نووسیوە یان لە پاوانێکی گشتی (public domain) یان سەرچاوە ئازادەکانی وەک ئەو وەرتگرتووە (سەیری $1 بکە بۆ وردەکاریەکان).\n'''ئەو کارانە کە مافی لەبەرگرتنەوەیان پارێزراوەکان بە بێ وەرگرتنی ئیجازە مەنێرە!'''", "longpageerror": "'''ھەڵە: ئەو دەقە تۆ ناردووتە {{PLURAL:$1|یەک کیلۆبایت|$1 کیلۆبایت}} درێژە، کە درێژترە لە زۆرینەی {{PLURAL:$2|یەک کیلۆبایت|$2 کیلۆبایت}}.'''\nئەمە پاشەکەوت ناکرێت.", - "readonlywarning": "<strong>ئاگاداری: داتابەیس بۆ چاکسازی داخراوە، بۆیە ئێستا ناتوانی دەستکاریەکانت پاشەکەوت بکەیت.</strong>\nدەتوانیت دەقەکەت کۆپی بکەیت بۆ فایلێک و ھەڵی بگریت بۆ دوایی.\nئەو بەڕێوەبەرەی کە دای خستووە، ئەم هۆکارەی دەستنیشان کردووە: $1", + "readonlywarning": "<strong>ئاگاداری: بنکەی زانیاری بۆ چاکسازی داخراوە، بۆیە ئێستا ناتوانی دەستکاریەکانت پاشەکەوت بکەیت.</strong>\nدەتوانیت دەقەکەت لەبەر بگریتەوە بۆ پەڕگەیەک و ھەڵی بگریت بۆ دوایی.\nئەو بەڕێوەبەرەی کە دای خستووە، ئەم هۆکارەی دەستنیشان کردووە: $1", "protectedpagewarning": "'''وشیار بە: ئەم پەڕە پارێزراوە بۆ ئەوی تەنیا ئەو بەکارھێنەرانە کە مافەکانی بەڕێوەبەرایەتییان ھەیە بتوانن دەستکاریی بکەن.'''\nدوایین لۆگ بۆ ژێدەر لە خوارەوەدا ھاتووە:", "semiprotectedpagewarning": "'''ئاگاداری:''' ئەم پەڕە داخراوە بۆ ئەوی تەنھا بەکارھێنەرە تۆمارکراوەکان بتوانن دەستکاریی بکەن.\nدوایین لۆگ بۆ ژێدەر لە خوارەوەدا ھاتووە:", - "cascadeprotectedwarning": "'''ئاگاداری:''' ئەم لاپەڕە داخراوە بۆیە تەنها ئەو کەسانەی مافی بەڕێوبەرایەتی‌یان هەیە ئەتوانن دەستکاری بکەن، چۆنکا ئەمە {{PLURAL:$1|لاپه‌ڕه‌|لاپه‌ڕانه‌}} لە زنجیرەی پارێزراوەکانی لە خۆ گرتووە‌:", + "cascadeprotectedwarning": "'''ئاگاداری:''' ئەم لاپەڕە داخراوە بۆ ئەوەی تەنھا ئەو کەسانەی کە مافی بەڕێوبەرایەتییان هەیە بتوانن دەستکاری بکەن، چوونکە ئەم {{PLURAL:$1|لاپه‌ڕه‌|لاپه‌ڕانه‌}} لە زنجیرەی پارێزراوەکانی لە خۆ گرتووە‌:", "titleprotectedwarning": "'''ئاگاداری: ئەم پەڕە داخراوە، بۆئەوەی بۆ درووست‌کردنی [[Special:ListGroupRights|مافە تایبەتەکانت]] پێویستن.'''\nبۆ چاوانە دوایین لۆگ لە خوارەوەدا ھاتووە:", "templatesused": "ئەو {{PLURAL:$1|داڕێژەیە کە لەم پەڕەیەدا بە کارھێنراوە|داڕێژانە کە لەم پەڕەیەدا بە کارھێنراون}}:", "templatesusedpreview": "ئەو {{PLURAL:$1|داڕێژەیە کە لەم پێشبینینەدا بە کارھێنراوە|داڕێژانە کە لەم پێشبینینەدا بە کارھێنراون}}:", @@ -607,25 +656,31 @@ "nocreate-loggedin": "ئیجازەی دروست کردنی پەڕەی نوێت نیە.", "sectioneditnotsupported-title": "بەش دەستکاریکردنی پشتیوانی ناکرێ", "sectioneditnotsupported-text": "دەستکاریکردنی بەش لە پەڕەدا پشتیوانی ناکرێ.", - "permissionserrors": "ھەڵەی ئیجازەکان", + "permissionserrors": "ھەڵە لە بە دەست ھێنان", "permissionserrorstext": "مافی ئەنجامی ئەوەت نیە لەبەر ئەم {{PLURAL:$1|هۆکار|هۆکارانە}} :", "permissionserrorstext-withaction": "دەسەڵاتت نییە بۆ $2، لەبەر ئەم {{PLURAL:$1|ھۆکارە|ھۆکارانە}}ی خوارەوە:", "recreate-moveddeleted-warn": "'''ھۆشیار بە: خەریکی پەڕەیەک دروست‌ دەکەیتەوە کە لە پێشدا سڕاوەتەوە.'''\n\nئەمە لەبەر چاو بگرە کە دەستکاریکردنی ئەم پەڕەیە بەقازانجە یان نا.\nلۆگی سڕینەوە و گواستنەوەی ئەم پەڕەیە بۆ سانایی لێرەدا ھاتووە:", "moveddeleted-notice": "ئەم پەڕەیە سڕاوەتەوە.\nلۆگی سڕینەوە و گواستنەوە بۆ پەڕەکە لە ژێرەوە دابین کراوە.", + "moveddeleted-notice-recent": "ببورە، ئەم پەڕەیە بەم زووانە سڕدراوەتەوە (لە ماوەی ٢٤ کاتژمێری پێشوودا). \nلۆگی سڕینەوە و ڕەوانەکردنی پەڕەکە بەردەستن لە خوارەوە لە پەڕاوێزەکاندا.", "log-fulllog": "لۆگی تەواو ببینە", "edit-hook-aborted": "دەستکاری لە لایەن قولاپەوە ھەڵوەشێنرایەوە.\nھۆکارەکەی لەبەر دەست نییە.", "edit-gone-missing": "توانای نوێ‌کردنەوەی لاپەڕەکە نیە.<br />\nلەوە دەچی سڕدرابێتەوه.‌", "edit-conflict": "کێشەی دەستکاری.", "edit-no-change": "دەستکاریەکەت بەرچاو نەخرا، لەبەر ئەوەی هیچ گۆڕانکارییەکت لەسەر دەقەکە نەکردووە.", + "postedit-confirmation-created": "پەڕەکە دروست کرا.", + "postedit-confirmation-restored": "پەڕەکە ھێنرایەوە.", "postedit-confirmation-saved": "دەستکارییەکەت پاشەکەوت کرا.", "edit-already-exists": "تواناییی دروستکردنی پەڕەی نوێ نییە.\nئەمە پەڕەیە پێشتر هەبووە.", "defaultmessagetext": "دەقی پەیامی هەمیشەیی", "invalid-content-data": "دراوەی ناوەرۆکی نادروست", - "editwarning-warning": "بەجێ‌هێشتنی ئەم لاپەڕەیە دەبێتە هۆی لە‌دەست چوونی هەموو ئەو گۆڕانکاریانەی کردووتە.", + "content-not-allowed-here": "«$1» ڕێگە پێنەدراوە لەسەر پەڕەی [[$2]]", + "editwarning-warning": "بەجێھێشتنی ئەم لاپەڕەیە دەبێتە هۆی لە‌دەستدانی هەموو ئەو گۆڕانکاریانەی کە ئەنجامت داون. ئەگەر لە ژوورەوەیت، دەتوانیت ئەم ئاگادارییە لابەریت لە ھەڵبژاردەی بەکارھێنەرت.", "content-model-wikitext": "ویکیدەق", "content-model-text": "دەقی ساکار", "content-model-javascript": "جاڤاسکریپت", "content-model-css": "سی ئێس ئێس", + "deprecated-self-close-category": "ئەو پەڕانەی کە تاگی ئێچ تی ئێم ئێڵی خۆ-داخراوی ھەڵە بەکاردەھێنن", + "duplicate-args-warning": "<strong>ئاگاداری:</strong> ن [[:$1]] بانگی [[:$2]] دەکات بە بەکارھێنانی زیاتر لە یەک بەھا بۆ پارامەتری «$3.» تەنھا کۆتا بەھای کە پێشکەش کراوە بەکار دەھێندرێت.", "expensive-parserfunction-warning": "'''ئاگاداری:''' ئەم لاپەڕە ژمارەیەکی زۆر بانگ‌کەری فەنکشێنی لێک‌کەرەوەی لەخۆ گرتوو.<br /><br />\nئەوە دەبێ کەمتر بێت لە $2 {{PLURAL:$2|بانگ‌کەردن|بانگ‌کەردن}} کە ئێستا {{PLURAL:$1|بانگ‌کردنی|بانگ‌کردنی}} تێدایە.", "expensive-parserfunction-category": "ئەو لاپەڕانەی ژمارەیەکی زۆر بانگ‌کەری فەنکشێنی لێک‌کەرەوەیان لەخۆ گرتووە.", "post-expand-template-inclusion-warning": "'''ئاگاداری:''' قەبارەی داڕێژەکە زۆر گەورەیە.\nلەوانەیە ھەندێک لە داڕێژەکان لەخۆنەگرێتەوە.", @@ -637,7 +692,9 @@ "undo-success": "دەکرێ دەستکاریەکە پووچەڵبکرێتەوە.\nتکایە چاو لەو هەڵسەنگاندنەی خوارەوە بکە تا دڵنیا بیت ئەمە ئەوەیە کە‌ دەتویست بیکەی و دواتر گۆڕانکارییەکانی خوارەوە پاشەکەوت بکە بۆ تەواوکردنی پووچەڵکردنەوەکە.", "undo-failure": "لەبەر کێشەی دەست‌تێ‌وەردان، ناتوانی دەستکاریەکە ئەنجام‌نەدراو بکەیت.", "undo-norev": "ناتوانی دەستکاریەکە ئەنجام‌نەدراو بکەی لەبەر ئەوەی بوونی نیە یا سڕدراوەتەوە.", + "undo-nochange": "وا دیارە دەستکارییەکە پووچەڵ کراوەتەوە.", "undo-summary": "گەڕاندنەوەی پێداچوونەوەی $1 لە لایەن [[Special:Contributions/$2|$2]] ([[User talk:$2|لێدوان]])", + "undo-summary-username-hidden": "پوچەڵکردنەوەی دەستکاری $1 لەلایەن بەکارھێنەرێکی شاردراوەوە.", "cantcreateaccount-text": "درووست‌کردنی هەژمارە بۆ ناونیشانی ئای‌پی ('''$1''') لە لایەن [[User:$3|$3]] داخراوە.<br /><br />\n$3 هۆکاری \"$2\" خستوەتەڕوو", "viewpagelogs": "لۆگەکانی ئەم پەڕەیە ببینە", "nohistory": "هیچ مێژوویەکی دەستکاری نییە بۆ ئەم پەڕەیە.", @@ -761,6 +818,7 @@ "showhideselectedversions": "دیاریکردنی پێداچوونەوە ھەڵبژێردراوەکان بگۆڕە", "editundo": "پووچەڵکردنەوە", "diff-empty": "(بەبێ جیاوازی)", + "diff-multi-sameuser": "({{PLURAL:$1|یەک دەستکاری مامناوەند|$1 دەستکاری}} لەلایەن ھەمان بەکارھێنەرەوە بیشاننادرێت.", "searchresults": "ئاکامەکانی گەڕان", "searchresults-title": "ئاکامەکانی گەڕان بۆ «$1»", "titlematches": "ئەو سەرناوانەی دەگونجن", @@ -837,8 +895,6 @@ "saveprefs": "پاشەکەوت", "restoreprefs": "ھەموو ڕێکخستنەکان ببەرەوە بۆ باری بنچینەیی (لە ھەموو بەشەکاندا)", "prefs-editing": "دەستکاریکردن", - "rows": "ڕیزەکان:", - "columns": "ستوونەکان:", "searchresultshead": "گەڕان", "stub-threshold": "سنوور بۆ شێوازی <a href=\"#\" class=\"stub\">بەستەری کۆڵکە</a> (بایت):", "stub-threshold-disabled": "ناچالاک", @@ -917,6 +973,7 @@ "editusergroup": "گرووپەکانی بەکارھێنەر دەستکاری بکە", "editinguser": "گۆڕینی مافە بەکارھێنەرییەکانی {{GENDER:$1|بەکارھێنەر}} <strong>[[User:$1|$1]]</strong> $2", "userrights-editusergroup": "گرووپە بەکارھێنەرییەکان دەستکاری بکە", + "userrights-viewusergroup": "بینینی گرووپەکانی {{GENDER:$1|بەکارھێنەر}}", "saveusergroups": "گرووپەکانی بەکارھێنەر پاشەکەوت بکە", "userrights-groupsmember": "ئەندامە لە:", "userrights-groupsmember-auto": "ئەندامی ناڕاشکاوە لە:", @@ -1015,6 +1072,8 @@ "right-override-export-depth": "هەناردنی لاپەڕەکان کە لاپەڕەکانی بەستەر پێ‌دراو تا قووڵایی 5 لەخۆ بگرێت", "right-sendemail": "ناردنی ئیمەیل بۆ بەکارھێنەرانی تر", "right-managechangetags": "دروستکردن و سڕینەوەی [[Special:Tags|تاگەکان]] لە بنکەدراوە", + "grant-group-email": "ناردنی ئیمەیل", + "grant-sendemail": "ناردنی ئیمەیل بۆ بەکارھێنەرانی تر", "newuserlogpage": "لۆگی دروستکردنی بەکارھێنەر", "newuserlogpagetext": "ئەمە لۆگێکی دروستکردنی بەکارھێنەرە.", "rightslog": "لۆگی مافەکانی بەکارھێنەر", @@ -1060,6 +1119,7 @@ "action-viewmywatchlist": "دیتنی پێرستی چاودێریت", "action-viewmyprivateinfo": "زانیارییە تایبەتییەکانت ببینە", "action-editmyprivateinfo": "دەستکاری زانیارییە تایبەتییەکانت بکە", + "action-purge": "پاکسازی ئەم پەڕەیە بکە", "nchanges": "$1 {{PLURAL:$1|گۆڕانکاری}}", "enhancedrc-history": "مێژوو", "recentchanges": "دوایین گۆڕانکارییەکان", @@ -1490,6 +1550,7 @@ "emailpagetext": "دەتوانی لەم فۆرمەی ژێرەوە بۆ ناردنی ئیمەیلێک بۆ ئەم {{GENDER:$1|بەکارھێنەر}}ە کەڵک وەربگریت.\nئەو ناونیشانە ئیمەیلە لە [[Special:Preferences|ھەڵبژاردەکانی بەکارھێنەر‌یتدا]] نووسیوتە، لە ناونیشانی «لەلایەن»ی (From) ئیمەیلەکەدا نیشان دەدرێت، کە وایە بەکارھێنەری وەرگر دەتوانێ ڕاستەوخۆ وەڵامت بداتەوە.", "defemailsubject": "ئیمەیلی {{SITENAME}} لە بەکارھێنەر «$1»ەوە", "usermaildisabled": "ئیمەیڵی بەکارهێنەر لەکاردانیە", + "usermaildisabledtext": "ناتوانیت ئیمەیڵ بۆ بەکارھێنەرانی تر بنێریت لەسەر ئەم ویکیپیدیایە", "noemailtitle": "هیچ ناونیشانێکی ئی‌مەیل نییە", "noemailtext": "ئەم بەکارھێنەرە ناونێشانێکی گونجاوی ئیمێلی دەستنیشان نەکردووە.", "nowikiemailtext": "ئەم بەکارهێنەرە تایبەتمەندیی وەرنەگرتنی ئی‌مەیل لە بەکارهێنەرانی دیکەی هەلبژاردووە.", @@ -1556,7 +1617,7 @@ "enotif_lastvisited": "بۆ بینینی ھەموو گۆرانکارییەکانی پاش دوایین سەردانت $1 ببینە.", "enotif_lastdiff": "بۆ بینینی ئەم گۆڕانکارییە $1 ببینە.", "enotif_anon_editor": "بەکارھێنەری نەناسراو $1", - "enotif_body": "‫$WATCHINGUSERNAMEی بەڕێز،\n\n$PAGEINTRO $NEWPAG\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_body": "‫$WATCHINGUSERNAMEی بەڕێز،\n\n$PAGEINTRO $NEWPAG\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", "created": "دروستکرا", "changed": "گۆڕدرا", "deletepage": "پەڕە بسڕەوە", @@ -1593,7 +1654,7 @@ "alreadyrolled": "دوایین گۆڕانکارییەکان لەسەر [[:$1]] لە لایەن [[User:$2|$2]] ناگەڕێندرێنەوە ([[User talk:$2|لێدوان]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]])؛ کەسێکی تر لە پێشدا دەستکاریی کردووە یان گەڕاندوویەتەوە.\n\nدوایین دەستکاری ئەم پەڕە [[User:$3|$3]] کردوویە ([[User talk:$3|لێدوان]]{{int:pipe-separator}}[[Special:Contributions/$3|{{int:contribslink}}]]).", "editcomment": "پوختەی دەستکاری <em>$1</em> بوو.", "revertpage": "گەڕاندنەوەی دەستکارییەکانی [[Special:Contributions/$2|$2]] ([[User talk:$2|لێدوان]]) بۆ دوایین پێداچوونەوەی [[User:$1|$1]]", - "revertpage-nouser": "دەستکارییەکانی بەکارھێنەرێکی شاڕدراوە بۆ دوایین پێداچوونەوەی {{GENDER:$1|[[User:$1|$1]]}} گەڕێنرایەوە.", + "revertpage-nouser": "دەستکارییەکانی بەکارھێنەرێکی شاردراوە بۆ دوایین پێداچوونەوەی {{GENDER:$1|[[User:$1|$1]]}} گەڕێنرایەوە.", "rollback-success": "دەستکارییەکانی $1 وەرگێرایەوە؛<br />\nگۆڕدرا بۆ دوایین پێداچوونەوەی $2.", "sessionfailure": "لەوەدەچی کێشەیەک لە دانیشتنی چوونەژوورەوەت (login session)دا ببێت.\nئەم کردەوە هەڵوەشێندرایەوە بۆ بەرگری لە دزینی دراوەکانی دانیشتن.\nتکایە بگەڕێوە بۆ پەڕەی پێشوو و نوێی بکەوە، ئینجا دیسان تاقیی بکەوە.", "changecontentmodel-title-label": "سەرناوی پەڕە", @@ -1604,6 +1665,7 @@ "modifiedarticleprotection": "ئاستی پاراستنی «[[$1]]»ی گۆڕی", "unprotectedarticle": "پاراستنی لەسەر «[[$1]]» لابرد", "movedarticleprotection": "ڕێککارییەکانی پاراستن لە «[[$2]]» گوازرایەوە بۆ «[[$1]]»", + "unprotectedarticle-comment": "{{GENDER:$2|پاراستنی}} لەسەر ''[[$1]]'' لابرد", "protect-title": "گۆڕینی ئاستی پاراستنی \"$1\"", "protect-title-notallowed": "دیتنی ئاستی پاراستنی «$1»", "prot_1movedto2": "[[$1]] گوازرایەوە بۆ [[$2]]", @@ -1685,7 +1747,9 @@ "undelete-show-file-submit": "بەڵێ", "namespace": "بۆشاییی ناو:", "invert": "ھەڵبژاردەکان پێچەوانە بکە", + "tooltip-invert": "نیشانە لەم بۆکسە بدە بۆ شاردنەوەی گۆڕانکارییەکانی ئەو پەڕانەی کە لە بۆشایی ناوی ھەڵبژێردراو و پەیوەندیدارەکاندا ئەنجام دراون.", "namespace_association": "بۆشاییی ناوی پەیوەندیدار", + "tooltip-namespace_association": "ھەروەھا نیشانە لەم بۆکسەش بدە بۆ شاردنەوەی پەڕەی لێدوانەکانیان", "blanknamespace": "(سەرەکی)", "contributions": "بەشدارییەکانی {{GENDER:$1|بەکارھێنەر}}", "contributions-title": "بەشدارییەکانی بەکارھێنەر $1", @@ -1976,6 +2040,7 @@ "tooltip-pt-mycontris": "پێڕستی بەشدارییەکان", "tooltip-pt-login": "پێشنیارت پێدەکرێ بچیتە ژوورەوە؛ ھەرچەندە زۆرت لێناکرێ", "tooltip-pt-logout": "دەرچوون", + "tooltip-pt-createaccount": "تۆ ھان دەدرێیت کە ھەژمارێک دروست بکەیت و بچیتە ژوورەوە، ئەمە سەرەکی نییە بەھەرحاڵ", "tooltip-ca-talk": "وتووێژ سەبارەت بە پەڕەی ناوەڕۆک", "tooltip-ca-edit": "دەستکاری ئەم پەڕەیە بکە‌", "tooltip-ca-addsection": "بەشێکی نوێ دەست پێ بکە", @@ -2169,6 +2234,8 @@ "exif-imagelength": "بەرزی", "exif-orientation": "ئاڕاستە", "exif-ycbcrpositioning": "شوێنی Y و C", + "exif-xresolution": "شێوازی ئاسۆیی", + "exif-yresolution": "شێوازی ستوونی", "exif-datetime": "ڕێکەوتی و کاتی گۆڕانی پەڕگە", "exif-imagedescription": "ناونیشانی وێنە", "exif-make": "بەرھەمھێنەری کامێرا", @@ -2370,6 +2437,7 @@ "confirmemail_body_set": "کەسێک، لەوانەیە خۆت، لە ناونیشانی IPی $1 ـەوە،\nلە {{SITENAME}}دا، ناونیشانیی ئیمێلی ھەژماری «$2»ی کردووە بەم ناونیشانە.\n\nبۆ پشتڕاستکردنەوەی ئەوەی کە ئەم ھەژمارە بە ڕاستی ھی تۆیە و بۆ چالاککردنەوەی ئامرازە ئیمێلییەکانی {{SITENAME}}، ئەم لینکە لە وێبگەڕەکەتدا بکەرەوە:\n\n$3\n\nئەگەر ھەژمارەکە ھی تۆ *نییە*، بۆ هەڵوەشاندنەوەی پشتڕاستکردنەوەی ناونیشانی ئیمێل، شوێنی ئەم لینکە بکەوە:\n\n$5\n\nماوەی ئەم کۆدی پشتڕاستکردنەوەیە لە $4دا بە سەر دەچێت.", "confirmemail_invalidated": "بڕواپی‌کردنی ناونیشانی ئی‌مەیل هەڵوەشێندراوە", "invalidateemail": "هەڵوەشاندنەوەی بڕواپێ‌کردنی ئی‌مەیل", + "notificationemail_body_changed": "کەسێک، کە لەوانەیە خۆت بووبێت، لە ناونیشانی IPی $1، ناونیشانی پۆستی ئەلیکترۆنی لە $2ەوە گۆڕی بە $3 لە {{SITENAME}}.\n\nئەگەر ئەمە تۆ نەبوویت، ھەر ئێستا پەیوەندی بە بەڕێوەبەرێکی سایتەکەوە بکە.", "scarytranscludetoolong": "[URL زۆر درێژە]", "deletedwhileediting": "'''ھۆشیار بە''': ئەم پەڕە دوای ئەوە تۆ دەستکاریکردنیت دەستپێکرد سڕاوەتەوە!", "confirmrecreate-noreason": "بەکارھێنەر [[User:$1|$1]] ([[User talk:$1|talk]]) پەڕەکەی سڕییەوە پاش ئەوەی تۆ دەستکاریکردنی پەڕەکەت دەستپێکرد. تکایە پشتڕاستی بکەوە کە بە ڕاستی دەتەوێ دیسان ئەم پەڕە دروست بکەیتەوە.", @@ -2586,7 +2654,6 @@ "logentry-upload-upload": "$1 $3ی {{GENDER:$2|بار کرد}}", "logentry-upload-overwrite": "$1 وەشانێکی نوێی $3ی {{GENDER:$2|بار کرد}}", "rightsnone": "(ھیچ)", - "revdelete-summary": "پوختەی دەستکاری", "feedback-back": "گەڕانەوە", "feedback-cancel": "ھەڵوەشاندنەوە", "feedback-close": "کرا", @@ -2595,14 +2662,6 @@ "feedback-submit": "ناردن", "searchsuggest-search": "لە {{SITENAME}}دا بگەڕێ", "searchsuggest-containing": "بە لەبەرگرتنەوەی ...", - "api-error-empty-file": "ئەو پەڕگەیە کە ناردووتە واڵا بوو.", - "api-error-file-too-large": "ئەو پەڕگەیە ناردووتە زۆر گەورەیە.", - "api-error-filename-tooshort": "ناوی پەڕگەکە زۆر کورتە.", - "api-error-filetype-banned": "ئەم جۆرە پەڕگەیە قەدەغەیە.", - "api-error-filetype-banned-type": "$1 {{PLURAL:$4|جۆرە پەڕگەیەکی ڕێگەپێدراو نییە|جۆرە پەڕگە ڕێگەپێدراوەکان نین}}. {{PLURAL:$3|جۆرە پەڕگەی ڕێگەپێدراو ئەمەیە|جۆرە پەڕگەکانی ڕێگەپێدراو ئەمانەن}}: $2.", - "api-error-illegal-filename": "ناوی پەڕگە رێگەپێ‌نەدراوە.", - "api-error-unclassified": "ھەڵەیەکی نەزانراو ڕوویداوە.", - "api-error-unknown-code": "ھەڵەی نەزانراو: «$1».", "api-error-unknownerror": "ھەڵەی نەزانراو: «$1».", "duration-seconds": "$1 {{PLURAL:$1|چرکە|چرکە}}", "duration-minutes": "$1 {{PLURAL:$1|خولەک|خولەک}}", @@ -2648,5 +2707,6 @@ "special-characters-group-thai": "تایلەندی", "special-characters-group-khmer": "خمێری", "log-action-filter-all": "ھەموو", - "log-action-filter-upload-upload": "بارکردنی نوێ" + "log-action-filter-upload-upload": "بارکردنی نوێ", + "authmanager-email-label": "ئیمەیڵ" } diff --git a/languages/i18n/crh-cyrl.json b/languages/i18n/crh-cyrl.json index ddced4819f..3e1aa18a91 100644 --- a/languages/i18n/crh-cyrl.json +++ b/languages/i18n/crh-cyrl.json @@ -442,10 +442,11 @@ "sig_tip": "Имзанъыз ве тарих", "hr_tip": "Горизонталь сызыкъ (пек сыкъ къулланманъыз)", "summary": "Денъиштирменинъ къыскъа тарифи:", - "subject": "Мевзу/серлева:", + "subject": "Мевзу:", "minoredit": "Бу, кичик денъиштирмедир", "watchthis": "Саифени козет", "savearticle": "Саифени сакъла", + "savechanges": "Денъиштирмелерни сакъла", "preview": "Бакъып чыкъув", "showpreview": "Бакъып чыкъ", "showdiff": "Денъиштирмелерни косьтер", @@ -650,8 +651,6 @@ "saveprefs": "Сакъла", "restoreprefs": "Бутюн ог бельгиленген сазламаларны къайтар", "prefs-editing": "Саифелерни денъиштирюв", - "rows": "Сатыр", - "columns": "Сутун", "searchresultshead": "Къыдырув", "recentchangesdays": "Сонъки денъиштирмелер саифесинде косьтериледжек кунь сайысы:", "recentchangesdays-max": "(энъ чокъ $1 {{PLURAL:$1|1=кунь|кунь}})", diff --git a/languages/i18n/crh-latn.json b/languages/i18n/crh-latn.json index e48be9f1d6..3054c1b89e 100644 --- a/languages/i18n/crh-latn.json +++ b/languages/i18n/crh-latn.json @@ -438,10 +438,11 @@ "sig_tip": "Ä°mzañız ve tarih", "hr_tip": "Gorizontal sızıq (pek sıq qullanmañız)", "summary": "Deñiştirmeniñ qısqa tarifi:", - "subject": "Mevzu/serleva:", + "subject": "Mevzu:", "minoredit": "Bu, kiçik deñiştirmedir", "watchthis": "Saifeni közet", "savearticle": "Saifeni saqla", + "savechanges": "Deñiştirmelerni saqla", "preview": "Baqıp çıquv", "showpreview": "Baqıp çıq", "showdiff": "Deñiştirmelerni köster", @@ -646,8 +647,6 @@ "saveprefs": "Saqla", "restoreprefs": "Bütün ög belgilengen sazlamalarnı qaytar", "prefs-editing": "Saifelerni deñiştirüv", - "rows": "Satır", - "columns": "Sutun", "searchresultshead": "Qıdıruv", "recentchangesdays": "Soñki deñiştirmeler saifesinde kösterilecek kün sayısı:", "recentchangesdays-max": "(eñ çoq $1 {{PLURAL:$1|kün|kün}})", diff --git a/languages/i18n/cs.json b/languages/i18n/cs.json index 97b55e6cb5..9cf8622245 100644 --- a/languages/i18n/cs.json +++ b/languages/i18n/cs.json @@ -879,7 +879,7 @@ "revdelete-failure": "'''Nepodařilo se nastavit viditelnost revize:'''\n$1", "logdelete-success": "Viditelnost události úspěšně nastavena.", "logdelete-failure": "'''Nepodařilo se nastavit viditelnost protokolu:'''\n$1", - "revdel-restore": "Změnit viditelnost", + "revdel-restore": "změnit viditelnost", "pagehist": "Historie stránky", "deletedhist": "Smazaná historie", "revdelete-hide-current": "Chyba při skrývání položky z $1 $2: jedná se o současnou revizi.\nTu nelze skrýt.", @@ -931,7 +931,7 @@ "difference-title": "$1: Porovnání verzí", "difference-title-multipage": "$1 a $2: Porovnání stránek", "difference-multipage": "(Rozdíly mezi stránkami)", - "lineno": "Řádka $1:", + "lineno": "Řádek $1:", "compareselectedversions": "Porovnat vybrané verze", "showhideselectedversions": "Zobrazit/skrýt vybrané revize", "editundo": "zruÅ¡it editaci", @@ -974,6 +974,7 @@ "search-interwiki-caption": "Sesterské projekty", "search-interwiki-default": "Výsledky z $1:", "search-interwiki-more": "(více)", + "search-interwiki-more-results": "další výsledky", "search-relatedarticle": "Související", "searchrelated": "související", "searchall": "vÅ¡e", @@ -1063,6 +1064,7 @@ "youremail": "E-mail:", "username": "{{GENDER:$1|Uživatelské jméno}}:", "prefs-memberingroups": "{{GENDER:$2|Člen|Členka}} {{PLURAL:$1|skupiny|skupin}}:", + "group-membership-link-with-expiry": "$1 (do $2)", "prefs-registration": "Čas registrace:", "yourrealname": "VaÅ¡e skutečné jméno:", "yourlanguage": "Jazyk rozhraní:", @@ -1107,17 +1109,26 @@ "editusergroup": "Načíst uživatelské skupiny", "editinguser": "Úprava práv {{GENDER:$1|uživatele|uživatelky}} <strong>[[User:$1|$1]]</strong> $2", "viewinguserrights": "Prohlížení práv {{GENDER:$1|uživatele|uživatelky}} <strong>[[User:$1|$1]]</strong> $2", - "userrights-editusergroup": "Upravit uživatelské skupiny", - "userrights-viewusergroup": "Zobrazit uživatelské skupiny", + "userrights-editusergroup": "Upravit {{GENDER:$1|uživatelské}} skupiny", + "userrights-viewusergroup": "Zobrazit {{GENDER:$1|uživatelské}} skupiny", "saveusergroups": "Uložit {{GENDER:$1|uživatelské}} skupiny", "userrights-groupsmember": "{{GENDER:$2|Člen|Členka}} {{PLURAL:$1|skupiny|skupin}}:", "userrights-groupsmember-auto": "Automaticky {{GENDER:$2|člen|členka}} {{PLURAL:$1|skupiny|skupin}}:", - "userrights-groups-help": "Můžete měnit skupiny, do nichž je {{GENDER:$1|uživatel zařazen|uživatelka zařazena}}.\n* ZaÅ¡krtnuté políčko znamená, že {{GENDER:$1|uživatel|uživatelka}} je v dané skupině.\n* NezaÅ¡krtnuté políčko značí, že {{GENDER:$1|uživatel|uživatelka}} v dané skupině není.\n* Hvězdička (*) znamená, že nemůžete danou skupinu odstranit, jakmile ji přidáte, nebo naopak.", + "userrights-groups-help": "Můžete měnit skupiny, do nichž je {{GENDER:$1|uživatel zařazen|uživatelka zařazena}}.\n* ZaÅ¡krtnuté políčko znamená, že {{GENDER:$1|uživatel|uživatelka}} je v dané skupině.\n* NezaÅ¡krtnuté políčko značí, že {{GENDER:$1|uživatel|uživatelka}} v dané skupině není.\n* Hvězdička (*) znamená, že nemůžete danou skupinu odstranit, jakmile ji přidáte, nebo naopak.\n* Křížek (#) znamená, že čas do vyprÅ¡ení dané skupiny můžete pouze prodloužit, ne zkrátit.", "userrights-reason": "Důvod:", "userrights-no-interwiki": "Nemáte povoleno měnit uživatelská práva na jiných wiki.", "userrights-nodatabase": "Databáze $1 neexistuje nebo není místní.", "userrights-changeable-col": "Skupiny, které můžete měnit", "userrights-unchangeable-col": "Skupiny, které nemůžete měnit", + "userrights-expiry-current": "Vyprší $1", + "userrights-expiry-none": "Bez vyprÅ¡ení", + "userrights-expiry": "Čas vyprÅ¡ení:", + "userrights-expiry-existing": "Současný čas vyprÅ¡ení: $2, $3", + "userrights-expiry-othertime": "Jiný čas:", + "userrights-expiry-options": "1 den:1 day,1 týden:1 week,1 měsíc:1 month,3 měsíce:3 months,6 měsíců:6 months,1 rok:1 rok", + "userrights-invalid-expiry": "Čas vyprÅ¡ení pro skupinu „$1“ je neplatný.", + "userrights-expiry-in-past": "Čas vyprÅ¡ení pro skupinu „$1“ je v minulosti.", + "userrights-cannot-shorten-expiry": "Čas do vyprÅ¡ení skupiny „$1“ nemůžete zkrátit. To mohou provést pouze uživatelé oprávnění k jejímu přiřazení nebo odstranění.", "userrights-conflict": "Konflikt změn uživatelských práv! Zkontrolujte a potvrďte požadované změny.", "group": "Skupina:", "group-user": "Uživatelé", @@ -1453,7 +1464,7 @@ "uploaded-setting-handler-svg": "SVG, které nastavuje atribut „handler“ na nelokální/data/skript, je zablokováno. V načteném SVG souboru bylo nalezeno <code>$1=\"$2\"</code>.", "uploaded-remote-url-svg": "SVG, které nastavuje libovolný stylový atribut se vzdáleným URL, je zablokováno. V načteném SVG souboru bylo nalezeno <code>$1=\"$2\"</code>.", "uploaded-image-filter-svg": "V načteném SVG souboru byl nalezen obrazový filtr s URL: <code><$1 $2=\"$3\"></code>.", - "uploadscriptednamespace": "Tento SVG soubor obsahuje nedovolený jmenný prostor „$1“", + "uploadscriptednamespace": "Tento SVG soubor obsahuje nedovolený jmenný prostor „<nowiki>$1</nowiki>“", "uploadinvalidxml": "XML v načteném souboru nelze zpracovat.", "uploadvirus": "Tento soubor obsahuje virus! Podrobnosti: $1", "uploadjava": "Tento soubor je ZIP, který obsahuje javový soubor .class.\nNačítání javových souborů není dovoleno, neboÅ¥ by mohly umožnit obcházení bezpečnostních omezení.", @@ -1731,6 +1742,7 @@ "uncategorizedcategories": "Nekategorizované kategorie", "uncategorizedimages": "Nekategorizované soubory", "uncategorizedtemplates": "Nekategorizované Å¡ablony", + "uncategorized-categories-exceptionlist": " # Obsahuje seznam kategorií, které se nemají objevovat na Speciální:Nekategorizované kategorie. Jedna kategorie na každém řádku, uvozená pomocí „*“. Řádky začínající jiným znakem (včetně bílých znaků) se ignorují. Komentáře vkládejte za „#“.", "unusedcategories": "Nepoužívané kategorie", "unusedimages": "Nepoužívané soubory", "wantedcategories": "Chybějící kategorie", @@ -1829,8 +1841,10 @@ "apisandbox-sending-request": "Odesílá se API požadavek…", "apisandbox-loading-results": "Přijímají se API výsledky…", "apisandbox-results-error": "DoÅ¡lo k chybě při načítání odpovědi na API dotaz: $1.", - "apisandbox-request-params-json": "Parametry v JSON:", + "apisandbox-request-selectformat-label": "Zobrazit data požadavku jako:", + "apisandbox-request-format-url-label": "řetězec dotazu do URL", "apisandbox-request-url-label": "URL požadavku:", + "apisandbox-request-json-label": "JSON požadavku:", "apisandbox-request-time": "Trvání požadavku: {{PLURAL:$1|$1 ms}}", "apisandbox-results-fixtoken": "Opravit token a znovu odeslat", "apisandbox-results-fixtoken-fail": "Nepodařilo se načíst token „$1“.", @@ -1972,7 +1986,7 @@ "emailccsubject": "Kopie Vaší zprávy pro uživatele $1: $2", "emailsent": "E-mail odeslán", "emailsenttext": "Váš e-mail byl odeslán.", - "emailuserfooter": "Tento e-mail byl odeslán z {{grammar:2sg|{{SITENAME}}}} pomocí funkce „{{int:emailuser}}“; {{GENDER:$1|odeslal ho uživatel|odeslala ho uživatelka}} $1 {{GENDER:$2|uživateli|uživatelce}} $2. Váš e-mail bude odeslán přímo {{GENDER:$1|původnímu odesílateli, čímž mu|původní odesílatelce, čímž jí}} prozradíte svou e-mailovou adresu.", + "emailuserfooter": "Tento e-mail byl odeslán z {{grammar:2sg|{{SITENAME}}}} pomocí funkce „{{int:emailuser}}“; {{GENDER:$1|odeslal ho uživatel|odeslala ho uživatelka}} $1 {{GENDER:$2|uživateli|uživatelce}} $2. Pokud na něj odpovíte, bude váš e-mail odeslán přímo {{GENDER:$1|původnímu odesílateli, čímž mu|původní odesílatelce, čímž jí}} prozradíte svou e-mailovou adresu.", "usermessage-summary": "Doručena zpráva od systému.", "usermessage-editor": "Systémový poslíček", "watchlist": "Sledované stránky", @@ -2070,7 +2084,7 @@ "editcomment": "Shrnutí editace bylo: <em>$1</em>.", "revertpage": "Editace uživatele „[[Special:Contributions/$2|$2]]“ ([[User talk:$2|diskuse]]) vráceny do předchozího stavu, jehož autorem je „[[User:$1|$1]]“", "revertpage-nouser": "Editace skrytého uživatele vráceny do předchozího stavu, jehož {{GENDER:$1|autorem|autorkou}} je „[[User:$1|$1]]“", - "rollback-success": "Editace uživatele $1 byly vráceny na poslední verzi od uživatele $2.", + "rollback-success": "Editace {{GENDER:$3|uživatele|uživatelky}} $1 byly vráceny na poslední verzi od {{GENDER:$4|uživatele|uživatelky}} $2.", "rollback-success-notify": "Editace uživatele $1 byly vráceny;\nobnovena poslední verze od uživatele $2. [$3 Zobrazit změny]", "sessionfailure-title": "Chyba relace", "sessionfailure": "Zřejmě je nějaký problém s vaším přihlášením;\nvámi požadovaná činnost byla stornována jako prevence před neoprávněným přístupem.\nStiskněte tlačítko „zpět“, obnovte stránku, ze které jste přiÅ¡li, a zkuste činnost znovu.", @@ -3553,6 +3567,7 @@ "logentry-tag-update-logentry": "$1 {{GENDER:$2|změnil|změnila}} značky na protokolovacím záznamu $5 k stránce $3 ({{PLURAL:$7|přidáno}} $6; {{PLURAL:$9|odebráno}} $8)", "rightsnone": "(žádné)", "revdelete-summary": "shrnutí editace", + "rightslogentry-temporary-group": "$1 (dočasně, do $2)", "feedback-adding": "Komentář se přidává na stránku…", "feedback-back": "Zpět", "feedback-bugcheck": "Skvělé! Jen zkontrolujte, zda se nejedná o jednu z [$1 už známých chyb].", @@ -3577,56 +3592,12 @@ "feedback-useragent": "Uživatelský agent:", "searchsuggest-search": "Hledat na {{GRAMMAR:6sg|{{SITENAME}}}}", "searchsuggest-containing": "obsahující…", - "api-error-autoblocked": "VaÅ¡e IP adresa byla automaticky zablokována, protože ji používal zablokovaný uživatel.", - "api-error-badaccess-groups": "Nemáte povoleno nahrávat soubory na tuto wiki.", "api-error-badtoken": "Vnitřní chyba: Å¡patný token.", - "api-error-blocked": "Byla vám zablokována možnost editace.", - "api-error-copyuploaddisabled": "Načítání z URL je na tomto severu zakázáno.", - "api-error-duplicate": "Na této wiki již {{PLURAL:$1|existuje jiný soubor|existují jiné soubory}} se shodným obsahem.", - "api-error-duplicate-archive": "{{PLURAL:$1|Soubor|Soubory}} se stejným obsahem již zde dříve {{PLURAL:$1|byl|byly}}, ale {{PLURAL:$1|byl smazán|byly smazány}}.", - "api-error-empty-file": "Načtený soubor je prázdný.", "api-error-emptypage": "Zakládání prázdných stránek není dovoleno.", - "api-error-fetchfileerror": "Vnitřní chyba: doÅ¡lo k chybě při stahování souboru.", - "api-error-fileexists-forbidden": "Soubor s názvem „$1“ už existuje a nelze ho přepsat.", - "api-error-fileexists-shared-forbidden": "Soubor s názvem „$1“ už existuje ve sdíleném úložiÅ¡ti a nelze ho přepsat.", - "api-error-file-too-large": "Načtený soubor je příliÅ¡ velký.", - "api-error-filename-tooshort": "Název souboru je příliÅ¡ krátký.", - "api-error-filetype-banned": "Tento typ souboru je zakázán.", - "api-error-filetype-banned-type": "$1 {{PLURAL:$4|je nedovolený formát souborů|jsou nedovolené formáty souborů}}. {{PLURAL:$3|Povolený formát souborů je|Povolené formáty souborů jsou}} $2.", - "api-error-filetype-missing": "Tento soubor nemá příponu.", - "api-error-hookaborted": "Zamýšlená úprava byla zakázána rozÅ¡iřujícím modulem.", - "api-error-http": "Vnitřní chyba: nepodařilo se připojit k serveru.", - "api-error-illegal-filename": "Tento název souboru není dovolen.", - "api-error-internal-error": "Vnitřní chyba: doÅ¡lo k chybě při zpracování vaÅ¡eho načteného souboru.", - "api-error-invalid-file-key": "Vnitřní chyba: soubor nebyl nalezen v dočasném úložiÅ¡ti.", - "api-error-missingparam": "Vnitřní chyba: chybí parametry požadavku.", - "api-error-missingresult": "Vnitřní chyba: nelze určit, zda kopírování bylo úspěšné.", - "api-error-mustbeloggedin": "K načtení souborů musíte být přihlášen.", - "api-error-mustbeposted": "Vnitřní chyba: požadavek musí být prostřednictvím HTTP POST.", - "api-error-noimageinfo": "Načtení bylo úspěšné, ale server neposkytl o souboru žádné informace.", - "api-error-nomodule": "Interní chyba: není nastaven načítací modul.", - "api-error-ok-but-empty": "Interní chyba: ze serveru nepřiÅ¡la odpověď.", - "api-error-overwrite": "Není dovoleno přepsat existující soubor.", - "api-error-ratelimited": "Pokoušíte se načíst v krátkém časovém rozmezí načíst více souborů, než je na této wiki dovoleno.\nZkuste to znovu za několik minut.", - "api-error-stashfailed": "Vnitřní chyba: Serveru se nepodařilo uložit dočasný soubor.", "api-error-publishfailed": "Vnitřní chyba: Serveru se nepodařilo zveřejnit dočasný soubor.", - "api-error-stasherror": "Při načítání souboru do skrýše doÅ¡lo k chybě.", - "api-error-stashedfilenotfound": "Při pokusu o načtení souboru ze skrýše nebyl uložený soubor nalezen.", - "api-error-stashpathinvalid": "Cesta, na které měl být soubor uložen ve skrýši, je neplatná.", - "api-error-stashfilestorage": "Při ukládání souboru do skrýše doÅ¡lo k chybě.", - "api-error-stashzerolength": "Server nemohl soubor uložit do skrýše, protože má nulovou délku.", - "api-error-stashnotloggedin": "Pro ukládání souboru do skrýše musíte být přihlášeni.", - "api-error-stashwrongowner": "Soubor, ke kterému se ve skrýši pokoušíte přistoupit, vám nepatří.", - "api-error-stashnosuchfilekey": "Klíč souboru, ke kterému se ve skrýši pokoušíte přistoupit, neexistuje.", - "api-error-timeout": "Server neodpověděl v očekávaném čase.", - "api-error-unclassified": "DoÅ¡lo k neznámé chybě.", - "api-error-unknown-code": "Neznámá chyba: „$1“.", - "api-error-unknown-error": "Vnitřní chyba: doÅ¡lo k chybě při pokusu o načtení souboru.", + "api-error-stashfailed": "Vnitřní chyba: Serveru se nepodařilo uložit dočasný soubor.", "api-error-unknown-warning": "Neznámé varování: „$1“.", "api-error-unknownerror": "Neznámá chyba: „$1“.", - "api-error-uploaddisabled": "Načítání souborů je na této wiki vypnuto.", - "api-error-verification-error": "Soubor je možná poÅ¡kozen nebo má Å¡patnou příponu.", - "api-error-was-deleted": "Soubor s tímto názvem byl již dříve načten a později smazán.", "duration-seconds": "$1 {{PLURAL:$1|sekunda|sekundy|sekund}}", "duration-minutes": "$1 {{PLURAL:$1|minuta|minuty|minut}}", "duration-hours": "$1 {{PLURAL:$1|hodina|hodiny|hodin}}", @@ -3749,6 +3720,7 @@ "mw-widgets-titleinput-description-new-page": "stránka zatím neexistuje", "mw-widgets-titleinput-description-redirect": "přesměrování na $1", "mw-widgets-categoryselector-add-category-placeholder": "Přidat kategorii…", + "mw-widgets-usersmultiselect-placeholder": "Přidat další…", "sessionmanager-tie": "Nelze kombinovat několik typů autentizace požadavků: $1.", "sessionprovider-generic": "relace pomocí $1", "sessionprovider-mediawiki-session-cookiesessionprovider": "relace pomocí cookies", @@ -3880,7 +3852,7 @@ "usercssispublic": "Uvědomte si prosím, že podstránky s CSS by neměly obsahovat tajné údaje, protože jsou viditelné ostatním uživatelům.", "restrictionsfield-badip": "Neplatná IP adresa nebo rozsah: $1", "restrictionsfield-label": "Povolené rozsahy IP adres:", - "restrictionsfield-help": "Jedna IP adresa nebo CIDR rozsah na řádek. VÅ¡echno povolíte pomocí<br><code>0.0.0.0/0</code><br><code>::/0</code>", + "restrictionsfield-help": "Jedna IP adresa nebo CIDR rozsah na řádek. VÅ¡echno povolíte pomocí:<pre>0.0.0.0/0\n::/0</pre>", "revid": "revize $1", "pageid": "Stránka s ID $1" } diff --git a/languages/i18n/csb.json b/languages/i18n/csb.json index 8877f738c8..daebbc1c40 100644 --- a/languages/i18n/csb.json +++ b/languages/i18n/csb.json @@ -8,48 +8,52 @@ "MinuteElectron", "Warszk", "לערי ריינהארט", - "아라" + "아라", + "Kirsan", + "Ankry" ] }, "tog-underline": "Pòdsztrëchiwùjë lënczi:", "tog-hideminor": "Zatacë môłi edicëje w slédnëch zmianach", "tog-hidepatrolled": "Zatacë sprôdzoné edicëje slédnych zjinakach", "tog-newpageshidepatrolled": "Zatacë sprôdzoné edicëje w lësce nowich starnów", + "tog-hidecategorization": "Zatacë kategòrizacjã strón", "tog-extendwatchlist": "Rozwinie lëstã ùzérónëch artiklów bë wëskrzënic wszëtczé zmianë, ni le blós slédné", "tog-usenewrc": "Ùżëjé rozwinãti wëzdrzatk slédnych zjinaków (nót je JavaScript)", "tog-numberheadings": "Aùtomatné numerowanié nôgłówków", - "tog-showtoolbar": "Wëskrzrni listwã nôrzãdzów edicëji (nót je JavaScript)", - "tog-editondblclick": "Editëjë starnë przez dëbeltné klëkniãcé (nót je JavaScript)", - "tog-editsectiononrightclick": "Włączë edicëjã sekcëji bez klëkniãcé prawą knąpą mëszë<br />na titlu sekcëji (JavaScript)", - "tog-watchcreations": "Dodôwôj starnë, chtërné ùsôdzã, do mòji lëstë ùzérónëch artiklów", - "tog-watchdefault": "Dodôwôj starnë, chtërné editëjã do mòji lëstë ùzérónëch artiklów", - "tog-watchmoves": "Dodôwôj starnë jaczé przenoszã do mòji lëstë ùzérónëch artiklów", - "tog-watchdeletion": "Dodôwôj starnë jaczé rëmóm do mòji lëstë ùzérónëch artiklów", + "tog-showtoolbar": "Wëskrzëni listwã nôrzãdzów edicje", + "tog-editondblclick": "Editëjë starnë przez dëbeltné klëkniãcé", + "tog-editsectiononrightclick": "Włączë edicjã sekcji bez klëkniãcé prawą knąpą mëszë na titlu sekcje", + "tog-watchcreations": "Dodôwôj do mòji lëstë ùzérónëch artiklów starnë, chtërné ùsôdzã, i lopczi, chtërné wladëjã", + "tog-watchdefault": "Dodôwôj do mòji lëstë ùzérónëch artiklów starnë i lopczi, chtërné editëjã.", + "tog-watchmoves": "Dodôwôj do mòji lëstë ùzérónëch artiklów starnë i lopczi, jaczé przenoszã.", + "tog-watchdeletion": "Dodôwôj do mòji lëstë ùzérónëch artiklów starnë i lopczi, jaczé rëmóm.", "tog-minordefault": "Zaznaczë wszëtczé edicëje domëslno jakno môłé", "tog-previewontop": "Pòkażë pòdzérk przed kastką edicëji", "tog-previewonfirst": "Pòkażë pòdzérk ju przed pierszą edicëją", - "tog-enotifwatchlistpages": "Wëslë mie e-mail czedë starna jaką ùzéróm je zmieniwónô", + "tog-enotifwatchlistpages": "Wësli mie e-mail czedë je zmieniwónô starna abò lopk, jaczi ùzéróm.", "tog-enotifusertalkpages": "Wëslë mie e-mail czedë zmieniwónô je mòja starna diskùsëji", - "tog-enotifminoredits": "Wëslë mie e-mail téż dlô môłich zmianów starnów", + "tog-enotifminoredits": "Wësli mie e-mail téż dlô môłich zmianów starnów i lopków.", "tog-enotifrevealaddr": "Pòkażë mòją adresã e-mail w òdkôzëwùjącym mailu", "tog-shownumberswatching": "Pòkażë lëczba ùzérającëch brëkòwników", - "tog-oldsig": "Pòdzérk wëzdrzatkù twòjegò pòdpisënka", + "tog-oldsig": "Wëzdrzatk twòjegò pòdpisënkù:", "tog-fancysig": "Wzérôj na pòdpisënk jakno na wikikòd (bez aùtomatnych lënków)", - "tog-uselivepreview": "Brëkùjë wtimczasnegò pòdzérkù (JavaScript) (eksperimentalné)", + "tog-uselivepreview": "Brëkùjë wtimczasnegò pòdzérkù", "tog-forceeditsummary": "Pëtôj przed wéńdzenim do pùstégò pòdrechòwania edicëji", - "tog-watchlisthideown": "Zatacë mòjé edicëje z lëstë ùzérónëch artiklów", + "tog-watchlisthideown": "Zatacë mòje edicje z lëstë ùzérónëch artiklów", "tog-watchlisthidebots": "Zatacë edicëje botów z lëstë ùzérónëch artiklów", "tog-watchlisthideminor": "Zatacë môłi zmianë z lëstë ùzérónëch artiklów", "tog-watchlisthideliu": "Zatacë edicëje wlogòwónych brëkòwników na lësce ùzérónych artiklów", "tog-watchlisthideanons": "Zatacë edicëje anonimòwich brëkòwników na lësce ùzérónych artiklów", "tog-watchlisthidepatrolled": "Zatacë sprôwdzoné edicëje z lëstë ùzérónych artiklów", + "tog-watchlisthidecategorization": "Zatacë kategòrizacjã strón", "tog-ccmeonemails": "Sélôj do mie kòpije e-mailów, chtërné sélóm do jinych brëkòwników", "tog-diffonly": "Nie wëskrzëniôj zamkłoscë starnë niżi przërónaniô zjinaków", "tog-showhiddencats": "Wëskrzëni zataconé kategòrëje", "tog-norollbackdiff": "Pòcësni wëskrzënianié zjinaków pò copniãcô sã", "underline-always": "Wiedno", "underline-never": "Nigdë", - "underline-default": "Domëslny przezérnik", + "underline-default": "Tak jak w domëslnym przezérnikù abò skórczi.", "editfont-style": "Sztél fònta w edicjowim pòlu:", "editfont-default": "Domëslny przezérnik", "editfont-monospace": "fònt ò stałi szérzé", @@ -105,6 +109,18 @@ "oct": "ruj", "nov": "lës", "dec": "gòd", + "january-date": "$1 stëcznika", + "february-date": "$1 gromicznika", + "march-date": "$1 strëmiannika", + "april-date": "$1 łżëkwiata", + "may-date": "$1 maja", + "june-date": "$1 czerwińca", + "july-date": "$1 lëpińca", + "august-date": "$1 zélnika", + "september-date": "$1 séwnika", + "october-date": "$1 pazdzérznika", + "november-date": "$1 lëstopadnika", + "december-date": "$1 gòdnika", "pagecategories": "{{PLURAL:$1|Kategòrëjô|Kategòrëje}}", "category_header": "Artikle w kategòrëji \"$1\"", "subcategories": "Pòdkategòrëje", @@ -121,9 +137,9 @@ "newwindow": "(òtmëkô sã w nowim òczenkù)", "cancel": "Anulujë", "moredotdotdot": "Wicy...", - "mypage": "Mòja starna", - "mytalk": "Diskùsëjô", - "anontalk": "Diskùsëjô dlô ti IP-adresë", + "mypage": "Starna", + "mytalk": "Diskùsjô", + "anontalk": "Diskùsjô", "navigation": "Nawigacëjô", "and": " ë", "qbfind": "Nalézë", @@ -136,6 +152,7 @@ "actions": "Dzéjania", "namespaces": "Rum mionów:", "variants": "Wariantë", + "navigation-heading": "Nawigacyjné menu", "errorpagetitle": "Fela", "returnto": "Nazôd do starnë $1.", "tagline": "Z {{SITENAME}}", @@ -147,28 +164,29 @@ "history": "Historëjô starnë", "history_short": "Historëjô", "updatedmarker": "zaktualnioné òd mòji slédny gòscënë", - "printableversion": "Wersëjô do drëkù", + "printableversion": "Wersjô do drëkù", "permalink": "Prosti lënk", "print": "Drëkùjë", + "view": "Pòdzér", "edit": "Edicëjô", - "create": "Ùsôdzë", + "create": "Ùsadzë", "editthispage": "Editëjë nã starnã", - "create-this-page": "Ùsôdzë nã starnã", + "create-this-page": "Ùsadzë nã starnã", "delete": "Rëmôj", "deletethispage": "Rëmôj nã starnã", - "undelete_short": "Doprowôdzë nazôd {{PLURAL:$1|1 edicëjã|$1 edicëje|$1 edicëjów}}", + "undelete_short": "Doprowadzë nazôd {{PLURAL:$1|1 edicjã|$1 edicje|$1 edicjów}}", "protect": "Zazychrëjë", "protect_change": "zmieni", "protectthispage": "Zazychrëjë nã starnã", "unprotect": "Òdzychrëjë", "unprotectthispage": "Òdzychrëjë nã starnã", "newpage": "Nowô starna", - "talkpage": "Diskùsëjô starnë", - "talkpagelinktext": "Diskùsëjô", + "talkpage": "Diskùsjô starnë", + "talkpagelinktext": "diskùsjô", "specialpage": "Specjalnô starna", "personaltools": "Priwatné przërëchtënczi", "articlepage": "Starna artikla", - "talk": "Diskùsëjô", + "talk": "Diskùsjô", "views": "Pòdzérków", "toolbox": "Przërëchtënczi", "userpage": "Wëskrzëni starnã brëkòwnika", @@ -190,13 +208,14 @@ "jumptosearch": "szëkbë", "aboutsite": "Ò {{SITENAME}}", "aboutpage": "Project:Ò_{{SITENAME}}", - "copyright": "Zamkłosc hewòtny starnë je ùżëczónô wedle reglów $1.", + "copyright": "Zamkłosc hewòtny starnë je ùprzëstãpnianô wedle reglów $1, jeżlë nie pòdóno jinaczi.", "copyrightpage": "{{ns:project}}:Ùsôdzkòwé_prawa", "currentevents": "Aktualné wëdarzenia", "currentevents-url": "Project:Aktualné wëdarzenia", "disclaimers": "Prawné zastrzedżi", "disclaimerpage": "Project:Prawné zastrzedżi", "edithelp": "Pòmòc do edicëji", + "helppage-top-gethelp": "Pòmòc", "mainpage": "Przédnô starna", "mainpage-description": "Przédnô starna", "policy-url": "Project:Regle", @@ -221,6 +240,7 @@ "toc": "Spisënk zamkłoscë", "showtoc": "pokôż", "hidetoc": "zatacë", + "confirmable-yes": "Jo", "thisisdeleted": "Wëskrzënic abò dobëc nazôd $1?", "viewdeleted": "Òbaczë $1", "restorelink": "{{PLURAL:$1|jednô rëmniãtô wersëjô|$1 rëmniãté wersëje|$1 rëmniãtich wersëjów}}", @@ -240,10 +260,11 @@ "nstab-special": "Specjalnô starna", "nstab-project": "meta-starna", "nstab-image": "Òbrôzk", - "nstab-mediawiki": "Òłosënk", + "nstab-mediawiki": "Ògłosënk", "nstab-template": "Szablóna", "nstab-help": "Pòmòc", "nstab-category": "Kategòrëjô", + "mainpage-nstab": "Przédnô starna", "nosuchaction": "Felënk taczégò dzéjaniô", "nosuchactiontext": "Dzéjanié pòdóné w adrese URL nie je dobré.\nMòzlëwą przëczëną je lëterowô zmiłka w URL abò lëchi lënk.\nTo mòże bëc téż fela softwôrë brëkòwóny przez {{SITENAME}}.", "nosuchspecialpage": "Nie da taczi specjalny starnë", @@ -265,48 +286,65 @@ "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ã <span class='plainlinks'>[$1 wlogòwac]</span> 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.", "yourname": "Miono brëkòwnika", + "userlogin-yourname": "Pòzwa brëkòwnika", "yourpassword": "Twòja parola", + "createacct-yourpassword-ph": "Wprowadzë hasło do przistãpù", "yourpasswordagain": "Pòwtórzë parolã", + "createacct-yourpasswordagain": "Pòcwierdzë hasło", + "createacct-yourpasswordagain-ph": "Wprowadzë hasło do przistãpù jesz rôz", + "userlogin-remembermypassword": "Nie wëlogòwùj mie", "yourdomainname": "Twòjô domena", "login": "Wlogùjë mie", "nav-login-createaccount": "Logòwanié", "userlogin": "Logòwanié", "userloginnocreate": "Wlogùjë mie", - "logout": "Wëlogùjë mie", + "logout": "Wëlogùj mie", "userlogout": "Wëlogòwanié", "notloggedin": "Felëje logòwóniô", + "userlogin-noaccount": "Ni môsz kònta?", "nologin": "Ni môsz kònta? '''$1'''.", - "nologinlink": "Ùsôdzë kònto", + "nologinlink": "Ùsadzë kònto", "createaccount": "Założë nowé kònto", "gotaccount": "Masz ju kònto? '''$1'''.", "gotaccountlink": "Wlogùjë", - "createaccountmail": "òb e-mail", + "userlogin-resetpassword-link": "Zabôcził jes hasło?", + "userlogin-helplink2": "Pòmòc przë logòwaniu", + "createacct-emailoptional": "Adres e-mail (òptacëjno)", + "createacct-email-ph": "Pòdôj swój adres e-mail.", + "createaccountmail": "Ùżij timczasowégò hasła i wësli je na pòdóny adres e-mail.", + "createaccountreason": "Przëczëna:", + "createacct-reason": "Przëczëna", + "createacct-submit": "Ùsadzë kònto", "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ô", - "loginsuccesstitle": "ùdałé logòwanié", + "loginsuccesstitle": "Ùdałé logòwanié", "loginsuccess": "Të jes wlogòwóny do {{SITENAME}} jakno \"$1\".", - "nosuchuser": "Nie dô brëkòwnika ò mionie \"$1\".\nSprôwdzë pisënk abò [[Special:CreateAccount|ùsôdzë nowé kònto]].", + "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]].", "nouserspecified": "Mùszisz pòdac miono brëkòwnika.", "wrongpassword": "Lëchô parola.\nSpróbùjë znowa.", "wrongpasswordempty": "Wpisónô parola je pùstô\nSpróbùjë znowa.", "passwordtooshort": "Parola mùszi zamëkac w se co nômni $1 {{PLURAL:$1|céch|céchë|céchów}}.", - "mailmypassword": "Wëslë nową parolã e-mailą", + "mailmypassword": "Zetrzéc hasło.", "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.", - "emailauthenticated": "Twòjô adresa e-mail òsta pòcwierdzonô $2 ò $3.", + "emailauthenticated": "Twój adres e-mail òstôł pòcwierdzóny $2 ò $3.", "accountcreated": "Konto założone", - "accountcreatedtext": "Konto brëkòwnika dlô $1 je założone.", + "accountcreatedtext": "Kònto brëkòwnika dlô [[{{ns:User}}:$1|$1]], [[{{ns:User talk}}:$1|talk]] òstało ùsadzóné.", "createaccount-title": "Kònto ùsôdzoné dlô {{SITENAME}}", "loginlanguagelabel": "Jãzëk: $1", + "pt-login": "Wlogùj mie", + "pt-createaccount": "Ùsadzë kònto", + "pt-userlogout": "Wëlogùj", "changepassword": "Zmiana parolë", "oldpassword": "Stôrô parola:", "newpassword": "Nowô parola", "retypenew": "Napiszë nową parolã jesz rôz", "resetpass-submit-loggedin": "Zmiana parolë", "resetpass-submit-cancel": "Anulujë", + "passwordreset-username": "Pòzwa brëkòwnika", "bold_sample": "Wëtłëszczony drëk", "bold_tip": "Wëtłëszczony drëk", "italic_sample": "Ùchëłi tekst", @@ -326,28 +364,30 @@ "sig_tip": "Twój pòdpisënk z datumã a czasã", "hr_tip": "Hòrizontalnô linijô (brëkùjë szpórowno)", "summary": "Pòdrechòwanié:", - "subject": "Téma/nagłówk:", - "minoredit": "To je drobnô edicëjô", + "subject": "Téma:", + "minoredit": "To je drobnô edicjô", "watchthis": "Ùzérôj", "savearticle": "Zapiszë artikel", "preview": "Pòdzérk", "showpreview": "Wëskrzëni pòdzérk", "showdiff": "Wëskrzëni zmianë", - "anoneditwarning": "'''Bôczë:''' Të nie je wlogòwóny. Twòjô adresa IP mdze zapisónô w historëji edicëji ti starnë.", + "anoneditwarning": "<strong>Bôczë:</strong> 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ë <strong>[$1 wlogùjesz sã]</strong> abò <strong>[$2 ùsadzysz kònto]</strong>twòje zjinaczi òstóną przëpisóné do kònta, co wicy mającë kònto òtrzimôsz 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:", "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ë", "loginreqpagetext": "$1 sã, żebë przezérac jinszé starnë.", "accmailtitle": "Parola wësłónô.", - "accmailtext": "Przëtrôfkòwò wëgenerowónô parola dlô [[User talk:$1|$1]] òsta wësłónô do $2.\n\nParolã dlô negò nowégò kònta mòże zmienic pò wlogòwaniu na starnie ''[[Special:ChangePassword|zjinaka parolë]]''.", + "accmailtext": "Przëtrôfkòwò wëgenerowónô parola dlô [[User talk:$1|$1]] òsta wësłónô do $2. Parolã dlô negò nowégò kònta mòże zmienic pò wlogòwaniu na starnie <em>[[Special:ChangePassword|zjinaka parolë]]</em> .", "newarticle": "(Nowi)", "newarticletext": "Môsz przëszłi z lënkù do starnë jaka jesz nie òbstoji.\nBë ùsôdzëc artikel, naczni pisac w kastce niżi (òb. [$1 starnã pòmòcë]\ndlô wicy wëdowiédzë).\nJeżlë jes të tuwò bez zmiłkã, le klëkni w swòjim przezérnikù knąpã '''nazôd'''.", - "anontalkpagetext": "----''To je starna dyskùsëji anonimòwiégò brëkòwnika, chtëren nie ùsôdzëł jesz swòjegò kòntae, abò gò nie brëkùje.\nAbë gò rozpòznac, ùżëwómë adresów IP.\nTakô adresa IP, mòże bëc równak brëkòwónô przez wiele lëdzy.\nJeżlë jes anonimòwim brëkòwnikã ë ùwôżôsz, że ne wiadła nie są do ce sczerowóne, tedë [[Special:CreateAccount|ùsôdzë nowé kònto]] abò [[Special:UserLogin|wlogùjë sã]], bë niechac niezrozmeiniô z jinyma anonimòwima brëkòwnikama.''", - "noarticletext": "Felëje starna ò tim titlu.\nMòżesz [[Special:Search/{{PAGENAME}}|szëkac za {{PAGENAME}} na jinych starnach]],\n<span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} szëkac w logù] abò [{{fullurl:{{FULLPAGENAME}}|action=edit}} ùsôdzëc nã starnã]</span>", + "anontalkpagetext": "----\n<em>To je starna diskùsje anonimòwégò brëkòwnika, chtëren nie ùsadzëł jesz swòjegò kònta, abò gò nie brëkùje.</em>\nAbë gò rozpòznac, ùżëwómë adresów IP.\nTakô adresa IP mòże bëc równak brëkòwónô przez wiele lëdzy.\nJeżlë jes anonimòwim brëkòwnikã i ùwôżôsz, że ne wiadła nie są do ce sczerowóné, tedë [[Special:CreateAccount|ùsadzë nowé kònto]] abò [[Special:UserLogin|wlogùj sã]], bë niechac niezrozmieniô z jinyma anonimòwima brëkòwnikama.''", + "noarticletext": "Felëje starna ò tim titlu.\nMòżesz [[Special:Search/{{PAGENAME}}|szëkac za {{PAGENAME}} na jinych starnach]],\n<span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} szëkac w logù] abò [{{fullurl:{{FULLPAGENAME}}|action=edit}} ùsadzëc nã starnã]</span>", "clearyourcache": "'''Bôczë: Pò zapisanim, mòże bãdzesz mùszôł òminąc pamiãc przezérnika bë òbaczëc zmianë.'''\n'''Mozilla / Firefox / Safari:''' przëtrzëmôj ''Shift'' òbczas klëkaniô na ''Zladëjë znowa'', abò wcësni ''Ctrl-F5'' abò ''Ctrl-R'' (''Command-R'' na kòmpùtrach Mac);\n'''Konqueror:''': klëkni na knąpã ''Zladëjë znowa'', abò wcësni ''F5'';\n'''Opera:''' wëczëszczë pòdrãczną pamiãc w ''Tools→Preferences'';\n'''Internet Explorer:'''przëtrzëmôj ''Ctrl'' òbczas klëkaniô na ''Zladëjë znowa'', abò wcësni ''Ctrl-F5''.", "updated": "(Zaktualnioné)", - "previewnote": "'''To je blós pòdzérk - artikel jesz nie je zapisóny!'''", + "previewnote": "<strong>To je blós pòdzérk.</strong>\n Artikel jesz nie je zapisóny!", + "continue-editing": "Przeńdzë do pòla edicje.", "editing": "Edicëjô $1", "editingsection": "Edicëjô $1 (dzél)", "explainconflict": "Chtos sfórtowôł wprowadzëc swòją wersëjã artikla òbczôs Twòji edicëji.\nGórné pòle edicëji zamëkô w se tekst starnë aktualno zapisóny w pòdôwkòwi baze.\nTwòje zmianë są w dólnym pòlu edicëji.\nBë wprowadzëc swòje zmianë mùszisz zmòdifikòwac tekst z górnégò pòla.\n'''Blós''' tekst z górnégò pòla mdze zapisóny w baze czej wcësniesz \"{{int:savearticle}}\".", @@ -356,12 +396,15 @@ "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.<br />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ò.<br />\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", + "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}}:", "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ë:", + "undo-summary": "Anulowanié wersje $1 aùtora [[Special:Contributions/$2|$2]] ([[User talk:$2|diskùsjô]])", "viewpagelogs": "Òbôczë rejestrë dzéjanió dlô ti starnë", "currentrev": "Aktualnô wersëjô", "currentrev-asof": "Aktualnô wersëjô na dzéń $1", @@ -375,21 +418,25 @@ "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": "Przezérôj historëjã", - "histfirst": "Stôrszé", - "histlast": "Nowszé", + "history-show-deleted": "Leno rëmniãté", + "histfirst": "òd nôstarszich", + "histlast": "òd nônowszich", "history-feed-item-nocomment": "$1 ò $2", "rev-delundel": "pòkażë/zatacë", "rev-showdeleted": "pokôż", "revdelete-show-file-submit": "Jo", - "revdelete-radio-set": "Jo", - "revdelete-radio-unset": "Nié", + "revdelete-radio-set": "ùtacony", + "revdelete-radio-unset": "widzawny", + "revdelete-log": "Przëczëna:", "revdel-restore": "Zjinaczë widzawnotã", "pagehist": "Historëjô starnë", "deletedhist": "Rëmniãtô historëjô edicëji", "revdelete-hide-current": "Pòkôza sã fela przë taceniu wersëji datowóny na $2, $1. To je nônowszô wersëjô starnë, chtërnô ni mòże bëc zataconô.", "revdelete-show-no-access": "Pòkôza sã fela przë próbie wëskrzënieniô elementu datowónegò na $2, $1. Widzawnota negò elementu òsta ògrańczonô - ni môsz przëstãpù.", + "mergehistory-reason": "Przëczëna:", "revertmerge": "Rozdzélë", - "history-title": "Historëjô wersëji dlô \"$1\"", + "history-title": "Historiô zjinaków dlô \"$1\"", + "difference-title": "$1 — rozeszłoscë midzë wersjama", "lineno": "Lëniô $1:", "compareselectedversions": "Przërównôj wëbróné wersëje", "editundo": "doprowadzë nazôd", @@ -399,33 +446,33 @@ "prevn": "wczasniészé {{PLURAL:$1|$1}}", "nextn": "nôslédné {{PLURAL:$1|$1}}", "viewprevnext": "Òbaczë ($1 {{int:pipe-separator}} $2) ($3).", + "searchprofile-articles": "Artikle", + "searchprofile-everything": "na wszëtczich starnach", "searchprofile-advanced": "Awansowóné", "search-result-size": "$1 ({{PLURAL:$2|1 słowò|$2 słowa|$2 słów}})", - "search-redirect": "(przeczérowanié $1)", + "search-redirect": "(przeczérowanié z $1)", "search-section": "(dzél $1)", "search-suggest": "Të mëszlôł ò: $1", "search-interwiki-caption": "Sosterné ùdbë", - "search-interwiki-default": "Skùtczi dlô $1:", + "search-interwiki-default": "Wëniczi òd $1:", "search-interwiki-more": "(wicy)", "searchall": "wszëtczé", "powersearch-legend": "Awansowónô szëkba", "powersearch-ns": "Szëkba w rumach mionów:", "preferences": "Preferencëje", - "mypreferences": "Mòje nastôwë", + "mypreferences": "Nastôwë", "prefs-edits": "Lëczba edicëjów:", "prefs-skin": "Wëzdrzatk", "skin-preview": "Pòdzérk", "datedefault": "Felëje preferencëji", "prefs-personal": "Pòdôwczi brëkòwnika", - "prefs-rc": "Slédné edicëje", + "prefs-rc": "Slédné edicje", "prefs-watchlist": "Lësta ùzérónëch artiklów", "prefs-watchlist-days": "Wielëna dniów dlô wëskrzëniwaniô na lësce ùzérónëch artiklów:", "prefs-watchlist-edits": "Maksymalnô lëczba edicëjów do pòkazaniô w rozszérzoné lësce ùzérónëch artiklów:", "prefs-misc": "Jine", "saveprefs": "Zapiszë", "prefs-editing": "Edicëjô", - "rows": "Régów:", - "columns": "Kòlumnów:", "searchresultshead": "Szëkba", "stub-threshold": "Greńca dlô fòrmatowaniô <a href=\"#\" class=\"stub\">lënków stubów</a>:", "recentchangesdays": "Kùli dni pòkazëwac w slédnëch edicëjach:", @@ -433,7 +480,7 @@ "savedprefs": "Twòjé nastôwë òstałë zapisóné.", "timezonelegend": "Czasowô cona:", "localtime": "Môlowi czas:", - "timezoneuseserverdefault": "Ùżëjë domëslnégò czasu serwera", + "timezoneuseserverdefault": "Ùżij domëslny dlô ti wiki ($1)", "timezoneuseoffset": "Jinô (specyfikùjë różnicã)", "servertime": "Czas serwera:", "guesstimezone": "Wezmi z przezérnika", @@ -448,7 +495,7 @@ "timezoneregion-indian": "Indijsczi Òcean", "timezoneregion-pacific": "Spòkójny Òcean", "allowemail": "Włączë mòżlewòtã sélaniô e-mailów òd jinëch brëkòwników", - "prefs-searchoptions": "Òptacëje szëkbë", + "prefs-searchoptions": "Szëkba", "prefs-namespaces": "Rum mionów", "default": "domëszlné", "prefs-files": "Lopczi", @@ -458,40 +505,41 @@ "prefs-reset-intro": "Na ti starnie mòże doprowôdzëc nazôd domëslné nastôwë dlô ti starnë.\nNegò dzéjaniô ni mòżé pòzdze ju copnąc.", "prefs-emailconfirm-label": "Pòcwierdzenié e-mailowi adresë:", "youremail": "E-mail:", - "username": "Miono brëkòwnika:", - "prefs-memberingroups": "Nôlëżnik {{PLURAL:$1|karna|karnów}}", + "username": "{{GENDER:$1|Miono brëkòwnika}}:", + "prefs-memberingroups": "{{GENDER:$2| Nôlëżnik}}{{PLURAL:$1|karna|karnów}}", "prefs-registration": "Czas registracëji:", "yourrealname": "Miono ë nôzwëskò:", "yourlanguage": "Jãzëk:", - "yourvariant": "Wariant:", + "yourvariant": "Wariant jãzëka zamkłoscë:", "yournick": "Pòdpisënk:", "badsig": "Òchëbny pòdpisënk, sprôwdzë tadżi HTML.", "badsiglength": "Pòdpisënk je za dłudżi.\nMô bëc mni jakno $1 {{PLURAL:$1|znak|znaczi/znaków}}.", "gender-male": "Chłop", "gender-female": "Białka", "email": "E-mail", - "prefs-help-realname": "Prôwdzewi miono je òptacjowé a czej je dôsz, òstanié ùżëté do pòdpisaniô Twòjégò wkłôdu", + "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}}]])", + "userrights-reason": "Przëczëna:", "group": "Karno:", "group-user": "Brëkòwnicë", "group-autoconfirmed": "Aùtomatno zacwierdzony brëkòwnicë", "group-bot": "Bòtë", "group-sysop": "Sprôwnicë", - "group-bureaucrat": "Biurokracë", + "group-bureaucrat": "Biórokracë", "group-suppress": "Rewizorzë", "group-all": "(wszëtcë)", - "group-user-member": "{{GENDER:$1|Brëkòwnik}}", - "group-autoconfirmed-member": "aùtomatno zacwierdzony brëkòwnik", - "group-bot-member": "bòt", - "group-sysop-member": "sprôwnik", - "group-bureaucrat-member": "biurokrata", + "group-user-member": "{{GENDER:$1|brëkòwnik|brëkòwniczka}}", + "group-autoconfirmed-member": "{{GENDER:$1|aùtomatno zacwierdzony brëkòwnik|aùtomatno zacwierdzonô brëkòwniczka}}", + "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", "grouppage-user": "{{ns:project}}:Brëkòwnicë", "grouppage-autoconfirmed": "{{ns:project}}:Aùtomatno zacwierdzeni brëkòwnicë", "grouppage-bot": "{{ns:project}}:Bòtë", "grouppage-sysop": "{{ns:project}}:Sprôwnicë", - "grouppage-bureaucrat": "{{ns:project}}:Biurokracë", + "grouppage-bureaucrat": "{{ns:project}}:Biórokracë", "grouppage-suppress": "{{ns:project}}:Rewizorzë", "right-read": "Czëtanié starnów", "right-edit": "Edicëjô starnów", @@ -516,19 +564,31 @@ "rightslog": "Prawa brëkòwnika", "action-edit": "editëjë tã starnã", "nchanges": "{{PLURAL:$1|zjinaka|zjinaczi|zjinaków}}", - "recentchanges": "Slédné edicëje", + "enhancedrc-history": "Historiô", + "recentchanges": "Slédné edicje", "recentchanges-legend": "Òptacëje slédnych zjinaków", - "recentchanges-summary": "Na starna prezentérëje historëjã slédnëch edicëjów w {{SITENAME}}.", + "recentchanges-summary": "Na starna prezentérëje historiã slédnëch edicjów w ti wiki.", "recentchanges-feed-description": "Pòdstrzegô slédny zmianë w tim pòwrózkù.", - "recentchanges-label-minor": "To je drobnô edicëjô", + "recentchanges-label-newpage": "W ti edicje ùsadzóno nową starnã", + "recentchanges-label-minor": "To je drobnô edicjô", + "recentchanges-label-bot": "Tã edicjã wëkònôł bòt.", + "recentchanges-label-unpatrolled": "Ta edicjô jesz nie òsta sprawdzónô", + "recentchanges-label-plusminus": "Zjinaczónô wiôlgòsc starnë (lëczba bajtów)", + "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (òbaczë téż [[Special:NewPages|lëstã nowëch strón]])", "rcnotefrom": "Niżi są zmianë òd '''$2''' (pòkazóné do '''$1''').", "rclistfrom": "Pòkażë nowé zmianë òd $3 $2", "rcshowhideminor": "$1 môłé zmianë", + "rcshowhideminor-hide": "Zatacë", "rcshowhidebots": "$1 botë", - "rcshowhideliu": "$1 zalogòwónëch brëkòwników", - "rcshowhideanons": "$1 anonymòwëch brëkòwników", + "rcshowhidebots-show": "pokôż", + "rcshowhideliu": "$1 zaregistrowónëch brëkòwników", + "rcshowhideliu-hide": "Zatacë", + "rcshowhideanons": "$1 anonimòwëch brëkòwników", + "rcshowhideanons-hide": "Zatacë", "rcshowhidepatr": "$1 òbzérónë edicëje", - "rcshowhidemine": "$1 mòjé edicëje", + "rcshowhidemine": "$1 mòje edicje", + "rcshowhidemine-hide": "Zatacë", + "rcshowhidecategorization": "$1 kategòrizacjã strón", "rclinks": "Pòkażë slédnëch $1 zmianów zrobionëch òb slédné $2 dniów<br />$3", "diff": "jinosc", "hist": "hist.", @@ -574,16 +634,27 @@ "filehist-dimensions": "Miara", "filehist-filesize": "Miara lopka", "filehist-comment": "Òpisënk", - "imagelinks": "Lënczi lopka", + "imagelinks": "Wëkòrzëstanie lopka", "linkstoimage": "{{PLURAL:$1|Hewò je starna jakô òdwòłëje|Hewò są starnë jaczé òdwòłëją}} sã do negò lopka:", "nolinkstoimage": "Niżódnô starna nie òdwòłëje sã do negò lopka.", "sharedupload": "Nen lopk je na $1 ë mòże bëc brëkòwóny w jinych ùdbach.", "uploadnewversion-linktext": "Wladëjë nową wersëjã negò lopka", + "filerevert-comment": "Przëczëna:", + "filedelete-comment": "Przëczëna:", "listredirects": "Lësta przeczerowaniów", "unusedtemplates": "Pùsté szablónë", "randompage": "Kawlowô starna", "statistics": "Statisticzi", + "statistics-header-pages": "Statistika starnów", + "statistics-header-edits": "Statistika edicji", "statistics-header-users": "Statistika brëkòwników", + "statistics-pages-desc": "Wszëtczé starnë na wiki, w tim starnë diskùsje, przeczerowania itd.", + "statistics-files": "Wësłóné lopczi", + "statistics-edits": "Edicje wëkònané òd pòwstaniégò {{grammar:genitive|{{SITENAME}}}}", + "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", "doubleredirects": "Dëbeltné przeczérowania", "brokenredirects": "Zerwóné przeczerowania", "withoutinterwiki": "Starnë bez jãzëkòwich lënków", @@ -602,9 +673,11 @@ "shortpages": "Nôkrótszé starnë", "longpages": "Nôdłëgszé starnë", "protectedpages": "Zazychrowóné starnë", + "protectedpages-timestamp": "Czasowô sygnatura", + "protectedpages-reason": "Przëczëna", "listusers": "Lësta brëkòwników", "newpages": "Nowé starnë", - "newpages-username": "Miono brëkòwnika:", + "newpages-username": "Pòzwa brëkòwnika:", "ancientpages": "Nôstarszé starnë", "move": "Przeniesë", "movethispage": "Przeniesë", @@ -627,11 +700,15 @@ "allpagessubmit": "Pòkôżë", "allpagesprefix": "Pòkôżë naczënającë sã òd:", "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", + "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}}", "noemailtitle": "Felënk email-adresë", + "emailusername": "Pòzwa brëkòwnika", "emailfrom": "Òd:", "emailto": "Do:", "emailsubject": "Téma:", @@ -649,9 +726,10 @@ "unwatchthispage": "Òprzestôj ùzerac ną starnã", "notanarticle": "To nie je artikel", "watchlist-details": "Ùzérôsz {{PLURAL:$1|$1 artikel|$1 artikle/-ów}}, nie rechùjąc diskùsëjów.", - "wlheader-showupdated": "Artiklë jakczé òsta zmienioné òd Twòji slédny wizytë są wëapratnioné '''pògrëbieniém'''", + "wlheader-showupdated": "Artiklë jakczé òsta zmienioné òd Twòji slédny wizytë są wëapratnioné <strong>pògrëbieniém</strong>", "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}}.", "wlshowlast": "Wëskrzëni zjinaczi z $1 gòdzënów $2 dni", + "wlshowhidecategorization": "kategòrizacjã strón", "watchlist-options": "Òptacëje ùzérónych", "watching": "Ùzéróm...", "unwatching": "Ju ni ùzéróm...", @@ -674,10 +752,14 @@ "rollbacklink": "copnij", "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-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]]", + "protectedarticle-comment": "{{GENDER:$2|Zazychrowôł|Zazychrowała}} „[[$1]]”", "prot_1movedto2": "$1 przeniesłé do $2", "protect-legend": "Pòcwierdzë zazychrowanié", "protectcomment": "Przëczëna:", @@ -693,20 +775,24 @@ "protect-level-sysop": "blós sprôwnicë (sysopë)", "protect-summary-cascade": "kaskadowanié", "protect-expiring": "wëgasô $1 (UTC)", + "protect-expiry-indefinite": "na wiedno", "protect-cascade": "Zazychrëjë wszëtczé starnë zamkłé na ti starnie (kaskadowé zazychrowanié)", "protect-cantedit": "Ni mòżesz zmieniac lédżi zazychrowaniô ti starnë, kò ni môsz dosc prawa do ji edicëji.", "restriction-type": "Przistãp:", "restriction-level": "Léga bezpieczi:", "viewdeletedpage": "Òbaczë rëmóne starnë", - "undeletebtn": "Doprowôdzë nazôd", - "undeletelink": "wëskrzëni abò doprowôdzë nazôd", + "undeletebtn": "Doprowadzë nazôd", + "undeletelink": "wëskrzëni abò doprowadzë nazôd", + "undeletecomment": "Przëczëna:", "undelete-show-file-submit": "Jo", "namespace": "Rum mionów:", "invert": "Òdwrócë zaznaczenié", + "namespace_association": "sparłãczóné òbrëmié mionów", "blanknamespace": "(Przédnô)", - "contributions": "Wkłôd brëkòwników", + "contributions": "Wkłôd {{GENDER:$1|brëkòwnika|brëkòwniczczi}}", "contributions-title": "Wkłôd brëkòwnika $1", - "mycontris": "Mòje edicëje", + "mycontris": "Mój wkłôd", + "anoncontribs": "Mój wkłôd", "contribsub2": "Dlô brëkòwnika $1 ($2)", "uctop": "(slédnô)", "month": "Òd miesąca (ë wczasni):", @@ -714,9 +800,14 @@ "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-talk": "diskùsëjô", + "sp-contributions-deleted": "rëmniãti wkłôd brëkòwnika", + "sp-contributions-talk": "diskùsjô", + "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:", + "sp-contributions-toponly": "Pòkażë leno slédné wersje", + "sp-contributions-newonly": "Pòkażë leno te edicje, jaczé twòrzą nową starnã", + "sp-contributions-hideminor": "Zatacy drobné zjinaczi", "sp-contributions-submit": "Szëkôj", "whatlinkshere": "Lënkùjącé", "whatlinkshere-title": "Starnë lënkùjącé do \"$1\"", @@ -725,11 +816,11 @@ "nolinkshere": "Niżódnô starna nie lënkùje do '''[[:$1]]'''.", "isredirect": "starna przeczerowaniô", "istemplate": "doparłãczony", - "isimage": "lënk òbrôzka", + "isimage": "lënk do lopka", "whatlinkshere-prev": "{{PLURAL:$1|wczasniészé|wczasniészé $1}}", "whatlinkshere-next": "{{PLURAL:$1|nôslédné|nôslédné $1}}", "whatlinkshere-links": "← lëkùjącé", - "whatlinkshere-hideredirs": "$1 przeczérownia", + "whatlinkshere-hideredirs": "$1 przeczérowania", "whatlinkshere-hidetrans": "$1 doparłãczenia", "whatlinkshere-hidelinks": "$1 lënczi", "whatlinkshere-filters": "Filtrë", @@ -743,6 +834,16 @@ "blockipsuccesssub": "Zascëgónié dało sã", "blockipsuccesstext": "Brëkòwnik [[Special:Contributions/$1|$1]] òstał zascëgóny.<br />\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", + "blocklist-timestamp": "Czasowô sygnatura", + "blocklist-target": "Cél", + "blocklist-expiry": "Ùpłiwô", + "blocklist-by": "Blokùjący sprôwnik", + "blocklist-params": "Paramétrë blokòwaniô", + "blocklist-reason": "Przëczëna", + "infiniteblock": "na wiedno", + "createaccountblock": "blokada ùsadzaniô kòntów", + "emailblock": "zablokòwónô adresa e-mail", + "blocklist-nousertalk": "ni mòże editowac gwôsny starnë diskùsje", "blocklink": "blokùjë", "unblocklink": "òdblokùjë", "change-blocklink": "zmieni blokòwanié", @@ -751,7 +852,9 @@ "blocklogpage": "Historëjô blokòwaniô", "blocklogentry": "zablokòwôł [[$1]], czas blokadë: $2 $3", "unblocklogentry": "òdblokòwôł $1", + "block-log-flags-anononly": "leno anonimòwi", "block-log-flags-nocreate": "blokada ùsôdzaniô kònta", + "block-log-flags-noemail": "zablokòwónô adresa e-mail", "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.", @@ -776,15 +879,18 @@ "allmessagesnotsupportedDB": "'''{{ns:special}}:Allmessages''' nie mòże bëc brëkòwónô, temù że '''$wgUseDatabaseMessages''' je wëłączony.", "thumbnail-more": "Zwiszi", "import": "Impòrtëjë starnë", - "tooltip-pt-userpage": "Twòja starna brëkòwnika", - "tooltip-pt-mytalk": "Twòjô starna diskùsëji", - "tooltip-pt-preferences": "Mòje nastôwë", + "tooltip-pt-userpage": "{{GENDER:|Twòja}} starna brëkòwnika", + "tooltip-pt-mytalk": "{{GENDER:|Twòja}} starna diskùsje", + "tooltip-pt-anontalk": "Diskùsjô brëkòwnika dlô ti adresë IP", + "tooltip-pt-preferences": "{{GENDER:|Mòje}}nastôwë", "tooltip-pt-watchlist": "Lësta artiklów jaczé òbzérôsz za zmianama", - "tooltip-pt-mycontris": "Lësta twòjich edicëjów", + "tooltip-pt-mycontris": "Lësta {{GENDER:|twòjich}} edicji", + "tooltip-pt-anoncontribs": "Lësta edicji, jaczé bëłë zrobióné spòd ti adresë IP.", "tooltip-pt-login": "Rôczimë do wlogòwaniô sã, nie je to równak mùszebné.", "tooltip-pt-logout": "Wëlogòwanié", - "tooltip-ca-talk": "Diskùsëjô zamkłoscë ti starnë", - "tooltip-ca-edit": "Mòżesz editowac nã starnã.\nProszã brëkòwac knąpë pòdzérkù przed zapisaniém.", + "tooltip-pt-createaccount": "Zachãcëwómë do ùsadzeniô kònta i wlogòwaniô, chòc nie je to òbrzészk.", + "tooltip-ca-talk": "Diskùsjô zamkłoscë ti starnë", + "tooltip-ca-edit": "Edituj nã starnã.", "tooltip-ca-addsection": "Zrëszë nowi dzél", "tooltip-ca-viewsource": "Na starna je zazychrowónô.\nMòżesz òbaczëc ji zdrój.", "tooltip-ca-history": "Stôrszé wersëje ti starnë", @@ -796,7 +902,8 @@ "tooltip-search": "Szëkba {{SITENAME}}", "tooltip-search-go": "Biéj do starnë z akùratno taczim mionã, jeżlë takô je", "tooltip-search-fulltext": "Szëkba za wpisónym tesktã na starnach", - "tooltip-n-mainpage": "Òbôczë przédną starnã", + "tooltip-p-logo": "Òbaczë przédną starnã", + "tooltip-n-mainpage": "Òbaczë przédną starnã", "tooltip-n-mainpage-description": "Biéj do przédny starnë", "tooltip-n-portal": "Ò ti ùdbie, co mòżesz zrobic, co a gdze mòżesz nalezc.", "tooltip-n-currentevents": "Dobëjë spódkòwą wëdowiédzã ò slédnych wëdarzeniach", @@ -807,7 +914,7 @@ "tooltip-t-recentchangeslinked": "Slédné zjinaczi na starnach, do chtërnëch na starna lënkùje", "tooltip-feed-rss": "Pòwrózk RSS dlô ti starnë", "tooltip-feed-atom": "Pòwrôzk Atom dlô ti starnë", - "tooltip-t-contributions": "Wëskrzëni lëstã edicëji negò brëkòwnika", + "tooltip-t-contributions": "Wëskrzëni lëstã edicji {{GENDER:$1|negò brëkòwnika|ti brëkòwniczczi}}", "tooltip-t-emailuser": "Wëslë e-mail do tegò brëkòwnika", "tooltip-t-upload": "Wladëjë lopczi", "tooltip-t-specialpages": "Lësta specjalnëch starnów", @@ -815,7 +922,7 @@ "tooltip-t-permalink": "Prosti lënk do ti wersëji starnë", "tooltip-ca-nstab-main": "Wëskrzëni starnã zamkłoscë", "tooltip-ca-nstab-user": "Wëskrzëni starnã brëkòwnika", - "tooltip-ca-nstab-special": "To je specjlanô starna, chtërny ni mòżesz editowac", + "tooltip-ca-nstab-special": "To je specjalnô starna, chtërny ni mòżesz editowac", "tooltip-ca-nstab-project": "Òbôczë starnã ùdbë", "tooltip-ca-nstab-image": "Wëskrzëni starnã lopka", "tooltip-ca-nstab-template": "Wëskrzëni szablónã", @@ -838,6 +945,7 @@ "othercontribs": "Òpiarté na prôcë $1.", "others": "jiné", "spamprotectiontitle": "Anti-spamòwi filter", + "pageinfo-toolboxlink": "Jinfòrmacje ò ti starnie.", "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:", @@ -845,7 +953,7 @@ "file-info-size": "$1 × $2 pikslów, miara lopka: $3, ôrt MIME: $4", "file-nohires": "Felëje wikszô miara.", "svg-long-desc": "Lopk SVG, nominalno $1 × $2 pikslów, miara lopka: $3", - "show-big-image": "Fùl miara", + "show-big-image": "Pierwòszny lopk", "newimages": "Galerëjô nowich lopków", "ilsubmit": "Szëkôj", "bydate": "wedle datumù", @@ -854,7 +962,7 @@ "metadata-help": "Nen lopk zamëkô w se dodôwną wëdowiédzã, prôwdopòdobno dodóné przez cyfrową kamerã abò skaner ùżëti do ùsôdzeniô abò digitalizacëji.\nJeżlë lopk bëł mòdifikòwóny, pòdôwczi mògą bëc w dzéłu nierówné z paramétrama przerôbionegò lopka.", "metadata-expand": "Wëskrzëni detale", "metadata-collapse": "Zatacë detale", - "metadata-fields": "Wëskrzënioné niżi pòla EXIF bãdą widzawné na starnie graficzi.\nJinszé pòla bãdą domëslno zataconé.\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": "Wëskrzënioné niżi pòla metadanëch bãdą widzawné na starnie graficzi.\nJinszé pòla bãdą domëslno zataconé.\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-source": "Zdrój", "exif-languagecode": "Jãzëk", "exif-iimcategory-spo": "Szpòrt", @@ -869,9 +977,16 @@ "watchlisttools-raw": "Editëjë sërą lëstã", "version": "Wersëjô", "specialpages": "Specjalné starnë", + "tags-create-reason": "Przëczëna:", + "tags-delete-reason": "Przëczëna:", + "tags-activate-reason": "Przëczëna:", + "tags-deactivate-reason": "Przëczëna:", + "logentry-delete-delete": "$1 {{GENDER:$2|rëmnął|rëmnãła}} starnã $3", "revdelete-restricted": "nastôwi ògrańczenia dlô sprôwników", "revdelete-unrestricted": "rëmôj ògrańczenia dlô sprôwników", + "logentry-protect-protect": "$1 {{GENDER:$2|zazychrowôł|zazychrowała}} $3 $4", "revdelete-summary": "òpisënk zjinaczi", + "pagelang-reason": "Przëczëna", "special-characters-group-ipa": "IPA", "special-characters-group-symbols": "Céchë", "special-characters-group-greek": "Grecczi", diff --git a/languages/i18n/cu.json b/languages/i18n/cu.json index 70fbb4bbe1..999ba5830c 100644 --- a/languages/i18n/cu.json +++ b/languages/i18n/cu.json @@ -7,7 +7,8 @@ "Wolliger Mensch", "ОйЛ", "아라", - "Илья Драконов" + "Илья Драконов", + "Vvs-dm" ] }, "tog-oldsig": "нꙑнѣшьн҄ь аѵтографъ :", @@ -229,21 +230,14 @@ "createacct-yourpasswordagain-ph": "опакꙑ жє таино слово напьши", "login": "въниди", "nav-login-createaccount": "въниди / съꙁижди си мѣсто", - "userlogin": "въниди / съꙁижди си мѣсто", - "userloginnocreate": "въниди", "logout": "ис̾ходъ", "userlogout": "ис̾ходъ", "notloggedin": "тꙑ нє въшьлъ ѥси", "userlogin-noaccount": "мѣсто ти нѣстъ ли ?", "userlogin-joinproject": "въ {{grammar:locative|{{SITENAME}}}} чѧсть прими", - "nologin": "мѣсто ти нѣстъ ли ? $1", - "nologinlink": "съꙁижди си мѣсто", "createaccount": "съꙁижди си мѣсто", - "gotaccount": "мѣсто ти ѥстъ ли? $1", - "gotaccountlink": "въниди", "userlogin-resetpassword-link": "таино слово ꙁабꙑлъ ли ;", "userlogin-helplink2": "помощь въниждєниꙗ дѣлꙗ", - "createaccountreason": "какъ съмꙑслъ :", "createacct-reason": "какъ съмꙑслъ", "createacct-reason-ph": "чєсо дѣлꙗ ино польꙃєватєльско мѣсто сътворити хощєши ;", "createacct-submit": "съꙁижди си мѣсто", @@ -365,7 +359,6 @@ "prefs-resetpass": "таина словєсє иꙁмѣнѥниѥ", "saveprefs": "съхранѥниѥ", "prefs-editing": "исправлѥниѥ", - "rows": "рѧдꙑ :", "searchresultshead": "исканиѥ", "savedprefs": "твои строи иꙁмѣнєнъ ѥстъ", "localtime": "мѣстьно врѣмѧ :", @@ -467,6 +460,7 @@ "sourcefilename": "источьна дѣла имꙗ :", "watchthisupload": "си дѣла блюдєниѥ", "upload-dialog-button-cancel": "отъмѣтаниѥ", + "upload-form-label-infoform-categories": "Катигории", "license": "прощєниѥ :", "license-header": "прощєниѥ", "imgfile": "дѣло", @@ -781,9 +775,8 @@ "logentry-move-move_redir": "$1 {{GENDER:$2|нарєчє}} страницѧ ⁖ $3 ⁖ имєньмь ⁖ $4 ⁖ врьхоу прѣнаправлѥниꙗ", "logentry-newusers-create": "польꙃєватєльско мѣсто ⁖ $1 ⁖ {{GENDER:$2|сътворѥно}} ѥстъ", "logentry-upload-upload": "$1 {{GENDER:$2|положишє}} $3", - "revdelete-summary": "мѣнꙑ опьсаниѥ", "feedback-cancel": "отъмѣтаниѥ", - "searchsuggest-search": "исканиѥ", + "searchsuggest-search": "{{SITENAME}} : исканиѥ", "searchsuggest-containing": "сѥ дрьжащи···", "api-error-unknownerror": "нєвѣдома блаꙁна : ⁖ $1 ⁖", "duration-seconds": "$1 {{PLURAL:$1|дєѵтєролєпто|дєѵтєролєпта|дєѵтєролєптъ}}", diff --git a/languages/i18n/cy.json b/languages/i18n/cy.json index 1ef05f9a95..0ddeac03d6 100644 --- a/languages/i18n/cy.json +++ b/languages/i18n/cy.json @@ -47,7 +47,7 @@ "tog-enotifminoredits": "Gyrru e-bost ataf hefyd ar gyfer golygiadau bychain i dudalennau a ffeiliau", "tog-enotifrevealaddr": "Datguddio fy nghyfeiriad e-bost mewn e-byst hysbysu", "tog-shownumberswatching": "Dangos y nifer o ddefnyddwyr sy'n gwylio", - "tog-oldsig": "Y llofnod cyfredol:", + "tog-oldsig": "Eich llofnod cyfredol:", "tog-fancysig": "Trin y llofnod fel testun wici (heb gyswllt wici awtomatig)", "tog-uselivepreview": "Defnyddio rhagolwg byw", "tog-forceeditsummary": "Tynnu fy sylw pan adawaf flwch crynodeb golygu yn wag", @@ -64,7 +64,7 @@ "tog-showhiddencats": "Dangos categorïau cuddiedig", "tog-norollbackdiff": "Hepgor dangos cymhariaeth ar ôl gwrthdroi golygiad", "tog-useeditwarning": "Tynnu fy sylw pan wyf ar fin gadael tudalen olygu heb roi'r newidiadau ar gadw", - "tog-prefershttps": "Defnyddio cysylltiad diogel bob amser tra fy mod wedi mewngofnodi", + "tog-prefershttps": "Defnyddio cysylltiad diogel bob amser tra'ch bod wedi mewngofnodi", "underline-always": "Bob amser", "underline-never": "Byth", "underline-default": "Rhagosodyn y porwr neu'r wedd", @@ -159,7 +159,7 @@ "newwindow": "(yn agor mewn ffenest newydd)", "cancel": "Diddymu", "moredotdotdot": "Rhagor...", - "morenotlisted": "Nid yw'r rhestr hon yn llawn.", + "morenotlisted": "Efallai nad yw'r rhestr hon yn gyflawn.", "mypage": "Tudalen defnyddiwr", "mytalk": "Sgwrs", "anontalk": "Sgwrs", @@ -186,6 +186,7 @@ "searcharticle": "Mynd", "history": "Hanes y dudalen", "history_short": "Hanes", + "history_small": "hanes", "updatedmarker": "diwygiwyd ers i mi ymweld ddiwethaf", "printableversion": "Fersiwn argraffu", "permalink": "Dolen barhaol", @@ -217,6 +218,9 @@ "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", @@ -240,6 +244,7 @@ "pool-timeout": "Cafwyd goroedi wrth aros am y clo", "pool-queuefull": "Mae cwt y gronfa brosesu yn llawn", "pool-errorunknown": "Gwall anhysbys", + "pool-servererror": "Nid yw'r gwasanaeth ''pool counter'' ar gael ($1).", "poolcounter-usage-error": "Gwall defnydd: $1", "aboutsite": "YnglÅ·n â {{SITENAME}}", "aboutpage": "Project:Amdanom", @@ -378,6 +383,8 @@ "virus-scanfailed": "methodd y sgan (côd $1)", "virus-unknownscanner": "gwrthfirysydd anhysbys:", "logouttext": "'''Rydych wedi allgofnodi.'''\n\nSylwer y bydd rhai tudalennau yn parhau i ymddangos fel ag yr oeddent pan oeddech wedi mewngofnodi hyd nes i chi glirio celc eich porwr.", + "cannotlogoutnow-title": "Ni ellir allgofnodi ar hyn o bryd", + "cannotlogoutnow-text": "Ni ellir allgofnodi tra'n defnyddio $1.", "welcomeuser": "Croeso, $1!", "welcomecreation-msg": "Peidiwch ag anghofio newid eich [[Special:Preferences|{{SITENAME}} preferences]].", "yourname": "Eich enw defnyddiwr:", @@ -393,28 +400,28 @@ "createacct-yourpasswordagain-ph": "Rhowch eich cyfrinair eto", "userlogin-remembermypassword": "Cadw'r sesiwn yn fyw tan i mi allgofnodi", "userlogin-signwithsecure": "Defnyddio cysylltiad diogel", + "cannotlogin-title": "Methwyd mewngofnodi", + "cannotlogin-text": "Mae mewngofnodi'n amhosibl.", + "cannotloginnow-title": "Ni ellir mewngofnodi ar hyn o bryd.", + "cannotloginnow-text": "Ni ellir mewngofnodi tra defnyddir $1.", "cannotcreateaccount-title": "Yn methu creu cyfrif", + "cannotcreateaccount-text": "Ni ellir creu cyfrif ar y wici hon.", "yourdomainname": "Eich parth:", "password-change-forbidden": "Ni allwch newid cyfrineiriau ar y wici hwn.", "externaldberror": "Naill ai: cafwyd gwall dilysu allanol ar databas neu: ar y llaw arall efallai nad oes hawl gennych chi i ddiwygio'ch cyfrif allanol.", "login": "Mewngofnodi", + "login-security": "Gwirwch eich ID.", "nav-login-createaccount": "Mewngofnodi", - "userlogin": "Mewngofnodi / creu cyfrif", - "userloginnocreate": "Mewngofnodi", "logout": "Allgofnoder", "userlogout": "Allgofnodi", "notloggedin": "Nid ydych wedi mewngofnodi", "userlogin-noaccount": "Dim cyfrif gennych?", "userlogin-joinproject": "Ymuno â {{SITENAME}}", - "nologin": "Dim cyfrif gennych? $1.", - "nologinlink": "Crëwch gyfrif", "createaccount": "Creu cyfrif newydd", - "gotaccount": "Oes cyfrif gennych eisoes? $1.", - "gotaccountlink": "Mewngofnodi", - "userlogin-resetlink": "Ydych chi wedi anghofio eich manylion mewngofnodi?", "userlogin-resetpassword-link": "Wedi anghofio eich cyfrinair?", "userlogin-helplink2": "Cymorth wrth fewngofnodi", "userlogin-loggedin": "Rydych eisoes wedi mewngofnodi wrth yr enw {{GENDER:$1|$1}}.\nDefnyddiwch y ffurflen isod i fewngofnodi wrth rhyw enw arall.", + "userlogin-reauth": "Mae'n rhaid i chi fewngofnodi eto er mwyn gwiro eich bod yn {{GENDER:$1|$1}}.", "userlogin-createanother": "Creu cyfrif ychwanegol", "createacct-emailrequired": "Cyfeiriad ebost", "createacct-emailoptional": "Cyfeiriad ebost (dewisol)", @@ -422,17 +429,19 @@ "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", "createacct-realname": "Enw cywir (dewisiol)", - "createaccountreason": "Rheswm:", "createacct-reason": "Rheswm", "createacct-reason-ph": "Pam ydych yn creu cyfrif arall?", + "createacct-reason-help": "Dangosir y neges yn y log creu cyfri.", "createacct-submit": "Creer y cyfrif", "createacct-another-submit": "Creu cyfrif", "createacct-continue-submit": "Parhau i greu cyfrif", + "createacct-another-continue-submit": "Parhau i greu cyfrif", "createacct-benefit-heading": "Ffrwyth llafur pobl fel chi yw {{SITENAME}}.", "createacct-benefit-body1": "{{PLURAL:$1|golygiad|golygiad|olygiad|golygiad}}", "createacct-benefit-body2": "{{PLURAL:$1|tudalen|dudalen|dudalen|tudalen|thudalen|tudalen}}", "createacct-benefit-body3": "{{PLURAL:$1|cyfranwyr yn|wedi cyfrannu'n}} ddiweddar", "badretype": "Nid yw'r cyfrineiriau'n union yr un fath.", + "usernameinprogress": "Mae creu cyfrif i'r enw-defnyddiwr hwn wrthi'n cael ei brosesu. Daliwch eich gafael!", "userexists": "Mae rhywun arall wedi dewis yr enw defnyddiwr hwn. \nDewiswch un arall os gwelwch yn dda.", "loginerror": "Problem mewngofnodi", "createacct-error": "Nam wrth greu cyfrif", @@ -440,6 +449,7 @@ "nocookiesnew": "Mae'r cyfrif defnyddiwr wedi cael ei greu, ond nid ydych wedi mewngofnodi. Mae {{SITENAME}} yn defnyddio cwcis wrth i ddefnyddwyr fewngofnodi. Rydych chi wedi analluogi cwcis. Mewngofnodwch eto gyda'ch enw defnyddiwr a'ch cyfrinair newydd os gwelwch yn dda, ar ôl galluogi cwcis.", "nocookieslogin": "Mae {{SITENAME}} yn defnyddio cwcis wrth i ddefnyddwyr fewngofnodi. Rydych chi wedi analluogi cwcis. Trïwch eto os gwelwch yn dda, ar ôl galluogi cwcis.", "nocookiesfornew": "Ni chrëwyd cyfrif defnyddiwr newydd, oherwydd na allem gadarnhau ei ffynhonnell.\nSicrhewch eich bod wedi galluogi cwcis, yna ail-lwythwch y dudalen hon a cheisiwch eto.", + "createacct-loginerror": "Crewyd y cyfrif yn llwyddiannus, ond nid oedd yn bosibl i chi fewngofnodi'n otomatig. Ewch i [[Special:UserLogin|fewngofnodi drwy law a llygad]].", "noname": "Dydych chi ddim wedi cynnig enw defnyddiwr dilys.", "loginsuccesstitle": "Llwyddodd y mewngofnodi", "loginsuccess": "'''Yr ydych wedi mewngofnodi i {{SITENAME}} fel \"$1\".'''", @@ -450,6 +460,8 @@ "wrongpassword": "Nid yw'r cyfrinair a deipiwyd yn gywir. Rhowch gynnig arall arni, os gwelwch yn dda.", "wrongpasswordempty": "Roedd y cyfrinair yn wag. Rhowch gynnig arall arni.", "passwordtooshort": "Mae'n rhaid fod gan gyfrinair o leia $1 {{PLURAL:$1|nod}}.", + "passwordtoolong": "Ni chaiff cyfrinair fod yn hirach na {{PLURAL:$1|1 llythyren|$1 llythyren}}.", + "passwordtoopopular": "Chewch chi ddim defnyddio cyfreinair rhy syml, rhy gyffredin. Dewisiwch un unigryw!", "password-name-match": "Rhaid i'ch cyfrinair a'ch enw defnyddiwr fod yn wahanol i'w gilydd.", "password-login-forbidden": "Gwaharddwyd defnyddio'r enw defnyddiwr a'r cyfrinair hwn.", "mailmypassword": "Ailosoder y cyfrinair", @@ -482,6 +494,7 @@ "createacct-another-realname-tip": "Gallwch ddewis roi eich enw go iawn.\nOs y gwnewch, fe gaiff yr enw go iawn ei defnyddio wrth dadogi'ch gwaith.", "pt-login": "Mewngofnodi", "pt-login-button": "Mewngofnoder", + "pt-login-continue-button": "Parhau i fewngofnodi", "pt-createaccount": "Crëwch gyfrif", "pt-userlogout": "Allgofnodi", "php-mail-error-unknown": "Gwall anhysbys yng ngweithrediad post() PHP", @@ -496,6 +509,8 @@ "resetpass_submit": "Gosod y cyfrinair a mewngofnodi", "changepassword-success": "Newidiwyd eich cyfrinair!", "changepassword-throttled": "Rydych wedi ceisio logio mewn yn rhy aml.\nArhoswch am $1 cyn trio eto.", + "botpasswords": "Cyfrineiriau bots", + "botpasswords-label-appid": "Enw bot:", "botpasswords-label-create": "Dechrau", "botpasswords-label-update": "Diweddaru", "botpasswords-label-cancel": "Canslo", @@ -524,16 +539,18 @@ "passwordreset-emaildisabled": "Analluogwyd offer e-bost ar y wici hwn.", "passwordreset-username": "Eich enw defnyddiwr:", "passwordreset-domain": "Parth:", - "passwordreset-capture": "Gweld yr e-bost a gaiff ei anfon?", - "passwordreset-capture-help": "Os y ticiwch y blwch hwn, bydd yr e-bost (gyda'r cyfrinair dros dro) yn cael ei ddangos i chi yn ogystal a chael ei anfon at y defnyddiwr.", "passwordreset-email": "Eich cyfeiriad e-bost:", "passwordreset-emailtitle": "Manylion eich cyfrif ar {{SITENAME}}", "passwordreset-emailtext-ip": "Mae rhywun (chi yn ôl pob tebyg, o'r cyfeiriad IP $1) wedi gofyn am ailosod eich cyfrinair ar {{SITENAME}} ($4). Mae'r {{PLURAL:$3|cyfrif|cyfrif|cyfrifon}} canlynol ynghlwm wrth y cyfeiriad e-bost hwn:\n\n$2\n\nBydd y {{PLURAL:$3||cyfrinair dros dro hwn|cyfrineiriau dros dro hyn}} yn dod i ben ymhen {{PLURAL:$5||diwrnod |deuddydd|tridiau|$5 diwrnod}}. Dylech fewngofnodi nawr a dewis cyfrinair newydd. Os mai rhywun arall a ofynodd am ailosod y cyfrinair, neu os ydych wedi cofio eich cyfrinair gwreiddiol, neu os nad ydych am ei newid bellach, gallwch anwybyddu'r neges hon a pharhau i ddefnyddio eich hen gyfrinair.", "passwordreset-emailtext-user": "Gofynodd y defnyddiwr $1 ar {{SITENAME}} am gael ailosod ei gyfrinair ar {{SITENAME}}\n($4). Mae'r {{PLURAL:$3||cyfrif|cyfrifon}} canlynol ynghlwm wrth y cyfeiriad e-bost hwn:\n\n$2\n\nBydd y {{PLURAL:$3||cyfrinair|cyfrineiriau}} dros dro hyn yn dod i ben ymhen {{PLURAL:$5||diwrnod|deuddydd|tridiau|$5 diwrnod}}.\nDylech fewngofnodi nawr a dewis cyfrinair newydd. Os mai rhywun arall a ofynodd am ailosod y cyfrinair, neu os ydych wedi cofio eich cyfrinair gwreiddiol, neu os nad ydych am ei newid bellach, gallwch anwybyddu'r neges hon a pharhau i ddefnyddio eich hen gyfrinair.", "passwordreset-emailelement": "Enw'r defnyddiwr: \n$1\n\nY cyfrinair dros dro: \n$2", - "passwordreset-emailsentemail": "Anfonwyd e-bost i ailosod eich cyfrinair atoch.", + "passwordreset-emailsentemail": "Os yw'r ebost hwn ynghlwm wrth eich cyfrif, yna anfonir e-bost i ailosod eich cyfrinair atoch.", + "passwordreset-emailsentusername": "Os oes ebost ynghlwm wrth eich cyfrif, yna anfonir e-bost i ailosod eich cyfrinair atoch.", + "passwordreset-nocaller": "Rhaid darparu'r wybodaeth wreiddiol", + "passwordreset-nosuchcaller": "Nid yw'r ffynhonnell yn bodoli: $1", "passwordreset-ignored": "Ailosod y cyfrinair nad ymdriniwyd â. Efallai y nid y darparwr yn osod?", "passwordreset-invalidemail": "Cyfeiriad e-bost annilys", + "passwordreset-nodata": "Ni wnaethoch ddarparu ebost na chyfeiriad", "changeemail": "Newid y cyfeiriad e-bost", "changeemail-header": "Cwbwlhewch y ffurflen hon i newid cyfeiriad e-bost y cyfrifi. I ddileu pob cysylltiad i bob cyfeiriad ebost, gadewch e'n wag.", "changeemail-no-info": "Ni allwch fynd at y dudalen hon heblaw eich bod wedi mewngofnodi.", @@ -543,6 +560,7 @@ "changeemail-password": "Eich cyfrinair ar {{SITENAME}}:", "changeemail-submit": "Newidier y cyfeiriad e-bost", "changeemail-throttled": "'Da chi wedi trio mewngofnodi gormod o weithiau.\nDaliwch eich gafael am $1 cyn ceisio eto.", + "changeemail-nochange": "Darparwch cyfeiriad ebost newydd a gwahanol.", "resettokens": "Ailosod tocynnau", "resettokens-text": "Gallwch ailosod tocynnau sy'n galluogi mynediad at rai manylion preifat sydd ynghlwm wrth y cyfrif yma.\n\nDylech wneud hyn os wnaethoch rannu'r manylion hyn gyda rhywun ar ddamwain neu os oes problem wedi codi gyda diogelwch eich cyfrif.", "resettokens-no-tokens": "Nid oes unrhyw docynnau i'w hailosod.", @@ -589,6 +607,7 @@ "missingcommentheader": "<strong>Nodyn atgoffa:</strong> \nNid ydych wedi cynnig unrhywbeth yn y blwch 'Pwnc:'. Os y cliciwch \"{{int:savearticle}}\" eto fe gedwir y golygiad heb bennawd.", "summary-preview": "Rhagolwg o'r crynodeb:", "subject-preview": "Rhagolwg pwnc:", + "previewerrortext": "Cafwyd nam tra'n ceisio creu rhagolwg o'r newidiadau.", "blockedtitle": "Mae'r defnyddiwr hwn wedi cael ei flocio", "blockedtext": "'''Mae eich enw defnyddiwr neu gyfeiriad IP wedi cael ei flocio.'''\n\n$1 a osododd y bloc.\nY rheswm a roddwyd dros y blocio yw: ''$2''.\n\n*Dechreuodd y bloc am: $8\n*Bydd y bloc yn dod i ben am: $6\n*Bwriadwyd blocio: $7\n\nGallwch gysylltu â $1 neu un arall o'r [[{{MediaWiki:Grouppage-sysop}}|gweinyddwyr]] i drafod y bloc.\nSylwch mai dim ond y rhai sydd wedi gosod cyfeiriad e-bost yn eu [[Special:Preferences|dewisiadau defnyddiwr]], a hwnnw heb ei flocio, sydd yn gallu 'anfon e-bost at ddefnyddiwr' trwy'r wici.\n$3 yw eich cyfeiriad IP presennol. Cyfeirnod y bloc yw #$5.\nPan yn ysgrifennu at weinyddwr, cofiwch gynnwys yr holl fanylion uchod, os gwelwch yn dda.", "autoblockedtext": "Rhoddwyd bloc yn awtomatig ar eich cyfeiriad IP oherwydd iddo gael ei ddefnyddio gan ddefnyddiwr arall, a bod bloc wedi ei roi ar hwnnw gan $1.\nY rheswm a roddwyd dros y bloc oedd:\n\n:''$2''\n\n*Dechreuodd y bloc am: $8\n*Daw'r bloc i ben am: $6\n*Bwriadwyd blocio: $7\n\nGallwch gysylltu â $1 neu un arall o'r [[{{MediaWiki:Grouppage-sysop}}|gweinyddwyr]] i drafod y bloc.\n\nSylwch mai dim ond y rhai sydd wedi gosod cyfeiriad e-bost yn eu [[Special:Preferences|dewisiadau defnyddiwr]], a hwnnw heb ei flocio, sydd yn gallu 'anfon e-bost at ddefnyddiwr' trwy'r wici.\n\nEich cyfeiriad IP presennol yw $3. Cyfeirnod y bloc yw $5. Nodwch y manylion hyn wrth drafod y bloc.", @@ -611,7 +630,7 @@ "userpage-userdoesnotexist": "Nid oes defnyddiwr a'r enw \"<nowiki>$1</nowiki>\" yn bod. Gwnewch yn siwr eich bod am greu/golygu'r dudalen hon.", "userpage-userdoesnotexist-view": "Nid yw'r cyfrif defnyddiwr \"$1\" wedi ei gofrestri.", "blocked-notice-logextract": "Mae'r defnyddiwr hwn wedi ei flocio ar hyn o bryd.\nDyma'r cofnod lòg diweddaraf, er gwybodaeth:", - "clearyourcache": "'''Sylwer - Wedi i chi roi'r dudalen ar gadw, efallai y bydd angen mynd heibio celc eich porwr er mwyn gweld y newidiadau.'''\n*'''Firefox / Safari:''' Pwyswch ar ''Shift'' tra'n clicio ''Ail-lwytho/Reload'', neu gwasgwch ''Ctrl-F5'' neu ''Ctrl-R'' (''⌘-R'' ar Mac);\n*'''Google Chrome:'''Pwyswch ar Ctrl-Shift-R'' (''⌘-Shift-R'' ar Mac)\n*'''Internet Explorer:''' Pwyswch ar ''Ctrl'' tra'n clicio ''Adnewyddu/Refresh'', neu gwasgwch ''Ctrl-F5''. \n*'''Opera:''' gwacewch y celc yn llwyr trwy ''Offer → Dewisiadau / Tools→Preferences'';", + "clearyourcache": "'''Sylwer - Wedi i chi roi'r dudalen ar gadw, efallai y bydd angen mynd heibio celc eich porwr er mwyn gweld y newidiadau.'''\n*'''Firefox / Safari:''' Pwyswch ''Shift'' tra'n clicio ''Ail-lwytho/Reload'', neu bwyswch ''Ctrl-F5'' neu ''Ctrl-R'' (''⌘-R'' ar Mac);\n*'''Google Chrome:'''Pwyswch ar Ctrl-Shift-R'' (''⌘-Shift-R'' ar Mac)\n*'''Internet Explorer:''' Pwyswch ''Ctrl'' tra'n clicio ''Adnewyddu/Refresh'', neu bwyswch ''Ctrl-F5''. \n*'''Opera:''' gwagiwch y celc yn llwyr trwy ''Offer → Dewisiadau / Tools→Preferences'';", "usercssyoucanpreview": "'''Tip:''' Defnyddiwch y botwm \"{{int:showpreview}}\" er mwyn profi eich CSS newydd cyn ei gadw.", "userjsyoucanpreview": "'''Tip:''' Defnyddiwch y botwm \"{{int:showpreview}}\" er mwyn profi eich JS newydd cyn ei gadw.", "usercsspreview": "'''Cofiwch - dim ond rhagolwg o'ch CSS defnyddiwr yw hwn.'''\n'''Nid yw wedi'i gadw eto!'''", @@ -641,11 +660,12 @@ "yourdiff": "Gwahaniaethau", "copyrightwarning": "Mae pob cyfraniad i {{SITENAME}} yn cael ei ryddhau o dan termau'r Drwydded Ddogfen Rhydd ($2) (gwelwch $1 am fanylion). Os nad ydych chi'n fodlon i'ch gwaith gael ei olygu heb drugaredd, neu i gopïau ymddangos ar draws y we, peidiwch a'i gyfrannu yma.<br />\nRydych chi'n cadarnhau mai chi yw awdur y cyfraniad, neu eich bod chi wedi'i gopïo o'r parth cyhoeddus (''public domain'') neu rywle rhydd tebyg. '''Nid''' yw'r mwyafrif o wefannau yn y parth cyhoeddus.\n\n'''PEIDIWCH  CHYFRANNU GWAITH O DAN HAWLFRAINT HEB GANIATÂD!'''", "copyrightwarning2": "Sylwch fod pob cyfraniad i {{SITENAME}} yn cael ei ryddhau o dan termau'r Drwydded Ddogfen Rhydd (gwelwch $1 am fanylion).\nOs nad ydych chi'n fodlon i'ch gwaith gael ei olygu heb drugaredd, neu i gopïau ymddangos ar draws y we, peidiwch a'i gyfrannu yma.<br />\nRydych chi'n cadarnhau mai chi yw awdur y cyfraniad, neu eich bod chi wedi'i gopïo o'r parth cyhoeddus (''public domain'') neu rywle rhydd tebyg.<br />\n'''PEIDIWCH  CHYFRANNU GWAITH O DAN HAWLFRAINT HEB GANIATÂD!'''", + "editpage-cannot-use-custom-model": "Ni ellir newid cynnwys y ddalen.", "longpageerror": "'''GWALL: Mae'r testun yr ydych wedi ei osod yma yn {{PLURAL:$1|$1 cilobeit}} o hyd, ac yn hwy na'r hyd eithaf o {{PLURAL:$2|$2}} cilobeit.\nNi ellir ei roi ar gadw.'''", - "readonlywarning": "'''RHYBUDD: Mae'r gronfa ddata wedi'i chloi am gyfnod er mwyn cynnal a chadw, felly fyddwch chi ddim yn gallu cadw'ch golygiadau ar hyn o bryd.''' \nGallwch gopïo'r testun a'i gludo i ffeil destun er mwyn ei gadw tan yn hwyrach.\n\nCynigiodd y gweinyddwr a glodd y gronfa ddata y rheswm hwn dros ei chloi: $1", + "readonlywarning": "<strong>Rhybudd: Mae'r gronfa ddata wedi'i chloi am gyfnod er mwyn cynnal a chadw, felly fyddwch chi ddim yn gallu cadw'ch golygiadau ar hyn o bryd.</strong>\nGallwch gopïo'r testun a'i gludo i ffeil destun er mwyn ei gadw tan yn hwyrach.\n\nCynigiodd y gweinyddwr a glodd y gronfa ddata y rheswm hwn dros ei chloi: $1", "protectedpagewarning": "'''RHYBUDD: Mae'r dudalen hon wedi'i diogelu. Dim ond gweinyddwyr sydd yn gallu ei golygu.'''\nDyma'r cofnod lòg diweddaraf, er gwybodaeth:", "semiprotectedpagewarning": "'''Sylwer:''' Mae'r dudalen hon wedi ei chloi; dim ond defnyddwyr cofrestredig a allant ei golygu.\nDyma'r cofnod lòg diweddaraf, er gwybodaeth:", - "cascadeprotectedwarning": "'''Dalier sylw:''' Mae'r dudalen hon wedi ei diogelu fel nad ond defnyddwyr â galluoedd gweinyddwyr sy'n gallu ei newid, oherwydd ei bod yn rhan o'r {{PLURAL:$1|dudalen ganlynol|dudalen ganlynol|tudalennau canlynol}} sydd wedi {{PLURAL:$1|ei sgydol-ddiogelu|ei sgydol-ddiogelu|eu sgydol-diogelu}}.", + "cascadeprotectedwarning": "<strong>Dalier sylw:</strong> Mae'r dudalen hon wedi ei chloi fel mai dim ond defnyddwyr â galluoedd 'Gweinyddwyr' all ei newid, oherwydd ei bod yn rhan o'r {{PLURAL:$1|dudalen ganlynol|dudalen ganlynol|tudalennau canlynol}} sydd wedi {{PLURAL:$1|ei sgydol-ddiogelu|ei diogelu|eu diogelu}}.", "titleprotectedwarning": "'''RHYBUDD: Mae'r dudalen hon wedi ei chloi; dim ond rhai defnyddwyr sydd â'r [[Special:ListGroupRights|gallu]] i'w chreu.'''\nDyma'r cofnod lòg diweddaraf, er gwybodaeth:", "templatesused": "Defnyddir y {{PLURAL:$1|nodyn hwn|nodyn hwn|nodiadau hyn|nodiadau hyn|nodiadau hyn|nodiadau hyn}} yn y dudalen hon:", "templatesusedpreview": "Defnyddir y {{PLURAL:$1|nodyn hwn|nodyn hwn|nodiadau hyn|nodiadau hyn|nodiadau hyn|nodiadau hyn}} yn y rhagolwg hwn:", @@ -662,6 +682,7 @@ "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-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.", "edit-gone-missing": "Ni ellid diweddaru'r dudalen.\nYmddengys iddi gael ei dileu.", @@ -676,6 +697,8 @@ "invalid-content-data": "Data annilys i'r cynnwys", "content-not-allowed-here": "Nid yw cynnwys ar ffurf \"$1\" yn cael ei ganiatau ar y dudalen [[$2]]", "editwarning-warning": "Os y gadewch y dudalen hon mae'n bosib y collwch eich newidiadau iddi.\nOs ydych wedi mewngofnodi gallwch ddiddymu'r rhybudd hwn yn yr adran \"{{int:prefs-editing}}\" yn eich dewisiadau.", + "editpage-invalidcontentmodel-title": "Nid yw'r model yma ar gael.", + "editpage-invalidcontentmodel-text": "Nid yw'r model \"$1\" ar gael.", "editpage-notsupportedcontentformat-title": "Dydy fformat y cynnwys hwn ddim yn cael ei gefnogi gennym.", "editpage-notsupportedcontentformat-text": "Dydy'r fformat $1 ar y cynnwys ddim yn cael ei gefnogi gan y model $2.", "content-model-wikitext": "cystrawen wici", @@ -684,6 +707,7 @@ "content-model-css": "CSS", "content-json-empty-object": "Dim gwrthrych", "content-json-empty-array": "Rhesi gwag", + "duplicate-args-warning": "<strong>Rhybudd:</strong> Mae [[:$1]] yn galw [[:$2]] gyda mwy nag un gwerthrif (''value'') i baramedr \"$3\". Dim ond y gwerthrif diwethaf gaiff ei ddefnyddio.", "duplicate-args-category": "Tudalennau gyda meysydd deublyg yn y Nodion", "duplicate-args-category-desc": "Mae'r dudalen hon yn cynnwys meysydd yn y Nodion, ddwy waith e.e. <code><nowiki>{{foo|bar=1|bar=2}}</nowiki></code> neu <code><nowiki>{{foo|bar|1=baz}}</nowiki></code>.", "expensive-parserfunction-warning": "'''Rhybudd:''' Mae gormod o alwadau ar ffwythiannau dosrannu sy'n dreth ar adnoddau yn y dudalen hon.\n\nDylai fod llai na $2 {{PLURAL:$2|galwad|alwad|alwad|galwad}} yn y dudalen, ond ar hyn o bryd mae $1 {{PLURAL:$1|galwad|alwad|alwad|galwad}} ynddi.", @@ -737,6 +761,7 @@ "history-feed-description": "Hanes diwygio'r dudalen hon ar y wici", "history-feed-item-nocomment": "$1 am $2", "history-feed-empty": "Nid yw'r dudalen a ofynwyd amdani'n bod.\nGall fod iddi gael ei dileu neu ei hailenwi.\nGallwch [[Special:Search|chwilio'r]] wici am dudalennau eraill perthnasol.", + "history-edit-tags": "Tagiau golygu y fersiynau a ddewisiwyd", "rev-deleted-comment": "(dilëwyd crynodeb y golygiad)", "rev-deleted-user": "(enw defnyddiwr wedi ei ddiddymu)", "rev-deleted-event": "(tynnwyd manylion y lòg)", @@ -757,7 +782,7 @@ "rev-showdeleted": "dangos", "revisiondelete": "Dileu/dad-ddileu diwygiadau", "revdelete-nooldid-title": "Anelwyd at olygiad annilys", - "revdelete-nooldid-text": "Naill ai; nid ydych wedi dynodi diwygiad yn darged y weithred, neu nid yw'r diwygiad penodedig yn bod, neu rydych wedi ceisio cuddio'r diwygiad presennol.", + "revdelete-nooldid-text": "Naill ai nid ydych wedi dynodi diwygiad yn darged y weithred, neu nid yw'r diwygiad penodedig yn bod, neu rydych wedi ceisio cuddio'r diwygiad presennol.", "revdelete-no-file": "Nid yw'r ffeil a nodwyd yn bod.", "revdelete-show-file-confirm": "Ydych chi'n sicr eich bod am weld y diwygiad dilëedig o'r ffeil \"<nowiki>$1</nowiki>\" a roddwyd ar gadw am $3 ar $2?", "revdelete-show-file-submit": "Ydw", @@ -784,9 +809,9 @@ "revdelete-unsuppress": "Tynnu'r cyfyngiadau ar y golygiadau a adferwyd", "revdelete-log": "Rheswm:", "revdelete-submit": "Rhoi ar waith ar y {{PLURAL:$1|golygiad|golygiad|golygiadau|golygiadau|golygiadau|golygiadau}} dewisedig", - "revdelete-success": "'''Diweddarwyd y gallu i weld golygiadau.'''", + "revdelete-success": "Diweddarwyd y golygiad.", "revdelete-failure": "'''Ni ellid newid y cyfyngiadau ar y gallu i weld y golygiad:'''\n$1", - "logdelete-success": "'''Llwyddwyd i guddio neu i ddatguddio'r digwyddiad rhag y lòg.'''", + "logdelete-success": "Cuddiwyd/datguddiwyd y digwyddiad rhag y lòg.", "logdelete-failure": "'''Ni ellid gosod cyfyngiadau ar y gallu i weld y cofnod lòg:'''\n$1", "revdel-restore": "Newid gwelededd", "pagehist": "Hanes y dudalen", @@ -815,8 +840,14 @@ "mergehistory-go": "Dangos y golygiadau y gellir eu cyfuno", "mergehistory-submit": "Cyfuner y diwygiadau", "mergehistory-empty": "Ni ellir cyfuno unrhyw ddiwygiadau.", - "mergehistory-done": "Cyfunwyd $3 {{PLURAL:$3|diwygiad|diwygiad|ddiwygiad|diwygiad|diwygiad|diwygiad}} o $1 yn llwyddiannus i'r dudalen [[:$2]].", + "mergehistory-done": "Cyfunwyd $3 {{PLURAL:$3|diwygiad}} o $1 a [[:$2]].", "mergehistory-fail": "Methodd y cyfuno hanes; a wnewch wirio paramedrau'r dudalen a'r amser unwaith eto.", + "mergehistory-fail-bad-timestamp": "Mae'r stamp-amser yn annilys.", + "mergehistory-fail-invalid-source": "Mae'r ddalen wreiddiol (y ''source page'') yn annilys.", + "mergehistory-fail-invalid-dest": "Mae'r ddalen-darged (y ''destination page'') yn annilys.", + "mergehistory-fail-no-change": "Ni chyfunwyd hanes yr adolygiadau. Gwirwch y ddalen a pharamedrau amser, os yw'n bodoli.", + "mergehistory-fail-permission": "Nid oes gennych yr hawliau digonol i gyfuno yr hanes.", + "mergehistory-fail-self-merge": "Mae'r dalennau gwreiddiol a tharged yr un! (''Source and destination pages are the same.'')", "mergehistory-no-source": "Nid yw'r dudalen gwreiddiol $1 yn bod.", "mergehistory-no-destination": "Nid yw'r dudalen cyrchfan $1 yn bod.", "mergehistory-invalid-source": "Rhaid bod teitl dilys gan y dudalen gwreiddiol.", @@ -866,14 +897,16 @@ "searchprofile-advanced-tooltip": "Chwilio drwy parthau dewisol", "search-result-size": "$1 ({{PLURAL:$2|dim geiriau|$2 gair|$2 air|$2 gair|$2 gair|$2 gair|}})", "search-result-category-size": "{{PLURAL:$1|$1 aelod}} ({{PLURAL:$2|$2 is-gategori}}, {{PLURAL:$3|$3 ffeil}})", - "search-redirect": "(ailgyfeiriad $1)", + "search-redirect": "(ailgyfeiriad o $1)", "search-section": "(adran $1)", "search-category": "(categori $1)", "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-default": "Y canlyniadau o $1:", "search-interwiki-more": "(rhagor)", + "search-interwiki-more-results": "rhagor o ganlyniadau", "search-relatedarticle": "Erthyglau eraill tebyg", "searchrelated": "erthyglau eraill tebyg", "searchall": "oll", @@ -881,6 +914,7 @@ "showingresultsinrange": "Yn dangos hyd at {{PLURAL:$1||<strong>1</strong> canlyniad|<strong>$1</strong> ganlyniad|$1 o ganlyniadau}} isod yn yr ystod #<strong>$2</strong> i #<strong>$3</strong>.", "search-showingresults": "{{PLURAL:$4|Result <strong>$1</strong> of <strong>$3</strong>|Canlyniadau: <strong>$1 - $2</strong> o <strong>$3</strong>}}", "search-nonefound": "Ni chafwyd dim canlyniadau i'r ymholiad.", + "search-nonefound-thiswiki": "Doedd dim un canlyniad er chwilio'r wefan gyfan.", "powersearch-legend": "Chwiliad uwch", "powersearch-ns": "Chwilio yn y parthau:", "powersearch-togglelabel": "Dewis:", @@ -890,6 +924,7 @@ "search-external": "Chwiliad allanol", "searchdisabled": "Mae'r teclyn chwilio ar {{SITENAME}} wedi'i analluogi dros dro.\nYn y cyfamser gallwch chwilio drwy Google.\nCofiwch y gall mynegeion Google o gynnwys {{SITENAME}} fod ar ei hôl hi.", "search-error": "Cafwyd gwall wrth chwilio: $1", + "search-warning": "Cafwyd rhybudd tra'n chwilio: $1", "preferences": "Dewisiadau", "mypreferences": "Dewisiadau", "prefs-edits": "Nifer y golygiadau:", @@ -902,6 +937,11 @@ "prefs-personal": "Data personol", "prefs-rc": "Newidiadau diweddar", "prefs-watchlist": "Rhestr wylio", + "prefs-editwatchlist": "Golygu'r rhestr wylio", + "prefs-editwatchlist-label": "Golygiadau ar eich rhestr wylio:", + "prefs-editwatchlist-edit": "Gosod a dileu teitlau o'ch rhestr wylio", + "prefs-editwatchlist-raw": "Golygu cod eich rhestr wylio", + "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:", @@ -916,8 +956,6 @@ "saveprefs": "Cadw", "restoreprefs": "Adfer yr holl osodiadau diofyn (ymhob adran)", "prefs-editing": "Golygu", - "rows": "Rhesi:", - "columns": "Colofnau:", "searchresultshead": "Chwilio", "stub-threshold": "Trothwy ar gyfer fformatio cyswllt egin ($1):", "stub-threshold-sample-link": "sampl", @@ -958,6 +996,7 @@ "youremail": "Eich cyfeiriad e-bost", "username": "{{GENDER:$1|Enw defnyddiwr}}:", "prefs-memberingroups": "Yn {{GENDER:$2|aelod}} o'r {{PLURAL:$1|grŵp|grŵp|grwpiau}} canlynol:", + "group-membership-link-with-expiry": "$1 (gyd at $2)", "prefs-registration": "Amser dechrau'r cyfrif:", "yourrealname": "Eich enw cywir*", "yourlanguage": "Iaith y rhyngwyneb", @@ -997,11 +1036,13 @@ "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-lookup-user": "Rheoli grwpiau defnyddiwr", + "userrights-lookup-user": "Dewisiwch ddefnyddiwr", "userrights-user-editname": "Rhowch enw defnyddiwr:", - "editusergroup": "Golygu Grwpiau {{GENDER:$1|Defnyddwyr}}", + "editusergroup": "Golygu grwpiau defnyddwyr", "editinguser": "Newid galluoedd {{GENDER:$1|y defnyddiwr}} <strong>[[User:$1|$1]]</strong> $2", - "userrights-editusergroup": "Golygu grwpiau defnyddwyr", + "viewinguserrights": "Gweld galluoedd {{GENDER:$1|y defnyddiwr}} <strong>[[User:$1|$1]]</strong> $2", + "userrights-editusergroup": "Golygu grwpiau {{GENDER:$1|defnyddwyr}}", + "userrights-viewusergroup": "Gweld {{GENDER:$1|grwpiau defnyddwyr}}", "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:", @@ -1009,12 +1050,15 @@ "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.", - "userrights-nologin": "Rhaid i chi [[Special:UserLogin|fewngofnodi]] ar gyfrif gweinyddwr er mwyn pennu galluoedd defnyddwyr.", - "userrights-notallowed": "Nid oes ganiatâd priodol gennych i ychwanegu neu dynnu hawliau defnyddwyr.", "userrights-changeable-col": "Grwpiau y gallwch eu newid", "userrights-unchangeable-col": "Grwpiau na allwch eu newid", + "userrights-expiry-current": "Daw i ben $1", + "userrights-expiry-none": "Diderfyn, o ran amser", + "userrights-expiry": "Daw i ben:", + "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-conflict": "Gwrthdaro oherwydd newid i hawliau defnyddiwr! Adolygwch eich newidiadau a'u cadarnhau.", - "userrights-removed-self": "Rydych wedi rhoi'r gorau i'ch galluoedd. Gan hynny, ni allwch gyrchu'r ddalen hon bellach.", "group": "Grŵp:", "group-user": "Defnyddwyr", "group-autoconfirmed": "Defnyddwyr wedi eu cadarnhau'n awtomatig", @@ -1104,12 +1148,36 @@ "right-siteadmin": "Cloi a datgloi'r databas", "right-override-export-depth": "Allforio tudalennau gan gynnwys tudalennau cysylltiedig hyd at ddyfnder o 5", "right-sendemail": "Anfon e-bost at ddefnyddwyr eraill", - "right-passwordreset": "Gweld e-byst sy'n ailosod cyfrinair", - "right-managechangetags": "Creu a dileu [[Special:Tags|tagiau]] o'r gronfa ddata", + "right-managechangetags": "Creu a dileu [[Special:Tags|tagiau]]", + "right-applychangetags": "Gosodwch y [[Special:Tags|tagiau]] gyda'r newidiadau", + "grant-generic": "Bwdel hawliau \"$1\"", + "grant-group-page-interaction": "Rhyngweithiwch gyda'r dalennau", + "grant-group-watchlist-interaction": "Rhyngweithiwch gyda'ch rhestr wylio", "grant-group-email": "Danfon ebost", + "grant-group-customization": "Eich dewisiadau chi", + "grant-group-administration": "Rhoi materion gweinyddol ar waith", + "grant-blockusers": "Blociwch a dadflociwch defnyddwyr", + "grant-createaccount": "Crewch gyfri", + "grant-createeditmovepage": "Creu, golygu a symud dalennau", + "grant-delete": "Dileu dalennau, adolygiadau a chofnodion y log", + "grant-editinterface": "Golygwch ''namespace'' MediaWiki a CSS/JavaScript y defnyddiwr", + "grant-editmycssjs": "Golygwch eich CSS/JavaScript", + "grant-editmyoptions": "Golygwch eich dewisiadau", + "grant-editmywatchlist": "Golygwch eich rhestr wylio", + "grant-editpage": "Golygwch dudalennau sy'n bodoli", + "grant-editprotected": "Golygwch dalennau sydd wedi'u cloi", + "grant-highvolume": "Golygu nifer ar yr un pryd", + "grant-oversight": "Cuddiwch y defnyddwyr a'u golygiadau", + "grant-patrol": "Newidiadau patrol y dalennau", + "grant-protect": "Cloi a datgloi dalennau", + "grant-rollback": "Dadwneud newidiadau dalennau", + "grant-sendemail": "Danfonwch ebost i ddefnyddwyr", + "grant-uploadeditmovefile": "Uwchlwythwch, ailosodwch a symudwch ffeiliau", + "grant-uploadfile": "Uwchlwythwch ffeiliau newydd", "grant-basic": "Hawliau sylfaenol", "grant-viewdeleted": "Gweld ffeiliau a ddilewyd", "grant-viewmywatchlist": "Gweld eich Rhestr Wylio", + "grant-viewrestrictedlogs": "Gweld cofnodion log cuddiedig", "newuserlogpage": "Lòg creu cyfrifon defnyddwyr newydd", "newuserlogpagetext": "Dyma restr o'r defnyddwyr newydd sydd wedi ymuno â'r wici.", "rightslog": "Lòg galluoedd defnyddiwr", @@ -1133,10 +1201,12 @@ "action-upload_by_url": "uwchlwytho'r ffeil o gyfeiriad URL", "action-writeapi": "defnyddio'r API i ysgrifennu a thrin y tudalennau", "action-delete": "dileu'r dudalen", - "action-deleterevision": "dileu'r golygiad", - "action-deletedhistory": "gweld hanes dilëedig y dudalen hon", + "action-deleterevision": "dileu'r newidiadau", + "action-deletelogentry": "dileu cofnodion log", + "action-deletedhistory": "gweld hanes dilëedig un ddalen", + "action-deletedtext": "Gweld newidiadau testun dalen a ddilewyd", "action-browsearchive": "chwilio drwy tudalennau dilëedig", - "action-undelete": "dad-ddileu'r dudalen", + "action-undelete": "dad-ddileu'r ddalen", "action-suppressrevision": "gweld ac adfer y golygiad cudd hwn", "action-suppressionlog": "gweld y lòg preifat hwn", "action-block": "atal y defnyddiwr hwn rhag golygu", @@ -1152,11 +1222,16 @@ "action-userrights-interwiki": "golygu galluoedd y defnyddwyr ar wicïau eraill", "action-siteadmin": "cloi neu ddatgloi'r databas", "action-sendemail": "anfon e-bost", + "action-editmyoptions": "golygwch eich dewisiadau", "action-editmywatchlist": "golygu eich rhestr wylio", "action-viewmywatchlist": "gweld eich rhestr wylio", "action-viewmyprivateinfo": "gweld eich manylion personol preifat", "action-editmyprivateinfo": "golygu eich manylion personol preifat", "action-editcontentmodel": "golygwch y cynnwys", + "action-managechangetags": "crewch a throwch y tagiau'n weithredol", + "action-applychangetags": "rhowch y tagiau ar waith, gyda'ch newidiadau", + "action-deletechangetags": "dilewch tagiau o'r gronfa ddata", + "action-purge": "carthwch y ddalen", "nchanges": "$1 {{PLURAL:$1|newid|newid|newid|newid|newid|o newidiadau}}", "enhancedrc-since-last-visit": "$1 {{PLURAL:$1|ers eich ymweliad diwethaf}}", "enhancedrc-history": "hanes", @@ -1174,6 +1249,31 @@ "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (gweler hefyd [[Special:NewPages|restr y tudalennau newydd]])", "recentchanges-legend-plusminus": "(''±123'')", "recentchanges-submit": "Dangos", + "rcfilters-activefilters": "Hidlau sydd ar waith", + "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", + "rcfilters-invalid-filter": "Hidl annilys", + "rcfilters-empty-filter": "Dim hidlau ar waith", + "rcfilters-filterlist-title": "Hidlau (ffiltrau)", + "rcfilters-filterlist-feedbacklink": "Rhowch adborth ar yr hidlau beta", + "rcfilters-highlightbutton-title": "Amlygwch y canlyniadau", + "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-patrolled-label": "Wedi derbyn patrol", + "rcfilters-filter-patrolled-description": "Marciwyd y golygiadau fel rhai sydd wedi derbyn patrol.", + "rcfilters-filter-unpatrolled-description": "Ni farciwyd y golygiadau fel rhai sydd wedi derbyn patrol.", "rcnotefrom": "Isod rhestrir pob newid er <strong>$3, $4</strong> (ymddengys <strong>$1</strong> ohonynt).", "rclistfrom": "Dangos newidiadau newydd, gan ddechrau ers $3 $2", "rcshowhideminor": "$1 golygiadau bychain", @@ -1290,7 +1390,7 @@ "uploaddisabledtext": "Analluogwyd uwchlwytho ffeiliau ar y wefan hon.", "php-uploaddisabledtext": "Anablwyd uwchlwytho ffeiliau yn PHP.\nGwiriwch y gosodiad ar file_uploads.", "uploadscripted": "Mae'r ffeil hon yn cynnwys HTML neu sgript a all achosi problemau i borwyr gwe.", - "uploadscriptednamespace": "Mae'r ffeil SVG hon yn cynnwys yr enw '$1' sy'n enw annilys ar barth", + "uploadscriptednamespace": "Mae'r ffeil SVG hon yn cynnwys yr enw '<nowiki>$1</nowiki>' sy'n enw annilys ar barth", "uploadinvalidxml": "Ni ellid dosrannu'r XML yn y ffeil a uwchlwythwyd.", "uploadvirus": "Mae firws gan y ffeil hon! Manylion: $1", "uploadjava": "Ffeil ZIP yw hwn sy'n cynnwys ffeil Java .class.\nNi chaniateir uwchlwytho ffeiliau Java, oherwydd y gallant osgoi cyfyngiadau diogelwch.", @@ -1315,6 +1415,7 @@ "upload-copy-upload-invalid-domain": "Ni ellir uwchlwytho ffeiliau o'r parth hwn.", "upload-dialog-title": "Uwchlwytho ffeil", "upload-dialog-button-cancel": "Canslo", + "upload-dialog-button-back": "Ewch nôl", "upload-dialog-button-done": "Wedi cwbwlhau", "upload-dialog-button-save": "Wedi ei gadw", "upload-dialog-button-upload": "Uwchlwytho", @@ -1377,6 +1478,7 @@ "uploadstash-badtoken": "Ni lwyddodd y weithred. Efallai oherwydd bod eich cymwysterau golygu wedi dod i ben. Ceisiwch eto.", "uploadstash-errclear": "Ni lwyddwyd i glirio'r ffeiliau.", "uploadstash-refresh": "Adnewyddu rhestr y ffeiliau", + "uploadstash-thumbnail": "gweld y ciplun", "invalid-chunk-offset": "Atred annilys i'r talpiau", "img-auth-accessdenied": "Ni chaniatawyd mynediad", "img-auth-nopathinfo": "PATH_INFO yn eisiau.\nNid yw'ch gweinydd wedi ei osod i fedru pasio'r wybodaeth hon.\nEfallai ei fod wedi ei seilio ar CGI, ac heb fod yn gallu cynnal img_auth.\nGweler https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Image_Authorization.", @@ -1631,6 +1733,10 @@ "apisandbox-helpurls": "Dolennau cymorth", "apisandbox-examples": "Engreifftiau", "apisandbox-results": "Canlyniadau", + "apisandbox-continue": "Parhau", + "apisandbox-continue-clear": "Clirio", + "apisandbox-multivalue-all-namespaces": "$1 (Pob ''namespace'')", + "apisandbox-multivalue-all-values": "$1 (Pob gwerth)", "booksources": "Ffynonellau llyfrau", "booksources-search-legend": "Chwilier am lyfrau", "booksources-search": "Chwilio", @@ -2847,6 +2953,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-top": "Dadwneud golygiadau'r ddalen hon?", "quotation-marks": "'$1'", "imgmultipageprev": "← i'r dudalen gynt", "imgmultipagenext": "i'r dudalen nesaf →", @@ -2885,7 +2992,7 @@ "watchlistedit-raw-done": "Diweddarwyd eich rhestr wylio.", "watchlistedit-raw-added": "Ychwanegwyd {{PLURAL:$1|1 teitl|$1 teitl|$1 deitl|$1 theitl|$1 theitl|$1 o deitlau}}:", "watchlistedit-raw-removed": "Tynnwyd {{PLURAL:$1|1 teitl|$1 teitl|$1 deitl|$1 theitl|$1 theitl|$1 o deitlau}}:", - "watchlistedit-clear-title": "Cliriwyd y rhestr wylio", + "watchlistedit-clear-title": "Clirio'r rhestr wylio", "watchlistedit-clear-legend": "Clirier y rhestr wylio", "watchlistedit-clear-explain": "Bydd holl deitlau eich rhestr wylio'n cael eu tynnu oddi yno", "watchlistedit-clear-titles": "Teitlau:", @@ -2898,6 +3005,7 @@ "watchlisttools-edit": "Gweld a golygu'r rhestr wylio", "watchlisttools-raw": "Golygu'r rhestr wylio syml", "signature": "[[{{ns:user}}:$1|$2]] ([[{{ns:user_talk}}:$1|sgwrs]])", + "timezone-local": "Lleol", "duplicate-defaultsort": "Rhybudd: Mae'r allwedd trefnu diofyn \"$2\" yn gwrthwneud yr allwedd trefnu diofyn blaenorol \"$1\".", "duplicate-displaytitle": "<strong>Gofal:</strong> Mae arddangos \"$2\" yn clirio'r arddangosiadau cynharach \"$1\".", "invalid-indicator-name": "<strong>Gan bwyll:</strong> Ni ddylid gadael y man nodi statws <code>name</code> yn wag.", @@ -3082,7 +3190,6 @@ "logentry-upload-overwrite": "Mae $1 {{GENDER:$2|wedi uwchlwytho}} fersiwn newydd o $3", "logentry-upload-revert": "Mae $1 {{GENDER:$2|wedi uwchlwytho}} $3", "rightsnone": "(dim)", - "revdelete-summary": "crynodeb golygu", "feedback-adding": "Wrthi'n ychwanegu adborth i'r dudalen...", "feedback-bugcheck": "Iawn! Gwnewch yn siwr yn gyntaf nag ydy hwn yn un o'r [$1 bygiau hysbys].", "feedback-bugnew": "Edrychais ar y bygiau hysbys. Mae byg newydd gennyf i'w adrodd", @@ -3098,52 +3205,12 @@ "feedback-thanks": "Diolch! Gosodwyd eich adborth ar y dudalen \"[$2 $1]\".", "searchsuggest-search": "Chwilio", "searchsuggest-containing": "yn cynnwys...", - "api-error-badaccess-groups": "Nid oes caniatad gennych i uwchlwytho ffeiliau ar y wici hwn.", "api-error-badtoken": "Gwall mewnol: tocyn gwael.", - "api-error-copyuploaddisabled": "Nid oes modd uwchlwytho drwy URL ar y gweinydd hwn", - "api-error-duplicate": "Mae {{PLURAL:$1||ffeil arall|ffeiliau eraill}} yn bodoli'n barod ar y wefan gyda'r un cynnwys.", - "api-error-duplicate-archive": "Fe fu {{PLURAL:$1|ffeil arall gyda'r un cynnwys ynddi|ffeiliau eraill gyda'r un cynnwys ynddynt}} ar y safle, ond fe'{{PLURAL:$1|i|u}} dilëwyd.", - "api-error-empty-file": "Mae'r ffeil a gyflwynwyd gennych yn wag.", "api-error-emptypage": "Ni chaniateir dechrau tudalen newydd, a honno'n wag.", - "api-error-fetchfileerror": "Gwall mewnol: aeth rhywbeth o'i le tra'n cywain y ffeil.", - "api-error-fileexists-forbidden": "Mae ffeil o'r enw \"$1\" ar gael yn barod, ac ni ellir ei throsysgrifo.", - "api-error-fileexists-shared-forbidden": "Mae ffeil o'r enw \"$1\" eisoes ar gael yn y storfa ffeiliau gyfrannol, ac ni ellir ei throsysgrifo.", - "api-error-file-too-large": "Mae'r ffeil a gyflwynwyd gennych yn rhy fawr.", - "api-error-filename-tooshort": "Mae enw'r ffeil yn rhy fyr.", - "api-error-filetype-banned": "Mae'r math hwn o ffeil wedi ei wahardd.", - "api-error-filetype-banned-type": "Ni chaniateir ffeiliau o'r {{PLURAL:$4|math|math|mathau}} $1. $2 yw'r {{PLURAL:$3|math|math|mathau}} o ffeiliau a ganiateir.", - "api-error-filetype-missing": "Mae estyniad yn eisiau ar y ffeil.", - "api-error-hookaborted": "Cafodd y darpar newid ei derfynu gan estyniad.", - "api-error-http": "Gwall mewnol: ni ellir cysylltu â'r gweinydd.", - "api-error-illegal-filename": "Nid yw'r enw ffeil hwn yn cael ei ganiatáu.", - "api-error-internal-error": "Gwall mewnol: aeth rhywbeth o'i le wrth brosesu'ch uwchlwythiad ar y wici.", - "api-error-invalid-file-key": "Gwall mewnol: nid oedd modd dod o hyd i'r ffeil yn y storfa dros dro.", - "api-error-missingparam": "Gwall mewnol: paramedrau yn eisiau ar y cais.", - "api-error-missingresult": "Gwall mewnol: ni allem ddarganfod a lwyddodd y gwaith copïo ai pheidio.", - "api-error-mustbeloggedin": "Rhaid i chi fewngofnodi er mwyn uwchlwytho ffeiliau.", - "api-error-mustbeposted": "Gwall mewnol: mae angen HTTP POST ar y cais hwn.", - "api-error-noimageinfo": "Llwyddodd yr uwchlwytho, ond ni roddodd y gweinydd unrhyw wybodaeth i ni am y ffeil.", - "api-error-nomodule": "Gwall mewnol: nid oes pecyn uwchlwytho wedi ei osod yn y meddalwedd.", - "api-error-ok-but-empty": "Gwall mewnol: dim ymateb gan y gweinydd.", - "api-error-overwrite": "Ni chaniateir trosysgrifo ffeil sydd eisoes yn bod.", - "api-error-stashfailed": "Gwall mewnol: methodd y gweinydd â rhoi'r ffeil dros dro ar gadw.", "api-error-publishfailed": "Gwall mewnol: methodd y gweinydd â chyhoeddi'r ffeil dros dro.", - "api-error-stasherror": "Cafwyd gwall wrth uwchlwytho'r ffeil i'w gelcio.", - "api-error-stashedfilenotfound": "Methwyd a dod o hyd i'r ffeil a gadwyd pan ymdrechwyd i'w uwchlwytho.", - "api-error-stashpathinvalid": "Roedd y llwybr i'r ffeil a gadwyd yn wallus.", - "api-error-stashfilestorage": "Cafwyd gwall wrth geisio cadw'r ffeil.", - "api-error-stashzerolength": "Methodd ein gweinydda chadw'r ffeil, oherwydd nad oedd yn bodoli.", - "api-error-stashnotloggedin": "Mae;n hanfodol eich bod wedi mewngofnodi cyn y medrwch gadw ffeiliau.", - "api-error-stashwrongowner": "Nid eich heiddo chi mo'r ffeil y ceisiwch ei drin.", - "api-error-stashnosuchfilekey": "Dydy'r ffeil rydych yn ceisio'i gael yn y cuddfan celc ddim yn bodoli.", - "api-error-timeout": "Ni chafwyd ymateb gan y gweinydd mewn da bryd.", - "api-error-unclassified": "Cafwyd gwall anhysbys", - "api-error-unknown-code": "Gwall anhysbys: \"$1\"", - "api-error-unknown-error": "Gwall mewnol: aeth rhywbeth o'i le wrth geisio llwytho eich ffeil.", + "api-error-stashfailed": "Gwall mewnol: methodd y gweinydd â rhoi'r ffeil dros dro ar gadw.", "api-error-unknown-warning": "Rhybudd anhysbys: $1", "api-error-unknownerror": "Gwall anhysbys: \"$1\".", - "api-error-uploaddisabled": "Analluogwyd uwchlwytho ar y wici hwn.", - "api-error-verification-error": "Gallai'r ffeil hon fod wedi ei llygru, neu gall fod estyniad anghywir iddi.", "duration-seconds": "$1 {{PLURAL:$1|eiliad}}", "duration-minutes": "$1 {{PLURAL:$1|munud|munud|funud|munud|munud|munud}}", "duration-hours": "$1 {{PLURAL:$1|awr}}", diff --git a/languages/i18n/da.json b/languages/i18n/da.json index 96f4e0c268..51d8ea319a 100644 --- a/languages/i18n/da.json +++ b/languages/i18n/da.json @@ -68,17 +68,17 @@ "tog-newpageshidepatrolled": "Skjul patruljerede sider pÃ¥ listen over nye sider", "tog-hidecategorization": "Skjul kategorisering af sider", "tog-extendwatchlist": "Udvid overvÃ¥gningslisten til at vise alle ændringer og ikke kun den nyeste", - "tog-usenewrc": "Gruppér ændringer per side i listen over seneste ændringer og i overvÃ¥gningslisten", + "tog-usenewrc": "Gruppér ændringer efter side i listen over seneste ændringer og i overvÃ¥gningslisten", "tog-numberheadings": "Automatisk nummerering af overskrifter", "tog-showtoolbar": "Vis værktøjslinje til redigering", "tog-editondblclick": "Redigér sider med dobbeltklik", "tog-editsectiononrightclick": "Redigér afsnit ved at højreklikke pÃ¥ deres titler", - "tog-watchcreations": "Tilføj sider, jeg opretter, og filer, jeg lægger op, til min overvÃ¥gningsliste", - "tog-watchdefault": "Tilføj sider og filer, jeg redigerer, til min overvÃ¥gningsliste", - "tog-watchmoves": "Tilføj sider og filer, jeg flytter, til min overvÃ¥gningsliste", - "tog-watchdeletion": "Tilføj sider og filer, jeg sletter, til min overvÃ¥gningsliste", - "tog-watchuploads": "Tilføj nye filer jeg uploader til min overvÃ¥gningsliste", - "tog-watchrollback": "Tilføj sider, hvor jeg har udført en tilbagerulning til min overvÃ¥gningsliste", + "tog-watchcreations": "Føj sider, jeg opretter, og filer, jeg lægger op, til min overvÃ¥gningsliste", + "tog-watchdefault": "Føj sider og filer, jeg redigerer, til min overvÃ¥gningsliste", + "tog-watchmoves": "Føj sider og filer, jeg flytter, til min overvÃ¥gningsliste", + "tog-watchdeletion": "Føj sider og filer, jeg sletter, til min overvÃ¥gningsliste", + "tog-watchuploads": "Føj nye filer, jeg uploader, til min overvÃ¥gningsliste", + "tog-watchrollback": "Føj sider, hvor jeg har udført en tilbagerulning, til min overvÃ¥gningsliste", "tog-minordefault": "Markér som standard alle redigeringer som mindre", "tog-previewontop": "Vis forhÃ¥ndsvisning over redigeringsboksen", "tog-previewonfirst": "Vis forhÃ¥ndsvisning ved første redigering", @@ -88,26 +88,26 @@ "tog-enotifrevealaddr": "Vis min e-mailadresse i e-mails med besked om ændringer", "tog-shownumberswatching": "Vis antal brugere, der overvÃ¥ger", "tog-oldsig": "Din nuværende signatur:", - "tog-fancysig": "Behandl signatur som wikitekst uden automatisk henvisning", + "tog-fancysig": "Behandl signatur som wikitekst (uden automatisk henvisning)", "tog-uselivepreview": "Benyt løbende forhÃ¥ndsvisning", - "tog-forceeditsummary": "Advar mig hvis jeg ikke udfylder beskrivelsesfeltet", + "tog-forceeditsummary": "Advar mig, hvis jeg ikke udfylder beskrivelsesfeltet", "tog-watchlisthideown": "Skjul egne ændringer i overvÃ¥gningslisten", "tog-watchlisthidebots": "Skjul ændringer fra botter i overvÃ¥gningslisten", "tog-watchlisthideminor": "Skjul mindre ændringer i overvÃ¥gningslisten", "tog-watchlisthideliu": "Skjul indloggede brugeres redigeringer i overvÃ¥gningslisten", - "tog-watchlistreloadautomatically": "Opdater overvÃ¥gningslisten automatisk, nÃ¥r et filter er ændret (JavaScript pÃ¥krævet)", + "tog-watchlistreloadautomatically": "Opdater overvÃ¥gningslisten automatisk, nÃ¥r et filter ændres (kræver JavaScript)", "tog-watchlisthideanons": "Skjul anonyme brugeres redigeringer i overvÃ¥gningslisten", - "tog-watchlisthidepatrolled": "Skjul patruljerede ændringer fra overvÃ¥gningslisten", + "tog-watchlisthidepatrolled": "Skjul patruljerede ændringer i overvÃ¥gningslisten", "tog-watchlisthidecategorization": "Skjul kategorisering af sider", - "tog-ccmeonemails": "Send mig kopier af e-mails som jeg sender til andre brugere", + "tog-ccmeonemails": "Send mig kopier af e-mails jeg sender til andre brugere", "tog-diffonly": "Vis ikke sideindhold neden under versionssammenligninger", "tog-showhiddencats": "Vis skjulte kategorier", - "tog-norollbackdiff": "Vis ikke forskel efter tilbagerulning", + "tog-norollbackdiff": "Vis ikke forskel efter udførelse af en tilbagerulning", "tog-useeditwarning": "Advar mig, hvis jeg forlader en redigeringsside med ændringer, der ikke er gemt.", - "tog-prefershttps": "Brug altid en sikker forbindelse, nÃ¥r du er logget ind", + "tog-prefershttps": "Brug altid en sikker forbindelse, nÃ¥r jeg er logget ind", "underline-always": "Altid", "underline-never": "Aldrig", - "underline-default": "Brug browserens indstilling eller standarden for det valgte udseende", + "underline-default": "Standard for browseren eller udseendet", "editfont-style": "Skriftstil ved redigering:", "editfont-default": "Brug browserens indstilling", "editfont-monospace": "Fastbreddeskrift", @@ -180,16 +180,16 @@ "pagecategories": "{{PLURAL:$1|Kategori|Kategorier}}", "category_header": "Sider i kategorien \"$1\"", "subcategories": "Underkategorier", - "category-media-header": "Medier i kategorien „$1“", - "category-empty": "''Denne kategori indeholder for øjeblikket hverken sider eller medie-filer.''", + "category-media-header": "Medier i kategorien \"$1\"", + "category-empty": "<em>Denne kategori indeholder for øjeblikket hverken sider eller medie-filer.</em>", "hidden-categories": "{{PLURAL:$1|Skjult kategori|Skjulte kategorier}}", "hidden-category-category": "Skjulte kategorier", - "category-subcat-count": "{{PLURAL:$2|Denne kategori har en underkategori.|Denne kategori indeholder nedenstÃ¥ende {{PLURAL:$1|underkategori|$1 underkategorier}}, af i alt $2.}}", - "category-subcat-count-limited": "Denne kategori indeholder {{PLURAL:$1|underkategori|$1 underkategorier}}.", - "category-article-count": "Denne kategori indeholder {{PLURAL:$2|kun den nedenstÃ¥ende side|{{PLURAL:$1|den nedenstÃ¥ende side|de nedenstÃ¥ende $1 sider}} af i alt $2.}}", - "category-article-count-limited": "Kategorien indeholder {{PLURAL:$1|den nedenstÃ¥ende side|de nedenstÃ¥ende $1 sider}}.", - "category-file-count": "Denne kategori indeholder {{PLURAL:$2|kun den nedenstÃ¥ende fil.|{{PLURAL:$1|den nedenstÃ¥ende fil|de nedenstÃ¥ende $1 filer}} af i alt $2.}}", - "category-file-count-limited": "Kategorien indeholder {{PLURAL:$1|den nedenstÃ¥ende fil|de nedenstÃ¥ende $1 filer}}.", + "category-subcat-count": "{{PLURAL:$2|Denne kategori har kun den nedenstÃ¥ende underkategori.|Denne kategori har nedenstÃ¥ende {{PLURAL:$1|underkategori|$1 underkategorier}}, af i alt $2.}}", + "category-subcat-count-limited": "Denne kategori har nedenstÃ¥ende {{PLURAL:$1|underkategori|$1 underkategorier}}.", + "category-article-count": "{{PLURAL:$2|Denne kategori indeholder kun den nedenstÃ¥ende side.|{{PLURAL:$1|Den nedenstÃ¥ende side|De nedenstÃ¥ende $1 sider}} er i denne kategori, ud af i alt $2.}}", + "category-article-count-limited": "{{PLURAL:$1|Den nedenstÃ¥ende side|De nedenstÃ¥ende $1 sider}} er i denne kategori.", + "category-file-count": "{{PLURAL:$2|Denne kategori indeholder kun den nedenstÃ¥ende fil.|{{PLURAL:$1|Den nedenstÃ¥ende fil|De nedenstÃ¥ende $1 filer}} er i denne kategori, ud af i alt $2.}}", + "category-file-count-limited": "{{PLURAL:$1|Den nedenstÃ¥ende fil|De nedenstÃ¥ende $1 filer}} er i denne kategori.", "listingcontinuesabbrev": "forts.", "index-category": "Indekserede sider", "noindex-category": "Ikke-indekserede sider", @@ -208,8 +208,8 @@ "qbfind": "Søg", "qbbrowse": "Gennemse", "qbedit": "Redigér", - "qbpageoptions": "Indstillinger for side", - "qbmyoptions": "Mine indstillinger", + "qbpageoptions": "Denne side", + "qbmyoptions": "Mine sider", "faq": "OSS", "faqpage": "Project:OSS", "actions": "Handlinger", @@ -221,12 +221,13 @@ "tagline": "Fra {{SITENAME}}", "help": "Hjælp", "search": "Søg", - "search-ignored-headings": " #<!-- lad denne linje være præcis som den er --> <pre>\n# Overskrifter, der vil blive ignoreret af søgning.\n# Ændringer til dette træder i kraft sÃ¥ snart siden med overskriften er indekseret.\n# Du kan tvinge siden til genindeksering ved at lave en nul redigering.\n# syntaksen er som følger:\n# * Alt fra en tegnet \"#\" til slutningen af linjen er en kommentar\n# * Hver ikke-tomme linje er den nøjagtige titel der skal ignoreres, der skelnes ogsÃ¥ mellem store og smÃ¥ bogstaver\nReferencer\nEksterne henvisninger\nSe ogsÃ¥\nKilder og henvisninger\nEksterne kilder/henvisninger\nKilder\n #</pre> <!-- lad denne linje være præcis som den er -->", + "search-ignored-headings": " #<!-- leave this line exactly as it is --> <pre>\n# Overskrifter, der vil blive ignoreret af søgning.\n# Ændringer til dette træder i kraft sÃ¥ snart siden med overskriften er indekseret.\n# Du gennemtvinge genindeksering af siden ved at lave en tom redigering.\n# Syntaksen er som følger:\n# * Alt fra et \"#\"-tegn til slutningen af linjen er en kommentar.\n# * Hver ikke-tom linje er den nøjagtige titel der skal ignoreres; der skelnes mellem store og smÃ¥ bogstaver.\nReferencer\nEksterne henvisninger\nSe ogsÃ¥\nKilder og henvisninger\nEksterne kilder/henvisninger\nKilder\n #<!-- leave this line exactly as it is --> <pre>", "searchbutton": "Søg", "go": "GÃ¥ til", "searcharticle": "GÃ¥ til", "history": "Historik", "history_short": "Historik", + "history_small": "historik", "updatedmarker": "opdateret siden seneste besøg", "printableversion": "Udskriftsvenlig udgave", "permalink": "Permanent henvisning", @@ -242,13 +243,13 @@ "delete": "Slet", "deletethispage": "Slet side", "undeletethispage": "Gendan denne side", - "undelete_short": "Fortryd sletning af {{PLURAL:$1|én version|$1 versioner}}", - "viewdeleted_short": "Vis {{PLURAL:$1|en slettet redigering|$1 slettede redigeringer}}", + "undelete_short": "Gendan {{PLURAL:$1|én redigering|$1 redigeringer}}", + "viewdeleted_short": "Vis {{PLURAL:$1|én slettet redigering|$1 slettede redigeringer}}", "protect": "Beskyt", "protect_change": "ændr", "protectthispage": "Beskyt side", "unprotect": "Ændr beskyttelse", - "unprotectthispage": "Ændre beskyttelsen af denne side", + "unprotectthispage": "Ændr beskyttelsen af denne side", "newpage": "Ny side", "talkpage": "Diskussion", "talkpagelinktext": "diskussion", @@ -261,30 +262,30 @@ "tool-link-userrights": "Ændre {{GENDER:$1|bruger}}grupper", "tool-link-userrights-readonly": "Se {{GENDER:$1|bruger}}grupper", "tool-link-emailuser": "Send e-mail til denne {{GENDER:$1|bruger}}", - "userpage": "Se brugersiden", - "projectpage": "Se projektsiden", - "imagepage": "Se filside", - "mediawikipage": "Vise indholdsside", - "templatepage": "Vise skabelonside", - "viewhelppage": "Vise hjælpeside", - "categorypage": "Vise kategoriside", - "viewtalkpage": "Se diskussion", - "otherlanguages": "Andre sprog", + "userpage": "Vis brugerside", + "projectpage": "Vis projektside", + "imagepage": "Vis filside", + "mediawikipage": "Vis indholdsside", + "templatepage": "Vis skabelonside", + "viewhelppage": "Vis hjælpeside", + "categorypage": "Vis kategoriside", + "viewtalkpage": "Vis diskussion", + "otherlanguages": "PÃ¥ andre sprog", "redirectedfrom": "(Omdirigeret fra $1)", "redirectpagesub": "Omdirigeringsside", "redirectto": "Omdiriger til:", "lastmodifiedat": "Denne side blev senest ændret $1 kl. $2.", - "viewcount": "Siden er vist {{PLURAL:$1|en gang|$1 gange}}.", + "viewcount": "Siden er vist {{PLURAL:$1|én gang|$1 gange}}.", "protectedpage": "Beskyttet side", "jumpto": "Skift til:", "jumptonavigation": "navigering", "jumptosearch": "søgning", - "view-pool-error": "Beklager, men serverne er i øjeblikket overbelastede.\nFor mange brugere prøver at se denne side.\nVent et øjeblik, før du prøver at besøge denne side igen.\n\n$1", - "generic-pool-error": "Beklager, men serverne er i øjeblikket overbelastede.\nFor mange brugere prøver at se denne side.\nVent et øjeblik før du prøver at besøge denne side igen.", - "pool-timeout": "Timeout mens man venter pÃ¥ lÃ¥sningen", - "pool-queuefull": "Pool køen er fuld", + "view-pool-error": "Beklager, men serverne er i øjeblikket overbelastede.\nFor mange brugere prøver at se denne side.\nVent venligst lidt, før du igen prøver at besøge denne side.\n\n$1", + "generic-pool-error": "Beklager, men serverne er i øjeblikket overbelastede.\nFor mange brugere prøver at se denne side.\nVent venligst lidt, før du igen prøver at besøge denne side.", + "pool-timeout": "Timeout mens der blev ventet pÃ¥ lÃ¥sen", + "pool-queuefull": "Puljekøen er fuld", "pool-errorunknown": "Ukendt fejl", - "pool-servererror": "Pool-counter servicen er ikke til rÃ¥dighed ($1).", + "pool-servererror": "Puljetæller-tjenesten er ikke til rÃ¥dighed ($1).", "poolcounter-usage-error": "Brugsfejl: $1", "aboutsite": "Om {{SITENAME}}", "aboutpage": "Project:Om", @@ -304,14 +305,14 @@ "privacy": "Behandling af personlige oplysninger", "privacypage": "Project:Behandling af personlige oplysninger", "badaccess": "Manglende rettigheder", - "badaccess-group0": "Du har ikke de nødvendige rettigheder til denne handling.", - "badaccess-groups": "Denne handling kan kun udføres af brugere som tilhører {{PLURAL:$2|gruppen|en af grupperne:}} $1.", + "badaccess-group0": "Du har ikke de nødvendige rettigheder til at udføre den handling, du har anmodet om.", + "badaccess-groups": "Denne handling kan kun udføres af brugere i {{PLURAL:$2|gruppen|disse grupper:}} $1.", "versionrequired": "Kræver version $1 af MediaWiki", - "versionrequiredtext": "Version $1 af MediaWiki er pÃ¥krævet, for at bruge denne side. Se [[Special:Version|Versionssiden]]", + "versionrequiredtext": "Version $1 af MediaWiki er nødvendig for at bruge denne side. Se [[Special:Version|Versionssiden]]", "ok": "OK", "retrievedfrom": "Hentet fra \"$1\"", "youhavenewmessages": "Du har $1 ($2).", - "youhavenewmessagesfromusers": "Du har $1 fra {{PLURAL:$3|en anden bruger| $3 brugere}} ($2).", + "youhavenewmessagesfromusers": "{{PLURAL:$4|Du har}} $1 fra {{PLURAL:$3|en anden bruger|$3 brugere}} ($2).", "youhavenewmessagesmanyusers": "Du har $1 fra mange brugere ($2).", "newmessageslinkplural": "{{PLURAL:$1|en ny besked|999=nye beskeder}}", "newmessagesdifflinkplural": "seneste {{PLURAL:$1|ændring|999=ændringer}}", @@ -330,9 +331,9 @@ "confirmable-confirm": "Er {{GENDER:$1|du}} sikker?", "confirmable-yes": "Ja", "confirmable-no": "Nej", - "thisisdeleted": "Se eller gendan $1?", + "thisisdeleted": "Vis eller gendan $1?", "viewdeleted": "Vis $1?", - "restorelink": "{{PLURAL:$1|en slettet ændring|$1 slettede ændringer}}", + "restorelink": "{{PLURAL:$1|én slettet redigering|$1 slettede redigeringer}}", "feedlinks": "Feed:", "feed-invalid": "Ugyldig abonnementstype.", "feed-unavailable": "Der er ingen syndikeringsfeeds tilgængelige", @@ -340,7 +341,7 @@ "site-atom-feed": "$1 Atom-feed", "page-rss-feed": "\"$1\" RSS-feed", "page-atom-feed": "\"$1\" Atom-feed", - "red-link-title": "$1 (siden er ikke skrevet endnu)", + "red-link-title": "$1 (siden findes ikke)", "sort-descending": "Sorter faldende", "sort-ascending": "Sorter stigende", "nstab-main": "Side", @@ -355,42 +356,42 @@ "nstab-category": "Kategori", "mainpage-nstab": "Forside", "nosuchaction": "Funktionen findes ikke", - "nosuchactiontext": "Handlingen som er angivet i URL'en er ugyldig.\nDu kan have skrevet URL'en forkert, eller fulgt en ukorrekt henvisning.\nDet kan ogsÃ¥ skyldes en fejl i programmellet som bruges af {{SITENAME}}.", + "nosuchactiontext": "Handlingen som er angivet i URL'en er ugyldig.\nDu har mÃ¥ske skrevet URL'en forkert eller fulgt en ukorrekt henvisning.\nDet kan ogsÃ¥ skyldes en fejl i programmellet som bruges af {{SITENAME}}.", "nosuchspecialpage": "En sÃ¥dan specialside findes ikke", - "nospecialpagetext": "<strong>Du har bedt om en specialside, der ikke kan genkendes af MediaWiki-softwaren.</strong>\nEn liste over gyldige specialsider findes pÃ¥ [[Special:SpecialPages|{{int:specialpages}}]].", + "nospecialpagetext": "<strong>Du har bedt om en specialside, som ikke findes.</strong>\n\nEn liste over gyldige specialsider kan findes pÃ¥ [[Special:SpecialPages|{{int:specialpages}}]].", "error": "Fejl", "databaseerror": "Databasefejl", - "databaseerror-text": "Der opstod fejl i en forespørgsel til databasen.\nDette kan indikere en fejl i softwaren.", - "databaseerror-textcl": "Der opstod fejl i en forespørgsel til databasen.", + "databaseerror-text": "Der opstod en fejl i en forespørgsel til databasen.\nDette kan skyldes en programmeringsfejl i softwaren.", + "databaseerror-textcl": "Der opstod en fejl i en forespørgsel til databasen.", "databaseerror-query": "Forespørgsel: $1", "databaseerror-function": "Funktion: $1", "databaseerror-error": "Fejl: $1", - "transaction-duration-limit-exceeded": "For at undgÃ¥ høje replikationsforsinkelser blev denne transaktion afbrudt fordi tiden det tog at lagre ($1) oversteg maksimumsgrænsen pÃ¥ $2 {{PLURAL:$2|sekund|sekunder}}.\nHvis du er ved at ændre mange emner pÃ¥ en gang, sÃ¥ prøv at udføre flere mindre operationer i stedet.", - "laggedslavemode": "'''Bemærk:''' Den viste side indeholder muligvis ikke de nyeste ændringer.", - "readonly": "Databasen er skrivebeskyttet", - "enterlockreason": "Skriv en begrundelse for skrivebeskyttelsen, med samt en vurdering af, hvornÃ¥r skrivebeskyttelsen ophæves igen", - "readonlytext": "Databasen er i øjeblikket lÃ¥st for nye poster og andre ændringer, formentlig pga. rutinemæssig databasevedligeholdelse, hvorefter den vil være tilbage til normalen.\n\nSystemadministratoren som lÃ¥ste den, gav denne forklaring: $1", - "missing-article": "Databasen burde indeholde siden \"$1\" $2, men det gør den ikke.\n\nDen sandsynlige Ã¥rsag er at du har fulgt et forældet link til en forskel eller en gammel version af en side der er blevet slettet.\n\nHvis det ikke er tilfældet, har du muligvis fundet en software-fejl.\nGør venligst en [[Special:ListUsers/sysop|administrator]] opmærksom pÃ¥ det, og husk at fortælle hvilken URL du har fulgt.", + "transaction-duration-limit-exceeded": "For at undgÃ¥ høj replikationsforsinkelse blev denne transaktion afbrudt, fordi tiden det tog at lagre ($1) oversteg grænsen pÃ¥ $2 {{PLURAL:$2|sekund|sekunder}}.\nHvis du er ved at ændre mange emner pÃ¥ en gang, sÃ¥ prøv at udføre flere mindre operationer i stedet.", + "laggedslavemode": "<strong>Advarsel:</strong> Siden indeholder muligvis ikke de nyeste ændringer.", + "readonly": "Databasen er lÃ¥st", + "enterlockreason": "Skriv en begrundelse for lÃ¥sningen, inklusive en vurdering af hvornÃ¥r den vil blive ophævet igen", + "readonlytext": "Databasen er i øjeblikket lÃ¥st for nye poster og andre ændringer, formentlig pga. rutinemæssig databasevedligeholdelse, hvorefter den vil være tilbage til normalen.\n\nDen systemadministrator, som lÃ¥ste den, gav denne forklaring: $1", + "missing-article": "Databasen burde indeholde siden \"$1\" $2, men det gør den ikke.\n\nDette skyldes normalt at du har fulgt et forældet link til en forskel eller til en gammel version af en side der er blevet slettet.\n\nHvis det ikke er tilfældet, har du muligvis fundet en programmeringsfejl i softwaren.\nGør venligst en [[Special:ListUsers/sysop|administrator]] opmærksom pÃ¥ det, og sørg for at fortælle vedkommende hvilken URL, du har fulgt.", "missingarticle-rev": "(versionsnummer: $1)", - "missingarticle-diff": "(Forskel: $1, $2)", - "readonly_lag": "Databasen er automatisk blevet lÃ¥st mens slave database serverne synkronisere med master databasen", - "nonwrite-api-promise-error": "HTTP-headeren 'Promise-Non-Write-API-Action' blev sendt, men forespørgslen var til et API skrivemodul.", + "missingarticle-diff": "(forskel: $1, $2)", + "readonly_lag": "Databasen er automatisk blevet lÃ¥st mens slavedatabaseserverne synkroniserer med masterdatabasen", + "nonwrite-api-promise-error": "HTTP-headeren 'Promise-Non-Write-API-Action' blev sendt, men forespørgslen var til et API-skrivemodul.", "internalerror": "Intern fejl", "internalerror_info": "Intern fejl: $1", - "internalerror-fatal-exception": "Alvorlig undtagelse af typen \"$1\"", + "internalerror-fatal-exception": "Fatal undtagelse af typen \"$1\"", "filecopyerror": "Kunne ikke kopiere filen \"$1\" til \"$2\".", "filerenameerror": "Kunne ikke omdøbe filen \"$1\" til \"$2\".", "filedeleteerror": "Kunne ikke slette filen \"$1\".", "directorycreateerror": "Kunne ikke oprette mappen \"$1\".", - "directoryreadonlyerror": "Folderen \"$1\" er skrivebeskyttet.", - "directorynotreadableerror": "Folderen \"$1\" er ikke læsbar.", + "directoryreadonlyerror": "Mappen \"$1\" er skrivebeskyttet.", + "directorynotreadableerror": "Mappen \"$1\" er ikke læsbar.", "filenotfound": "Kunne ikke finde filen \"$1\".", "unexpected": "Uventet værdi: \"$1\"=\"$2\".", - "formerror": "Fejl: Kunne ikke afsende formular", + "formerror": "Fejl: Kunne ikke afsende formular.", "badarticleerror": "Denne funktion kan ikke udføres pÃ¥ denne side.", "cannotdelete": "Kunne ikke slette siden eller filen \"$1\".\nDen kan være blevet slettet af en anden.", "cannotdelete-title": "Kan ikke slette siden \"$1\"", - "delete-hook-aborted": "Sletningen blev afbrudt af en programfunktion.\nDer var ikke nogen forklaring.", + "delete-hook-aborted": "Sletningen blev afbrudt af en programfunktion.\nDer blev ikke givet nogen forklaring.", "no-null-revision": "Kunne ikke oprette nye tom revision for side \"$1\"", "badtitle": "Ugyldig titel", "badtitletext": "Den ønskede sides titel var ikke tilladt, tom eller siden er forkert henvist fra {{SITENAME}} pÃ¥ et andet sprog.\nDen kan indeholde et eller flere tegn, som ikke mÃ¥ anvendes i titler.", @@ -465,19 +466,12 @@ "login": "Log pÃ¥", "login-security": "Bekræft din identitet", "nav-login-createaccount": "Opret en konto eller log pÃ¥", - "userlogin": "Opret en konto eller log pÃ¥", - "userloginnocreate": "Log pÃ¥", "logout": "Log af", "userlogout": "Log af", "notloggedin": "Ikke logget pÃ¥", "userlogin-noaccount": "Har du ikke en konto?", "userlogin-joinproject": "Slut dig til {{SITENAME}}", - "nologin": "Har du ingen konto? $1.", - "nologinlink": "Opret en ny brugerkonto", "createaccount": "Opret en ny brugerkonto", - "gotaccount": "Har du allerede en konto? $1.", - "gotaccountlink": "Log pÃ¥", - "userlogin-resetlink": "Har du glemt dine login oplysninger?", "userlogin-resetpassword-link": "Glemt din adgangskode?", "userlogin-helplink2": "Hjælp med at logge pÃ¥", "userlogin-loggedin": "Du er allerede logget pÃ¥ som {{GENDER:$1|$1}}.\nBrug formularen nedenfor til at logge pÃ¥ som en anden bruger.", @@ -490,7 +484,6 @@ "createaccountmail": "Brug en midlertidig tilfældig adgangskode og send den til den angivne e-mailadresse", "createaccountmail-help": "Kan bruges til at oprette konto til en anden person uden at lære deres adgangskode.", "createacct-realname": "Dit rigtige navn (valgfrit)", - "createaccountreason": "Begrundelse:", "createacct-reason": "Årsag", "createacct-reason-ph": "Hvorfor du vil oprette endnu en konto", "createacct-reason-help": "Besked vist i kontooprettelsesloggen.", @@ -515,7 +508,7 @@ "noname": "Du har ikke angivet et gyldigt brugernavn.", "loginsuccesstitle": "Logget ind", "loginsuccess": "'''Du er nu logget pÃ¥ {{SITENAME}} som \"$1\".'''", - "nosuchuser": "Der er ingen bruger med navnet \"$1\".\nDer skelnes mellem store og bogstaver i brugernavne.\nKontrollér stavemÃ¥den, eller [[Special:CreateAccount|opret en ny konto]].", + "nosuchuser": "Der er ingen bruger med navnet \"$1\".\nDer skelnes mellem store og smÃ¥ bogstaver i brugernavne.\nKontrollér stavningen, eller [[Special:CreateAccount|opret en ny konto]].", "nosuchusershort": "Der er ingen bruger ved navn \"$1\". Tjek din stavning.", "nouserspecified": "Angiv venligst et brugernavn.", "login-userblocked": "Denne bruger er blokeret. Det er ikke tilladt at logge pÃ¥.", @@ -532,11 +525,11 @@ "noemail": "Der er ikke oplyst en e-mailadresse for bruger \"$1\".", "noemailcreate": "Du skal angive en gyldig e-mailadresse", "passwordsent": "En ny adgangskode er sendt til e-mailadressen, som er registreret for \"$1\".\nDu bør logge pÃ¥ og ændre din adgangskode straks efter du har modtaget e-mailen.", - "blocked-mailpassword": "Din IP-adresse er blokeret fra at redigere sider. For at forhindre misbrug, er det heller ikke muligt, at bestille en ny adgangskode.", + "blocked-mailpassword": "Din IP-adresse er blokeret fra at redigere sider. For at forhindre misbrug er det heller ikke muligt at bestille en ny adgangskode fra denne IP-adresse.", "eauthentsent": "En e-mailbekræftelse er sendt til den angivne e-mailadresse.\n\nFør flere e-mails bliver sendt til kontoen, skal du følge instruktionerne i e-mailen, for at bekræfte at kontoen rent faktisk er din.", "throttled-mailpassword": "Indenfor {{PLURAL:$1|den sidste time|de sidste $1 timer}} er der allerede sendt en ny adgangskode. For at forhindre misbrug af funktionen, kan der kun bestilles en ny adgangskode én gang for hver {{PLURAL:$1|time|$1 timer}}.", "mailerror": "Fejl ved afsendelse af e-mail: $1", - "acct_creation_throttle_hit": "Besøgende med samme IP-adresse som dig har oprettet {{PLURAL:$1|en konto|$1 kontoer}} det sidste døgn, og det er ikke tilladt at oprette flere.\nDerfor kan besøgende ikke oprette flere kontoer fra denne IP-adresse i øjeblikket.", + "acct_creation_throttle_hit": "Besøgende med samme IP-adresse som dig har oprettet {{PLURAL:$1|1 konto|$1 kontoer}} inden for den/det/de seneste $2, hvilket er det maksimalt tilladte inden for denne tidsperiode.\nDerfor kan besøgende, som bruger denne IP-adresse, ikke oprette flere kontoer fra denne IP-adresse for øjeblikket.", "emailauthenticated": "Din e-mailadresse blev bekræftet den $2 kl. $3.", "emailnotauthenticated": "Din e-mailadresse er endnu ikke bekræftet.\nIngen e-mail vil blive sendt for de følgende funktioner.", "noemailprefs": "Angiv en e-mailadresse, sÃ¥ følgende funktioner er til rÃ¥dighed.", @@ -549,13 +542,14 @@ "createaccount-title": "Opret brugerkonto pÃ¥ {{SITENAME}}", "createaccount-text": "Nogen har oprettet en konto for din e-mailadresse pÃ¥ {{SITENAME}} ($4) med navnet \"$2\". Adgangskoden er \"$3\".\nDu opfordres til at logge pÃ¥ og ændre adgangskoden med det samme.\n\nDu kan ignorere denne besked hvis kontoen blev oprettet ved en fejl.", "login-throttled": "Du har forsøgt at logge pÃ¥ for mange gange.\nVent venligst $1, før du prøver igen.", - "login-abort-generic": "Det lykkedes dig ikke at logge pÃ¥ - afbrudt", + "login-abort-generic": "Det lykkedes ikke at logge dig pÃ¥ - Afbrudt", "login-migrated-generic": "Din konto er blevet globaliseret, og dit brugernavn eksisterer ikke længere pÃ¥ denne wiki.", "loginlanguagelabel": "Sprog: $1", "suspicious-userlogout": "Din anmodning om at logge af blev nægtet, fordi det ser ud som den blev sendt af en ødelagt browser eller caching proxy.", "createacct-another-realname-tip": "Angivelse af rigtigt navn er valgfrit.\nHvis du vælger at oplyse dit navn, vil det blive brugt til at tilskrive dig dit arbejde.", "pt-login": "Log pÃ¥", "pt-login-button": "Log pÃ¥", + "pt-login-continue-button": "Fortsæt login", "pt-createaccount": "Opret konto", "pt-userlogout": "Log af", "php-mail-error-unknown": "Ukendt fejl i PHP funktionen mail()", @@ -569,7 +563,7 @@ "newpassword": "Ny adgangskode:", "retypenew": "Gentag ny adgangskode:", "resetpass_submit": "Gem adgangskode og log pÃ¥", - "changepassword-success": "Din adgangskode er nu ændret!", + "changepassword-success": "Din adgangskode er blevet ændret!", "changepassword-throttled": "Du har forsøgt at logge pÃ¥ for mange gange for nylig.\nVent venligst $1, før du prøver igen.", "botpasswords": "Bot adgangskoder", "botpasswords-summary": "<em>Bot adgangskoder</em> giver adgang til en brugerkonto via API'en, uden at bruge kontoens normale login-legitimationsoplysninger. Brugerrettighederne kan være begrænset, nÃ¥r du er logget pÃ¥ med et bot password,.\n\nHvis du ikke ved, hvorfor du mÃ¥ske ønsker at gøre dette, bør du nok ikke gøre det. Ingen bør nogensinde bede dig om at generere et af disse, og give det til dem.", @@ -589,7 +583,7 @@ "resetpass-no-info": "Du skal være logget pÃ¥ for at komme direkte til denne side.", "resetpass-submit-loggedin": "Skift adgangskode", "resetpass-submit-cancel": "Annuller", - "resetpass-wrong-oldpass": "Ugyldig midlertidig eller gældende adgangskode.\nDu har muligvis allerede skiftet din adgangskode eller anmodet om en ny midlertidig kode.", + "resetpass-wrong-oldpass": "Ugyldig midlertidig eller gældende adgangskode.\nDu har muligvis allerede ændret din adgangskode eller bedt om en ny midlertidig kode.", "resetpass-recycled": "Vær venlig at ændre din adgangskode til noget andet end din nuværende adgangskode.", "resetpass-temp-emailed": "Du loggede pÃ¥ med en midlertidig kode tilsendt pÃ¥ e-mail.\nFor at afslutte indlogning skal du angive en ny adgangskode her:", "resetpass-temp-password": "Midlertidig adgangskode", @@ -665,7 +659,7 @@ "selfredirect": "<strong>Advarsel:</strong> Du er ved at omdirigere denne side til sig selv.\nDu kan have angivet det forkerte mÃ¥l for omdirigeringen, eller du kan være ved at redigere den forkerte side.\nHvis du klikker pÃ¥ \"{{int:savearticle}}\" igen, vil omdirigeringen blive oprettet uanset dette.", "missingcommenttext": "Skriv venligst en kommentar nedenfor.", "missingcommentheader": "<strong>Bemærk:</strong> Du har ikke angivet en overskrift/emne for denne kommentar. Hvis du trykker \"{{int:savearticle}}\" én gang til, gemmes dine ændringer uden overskrift/emne.", - "summary-preview": "ForhÃ¥ndsvisning af beskrivelsen:", + "summary-preview": "ForhÃ¥ndsvisning af sammenfatning:", "subject-preview": "ForhÃ¥ndsvisning af emne/overskrift:", "previewerrortext": "Der opstod en fejl under forsøget pÃ¥ at lave en forhÃ¥ndsvisning af dine ændringer.", "blockedtitle": "Du eller din IP-adresse er blokeret", @@ -757,6 +751,7 @@ "invalid-content-data": "Ugyldig indholdsdata", "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-notsupportedcontentformat-title": "Indholdsformatet understøttes ikke", "editpage-notsupportedcontentformat-text": "Indholdsformatet $1 understøttes ikke af indholdsmodellen $2", "content-model-wikitext": "wikitekst", @@ -765,6 +760,7 @@ "content-model-css": "CSS", "content-json-empty-object": "Tomt objekt", "content-json-empty-array": "Tomt array", + "deprecated-self-close-category": "Sider, der bruger ugyldige, selvlukkende HTML-tags", "duplicate-args-category": "Sider der bruger samme argument mere end en gang i en skabelon", "duplicate-args-category-desc": "Siden indeholder en skabelon hvor et argument er brugt mere end en gang, som <code><nowiki>{{foo|bar=1|bar=2}}</nowiki></code> eller <code><nowiki>{{foo|bar|1=baz}}</nowiki></code>.", "expensive-parserfunction-warning": "Advarsel: Der er for mange beregningstunge oversætter-funktionskald pÃ¥ denne side.\n\nDer bør være færre end {{PLURAL:$2|$2 kald}}, lige nu er der {{PLURAL:$1|$1 kald}}.", @@ -866,9 +862,9 @@ "revdelete-unsuppress": "Ophæv begrænsninger for gendannede versioner", "revdelete-log": "Begrundelse:", "revdelete-submit": "Udfør pÃ¥ {{PLURAL:$1|den udvalgte version|de udvalgte versioner}}", - "revdelete-success": "'''Versionsvisningen er ændret.'''", + "revdelete-success": "Versionssynligheden blev opdateret.", "revdelete-failure": "'''Kunne ikke ændre versionssynligheden:'''\n$1", - "logdelete-success": "'''Synlighed ændret med success.'''", + "logdelete-success": "Log-synligheden blev ændret.", "logdelete-failure": "'''Kunne ikke ændre logsynligheden.'''\n$1", "revdel-restore": "ændre synlighed", "pagehist": "Sidehistorik", @@ -958,6 +954,7 @@ "search-interwiki-caption": "Søsterprojekter", "search-interwiki-default": "Resultater fra $1:", "search-interwiki-more": "(mere)", + "search-interwiki-more-results": "flere resultater", "search-relatedarticle": "Relateret", "searchrelated": "relateret", "searchall": "alle", @@ -1005,8 +1002,6 @@ "saveprefs": "Gem indstillinger", "restoreprefs": "Gendan alle standardindstillinger (i alle sektioner)", "prefs-editing": "Redigering", - "rows": "Rækker", - "columns": "Kolonner", "searchresultshead": "Søgeresultater", "stub-threshold": "Grænse før formatering af stublink ($1):", "stub-threshold-disabled": "Deaktiveret", @@ -1045,6 +1040,7 @@ "youremail": "Din e-mailadresse:", "username": "{{GENDER:$1|Brugernavn}}:", "prefs-memberingroups": "{{GENDER:$2|Medlem}} af {{PLURAL:$1|gruppen|grupperne}}:", + "group-membership-link-with-expiry": "$1 (indtil $2)", "prefs-registration": "Registreringstidspunkt:", "yourrealname": "Dit rigtige navn:", "yourlanguage": "Sprog:", @@ -1088,7 +1084,7 @@ "userrights-user-editname": "Skriv et brugernavn:", "editusergroup": "Indlæs brugergrupper", "editinguser": "Ændrer brugerrettigheder for {{GENDER:$1|brugeren}} <strong>[[User:$1|$1]]</strong> $2", - "userrights-editusergroup": "Redigér brugergrupper", + "userrights-editusergroup": "Redigér {{GENDER:$1|brugergrupper}}", "saveusergroups": "Gem {{GENDER:$1|brugergrupper}}", "userrights-groupsmember": "Medlem af:", "userrights-groupsmember-auto": "Implicit medlem af:", @@ -1098,6 +1094,8 @@ "userrights-nodatabase": "Databasen $1 eksisterer ikke lokalt.", "userrights-changeable-col": "Redigerbare grupper", "userrights-unchangeable-col": "Uredigerbare grupper", + "userrights-expiry-current": "Udløber $1", + "userrights-expiry-none": "Udløber ikke", "userrights-conflict": "Konflikt i ændringer af brugerrettigheder!\nVær venlig at gennemse og bekræft dine ændringer.", "group": "Gruppe:", "group-user": "Brugere", @@ -1296,6 +1294,10 @@ "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (se ogsÃ¥ [[Special:NewPages|listen over nye sider]])", "recentchanges-legend-plusminus": "(''±123'')", "recentchanges-submit": "Vis", + "rcfilters-activefilters": "Aktive filtre", + "rcfilters-invalid-filter": "Ugyldigt filter", + "rcfilters-filterlist-title": "Filtre", + "rcfilters-filter-user-experience-level-experienced-label": "Erfarne brugere", "rcnotefrom": "Nedenfor er op til '''$1''' {{PLURAL:$5|ændring|ændringer}} siden '''$2''' vist.", "rclistfrom": "Vis nye ændringer startende fra den $3 kl. $2", "rcshowhideminor": "$1 mindre ændringer", @@ -1413,7 +1415,7 @@ "uploaddisabledtext": "Oplægning af filer er deaktiveret.", "php-uploaddisabledtext": "Oplægning af filer er forhindret i PHP. Tjek indstillingen for file_uploads.", "uploadscripted": "Denne fil indeholder HTML eller script-kode, der i visse tilfælde can fejlfortolkes af en browser.", - "uploadscriptednamespace": "Denne SVG-fil indeholder et ulovligt navnerum \"$1\"", + "uploadscriptednamespace": "Denne SVG-fil indeholder et ulovligt navnerum \"<nowiki>$1</nowiki>\"", "uploadinvalidxml": "XML i den uploadede fil kunne ikke tolkes.", "uploadvirus": "Denne fil indeholder en virus! Virusnavn: $1", "uploadjava": "Denne fil er en ZIP-fil, der indeholder en Java .class-fil.\nDet er ikke tilladt at uploade Javafiler, da det kan forÃ¥rsage, at sikkerhedsrestriktioner bliver sprunget over.", @@ -1757,6 +1759,7 @@ "apisandbox-reset": "Ryd", "apisandbox-retry": "Forsøg igen", "apisandbox-examples": "Eksempler", + "apisandbox-dynamic-parameters-add-placeholder": "Parameternavn", "apisandbox-results": "Resultater", "apisandbox-request-url-label": "Forespurgt URL:", "apisandbox-request-time": "Forespørgselstid: {{PLURAL:$1|$1 ms}}", @@ -1769,6 +1772,8 @@ "booksources-search": "Søg", "booksources-text": "Dette er en liste med henvisninger til Internetsider, som sælger nye og brugte bøger. Der kan der ogsÃ¥ findes yderligere informationer om bøgerne. {{SITENAME}} er ikke forbundet med nogen af dem.", "booksources-invalid-isbn": "Det angivne ISBN-nummer ser forkert ud. Tjek med kilden om det er skrevet korrekt.", + "magiclink-tracking-rfc": "Sider, der bruger automatiske RFC-henvisninger‎", + "magiclink-tracking-pmid": "Sider, der bruger automatiske PMID-henvisninger‎", "magiclink-tracking-isbn": "Sider, der bruger automatiske ISBN-henvisninger", "specialloguserlabel": "Udført af:", "speciallogtitlelabel": "MÃ¥l (titel eller {{ns:user}}:brugernavn for bruger):", @@ -1986,6 +1991,7 @@ "modifiedarticleprotection": "ændrede beskyttelsen af \"[[$1]]\"", "unprotectedarticle": "fjernede beskyttelse af \"[[$1]]\"", "movedarticleprotection": "flyttede beskyttelsesindstillinger fra \"[[$2]]\" til \"[[$1]]\"", + "protectedarticle-comment": "{{GENDER:$2|beskyttede}} \"[[$1]]\"", "protect-title": "Ændre beskyttelse af \"$1\"", "protect-title-notallowed": "FÃ¥ vist beskyttelsesniveauet af \"$1\"", "prot_1movedto2": "$1 flyttet til $2", @@ -2095,7 +2101,7 @@ "sp-contributions-newbies-title": "Brugerbidrag fra nye konti", "sp-contributions-blocklog": "blokeringslog", "sp-contributions-suppresslog": "undertrykte brugerbidrag", - "sp-contributions-deleted": "slettede brugerbidrag", + "sp-contributions-deleted": "slettede {{GENDER:$1|brugerbidrag}}", "sp-contributions-uploads": "uploads", "sp-contributions-logs": "loglister", "sp-contributions-talk": "diskussion", @@ -2106,6 +2112,7 @@ "sp-contributions-username": "IP-adresse eller brugernavn:", "sp-contributions-toponly": "Vis kun redigeringer, der er aktuelle versioner", "sp-contributions-newonly": "Vis kun redigeringer, der er sideoprettelser", + "sp-contributions-hideminor": "Skjul mindre ændringer", "sp-contributions-submit": "Søg", "whatlinkshere": "Hvad henviser hertil", "whatlinkshere-title": "Sider der linker til \"$1\"", @@ -2157,6 +2164,7 @@ "ipb-unblock": "Frigive IP-adresse/bruger", "ipb-blocklist": "Vis alle blokeringer som er i kraft", "ipb-blocklist-contribs": "Bidrag fra {{GENDER:$1|$1}}", + "ipb-blocklist-duration-left": "$1 tilbage", "unblockip": "Ophæv blokering af bruger", "unblockiptext": "Brug formularen herunder for at gendanne skriveadgangen for en tidligere blokeret IP-adresse eller bruger.", "ipusubmit": "Ophæv blokeringen", @@ -2255,6 +2263,7 @@ "movenotallowedfile": "Du har ikke tilladelse til at flytte filer.", "cant-move-user-page": "Du har ikke tilladelse til at flytte brugersider (bortset fra undersider).", "cant-move-to-user-page": "Du har ikke tilladelse til at flytte brugersider (bortset fra til brugerundersider).", + "namespace-nosubpages": "Navnerummet \"$1\" tillader ikke undersider.", "newtitle": "Ny titel:", "move-watch": "OvervÃ¥g siden", "movepagebtn": "Flyt side", @@ -2337,6 +2346,7 @@ "thumbnail-temp-create": "Kunne ikke oprette midlertidig miniaturefil", "thumbnail-dest-create": "Kunne ikke gemme miniaturebillede til destinationen", "thumbnail_invalid_params": "Ugyldige parametre for miniaturebillede", + "thumbnail_toobigimagearea": "Fil med mÃ¥l større end $1", "thumbnail_dest_directory": "Kataloget kan ikke oprettes.", "thumbnail_image-type": "Billedtypen understøttes ikke", "thumbnail_gd-library": "Ufuldstændig konfiguration af GD-biblioteket: funktionen $1 mangler", @@ -2443,6 +2453,7 @@ "tooltip-ca-nstab-category": "Se kategorisiden", "tooltip-minoredit": "Marker dette som en mindre ændring", "tooltip-save": "Gem dine ændringer", + "tooltip-publish": "Offentliggør dine ændringer", "tooltip-preview": "ForhÃ¥ndsvis dine ændringer, brug venligst denne funktion inden du gemmer!", "tooltip-diff": "Vis hvilke ændringer du har lavet i teksten.", "tooltip-compareselectedversions": "Se forskellene imellem de to valgte versioner af denne side.", @@ -2534,6 +2545,7 @@ "patrol-log-header": "Patruljerede versioner.", "log-show-hide-patrol": "$1 patruljeringslog", "confirm-markpatrolled-button": "OK", + "confirm-markpatrolled-top": "Marker version $3 af $2 som patruljeret?", "deletedrevision": "Slettede gammel version $1", "filedeleteerror-short": "Fejl under sletning af fil: $1", "filedeleteerror-long": "Der opstod en fejl under sletningen af filen:\n\n$1", @@ -2785,6 +2797,7 @@ "exif-compression-6": "JPEG (gammel)", "exif-copyrighted-true": "Ophavsretligt beskyttet", "exif-copyrighted-false": "Status for ophavsret er ikke angivet", + "exif-photometricinterpretation-1": "Sort-hvid (sort er 0)", "exif-unknowndate": "Ukendt dato", "exif-orientation-1": "Normal", "exif-orientation-2": "Horisontalt spejlet", @@ -3123,7 +3136,7 @@ "tags-actions-header": "Handlinger", "tags-active-yes": "Ja", "tags-active-no": "Nej", - "tags-source-extension": "Defineret af en tilføjelse", + "tags-source-extension": "Defineret af programmellet", "tags-source-none": "Anvendes ikke længere", "tags-edit": "redigér", "tags-delete": "slet", @@ -3222,7 +3235,7 @@ "logentry-upload-overwrite": "$1 {{GENDER:$2|lagde}} en ny udgave af $3 op", "logentry-upload-revert": "$1 {{GENDER:$2|lagde}} $3 op", "rightsnone": "(-)", - "revdelete-summary": "redigeringsbeskrivelse", + "rightslogentry-temporary-group": "$1 (midlertidig, indtil $2)", "feedback-adding": "Tilføjer kommentar til side...", "feedback-back": "Tilbage", "feedback-bugcheck": "Skønt! Men tjek venligst, at det ikke er en af de [$1 kendte fejl].", @@ -3241,44 +3254,12 @@ "feedback-thanks-title": "Tak!", "searchsuggest-search": "Søg pÃ¥ {{SITENAME}}", "searchsuggest-containing": "indeholder...", - "api-error-badaccess-groups": "Du har ikke tilladelse til at overføre filer til denne wiki.", "api-error-badtoken": "Intern fejl: ugyldigt mærke.", - "api-error-copyuploaddisabled": "At lægge filer op via hjemmesideadresser er slÃ¥et fra pÃ¥ denne server.", - "api-error-duplicate": "Der er allerede {{PLURAL:$1|en anden fil|nogle andre filer}} med samme indhold pÃ¥ webstedet.", - "api-error-duplicate-archive": "Der var allerede {{PLURAL:$1|en anden fil|nogle andre filer}} med samme indhold pÃ¥ webstedet, men {{PLURAL:$1|den|de}} blev slettet.", - "api-error-empty-file": "Den fil du indsendte var tom.", "api-error-emptypage": "Det er ikke tilladt at oprette nye, tomme sider.", - "api-error-fetchfileerror": "Intern fejl: noget gik galt under hentningen af filen.", - "api-error-fileexists-forbidden": "En fil med navnet \"$1\" findes allerede, og den kan ikke overskrives.", - "api-error-fileexists-shared-forbidden": "En fil med navnet \"$1\" eksisterer allerede i det delte filsystem og kan ikke overskrives.", - "api-error-file-too-large": "Den fil du indsendte var for stor.", - "api-error-filename-tooshort": "Filnavnet er for kort.", - "api-error-filetype-banned": "Denne type fil er ikke tilladt.", - "api-error-filetype-banned-type": "$1 {{PLURAL:$4|er ikke en tilladt filtype|er ikke tilladte filtyper}}. Tilladt {{PLURAL:$3|filtype er|filtyper er}} $2.", - "api-error-filetype-missing": "Filen mangler en filendelse.", - "api-error-hookaborted": "Ændringen, du forsøgte at gøre, blev afbrudt af en udvidelsestilkobling.", - "api-error-http": "Intern fejl: Kan ikke forbinde til serveren.", - "api-error-illegal-filename": "Filnavnet er ikke tilladt.", - "api-error-internal-error": "Intern fejl: noget gik galt med behandlingen af din filoplægning pÃ¥ wikien.", - "api-error-invalid-file-key": "Intern fejl: filen blev ikke fundet pÃ¥ den midlertidige lagerplads.", - "api-error-missingparam": "Intern fejl: manglende parametre i anmodning.", - "api-error-missingresult": "Intern fejl: kunne ikke afgøre om kopieringen lykkedes.", - "api-error-mustbeloggedin": "Du skal være logget pÃ¥ for at kunne lægge filer op.", - "api-error-mustbeposted": "Intern fejl: anmodningen kræver brug af HTTP POST.", - "api-error-noimageinfo": "Oplægningen lykkedes, men serveren gav os ikke nogen oplysninger om filen.", - "api-error-nomodule": "Intern fejl: intet modul til oplægning indstillet.", - "api-error-ok-but-empty": "Intern fejl: intet svar fra serveren.", - "api-error-overwrite": "Det er ikke tilladt at overskrive en eksisterende fil.", - "api-error-stashfailed": "Intern fejl: serveren kunne ikke gemme midlertidig fil.", "api-error-publishfailed": "Intern fejl: serveren kunne ikke udgive midlertidig fil.", - "api-error-timeout": "Serveren svarede ikke tilbage inden for den forventede tid.", - "api-error-unclassified": "En ukendt fejl opstod.", - "api-error-unknown-code": "Ukendt fejl: \"$1\"", - "api-error-unknown-error": "Intern fejl: noget gik galt under forsøget pÃ¥ at lægge din fil op.", - "api-error-unknown-warning": "Ukendt advarsel: $1", + "api-error-stashfailed": "Intern fejl: serveren kunne ikke gemme midlertidig fil.", + "api-error-unknown-warning": "Ukendt advarsel: \"$1\".", "api-error-unknownerror": "Ukendt fejl: \"$1\".", - "api-error-uploaddisabled": "Oplægning af filer er slÃ¥et fra pÃ¥ denne wiki.", - "api-error-verification-error": "Denne fil kan være beskadiget, eller den har mÃ¥ske en forkert filendelse.", "duration-seconds": "$1 {{PLURAL:$1|sekund|sekunder}}", "duration-minutes": "$1 {{PLURAL:$1|minut|minutter}}", "duration-hours": "$1 {{PLURAL:$1|time|timer}}", @@ -3315,13 +3296,15 @@ "expand_templates_generate_xml": "Vis analysetræ som XML", "expand_templates_generate_rawhtml": "Vis rÃ¥ HTML", "expand_templates_preview": "ForhÃ¥ndsvisning", - "pagelanguage": "Valg af sidesprog", + "pagelanguage": "Ændr sidens sprog", "pagelang-name": "Side", "pagelang-language": "Sprog", "pagelang-use-default": "Brug standardsprog", "pagelang-select-lang": "Vælg sprog", + "pagelang-reason": "Begrundelse", "right-pagelang": "Ændre sidesproget", "mediastatistics": "Mediestatistik", + "mediastatistics-nbytes": "{{PLURAL:$1|$1 byte|$1 bytes}} ($2; $3%)", "mediastatistics-table-mimetype": "MIME-type", "mediastatistics-table-extensions": "Mulige filendelser", "mediastatistics-table-count": "Antal filer", @@ -3366,6 +3349,7 @@ "mw-widgets-dateinput-placeholder-month": "ÅÅÅÅ-MM", "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...", "randomrootpage": "Tilfældig stamside", "log-action-filter-block": "Blokeringstype:", "log-action-filter-delete": "Sletningstype:", @@ -3391,5 +3375,8 @@ "log-action-filter-protect-modify": "Ændring af beskyttelse", "log-action-filter-protect-unprotect": "Fjernede beskyttelse", "log-action-filter-protect-move_prot": "Flyttede beskyttelse", - "authmanager-provider-temporarypassword": "Midlertidig adgangskode" + "authmanager-provider-temporarypassword": "Midlertidig adgangskode", + "cannotauth-not-allowed-title": "Adgang nægtet", + "cannotauth-not-allowed": "Du har ikke tilladelse til at bruge denne side", + "credentialsform-account": "Kontonavn:" } diff --git a/languages/i18n/de.json b/languages/i18n/de.json index fe8c922835..c41db4a895 100644 --- a/languages/i18n/de.json +++ b/languages/i18n/de.json @@ -496,19 +496,12 @@ "login": "Anmelden", "login-security": "Verifiziere deine Identität", "nav-login-createaccount": "Anmelden / Benutzerkonto erstellen", - "userlogin": "Anmelden / Benutzerkonto anlegen", - "userloginnocreate": "Anmelden", "logout": "Abmelden", "userlogout": "Abmelden", "notloggedin": "Nicht angemeldet", "userlogin-noaccount": "Du hast noch kein Benutzerkonto?", "userlogin-joinproject": "Bei {{SITENAME}} anmelden", - "nologin": "Du hast kein Benutzerkonto? $1.", - "nologinlink": "Neues Benutzerkonto anlegen", "createaccount": "Benutzerkonto anlegen", - "gotaccount": "Du hast bereits ein Benutzerkonto? $1.", - "gotaccountlink": "Anmelden", - "userlogin-resetlink": "Die Anmeldedaten vergessen?", "userlogin-resetpassword-link": "Passwort vergessen?", "userlogin-helplink2": "Hilfe beim Anmelden", "userlogin-loggedin": "Du bist bereits als {{GENDER:$1|$1}} angemeldet.\nBenutze das unten stehende Formular, um dich unter einem anderen Benutzernamen anzumelden.", @@ -521,7 +514,6 @@ "createaccountmail": "Ein temporäres Zufallspasswort verwenden und an die angegebene E-Mail-Adresse versenden", "createaccountmail-help": "Kann verwendet werden, um für eine andere Person ein Benutzerkonto zu erstellen, ohne das Passwort zu erfahren.", "createacct-realname": "Bürgerlicher Name (optional)", - "createaccountreason": "Grund:", "createacct-reason": "Begründung", "createacct-reason-ph": "Warum erstellst du ein anderes Benutzerkonto?", "createacct-reason-help": "Im Neuanmeldungs-Logbuch angezeigte Nachricht", @@ -799,8 +791,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 <code>$1</code> vom aktuellen Inhaltsmodell der Seite <code>$2</code> abweicht.", "recreate-moveddeleted-warn": "<strong>Achtung: Du erstellst eine Seite, die bereits früher gelöscht wurde.</strong>\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. Zur Information folgt das Lösch- und Verschiebungs-Logbuch dieser Seite.", - "moveddeleted-notice-recent": "Leider wurde diese Seite kürzlich gelöscht (innerhalb der letzten 24 Stunden).\nZur Information wird das Lösch- und Verschiebungs-Logbuch für die Seite unten angezeigt.", + "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.", "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.", @@ -1028,6 +1020,7 @@ "search-interwiki-caption": "Schwesterprojekte", "search-interwiki-default": "Ergebnisse von $1:", "search-interwiki-more": "(weitere)", + "search-interwiki-more-results": "Weitere Ergebnisse", "search-relatedarticle": "Verwandte", "searchrelated": "verwandt", "searchall": "alle", @@ -1118,6 +1111,7 @@ "username": "{{GENDER:$1|Benutzername}}:", "prefs-memberingroups": "{{GENDER:$2|Mitglied}} der {{PLURAL:$1|Benutzergruppe|Benutzergruppen}}:", "prefs-memberingroups-type": "$2", + "group-membership-link-with-expiry": "$1 (bis $2)", "prefs-registration": "Anmeldezeitpunkt:", "prefs-registration-date-time": "$2, $3 Uhr", "yourrealname": "Bürgerlicher Name:", @@ -1163,18 +1157,27 @@ "editusergroup": "Benutzergruppen laden", "editinguser": "Ändere Benutzerrechte {{GENDER:$1|des Benutzers|der Benutzerin}} <strong>[[User:$1|$1]]</strong> $2", "viewinguserrights": "Benutzerrechte {{GENDER:$1|des Benutzers|der Benutzerin}} <strong>[[User:$1|$1]]</strong> $2", - "userrights-editusergroup": "Benutzer-Gruppenzugehörigkeit bearbeiten", - "userrights-viewusergroup": "Benutzergruppen ansehen", + "userrights-editusergroup": "Gruppenzugehörigkeit {{GENDER:$1|des Benutzers|der Benutzerin}} bearbeiten", + "userrights-viewusergroup": "{{GENDER:$1|Benutzergruppen}} ansehen", "saveusergroups": "{{GENDER:$1|Gruppenzugehörigkeit}} ändern", "userrights-groupsmember": "Mitglied von:", "userrights-groupsmember-auto": "Automatisch Mitglied von:", "userrights-groupsmember-type": "$2", - "userrights-groups-help": "Du kannst die Gruppenzugehörigkeit {{GENDER:$1|dieses Benutzers|dieser Benutzerin}} ändern:\n* Ein markiertes Kästchen bedeutet, dass {{GENDER:$1|der Benutzer|die Benutzerin}} Mitglied dieser Gruppe ist.\n* Ein nichtmarkiertes Kästchen bedeutet, dass {{GENDER:$1|der Benutzer|die Benutzerin}} nicht Mitglied dieser Gruppe ist.\n* Ein * bedeutet, dass du das Benutzerrecht nach Erteilung nicht wieder zurücknehmen kannst (oder umgekehrt).", + "userrights-groups-help": "Du kannst die Gruppenzugehörigkeit {{GENDER:$1|dieses Benutzers|dieser Benutzerin}} ändern:\n* Ein markiertes Kästchen bedeutet, dass {{GENDER:$1|der Benutzer|die Benutzerin}} Mitglied dieser Gruppe ist.\n* Ein nicht markiertes Kästchen bedeutet, dass {{GENDER:$1|der Benutzer|die Benutzerin}} nicht Mitglied dieser Gruppe ist.\n* Ein * bedeutet, dass du das Benutzerrecht nach Erteilung nicht wieder zurücknehmen kannst (oder umgekehrt).\n* Ein # bedeutet, dass du den Zeitpunkt des Ablaufs dieser Gruppe nur nach hinten verschieben kannst. Du kannst ihn nicht vorverlegen.", "userrights-reason": "Grund:", "userrights-no-interwiki": "Du hast nicht die erforderliche Berechtigung, um Benutzerrechte in anderen Wikis ändern zu können.", "userrights-nodatabase": "Die Datenbank $1 ist nicht vorhanden oder nicht lokal.", "userrights-changeable-col": "Gruppenzugehörigkeit, die du ändern kannst", "userrights-unchangeable-col": "Gruppenzugehörigkeit, die du nicht ändern kannst", + "userrights-expiry-current": "Ablauf: $1", + "userrights-expiry-none": "Kein Ablauf", + "userrights-expiry": "Ablauf:", + "userrights-expiry-existing": "Vorhandener Ablauf: $3, $2", + "userrights-expiry-othertime": "Andere Zeit:", + "userrights-expiry-options": "1 Tag:1 day,1 Woche:1 week,1 Monat:1 month,3 Monate:3 months,6 Monate:6 months,1 Jahr:1 year", + "userrights-invalid-expiry": "Die Ablaufzeit für die Gruppe „$1“ ist ungültig.", + "userrights-expiry-in-past": "Die Ablaufzeit für die Gruppe „$1“ liegt in der Vergangenheit.", + "userrights-cannot-shorten-expiry": "Du kannst den Ablauf der Gruppe „$1“ nicht vorverlegen. Nur Benutzer mit der Berechtigung, diese Gruppe hinzuzufügen und zu entfernen, können Ablaufzeiten vorverlegen.", "userrights-conflict": "Benutzerrechteänderungskonflikt! Bitte überprüfe und bestätige deine Änderungen.", "group": "Gruppe:", "group-user": "Benutzer", @@ -1376,22 +1379,61 @@ "recentchanges-legend-plusminus": "''(±123)''", "recentchanges-submit": "Anzeigen", "rcfilters-activefilters": "Aktive Filter", + "rcfilters-restore-default-filters": "Standardfilter wiederherstellen", + "rcfilters-clear-all-filters": "Alle Filter löschen", "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-feedbacklink": "Rückmeldung zu den neuen (Beta-)Filtern hinterlassen", + "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-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": "Der Filter „Unangemeldet“ ist inaktiv, da sein Effekt durch {{PLURAL:$2|den|die}} folgenden Erfahrungsfilter aufgehoben wird, {{PLURAL:$2|der nur angemeldete Benutzer finden kann|die nur angemeldete Benutzer finden können}}: $1", "rcfilters-filtergroup-authorship": "Bearbeitungs-Autorenschaft", "rcfilters-filter-editsbyself-label": "Deine eigenen Bearbeitungen", "rcfilters-filter-editsbyself-description": "Bearbeitungen von dir.", "rcfilters-filter-editsbyother-label": "Bearbeitungen von anderen", - "rcfilters-filter-editsbyother-description": "Bearbeitungen von anderen Benutzern (nicht von dir)", - "rcfilters-filtergroup-userExpLevel": "Niveau der Benutzererfahrung", - "rcfilters-filter-userExpLevel-newcomer-label": "Neulinge", - "rcfilters-filter-userExpLevel-newcomer-description": "Sehr neue Autoren: Weniger als 10 Bearbeitungen und eine Aktivität von weniger als 4 Tagen.", - "rcfilters-filter-userExpLevel-learner-label": "Anfänger", - "rcfilters-filter-userExpLevel-learner-description": "Eine Aktivität von mehreren Tagen und mehr Bearbeitungen als „Neulinge“, aber weniger als „Erfahrene Benutzer“.", - "rcfilters-filter-userExpLevel-experienced-label": "Erfahrene Benutzer", - "rcfilters-filter-userExpLevel-experienced-description": "Eine Aktivität von mehr als 30 Tagen und mehr als 500 Bearbeitungen.", + "rcfilters-filter-editsbyother-description": "Bearbeitungen von anderen Benutzern (nicht von dir).", + "rcfilters-filtergroup-userExpLevel": "Erfahrungsniveau (nur für angemeldete Benutzer)", + "rcfilters-filtergroup-user-experience-level-conflicts-unregistered": "Dieser Filter ist inaktiv, da er nur angemeldete Benutzer findet, so dass der Filter „Unangemeldet“ seinen Effekt aufhebt.", + "rcfilters-filtergroup-user-experience-level-conflicts-unregistered-global": "Der Filter „Unangemeldet“ befindet sich in Konflikt mit einem oder mehreren Erfahrungsfiltern. Erfahrungsfilter finden nur angemeldete Benutzer. Die kollidierenden Filter sind oben als inaktiv markiert.", + "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-learner-label": "Anfänger", + "rcfilters-filter-user-experience-level-learner-description": "Eine Aktivität von mehreren Tagen und mehr Bearbeitungen als „Neulinge“, aber weniger als „Erfahrene Benutzer“.", + "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-filtergroup-automated": "Automatisierte Beiträge", + "rcfilters-filter-bots-label": "Bot", + "rcfilters-filter-bots-description": "Bearbeitungen, die von automatisierten Werkzeugen durchgeführt wurden.", + "rcfilters-filter-humans-label": "Mensch (kein Bot)", + "rcfilters-filter-humans-description": "Bearbeitungen, die von menschlichen Autoren durchgeführt wurden.", + "rcfilters-filtergroup-reviewstatus": "Überprüfungsstatus", + "rcfilters-filter-patrolled-label": "Kontrolliert", + "rcfilters-filter-patrolled-description": "Bearbeitungen, die als kontrolliert markiert sind.", + "rcfilters-filter-unpatrolled-label": "Unkontrolliert", + "rcfilters-filter-unpatrolled-description": "Bearbeitungen, die nicht als kontrolliert markiert sind.", + "rcfilters-filtergroup-significance": "Bedeutung", + "rcfilters-filter-minor-label": "Kleine Änderungen", + "rcfilters-filter-minor-description": "Bearbeitungen, die der Autor als geringfügig markiert hat.", + "rcfilters-filter-major-label": "Nicht-kleine Änderungen", + "rcfilters-filter-major-description": "Bearbeitungen, die nicht als geringfügig markiert wurden.", + "rcfilters-filtergroup-changetype": "Typ der Änderung", + "rcfilters-filter-pageedits-label": "Seitenbearbeitungen", + "rcfilters-filter-pageedits-description": "Änderungen am Wikiinhalt oder an Diskussionen, Kategoriebeschreibungen …", + "rcfilters-filter-newpages-label": "Seitenerstellungen", + "rcfilters-filter-newpages-description": "Bearbeitungen, die zu neuen Seiten führen.", + "rcfilters-filter-categorization-label": "Kategorieänderungen", + "rcfilters-filter-categorization-description": "Einträge von Seiten, die zu Kategorien hinzugefügt oder aus ihnen entfernt wurden.", + "rcfilters-filter-logactions-label": "Protokollierte Aktionen", + "rcfilters-filter-logactions-description": "Administrative Aktionen, Benutzerkontenerstellungen, Seitenlöschungen, hochgeladene Dateien …", "rcnotefrom": "Angezeigt {{PLURAL:$5|wird die Änderung|werden die Änderungen}} seit <strong>$3, $4</strong> (max. <strong>$1</strong> Einträge).", "rclistfrom": "Nur Änderungen seit $3, $2 Uhr zeigen.", "rcshowhideminor": "Kleine Änderungen $1", @@ -1526,7 +1568,7 @@ "uploaded-setting-handler-svg": "SVG, das das Attribut „handler“ mit Remote/Daten/Skript festlegt, ist gesperrt. <code>$1=\"$2\"</code> in der hochgeladenen SVG-Datei gefunden.", "uploaded-remote-url-svg": "SVG, das ein beliebiges Style-Attribut mit einer Remote-URL festlegt, ist gesperrt. <code>$1=\"$2\"</code> in der hochgeladenen SVG-Datei gefunden.", "uploaded-image-filter-svg": "Bildfilter mit der URL <code><$1 $2=\"$3\"></code> in der hochgeladenen SVG-Datei gefunden.", - "uploadscriptednamespace": "Diese SVG-Datei enthält den ungültigen Namensraum „$1“.", + "uploadscriptednamespace": "Diese SVG-Datei enthält den ungültigen Namensraum „<nowiki>$1</nowiki>“.", "uploadinvalidxml": "Das XML in der hochgeladenen Datei konnte nicht geparst werden.", "uploadvirus": "Diese Datei enthält einen Virus! Details: $1", "uploadjava": "Dies ist eine ZIP-Datei, die ein CLASS-Datei von Java enthält.\nDas Hochladen von Java-Dateien ist nicht gestattet, da sie die Umgehung von Sicherheitseinschränkungen ermöglichen könnten.", @@ -1903,8 +1945,10 @@ "apisandbox-sending-request": "Sende API-Anfrage …", "apisandbox-loading-results": "Rufe API-Ergebnisse ab …", "apisandbox-results-error": "Beim Laden der API-Anfragenantwort ist ein Fehler aufgetreten: $1.", - "apisandbox-request-params-json": "JSON-Parameter:", + "apisandbox-request-selectformat-label": "Anfragedaten anzeigen als:", + "apisandbox-request-format-url-label": "URL-Abfrage-Zeichenfolge", "apisandbox-request-url-label": "Anforderungs-URL:", + "apisandbox-request-json-label": "Anfragen-JSON:", "apisandbox-request-time": "Dauer der Anfrage: {{PLURAL:$1|Eine Millisekunde|$1 Millisekunden}}", "apisandbox-results-fixtoken": "Token korrigieren und erneut übertragen", "apisandbox-results-fixtoken-fail": "Der „$1“-Token konnte nicht abgerufen werden.", @@ -2046,7 +2090,7 @@ "emailccsubject": "Kopie deiner Nachricht an $1: $2", "emailsent": "E-Mail verschickt", "emailsenttext": "Deine E-Mail wurde verschickt.", - "emailuserfooter": "Diese E-Mail wurde von „$1“ an „{{GENDER:$2|$2}}“ durch die Funktion „{{int:emailuser}}“ bei {{SITENAME}} {{GENDER:$1|gesendet}}. {{GENDER:$2|Deine}} E-Mail wird direkt an {{GENDER:$1|den Originalabsender|die Originalabsenderin}} gesendet mit der Preisgabe {{GENDER:$2|deiner}} E-Mail-Adresse an {{GENDER:$1|ihn|sie}}.", + "emailuserfooter": "Diese E-Mail wurde von „$1“ an „{{GENDER:$2|$2}}“ durch die Funktion „{{int:emailuser}}“ bei {{SITENAME}} {{GENDER:$1|gesendet}}. Falls {{GENDER:$2|du}} auf diese E-Mail antwortest, wird sie direkt an {{GENDER:$1|den Originalabsender|die Originalabsenderin}} gesendet. Dabei erfährt {{GENDER:$1|er|sie}} {{GENDER:$2|deine}} E-Mail-Adresse.", "usermessage-summary": "Systemnachricht gespeichert.", "usermessage-editor": "System-Messenger", "usermessage-template": "MediaWiki:Benutzernachricht", @@ -2141,11 +2185,11 @@ "rollback-missingparam": "In der Anfrage fehlen erforderliche Parameter.", "rollback-missingrevision": "Die Versionsdaten konnten nicht geladen werden.", "cantrollback": "Die Änderung kann nicht zurückgesetzt werden, da es keine früheren Autoren gibt.", - "alreadyrolled": "Das Zurücksetzen der Änderungen von [[User:$2|$2]] ([[User talk:$2|Diskussion]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]]) an [[:$1]] ist gescheitert, da in der Zwischenzeit ein anderer Benutzer die Seite geändert hat.\n\nDie letzte Änderung stammt von [[User:$3|$3]] ([[User talk:$3|Diskussion]]{{int:pipe-separator}}[[Special:Contributions/$3|{{int:contribslink}}]]).", + "alreadyrolled": "Das Zurücksetzen der Änderungen von [[User:$2|$2]] ([[User talk:$2|Diskussion]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]]) an [[:$1]] ist gescheitert, da bereits ein anderer Benutzer die Seite geändert hat.\n\nDie letzte Änderung stammt von [[User:$3|$3]] ([[User talk:$3|Diskussion]]{{int:pipe-separator}}[[Special:Contributions/$3|{{int:contribslink}}]]).", "editcomment": "Die Änderungszusammenfassung lautet: <em>$1</em>.", "revertpage": "Änderungen von [[Special:Contributions/$2|$2]] ([[User talk:$2|Diskussion]]) wurden auf die letzte Version von [[User:$1|$1]] zurückgesetzt", "revertpage-nouser": "Änderungen von einem versteckten Benutzer rückgängig gemacht und letzte Version von {{GENDER:$1|[[User:$1|$1]]}} wiederhergestellt", - "rollback-success": "Die Änderungen von $1 wurden rückgängig gemacht und die letzte Version von $2 wurde wiederhergestellt.", + "rollback-success": "Die Änderungen von {{GENDER:$3|$1}} wurden rückgängig gemacht und die letzte Version von {{GENDER:$4|$2}} wurde wiederhergestellt.", "rollback-success-notify": "Bearbeitungen von $1 rückgängig gemacht;\nzurückgeändert auf die letzte Version von $2. [$3 Änderungen zeigen]", "sessionfailure-title": "Sitzungsfehler", "sessionfailure": "Es gab ein Problem bei der Übertragung deiner Benutzerdaten.\nDiese Aktion wurde daher sicherheitshalber abgebrochen, um eine falsche Zuordnung deiner Änderungen zu einem anderen Benutzer zu verhindern.\nBitte gehe zurück zur vorherigen Seite, lade sie erneut und versuche, den Vorgang erneut auszuführen.", @@ -2271,7 +2315,7 @@ "tooltip-whatlinkshere-invert": "Markiere dieses Kontrollkästchen, um Links von Seiten innerhalb des ausgewählten Namensraums auszublenden.", "namespace_association": "Zugehöriger Namensraum", "tooltip-namespace_association": "Dieses Auswahlfeld anklicken, um den deiner Auswahl zugehörigen Diskussionsnamensraum, oder im umgekehrten Fall, den zugehörigen Namensraum, mit einzubeziehen", - "blanknamespace": "(Seiten)", + "blanknamespace": "(Artikel)", "contributions": "{{GENDER:$1|Benutzerbeiträge}}", "contributions-title": "Benutzerbeiträge von „$1“", "mycontris": "Beiträge", @@ -2727,7 +2771,7 @@ "pageinfo-few-visiting-watchers": "Es könnte einen beobachtenden Benutzer geben oder nicht, der die letzten Bearbeitungen besucht hat", "pageinfo-redirects-name": "Anzahl der Weiterleitungen zu dieser Seite", "pageinfo-redirects-value": "$1", - "pageinfo-subpages-name": "Unterseiten dieser Seite", + "pageinfo-subpages-name": "Anzahl der Unterseiten dieser Seite", "pageinfo-subpages-value": "$1 ($2 {{PLURAL:$2|Weiterleitung|Weiterleitungen}}; $3 {{PLURAL:$3|Unterseite|Unterseiten}})", "pageinfo-firstuser": "Seitenersteller", "pageinfo-firsttime": "Datum der Seitenerstellung", @@ -3598,7 +3642,7 @@ "logentry-tag-update-revision": "$1 {{GENDER:$2|aktualisierte}} Markierungen der Version $4 der Seite $3 ($6 {{PLURAL:$7|hinzugefügt}}; $8 {{PLURAL:$9|entfernt}})", "logentry-tag-update-logentry": "$1 {{GENDER:$2|aktualisierte}} Markierungen des Logbucheintrags $5 der Seite $3 ($6 {{PLURAL:$7|hinzugefügt}}; $8 {{PLURAL:$9|entfernt}})", "rightsnone": "(–)", - "revdelete-summary": "Zusammenfassungskommentar", + "rightslogentry-temporary-group": "$1 (temporär, bis $2)", "feedback-adding": "Rückmeldung wird zur Seite hinzugefügt …", "feedback-back": "Zurück", "feedback-bugcheck": "Super! Bitte überprüfe noch, ob es sich hierbei nicht um einen bereits [$1 bekannten Fehler] handelt.", @@ -3623,56 +3667,12 @@ "feedback-useragent": "User Agent:", "searchsuggest-search": "{{SITENAME}} durchsuchen", "searchsuggest-containing": "enthält …", - "api-error-autoblocked": "Deine IP-Adresse wurde automatisch gesperrt, da sie von einem gesperrten Benutzer verwendet wurde.", - "api-error-badaccess-groups": "Du hast nicht die Berechtigung Dateien in dieses Wiki hochzuladen.", "api-error-badtoken": "Interner Fehler: Der Token ist fehlerhaft.", - "api-error-blocked": "Du wurdest für das Bearbeiten gesperrt.", - "api-error-copyuploaddisabled": "Das Hochladen via URL wurde auf diesem Server deaktiviert.", - "api-error-duplicate": "Es gibt im Wiki bereits {{PLURAL:$1|eine andere Datei|mehrere andere Dateien}} gleichen Inhalts.", - "api-error-duplicate-archive": "Es {{PLURAL:$1|war bereits eine andere Datei|waren bereits andere Dateien}} gleichen Inhalts vorhanden. Sie {{PLURAL:$1|wurde|wurden}} allerdings gelöscht.", - "api-error-empty-file": "Die hochgeladene Datei war leer.", "api-error-emptypage": "Es ist nicht erlaubt, neue leere Seiten zu erstellen.", - "api-error-fetchfileerror": "Interner Fehler: Beim Abrufen der Datei ist ein Fehler aufgetreten.", - "api-error-fileexists-forbidden": "Eine Datei namens „$1“ ist bereits vorhanden und kann nicht überschrieben werden.", - "api-error-fileexists-shared-forbidden": "Eine Datei namens „$1“ ist bereits im gemeinsamen Dateirepositorium vorhanden und kann daher nicht überschrieben werden.", - "api-error-file-too-large": "Die hochgeladene Datei war zu groß.", - "api-error-filename-tooshort": "Der Dateiname ist zu kurz.", - "api-error-filetype-banned": "Diese Dateiendung ist gesperrt.", - "api-error-filetype-banned-type": "$1 {{PLURAL:$4|ist ein nicht zulässiger Dateityp|sind nicht zulässige Dateitypen}}. {{PLURAL:$3|Ein zulässiger Dateityp ist|Zulässige Dateitypen sind}} $2.", - "api-error-filetype-missing": "Die hochzuladende Datei hat keine Dateiendung.", - "api-error-hookaborted": "Der Versuch, die Änderung durchzuführen, wurde von einer Parsererweiterung (API) abgebrochen.", - "api-error-http": "Interner Fehler: Es konnte keine Verbindung zum Server hergestellt werden.", - "api-error-illegal-filename": "Der Dateiname ist nicht erlaubt.", - "api-error-internal-error": "Interner Fehler: Ein unbekannter Fehler ist beim Hochladen der Datei ins Wiki aufgetreten.", - "api-error-invalid-file-key": "Interner Fehler: Die Datei wurde nicht im temporären Speicher gefunden.", - "api-error-missingparam": "Interner Fehler: Der Anfrage fehlen Parameter.", - "api-error-missingresult": "Interner Fehler: Es konnte nicht festgestellt werden, ob das Kopieren erfolgreich war.", - "api-error-mustbeloggedin": "Um Dateien hochladen zu können, musst du angemeldet sein.", - "api-error-mustbeposted": "Es liegt ein Programmfehler vor (es wird die falsche HTTP-Methode verwendet).", - "api-error-noimageinfo": "Das Hochladen war erfolgreich, aber der Server kann keine Informationen zur Datei anzeigen.", - "api-error-nomodule": "Interner Fehler: Es wurde kein Modul zum Hochladen festgelegt.", - "api-error-ok-but-empty": "Interner Fehler: Der Server reagiert nicht.", - "api-error-overwrite": "Das Überschreiben einer vorhandenen Datei ist nicht erlaubt.", - "api-error-ratelimited": "Du versuchst, mehr Dateien in kurzer Zeit hochzuladen, als dieses Wiki erlaubt.\nBitte versuche es in einigen Minuten erneut.", - "api-error-stashfailed": "Interner Fehler: Der Server konnte keine temporäre Datei speichern.", "api-error-publishfailed": "Interner Fehler: Der Server konnte die temporäre Datei nicht veröffentlichen.", - "api-error-stasherror": "Beim Hochladen der Datei gab es einen Fehler.", - "api-error-stashedfilenotfound": "Die vorab gespeicherte Datei wurde beim Versuch, sie vom Speicher hochzuladen, nicht gefunden.", - "api-error-stashpathinvalid": "Der Pfad, unter dem die gespeicherte Datei gefunden werden sollte, war ungültig.", - "api-error-stashfilestorage": "Beim Speichern der Datei in den Speicher gab es einen Fehler.", - "api-error-stashzerolength": "Der Server konnte die Datei nicht speichern, da sie eine Länge von Null hat.", - "api-error-stashnotloggedin": "Du musst angemeldet sein, um Dateien in den Hochladespeicher zu speichern.", - "api-error-stashwrongowner": "Die Datei, auf die du im Speicher zugreifen möchtest, gehört nicht dir.", - "api-error-stashnosuchfilekey": "Der Dateischlüssel, auf den du im Speicher zugreifen möchtest, ist nicht vorhanden.", - "api-error-timeout": "Der Server hat nicht innerhalb der erwarteten Zeit reagiert.", - "api-error-unclassified": "Ein unbekannter Fehler ist aufgetreten.", - "api-error-unknown-code": "Unbekannter Fehler: „$1“", - "api-error-unknown-error": "Interner Fehler: Ein unbekannter Fehler ist beim Hochladen der Datei aufgetreten.", + "api-error-stashfailed": "Interner Fehler: Der Server konnte keine temporäre Datei speichern.", "api-error-unknown-warning": "Unbekannte Warnung: „$1“.", "api-error-unknownerror": "Unbekannter Fehler: „$1“", - "api-error-uploaddisabled": "Das Hochladen ist in diesem Wiki deaktiviert.", - "api-error-verification-error": "Die hochzuladende Datei ist entweder fehlerhaft oder hat keine Dateinamenserweiterung.", - "api-error-was-deleted": "Eine Datei mit diesem Namen wurde kürzlich hochgeladen und anschließend gelöscht.", "duration-seconds": "$1 {{PLURAL:$1|Sekunde|Sekunden}}", "duration-minutes": "$1 {{PLURAL:$1|Minute|Minuten}}", "duration-hours": "$1 {{PLURAL:$1|Stunde|Stunden}}", @@ -3739,7 +3739,7 @@ "mediastatistics-summary": "Statistiken über hochgeladene Dateitypen. Dies beinhaltet nur die aktuellste Version einer Datei. Alte oder gelöschte Dateiversionen sind ausgeschlossen.", "mediastatistics-nfiles": "$1 ($2 %)", "mediastatistics-nbytes": "{{PLURAL:$1|Ein Byte|$1 Bytes}} ($2; $3 %)", - "mediastatistics-bytespertype": "Gesamte Dateigröße für diesen Abschnitt: {{PLURAL:$1|Ein Byte|$1 Bytes}} ($2; $3%).", + "mediastatistics-bytespertype": "Gesamte Dateigröße für diesen Abschnitt: {{PLURAL:$1|Ein Byte|$1 Bytes}} ($2; $3 %).", "mediastatistics-allbytes": "Gesamte Dateigröße für alle Dateien: {{PLURAL:$1|Ein Byte|$1 Bytes}} ($2).", "mediastatistics-table-mimetype": "MIME-Typ", "mediastatistics-table-extensions": "Mögliche Erweiterungen", @@ -3798,6 +3798,7 @@ "mw-widgets-titleinput-description-new-page": "Seite ist noch nicht vorhanden", "mw-widgets-titleinput-description-redirect": "Weiterleitung nach $1", "mw-widgets-categoryselector-add-category-placeholder": "Eine Kategorie hinzufügen …", + "mw-widgets-usersmultiselect-placeholder": "Weitere hinzufügen …", "sessionmanager-tie": "Mehrere Anfrageauthentifikationstypen konnten nicht kombiniert werden: $1.", "sessionprovider-generic": "$1-Sitzungen", "sessionprovider-mediawiki-session-cookiesessionprovider": "cookiebasierten Sitzungen", @@ -3929,7 +3930,7 @@ "usercssispublic": "Bitte beachten: CSS-Unterseiten sollten keine vertraulichen Daten enthalten, da sie von anderen Benutzern eingesehen werden können.", "restrictionsfield-badip": "Ungültige IP-Adresse oder ungültiger IP-Adressbereich: $1", "restrictionsfield-label": "Erlaubte IP-Adressbereiche:", - "restrictionsfield-help": "Eine IP-Adresse oder ein CIDR-Bereich pro Zeile. Um alles zu aktivieren, verwende<br><code>0.0.0.0/0</code><br><code>::/0</code>", + "restrictionsfield-help": "Eine IP-Adresse oder ein CIDR-Bereich pro Zeile. Um alles zu aktivieren, verwende:\n<pre>\n0.0.0.0/0\n::/0\n</pre>", "revid": "Version $1", "pageid": "Seitenkennung $1" } diff --git a/languages/i18n/diq.json b/languages/i18n/diq.json index 17b978134d..a35eef7729 100644 --- a/languages/i18n/diq.json +++ b/languages/i18n/diq.json @@ -28,11 +28,12 @@ "Velg", "1917 Ekim Devrimi", "Gambollar", - "Dılmıc" + "Dılmıc", + "Archaeodontosaurus" ] }, "tog-underline": "Bınê gırey de xete bance:", - "tog-hideminor": "Vurnayışanê şenıkan pela vurnayışanê peyênan de bınımne", + "tog-hideminor": "Vırnayışanê peyênan ra vırnayışanê werdiyan bınımne", "tog-hidepatrolled": "Vurnayışanê qontrol kerdeyan perra vurnayışê peyêni de bınımne", "tog-newpageshidepatrolled": "Pelanê qontrol kerdeyan lista peranê neweyan de bınımne", "tog-hidecategorization": "Pera kategorizasyoni bınımne", @@ -162,17 +163,17 @@ "listingcontinuesabbrev": "dewam...", "index-category": "Perrê rêzıni", "noindex-category": "Perrê bêrêzıni", - "broken-file-category": "Perrê ke gıreyê dosyeyanê ğeletan muhtewa kenê", + "broken-file-category": "Perri be linkanê dosya çewte", "categoryviewer-pagedlinks": "($1) ($2)", "about": "Heqa", "article": "Wesiqe", "newwindow": "(Teqaya newi de abena)", - "cancel": "Peyd kı", + "cancel": "Annuler", "moredotdotdot": "Vêşi...", "morenotlisted": "Na lista qay kemi ya.", "mypage": "Per", - "mytalk": "Vaten", - "anontalk": "Vaten", + "mytalk": "Werênayış", + "anontalk": "Werênayış", "navigation": "Pusula", "and": " u", "qbfind": "Bıvin", @@ -196,6 +197,7 @@ "searcharticle": "Şo", "history": "Tarixê perrer", "history_short": "Veror", + "history_small": "tarix", "updatedmarker": "cı kewtena mına peyêne ra dıme biyo rocane", "printableversion": "Versiyonê çapkerdışi", "permalink": "Gıreyo vınderde", @@ -211,20 +213,20 @@ "delete": "Bestern", "deletethispage": "Na perrer bestern", "undeletethispage": "Na perer mebesterne", - "undelete_short": "{{PLURAL:$1|Yew vurnayışi|$1 Vurnayışan}} mestere", + "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ıvurne", - "protectthispage": "Ena perer bıpawe", + "protectthispage": "Ena perre şeveknê", "unprotect": "Starnayışi bıvurne", - "unprotectthispage": "Starnayışê ena perer bıvurne", + "unprotectthispage": "Şeveknayışê ena perre bıvırne", "newpage": "Perra newi", "talkpage": "Na per dı vatan kew", "talkpagelinktext": "Mesac", - "specialpage": "Pera hısusi", + "specialpage": "Perra xısusiye", "personaltools": "Hacetê şexsiy", "articlepage": "Pera zerreki bıvin", - "talk": "Vaten", + "talk": "Werênayış", "views": "Asayışi", "toolbox": "Haceti", "tool-link-userrights": "Grubanê {{GENDER:$1|karberi}} bıvırnë", @@ -240,7 +242,7 @@ "viewtalkpage": "Vaten bıvin", "otherlanguages": "Zıwananê binan dı", "redirectedfrom": "($1 ra kırışı yê)", - "redirectpagesub": "Pera kırıştışi", + "redirectpagesub": "Perra kırıştışi", "redirectto": "Kırışêno:", "lastmodifiedat": "Ena perre roca $1 de, saete $2 de arde ro cı.", "viewcount": "Ena pele {{PLURAL:$1|rae|$1 rey}} vêniya.", @@ -266,7 +268,7 @@ "edithelp": "Pastiyer vurnayış", "helppage-top-gethelp": "Peşti", "mainpage": "Perra Seri", - "mainpage-description": "Pera seri", + "mainpage-description": "Perra seri", "policy-url": "Project:Terzê hereketi", "portal": "Portalê cemati", "portal-url": "Project:Portalê cemati", @@ -282,7 +284,7 @@ "pagetitle-view-mainpage": "{{SITENAME}}", "backlinksubtitle": "← $1", "retrievedfrom": "\"$1\" ra ard", - "youhavenewmessages": "To rê $1 esto ($2).", + "youhavenewmessages": "{{PLURAL:$3|şıma}} rê $1 esto ($2).", "youhavenewmessagesfromusers": "Zey $1 ra {{PLURAL:$3|zewbi karber|$3 karberi}} ($2) esto.", "youhavenewmessagesmanyusers": "$1 ra tay karberi ($2) dı estê.", "newmessageslinkplural": "{{PLURAL:$1|yew mesaco newe|999=mesacê newey}}", @@ -367,6 +369,7 @@ "badtitle": "Sernameyo xırabın", "badtitletext": "Sernameyê pela ke şıma waşt, nêvêrd, vengo ya zi zıwano miyanêno ğelet gırêdaye ya zi sernameyê wiki.\nBeno ke, tede yew ya zi zêdê işareti estê ke sernameyan de nêxebetiyenê.", "title-invalid-empty": "Waziyaye sernamey perrer venonyana teyna canamey nami sero esto.", + "title-invalid-utf8": "Sernamey perre ke şıma wazenê, yew rêza UTF-8iya ke nêvêrene xo sero kırışeno.", "perfcached": "Datay cı ver hazır biye. No semedê ra nıkayin niyo! tewr zaf {{PLURAL:$1|netice|$1 netice}} debêno de", "perfcachedts": "Cêr de malumatê nımıteyi esti, demdê newe kerdışo peyın: $1. Tewr zaf {{PLURAL:$4|netice|$4 neticey cı}} debyayo de", "querypage-no-updates": "Rocanebiyayışê na pele nıka cadayiyê.\nDayiyi tiya nıka newe nêbenê.", @@ -378,7 +381,7 @@ "viewsourcetext": "To şikinay çımey na pele bıvêne u kopya kerê:{{MediaWiki Wesiqe malumat}}", "viewyourtext": "Na pela '''Vurnayışê ke kerdê''' re şıma şenê kopya kerê:", "protectedinterface": "Na pela qandê nusnerin destegê verri dana u kes xırabin nêqero deye kerda kılit.", - "editinginterface": "'''Ä°qaz:''' Şıma hayo yew pela ke seba nuşteyê meqalanê cayanê bırnayeyan dana, vurnenê.\nVurnayışê na pele karberanê binan rê serpela karberi kena ke bımocno.\nSeba çarnayışi, yardımê [https://translatewiki.net/wiki/Main_Page?setlang=diq translatewiki.net]i ra procêdoşkerdışi rê diqet kerên.", + "editinginterface": "'''Ä°qaz:''' Şıma yew perra ke softwarei rê nuştey miyan-bestoği dana cı, aye vırnenê.\nVırnayışê ena perre do eno wiki sero asayışê miyan-bestoğê karberanê binan de bıaso.\n\nTadayışi (çarnayışi) rê , yardımê [https://translatewiki.net/wiki/Main_Page?setlang=diq translatewiki.net]i ra haydarê procêdoşkerdışi de vınderê.", "cascadeprotected": "No pel de vurnayiş qedexe biyo, çunke şıma tuşa \"kademeyın\" aqtif kerdo u no {{PLURAL:$1|pele|pelo}} pawıteyo de xebıtyeno:\n$2", "namespaceprotected": "No '''$1''' ca de icazetê şıma çino şıma pel rêz keri.", "customcssprotected": "Mısadeyê şıma çıniyo ke na pela CSSi bıvurnên, çıke na pela xısusiye eyaranê karberan muhtewa kena.", @@ -387,7 +390,7 @@ "mycustomjsprotected": "Desturê şıma çıniyo ke na pela JavaScripti bıvurnê.", "myprivateinfoprotected": "Ğısusi malumatana ğo timar kerdışire icazeta şıma çıniya.", "mypreferencesprotected": "Terciha timar kerdışire icazeta şıam çıniya.", - "ns-specialprotected": "Pelê xısusiyi nênê vurnayış.", + "ns-specialprotected": "Perrê xısusiy nêvırniyenê.", "titleprotected": "No sername terefê [[User:$1|$1]] ra, afernayene ra şevekiyayo.\nSebebê xo <em>$2</em> dero.", "filereadonlyerror": "Dosyay vurnayışê \"$1\" nê abêno lakin depoy dosya da \"$2\" mod dê salt wendi de yo.\n\nXızmetkarê kılit kerdışi wa bewniro enay wa çım ra ravyarn o: \"$3\".", "invalidtitle-knownnamespace": "Canemey \"$2\" u metnê \"$3\" xırabo", @@ -425,19 +428,12 @@ "login": "Cı kewe", "login-security": "Kamiya xo araşt kerê", "nav-login-createaccount": "Dekew de / hesab vıraze", - "userlogin": "Cıkewtış / hesab vıraze", - "userloginnocreate": "Dekewtış", "logout": "Bıveciye", "userlogout": "Bıveciye", "notloggedin": "Şıma cıkewtış nêvıraşto", "userlogin-noaccount": "Hesabê şıma çıniyo?", "userlogin-joinproject": "Cıkewe {{SITENAME}}", - "nologin": "Hesabê şıma çıniyo? '''$1'''.", - "nologinlink": "Yew hesab ake", "createaccount": "Hesab vıraze", - "gotaccount": "Hesabê şıma esto? '''$1'''.", - "gotaccountlink": "Cıkewtış", - "userlogin-resetlink": "Melumatê cıkewtışi xo vira kerdê?", "userlogin-resetpassword-link": "Parola xo kerda xo vira?", "userlogin-helplink2": "Heqa qeydbiyayışi de peşti bıgêrên", "userlogin-loggedin": "Tı xora namey {{GENDER:$1|$1}} ra kewtê/kewtay cı.\nFormê cêrêni bıgureyne ke namey karberio bin ra cı kewê.", @@ -449,7 +445,6 @@ "createacct-another-email-ph": "Adresa e-posta de fi", "createaccountmail": "Yew parolaya rastameyiya ravêrdiye bıgurene û parola ena adresa e-postey rê bırışe", "createacct-realname": "Nameyo raştıkên (mecburi niyo)", - "createaccountreason": "Sebeb:", "createacct-reason": "Sebeb", "createacct-reason-ph": "Şımaye çı xo re zewbi hesab vırazeni?", "createacct-submit": "Hesabê xo vıraze", @@ -464,7 +459,7 @@ "usernameinprogress": "Qandê nê karberi hesab vıraştışondewamnkeno. Tay bıpawê", "userexists": "Jewna karber enê nami karneno.\nMara reca xorê jewna name bınusnê.", "loginerror": "Xetayê hesab ekerdışi", - "createacct-error": "Xetaya vıraştışê hesabi", + "createacct-error": "Xetay vıraştışê hesabi", "createaccounterror": "Hesab nêvırazyeno: $1", "nocookiesnew": "Hesabê karberi vıraziya, labelê şıma nêşay cı kewê.\nSemedê akerdışê hesabi çerezê {{SITENAME}}i gurêniyenê.\nŞıma çerezi qapan kerdi.\nRavêri inan akerê, dıma be name u parola şımawa newiye cı kewê.", "nocookieslogin": "Semedê akerdışê hesabi çerezê {{SITENAME}}i gurêniyenê.\nŞıma çerezi qapan kerdi.\nRavêri inan akerê u reyna bıcerrebnê.", @@ -553,7 +548,7 @@ "resetpass-temp-password": "parolayo muweqet:", "resetpass-abort-generic": "Vurnayışê parola terefê yew niçıki ra texeliya.", "resetpass-expired": "Dema parolay da şıma qedya ya. Qandê cıkewtışi u patolaya newi vıraz", - "resetpass-expired-soft": "Wahdey patolanda şıma qedya yo u vurnayış icab keno. Xorê yu parola weçinê yana bahdo weçinayışi rê butona \"{{int:authprovider-resetpass-skip-label}}\" 'i bıploğnê", + "resetpass-expired-soft": "Şifrey şıma nêvêreno u ganê ke reyna bıvıraziyo. Reca ma aya ke şıma xo rê şifreyê do newe weçinê, ya zi şıma \"{{int:authprovider-resetpass-skip-label}}\" bıtıknê ke dıma yew şifreyo newe vırazê.", "resetpass-validity-soft": "Parolay şıma ravêrdi niya: $1\n\nXorê yu parola nışan bıkerê uana bahdo sıfır kerdışi rê grey \"{{int:authprovider-resetpass-skip-label}}\" bıploğnê.", "passwordreset": "Parola reset ke", "passwordreset-text-one": "Na form de parola reset kerdış temamiye", @@ -606,23 +601,23 @@ "hr_tip": "Xeta verardiye (teserrufın bıgureyne/bıxebetne)", "summary": "Xulasa:", "subject": "Mewzu:", - "minoredit": "No yew vurnayışo werdiyo", - "watchthis": "Bewni ena per", + "minoredit": "No yew vırnayışo werdiyo", + "watchthis": "Şıma bewnê ena perre", "savearticle": "Perre qeyd ke", - "savechanges": "Vurnayışan qeyd kı", + "savechanges": "Vırnayışan qeyd ke", "publishpage": "Perer bıhesırne", "publishchanges": "Vurnayışa vıla ke", "preview": "Verqayt", - "showpreview": "Verasayışi bımotne", + "showpreview": "Verasayışi bımocne", "showdiff": "Vurnayışan bımotne", "anoneditwarning": "<strong>Ä°qaz:</strong> Şıma be hesabê xo nêkewtê cı. \nAdresê şımayê IP tarixê vırnayışê na pele de do qeyd bo. Eke şıma <strong>[$1 cıkewê]</strong> ya zi <strong>[$2 hesab vırazê]</strong>, vurnayışê şıma be zewbina kare ra nameyê şıma rê bar beno.", "anonpreviewwarning": "\"Şıma be hesabê xo nêkewtê cı. Eke qeyd kerê, adresê şımaê IP tarixê vırnayışê na pele de do qeyd bo.\"", "missingsummary": "'''DÄ°QET:''' Şıma jû xulasa nênuşte.\nEke şıma \"{{int:savearticle}}\" reyna bıtıknê, vırnayışê şıma bê xulasa qeyd beno.", "missingcommenttext": "Cêr de jû fıkır bınusên, şıma rê zehmet.", "missingcommentheader": "'''Diqet:''' Şıma seba nê fıkrvaci yew mewzu/sernuşte nênuşt.\nEke şıma reyna \"{{int:savearticle}}\" bıtıknê, vırnayışê şıa bê mewzu/sernuşte do qeyd bo.", - "summary-preview": "Verqaytê xulasa:", + "summary-preview": "Verasayışê xulasa:", "subject-preview": "Verqaytê mewzu:", - "previewerrortext": "Verqaytê vurnayış de şıma dı xırabin amê meydan", + "previewerrortext": "Verasayışê vırnayışê şıma de yew xeta veciya miyan.", "blockedtitle": "Karber blokekerdeo", "blockedtext": "<strong>No nameyê karberi ya zi na adresa IP blokekerdeya.</strong>\n\nVıraştoğê blokeyi: $1\nSebebê blokeyi: <em>$2</em>.\n\n* Sıftekerdena blokeyi: $8\n* Qediyayışê blokeyi: $6\n* Blokebiyaye: $7\n\nŞıma şenê $1 de ya zi yewna [[{{MediaWiki:Grouppage-sysop}}|administrator]]i de irtıbat kewê ke na mesela sero werênê, cemaet vırazê. \nŞıma nêşenê xısusiyetê \"karberi rê e-posta bırışe\" bıgureynê/bıxebetnê heta ke [[Special:Preferences|Tercihanê hesabi]] de yew e-posteyo ke vêreno, beli bi û şıma gureynayışê cı ra mehrum nêbiyê.\nIP adresa şımaya nıkayêne $3o û numreyê bloki #$5.\nŞıma rê zehmet, eke kewnê ra dıme, teferruatanê corênan not kerên.", "autoblockedtext": "IP adresê şıma otomotikmen kerda kılit, çıkı $1 verniya nê hesabi grota.\nSebebê cı zi:\n\n:''$2''\n\n* Dest pê kerdışê verni grotışi: $8\n* Qedyayişê verni grotışi: $6\n* Qayile ke bloqe bıbo: $7\n\nŞıma qayile qey weri kewtışê na mesela, $1 ya na [[{{MediaWiki:Grouppage-sysop}}|serkaran ra]] yewi ra şenê irtibat kewê.\n\nNot, [[Special:Preferences|Tercihê karberi]] eke şıma yew e-postayo raşt nênuşt se şıma nêşenê na xususiyet ra \"karber rê e-posta bırışê\" istifade bıkeri.\n\nIP adresiya şıma yo nıkayên $3 u ID şıma yo ke musade nêdaye #$5. Eke şıma yew tehqiqat vırazeni malumatê corênan xo vira mekerê.", @@ -671,7 +666,7 @@ "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": "'''Ä°kaz: Şımayé rewizyon da kehan da perer d vırnayış kené.'''\nVanése qeyd k,lakin rewziyoné veréni dé vınibé.", + "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ê.<br />\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ê! '''", "copyrightwarning2": "Ney bızanê ke nuşteyê ke şıma ruşnenê (şawenê) keyepela {{SITENAME}} herkes eşkeno nê nuşteyanê şıma ser kay bıkero. Eke şıma qayil niyê kes bıvurno, nuşteyanê xo meerzê ita. <br />\nWexto ke şıma nuşteyi zi erzenê ita; şıma gani teahud bıdê koti ra ardo (qandê teferuati ra referans: $1).", @@ -690,12 +685,12 @@ "hiddencategories": "Ena per de {{PLURAL:$1|1 kategoriyo nımıte|$1 kategoriyê nımıtey}} muhtewa benê:", "edittools": "<div id=\"specialcharss\" class=\"toccolours specialchars\" style=\"margin-top:.5em; padding: .3em .5em; font-size: 100%; color:#aaa; text-align:left;\" title=\"{{int:bw-edittools-tooltip}}\">\n<p class=\"specialbasic\" id=\"Standard\">\n'''{{int:bw-edittools-lead-in}}''' \n<charinsert>Á á É é Í í Ó ó Ú ú Ý ý</charinsert> –\n<charinsert>À à È è Ì ì Ò ò Ù ù </charinsert> –\n<charinsert> â Ê ê Î î Ô ô Û û </charinsert> –\n<charinsert>Ä ä Ë ë Ï ï Ö ö Ü ü Ÿ ÿ</charinsert> –\n<charinsert>Æ æ Ø ø Œ œ ẞ ß </charinsert> –\n<charinsert>Šå Å® ů </charinsert> –\n<charinsert>à ã Ẽ ẽ ɛ̃ Ĩ Ä© Ñ ñ Õ õ ɔ̃ Ũ Å© </charinsert> –\n<charinsert>Ð ð Þ þ </charinsert> –\n<charinsert>Ç ç Ä¢ Ä£ Ķ Ä· Ä» ļ Ņ ņ Ŗ ŗ Ş ş Å¢ Å£ </charinsert> –\n<charinsert>Ć ć Ĺ ĺ Ń ń Ŕ ŕ Ś ś Ý ý Ź ź </charinsert> –\n<charinsert>Č č Ď ď Ľ ľ Ň ň Ř ř Å  Å¡ Ť Å¥ Ž ž </charinsert> –\n<charinsert>Ǎ ǎ Ě ě Ǐ ǐ Ǒ ǒ Ǔ ǔ </charinsert> –\n<charinsert>Ā ā Ē ē Ī Ä« Ō ō Ū Å« </charinsert> –\n<charinsert>ǖ ǘ ǚ ǜ </charinsert> –\n<charinsert>Ĉ ĉ Ĝ ĝ Ĥ Ä¥ Ä´ ĵ Ŝ ŝ Å´ ŵ Ŷ Å· </charinsert> –\n<charinsert>Ă ă Ğ ğ Ŭ Å­ </charinsert> –\n<charinsert>Ċ ċ Ė ė Ä  Ä¡ Għ għ Ä° ı Å» ż </charinsert> –\n<charinsert>Ą ą Ę ę Ä® į Ų ų </charinsert> –\n<charinsert>Ő ő Å° ű </charinsert> –\n<charinsert>Đ đ Ħ ħ Ł ł Ä¿ ŀ </charinsert> –\n<charinsert>Ɖ ɖ Ɛ ɛ Ƒ ƒ Ɣ É£ Ŋ ŋ Ɔ ɔ Ʋ ʋ </charinsert> -\n<charinsert>Ə ə </charinsert> –\n<charinsert>– — ’</charinsert> –\n<charinsert>~ | ° ¹ ² ³ ⅛ ¼ ⅓ ⅜ ½ ⅝ ¾ ⅔ ⅞ € $ Â¥ £ † × ← → ↔ ↑ ± ≠ © ® ™ ‰ «+» ‹+› „+“ „+” ‚+‘ ¡ ¿ …</charinsert> –\n<charinsert>&nbsp;   [[Category:+]] #REDIRECT[[+]] {{msg-mw|+|notext=1}} !!FUZZY!! ~~~~ <nowiki>+</nowiki></charinsert>\n<charinsert>ڈ ڑ Ù¹ </charinsert>\n<charinsert>Ù¼ څ ځ ډ ړ ږ ښ Ú¼ ؤ ي ې ۍ ئ </charinsert>\n<charinsert>{{{+}}} {{+}} {{subst:+}} <noinclude>+</noinclude></charinsert>\n<charinsert><!-- + --> <br /></charinsert>\n</p></div>", "edittools-upload": "-", - "nocreatetext": "{{SITENAME}}, Pelê neweyi vıraştış re destur çino.\nşıma eşkeni tepiya şêri u eke şıma qayd biyaye yê [[Special:UserLogin|şıma eşkeni hesab akeri]], eke niye [[Special:UserLogin|şıma eşkeni qayd bıbiy]].", + "nocreatetext": "{{SITENAME}}, Perrê newey vıraştış rê destur çıniyo.\nŞıma şenê tepeya şorê u eke şıma qeydbiyayey [[Special:UserLogin|şıma şenê yew hesab akerê]], eke şıma niyê [[Special:UserLogin|şıma şenê qeyd bıbê]].", "nocreate-loggedin": "Desturê şıma çıniyo ke pelanê neweyan vırazê.", "sectioneditnotsupported-title": "Destekê vurnayışiê qısımi çıniyo", "sectioneditnotsupported-text": "Destekê vurnayışiê qısımi ena pela vurnayışi de çıniyo.", "permissionserrors": "Ä°dari xeta", - "permissionserrorstext": "Qey {{PLURAL:$1|sebebê|sebebê}} cêrini ra icazeyê şıma çin o:", + "permissionserrorstext": "Qey {{PLURAL:$1|sebeb|sebebê}} cêrini ra icazetê şıma çıniyo:", "permissionserrorstext-withaction": "{{PLURAL:$1|Sebeba|Sebeb da}} cêri ra icazetê $2 çıniyo:", "recreate-moveddeleted-warn": "'''Hişyari: no pel o ke şıma vırazeni vere cû vırazyayo.'''\n\nDiqet bıkeri no vurnayişê şıma re gerek esto:", "moveddeleted-notice": "Ena pela esteriya ya.\nQeydé esternayışi u wedarnayışi cér dé deya yo.", @@ -703,10 +698,10 @@ "edit-hook-aborted": "Vurnayiş vınderiya.\nYew sebeb beyan nibı.", "edit-gone-missing": "Pel rocanebiyaye niyo.\nHewna kerde aseno.", "edit-conflict": "Têverabiyayışê vurnayışi.", - "edit-no-change": "Vurnayişê şıma qebul nêbı, çunke nuşte de yew vurnayiş n3evıraziya.", + "edit-no-change": "Vırnayışê şıma qebul nêbı, çunke nuşte de yew vırnayış nêvıraziyo.", "postedit-confirmation-created": "Pele vıraziye.", "postedit-confirmation-restored": "Pele anciya vıraziye.", - "postedit-confirmation-saved": "Vurnayışê to qeyd biyo.", + "postedit-confirmation-saved": "Vırnayışê şıma qeyd bi.", "edit-already-exists": "Pelo newe nêvıraziyeno.\nPel ca ra esto.", "defaultmessagetext": "Metnê mesacê hesabiyayey", "content-failed-to-parse": "Qandê madela $3 zereyê $1, $2 sero nêagozyayo", @@ -732,7 +727,7 @@ "node-count-exceeded-category": "Pela ra hetê kotya amardışê cı ravêrya", "node-count-exceeded-category-desc": "Pela azami amora gozgıray ravêr da.", "node-count-exceeded-warning": "Pela amora gozgıra ravêr da", - "expansion-depth-exceeded-category": "Pela dı hetê canaya zoriya herayin ravêrya", + "expansion-depth-exceeded-category": "Perrê ke xoriyiya herabiyayışi tede ravêrdeya.", "expansion-depth-exceeded-warning": "Ravêriya pela xori herayêna", "parser-unstrip-loop-warning": "Unstrip lete vineya", "parser-unstrip-recursion-limit": "Sinorê limit dê qayış dê ($1) ravêrya", @@ -746,18 +741,18 @@ "viewpagelogs": "Qeydanê na perrer bımotne", "nohistory": "Verorê vurnayışanê na perer çıni yo.", "currentrev": "Çımraviyarnayışo rocane", - "currentrev-asof": "$1 ra tepya mewcud weziyeta pela", + "currentrev-asof": "$1 ra tepeya çım ra viyarnayışê cı'yo peyên", "revisionasof": "Çımraviyarnayışê $1", "revision-info": "Vurnayışo ke $1 de terefê {{GENDER:$6|$2}}$7 ra biyo", "previousrevision": "← Çımraviyarnayışo kıhanêr", - "nextrevision": "Rewizyono newên →", + "nextrevision": "Çımraviyarnayışo neweyêr →", "currentrevisionlink": "Tewr halê peyn", "cur": "ferq", "next": "bahdoyên", "last": "peyên", "page_first": "verên", "page_last": "peyên", - "histlegend": "Ferqê weçinayışi: Qutiya versiyonan qandé têversanayış işaret ke u dest be ''enter''i ya zi gocega cêrêne rone.<br />\nCetwel: <strong>({{int:ferq}})</strong> = ferqê versiyonê peyêni, <strong>({{int:peyên}})</strong> = ferqê versiyonê verêni, <strong>{{int:q}}</strong> = vurnayışo werdi yo.", + "histlegend": "Ferqê weçinayışi: Qutiya versiyonan qandé têversanayış işaret ke u dest be ''enter''i ya zi gocega cêrêne rone.<br />\nCetwel: <strong>({{int:ferq}})</strong> = ferqê versiyonê peyêni, <strong>({{int:peyên}})</strong> = ferqê versiyonê verêni, <strong>{{int:q}}</strong> = vırnayışo werdiyo.", "history-fieldset-title": "Çımberz verori", "history-show-deleted": "Tenya esterıtey", "histfirst": "Verênêr", @@ -775,9 +770,9 @@ "rev-deleted-user-contribs": "[nameyê karberi ya zi adresa IPy esteriya - vurnayış iştırakan ra nımniyo]", "rev-deleted-text-permission": "Çımraviyarnayışê ena pele '''esteriyo'''.\nBeno ke [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} deletion log] de teferruat esto.", "rev-suppressed-text-permission": "Çımraviyarnayışê ena pele '''degusneyayo'''.\nŞıma be idarekerina xo ra şenê ey bıvênê; beno ke [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} degusnayış] de teferruat esto.", - "rev-deleted-text-unhide": "Çımra viyarnayışê ena pele '''besterêno'''.\nBeno ke [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} besternayış] de teferruat esto.\nŞıma be idarekerina xo ra şenê hewna [$1 nê çımra viyarnayışi bıvinê], eke wazenê dewam kerê.", + "rev-deleted-text-unhide": "Çım ra viyarnayışê enê riperri <strong>esteriya</strong>.\nTeferruati [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} qeydê esterıtışi] yenê diyene.\nŞıma hewna şenê [$1 nê vırnayışi bıvênê], eke wazenê dewam kerê.", "rev-suppressed-text-unhide": "Çımra viyarnayışê ena pele '''Degusneyayo'''.\nBeno ke [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} degustış] de teferruat esto.\nŞıma be idarekerina xo ra şenê hewna [$1 nê çımraviyarnayışi bıvênê], eke wazenê dewam kerê.", - "rev-deleted-text-view": "Çımra viyarnayışê ena pele '''besternêno'''.\nŞıma be idarekerina xo ra şenê ey bıvênê; beno ke [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} besternayış] de teferruat esto.", + "rev-deleted-text-view": "Çım ra viyarnayışê enê riperri '''vındarnao'''.\nŞıma şenê bıvênê; teferruat nao naca [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} besternayış].", "rev-suppressed-text-view": "Çımraviyarnayışê ena pele '''degusneyayo'''.\nŞıma be idarekerina xo ra şenê ey bıvênê; beno ke [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} degusnayış] de teferruat esto.", "rev-deleted-no-diff": "Şıma nêşenê nê ferqi bıvênê, çıke çımraviyarnayışan ra yew '''esteriyo'''.\nBeno ke [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} deletion log] de teferruat esto.", "rev-suppressed-no-diff": "Revizyon '''esteriyayo\"' aye ra ti nieşkeno ena diff bivine.", @@ -888,7 +883,7 @@ "viewprevnext": "($1 {{int:pipe-separator}} $2) ($3) bıviné", "searchmenu-exists": "''Ena 'Wikipediya de ser \"[[:$1]]\" yew pel esto'''", "searchmenu-new": "<strong>Na wiki de pela \"[[:$1]]\" vıraze!</strong> {{PLURAL:$2|0=|Sewbina pela ke şıma geyrayê cı aye bıvênê.|Yew zi neticanê cıgeyrayışê xo bıvênê.}}", - "searchprofile-articles": "Pelê zerreki", + "searchprofile-articles": "Perrê zerreki", "searchprofile-images": "Multimedya", "searchprofile-everything": "Pêro çi", "searchprofile-advanced": "Herayen", @@ -905,7 +900,7 @@ "search-suggest": "To va: $1", "search-rewritten": "Neticey $1 ra asenê. Herunda ney wa neticanë $2'i bıvin", "search-interwiki-caption": "Proceyê bıray", - "search-interwiki-default": "$1 ra neticey:", + "search-interwiki-default": "$1 ra peyniy:", "search-interwiki-more": "(véşi)", "search-relatedarticle": "Eleqeyın", "searchrelated": "eleqeyın", @@ -926,7 +921,7 @@ "search-error": "Cıgeyrayış de yew xeta emê meydan: $1", "preferences": "Tercihi", "mypreferences": "Tercihi", - "prefs-edits": "Amarê vurnayışan:", + "prefs-edits": "Amarê vırnayışan:", "prefsnologintext2": "Kerem ke, seba vurnayışê tercihanê xo cı kewe.", "prefs-skin": "Çerme", "skin-preview": "Verqayt", @@ -934,8 +929,8 @@ "prefs-labs": "Xacetê labs", "prefs-user-pages": "Pelê karberi", "prefs-personal": "Profilê karberi", - "prefs-rc": "Vurnayışê peyêni", - "prefs-watchlist": "Listey pawıteyan", + "prefs-rc": "Vırnayışê peyêni", + "prefs-watchlist": "Lista Teqibi", "prefs-editwatchlist": "Lista seyrkerdışi bıvurne", "prefs-editwatchlist-label": "Listey serkerdışanê cıkewtışi timar kerê", "prefs-editwatchlist-edit": "Listey seyr kerdışê sernameyanê xo bımotné u timar kerê", @@ -954,14 +949,14 @@ "prefs-rendering": "Asayış", "saveprefs": "Qeyd ke", "restoreprefs": "Sazanê hesıbyaya pêron newe ke", - "prefs-editing": "Vurnayış", + "prefs-editing": "Vırnayış", "searchresultshead": "Cı geyre", "stub-threshold": "Qandé Taslağ formati sinor:$1", "stub-threshold-sample-link": "misal", "stub-threshold-disabled": "Astengın", "recentchangesdays": "Rocê ke vurnayışanê peyênan de bıasê:", "recentchangesdays-max": "Tewr zaf $1 {{PLURAL:$1|roc|roci}}", - "recentchangescount": "Amarê vurnayışê ke hesıbyaye deye bımocneyê:", + "recentchangescount": "Halê est-amardışi ra mocnayışi rê amarê vırnayışan:", "prefs-help-recentchangescount": "Ney de vurnayışê peyêni, tarixê pelan u cıkewteni asenê.", "prefs-help-watchlist-token2": "Na pawıtış nımnayi kılta listada şımaya.\nOke kıliti zano şeno listeya tamaşann bıvino. Poğta coy ra kesiya me hesırne. \n[[Special:ResetTokens|Na kıliti reset kerdışi re tiyay bıploğne]].", "savedprefs": "Tecihê şıma qeyd biy.", @@ -1073,12 +1068,12 @@ "grouppage-bureaucrat": "{{ns:project}}:Burokrati", "grouppage-suppress": "{{ns:project}}:Teftişkar", "right-read": "Pera bıwané", - "right-edit": "Pele bıvurne", - "right-createpage": "Pele vıraze (pelê ke ê werênayışi niyê)", + "right-edit": "Perre bıvırnê", + "right-createpage": "Perran vıraze (peprrê ke ê werênayışi niyê)", "right-createtalk": "Pela werênayışi vıraze", "right-createaccount": "Hesabê karberi vıraze", "right-autocreateaccount": "Xarici yew name dê karberi ya ronıştış ake", - "right-minoredit": "Vurnayışan qıckek nışan bıde.", + "right-minoredit": "Vırnayışan zey werdi nışan bıde.", "right-move": "Pele bere", "right-move-subpages": "Pele be bınpelanê cı ra pia bere", "right-move-rootuserpages": "Pelanê kaberiê rıstımi bere", @@ -1104,7 +1099,7 @@ "right-deletedtext": "Mabênê newede vurnayışanê esterıtiyan de qaytê nuştey esterıtey u vurnayışan ke", "right-browsearchive": "Pelanê esterıteyan bıgeyre", "right-undelete": "Yew pela esterıtiye peyser biya", - "right-suppressrevision": "Ä°darekeran ra miyanki, newede vurnayışan de qayt ke u newede vıraze", + "right-suppressrevision": "Yew karber ra çım ra viyarnayışanê perran bıvênê, bınımnê u bımocnê.", "right-viewsuppressed": "Ä°darekeran ra miyanki newede vurnayışan de qayt ke", "right-suppressionlog": "Rocekanê xasan bıvêne", "right-block": "Karberanê binan karê vurnayışi ra bloke bıke", @@ -1164,7 +1159,7 @@ "grant-editprotected": "Srar bıyaye peran bıvurnê", "grant-highvolume": "Vengê berzi dayış", "grant-oversight": "Karberan u ploğyayê revizyona bınımn", - "grant-patrol": "Perer de vurnayışa çımra ravyarn", + "grant-patrol": "{{GENDER:$1|$1i çım ra viyarna ra:$1}}", "grant-protect": "Şeveknayış u wedarıtışê şeveknayışê pelan", "grant-sendemail": "Karberanê binan rê e-posta bırışê", "grant-uploadeditmovefile": "Dosyaya bar ke, bıvurnê yana berê", @@ -1177,7 +1172,7 @@ "rightslog": "Qeydê heqanê karberi", "rightslogtext": "Ena listeyê loganê ke heqqa karbaranî mucneno.", "action-read": "ena pela wanayış", - "action-edit": "ena pela bıvurnê", + "action-edit": "ena perre bıvurnê", "action-createpage": "na perer bıvıraz", "action-createtalk": "pelanê werênayışi bıvıraze", "action-createaccount": "hesabê nê karberi bıvıraze", @@ -1199,7 +1194,7 @@ "action-deletelogentry": "roceka dekerdan bestern", "action-deletedhistory": "verora esteriya perrer bıvin", "action-browsearchive": "pelanê esterıteyan bıgeyre", - "action-undelete": "ena perer mestern", + "action-undelete": "Ena perre mesterê", "action-suppressrevision": "revizyonê nımnayi bıvin u timar kı.", "action-suppressionlog": "enê qeydê xısusi bıvêne", "action-block": "enê karberi vurnayışi ra bıreyne", @@ -1210,13 +1205,13 @@ "action-patrol": "vurnayîşê karberanê binî nişan bike patrol biye", "action-autopatrol": "vurnayîşê xoye nişan bike ke belli biyo patrol biye", "action-unwatchedpages": "listeyê pelanê seyirnibiya bivîne", - "action-mergehistory": "tarixê ena pele yew ke", + "action-mergehistory": "tarixê ena perre yew ke", "action-userrights": "heqqa karberanê hemî bivurne", "action-userrights-interwiki": "heqqa karberanê ke wikiyê binî de hemî bivurne", "action-siteadmin": "database kilit bike ya zi a bike", "action-sendemail": "e-posta bırşe", "action-editmyoptions": "Tercihanê xo bıvurne", - "action-editmywatchlist": "Listeyseyran de xo bıvırne", + "action-editmywatchlist": "Lista xoya ewniyayışi bıvırnê", "action-viewmywatchlist": "Listeyseyran de xo bıvin", "action-viewmyprivateinfo": "Xısusi tercihane xo bıvin", "action-editmyprivateinfo": "Xısusi malumate xo bıvurne", @@ -1227,23 +1222,23 @@ "nchanges": "$1 {{PLURAL:$1|vurnayış|vurnayışi}}", "enhancedrc-since-last-visit": "$1 {{PLURAL:$1|ziyaretê peyêni ra nata}}", "enhancedrc-history": "tarix", - "recentchanges": "Vurnayışê peyêni", - "recentchanges-legend": "Tercihê vurnayışanê peyênan", - "recentchanges-summary": "Wiki sero vurnayışê peyêni asenê.", + "recentchanges": "Vırnayışê peyêni", + "recentchanges-legend": "Tercihê vırnayışanê peyênan", + "recentchanges-summary": "Wiki sero vırnayışê peyêni asenê.", "recentchanges-noresult": "Goreyê kriteranê kıfşkerdeyan ra qet yew vurnayış nêvêniya.", "recentchanges-feed-description": "Ena feed dı vurnayişanê tewr peniyan teqip bık.", - "recentchanges-label-newpage": "Enê vurnayışi yew pela newiye vıraşta.", - "recentchanges-label-minor": "No yew vurnayışo werdiyo", - "recentchanges-label-bot": "Eno vurnayış terefê yew boti ra vıraziyo", + "recentchanges-label-newpage": "Enê vırnayışi yew perra newiye vıraşta.", + "recentchanges-label-minor": "No yew vırnayışo werdiyo", + "recentchanges-label-bot": "Eno vırnayış terefê yew boti ra vıraziyo", "recentchanges-label-unpatrolled": "Eno vurnayış hewna dewriya nêbiyo", - "recentchanges-label-plusminus": "Ebadê pele de bazê bayti de vayey cı", - "recentchanges-legend-heading": "<strong>Kıtabekê Vurriyayışê peyêni:</strong>", - "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} Şıma şenê ([[Special:NewPages|Listey peranê newan]] zi bıvinê)", + "recentchanges-label-plusminus": "Ebadê perre de bazê bayti de vayey cı", + "recentchanges-legend-heading": "<strong>Kıtabekê vırnayışê peyêni:</strong>", + "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} Şıma şenê ([[Special:NewPages|Lista peranê newan]] zi bıvênê)", "recentchanges-legend-plusminus": "''(±123)''", "recentchanges-submit": "Bımotne", "rcnotefrom": "Cêr de <strong>$2</strong> ra nata {{PLURAL:$5|vurnayışiyê}} asenê (tewr vêşi <strong>$1</strong> asenê) <strong>$3, $4</strong>", "rclistfrom": "$3 sehat $2 ra tepiya vurnayışanê neweyan bımotne", - "rcshowhideminor": "Vurnayışê werdiy $1", + "rcshowhideminor": "Vırnayışê werdiy $1", "rcshowhideminor-show": "Bımotne", "rcshowhideminor-hide": "Bınımne", "rcshowhidebots": "botan $1", @@ -1252,13 +1247,13 @@ "rcshowhideliu": "karberê qeydbiyay $1", "rcshowhideliu-show": "Bımotne", "rcshowhideliu-hide": "Bınımne", - "rcshowhideanons": "karberanê bênameyan $1", + "rcshowhideanons": "$1 karberê bênamey", "rcshowhideanons-show": "Bımotne", "rcshowhideanons-hide": "Bınımne", "rcshowhidepatr": "$1 vurnayışê ke dewriya geyrayê", "rcshowhidepatr-show": "Bımotne", "rcshowhidepatr-hide": "Bınımne", - "rcshowhidemine": "vurnayışê mı $1", + "rcshowhidemine": "vırnayışê mı $1", "rcshowhidemine-show": "Bımotne", "rcshowhidemine-hide": "Bınımne", "rcshowhidecategorization": "kategorizasyoni $1", @@ -1282,9 +1277,9 @@ "rc-enhanced-expand": "Detaya bıvin (JavaScript lazımo)", "rc-enhanced-hide": "Melumat bınımne", "rc-old-title": "\"$1\"i orcinalê cı vıraşt", - "recentchangeslinked": "Vurnayışê elaqeyıni", - "recentchangeslinked-feed": "Vurnayışê elaqeyıni", - "recentchangeslinked-toolbox": "Vurnayışê elaqeyıni", + "recentchangeslinked": "Vırnayışê bestiyaey", + "recentchangeslinked-feed": "Vırnayışê bestiyaey", + "recentchangeslinked-toolbox": "Vırnayışê bestiyaey", "recentchangeslinked-title": "Heqa \"$1\" de vurnayışi", "recentchangeslinked-summary": "Lista cêrêne, pela bêlikerdiye rê (ya zi karberanê kategoriya bêlikerdiye rê) pelanê gırêdayoğan de lista de vurnayışê peyênana.\n[[Special:Watchlist|Lista şımaya seyrkedışi de]] peli be nuşteyo '''qolınd''' bêli kerdê.", "recentchangeslinked-page": "Namey perrer:", @@ -1292,8 +1287,8 @@ "recentchanges-page-added-to-category": "[[:$1]] kerd kategoriye miyan", "recentchanges-page-removed-from-category": "[[:$1]] kategoriye ra vet", "autochange-username": "MediaWiki vurnayışo otomatik", - "upload": "Dosye bar kı", - "uploadbtn": "Dosye bar kı", + "upload": "Dosya bar ke", + "uploadbtn": "Dosya bar ke", "reuploaddesc": "Barkerdışi iptal ke u peyser şo formê barkerdışi", "upload-tryagain": "Deskripyonê dosyayî ke vurîya ey qeyd bike", "uploadnologin": "Şıma cıkewtış nêvıraşto", @@ -1549,7 +1544,7 @@ "filedelete-maintenance": "Esterayîş u resterasyonê dosyayî wextê texmirî de nibenê.", "filedelete-maintenance-title": "Dosyaya nêbesterneyêna", "mimesearch": "MIME bigêre", - "mimesearch-summary": "Na pele, dosyayanê MIME goreyê tewran ra parzûn kena. Cıkewtış: tewrê zerreki/tewro bınên ya zi tewrê zerreki/*, nımune: <code>image/jpeg</code>.", + "mimesearch-summary": "Na perre, dosyayanê MIME gorey tewran ra parzûn kena. Cıkewtış: tewrê zerreki/tewro bınên ya zi tewrê zerreki/*, nımune: <code>image/jpeg</code>.", "mimetype": "Babetê NIME", "download": "Bıselagnê", "unwatchedpages": "Pelanê seyrnibiyeyî", @@ -1559,7 +1554,7 @@ "unusedtemplates": "Şablonê kı nêgurweyênê", "unusedtemplatestext": "no pel, {{ns:template}} pelê ke pelê binan de nêaseni, ninan keno.", "unusedtemplateswlh": "linkanê binî", - "randompage": "Pela raştameyiye", + "randompage": "Perra raştameyiye", "randompage-nopages": "Na {{PLURAL:$2|heruna namey|heruna nameyan}} de nê peli çıniyê: $1.", "randomincategory": "Ena kategoriye dı pela raştameye", "randomincategory-invalidcategory": "\"$1\" yew nameyê kategoriya vêrdiye niyo.", @@ -1571,7 +1566,7 @@ "randomredirect-nopages": "Cayê nameyê \"$1\" de serşıkıtışi çıniyê.", "statistics": "Ä°statistiki", "statistics-header-pages": "Ä°statistikê perer", - "statistics-header-edits": "Ä°statistikê vurnayışan", + "statistics-header-edits": "Ä°statistikê vırnayışan", "statistics-header-users": "Ä°statistikê karberi", "statistics-header-hooks": "Yewbina istatistiki", "statistics-articles": "Perê zerreki", @@ -1663,7 +1658,7 @@ "protectedtitlesempty": "pê ney parametreyan sernuşteyê pawite çinê", "protectedtitles-submit": "Sereki bımotne", "listusers": "Listeyê Karberan", - "listusers-editsonly": "Teyna karberanê vurnayış kerdoğan bımotne", + "listusers-editsonly": "Teyna karberanê vırnayış kerdoğan bımotne", "listusers-creationsort": "goreyê wextê vıraştışi rêz ker", "listusers-desc": "Kemeyen rézed ratn", "usereditcount": "$1 {{PLURAL:$1|vurnayîş|vurnayîşî}}", @@ -1697,7 +1692,7 @@ "apisandbox-dynamic-parameters-add-label": "Parametre dek:", "apisandbox-dynamic-parameters-add-placeholder": "Nmaey parametrey", "apisandbox-submit-invalid-fields-title": "Tay çiy ters şı", - "apisandbox-results": "Neticey", + "apisandbox-results": "Peyniy", "apisandbox-sending-request": "API waştış rışêno...", "apisandbox-request-url-label": "URL waştış:", "apisandbox-request-time": "Demê waştışi: {{PLURAL:$1|$1 ms}}", @@ -1720,7 +1715,7 @@ "checkbox-select": "Weçinaye: $1", "checkbox-all": "Pêro", "checkbox-none": "Temam", - "checkbox-invert": "Rageyre", + "checkbox-invert": "Verdindayış", "allpages": "Pêro peli", "nextpage": "Pela badê cû ($1)", "prevpage": "Pela verêne ($1)", @@ -1754,7 +1749,7 @@ "listusers-submit": "Bımotne", "listusers-noresult": "karber nêdiyayo/a.", "listusers-blocked": "(blok biy)", - "activeusers": "Listey karberan de aktivan", + "activeusers": "Lista karberanê aktifan", "activeusers-intro": "Ena yew lista karberê ke $1 {{PLURAL:$1|roc|rocan}} ra tepiya iştirak kerdo inan motneno.", "activeusers-count": "Peyni {{PLURAL:$3|roc de|$3 rocan de}} $1 {{PLURAL:$1|hereket kerdo|hereketi kerdê}}", "activeusers-from": "Enê karberi ra tepya bımocne:", @@ -1824,13 +1819,13 @@ "watchlistanontext": "qey vurnayişê maddeya listeya temaşakerdiş ronıştış akerê", "watchnologin": "Şıma cıkewtış nêvıraşto", "addwatch": "Lista seyrkerdışi ke", - "addedwatchtext": "Ma pele \"[[:$1]]\" zerri [[Special:Watchlist|listeya seyri]] tı kerd de.\nEna deme ra, ma qe vurnayışan ser ena pele tı haberdar keni.", + "addedwatchtext": "\"[[:$1]]\" u perra cıya werênayışi [[Special:Watchlist|lista şımaya ewniyayışi]] rê ameyo cıkerdış.", "addedwatchtext-short": "Pera $1`i çebyê listeya seyran de şıma", "removewatch": "Lista seyrkerdışi ra wedare", "removedwatchtext": "Ena pela \"[[:$1]]\" biya wedariya [[Special:Watchlist|listeyê seyr-kerdışi şıma]].", "removedwatchtext-short": "Pera $1`i listeya seyran de şıma ra wedari yê", "watch": "Seyr ke", - "watchthispage": "Bewni ena per", + "watchthispage": "Şıma bewnê ena perre", "unwatch": "Teqib meke", "unwatchthispage": "temaşa kerdışê peli vındarn.", "notanarticle": "mebhesê peli niyo", @@ -1843,17 +1838,17 @@ "watchlist-hide": "Bınımne", "watchlist-submit": "Bımotne", "wlshowtime": "Periyoda zemani asenayışi:", - "wlshowhideminor": "vurriyayışê werdiy", + "wlshowhideminor": "vırnayışê werdiy", "wlshowhidebots": "boti", "wlshowhideliu": "karberê qeydıni", "wlshowhideanons": "karberê anonimi", - "wlshowhidepatr": "vurnayışê pawıteyi", - "wlshowhidemine": "vurnayışê mı", + "wlshowhidepatr": "Vırnayışê çım ra viyarniyaey", + "wlshowhidemine": "vırnayışê mı", "wlshowhidecategorization": "kategorizasyonê pele", "watchlist-options": "Tercihê liste da seyri", "watching": "Seyr ke...", "unwatching": "Seyr meke...", - "watcherrortext": "Sazanê listeda seyri vurnayış de pox ta \"$1\" xırabey vıcyê .", + "watcherrortext": "Key şıma lista seyrkerdışê xo \"$1\" rê vırnaêne, yew xeta veciya.", "enotif_reset": "Pela pêro ziyaret kerde deye mor ke", "enotif_impersonal_salutation": "{{SITENAME}} karber", "enotif_subject_deleted": "{{SITENAME}} de pera $1 {{gender:$2|$2}} esterıt.", @@ -1893,17 +1888,17 @@ "deleteotherreason": "Sebebo bin:", "deletereasonotherlist": "Sebebo bin", "deletereason-dropdown": "* Sebebê esterıtışê pêroyi\n** Vurnayışo nêwaşte (spam)\n** Vandalizm\n** Ä°xlalê heqa telifi\n** Waştışê nuştoği\n** Oryantasyono xırabe", - "delete-edit-reasonlist": "Sebebê vurnayışan bıvurne", + "delete-edit-reasonlist": "Sebebê vırnayışan bıvurnê", "delete-toobig": "no pel, pê $1 {{PLURAL:$1|tene vuriyayiş|tene vuriyayiş}}i wayirê yew tarixo kehen o.\nqey hewna nêşiyayişi wina pelani u {{SITENAME}}nêxerebnayişê keyepeli yew hed niyaya ro.", "delete-warning-toobig": "no pel wayirê tarixê vurnayiş ê derg o, $1 {{PLURAL:$1|revizyonê|revizyonê}} seri de.\nhewn a kerdışê ıney {{SITENAME}} şuxul bıne gırano;\nbı diqqet dewam kerê.", "deleteprotected": "Şıma nêşenê ena perer esternê, çıkı per starya ya.", "rollback": "vurnayişan tepiya bıger", - "rollbacklink": "peyser biyare", + "rollbacklink": "ageyrayış", "rollbacklinkcount": "$1 {{PLURAL:$1|vurnayış|vurnayışi}} peyd gıroti", "rollbacklinkcount-morethan": "$1 {{PLURAL:$1|vurnayış|vuranyışi}} tewr peyd gırot", "rollbackfailed": "Peyserardış nêbi", "cantrollback": "karbero peyin têna paşt dayo, no semedi ra vuriyayiş tepiya nêgeriyeni.", - "alreadyrolled": "[[User:$2|$2]] ([[User talk:$2|Talk]]{{int:pipe-separator}} hetê [[Special:Contributions/$2|{{int:contribslink}}]]) ra pelê ıney[[:$1]] de vurnayiş biyo u no vurnayiş tepiya nêgeriyeno;\nyewna ten pel de vurnayiş kerdo u pel tepiya nêgeriyeno.\n\noyo ke vurnayişo peyin kerdo: [[User:$3|$3]] ([[User talk:$3|Talk]]{{int:pipe-separator}}[[Special:Contributions/$3|{{int:contribslink}}]]).", + "alreadyrolled": "[[User:$2|$2]] ([[User talk:$2|Talk]]{{int:pipe-separator}} hetê [[Special:Contributions/$2|{{int:contribslink}}]]) ra perrê ıney[[:$1]] de vırnayış biyo u no vırnayiş tepeya nêgêriyeno;\nyewna ten perre de vırnayiş kerdo u perre tepiya nêgeriyeno.\n\noyo ke vırnayışo peyên kerdo: [[User:$3|$3]] ([[User talk:$3|Talk]]{{int:pipe-separator}}[[Special:Contributions/$3|{{int:contribslink}}]]).", "editcomment": "Xulasay vurnayışi: <em>$1</em> bi", "revertpage": "Hetê [[Special:Contributions/$2|$2]] ([[User talk:$2|Mesac]]) ra vurnayiş biyo u ney vurnayişi tepiya geriyayo u no [[User:$1|$1]] kes o ke cuwa ver revizyon kerdo revizyonê no kesi tepiya anciyayo.", "revertpage-nouser": "No keso ke vuriyayiş kerdo vuriyayişé{{GENDER:$1|[[User:$1|$1]]}} ker o", @@ -1934,7 +1929,7 @@ "protect-legend": "Pawıtışi araşt ke", "protectcomment": "Sebeb:", "protectexpiry": "Qediyeno:", - "protect_expiry_invalid": "Demo qediyayışi raşt niyo.", + "protect_expiry_invalid": "Demo peyên raşt niyo.", "protect_expiry_old": "Demo qediyayışi tarix dı.", "protect-unchain-permissions": "Zobina tercihanê mıhafezekerdışi kilıt meke", "protect-text": "Tı eşkeno bıvin u seviyê kılit-kerdışi bıvin '''$1'''.", @@ -2041,7 +2036,7 @@ "sp-contributions-blocked-notice-anon": "Eno adresê IPi bloke biyo.\nCıkewtışo tewr peyêno ke bloke biyo, cêr seba referansi belikerdeyo:", "sp-contributions-search": "Dekerdena cı geyrê", "sp-contributions-username": "Adresa IPy ya zi nameyê karberi:", - "sp-contributions-toponly": "Tenya rewizyonanê tewr peyniyan bimocne", + "sp-contributions-toponly": "Tenya tewr çım ra viyarnayışanê peyniyan bımocne", "sp-contributions-hideminor": "Vurriyayışanê werdiyan bınımne", "sp-contributions-submit": "Cı geyre", "whatlinkshere": "Linkê tedeestey", @@ -2072,7 +2067,7 @@ "ipbexpiry": "Qedyayış:", "ipbreason": "Sebeb:", "ipbreason-dropdown": "*sebebê verni-grewtışi yê pêroyi\n** malumatê şaş têare kerdış\n** Zerreyê pelan vetış\n** keyepelê teberi re gırey eştış\n** pelani re qıseyê tewşan(toşan) eştış\n** Tehditwari hereket/Taciz\n** yew ra ziyed hesaban xırab şuxulnayiş\n** nameyê karberi yo ke meqbul niyo", - "ipb-hardblock": "KArberê ke ena IP ra dekewte de wa vurnayış nêkerê", + "ipb-hardblock": "Enê adresanê IPy ra karberi vırnayış u cıkwetış ra bloke kerê", "ipbcreateaccount": "Hesab viraştişi blok bik", "ipbemailban": "Ena karber rê destur medî ke ay e-mail neşiravî", "ipbenableautoblock": "verniyê IPadresa peyin ê no karberi u wexta ke vurnayişi kerd ê IPadresani otomotik bıger.", @@ -2117,17 +2112,17 @@ "ipblocklist-submit": "Cı geyre", "ipblocklist-localblock": "blokê mehelli", "ipblocklist-otherblocks": "{{PLURAL:$1|blokê|blokê}} bini", - "infiniteblock": "ebedî", - "expiringblock": "roca $1i saeta $2i de qediyena", + "infiniteblock": "ebedi", + "expiringblock": "$1, $2 de qediyeno", "anononlyblock": "teyna karbero anonim", - "noautoblockblock": "otoblok nihebitîyeno", - "createaccountblock": "Hesab viraştîş blok biyo", - "emailblock": "e-mail blok biyo", - "blocklist-nousertalk": "ti nieşken pele minaqaşe xo bivurne", + "noautoblockblock": "otobloke dariya we", + "createaccountblock": "Hesab vıraştene men biya", + "emailblock": "e-mail men kerd", + "blocklist-nousertalk": "Perra xo'ya suhbeti vırnaene nêbena", "ipblocklist-empty": "Listay kılit kerdışi venga.", "ipblocklist-no-results": "Adresa IPya waştiye ya zi nameyê karberi kılit nêbiyo.", "blocklink": "kılit ke", - "unblocklink": "bloki wedare", + "unblocklink": "blokey wedare", "change-blocklink": "kılit kerdışi bıvurne", "contribslink": "iştıraki", "emaillink": "e-poste bırışe", @@ -2195,7 +2190,7 @@ "cant-move-user-page": "desturê şıma çino, şıma pelanê karberani bıkırışi (bê pelê cerıni).", "cant-move-to-user-page": "desturê şıma çino, şıma yew peli bıkırışi pelê yew karberi.", "newtitle": "Sernameyo newe:", - "move-watch": "Pela çıme u meqsedi seyr ke", + "move-watch": "Perra çımey u kırıştışi pıro bıdê", "movepagebtn": "Pele bere", "pagemovedsub": "Berdışi kerd temam", "movepage-moved": "'''\"$1\" berd \"$2\"'''", @@ -2230,7 +2225,7 @@ "imagenocrossnamespace": "Dosya, ca yo ke qey nameyê dosyayan nêbıbo nêkırışiyeno", "nonfile-cannot-move-to-file": "Ekê dosya niyê, cade namande dosyaya nêahulneyênê", "imagetypemismatch": "Tipê dosyey newey rê pê nêgıneno", - "imageinvalidfilename": "nameyê dosyayi ya hedefi meqbul niyo.", + "imageinvalidfilename": "Namey dosyao ke hedefo nêvêreno.", "fix-double-redirects": "rayberdış ê ke sernameyê orjinali re işaret keni rocane bıker.", "move-leave-redirect": "pey de yew rayberdış roni", "protectedpagemovewarning": "'''Diqet: No pel pawyeno, teyna serkari eşkeni bıvurni.'''\nWexta ke şıma no pel vurneni diqet bıkeri, loge bivini:", @@ -2283,7 +2278,7 @@ "importinterwiki": "Zewbina wiki ra ard", "import-interwiki-text": "qey kırıştışê zerreyi yew wiki u pel bıvıcinê.\ntarixê revizyon u nameyê nuştoxi pawyene.\nkarê zerredayişê benateyê wikiyani[[Special:Log/import|zerreyê rocaneyê kırıştî de]] qeyd beno.", "import-interwiki-sourcewiki": "Çıme wiki:", - "import-interwiki-sourcepage": "Çıme pela:", + "import-interwiki-sourcepage": "Perra çımey:", "import-interwiki-history": "Qeydanê pele pêrune kopya ke", "import-interwiki-templates": "Şablonan pêro zerre ke", "import-interwiki-submit": "Zerre ke", @@ -2298,7 +2293,7 @@ "importnopages": "Pel çino ke import bike", "imported-log-entries": " $1 {{PLURAL:$1|logê dekerdişi|loganê dekerdişan}} ard.", "importfailed": "Împort nebiy: <nowiki>$1</nowiki>", - "importunknownsource": "Çimeyê tip ê împortî nizanyano", + "importunknownsource": "Tipê importê çımeyiyo ke nêşınasiyeno.", "importcantopen": "Nieşkenî dosyayê împortî a bike", "importbadinterwiki": "Linkê înterwîkîyî nihebitiyeno", "importsuccess": "Împort qediya!", @@ -2328,12 +2323,13 @@ "import-logentry-upload-detail": "$1 {{PLURAL:$1|revizyon|revizyon}} debya zere", "import-logentry-interwiki-detail": "$2 per da $1 ra{{PLURAL:$1|revizyon|revizyon}} debya zere", "javascripttest": "Cerebnayışê JavaScripti", + "javascripttest-pagetext-unknownaction": "Kerdışo ke nêşınasiyeno \"$1\".", "javascripttest-qunit-intro": "Mediawiki.org dı [dokumanê $1] bıvinê.", "tooltip-pt-userpage": "Pela {{GENDER:|şımaya karberi}}", "tooltip-pt-anonuserpage": "pelê karberê IPyi", "tooltip-pt-mytalk": "Pela {{GENDER:|toya}} werênayışi", "tooltip-pt-anontalk": "vurnayiş ê ke no Ipadresi ra biyo muneqeşa bıker", - "tooltip-pt-preferences": "Tercihê {{GENDER:|to}}", + "tooltip-pt-preferences": "Tercihê {{GENDER:|şıma}}", "tooltip-pt-watchlist": "Listey peranê ke to gırotê seyr kerdış", "tooltip-pt-mycontris": "Yew lista iştırakanê {{GENDER:|şıma}}", "tooltip-pt-login": "Mayê şıma ronıştış akerdışi rê dawet keme; labelê ronıştış mecburi niyo", @@ -2349,7 +2345,7 @@ "tooltip-ca-delete": "Ena pele bestere", "tooltip-ca-undelete": "Perer fına zey verê esternayışi kerê", "tooltip-ca-move": "Ena pele bıkırışe", - "tooltip-ca-watch": "Ena pele lista xoya seyrkerdışi ke", + "tooltip-ca-watch": "Ena perre lista xoya seyrkerdışi ke", "tooltip-ca-unwatch": "Ena pele lista xoya seyrkerdışi ra vece", "tooltip-search": "{{SITENAME}} de cı geyre", "tooltip-search-go": "Ebe nê namey tami şo yew pela ke esta", @@ -2382,11 +2378,11 @@ "tooltip-ca-nstab-template": "Şabloni bıvêne", "tooltip-ca-nstab-help": "Pela peşti bıvêne", "tooltip-ca-nstab-category": "Pela kategoriye bıvêne", - "tooltip-minoredit": "Nay vırnayışa werdi nışan bıkeré", + "tooltip-minoredit": "Ney vırnayışo werdi nışan bıkerê", "tooltip-save": "Vurnayışanê xo qeyd ke", "tooltip-publish": "Vurnayışê xo vıla kı", "tooltip-preview": "Vurnayışanê xo çım ra bıviyarnê. Qeydkerdış ra ver bıgurê cı!", - "tooltip-diff": "Metni sero vurnayışan mocneno", + "tooltip-diff": "Kamci vırnayışê ke şıma nuştey sero kerdê, inan bıvênê.", "tooltip-compareselectedversions": "Ena per de ferqê rewziyonan de dı weçinaya bıvinê", "tooltip-watch": "Ena pele lista xoya seyrkerdışi ke", "tooltip-watchlistedit-normal-submit": "Sernuşteyan wedare", @@ -2398,8 +2394,6 @@ "tooltip-preferences-save": "Terciha qeyd ke", "tooltip-summary": "Xulasa kılmek bınuse", "interlanguage-link-title": "$1 - $2", - "common.css": "/************************************************\n * COMMON CSS\n *\n * Any CSS placed in this page will be used on \n * all skins, please think carefully about if it\n * belongs here (and not in one of the skin CSS\n * pages) before adding it. Thanks.\n ************************************************/\n\n/* <table class=\"highlighthovertable\"> */\ntable.highlighthovertable tr:hover,\ntable.highlighthovertable tr:hover td,\ntable.mw-ext-translate-groupstatistics tr:hover,\ntable.mw-ext-translate-groupstatistics tr:hover td {\n background-color: white;\n}\n\n\n/* Babel wrapper layout. */\n/* XXX: This is either redundant or should be in-core */\n/* @noflip */table.mw-babel-wrapper {\n\twidth: 238px;\n\tfloat: right;\n\tclear: right;\n\tmargin: 1em;\n\tborder-style: solid;\n\tborder-width: 1px;\n\tborder-color: #99B3FF;\n}\n\n/* Babel box layout. */\n/* @noflip */div.mw-babel-box {\n\tfloat: left;\n\tclear: left;\n\tmargin: 1px;\n}\n\ndiv.mw-babel-box table {\n\twidth: 238px;\n}\n\ndiv.mw-babel-box table th {\n\twidth: 238px;\n\twidth: 45px;\n\theight: 45px;\n\tfont-size: 14pt;\n\tfont-family: monospace;\n}\n\ndiv.mw-babel-box table td {\n\tfont-size: 8pt;\n\tpadding: 4pt;\n\tline-height: 1.25em;\n}\n\n/* Babel box colours. */\ndiv.mw-babel-box-0 {\n\tborder: solid #B7B7B7 1px;\n}\n\ndiv.mw-babel-box-1 {\n\tborder: solid #C0C8FF 1px;\n}\n\ndiv.mw-babel-box-2 {\n\tborder: solid #77E0E8 1px;\n}\n\ndiv.mw-babel-box-3 {\n\tborder: solid #99B3FF 1px;\n}\n\ndiv.mw-babel-box-4 {\n\tborder: solid #CCCC00 1px;\n}\n\ndiv.mw-babel-box-5 {\n\tborder: solid #F99C99 1px;\n}\n\ndiv.mw-babel-box-N {\n\tborder: solid #6EF7A7 1px;\n}\n\ndiv.mw-babel-box-0 table th {\n\tbackground-color: #B7B7B7;\n}\n\ndiv.mw-babel-box-1 table th {\n\tbackground-color: #C0C8FF;\n}\n\ndiv.mw-babel-box-2 table th {\n\tbackground-color: #77E0E8;\n}\n\ndiv.mw-babel-box-3 table th {\n\tbackground-color: #99B3FF;\n}\n\ndiv.mw-babel-box-4 table th {\n\tbackground-color: #CCCC00;\n}\n\ndiv.mw-babel-box-5 table th {\n\tbackground-color: #F99C99;\n}\n\ndiv.mw-babel-box-N table th{\n\tbackground-color: #6EF7A7;\n}\n\ndiv.mw-babel-box-0 table {\n\tbackground-color: #E8E8E8;\n}\n\ndiv.mw-babel-box-1 table {\n\tbackground-color: #F0F8FF;\n}\n\ndiv.mw-babel-box-2 table {\n\tbackground-color: #D0F8FF;\n}\n\ndiv.mw-babel-box-3 table {\n\tbackground-color: #E0E8FF;\n}\n\ndiv.mw-babel-box-4 table {\n\tbackground-color: #FFFF99;\n}\n\ndiv.mw-babel-box-5 table {\n\tbackground-color: #F9CBC9;\n}\n\ndiv.mw-babel-box-N table {\n\tbackground-color: #C5FCDC;\n}\n\n.babel-box td.babel-footer {\n\ttext-align: center;\n}\n\n/* Styling for portals. */\ndiv.table {\n display: table;\n vertical-align: top;\n width: 100%;\n}\n\ndiv.table-row {\n display: table-row;\n vertical-align: top;\n}\n\ndiv.table-cell {\n display: table-cell;\n vertical-align: top;\n}\n\nbody.ns-100 table.mw-babel-wrapper {\n border: solid 1px #bbbbbb;\n background-color: #f0f0f0;\n margin-left: 1em;\n}\n\n.graytext {\n color: #aaa;\n}\n\n/* On [[Special:RecentChanges]] and [[Special:Watchlist]] make the new pages symbol bold green and the minor edit symbol gray. */\n.newpage {\n color: green;\n font-weight: bold\n}\n\n.minoredit,\n.minor {\n color: gray;\n}\n\n/* Monospace diffs, this makes more sense since diffs show what would be seen in the edit box. */\n/* Note: Anno 2012 many browsers don't use monospace in the textarea anymore by default, notably Chrome and Safari don't (unless the user overrides this in the preferences) */\n.diff-context,\n.diff-deletedline,\n.diff-addedline {\n font-family: monospace, \"Courier New\";\n/* Just guess does the stupid wikidiff2 extensions add extra whitespace around..... */\n white-space: -moz-pre-wrap;\n white-space: pre-wrap;\n}\n \n.diffchange {\n border: 1px dotted rgb( 170, 170, 170 );\n}\n\n/* It is unclear what the following CSS does, please add comments if you can clarify. */\n/* The box which is 400px high and if its content is longer, it gets the scrollbar */\n.scrollme {\n overflow: scroll;\n width: 100%;\n height: 400px;\n}\n\n/* Standard Navigationsleisten, aka box hiding thingy from .de. Documentation at [[Wikipedia:NavFrame]]. */\ndiv.Boxmerge, div.NavFrame { margin: 0; padding: 4px; border-collapse: collapse;}\ndiv.Boxmerge div.NavFrame { border-style: none; border-style: hidden; }\ndiv.NavFrame + div.NavFrame { border-top-style: none; border-top-style: hidden; }\ndiv.NavFrame div.NavHead { height: 1.6em; position:relative; }\ndiv.NavEnd { margin: 0; padding: 0; line-height: 1px; clear: both; }\na.NavToggle { position: absolute; top: 0; right: 5px; }\n.note-flaggedrevs * a.NavToggle { right: 12px; } /* For [[Template:Flagged Revs]] */\n\n/* Template:Languages */\n.bw-languages {\n border: 1px solid #aaaaaa;\n padding: 0.2em;\n border-collapse: collapse;\n line-height: 1.2;\n font-size: 95%;\n margin: 1px 1px;\n}\n.bw-languages-title {\n width: 180px;\n border: 1px solid #aaaaaa;\n background: #EEF3E2;\n padding: 0.5em;\n font-weight: bold;\n}\n.bw-languages-links { padding:0.5em; background:#F6F9ED; }\n\n/* Senseless in this project */\n#editpage-copywarn { display: none; }\n\n/* Hide warnings about bad links on MediaWiki:Common.css */\n.page-MediaWiki_Common_css .mw-translate-messagechecks { display: none; }\n\n/*******************\n** Faciliate RTL translation\n*******************/\n/* @noflip */\n#bodyContent .arabic a {\n\tpadding-right:0;\n\tbackground:none;\n}\n\n.vatop tr, tr.vatop, .vatop td, .vatop th {\n vertical-align: top;\n}\n\n.bw-languages {\n direction: ltr;\n}\n\n/* prevent wrapping of lines in LQT TOC if not necessary */\ntable.lqt_toc {\n\twidth: auto;\n}\n\n/* [[m:MediaZilla:35337]] */\n@media (-webkit-min-device-pixel-ratio: 1.5), (min-resolution: 1.5dppx) {\n #p-logo a {\n background-image: url(\"//translatewiki.net/images/thumb/7/7c/Translatewiki-logo-bare.svg/152px-Translatewiki-logo-bare.svg.png\") !important;\n background-size: auto 135px;\n }\n}\n@media (-webkit-min-device-pixel-ratio: 2), (min-resolution: 2dppx) {\n #p-logo a {\n background-image: url(\"//translatewiki.net/images/thumb/7/7c/Translatewiki-logo-bare.svg/202px-Translatewiki-logo-bare.svg.png\") !important;\n background-size: auto 135px;\n }\n}\n\n/* qqq visibility, [[Thread:Support/Suggestion: Add this CSS to MediaWiki:Common.css]] */\n \n.mw-sp-translate-edit-info .mw-content-ltr {\n background-position:left center;\n padding-left:45px;\n}\nfieldset.mw-sp-translate-edit-info .mw-centent-rtl {\n background-position:right center;\n padding-right:45px;\n}\n\n/* Semantic MediaWiki - make special properties easier to identify */\n\n.smwbuiltin a,\n.smwbuiltin a.new {\n\tcolor: #FF8000;\n}\n\n/* Recentchangestext toggle link */\n.white-link a {\n color: #fff;\n}", - "common.js": "/* Any JavaScript here will be loaded for all users on every page load. */", "anonymous": "{{PLURAL:$1|karberê|karberê}} anonimi yê keyepelê {{SITENAME}}i", "siteuser": "karberê {{SITENAME}}i $1", "anonuser": "karberê anonim o {{SITENAME}}i $1", @@ -2412,7 +2406,7 @@ "nocredits": "qey no peli hema/hona yew şınasnameyi mewcud niyo", "spamprotectiontitle": "filtreya spami yo pawıtışê verba-vındertışi", "spamprotectiontext": "pel o ke şıma waşt qeyd bıkeri hetê filtreya spami ra blok bı. ihtimalo gırdek o teber-gıreyê listeya sabıqayi ra yo.", - "spamprotectionmatch": "nuşte yo ke rıcnayoxê spami herikneno: $1", + "spamprotectionmatch": "nuşteyo ke rıcnayoxê spami herikneno: $1", "spambot_username": "wikimedya spam-pakkerdışi", "spam_reverting": "agêriyeno revizyon o ke tawayê $1 ıney piya çiniyo", "spam_blanking": "Revizyonê gredê $1 vineyay, wa weng kero", @@ -2445,7 +2439,7 @@ "pageinfo-firsttime": "Vıraştena tarixê perrer", "pageinfo-lastuser": "Vurnayoğo peyên", "pageinfo-lasttime": "Deme u vurnayışo peyên", - "pageinfo-edits": "Amarina vurnayışan pêro", + "pageinfo-edits": "Amarê vırnayışano pêroyi", "pageinfo-authors": "Amarina nuştekaran pêro", "pageinfo-recent-edits": "Amariya vurnayışan ($1 ra nata)", "pageinfo-recent-authors": "Amarina nuştekaran pêro", @@ -2469,8 +2463,8 @@ "markaspatrolledtext": "Ena pele kontrol biyayi nışan ke", "markedaspatrolled": "Nişan biyo ke verni de devriye biyo", "markedaspatrolledtext": "Versiyone weçinaye [[:$1]] nişan biyo ke devriye biyo", - "rcpatroldisabled": "Dewriyaya vurnayışê peyêni nêxebetiyena", - "rcpatroldisabledtext": "Devriyeyê vurnayışê peyêni inke kefilnaye biyo u nihebitiyeno", + "rcpatroldisabled": "Dewriyay vırnayışê peyêni nêxebetiyena", + "rcpatroldisabledtext": "Dewriya vırnayışanê peyênan nêgırweniyena.", "markedaspatrollederror": "Nişan nibeno ke devriye biyo", "markedaspatrollederrortext": "Ti gani revizyon işaret bike ke Nişanê devriye biyo", "markedaspatrollederror-noautopatrol": "Ti nieşkeno ke vurnayişê xo nişan bike ke devriye biyê.", @@ -2487,7 +2481,7 @@ "filedelete-old-unregistered": "Ena dosya revizyoni yê weçinayi \"$1\" database ma de çini yo.", "filedelete-current-unregistered": "Ena dosyayê weçinayi \"$1\" database ma de çini yo.", "filedelete-archive-read-only": "Ena direktorê arşivi \"$1\" webserver de nieşkeno binusi.", - "previousdiff": "← Vurnayışê kıhanyer", + "previousdiff": "← Vırnayışê kıhanêr.", "nextdiff": "Vurnayışo peyên →", "mediawarning": "'''Teme''': Na dosya de belkia kodê xırabıni estê.\nGurênayışê nae de, beno ke sistemê şıma zerar bıvêno.", "imagemaxsize": "Lımita ebata resimi:<br />''(qande akerdışa perande dosyayan)''", @@ -2521,7 +2515,7 @@ "newimages-hidepatrolled": "Selaganë dewriyeyan bıvinë", "noimages": "Çik çini yo.", "ilsubmit": "Cı geyre", - "bydate": "goreyê zemani", + "bydate": "Gorey zemani", "sp-newimages-showfrom": "Dosyayanê newiyanê ke be $1, $2 ra dest pêkenê bımocne", "video-dims": "$1, $2 × $3", "seconds-abbrev": "$1 san", @@ -2611,7 +2605,7 @@ "exif-primarychromaticities": "Kromaticitiyê eveli", "exif-ycbcrcoefficients": "Cayê rengi yê transformasyon metriksê koefişinti", "exif-referenceblackwhite": "Çiftyê siya u sipe değerê referansi", - "exif-datetime": "Zeman u tarixê vurnayışê dosya", + "exif-datetime": "Zeman u tarixê vırnayışê dosya", "exif-imagedescription": "Serê resimi", "exif-make": "Vıraştoğê kamera", "exif-model": "Modelê kamera", @@ -2625,7 +2619,7 @@ "exif-compressedbitsperpixel": "Modê komprasyonê resimi", "exif-pixelxdimension": "Herayeya resimi", "exif-pixelydimension": "Berzeya resimi", - "exif-usercomment": "Mışewreyê karberi", + "exif-usercomment": "Mışewrey karberi", "exif-relatedsoundfile": "Derhekê dosya yê vengi", "exif-datetimeoriginal": "Demê afernayışê dayeyo sıfteyıni", "exif-datetimedigitized": "Dema dijital kerdışi", @@ -2658,7 +2652,7 @@ "exif-subjectlocation": "cayê kerdoxi", "exif-exposureindex": "rêzê (indexê) pozi", "exif-sensingmethod": "metodê hiskerdışi", - "exif-filesource": "çimeyê dosyayi", + "exif-filesource": "Çımey dosya", "exif-scenetype": "tipa sehneyi", "exif-customrendered": "karê resmê xususiyi", "exif-exposuremode": "poz kerdışi", @@ -3188,13 +3182,13 @@ "fileduplicatesearch-result-1": "Dosyayê ''$1î'' de hem-kopya çini yo.", "fileduplicatesearch-result-n": "Dosyayê ''$1î'' de {{PLURAL:$2|1 hem-kopya|$2 hem-kopyayî'}} esto.", "fileduplicatesearch-noresults": "Ebe namey \"$1\" ra dosya nêdiyayê.", - "specialpages": "Perrê hısusi", + "specialpages": "Perrê xısusiy", "specialpages-note-top": "Kıtabek", "specialpages-note": "* Pelê xasê normali.\n* <span class=\"mw-specialpagerestricted\">Pelê xasê nımıtey.</span>", "specialpages-group-maintenance": "Raporê pawıtışi", "specialpages-group-other": "Pelê xısusiyê bini", "specialpages-group-login": "Dekew / hesab vıraz", - "specialpages-group-changes": "Vurnayışê peyêni û qeydi", + "specialpages-group-changes": "Vırnayışê peyêni u qeydi", "specialpages-group-media": "Raporê medya û barkerdışi", "specialpages-group-users": "Karberi u heqê inan", "specialpages-group-highuse": "Peleyê ke vêşi karênê", @@ -3299,7 +3293,6 @@ "log-name-managetags": "Qeydê idareyê etiketi", "log-name-tag": "Qeydê etiketi", "rightsnone": "(çıniyo)", - "revdelete-summary": "kılmvatışê vuriyayişi", "feedback-adding": "Pela rê peyxeberdar defêno...", "feedback-bugcheck": "Harika! Sadece [xırabina ke $1 ] çınyayışê cı kontrol keno.", "feedback-bugnew": "Mı kontrol kı. Xetay newi xeber kı.", @@ -3315,45 +3308,12 @@ "feedback-thanks": "Teşekkur kemê! Vatışê şıma pela da \"[$2 $1]\" esta.", "searchsuggest-search": "{{SITENAME}} de cı geyre", "searchsuggest-containing": "estebiyaye...", - "api-error-badaccess-groups": "Ena wiki de dosya barkerdışi rê mısade nêdeyêno.", "api-error-badtoken": "Xetay zerreki: Antışo xırabın.", - "api-error-copyuploaddisabled": "URL barkerdış ena waster dı qefılyayo.", - "api-error-duplicate": "Pele de xora be nê zerreki ra {{PLURAL:$1|dosyaya bine esta|dosyeyê bini estê}}.", - "api-error-duplicate-archive": "Ena {{PLURAL:$1|vurneyaya zey na dosya|zerrey cı zey dosya}} aseno,feqet {{PLURAL:$1|ena dosya|tewr veri}} besterneyaya.", - "api-error-empty-file": "Dosyaya ke şıma rışta venga.", "api-error-emptypage": "Newi, pelaya veng vıraştışi rê mısade nêdeyêno.", - "api-error-fetchfileerror": "Xırabiya zerrek:Dosya grotış dı tay çi raşt nêşı.", - "api-error-fileexists-forbidden": "Jû dosya be nê nameyê \"$1\" ra xora esta, u naye sero nêşeno ke bınuşiyo.", - "api-error-fileexists-shared-forbidden": "Jû dosya be nameyê \"$1\" ra depoyê doyeyanê barekerdeyan de xora esta, u naye sero nêşeno ke bınuşiyo.", - "api-error-file-too-large": "Dosyaye ke şıma rışta zaf gırda.", - "api-error-filename-tooshort": "Namayê dosyayi zaf kilm a.", - "api-error-filetype-banned": "Tipê ena dosya qedexe biya.", - "api-error-filetype-banned-type": "$1 {{PLURAL:$4|babetê dosyayo destûrın niyo|babetên dosyeyanê destûrınan niyê}}. {{PLURAL:$3|Babetê dosyayo destûrın|Babetên dosyeyanê destûrınan}} $2.", - "api-error-filetype-missing": "Derganiya dosya kemiya", - "api-error-hookaborted": "Vurnayişê tu ke to cerbna pê yew çengal ra terkneya.", - "api-error-http": "Xırabiya zerreki:Wasteriya irtabet bırya.", - "api-error-illegal-filename": "Ena nameyê dosyayi kebul nibena.", - "api-error-internal-error": "Xırabiye zerrek:Na wikide barkerdış de şıma dı çıyê raşt nêşı.", - "api-error-invalid-file-key": "Xırabiye zerrek:Ä°dari depokerdışê dosya nêvineya.", - "api-error-missingparam": "Xırabiye zerrek:Parametre waştış dı xırabin", - "api-error-missingresult": "Xırabiya zerrek:Kopya kerdışê cı nêbı.", - "api-error-mustbeloggedin": "Dosya barkerdışi re cıkewtış icab keno.", - "api-error-mustbeposted": "Zırabiya zerrek:HTTP POST waştış icab keno", - "api-error-noimageinfo": "Barkerdışê dosya temamya lakin wasterira marê malumat nêdeyayo.", - "api-error-nomodule": "Xırabiya zerrek:Sazkerdışê modul dê barkerdışi nêvıraziyayo.", - "api-error-ok-but-empty": "Xırabiya zerrek:Wastero cıwan nêdano.", - "api-error-overwrite": "Ser yew dosyayê ke hama esta, ser ey qeyd nibena.", - "api-error-stashfailed": "Xırabiya zerrek:Wasteri idari dosyey kerdi vıni.", "api-error-publishfailed": "Xetay zerrey: Cıgeyrayoği nêşiya dosya rocane akero.", - "api-error-stasherror": "Dosya embari rê ke bar biye xeta veciye.", - "api-error-timeout": "Cıwab dayışê wasteri peyra mend.", - "api-error-unclassified": "Yew xeteyê nizanyeni biya.", - "api-error-unknown-code": "$1'dı jew xeta vıciye", - "api-error-unknown-error": "Zerre xırabin:Dasoya barkerdış de tay çi raşt nêşı.", + "api-error-stashfailed": "Xırabiya zerrek:Wasteri idari dosyey kerdi vıni.", "api-error-unknown-warning": "Ä°qazo nêzanaye: \"$1\".", "api-error-unknownerror": "$1'dı jew xeta vıciye", - "api-error-uploaddisabled": "BArkerdış ena wikide qefılneyayo", - "api-error-verification-error": "Dosya xırabiya yana derganiya cı xıraba.", "duration-seconds": "$1 {{PLURAL:$1|saniya|saniyey}}", "duration-minutes": "$1 {{PLURAL:$1|deqa|deqey}}", "duration-hours": "($1 {{PLURAL:$1|seate|seati}})", @@ -3390,7 +3350,7 @@ "expand_templates_generate_xml": "Dara XML arêdayoği bımocne", "expand_templates_generate_rawhtml": "Xam HTML'i bıvin", "expand_templates_preview": "Verqayt", - "pagelanguage": "Zıwanê perer bıvırnê", + "pagelanguage": "Zıwanê perre bıvırnê", "pagelang-name": "Pele", "pagelang-language": "Zıwan", "pagelang-use-default": "Zıwanê hesabiyayeyi bıgurene", diff --git a/languages/i18n/dsb.json b/languages/i18n/dsb.json index f59d719adf..00c1e2043e 100644 --- a/languages/i18n/dsb.json +++ b/languages/i18n/dsb.json @@ -497,8 +497,6 @@ "passwordreset-emaildisabled": "E-mailowe funkcije su se na toś tom wikiju znjemóžnili.", "passwordreset-username": "Wužywarske mě:", "passwordreset-domain": "Domena:", - "passwordreset-capture": "E-mail se woglědaś?", - "passwordreset-capture-help": "Jolic nakśickujoÅ¡ toś ten kašćik, e-mail (z nachylnym gronidłom) buźo se pokazaś a wužywarjeju słaś.", "passwordreset-email": "E-mailowa adresa:", "passwordreset-emailtitle": "Kontowe drobnostki na {{GRAMMAR:lokatiw|{{SITENAME}}}}", "passwordreset-emailtext-ip": "Něchten (nejskerjej ty, z IP-adresu $1) jo anulěrowanje gronidła za {{GRAMMAR:akuzatiw|{{SITENAME}}}} pominał ($4). {{PLURAL:$3|Slědujuce wužywarske konto jo|Slědujucej wužywarskej konśe stej|Slědujuce wužywarske konta su}} z toś tej e-mailoweju adresu {{PLURAL:$3|zwězane|zwězanej|zwězane}}:\n\n$2\n\n{{PLURAL:$3|Toś to nachylne gronidło spadnjo|Toś tej nachylnej gronidle spadnjotej|Toś te nachylne gronidła spadnu}} za {{PLURAL:$5|jaden źeń|$5 dnja|$5 dny|$5 dnjow}}.\nTy by měł se něnto pśizjawiś a nowe gronidło wustajiś. Jolic něchten drugi jo toś to napÅ¡aÅ¡owanje pósłał, abo jolic sy se zasej na spócetne gronidło spomnjeł a wěcej njocoÅ¡ jo změniś, móžoÅ¡ toś to zdźělenje ignorěrowaś a swójo stare gronidło dalej wužywaś.", @@ -871,8 +869,6 @@ "saveprefs": "Składowaś", "restoreprefs": "WÅ¡ykne standardne nastajenja wótnowiś (we wÅ¡ych wótrězkach)", "prefs-editing": "Wobźěłaś", - "rows": "Rědki:", - "columns": "Słupy:", "searchresultshead": "Pytaś", "stub-threshold": "Formatěrowanje <a href=\"#\" class=\"stub\">wótkaza na zarodk</a> (w bytach):", "stub-threshold-disabled": "Znjemóžnjony", @@ -961,12 +957,9 @@ "userrights-reason": "Pśicyna:", "userrights-no-interwiki": "NjamaÅ¡ pÅ¡awo wužywarske pÅ¡awa w drugich wikijach změniś.", "userrights-nodatabase": "Datowa banka $1 njeeksistěrujo abo njejo lokalna.", - "userrights-nologin": "MusyÅ¡ se z administratorowym kontom [[Special:UserLogin|pśizjawiś]], aby wužywarske pÅ¡awa změnił.", - "userrights-notallowed": "NjamaÅ¡ trěbne pÅ¡awa, aby wužywarske pÅ¡awa pśipokazało abo zajmjeł.", "userrights-changeable-col": "Kupki, kótarež móžoÅ¡ změniś", "userrights-unchangeable-col": "Kupki, kótarež njamóžoÅ¡ změniś", "userrights-conflict": "Konflikt změnow wužywarskich pÅ¡awow! PÅ¡osym pśeglědaj a wobkÅ¡uś swóje změny.", - "userrights-removed-self": "Sy swóje pÅ¡awa wuspěšnje wótpórał. Togodla njamaÅ¡ južo pśistup na toś ten bok měś.", "group": "Kupka:", "group-user": "wužywarje", "group-autoconfirmed": "wobkÅ¡uśone wužywarje", @@ -1053,7 +1046,6 @@ "right-siteadmin": "Datowu banku zastajiś a zastajenje wótpóraś", "right-override-export-depth": "Boki inkluziwnje wótkazanych bokow až do dłyma 5 eksportěrowaś", "right-sendemail": "Drugim wužywarjam e-mail pósłaś", - "right-passwordreset": "E-maile za slědkstajanje gronidłow se woglědaś", "newuserlogpage": "Protokol nowych wužywarjow", "newuserlogpagetext": "To jo protokol wó nowych wužywarskich kontow.", "rightslog": "Protokol wužywarskich pÅ¡awow", @@ -1224,7 +1216,7 @@ "uploaddisabledtext": "Nagraśa datajow su znjemóžnjone.", "php-uploaddisabledtext": "Nagraśa PHP-datajow su znjemóžnjone. PÅ¡osym pśekontrolěruj nastajenje file_uploads.", "uploadscripted": "Toś ta dataja wopśimjejo HTML abo script code, kótaryž móžo wót browsera se zamólnje wuwjasć.", - "uploadscriptednamespace": "Toś ta SVG-dataja wopśimujo njedowólony mjenjowy rum '$1'", + "uploadscriptednamespace": "Toś ta SVG-dataja wopśimujo njedowólony mjenjowy rum '<nowiki>$1</nowiki>'", "uploadinvalidxml": "XML w nagratej dataji njedajo se parsowaś.", "uploadvirus": "Toś ta dataja ma wirus! Nadrobnosći: $1", "uploadjava": "Toś ta dataja jo ZIP-dataja, kótaraž wopśimujo dataju .class z Javy.\nNagrawanje datajow Javy njejo dowólone, dokulaž mógli wobjeźenje wěstotnych wobgranicowanjow zmóžniś.", @@ -2936,45 +2928,12 @@ "feedback-thanks": "Źěkujomy se! Twój komentar jo se k bokoju \"[$2 $1]\" pósłał.", "searchsuggest-search": "Pytaś", "searchsuggest-containing": "wopśimujo...", - "api-error-badaccess-groups": "NjamaÅ¡ pÅ¡awo dataje do toś togo wikija nagraś.", "api-error-badtoken": "Nutśikowna zmólka: Wopacny token", - "api-error-copyuploaddisabled": "Nagrawanje pśez URL jo na toś tom serwerje znjemóžnjone.", - "api-error-duplicate": "{{PLURAL:$1|Jo|Stej|Su|Jo}} južo {{PLURAL:$1|druga dataja|drugej dataji|druge dataje|drugich datajow}} z tym samym wopśimjeśim na sedle", - "api-error-duplicate-archive": "{{PLURAL:$1|Jo była druga dataja|Stej byłej drugej dataji|Su byli druge dataje|Jo było drugich datajow}} južo na websedle z tym samym wopśimjeśim, ale {{PLURAL:$1|jo se wulaÅ¡owała|stej se wulaÅ¡owałej|su se wulaÅ¡owali|jo se wulaÅ¡owało}}.", - "api-error-empty-file": "Dataja, kótaruž sy nagrał, jo prozna była.", "api-error-emptypage": "Napóranje nowych, proznych bokow njejo dowólone.", - "api-error-fetchfileerror": "Nutśikowna zmólka: Pśi wobstarowanju dataje něco njejo se raźiło.", - "api-error-fileexists-forbidden": "Dataja z mjenim \"$1\" južo eksistěrujo, a njedajo se pśepisaś.", - "api-error-fileexists-shared-forbidden": "Dataja z mjenim \"$1\" južo eksistěrujo w zgromadnem datajowem repozitoriumje a njedajo se pśepisaś.", - "api-error-file-too-large": "Dataja, kótaruž sy nagrał, jo pśewjelika była.", - "api-error-filename-tooshort": "Datajowe mě jo pśekrotke.", - "api-error-filetype-banned": "Toś ten datajowy typ jo zakazany.", - "api-error-filetype-banned-type": "$1 {{PLURAL:$4|njejo dowólony datajowy typ|njejstej dowólenej datajowej typa|njejsu dowólone datajowe typy|njejsu dowólone datajowe typy}}. {{PLURAL:$3|Dowólony datajowy typ jo|Dowólenej datajowej typa stej|Dowólone datajowe typy su}} $2.", - "api-error-filetype-missing": "Dataja njama datajowu kóńcowku.", - "api-error-hookaborted": "Změna, kótaruž sy wopytał pśewjasć, jo se pśetergnuła pśez rozÅ¡yrjenje.", - "api-error-http": "Nutśikowna zmólka: Zwisk ze serwerom njemóžno.", - "api-error-illegal-filename": "Datajowe mě njejo dowólone.", - "api-error-internal-error": "Nutśikowna zmólka: Pśi pśeźěłowanju twójogo nagraśa na wiki něco njejo se raźiło.", - "api-error-invalid-file-key": "Nutśikowna zmólka: Dataja njejo se w temporernem składowaku namakała.", - "api-error-missingparam": "Nutśikowna zmólka: Felujuce parametry pśi napÅ¡aÅ¡owanju.", - "api-error-missingresult": "Nutśikowna zmólka: Njedajo se zwěsćiś, lěc kopěrowanje jo se raźiło.", - "api-error-mustbeloggedin": "MusyÅ¡ pśizjawjony byś, aby dataje nagrał.", - "api-error-mustbeposted": "Nutśikowna zmólka: NapÅ¡aÅ¡owanje pomina se HTTP POST.", - "api-error-noimageinfo": "Nagraśe jo se raźiło, ale serwer njejo nam žedne informacije wó dataji dał.", - "api-error-nomodule": "Nutśikowna zmólka: Žeden modul nastajony.", - "api-error-ok-but-empty": "Nutśikowna zmólka: Žedne wótegrono wót serwera.", - "api-error-overwrite": "Pśepisowanje eksistujuceje dataje njejo dowólone.", - "api-error-stashfailed": "Nutśikowna zmólka: Serwer njejo mógał temporernu dataju składowaś.", "api-error-publishfailed": "Nutśkowna zmólka: Serwer njejo mógł nachylnu dataju wozjawiś.", - "api-error-stasherror": "Pśi nagrawanju dataje do chowanki jo zmólka nastała.", - "api-error-timeout": "Serwer njejo we wócakanem casu wótgronił.", - "api-error-unclassified": "Njeznata zmólka jo nastała.", - "api-error-unknown-code": "Njeznata zmólka: \"$1\"", - "api-error-unknown-error": "Nutśikowna zmólka: Pśi nagrawanju twójeje dataje něco njejo se raźiło.", + "api-error-stashfailed": "Nutśikowna zmólka: Serwer njejo mógał temporernu dataju składowaś.", "api-error-unknown-warning": "Njeznate warnowanje: $1", "api-error-unknownerror": "Njeznata zmólka: \"$1\".", - "api-error-uploaddisabled": "Nagraśa su na toś tom wikiju znjemóžnjone.", - "api-error-verification-error": "Toś ta dataja by mógła wobkÅ¡kóźona byś abo wopacnu kóńcowku měś.", "duration-seconds": "$1 {{PLURAL:$1|sekunda|sekunźe|sekundy|sekundow}}", "duration-minutes": "$1 {{PLURAL:$1|minuta|minuśe|minuty|minutow}}", "duration-hours": "$1 {{PLURAL:$1|góźina|góźinje|góźiny|góźinow}}", diff --git a/languages/i18n/dty.json b/languages/i18n/dty.json index 05516e9d86..cb1e28621d 100644 --- a/languages/i18n/dty.json +++ b/languages/i18n/dty.json @@ -175,6 +175,7 @@ "searcharticle": "जाओ", "history": "पाना इतिहास", "history_short": "पानाको इतिहास", + "history_small": "इतिहास", "updatedmarker": "मेरो अन्तिम घुमाई पछि अद्यतन गरियाको", "printableversion": "छाप्द मिल्ल्या संस्करण", "permalink": "स्थायी लिङ्क", @@ -207,6 +208,7 @@ "views": "अवलोकन गरऽ", "toolbox": "औजारअन", "tool-link-userrights": "परिवर्तन{{GENDER:$1|प्रयोगकर्ता}}समूहहरू", + "tool-link-userrights-readonly": "{{GENDER:$1|प्रयोगकर्ता}} समूहअन तकऽ", "tool-link-emailuser": "{{GENDER:$1|प्रयोगकर्ता}}लाई एइ इमेलमी पठाऽ", "userpage": "प्रयोगकर्ता पाना हेर्न्या", "projectpage": "प्रोजेक्ट पानो हेर्न्या", @@ -378,6 +380,7 @@ "invalidtitle-unknownnamespace": "अपछ्याणो नाउँबार अङ्क $1 रे पाठ \"$2\" भया: अमान्य शीर्षक", "exception-nologin": "प्रवेश (लग ईन) नगरिएको", "exception-nologin-text": "येए पन्नालाई चलुनाइ या केयि काम खिलाइ सक्षम हुनाइ लगइन अर:।", + "exception-nologin-text-manual": "येइ पन्‍ना या कारवाइ मी पहुँच समर्थता कि न्यूति कृपया $1 अरऽ।", "virus-badscanner": "गट्टी मिलजुल: अपछ्याणो भाइरस खोज्ज्या: <em>$1</em>", "virus-scanfailed": "जँचाई असफल(कोड $1)", "virus-unknownscanner": "थानभया एन्टीभाइरस:", @@ -615,7 +618,7 @@ "editingold": "<strong>चेतावनी: तम यै पानाको अति पुरानो अप्रचलित संशोधनलाई सम्पादन गद्द लाग्याछौ ।<strong>\nयदि तमीले यै परिवर्तनलाई सङ्ग्रह गर्यौ भण्या यै पछिका संशोधनहरू नष्ट हुन्याछन् ।", "yourdiff": "भिन्नताहरू", "copyrightwarning2": "कृपया ध्यान देओ यै {{SITENAME}}मी दियाका योगदानहरूलाई अन्य योगदानकर्ताहरूद्वारा सम्पादन गरिन्याछ, परिवर्तन गरिन्याछ अथवा हटाइन्याछ । यदि तमरो लेखलाई निर्दयता पूर्वक सम्पादन गरेको चाहदैनौ भण्या त्यो यहाँ जनराख।<br />\nयदि तमी किटानसाथ भन्नाछौ कि यो लेख तम आफैले लेख्याको हो अथवा सार्वजनिक ज्ञानक्षेत्र अथवा मुक्त संसाधनबठे लियाको हो (विवरणकोलागि हेर $1 ). \n'''कपीराइट भयाको रचना अनुमति बिना यहाँ जनराख!'''", - "readonlywarning": "<strong>चेतावनी: तथ्याङ्क मर्मतको निम्ति बन्द गरियाकोछ, यै कारण तमी आफ्नो सम्पादन अहिले सङ्ग्रह गद्द सक्द्याहौन ।</strong>\n\nयदि तमी चाहन्छौ भण्या अहिले यहाँ भयाका पाठलाई कपि गरि कतै टेक्स्ट फाइलमी पेस्ट गरिबर सङ्ग्रह गद्द सक्द्याहौ ।\n\nप्रवन्धक जनले यो बन्द गर्याको छ उनले यसो विवरण दियाको छ: $1", + "readonlywarning": "<strong>चेतावनी: डाटाबेस मर्मत खिलाई बन्द अरीरैछ, इसै कारण तमी अइल आफुना सम्पादनअन सङ्ग्रह गद्द सक्द्याहौन।</strong>\nतम येइ पाठ लाई सादापाठ फाइल मी नकल अरीबर साद्द रे पछा खिलाइ सञ्‍चय अरीबर राखी सकन्छऽ।\n\nप्रवन्धक जनले यो बन्द गर्याको छ उनले इसो स्पष्टीकरण दीराइछ: $1", "protectedpagewarning": "<strong>सूचना: यै पानालाई सुरक्षित गरियाको छ यसकारण प्रवन्धकको विशेषाधिकार प्राप्त प्रयोगकर्ताहरूले मात्र यैलाई सम्पादन गद्द सक्द्याछन् ।</strong>\nसन्दर्भको लागि नविनतम लग प्रविष्टि तल दिइयाको छ:", "templatesused": "यै पानामी राखियाका {{PLURAL:$1|Template|ढाँचाहरू}} :", "templatesusedsection": "यै खण्डमी {{PLURAL:$1|ढाँचा प्रयोग गरियाको छ|ढाँचाहरू प्रयोग गरियाका छन्}}", @@ -692,7 +695,7 @@ "rev-suppressed-text-unhide": "यै पानाको पुनरावलोकन '''दमन''' गरियाको छ ।\nविस्तृत जानकारी [{{fullurl:{{#Special:Log}}/delete|पानो={{FULLPAGENAMEE}}}} दमन लग] पाउन सकिन्छ ।\nयदि तम अगाडि बढ्ड चाहन्छौ भण्या पनि तमीले [$1 यि संशोधनहरू हेद्द] पाउन्या हौ ।", "rev-delundel": "दधेखाउने/लुकाउन्या", "rev-showdeleted": "धेकाउन्या", - "revisiondelete": "मेटाउन्या/मेटाईया रद्दगर्ने पुनरावलोकनहरु", + "revisiondelete": "पुनरावलोकनअन मेट्याऽ/मेट्याऽ रद्द अद्द्या", "revdelete-nooldid-title": "अमान्य पुनरावलोकन लक्ष", "revdelete-no-file": "खुलाइएको पाना अस्तित्वमी छैन", "revdelete-show-file-submit": "हो", @@ -837,7 +840,7 @@ "restoreprefs": "सबै पूर्वनिर्धारित स्थिती कायम गर्ने(सबै खण्डहरूमी)", "prefs-editing": "सम्पादन", "searchresultshead": "खोज", - "stub-threshold": "<a href=\"#\" class=\"stub\">ठूटो</a> को लागि थ्रेसहोल्ड स्वरूपण (बाइट):", + "stub-threshold": "ठूटो लिङ्क स्वरूपण ($1) खिलाइ थ्रेसहोल्ड:", "stub-threshold-sample-link": "उदाहरण", "stub-threshold-disabled": "निष्क्रिय", "recentchangesdays": "हालको परिवर्तनमी धेकाउने दिनहरू:", @@ -1151,7 +1154,7 @@ "protect-default": "सब्बै प्रयोगकर्तानहरूलाई अनुमति दिन्या", "protect-level-autoconfirmed": "नौला तथा दर्ता भयाका प्रयोगकर्तानलाई मात्र अनुमति दिन्या", "protect-cascade": "यै पानामी संलग्न सुरक्षित पानाहरू (लामबद्द सुरक्षा)", - "protect-expiry-options": "२ घण्टाहरू:2 hours,१ दिन :1 day,३ दिनहरू:3 days,१ हप्ता:1 week,२ हप्ताहरू:2 weeks,१ महिना:1 month,३ महिनाहरू:3 months,६ महिनाहरू:6 months,१ वर्ष:1 year,अनगिन्ती:infinite", + "protect-expiry-options": "१ घण्टा:1 hour, १ दिन :1 day, १ हप्ता:1 week, २ हप्ता:2 weeks, १ मैना:1 month, ३ मैना:3 months,६ मैना:6 months, १ साल:1 year, अनन्तकाल:infinite", "restriction-type": "अनुमति:", "pagesize": "(अक्षरहरू)", "undeletepage": "मेट्याका पानाहरू हेद्या र पूर्वरुपमी फर्काउन्या", @@ -1372,8 +1375,6 @@ "logentry-upload-upload": "$1 ले $3 {{GENDER:$2|अपलोड अरेका छन्}}", "feedback-bugornote": "यदि तमी कुनै प्राविधिक समस्यालाई विस्तारले सम्झाउन तयार छौ भण्या कृपया [$1 बग राख]।\nयदि हैन, भण्या तमी तल दियाको सरल फारमको प्रयोग गद्दसक्द्याहौ । तमरो टिप्पणी, तमरो प्रयोगकर्ता नाम र तमरो ब्राउजरको नाम सहित \"[$3 $2]\" पानामी जोडिन्याछ ।", "searchsuggest-search": "{{SITENAME}} खोजऽ", - "api-error-duplicate": "यै साइटमी पहिलीबठे यस्तै सामग्री {{PLURAL:$1|भयाको अर्को फाइल छ|भयाका केहि अरु फाइलहरू छन्}} ।", - "api-error-duplicate-archive": "यै साइटमी पहिलेबाट यस्तै सामग्री {{PLURAL:$1|भयाको अर्को फाइल थियो|भयाका केहि अरु फाइलहरू थिए}} ।\nतर {{PLURAL:$1|यो मेट्याको थियो|यी मेटायाका थिए}} ।", "expand_templates_preview_fail_html": "<em>किनकि {{SITENAME}} सिधै एचटिएमयल सक्षम छ र तमीले लग इन गर्या छैनौ, पूर्वावलोकन लुकाइयाको छ ताकि सम्भावित जाभास्क्रिप्ट आक्रमणलाई रोक्द सकियोस् ।</em>\n\n<strong>यदि यो मान्य पूर्ववावलोकन प्रयास हो भण्या पुन प्रयास गर ।</strong>\nयदि यसले कार्य पूर्ण भएन भण्या [[Special:UserLogout|लग आउट गरिबर]] फेरी लग इन गर्या ।", "expand_templates_preview_fail_html_anon": "<em>किनकि {{SITENAME}} सिधै एचटिएमयल सक्षम छ र तमीले लग इन गर्या छैनौ, पूर्वावलोकन लुकाइयाको छ ताकि सम्भावित जाभास्क्रिप्ट आक्रमणलाई रोक्द सकियोस् ।</em>\n\n<strong>यदि यो मान्य पूर्वावलोकन प्रयास हो भण्या कृपया [[Special:UserLogin|लग इन गरिबर]] पुनः प्रयास गर्या ।</strong>", "default-skin-not-found": "ओह! तमरो विकिको पूर्व निर्धारित खोल जस्तो कि <code dir=\"ltr\">$wgDefaultSkin</code> मी बताइयाको<code>$1</code>, उपलब्ध नाईथिन् ।\n\nतमरो इन्स्टलेसन यी खोलहरूलाई सम्मिलित गर्दछ {{PLURAL:$4|खोल|खोलहरू}}। हेर [https://www.mediawiki.org/wiki/Manual:Skin_configuration Manual: खोललाई सम्मिलित गर्नु] ताकि तमीलाई जानकारी होस् कि कसरि {{PLURAL:$4|उसलाई|उसलाई सम्मिलित गर्न सकियोस् र निर्धारितलाई तय गद्दे}}।\n\n$2\n\n; यदि तमीले अहिले मीडियाविकि इन्स्टाल गर्याका छौ:\n: तमीले सम्भवत गिटबठे इन्स्टाल गर्याका छौ, वा सिधै स्रोत कोडबठे गर्याका छौ जैको लागि कुनै अर्कै तारिका प्रयोग गरियाको छ । यो आशा अनुरूप छ । कोशिश गर केहि खोलहरू\n[https://www.mediawiki.org/wiki/Category:All_skins mediawiki.org's मीडियाविकिको खोल डाइरेक्ट्रीबाट डाउनलोड गद्या], जैको लागि तमी:\n:* डाउनलोड गर [https://www.mediawiki.org/wiki/Download टरबल इन्स्टालर], जुन कयौं खोलहरू र विस्तारमी उपलब्ध छन्। तमी खोलहरूको कोड <code>skins/</code> त्यसको डाइरेक्ट्रीबाट कपी-पेस्ट गद्द सक्द्या हौ। \n:* व्यक्तिगत खोलहरू टरबलबठे डाउनलोड गर\n[https://www.mediawiki.org/wiki/Special:SkinDistributor मीडिया विकि] बठे।\n:* [https://www.mediawiki.org/wiki/Download_from_Git#Using_Git_to_download_MediaWiki_skins गिटको प्रयोग गरेर डाउनलोड गद्द सकन्छौ]।\n: यदि तमी विकासकर्ता हौ भण्या यसो गद्दा तमरो गिट-रिपजिटरीमी केहि हुनुहुँदैन । \n; यदि तमीले अहिले मीडियाविकिलाई अपग्रेड गर्याका छौ:\n: मीडियाविकि १.२४ र यैको नवीन रूप स्वतः रूपले खोलहरूलाई सक्षम गद्दैनन् (हेर [https://www.mediawiki.org/wiki/Manual:Skin_autodiscovery Manual:खोलहरूको स्वतः खोज])। तमी निम्नलिखितलाई पेस्ट गद्द सकन्छौ: {{PLURAL:$5|लाइन|लाइनहरू}} <code>LocalSettings.php</code> मी ताकि {{PLURAL:$5|उसले|सबै}} सक्षम होस् जस्तो कि तमीले इन्स्टाल गर्याको {{PLURAL:$5|खोल|खोलहरू}}को मामिलामी:\n\n<pre dir=\"ltr\">$3</pre>\n\n; यदि तमीले अहिले परिवर्तन गर्याका छौ<code>LocalSettings.php</code>:\n: खोल नामहरूको अगाडी डबल-क्लिक गर जसले तमलाई विभिन्न प्रकारहरूको विकल्प दिन्छ।" diff --git a/languages/i18n/egl.json b/languages/i18n/egl.json index 1d12d07fcc..c22982f63c 100644 --- a/languages/i18n/egl.json +++ b/languages/i18n/egl.json @@ -14,6 +14,7 @@ "tog-hideminor": "Lōga 'l mudéfichi pió céchi int al j ûltmi mudéfichi.", "tog-hidepatrolled": "Lōga 'l mudéfichi verifichêdi int al j ûltmi mudéfichi", "tog-newpageshidepatrolled": "Lōga al pàgini verifichêdi da l'elèinch dal pàgini pió nōvi.", + "tog-hidecategorization": "Scònd al categoréi dal pàgini", "tog-extendwatchlist": "Fà vèder tót' al mudéfichi fât a i tgnû sòt ôc, mìa sōl l'ûltma.", "tog-usenewrc": "Unés al mudéfichi per pàgina int al j ûltmi mudéfichi e in quî tgnû sòt' ôc.", "tog-numberheadings": "Cûnta automâtica di tétol ed sesiòun.", @@ -24,6 +25,7 @@ "tog-watchdefault": "Zûnta al pàgini e i file mudifichê int i tgnû 'd ôc specêl.", "tog-watchmoves": "Zûnta al pàgini e i file spustê int i tgnû 'd ôc specêl.", "tog-watchdeletion": "Zûnta al pàgini e i file scanşlê int i tgnû 'd ôc specêl.", + "tog-watchuploads": "Zûnta i file nōv che câregh a quî che tègn adrē", "tog-watchrollback": "Zûta al pàgini in dóv' ó fât al ritōren a la pàgina 'd préma a i tgnû 'd ôc specêl", "tog-minordefault": "Sègna ògni mudéfica cme céca (sōl cme pre-stabilî)", "tog-previewontop": "Fà vèder còl ch' ò fât sōver la caşèla ed mudéfica e mìa sòta.", @@ -498,8 +500,6 @@ "passwordreset-emaildisabled": "In cla wiki ché è stê bluchê al funsiòun ed la pôsta eletrônica.", "passwordreset-username": "Nòm utèint:", "passwordreset-domain": "Proprietê:", - "passwordreset-capture": "Vōt vèder còl che dèinter int al mesâg ed pôsta eletrônica?", - "passwordreset-capture-help": "S' es sernés cla caşèla ché, l'indirés ed pôsta eletrônica (cun la cêva 'd ingrès pruvişôria), év vîn fâ vèder, d'ed là 'd èser spidî a l'utèint.", "passwordreset-email": "Indirés pôsta eletrônica", "passwordreset-emailtitle": "Particulêr ed l'utèint só {{SITENAME}}", "passwordreset-emailtext-ip": "Quelchidûn (prubabilmèint té, cun l'indirés IP $1) l'à dmandê de spidîregh 'na nōva cêva 'd ingrès per andêr dèinter a {{SITENAME}} ($4). {{PLURAL:$3|L'utèint inscrét| J utèint inscrét}} a sté indirés ed pôsta eletrônica în:\n \n$2 \n\n{{PLURAL:$3|Cla cêva 'd ingrès pruvişôria la scadrà| St' al cêvi 'd ingrès pruvişôri ché scadrân}} dôp {{PLURAL:$5|ûn dé|$5 dé}}. Ét duvrés andêr dèinter e sernîr 'na cêva 'd ingrès nōva adès. \n\nSe t'é mìa stê té a fêr la dmânda, o s' ét t'é ricurdê la cêva 'd ingrès uriginêla e an 't vō mia pió cambiêrla, ét pō scanşlêr cól mesâg ché e cuntinvêr a druvêr la tó cêva 'd ingrès vècia.", @@ -891,8 +891,6 @@ "saveprefs": "Sêlva", "restoreprefs": "Turnêr a mèter al j impustasiòun ed partèinsa (in tót al sesiòun)", "prefs-editing": "Caşèla 'd mudéfica", - "rows": "Rîghi", - "columns": "Clòuni:", "searchresultshead": "Sērca", "stub-threshold": "Pôrta per i colegamèint a j abòs ($1):", "stub-threshold-disabled": "Bluchê", @@ -970,9 +968,9 @@ "prefswarning-warning": "T'é fât dal mudéfichi al tō preferèinsi ch'în mìa stêdi salvêdi. S'ét vê fōra da cla pàgina ché sèinsa clichêr \"$1\" al preferèinsi a gnîran mìa arnuvêdi.", "prefs-tabs-navigation-hint": "Sugerimèint: è pusébil druvêr i tâst frècia a mansèina e a dréta per spustêres tr'al schēdi int l'elèinch dal schēdi.", "userrights": "Gestiòun di permès relatîv a j utèint", - "userrights-lookup-user": "Gestiòun di gróp utèint", + "userrights-lookup-user": "Sernîr 'n utèint", "userrights-user-editname": "Mèt dèinter al nòm utèint:", - "editusergroup": "Mudéfica i gróp {{GENDER:$1|utèint}}", + "editusergroup": "Mudéfica i gróp utèint.", "editinguser": "Mudéfica i dirét utèint ed j {{GENDER:$1|utèint}}<strong>[[User:$1|$1]]</strong> $2", "userrights-editusergroup": "Mudéfica gróp utèint", "saveusergroups": "Sêlva i gróp{{GENDER:$1|utèint}}", @@ -982,19 +980,16 @@ "userrights-reason": "Mutîv:", "userrights-no-interwiki": "An es gh'à mìa i permès necesâri per cambiêr i dirét ed j utèint in sém a êter sît.", "userrights-nodatabase": "Al databēş $1 al gh'é mìa o an n' mìa un databêş lochêl.", - "userrights-nologin": "Per dêr i dirét a j utèint l'é necesâri [[Special:UserLogin|fêr l'ingrès]] cme aministardōr.", - "userrights-notallowed": "An 't gh'ê mìa al permès per zuntêr o tōr via i permès utèint.", "userrights-changeable-col": "Gróp ch'es pōlen mudifichêr.", "userrights-unchangeable-col": "Gróp ch'an 's pōlen mìa mudifichêr.", "userrights-conflict": "Cuntrâst ed mudéfica di dirét utèint! Cuntròla e cunfērma al tó mudéfichi.", - "userrights-removed-self": "T'é tôt via i tō dirét. E dòunca, an 't prê pió andêr dèinter a cla pàgina ché.", "group": "Gróp:", "group-user": "Utèint", "group-autoconfirmed": "Utèint cunvalidê da per ló", "group-bot": "Bot", "group-sysop": "Aministradōr", "group-bureaucrat": "Funsionâri", - "group-suppress": "Oversight", + "group-suppress": "Soppressori", "group-all": "(tót)", "group-user-member": "{{GENDER:$1|utèint}}", "group-autoconfirmed-member": "{{GENDER:$1|utèint convalidê da per ló}}", @@ -1077,7 +1072,6 @@ "right-siteadmin": "Blōca e şblōca al databêş", "right-override-export-depth": "Pôrta fōra al pàgini cun insèm al pàgini coleghêdi per 'na larghèsa ed 5", "right-sendemail": "Spidés pôsta eletrônica a êter utèint", - "right-passwordreset": "A vèd i mesâg 'd arnōv ed la cêva 'ed ingrès", "right-managechangetags": "Fa e mèt in funsiòun/blôca al j [[Special:Tags|etichèti]]", "right-applychangetags": "Tâca dal [[Special:Tags|tichèti]] al tō mudéfichi", "right-changetags": "Zûta e tó via [[Special:Tags|tichèti]] precîşi só versiòun ónichi o vōş ed regéster", @@ -1103,11 +1097,11 @@ "action-upload_by_url": "carghêr cól file ché da 'n indirés URL", "action-writeapi": "drōva al j API in scritûra", "action-delete": "scanşlêr cla pàgina ché", - "action-deleterevision": "scanşlêr cla versiòun ché", - "action-deletedhistory": "guêrda la stòria scanşlêda de sté pàgina", + "action-deleterevision": "scanşlêr al versiòun", + "action-deletedhistory": "guêrda la stòria scanşlêda ed 'na pàgina", "action-browsearchive": "serchêr pàgini scanşlêdi", - "action-undelete": "tōr indrê cla pàgina ché", - "action-suppressrevision": "turnêr a vèder e mèter al mudéfichi lughêdi", + "action-undelete": "tōr indrê pàgini", + "action-suppressrevision": "turnêr a vèder e turnêr a mèter al versiòun lughêdi", "action-suppressionlog": "guardêr sté regéster privê", "action-block": "bluchê sté utèint in scritûra", "action-protect": "cambiêr i livē 'd prutesiòun per cla pàgina ché", @@ -1255,7 +1249,7 @@ "uploaddisabledtext": "La cârga di file an n'é mìa atîva.", "php-uploaddisabledtext": "La cârga dal file cun PHP l'é bluchêda. Cuntròla che 'l file_uploads al sìa bèin impustê.", "uploadscripted": "Cól file ché al gh'à un côdis o di script, che prén èser mìa capî bèin da un navigadōr internèt.", - "uploadscriptednamespace": "Cól file SVG ché al gh'à un namespace '$1' mìa permés.", + "uploadscriptednamespace": "Cól file SVG ché al gh'à un namespace '<nowiki>$1</nowiki>' mìa permés.", "uploadinvalidxml": "Al côdis XML int al file al pōl mìa èser lavurê bèin.", "uploadvirus": "Cól fil ché al ghè un 'virus'! Particulêr: $1", "uploadjava": "Cól file ché l'é un file ZIP che 'l gh'à dèinter un file .class Java. Carghêr i file Java an n'é mìa permés, perché pōlen schivşêr i lémit ed sicurèsa.", @@ -1590,5 +1584,5 @@ "feedback-cancel": "Scanşela", "feedback-message": "Mesâg", "feedback-subject": "Argomèint:", - "searchsuggest-search": "Sèirca" + "searchsuggest-search": "Sērca dèinter ed {{SITENAME}}" } diff --git a/languages/i18n/el.json b/languages/i18n/el.json index 6fee2ed0d9..219c2049a2 100644 --- a/languages/i18n/el.json +++ b/languages/i18n/el.json @@ -217,6 +217,7 @@ "searcharticle": "Μετάβαση", "history": "Ιστορικό σελίδας", "history_short": "Ιστορικό", + "history_small": "ιστορικό", "updatedmarker": "ενημερώθηκαν από την τελευταία επίσκεψή μου", "printableversion": "Εκτυπώσιμη έκδοση", "permalink": "Σταθερός σύνδεσμος", @@ -249,6 +250,7 @@ "views": "Προβολές", "toolbox": "Εργαλεία", "tool-link-userrights": "Αλλαγή ομάδων {{GENDER:$1|χρήστη}}", + "tool-link-userrights-readonly": "Εμφάνιση {{GENDER:$1|ομάδων}} χρηστών", "tool-link-emailuser": "Αποστολή e-mail {{GENDER:$1|στο|στη}} χρήστη", "userpage": "Προβολή σελίδας χρήστη", "projectpage": "Προβολή σελίδας εγχειρήματος", @@ -350,7 +352,7 @@ "nospecialpagetext": "<strong>Ζητήσατε μια μη έγκυρη ειδική σελίδα.</strong>\n\nΈνας κατάλογος έγκυρων ειδικών σελίδων μπορεί να βρεθεί στη σελίδα [[Special:SpecialPages|{{int:specialpages}}]].", "error": "Σφάλμα", "databaseerror": "Σφάλμα στη βάση δεδομένων", - "databaseerror-text": "Παρουσιάστηκε ένα σφάλμα ερωτήματος βάσης δεδομένων.\nΑυτό μπορεί να υποδεικνύει ένα σφάλμα στο λογισμικό.", + "databaseerror-text": "Παρουσιάστηκε σφάλμα ερωτήματος βάσης δεδομένων.\nΑυτό μπορεί να είναι ένδειξη προγραμματιστικού σφάλματος στο λογισμικό.", "databaseerror-textcl": "Παρουσιάστηκε ένα σφάλμα ερωτήματος βάσης δεδομένων.", "databaseerror-query": "Ερώτημα: $1", "databaseerror-function": "Λειτουργία: $1", @@ -455,19 +457,12 @@ "login": "Είσοδος", "login-security": "Επαληθεύστε την ταυτότητά σας", "nav-login-createaccount": "Είσοδος / δημιουργία λογαριασμού", - "userlogin": "Είσοδος / δημιουργία λογαριασμού", - "userloginnocreate": "Είσοδος", "logout": "Έξοδος", "userlogout": "Έξοδος", "notloggedin": "Δεν έχετε συνδεθεί", "userlogin-noaccount": "Δεν έχετε λογαριασμό;", "userlogin-joinproject": "Συνδεθείτε σε {{SITENAME}}", - "nologin": "Δεν έχετε λογαριασμό; $1.", - "nologinlink": "Δημιουργήστε έναν λογαριασμό", "createaccount": "Δημιουργία λογαριασμού", - "gotaccount": "Έχετε ήδη λογαριασμό; $1.", - "gotaccountlink": "Είσοδος", - "userlogin-resetlink": "Ξεχάσατε τα στοιχεία εισόδου σας;", "userlogin-resetpassword-link": "Ξεχάσατε τον κωδικό πρόσβασης;", "userlogin-helplink2": "Βοήθεια για τη σύνδεση", "userlogin-loggedin": "Είστε ήδη {{GENDER:$1|συνδεδεμένος|συνδεδεμένη}} ως $1.\nΧρησιμοποιήστε την παρακάτω φόρμα για να συνδεθείτε ως άλλος χρήστης.", @@ -480,7 +475,6 @@ "createaccountmail": "Χρήση τυχαίου προσωρινού κωδικού πρόσβασης και αποστολή του στην καθοριζόμενη διεύθυνση ηλεκτρονικού ταχυδρομείου", "createaccountmail-help": "Μπορεί να χρησιμοποιηθεί για την δημιουργία λογαριασμού τρίτων χωρίς την γνωστοποίηση των κωδικών πρόσβασής τους.", "createacct-realname": "Πραγματικό όνομα (προαιρετικό)", - "createaccountreason": "Αιτία:", "createacct-reason": "Λόγος", "createacct-reason-ph": "Γιατί δημιουργείτε έναν άλλο λογαριασμό", "createacct-reason-help": "Εμφανιζόμενο μήνυμα στο μητρώο δημιουργίας λογαριασμών", @@ -493,7 +487,7 @@ "createacct-benefit-body2": "{{PLURAL:$1|σελίδα|σελίδες}}", "createacct-benefit-body3": "{{PLURAL:$1|πρόσφατος συνεισφέρων|πρόσφατοι συνεισφέροντες}}", "badretype": "Οι κωδικοί που έχετε δηλώσει δεν συμφωνούν μεταξύ τους.", - "usernameinprogress": "Μία δημιουργία λογαριασμού για αυτό το όνομα χρήστη είναι ήδη σε εξέλιξη.\nΠαρακαλώ περιμένετε.", + "usernameinprogress": "Είναι ήδη σε εξέλιξη δημιουργία λογαριασμού για αυτό το όνομα χρήστη.\nΠαρακαλούμε περιμένετε.", "userexists": "Το όνομα χρήστη που εισαγάγατε βρίσκεται ήδη σε χρήση.\nΠαρακαλούμε, διαλέξτε ένα διαφορετικό.", "loginerror": "Σφάλμα σύνδεσης", "createacct-error": "Σφάλμα δημιουργίας λογαριασμού", @@ -501,7 +495,7 @@ "nocookiesnew": "Ο λογαριασμός χρήστη έχει δημιουργηθεί, αλλά δεν έχετε ακόμα συνδεθεί. Το {{SITENAME}} χρησιμοποιεί cookies κατά τη σύνδεση των χρηστών. Τα cookies είναι απενεργοποιημένα στον υπολογιστή σας. Παρακαλούμε ενεργοποιήστε τα και στη συνέχεια συνδεθείτε χρησιμοποιώντας το νέο όνομα χρήστη σας και τον κωδικό σας.", "nocookieslogin": "Το {{SITENAME}} χρησιμοποιεί cookies κατά τη σύνδεση των χρηστών. Τα cookies είναι απενεργοποιημένα στον υπολογιστή σας. Παρακαλούμε ενεργοποιήστε τα και ξαναδοκιμάστε!", "nocookiesfornew": "Ο λογαριασμός χρήστη δεν δημιουργήθηκε, καθώς δεν μπορούσε να επιβεβαιώσει την πηγή του. \n Βεβαιωθείτε ότι έχετε ενεργοποιήσει τα cookies, ξαναφορτώστε αυτή τη σελίδα και προσπαθήστε ξανά.", - "createacct-loginerror": "Ο λογαριασμός δημιουργήθηκε με επιτυχία, αλλά δεν μπορέσατε να συνδεθείτε αυτόματα. Παρακαλώ [[Special:UserLogin|συνδεθείτε χειροκίνητα]].", + "createacct-loginerror": "Ο λογαριασμός δημιουργήθηκε με επιτυχία, αλλά δεν ήταν δυνατόν να συνδεθείτε αυτόματα. Παρακαλούμε [[Special:UserLogin|συνδεθείτε με το χέρι]].", "noname": "Το όνομα χρήστη που έχετε καθορίσει δεν είναι έγκυρο.", "loginsuccesstitle": "Επιτυχής σύνδεση", "loginsuccess": "Είστε συνδεδεμένος(-η) στο {{SITENAME}} ως \"$1\".", @@ -513,7 +507,7 @@ "wrongpasswordempty": "Ο κωδικός πρόσβασης που εισάχθηκε ήταν κενός. Παρακαλούμε προσπαθήστε ξανά.", "passwordtooshort": "Οι κωδικοί πρέπει να περιέχουν τουλάχιστον {{PLURAL:$1|1 χαρακτήρα|$1 χαρακτήρες}}.", "passwordtoolong": "Οι κωδικοί πρόσβασης δεν μπορούν να υπερβαίνουν {{PLURAL:$1|τον 1 χαρακτήρα|τους $1 χαρακτήρες}}.", - "passwordtoopopular": "Συνήθως επιλέγονται οι κωδικοί πρόσβασης δεν μπορούν να χρησιμοποιηθούν. Παρακαλώ επιλέξτε μια πιο μοναδικό κωδικό πρόσβασης.", + "passwordtoopopular": "Κοινότυπα συνθηματικά που τείνουν να επιλέγονται συχνά από τους χρήστες δεν μπορούν να χρησιμοποιηθούν. Παρακαλούμε επιλέξτε κάποιο πιο μοναδικό συνθηματικό.", "password-name-match": "Ο κωδικός σου θα πρέπει να είναι διαφορετικός από το όνομα χρήστη σου.", "password-login-forbidden": "Η χρήση αυτού του ονόματος χρήστη και συνθηματικού έχουν απαγορευτεί.", "mailmypassword": "Επαναφορά κωδικού", @@ -562,36 +556,36 @@ "resetpass_submit": "Δώστε κωδικό πρόσβασης και συνδεθείτε", "changepassword-success": "Ο κωδικός πρόσβασής σας άλλαξε!", "changepassword-throttled": "Κάνατε πάρα πολλές πρόσφατες απόπειρες σύνδεσης.\nΠαρακαλούμε περιμένετε $1 προτού ξαναδοκιμάσετε.", - "botpasswords": "Κωδικοί πρόσβασης για Μποτ", - "botpasswords-summary": "<em>Οι κωδικοί των μποτ</em> δίνουν πρόσβαση σε λογαριασμό χρήστη μέσω του API χωρίς να χρησιμοποιούνται τα συνθηματικά της κύριας σύνδεσης του λογαριασμού. Τα δικαιώματα χρήστη όταν με σύνδεση μέσω κωδικού μποτ μπορεί να είναι περιορισμένα.\n\nΑν δεν ξέρετε γιατί θέλετε να το κάνετε αυτό, καλύτερα να μην το κάνετε. Κανένα δεν θα πρέπει να σας ζητήσει να δημιουργήσετε ένα τέτοιο κωδικό και να του τον γνωστοποιήσετε.", - "botpasswords-disabled": "Οι κωδικοί πρόσβασης των ρομπότ είναι απενεργοποιημένοι.", - "botpasswords-no-central-id": "Για να χρησιμοποιήσετε τους κωδικούς πρόσβασης των ρομπότ θα πρέπει να συνδεθείτε με έναν κεντρικό λογαριασμό.", - "botpasswords-existing": "Υπάρχοντες κωδικοί πρόσβασης ρομπότ", - "botpasswords-createnew": "Δημιουργία νέου κωδικού πρόσβασης ρομπότ", - "botpasswords-editexisting": "Επεξεργασία υπάρχοντος κωδικού πρόσβασης ρομπότ", - "botpasswords-label-appid": "Ονομασία ρομπότ:", + "botpasswords": "Συνθηματικά για ρομπότ", + "botpasswords-summary": "<em>Τα συνθηματικά για ρομπότ</em> επιτρέπουν πρόσβαση σε λογαριασμό χρήστη μέσω του API χωρίς να χρησιμοποιούνται τα κύρια διαπιστευτήρια σύνδεσης του λογαριασμού. Τα διαθέσιμα δικαιώματα χρήστη όταν είναι σε σύνδεση μέσω συνθηματικού για ρομπότ μπορεί να είναι περιορισμένα.\n\nΑν δεν ξέρετε γιατί να το κάνετε αυτό, καλύτερα να μην το κάνετε. Κανείς ποτέ δεν πρέπει να σας ζητήσει να δημιουργήσετε ένα τέτοιο συνθηματικό και να του το γνωστοποιήσετε.", + "botpasswords-disabled": "Τα συνθηματικά των ρομπότ είναι απενεργοποιημένα.", + "botpasswords-no-central-id": "Για να χρησιμοποιήσετε συνθηματικά για ρομπότ θα πρέπει να συνδεθείτε με έναν κεντρικό λογαριασμό.", + "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-resetpassword": "Επαναφορά του συνθηματικού", "botpasswords-label-grants": "Ισχύουσες άδειες:", - "botpasswords-help-grants": "Κάθε παραχώρηση δίνει πρόσβαση στα ορισμένα δικαιώματα χρήστη που που ήδη έχει ένας λογαριασμός χρήστη. Δείτε τη [[Special:ListGrants|πίνακας παραχωρήσεων]] για περισσότερες πληροφορίες.", + "botpasswords-help-grants": "Παραχωρεί την πρόσβαση σε δικαιώματα που ήδη κατέχονται από το λογαριασμό χρήστη σας. Ενεργοποίηση μιας παραχώρησης εδώ δεν παρέχει πρόσβαση σε δικαιώματα που ο λογαριασμός χρήστης σας διαφορετικά δεν θα είχε. Δείτε τον [[Special:ListGrants|πίνακα παραχωρήσεων]] για περισσότερες πληροφορίες.", "botpasswords-label-grants-column": "Χορηγήθηκε", - "botpasswords-bad-appid": "Η ονομασία του ρομπότ «$1» δεν είναι έγκυρη.", + "botpasswords-bad-appid": "Το όνομα του ρομπότ «$1» δεν είναι έγκυρο.", "botpasswords-insert-failed": "Αποτυχία να προστεθεί το όνομα bot \"$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-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-newpassword": "Ο νέος κωδικός πρόσβασης για να συνδεθείτε με το <strong>$1</strong> είναι <strong>$2</strong>. <em>Παρακαλούμε σημειώστε το για μελλοντική αναφορά.</em><br />(Για παλιά bot που απαιτούν το όνομα σύνδεσης να είναι το ίδιο με το τελικό όνομα χρήστη, μπορείτε επίσης να χρησιμοποιήσετε το <strong>$3</strong> ως όνομα χρήστη και <strong>$4</strong> ως κωδικό.)", - "botpasswords-no-provider": "BotPasswordsSessionProvider δεν είναι διαθέσιμο.", + "botpasswords-no-provider": "Το BotPasswordsSessionProvider δεν είναι διαθέσιμο.", "botpasswords-restriction-failed": "Περιορισμοί κωδικών πρόσβασης bot εμποδίζουν τη συγκεκριμένη σύνδεση.", - "botpasswords-invalid-name": "Το όνομα χρήστη που ορίζεται δεν περιέχει το διαχωριστικό κωδικό πρόσβασης bot (\"$1\").", - "botpasswords-not-exist": "Ο χρήστης \"$1\" δεν έχει κωδικό bot με όνομα \"$2\"", + "botpasswords-invalid-name": "Το όνομα χρήστη που ορίζεται δεν περιέχει το διαχωριστικό συνθηματικού ρομπότ («$1»).", + "botpasswords-not-exist": "Ο χρήστης «$1» δεν έχει συνθηματικό για ρομπότ με όνομα «$2».", "resetpass_forbidden": "Οι κωδικοί πρόσβασης δεν μπορούν να αλλαχθούν", "resetpass_forbidden-reason": "Οι κωδικοί πρόσβασης δεν μπορούν να αλλαχθούν: $1", "resetpass-no-info": "Πρέπει να είστε συνδεδεμένος για να δείτε αυτήν την σελίδα απευθείας", @@ -620,6 +614,7 @@ "passwordreset-emailsentemail": "Αν αυτή η διεύθυνση ηλεκτρονικού ταχυδρομείου συνδέεται με το λογαριασμό σας, τότε θα σας αποσταλεί μήνυμα ηλεκτρονικού ταχυδρομείου για την επαναφορά του κωδικού πρόσβασης.", "passwordreset-emailsentusername": "Αν υπάρχει μια διεύθυνση ηλεκτρονικού ταχυδρομείου που συνδέεται με αυτό το όνομα χρήστη, τότε θα σας αποσταλεί ένα μήνυμα ηλεκτρονικού ταχυδρομείου για την επαναφορά του κωδικού πρόσβασης.", "passwordreset-invalidemail": "Μη έγκυρη διεύθυνση ηλεκτρονικού ταχυδρομείου", + "passwordreset-nodata": "Δεν δόθηκε όνομα χρήστη ή διεύθυνση email.", "changeemail": "Αλλαγή ή αφαίρεση της διεύθυνσης ηλεκτρονικού ταχυδρομείου", "changeemail-header": "Συμπληρώστε αυτήν τη φόρμα για να αλλάξετε τη διεύθυνσή σας ηλεκτρονικού ταχυδρομείου. Αν θέλετε να καταργήσετε τη σύνδεση οποιασδήποτε διεύθυνσης ηλεκτρονικού ταχυδρομείου με το λογαριασμό σας, αφήστε τη νέα διεύθυνση ηλεκτρονικού ταχυδρομείου κενή κατά την υποβολή της φόρμας.", "changeemail-no-info": "Πρέπει να έχετε συνδεθεί για άμεση πρόσβαση σε αυτήν τη σελίδα.", @@ -668,22 +663,23 @@ "preview": "Προεπισκόπηση", "showpreview": "Εμφάνιση προεπισκόπησης", "showdiff": "Εμφάνιση αλλαγών", - "blankarticle": "<strong>Προειδοποίηση:</strong> Η σελίδα που δημιουργείτε είναι κενή.\nΕάν κάνετε κλικ στο κουμπί \"{{int:savearticle}}\" και πάλι, η σελίδα θα δημιουργηθεί χωρίς κανένα περιεχόμενο.", + "blankarticle": "<strong>Προειδοποίηση:</strong> Η σελίδα που πάτε να δημιουργήσετε είναι κενή.\nΕάν ξανακάνετε κλικ στο κουμπί «{{int:savearticle}}» η σελίδα θα δημιουργηθεί χωρίς περιεχόμενο.", "anoneditwarning": "<strong>Προειδοποίηση:</strong> Δεν έχετε συνδεθεί. Η διεύθυνση IP σας θα είναι ορατή δημόσια αν κάνετε κάποια επεξεργασία. Αν <strong>[$1 συνδεθείτε]</strong> ή <strong>[$2 δημιουργήσετε λογαριασμό]</strong>, οι επεξεργασίες σας θα αποδοθούν στο όνομά χρήστη σας, μαζί με άλλα οφέλη.", "anonpreviewwarning": "''Δεν έχετε συνδεθεί. Η αποθήκευση θα καταγράψει την διεύθυνσή IP σας στο ιστορικό επεξεργασίας αυτής της σελίδας.''", "missingsummary": "'''Υπενθύμιση:''' Δεν έχετε συμπληρώσει τη σύνοψη επεξεργασίας. Αν κάνετε κλικ στο κουμπί Αποθήκευση πάλι, η επεξεργασία σας θα αποθηκευτεί χωρίς σύνοψη.", "selfredirect": "<strong>Προσοχή:</strong> Ανακατευθύνετε αυτή τη σελίδα στον εαυτό της. Μπορεί να δώσατε λάθος στόχο για την ανακατεύθυνση, ή μπορεί να επεξεργάζεστε λάθος σελίδα.\nΑν κάνε κλίκ στο \"{{int:savearticle}}\" ξανά, η ανακατεύθυνση θα δημιουργηθεί ούτως ή άλλως.", "missingcommenttext": "Παρακαλούμε εισαγάγετε σχόλιο παρακάτω.", "missingcommentheader": "<strong>Υπενθύμιση:</strong> δεν έχετε δώσει ένα θέμα γι' αυτό το σχόλιο.\nΕάν κάνετε κλικ στο κουμπί \"{{int:savearticle}}\" ξανά, η επεξεργασία σας θα αποθηκευτεί χωρίς αυτό.", - "summary-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Δεν μπορείτε να χρησιμοποιήσετε την δυνατότητα «αποστολή e-mail σε αυτό το χρήστη» εκτός αν μια έγκυρη ηλεκτρονική διεύθυνση έχει οριστεί στις [[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\nΣημειώστε ότι δεν μπορείτε να χρησιμοποιήσετε το χαρακτηριστικό \"στείλτε e-mail σε αυτό τον χρήστη\" εκτός αν έχετε μια έγκυρη διεύθυνση ηλεκτρονικού ταχυδρομείου καταχωρημένη στις [[Special:Preferences|προτιμήσεις χρήστη]] σας.\n\nΗ τρέχουσα διεύθυνση IP σας είναι $3, και ο αριθμός αναγνώρισης της φραγής σας είναι #$5. Παρακαλώ συμπεριλάβετε τις παραπάνω λεπτομέρειες σε όποια ερωτήματα κάνετε.", + "autoblockedtext": "Η διεύθυνση IP σας έχει υποστεί φραγή αυτόματα επειδή χρησιμοποιήθηκε από έναν άλλο χρήστη, ο οποίος και αποκλείστηκε από τον/την $1.\nΗ αιτιολόγηση που δόθηκε είναι η εξής:\n\n:<em>$2</em>\n\n* Έναρξη φραγής: $8\n* Λήξη φραγής: $6\n* Επιδιωκόμενος αποκλεισμένος: $7\n\nΜπορείτε να επικοινωνήσετε με τον/την $1 ή με κάποιον από τους άλλους [[{{MediaWiki:Grouppage-sysop}}|διαχειριστές]] για να συζητήσετε τη φραγή.\n\nΝα σημειωθεί ότι δεν μπορείτε να χρησιμοποιήσετε τη λειτουργία «αποστολή μηνύματος ηλεκτρονικού ταχυδρομείου σε αυτόν τον χρήστη» εκτός αν έχετε μια έγκυρη διεύθυνση ηλεκτρονικού ταχυδρομείου καταχωρισμένη στις [[Special:Preferences|προτιμήσεις χρήστη]] σας.\n\nΗ τρέχουσα διεύθυνση IP σας είναι $3 και το αναγνωριστικό της φραγής σας είναι #$5. Παρακαλούμε συμπεριλάβετε τις παραπάνω λεπτομέρειες σε όποια ερωτήματα κάνετε.", + "systemblockedtext": "Το όνομα χρήστη σας ή η διεύθυνση IP έχει αποκλειστεί αυτόματα από το MediaWiki.\nΗ αιτία που δόθηκε είναι:\n\n:<em>$2</em>\n\n* Έναρξη φραγής: $8\n* Λήξη φραγής: $6\n* Στόχος φραγής: $7\n\nΗ τρέχουσα διεύθυνση IP σας είναι $3.\nΠαρακαλούμε να συμπεριλάβετε όλα τα παραπάνω στοιχεία σε τυχόν απορίες σας.", "blockednoreason": "δεν δόθηκε λόγος", "whitelistedittext": "Πρέπει να $1 για να επεξεργαστείτε σελίδες.", - "confirmedittext": "Πρέπει να επιβεβαιώσετε την διεύθυνση e-mail σας πριν μπορέσετε να επεξεργαστείτε σελίδες. Παρακαλώ θέστε και επικυρώστε την διεύθυνση e-mail σας μέσω των [[Special:Preferences|προτιμήσεων χρήστη]] σας.", + "confirmedittext": "Πρέπει να επιβεβαιώσετε την διεύθυνση ηλεκτρονικού σας ταχυδρομείου πριν μπορέσετε να επεξεργαστείτε σελίδες. Παρακαλούμε καθορίστε και επικυρώστε την διεύθυνση ηλεκτρονικού σας ταχυδρομείου μέσω των [[Special:Preferences|προτιμήσεων χρήστη]] σας.", "nosuchsectiontitle": "Δεν υπάρχει τέτοιο τμήμα", "nosuchsectiontext": "Προσπαθήσατε να επεξεργαστείτε μια ενότητα που δεν υπάρχει. Μπορεί να έχει μετακινηθεί ή διαγραφεί, ενώ βλέπατε τη σελίδα.", "loginreqtitle": "Απαιτείται η σύνδεση του χρήστη.", @@ -697,10 +693,10 @@ "noarticletext": "Δεν υπάρχει προς το παρόν κείμενο σε αυτή τη σελίδα. \nΜπορείτε να [[Special:Search/{{PAGENAME}}|αναζητήσετε αυτόν τον τίτλο σελίδας]] σε άλλες σελίδες,\n<span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} να αναζητήσετε τις σχετικές καταγραφές],\nή να [{{fullurl:{{FULLPAGENAME}}|action=edit}} δημιουργήσετε αυτή τη σελίδα]</span>.", "noarticletext-nopermission": "Δεν υπάρχει προς το παρόν κείμενο σε αυτή τη σελίδα.\nΜπορείτε να [[Special:Search/{{PAGENAME}}|αναζητήσετε αυτόν τον τίτλο σελίδας]] σε άλλες σελίδες, ή <span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} να ψάξετε στις σχετικές καταγραφές]</span>, αλλά δεν έχετε την άδεια να δημιουργήσετε αυτή τη σελίδα.", "missing-revision": "Δεν υπάρχει αναθεώρηση με αριθμό $1 για τη σελίδα με όνομα «{{FULLPAGENAME}}».\n\nΑυτό συνήθως προκαλείται από παλιό σύνδεσμο ιστορικού προς σελίδα που έχει διαγραφεί.\nΛεπτομέρειες θα βρείτε στο [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} ημερολόγιο καταγραφής διαγραφών].", - "userpage-userdoesnotexist": "Ο Λογαριασμός του χρήστη \"<nowiki>$1</nowiki>\" δεν είναι καταχωρημένος. Παρακαλώ δείτε αν θα θέλατε να δημιουργήσετε/επεξεργαστείτε αυτή τη σελίδα.", + "userpage-userdoesnotexist": "Ο λογαριασμός χρήστη «$1» δεν είναι εγγεγραμμένος. Παρακαλούμε ελέγξτε αν θα θέλατε να δημιουργήσετε/επεξεργαστείτε αυτήν τη σελίδα.", "userpage-userdoesnotexist-view": "Ο λογαριασμός χρήστη «$1» δεν είναι εγγεγραμμένος.", "blocked-notice-logextract": "Επί του παρόντος, αυτός ο χρήστης έχει υποστεί φραγή. Παρακάτω παρέχεται για αναφορά η πιο πρόσφατη καταχώρηση του αρχείου φραγών.", - "clearyourcache": "''' Σημείωση:''' μετά την αποθήκευση, ίσως χρειαστεί να παρακάμψετε την προσωρινή μνήμη του προγράμματος περιήγησής σας για να δείτε τις αλλαγές.\n * '''Firefox / Safari:''' Κρατήστε πατημένο το ''Shift'' κάνοντας ταυτόχρονα κλικ στο κουμπί ''Ανανέωση'' ή πιέστε ''Ctrl-F5'' ή ''Ctrl-R'' ('' ⌘-R'' σε Mac)\n * '''Google Chrome:''' Πιέστε ''Ctrl-Shift-R'' (''⌘-Shift-R'' σε Mac)\n * '''Internet Explorer:''' Κρατήστε πατημένο το ''Ctrl'' κάνοντας ταυτόχρονα κλικ στο κουμπί ''Ανανέωση'', ή πιέστε ''Ctrl-F5'' \n * '''Opera:''' Εκκαθαρίστε την προσωρινή μνήμη από το μενού ''Εργαλεία → Προτιμήσεις''", + "clearyourcache": "<strong>Σημείωση:</strong> μετά την αποθήκευση, ίσως χρειαστεί να παρακάμψετε την προσωρινή μνήμη του προγράμματος περιήγησής σας για να δείτε τις αλλαγές.\n* <strong>Firefox / Safari:</strong> Κρατήστε πατημένο το <em>Shift</em> κάνοντας ταυτόχρονα κλικ στο κουμπί <em>Ανανέωση</em> ή πιέστε <em>Ctrl-F5</em> ή <em>Ctrl-R</em> (<em>⌘-R</em> σε Mac)\n* <strong>Google Chrome:</strong> Πιέστε <em>Ctrl-Shift-R</em> (<em>⌘-Shift-R</em> σε Mac)\n* <strong>Internet Explorer:</strong> Κρατήστε πατημένο το <em>Ctrl</em> κάνοντας ταυτόχρονα κλικ στο κουμπί <em>Ανανέωση</em>, ή πιέστε <em>Ctrl-F5</em>\n* <strong>Opera:</strong> Εκκαθαρίστε την προσωρινή μνήμη από το μενού <em>Εργαλεία → Προτιμήσεις</em>", "usercssyoucanpreview": "'''Χρήσιμη συμβουλή:''' Χρησιμοποιήστε το κουμπί \"{{int:showpreview}}\" για να ελέγξτε τα νέα σας CSS πριν τα αποθηκεύσετε.", "userjsyoucanpreview": "'''Χρήσιμη συμβουλή:''' Χρησιμοποιήστε το κουμπί \"{{int:showpreview}}\" για να ελέγξτε τη νέα σας JS πριν την αποθηκεύσετε.", "usercsspreview": "'''Σας υπενθυμίζουμε ότι κάνετε απλώς έλεγχο/προεπισκόπηση του CSS του χρήστη -δεν το έχετε ακόμα αποθηκεύσει! '''", @@ -713,10 +709,10 @@ "previewnote": "'''Να θυμάστε ότι αυτή είναι μόνο μια προεπισκόπηση.'''\nΟι αλλαγές σας δεν έχουν ακόμη αποθηκευτεί!", "continue-editing": "Μεταβείτε στην περιοχή επεξεργασίας", "previewconflict": "Αυτή η προεπισκόπηση απεικονίζει το κείμενο στην επάνω περιοχή επεξεργασίας κειμένου, όπως θα εμφανιστεί εάν επιλέξετε να το αποθηκεύσετε.", - "session_fail_preview": "'''Συγγνώμη! Δεν μπορούσαμε να διεκπεραιώσουμε την επεξεργασία σας λόγω απώλειας των δεδομένων της συνεδρίας.\nΠαρακαλώ προσπαθήστε ξανά. Αν δεν δουλεύει ξανά, δοκιμάστε να [[Special:UserLogout|αποσυνδεθείτε]] και να συνδεθείτε πάλι.'''", - "session_fail_preview_html": "'''Λυπούμαστε! Δεν μπορέσαμε να διεκπεραιώσουμε την επεξεργασία σας λόγω απώλειας των δεδομένων της συνεδρίας.'''\n\n<em>Επειδή το {{SITENAME}} επιτρέπει την εισαγωγή ακατέργαστου HTML, η προεπισκόπηση είναι κρυμμένη ως προφύλαξη ενάντια σε επιθέσεις με Javascript.</em>\n\n<strong>Αν αυτή είναι μια έγκυρη προσπάθεια επεξεργασίας, παρακαλώ προσπαθήστε ξανά..</strong> Αν και πάλι δε λειτουργεί, δοκιμάστε να [[[[Special:UserLogout|αποσυνδεθείτε]] και να συνδεθείτε πάλι και δείτε αν ο φυλλομετρητής σας επιτρέπει cookies απ'αυτόν τον ιστότοπο.", - "token_suffix_mismatch": "'''Η επεξεργασία σας απορρίφθηκε γιατί το πρόγραμμα-πελάτη σας κατακρεούργησε τους χαρακτήρες στίξης στο κουπόνι επεξεργασίας. Η επεξεργασία απορρίφθηκε για να αποφευχθεί η παραφθορά του κειμένου της σελίδας.\nΑυτό μερικές φορές συμβαίνει όταν χρησιμοποιείται ένας ανώνυμος διακομιστής μεσολάβησης διαθέσιμος μέσω του παγκόσμιου ιστού με σφάλματα.'''", - "edit_form_incomplete": "'''Ορισμένα τμήματα της φόρμας επεξεργασίας δεν έφθασαν στο διακομιστή. Ελέγξτε ότι οι αλλαγές σας είναι άθικτες και προσπαθήστε ξανά.'''", + "session_fail_preview": "Λυπούμαστε! Δεν μπορούσαμε να διεκπεραιώσουμε την επεξεργασία σας λόγω απώλειας των δεδομένων της συνεδρίας.\n\nΜπορεί να έχετε αποσυνδεθεί. <strong>Παρακαλούμε επιβεβαιώστε ότι βρίσκεστε ακόμα σε σύνδεση και προσπαθήστε ξανά</strong>.\nΑν εξακολουθεί να μην λειτουργεί, δοκιμάστε να [[Special:UserLogout|αποσυνδεθείτε]] και να συνδεθείτε ξανά, και βεβαιωθείτε ότι το πρόγραμμα περιήγησής σας επιτρέπει cookies από αυτόν τον ιστότοπο.", + "session_fail_preview_html": "Λυπούμαστε! Δεν μπορέσαμε να διεκπεραιώσουμε την επεξεργασία σας λόγω απώλειας των δεδομένων της συνεδρίας.\n\n<em>Επειδή το {{SITENAME}} επιτρέπει την εισαγωγή ακατέργαστου HTML, η προεπισκόπηση είναι κρυμμένη ως προφύλαξη ενάντια σε επιθέσεις με Javascript.</em>\n\n<strong>Αν αυτή είναι μια έγκυρη προσπάθεια επεξεργασίας, Παρακαλούμε προσπαθήστε ξανά.</strong>\nΑν και πάλι δεν λειτουργεί, δοκιμάστε να [[Special:UserLogout|αποσυνδεθείτε]] και να συνδεθείτε ξανά και βεβαιωθείτε ότι το πρόγραμμα περιήγησής σας επιτρέπει cookies από αυτόν τον ιστότοπο.", + "token_suffix_mismatch": "<strong>Η επεξεργασία σας απορρίφθηκε γιατί το πρόγραμμα-πελάτης σας κατακρεούργησε τους χαρακτήρες στίξης στο κουπόνι επεξεργασίας.</strong>\nΗ επεξεργασία απορρίφθηκε για να αποφευχθεί η παραφθορά του κειμένου της σελίδας.\nΑυτό μερικές φορές συμβαίνει όταν χρησιμοποιείτε κάποια ελαττωματική ανώνυμη υπηρεσία διαμεσολάβησης μέσω Ιστού.", + "edit_form_incomplete": "<strong>Ορισμένα τμήματα της φόρμας επεξεργασίας δεν έφθασαν στο διακομιστή. Διπλο-ελέγξτε ότι οι επεξεργασίες σας είναι άθικτες και προσπαθήστε ξανά.</strong>", "editing": "Επεξεργασία $1", "creating": "Δημιουργία: $1", "editingsection": "Επεξεργασία $1 (ενότητα)", @@ -798,7 +794,7 @@ "parser-unstrip-loop-warning": "εντοπίστηκε ένας βρόχος unstrip", "parser-unstrip-recursion-limit": "Υπέρβαση του ορίου αναδρομής Unstrip ($1)", "converter-manual-rule-error": "Εντοπίστηκε σφάλμα σε μη αυτόματο κανόνα μετατροπής γλώσσας", - "undo-success": "Η επεξεργασία μπορεί να αναστραφεί. Παρακαλώ ελέγξτε την σύγκριση παρακάτω για να επιβεβαιώσετε ότι αυτό είναι το οποίο θέλετε να κάνετε, και έπειτα αποθηκεύστε τις αλλαγές παρακάτω για να τελειώσετε την αναστροφή της επεξεργασίας.", + "undo-success": "Η επεξεργασία μπορεί να αναιρεθεί.\nΠαρακαλούμε ελέγξτε την σύγκριση παρακάτω για να επιβεβαιώσετε ότι είναι αυτό το οποίο θέλετε να κάνετε και έπειτα αποθηκεύστε τις αλλαγές παρακάτω για να ολοκληρώσετε την αναίρεση της επεξεργασίας.", "undo-failure": "Η επεξεργασία δεν μπορούσε να αναστραφεί λόγω αντικρουόμενων ενδιάμεσων επεξεργασιών.", "undo-norev": "Η ανάκληση αυτής της επεξεργασίας δεν ηταν δυνατό να πραγματοποιηθεί επειδή δεν υπάρχει ή επειδή έχει διαγραφεί.", "undo-nochange": "Η επεξεργασία φαίνεται να έχει ήδη αναιρεθεί.", @@ -976,6 +972,7 @@ "search-interwiki-caption": "Αδελφικά εγχειρήματα", "search-interwiki-default": "$1 αποτελέσματα:", "search-interwiki-more": "(περισσότερα)", + "search-interwiki-more-results": "περισσότερα αποτελέσματα", "search-relatedarticle": "Σχετικά", "searchrelated": "σχετικά", "searchall": "όλα", @@ -993,10 +990,11 @@ "search-external": "Εξωτερική αναζήτηση", "searchdisabled": "Η αναζήτηση για τον ιστότοπο \"{{SITENAME}}\" είναι απενεργοποιημένη. Μπορείτε να αναζητήσετε μέσω του Google εν τω μεταξύ. Σημειώστε ότι οι κατάλογοί τους για το περιεχόμενο του ιστοτόπου \"{{SITENAME}}\" μπορεί να είναι απαρχαιωμένοι.", "search-error": "Παρουσιάστηκε σφάλμα κατά την αναζήτηση:$1", + "search-warning": "Παρουσιάστηκε προειδοποίηση κατά την αναζήτηση: $1", "preferences": "Προτιμήσεις", "mypreferences": "Προτιμήσεις", "prefs-edits": "Αριθμός επεξεργασιών:", - "prefsnologintext2": "Παρακαλώ συνδεθείτε για να αλλάξετε τις προτιμήσεις σας.", + "prefsnologintext2": "Παρακαλούμε συνδεθείτε για να αλλάξετε τις προτιμήσεις σας.", "prefs-skin": "Θέμα εμφάνισης", "skin-preview": "Προεπισκόπηση", "datedefault": "Χωρίς προτίμηση", @@ -1064,6 +1062,7 @@ "youremail": "Διεύθυνση ηλεκτρονικού ταχυδρομείου:", "username": "{{GENDER:$1|Όνομα χρήστη}}:", "prefs-memberingroups": "{{GENDER:$2|Μέλος}} της {{PLURAL:$1|ομάδας|ομάδων}}:", + "group-membership-link-with-expiry": "$1 (μέχρι τις $3 στις $4)", "prefs-registration": "Χρόνος εγγραφής:", "yourrealname": "Πραγματικό όνομα:", "yourlanguage": "Γλώσσα:", @@ -1103,9 +1102,9 @@ "prefswarning-warning": "Έχετε κάνει αλλαγές στις προτιμήσεις σας που δεν έχουν αποθηκευτεί ακόμα.\nΕάν αφήσετε αυτή τη σελίδα χωρίς να κάνετε κλικ στο \"$1\" οι προτιμήσεις σας δεν θα ενημερωθούν.", "prefs-tabs-navigation-hint": "Συμβουλή: Μπορείτε να χρησιμοποιήσετε τα πλήκτρα διευθύνσεων αριστερά και δεξιά για να πλοηγηθείτε μεταξύ των καρτελών στη λίστα καρτελών.", "userrights": "Διαχείριση δικαιωμάτων χρηστών", - "userrights-lookup-user": "Διαχείριση ομάδων χρηστών", + "userrights-lookup-user": "Επιλέξτε χρήστη", "userrights-user-editname": "Δηλώστε όνομα χρήστη:", - "editusergroup": "Επεξεργασία {{GENDER:$1|ομάδων}} χρηστών", + "editusergroup": "Φόρτωση ομάδων χρηστών", "editinguser": "Αλλαγή δικαιωμάτων χρήστη {{GENDER:$1|του χρήστη|της χρήστριας}} <strong>[[User:$1|$1]]</strong> $2", "userrights-editusergroup": "Επεξεργασία ομάδων χρηστών", "saveusergroups": "Αποθήκευση {{GENDER:$1|ομάδων}} χρηστών", @@ -1117,7 +1116,15 @@ "userrights-nodatabase": "Η βάση δεδομένων $1 δεν υπάρχει ή δεν είναι τοπική.", "userrights-changeable-col": "Ομάδες που μπορείτε να αλλάξετε", "userrights-unchangeable-col": "Ομάδες που δεν μπορείτε να αλλάξετε", - "userrights-conflict": "Σύγκρουση αλλαγών στα δικαιώματα χρήστη! Παρακαλώ επανεξετάστε και επικυρώστε τις αλλαγές σας.", + "userrights-expiry-current": "Λήγει στις $2 στις $3", + "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-invalid-expiry": "Ο χρόνος λήξης για την ομάδα «$1» δεν είναι έγκυρος.", + "userrights-expiry-in-past": "Ο χρόνος λήξης για την ομάδα «$1» είναι στο παρελθόν.", + "userrights-conflict": "Σύγκρουση αλλαγών στα δικαιώματα χρήστη! Παρακαλούμε επανεξετάστε και επικυρώστε τις αλλαγές σας.", "group": "Ομάδα:", "group-user": "Χρήστες", "group-autoconfirmed": "Αυτοεπιβεβαιωμένοι χρήστες", @@ -1194,7 +1201,7 @@ "right-editmyprivateinfo": "Επεξεργαστείτε τα προσωπικά σας δεδομένα (π.χ. διεύθυνση ηλεκτρονικού ταχυδρομείου, πραγματικό όνομα)", "right-editmyoptions": "Επεξεργασία των προτιμήσεών σας", "right-rollback": "Γρήγορη αναστροφή των επεξεργασιών του τελευταίου χρήστη που επεξεργάστηκε μια σελίδα", - "right-markbotedits": "Σήμανση επαναφερόμενων επεξεργασιών ως επεξεργασιών μποτ", + "right-markbotedits": "Σήμανση επαναφερόμενων επεξεργασιών ως επεξεργασιών ρομπότ", "right-noratelimit": "Να μην επηρεάζεται από τα όρια ρυθμού", "right-import": "Εισαγωγή σελίδων από άλλα wikis", "right-importupload": "Εισαγωγή σελίδων με ανέβασμα αρχείου", @@ -1209,7 +1216,7 @@ "right-override-export-depth": "Εξαγωγή σελίδων συμπεριλαμβάνοντας συνδεδεμένες σελίδες έως ένα βάθος 5 επιπέδων", "right-sendemail": "Αποστολή ηλεκτρονικού μηνύματος σε άλλους χρήστες", "right-managechangetags": "Δημιουργία και (απ)ενεργοποίηση [[Special:Tags|ετικετών]]", - "right-applychangetags": "Εφαρμόστε [[Special:Tags|ετικέτες]] μαζί με τις αλλαγές", + "right-applychangetags": "Εφαρμογή [[Special:Tags|ετικετών]] παράλληλα με τις όποιες αλλαγές κάνει κάποιος", "right-changetags": "Προσθέστε και αφαιρέστε αυθαίρετες [[Special:Tags|ετικέτες]] σε μεμονωμένες εκδόσεις και καταχωρήσεις καταγραφών", "right-deletechangetags": "Διαγραφή [[Special:Tags|ετικετών]] από τη βάση δεδομένων", "grant-group-page-interaction": "Αλληλεπίδραση με σελίδες", @@ -1224,25 +1231,26 @@ "grant-blockusers": "Φραγή και αναίρεση φραγής χρηστών", "grant-createaccount": "Δημιουργία λογαριασμών", "grant-createeditmovepage": "Δημιουργία, επεξεργασία και μετακίνηση σελίδων", - "grant-delete": "Διαγραφή σελίδων, αναθεωρήσεων, και αρχείων καταγραφής", - "grant-editinterface": "Επεξεργασία του ονοματοχώρου Mediawiki και της CSS/JavaScript χρήστη", - "grant-editmycssjs": "Επεξεργαστείτε το δικό σας CSS/JavaScript", - "grant-editmyoptions": "Επεξεργασία των προτιμήσεών χρήστη σας", + "grant-delete": "Διαγραφή σελίδων, αναθεωρήσεων και καταχωρίσεων σε αρχεία καταγραφής", + "grant-editinterface": "Επεξεργασία του ονοματοχώρου Mediawiki και των CSS/JavaScript των χρηστών", + "grant-editmycssjs": "Επεξεργασία των CSS/JavaScript χρήστη σας", + "grant-editmyoptions": "Επεξεργασία των προτιμήσεων χρήστη σας", "grant-editmywatchlist": "Επεξεργασία της λίστας παρακολούθησής σας", "grant-editpage": "Επεξεργασία υπαρχουσών σελίδων", "grant-editprotected": "Επεξεργασία προστατευμένων σελίδων", - "grant-highvolume": "Υψηλής έντασης επεξεργασία", + "grant-highvolume": "Επεξεργασία υψηλού όγκου", "grant-oversight": "Απόκρυψη χρηστών και καταστολή αναθεωρήσεων", "grant-patrol": "Περιπολία αλλαγών σε σελίδες", "grant-privateinfo": "Πρόσβαση σε προσωπικές πληροφορίες", "grant-protect": "Προστασία και κατάργηση προστασίας σελίδων", - "grant-rollback": "Η επαναφορά αλλαγών σε σελίδες", + "grant-rollback": "Επαναφορά αλλαγών σε σελίδες", "grant-sendemail": "Αποστολή μηνύματος ηλεκτρονικού ταχυδρομείου σε άλλους χρήστες", - "grant-uploadeditmovefile": "Ανέβασμα, αντικατάσταση, και μετακίνηση αρχείων", + "grant-uploadeditmovefile": "Ανέβασμα, αντικατάσταση και μετακίνηση αρχείων", "grant-uploadfile": "Ανέβασμα νέων αρχείων", "grant-basic": "Βασικά δικαιώματα", - "grant-viewdeleted": "Δείτε τα διαγεγραμμένα αρχεία και σελίδες", + "grant-viewdeleted": "Προβολή διαγεγραμμένων αρχείων και σελίδων", "grant-viewmywatchlist": "Προβολή της λίστας παρακολούθησής σας", + "grant-viewrestrictedlogs": "Προβολή υποκείμενων σε περιορισμούς καταχωρίσεων στα αρχεία καταγραφών", "newuserlogpage": "Αρχείο καταγραφών δημιουργίας χρηστών", "newuserlogpagetext": "Αυτή είναι μια καταγραφή δημιουργίας χρηστών.", "rightslog": "Αρχείο καταγραφών δικαιωμάτων χρηστών", @@ -1266,11 +1274,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": "να αλλάξετε τα επίπεδα προστασίας για αυτή τη σελίδα", @@ -1285,13 +1295,14 @@ "action-userrights-interwiki": "επεξεργαστείτε τα δικαιώματα χρηστών σε άλλα wiki", "action-siteadmin": "να κλειδώσετε ή ξεκλειδώσετε τη βάση δεδομένων", "action-sendemail": "αποστείλετε μηνύματα ηλεκτρονικού ταχυδρομείου", + "action-editmyoptions": "επεξεργαστείτε τις προτιμήσεις σας", "action-editmywatchlist": "επεξεργαστείτε τη λίστα παρακολούθησής σας", "action-viewmywatchlist": "προβάλετε τη λίστα παρακολούθησής σας", "action-viewmyprivateinfo": "προβάλετε τις προσωπικές σας πληροφορίες", "action-editmyprivateinfo": "επεξεργαστείτε τις προσωπικές σας πληροφορίες", "action-editcontentmodel": "επεξεργαστείτε το μοντέλο περιεχομένου σελίδας", "action-managechangetags": "δημιουργήσετε και διαγράψετε ετικέτες από τη βάση δεδομένων", - "action-applychangetags": "εφαρμογή ετικετών μαζί με τις αλλαγές σας", + "action-applychangetags": "εφαρμογή ετικετών παράλληλα με τις αλλαγές σας", "action-changetags": "πρόσθεση και αφαίρεση αυθαίρετων ετικετών σε μεμονωμένες εκδόσεις και καταχωρήσεις καταγραφών", "action-deletechangetags": "διαγράψετε ετικέτες από τη βάση δεδομένων", "action-purge": "εκκαθάριση αυτής της σελίδας", @@ -1304,7 +1315,7 @@ "recentchanges-noresult": "Χωρίς αλλαγές κατά τη διάρκεια της συγκεκριμένης χρονικής περιόδου, με αυτά τα κριτήρια.", "recentchanges-feed-description": "Παρακολούθηση των πιο πρόσφατων αλλαγών στο wiki σε αυτή τη ροή.", "recentchanges-label-newpage": "Αυτή η επεξεργασία δημιούργησε μια νέα σελίδα", - "recentchanges-label-minor": "Αυτή είναι μια μικρή τροποποίηση", + "recentchanges-label-minor": "Αυτή είναι μια μικροεπεξεργασία", "recentchanges-label-bot": "Αυτή η επεξεργασία έγινε από ένα ρομπότ", "recentchanges-label-unpatrolled": "Αυτή η επεξεργασία δεν έχει ελεγχθεί ακόμα", "recentchanges-label-plusminus": "Μεταβολή του μεγέθους της σελίδας σε bytes", @@ -1312,9 +1323,53 @@ "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (δείτε [[Special:NewPages|κατάλογος νέων σελίδων]])", "recentchanges-legend-plusminus": "(<em>±123</em>)", "recentchanges-submit": "Προβολή", + "rcfilters-activefilters": "Ενεργά φίλτρα", + "rcfilters-restore-default-filters": "Επαναφορά προεπιλεγμένων φίλτρων", + "rcfilters-clear-all-filters": "Εκκαθάριση όλων των φίλτρων", + "rcfilters-search-placeholder": "Φιλτράρισμα πρόσφατων αλλαγών (περιηγηθείτε ή αρχίστε να πληκτρολογείτε)", + "rcfilters-invalid-filter": "Μη έγκυρο φίλτρο", + "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-userExpLevel-newcomer-label": "Νεοφερμένοι", + "rcfilters-filter-userExpLevel-newcomer-description": "Λιγότερες από 10 επεξεργασίες και 4 ημέρες δραστηριότητας.", + "rcfilters-filter-userExpLevel-learner-label": "Μαθητευόμενοι", + "rcfilters-filter-userExpLevel-learner-description": "Περισσότερες ημέρες δραστηριότητας και επεξεργασίες από τους «νεοφερμένους» αλλά λιγότερες από τους «έμπειρους χρήστες».", + "rcfilters-filter-userExpLevel-experienced-label": "Έμπειροι χρήστες", + "rcfilters-filter-userExpLevel-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-significance": "Σημαντικότητα", + "rcfilters-filter-minor-label": "Μικροεπεξεργασίες", + "rcfilters-filter-minor-description": "Επεξεργασίες που ο συντάκτης χαρακτήρισε ως μικροεπεξεργασίες.", + "rcfilters-filter-major-label": "Μη μικροπεξεργασίες", + "rcfilters-filter-major-description": "Επεξεργασίες μη χαρακτηρισμένες ως μικροεπεξεργασίες.", + "rcfilters-filtergroup-changetype": "Τύπος αλλαγής", + "rcfilters-filter-pageedits-label": "Επεξεργασίες σελίδων", + "rcfilters-filter-pageedits-description": "Επεξεργασίες σε περιεχόμενο του wiki, συζητήσεις, περιγραφές κατηγοριών....", + "rcfilters-filter-newpages-label": "Δημιουργίες σελίδων", + "rcfilters-filter-newpages-description": "Επεξεργασίες που δημιουργούν νέες σελίδες.", + "rcfilters-filter-categorization-label": "Αλλαγές κατηγοριών", + "rcfilters-filter-categorization-description": "Καταγραφές σελίδων που προστίθενται ή αφαιρούνται από κατηγορίες.", + "rcfilters-filter-logactions-label": "Καταγραφόμενες ενέργειες", + "rcfilters-filter-logactions-description": "Διαχειριστικές ενέργειες, δημιουργίες λογαριασμών, διαγραφές σελίδων, ανεβάσματα αρχείων....", "rcnotefrom": "Παρακάτω {{PLURAL:$5|είναι η αλλαγή|είναι οι αλλαγές}} από <strong>$3, $4</strong> (έως <strong>$1</strong> που εμφανίζεται).", "rclistfrom": "Εμφάνιση νέων αλλαγών αρχίζοντας από τις $3 στις $2", - "rcshowhideminor": "$1 μικρών τροποποιήσεων", + "rcshowhideminor": "$1 μικροεπεξεργασιών", "rcshowhideminor-show": "Εμφάνιση", "rcshowhideminor-hide": "Απόκρυψη", "rcshowhidebots": "$1 ρομπότ", @@ -1368,7 +1423,7 @@ "reuploaddesc": "Επιστροφή στη φόρμα φόρτωσης", "upload-tryagain": "Υποβολή τροποποιημένης περιγραφής αρχείου", "uploadnologin": "Δεν έχετε συνδεθεί!", - "uploadnologintext": "Παρακαλώ $1 για να επιφορτώσετε αρχεία.", + "uploadnologintext": "Παρακαλούμε $1 για να ανεβάσετε αρχεία.", "upload_directory_missing": "Λείπει το αποθηκευτήριο επιφορτώσεων ($1) και δεν μπορεί να δημιουργηθεί από τον webserver.", "upload_directory_read_only": "Δεν είναι δυνατή η εγγραφή στον κατάλογο ($1) από τον server.", "uploaderror": "Σφάλμα στο ανέβασμα αρχείου", @@ -1415,7 +1470,7 @@ "fileexists": "Υπάρχει ήδη αρχείο με αυτό το όνομα, παρακαλούμε ελέγξτε το <strong>[[:$1]]</strong> εάν δεν είστε {{GENDER:|σίγουρος|σίγουρη}} αν θέλετε να το αλλάξετε.\n[[$1|thumb]]", "filepageexists": "Η σελίδα περιγραφής για αυτό το αρχείο δημιουργήθηκε ήδη στο <strong>[[:$1]]</strong>, αλλά αυτήν τη στιγμή δεν υπάρχει αρχείο με αυτό το όνομα.\nΗ σύνοψη που εισαγάγετε δεν θα εμφανιστεί στη σελίδα περιγραφής.\nΓια να εμφανιστεί η σύνοψή σας εκεί, θα χρειαστεί να την επεξεργαστείτε με το χέρι.\n[[$1|thumb]]", "fileexists-extension": "Υπάρχει ένα αρχείο με παρόμοιο όνομα: [[$2|thumb]]\n* Όνομα του προς ανέβασμα αρχείου: <strong>[[:$1]]</strong>\n* Όνομα υπάρχοντος αρχείου: <strong>[[:$2]]</strong>\nΜήπως θα θέλατε να χρησιμοποιήσετε κάποιο όνομα που να ξεχωρίζει περισσότερο;", - "fileexists-thumbnail-yes": "Το αρχείο φαίνεται ότι είναι μια εικόνα μειωμένου μεγέθους ''(μικρογραφία)''. [[$1|thumb]]\nΠαρακαλώ ελέγξτε το αρχείο <strong>[[:$1]]</strong>.\nΑν το ελεγμένο αρχείο είναι η ίδια εικόνα στο αρχικό μέγεθος δεν είναι απαραίτητο να επιφορτώσετε μια επιπλέον μικρογραφία.", + "fileexists-thumbnail-yes": "Το αρχείο φαίνεται να είναι μια εικόνα μειωμένου μεγέθους <em>(μικρογραφία)</em>. \n[[$1|thumb]]\nΠαρακαλούμε ελέγξτε το αρχείο <strong>[[:$1]]</strong>.\nΑν το υπό έλεγχο αρχείο είναι η ίδια εικόνα στο αρχικό μέγεθος δεν είναι απαραίτητο να ανεβάσετε κάποια επιπλέον μικρογραφία.", "file-thumbnail-no": "Το όνομα αρχείου αρχίζει με <strong>$1</strong>.\nΦαίνεται πως είναι μια εικόνα μειωμένου μεγέθους ''(μικρογραφία)''.\nΑν έχετε αυτή την εικόνα σε πλήρη ανάλυση, επιφορτώστε τη, αλλιώς αλλάξτε παρακαλώ το όνομα του αρχείου.", "fileexists-forbidden": "Ένα αρχείο με αυτό το όνομα υπάρχει ήδη˙ εάν ακόμη θέλετε να επιφορτώσωτε αυτό το αρχείο παρακαλώ πηγαίνετε πίσω και επιφορτώστε το υπό ένα νέο όνομα. [[File:$1|thumb|center|$1]]", "fileexists-shared-forbidden": "Ένα αρχείο με αυτό το όνομα υπάρχει ήδη στο χώρο φύλαξης κοινών αρχείων.\nΕάν θέλετε παρ' όλ' αυτά να επιφορτώσετε το δικό σας αρχείο, παρακαλούμε πηγαίνετε πίσω και χρησιμοποιήστε ένα νέο όνομα. [[File:$1|thumb|center|$1]]", @@ -1423,7 +1478,7 @@ "file-deleted-duplicate": "Αρχείο παρόμοιο με αυτό εδώ ([[:$1]]) έχει προηγουμένως διαγραφεί. Θα πρέπει να ελέγξετε το ιστορικό διαγραφής του πριν να προχωρήσετε στην επαναφόρτωσή του.", "file-deleted-duplicate-notitle": "Ένα αρχείο πανομοιότυπο με αυτό έχει προηγουμένως διαγραφεί, και ο τίτλος έχει κατασταλεί.\nΘα πρέπει να ζητήσετε από κάποιον με την δυνατότητα προβολής κατεσταλμένου αρχείου δεδομένων για να εξετάσει την κατάσταση προτού προχωρήσετε σε επαναφόρτωση του.", "uploadwarning": "Προειδοποίηση φόρτωσης", - "uploadwarning-text": "Παρακαλώ αλλάξτε την περιγραφή του αρχείου παρακάτω και προσπαθήστε ξανά.", + "uploadwarning-text": "Παρακαλούμε τροποποιήστε την περιγραφή του αρχείου παρακάτω και προσπαθήστε ξανά.", "savefile": "Αποθήκευση αρχείου", "uploaddisabled": "Το ανέβασμα αρχείων είναι απενεργοποιημένο.", "copyuploaddisabled": "Το ανέβασμα μέσω URL έχει απενεργοποιηθεί.", @@ -1442,7 +1497,7 @@ "uploaded-setting-handler-svg": "Κάθε SVG που θέτει το χαρακτηριστικό «χειρισμού» με απομακρυσμένο προορισμό/προορισμό δεδομένων/προορισμό δέσμης ενεργειών είναι αποκλεισμένο. Βρέθηκε <code>$1=\"$2\"</code> στο ανεβασμένο αρχείο SVG.", "uploaded-remote-url-svg": "Κάθε SVG που θέτει οποιοδήποτε χαρακτηριστικό στυλ με απομακρυσμένη διεύθυνση URL είναι αποκλεισμένο. Βρέθηκε <code>$1=\"$2\"</code> στο ανεβασμένο αρχείο SVG.", "uploaded-image-filter-svg": "Βρέθηκε φίλτρο εικόνας με διεύθυνση URL: <code><$1 $2=\"$3\"></code> στο ανεβασμένο αρχείο SVG.", - "uploadscriptednamespace": "Αυτό το αρχείο SVG περιέχει μη αποδεκτό ονοματοχώρο «$1».", + "uploadscriptednamespace": "Αυτό το αρχείο SVG περιέχει μη αποδεκτό ονοματοχώρο «<nowiki>$1</nowiki>».", "uploadinvalidxml": "Δεν ήταν δυνατή η ανάλυση του κώδικα XML στο αρχείο.", "uploadvirus": "Το αρχείο περιέχει ιό! Λεπτομέρειες: $1", "uploadjava": "Το αρχείο είναι αρχείο ZIP, το οποίο περιέχει ένα αρχείο .class της γλώσσας Java.\nΔεν επιτρέπεται η αποστολή αρχείων Java, επειδή μπορούν να προκαλέσουν παράκαμψη των περιορισμών ασφαλείας του συστήματος.", @@ -1469,6 +1524,7 @@ "upload-copy-upload-invalid-domain": "Δεν υπάρχουν διαθέσιμα ανεβάσματα αντιγράφων από αυτό τον τομέα.", "upload-dialog-title": "Ανέβασμα αρχείου", "upload-dialog-button-cancel": "Ακύρωση", + "upload-dialog-button-back": "Πίσω", "upload-dialog-button-done": "Ολοκληρώθηκε", "upload-dialog-button-save": "Αποθήκευση", "upload-dialog-button-upload": "Ανέβασμα", @@ -1481,10 +1537,10 @@ "upload-form-label-infoform-categories": "Κατηγορίες", "upload-form-label-infoform-date": "Ημερομηνία", "upload-form-label-own-work-message-generic-local": "Επιβεβαιώνω ότι επιφορτώνω αυτό το αρχείο κατά τους όρους της υπηρεσίας και πολιτικές αδειοδότησης για τον ιστότοπο {{SITENAME}}.", - "upload-form-label-not-own-work-message-generic-local": "Εάν δεν είστε σε θέση να ανεβάσετε αυτό το αρχείο στο πλαίσιο των πολιτικών της {{SITENAME}}, παρακαλώ κλείστε αυτό το παράθυρο διαλόγου και να επιχειρήσετε μια άλλη μέθοδος.", + "upload-form-label-not-own-work-message-generic-local": "Εάν δεν μπορείτε να ανεβάσετε αυτό το αρχείο στο πλαίσιο των πολιτικών του {{SITENAME}}, παρακαλούμε κλείστε αυτό το παράθυρο διαλόγου και δοκιμάστε κάποιαν άλλη μέθοδο.", "upload-form-label-not-own-work-local-generic-local": "Επίσης, μπορεί να θέλετε να δοκιμάσετε [[Special:Upload|την προεπιλεγμένη σελίδα επιφόρτωσης]].", "upload-form-label-own-work-message-generic-foreign": "Καταλαβαίνω ότι είμαι φόρτωμα αυτό το αρχείο σε ένα κοινόχρηστο αρχείο. Επιβεβαιώνω ότι είμαι τόσο ακόλουθες τους όρους της υπηρεσίας και πολιτικές αδειοδότησης.", - "upload-form-label-not-own-work-message-generic-foreign": "Εάν δεν είστε σε θέση να ανεβάσετε αυτό το αρχείο στο πλαίσιο των πολιτικών της shared repository, παρακαλώ κλείστε αυτό το παράθυρο διαλόγου και να επιχειρήσετε μια άλλη μέθοδος.", + "upload-form-label-not-own-work-message-generic-foreign": "Εάν δεν μπορείτε να ανεβάσετε αυτό το αρχείο στο πλαίσιο των πολιτικών του κοινού αποθετηρίου, παρακαλούμε κλείστε αυτό το παράθυρο διαλόγου και δοκιμάστε κάποια άλλη μέθοδο.", "upload-form-label-not-own-work-local-generic-foreign": "Επίσης, μπορεί να θέλετε να δοκιμάσετε χρησιμοποιώντας το [[Special:Upload|τη σελίδα ανεβάσματος για το {{SITENAME}}]], αν αυτό το αρχείο μπορεί να φορτωθεί κάτω σύμφωνα με τις πολιτικές τους.", "backend-fail-stream": "Αδύνατη η μετάδοση του αρχείου $1.", "backend-fail-backup": "Αδύνατη η δημιουργία αντίγραφου ασφαλείας του αρχείου $1.", @@ -1795,13 +1851,20 @@ "apisandbox-dynamic-parameters-add-label": "Προσθήκη παραμέτρου:", "apisandbox-dynamic-parameters-add-placeholder": "Ονομασία παραμέτρου", "apisandbox-dynamic-error-exists": "Η παράμετρος με την ονομασία \"$1\" υπάρχει ήδη", + "apisandbox-deprecated-parameters": "Παρωχημένες παράμετροι", "apisandbox-submit-invalid-fields-title": "Κάποια από τα πεδία δεν είναι έγκυρα", - "apisandbox-submit-invalid-fields-message": "Παρακαλώ διορθώστε τα σημειωμένα πεδία και προσπαθήστε ξανά.", + "apisandbox-submit-invalid-fields-message": "Παρακαλούμε διορθώστε τα σημειωμένα πεδία και προσπαθήστε ξανά.", "apisandbox-results": "Αποτελέσματα", "apisandbox-sending-request": "Αποστολή αιτήματος API...", "apisandbox-loading-results": "Λήψη αποτελεσμάτων API...", "apisandbox-request-url-label": "Αίτηση URL:", + "apisandbox-request-json-label": "Αίτημα JSON:", "apisandbox-request-time": "Χρόνος αιτήματος: {{PLURAL:$1|$1 ms}}", + "apisandbox-alert-field": "Η τιμή αυτού του πεδίου δεν είναι έγκυρη.", + "apisandbox-continue": "Συνέχεια", + "apisandbox-continue-clear": "Διαγραφή", + "apisandbox-multivalue-all-namespaces": "$1 (Όλοι οι ονοματοχώροι)", + "apisandbox-multivalue-all-values": "$1 (Όλες οι τιμές)", "booksources": "Πηγές βιβλίων", "booksources-search-legend": "Αναζήτηση για πηγές βιβλίων", "booksources-isbn": "ISBN:", @@ -1878,8 +1941,8 @@ "listgrouprights-namespaceprotection-header": "Περιορισμοί ονοματοχώρων", "listgrouprights-namespaceprotection-namespace": "Ονοματοχώρος", "listgrouprights-namespaceprotection-restrictedto": "Δικαίωμα(τα) που επιτρέπει(ουν) σε χρήστη να επεξεργαστεί", - "listgrants": "Επιχορηγήσεις", - "listgrants-grant": "Επιχορήγηση", + "listgrants": "Παραχώρηση πρόσβασης", + "listgrants-grant": "Πρόσβαση", "listgrants-rights": "Δικαιώματα", "trackingcategories": "Κατηγορίες παρακολούθησης", "trackingcategories-summary": "Αυτή η σελίδα εμφανίζει τις κατηγορίες παρακολούθησης το περιεχόμενο των οποίων συμπληρώνεται αυτόματα από το λογισμικό MediaWiki. Τα ονόματά τους μπορεί να αλλαχθούν με την αλλαγή των σχετικών μηνυμάτων συστήματος στον ονοματοχώρο {{ns:8}}.", @@ -1921,7 +1984,7 @@ "emailccsubject": "Αντίγραφο του μηνυματός σας στο $1: $2", "emailsent": "Το μήνυμα έχει σταλεί", "emailsenttext": "Το μήνυμά σας έχει σταλεί.", - "emailuserfooter": "Αυτό το μήνυμα ηλεκτρονικού ταχυδρομείου στάλθηκε από {{GENDER:$1|το χρήστη|τη χρήστρια}} $1 {{GENDER:$2|στο χρήστη|στη χρήστρια}} $2 μέσω της λειτουργίας «{{int:emailuser}}» στο {{SITENAME}}.", + "emailuserfooter": "Αυτό το μήνυμα ηλεκτρονικού ταχυδρομείου στάλθηκε από {{GENDER:$1|το χρήστη|τη χρήστρια}} $1 {{GENDER:$2|στο χρήστη|στη χρήστρια}} $2 μέσω της λειτουργίας «{{int:emailuser}}» στο {{SITENAME}}. Αν {{GENDER:$2|σας}} απαντήσετε σε αυτό το μήνυμα ηλεκτρονικού ταχυδρομείου, το e-mail {{GENDER:$2|σας}} θα αποσταλεί απευθείας {{GENDER:$1|στον|στην}} αρχικό αποστολέα, αποκαλύπτοντας τη διεύθυνση e-mail για {{GENDER:$2|σας}} σε {{GENDER:$1|αυτόν|αυτήν}}.", "usermessage-summary": "Φεύγετε από τις ειδοποιήσεις συστήματος.", "usermessage-editor": "Μηνύματα συστήματος", "usermessage-template": "MediaWiki:UserMessage", @@ -1932,7 +1995,7 @@ "watchlistanontext": "Παρακαλούμε συνδεθείτε για να δείτε ή να επεξεργαστείτε αντικείμενα στη λίστα παρακολούθησής σας.", "watchnologin": "Δεν έχετε συνδεθεί.", "addwatch": "Προσθήκη στη λίστα παρακολούθησης", - "addedwatchtext": "Το λήμμα «[[:$1]]» και η σελίδα συζήτησής του έχουν προστεθεί στη [[Special:Watchlist|λίστα παρακολούθησής]] σας.", + "addedwatchtext": "Η σελίδα «[[:$1]]» και η σελίδα συζήτησής της προστέθηκαν στη [[Special:Watchlist|λίστα παρακολούθησής σας]].", "addedwatchtext-short": "Η σελίδα «$1» έχει προστεθεί στην λίστα παρακολούθησής σας.", "removewatch": "Αφαίρεση από τη λίστα παρακολούθησης", "removedwatchtext": "Το λήμμα «[[:$1]]» και η σελίδα συζήτησής του έχουν αφαιρεθεί από τη [[Special:Watchlist|λίστα παρακολούθησής]] σας.", @@ -1951,7 +2014,7 @@ "watchlist-hide": "Απόκρυψη", "watchlist-submit": "Προβολή", "wlshowtime": "Περίοδος χρόνου για να εμφανιστεί:", - "wlshowhideminor": "μικρές τροποποιήσεις", + "wlshowhideminor": "μικροεπεξεργασίες", "wlshowhidebots": "bots", "wlshowhideliu": "εγγεγραμμένοι χρήστες", "wlshowhideanons": "ανώνυμοι χρήστες", @@ -2008,8 +2071,8 @@ "deleting-backlinks-warning": "<strong>Προσοχή:</strong> [[Special:WhatLinksHere/{{FULLPAGENAME}}|Άλλες σελίδες]] συνδέουν ή ενσωματώνουν τη σελίδα που πρόκειται να διαγράψετε.", "rollback": "Επαναφορά επεξεργασιών", "rollbacklink": "αναστροφή", - "rollbacklinkcount": "Επαναφορά $1 {{PLURAL:$1|επεξεργασίας|επεξεργασιών}}", - "rollbacklinkcount-morethan": "επαναφορά περισσότερων από $1 {{PLURAL:$1|επεξεργασία|επεξεργασίες}}", + "rollbacklinkcount": "Αναστροφή $1 {{PLURAL:$1|επεξεργασίας|επεξεργασιών}}", + "rollbacklinkcount-morethan": "αναστροφή περισσότερων από $1 {{PLURAL:$1|επεξεργασία|επεξεργασίες}}", "rollbackfailed": "Η επαναφορά απέτυχε.", "cantrollback": "Δεν είναι δυνατή η αναίρεση αυτής της αλλαγής, πρόκειται για την αρχική ενέργεια δημιουργίας της σελίδας.", "alreadyrolled": "Αδύνατον να αναιρεθεί η τελευταία αλλαγή της σελίδας [[:$1]] από το χρήστη ([[User:$2|$2]] ([[User talk:$2|Συζήτηση]]){{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]]), διότι κάποιος έχει ήδη αναιρέσει την αλλαγή ή έχει αλλάξει εκ νέου τη σελίδα.\n\nΤελευταία αλλαγή από το χρήστη ([[User:$3|$3]] ([[User talk:$3|Συζήτηση]]){{int:pipe-separator}}[[Special:Contributions/$3|{{int:contribslink}}]]).", @@ -2051,7 +2114,7 @@ "protect-legend": "Επιβεβαίωση κλειδώματος", "protectcomment": "Αιτία:", "protectexpiry": "Λήξη", - "protect_expiry_invalid": "Ο χρόνος λήξης είναι άκυρος.", + "protect_expiry_invalid": "Ο χρόνος λήξης δεν είναι έγκυρος.", "protect_expiry_old": "Ο χρόνος λήξης αναφέρεται στο παρελθόν.", "protect-unchain-permissions": "Ξεκλείδωμα περαιτέρω επιλογών προστασίας", "protect-text": "Μπορείτε να δείτε και να αλλάξετε το επίπεδο προστασίας εδώ για τη σελίδα '''$1'''.", @@ -2145,7 +2208,7 @@ "nocontribs": "Δεν βρέθηκαν αλλαγές με αυτά τα κριτήρια.", "uctop": "(τρέχουσα)", "month": "Από το μήνα (και νωρίτερα):", - "year": "Από τη χρονιά (και νωρίτερα):", + "year": "Από το έτος (και νωρίτερα):", "sp-contributions-newbies": "Εμφάνιση των συνεισφορών των νέων λογαριασμών μόνο", "sp-contributions-newbies-sub": "Για νέους λογαριασμούς", "sp-contributions-newbies-title": "Συνεισφορές χρηστών για νέους λογαριασμούς", @@ -2162,6 +2225,7 @@ "sp-contributions-username": "Διεύθυνση IP ή όνομα χρήστη:", "sp-contributions-toponly": "Εμφάνιση μόνο των επεξεργασιών που είναι πρόσφατες αναθεωρήσεις", "sp-contributions-newonly": "Εμφάνιση μόνο των επεξεργασιών που είναι δημιουργία σελίδας", + "sp-contributions-hideminor": "Απόκρυψη μικροεπεξεργασιών", "sp-contributions-submit": "Αναζήτηση", "whatlinkshere": "Τι συνδέει εδώ", "whatlinkshere-title": "Σελίδες που συνδέουν στη σελίδα «$1»", @@ -2268,7 +2332,7 @@ "block-log-flags-angry-autoblock": "ενισχυμένος αυτόματος αποκλεισμός ενεργοποιημένος", "block-log-flags-hiddenname": "όνομα χρήστη κρυμμένο", "range_block_disabled": "Η δυνατότητα του διαχειριστή να δημιουργεί περιοχές φραγής είναι απενεργοποιημένη.", - "ipb_expiry_invalid": "Άκυρος χρόνος λήξης", + "ipb_expiry_invalid": "Μη έγκυρος χρόνος λήξης", "ipb_expiry_old": "Ο χρόνος λήξης αναφέρεται στο παρελθόν.", "ipb_expiry_temp": "Οι κρυμμένες φραγές ονομάτων χρηστών πρέπει να είναι μόνιμες.", "ipb_hide_invalid": "Μη εφικτή καταστολή αυτού του λογαριασμού. Μπορεί να έχει περισσότερες από {{PLURAL:$1|μια επεξεργασία|$1 επεξεργασίες}}.", @@ -2310,7 +2374,7 @@ "movepagetext": "Χρησιμοποιώντας τη φόρμα που ακολουθεί θα γίνει μετονομασία σελίδας, μεταφέροντας όλο το ιστορικό της στο νέο όνομα.\nΟ παλιός τίτλος της σελίδας θα γίνει σελίδα ανακατεύθυνσης προς τον νέο τίτλο.\nΜπορείτε να ενημερώσετε αυτόματα τις ανακατευθύνσεις που οδηγούν στον αρχικό τίτλο.\nΑν επιλέξετε να μην ενημερωθούν αυτόματα, μην ξεχάσετε να ελέγξετε για [[Special:DoubleRedirects|διπλές]] ή [[Special:BrokenRedirects|κατεστραμμένες ανακατευθύνσεις]].\nΕίναι δική σας ευθύνη να επιβεβαιώσετε ότι οι σύνδεσμοι εξακολουθούν να δείχνουν προς τη σωστή κατεύθυνση.\n\nΛάβετε υπόψιν σας ότι η σελίδα <strong>δεν</strong> θα μετακινηθεί αν υπάρχει ήδη μια άλλη σελίδα υπό το νέο τίτλο, εκτός αν η σελίδα αυτή είναι ανακατεύθυνση και δεν έχει ιστορικό επεξεργασίας.\n\nΑυτό σημαίνει ότι σε περίπτωση λάθους μπορείτε να μετονομάσετε ξανά μια σελίδα δίνοντας της την αρχική της ονομασία αλλά δεν μπορείτε να αντικαταστήσετε μια υπάρχουσα σελίδα.\n\n<strong>Σημείωση:</strong>\nΑυτή η αλλαγή μπορεί να αποβεί δραστική και αναπάντεχη όταν πρόκειται για δημοφιλείς σελίδες.\nΠαρακαλούμε βεβαιωθείτε ότι αντιλαμβάνεστε τις επιπτώσεις αυτής της ενέργειας πριν προχωρήσετε.", "movepagetext-noredirectfixer": "Χρησιμοποιώντας τη φόρμα που ακολουθεί μπορείτε να μετονομάσετε σελίδες και να μεταφέρετε όλο το ιστορικό τους στο νέο όνομα.\nΟ παλιός τίτλος της σελίδας θα γίνει μια σελίδα ανακατεύθυνσης στο νέο τίτλο.\nΜπορείτε να ενημερώσετε τις ανακατευθύνσεις που οδηγούν στον αρχικό τίτλο αυτόματα.\nΑν επιλέξετε να μην γίνει, θα πρέπει να ελέγξετε τις [[Special:DoubleRedirects|διπλές]] και τις [[Special:BrokenRedirects|κατεστραμμένες ανακατευθύνσεις]].\nΕίστε υπεύθυνος να επιβεβαιώσετε ότι οι σύνδεσμοι εξακολουθούν να οδηγούν προς τις κατευθύνσεις που πρέπει.\n\nΛάβετε υπόψη σας ότι η σελίδα <strong>δεν</strong> θα μετακινηθεί αν υπάρχει ήδη μια άλλη σελίδα κάτω από το νέο τίτλο, εκτός αν η σελίδα αυτή είναι κενή ή είναι ανακατεύθυνση χωρίς ιστορικό επεξεργασίας.\nΑυτό σημαίνει ότι, στην περίπτωση που έχετε κάνει λάθος, μπορείτε να μετονομάσετε μια σελίδα ξαναδίνοντας της την αρχική της ονομασία αλλά δεν μπορείτε να αντικαταστήσετε μια υπάρχουσα σελίδα.\n\n<strong>Σημείωση:</strong> \nΗ μετονομασία σελίδας είναι μια αιφνίδια και δραστική αλλαγή όταν πρόκειται για δημοφιλείς σελίδες.\nΠαρακαλούμε, πριν το αποφασίσετε, να εξετάσετε προσεκτικά τις πιθανές επιπτώσεις αυτής της ενέργειας.", "movepagetalktext": "Αν τσεκάρετε αυτό το κουτί, η σχετιζόμενη σελίδα συζήτησης θα μετακινηθεί αυτόματα στο νέο τίτλο, εκτός αν υπάρχει κάτω από το νέο όνομα μια σελίδα συζήτησης που δεν είναι κενή.\n\nΣε αυτή την περίπτωση, θα πρέπει να μετακινήσετε ή να συγχωνεύσετε τη σελίδα με το χέρι αν είναι επιθυμητό.", - "moveuserpage-warning": "'''Προσοχή:''' Ετοιμάζεστε να μετακινήσετε μια σελίδα χρήστη. Σημειώστε παρακαλώ ότι θα μετακινηθεί μόνο η σελίδα και ο χρήστης '''δεν''' θα μετονομαστεί.", + "moveuserpage-warning": "<strong>Προειδοποίηση:</strong> Ετοιμάζεστε να μετακινήσετε μια σελίδα χρήστη. Παρακαλούμε λάβετε υπόψιν σας ότι θα μετακινηθεί μόνο η σελίδα και ο χρήστης <em>δεν</em> θα μετονομαστεί.", "movecategorypage-warning": "<strong>Προειδοποίηση:</strong>Πρόκειται να μετακινήσετε μια σελίδα κατηγορίας. Έχετε υπόψη ότι θα μετακινηθεί μόνο η σελίδα και τυχόν σελίδες στην παλιά κατηγορία <em>δεν</em> θα μεταφερθούν στη νέα κατηγορία.", "movenologintext": "Για να μετακινήσετε μια σελίδα πρέπει να είστε εγγεγραμένος χρήστης και [[Special:UserLogin|να έχετε συνδεθεί]] στο Wiκi.", "movenotallowed": "Δεν έχετε άδεια να μετακινείτε σελίδες.", @@ -2440,7 +2504,7 @@ "import-nonewrevisions": "Καμία αναθεώρηση δεν εισήχθει (όλες είτε ήταν ήδη παρούσες, ή παραλήφθηκαν λόγω σφαλμάτων).", "xml-error-string": "$1 στη γραμμή $2, στήλη $3 (byte $4): $5", "import-upload": "Ανέβασμα δεδομένων XML", - "import-token-mismatch": "Απώλεια δεδομένων περιόδου λειτουργίας.\n\nΜπορεί να έχουν αποσυνδεθεί. <strong>Παρακαλούμε βεβαιωθείτε ότι είστε ακόμα συνδεδεμένοι και προσπαθήστε ξανά</strong>.\nΑν εξακολουθεί να μην λειτουργεί, δοκιμάστε να [[Special:UserLogout|αποσυνδεθείτε]] και επανασυνδεθείτε, και ελέγξτε ότι ο browser σας επιτρέπει cookies από αυτό τον ιστοτόπο.", + "import-token-mismatch": "Απώλεια δεδομένων περιόδου λειτουργίας.\n\nΜπορεί να έχετε αποσυνδεθεί. <strong>Παρακαλούμε επιβεβαιώστε ότι βρίσκεστε ακόμα σε σύνδεση και προσπαθήστε ξανά</strong>.\nΑν εξακολουθεί να μην λειτουργεί, δοκιμάστε να [[Special:UserLogout|αποσυνδεθείτε]] και να συνδεθείτε ξανά, και βεβαιωθείτε ότι το πρόγραμμα περιήγησής σας επιτρέπει cookies από αυτόν τον ιστότοπο.", "import-invalid-interwiki": "Δεν είναι δυνατή η εισαγωγή από το καθορισμένο wiki.", "import-error-edit": "Η σελίδα «$1» δεν εισήχθη επειδή δεν σας επιτρέπεται να την επεξεργαστείτε.", "import-error-create": "Η σελίδα «$1» δεν εισήχθη επειδή δεν σας επιτρέπεται να την δημιουργήσετε.", @@ -2589,7 +2653,7 @@ "pageinfo-toolboxlink": "Πληροφορίες σελίδας", "pageinfo-redirectsto": "Ανακατευθύνει σε", "pageinfo-redirectsto-info": "πληροφορίες", - "pageinfo-contentpage": "Καταμετράται ως σελίδα περιεχομένου", + "pageinfo-contentpage": "Προσμετράται ως σελίδα περιεχομένου", "pageinfo-contentpage-yes": "Ναι", "pageinfo-protect-cascading": "Οι προστασίες ξεκινούν τη διαδοχή τους από εδώ", "pageinfo-protect-cascading-yes": "Ναι", @@ -2599,6 +2663,7 @@ "pageinfo-category-pages": "Αριθμός σελίδων", "pageinfo-category-subcats": "Αριθμός υποκατηγοριών", "pageinfo-category-files": "Αριθμός αρχείων", + "pageinfo-user-id": "Αναγνωριστικό χρήση", "markaspatrolleddiff": "Σήμανση ως ελεγμένο", "markaspatrolledtext": "Σήμανση αυτής της σελίδας ως ελεγμένης", "markaspatrolledtext-file": "Επισημάνετε αυτή τη έκδοση του αρχείου ως ελεγμένη", @@ -2615,6 +2680,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", @@ -2640,9 +2706,9 @@ "show-big-image-preview-differ": "Το μέγεθος αυτής της $3 προεπισκόπησης αυτού του $2 το αρχείο: $1.", "show-big-image-other": "Άλλες {{PLURAL:$2|ανάλυση|αναλύσεις}}: $1.", "show-big-image-size": "$1 × $2 εικονοστοιχεία", - "file-info-gif-looped": "περιτυλιγμένο", - "file-info-gif-frames": "$1 {{PLURAL:$1|πλαίσιο|πλαίσια}}", - "file-info-png-looped": "Σε άπειρο βρόγχο", + "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-frames": "$1 {{PLURAL:$1|πλαίσιο|πλαίσια}}", "file-no-thumb-animation": "'''Σημείωση: λόγω τεχνικών περιορισμών, μικρογραφίες αυτού του τύπου αρχείου δεν θα είναι κινούμενες.'''", @@ -2847,7 +2913,7 @@ "exif-licenseurl": "Διεύθυνση URL για πνευματικά δικαιώματα άδειας χρήσης", "exif-morepermissionsurl": "Εναλλακτική πληροφορίες άδειας χρήσης", "exif-attributionurl": "Όταν επαναχρησιμοποιείτε αυτό το έργο, παρακαλούμε να βάλετε σύνδεσμο προς", - "exif-preferredattributionname": "Όταν επαναχρησιμοποιείτε αυτό το έργο, παρακαλώ αναφέρετε την πηγή", + "exif-preferredattributionname": "Όταν επαναχρησιμοποιείτε αυτό το έργο, παρακαλούμε να αναφέρετε την πηγή", "exif-pngfilecomment": "Σχόλιο αρχείου PNG", "exif-disclaimer": "Αποποίηση ευθυνών", "exif-contentwarning": "Προειδοποίηση περιεχομένου", @@ -3048,12 +3114,12 @@ "scarytranscludefailed-httpstatus": "[Η λήψη προτύπου απέτυχε για το $1: HTTP $2]", "scarytranscludetoolong": "[Η διεύθυνση URL είναι πολύ μεγάλη.]", "deletedwhileediting": "'''Προσοχή''': Αυτή η σελίδα έχει διαγραφεί αφότου ξεκινήσατε την επεξεργασία!", - "confirmrecreate": "Ο χρήστης [[User:$1|$1]] ([[User talk:$1|συζήτηση]]) διέγραψε αυτή τη σελίδα αφότου ξεκινήσατε την επεξεργασία με αιτιολόγηση:\n: <em>$2</em>\nΠαρακαλούμε επιβεβαιώστε ότι θέλετε πραγματικά να ξαναδημιουργήσετε αυτή τη σελίδα.", - "confirmrecreate-noreason": "{{GENDER:$1|Ο χρήστης|Η χρήστρια}} [[User:$1|$1]] ([[User talk:$1|συζήτηση]]) διέγραψε αυτή τη σελίδα αφότου ξεκινήσατε την επεξεργασία.\nΠαρακαλούμε επιβεβαιώστε ότι θέλετε πραγματικά να ξαναδημιουργήσετε αυτή τη σελίδα.", + "confirmrecreate": "{{GENDER:$1|Ο χρήστης|Η χρήστρια}} [[User:$1|$1]] ([[User talk:$1|συζήτηση]]) διέγραψε αυτήν τη σελίδα αφότου ξεκινήσατε την επεξεργασία με αιτιολόγηση:\n: <em>$2</em>\nΠαρακαλούμε επιβεβαιώστε ότι θέλετε πραγματικά να ξαναδημιουργήσετε αυτήν τη σελίδα.", + "confirmrecreate-noreason": "{{GENDER:$1|Ο χρήστης|Η χρήστρια}} [[User:$1|$1]] ([[User talk:$1|συζήτηση]]) διέγραψε αυτήν τη σελίδα αφότου ξεκινήσατε την επεξεργασία.\nΠαρακαλούμε επιβεβαιώστε ότι θέλετε πραγματικά να ξαναδημιουργήσετε αυτήν τη σελίδα.", "recreate": "Αναδημιουργία", "confirm_purge_button": "Εντάξει", - "confirm-purge-top": "Καθαρισμός της λανθάνουσας μνήμης αυτής της σελίδας.", - "confirm-purge-bottom": "Η εκκαθάριση μιας σελίδας εκκαθαρίζει την μνήμη cache και εξαναγκάζει την πλέον πρόσφατη έκδοση να εμφανιστεί.", + "confirm-purge-top": "Να απαλειφθεί η προσωρινή μνήμη αυτής της σελίδας;", + "confirm-purge-bottom": "Ο καθαρισμός σελίδας απαλείφει την προσωρινή μνήμη και εξαναγκάζει την πλέον πρόσφατη αναθεώρηση να εμφανιστεί.", "confirm-watch-button": "Εντάξει", "confirm-watch-top": "Προσθήκη αυτής της σελίδας στη λίστα παρακολούθησης σας;", "confirm-unwatch-button": "Εντάξει", @@ -3313,7 +3379,11 @@ "htmlform-cloner-delete": "Αφαίρεση", "htmlform-cloner-required": "Απαιτείται τουλάχιστον μία τιμή.", "htmlform-date-placeholder": "ΕΕΕΕ-ΜΜ-ΗΗ", + "htmlform-time-placeholder": "ΩΩ:ΛΛ:ΔΔ", + "htmlform-datetime-placeholder": "ΕΕΕΕ-ΜΜ-ΗΗ ΩΩ:ΛΛ:ΔΔ", "htmlform-date-invalid": "Η τιμή που καθορίσατε δεν είναι μια αναγνωρισμένη ημερομηνία. Δοκιμάστε να χρησιμοποιήσετε τη μορφή ΕΕΕΕ-MM-ΗΗ.", + "htmlform-time-invalid": "Η τιμή που καθορίσατε δεν είναι κάποια αναγνωρίσιμη ώρα. Δοκιμάστε να χρησιμοποιήσετε τη μορφή ΩΩ:ΛΛ:ΔΔ.", + "htmlform-datetime-invalid": "Η τιμή που καθορίσατε δεν είναι κάποια αναγνωρίσιμη ημερομηνία και ώρα. Δοκιμάστε να χρησιμοποιήσετε τη μορφή ΕΕΕΕ-ΜΜ-ΗΗ ΩΩ:ΛΛ:ΔΔ.", "htmlform-title-badnamespace": "[[:$1]] δεν είναι στο \"{{ns:$2}}\" ονοματοχώρο.", "htmlform-title-not-creatable": "\"$1\" - η σελίδα τίτλου δεν είναι δυνατόν να δημιουργηθεί", "htmlform-title-not-exists": "Το $1 δεν υπάρχει.", @@ -3382,7 +3452,6 @@ "logentry-tag-update-revision": "{{GENDER:$2|Ο|Η}} $1 ενημέρωσε ετικέτες στην αναθεώρηση $4 της σελίδας $3 (πρόσθεσε {{PLURAL:$7|την|τις}} $6• αφαίρεσε {{PLURAL:$9|την|τις}} $8)", "logentry-tag-update-logentry": "$1 {{GENDER:$2|ενημερώθηκαν}} ετικέτες για την καταχώριση αρχείου καταγραφής $5 της σελίδας $3 ({{PLURAL:$7|προστέθηκαν}} $6; {{PLURAL:$9|αφαιρέθηκαν}} $8)", "rightsnone": "(κανένα)", - "revdelete-summary": "επεξεργασία σύνοψης", "feedback-adding": "Προσθήκη σχολίων στην σελίδα...", "feedback-back": "Πίσω", "feedback-bugcheck": "Ωραία! Ελέγξτε μόνο ότι δεν είναι ήδη ένα από τα [$1 γνωστά σφάλματα].", @@ -3404,51 +3473,12 @@ "feedback-useragent": "User agent:", "searchsuggest-search": "Αναζήτηση σε {{SITENAME}}", "searchsuggest-containing": "περιέχει...", - "api-error-badaccess-groups": "Δεν επιτρέπεται να ανεβάσετε αρχεία σε αυτό το wiki.", "api-error-badtoken": "Εσωτερικό σφάλμα: εσφαλμένο διακριτικό.", - "api-error-copyuploaddisabled": "Το ανέβασμα από URL είναι απενεργοποιημένο σε αυτόν το διακομιστή.", - "api-error-duplicate": "Υπάρχει το{{PLURAL:$1|είναι ένα άλλο αρχείο|είναι κάποια άλλα αρχεία}} ήδη στο site με το ίδιο περιεχόμενο.", - "api-error-duplicate-archive": "{{PLURAL:$1|Υπήρχε ήδη άλλο αρχείο|Υπήρχαν ήδη άλλα αρχεία}} στον ιστότοπο με το ίδιο περιεχόμενο, αλλά {{PLURAL:$1|διαγράφηκε|διαγράφηκαν}}.", - "api-error-empty-file": "Το αρχείο που υποβάλλατε ήταν κενό.", "api-error-emptypage": "Η δημιουργία νέων, κενών σελιδών δεν επιτρέπετε.", - "api-error-fetchfileerror": "Εσωτερικό σφάλμα: κάτι πήγε στραβά κατά την ανάκτηση του αρχείου.", - "api-error-fileexists-forbidden": "Ένα αρχείο με το όνομα \"$1\" υπάρχει ήδη, και δεν είναι δυνατό να αντικατασταθεί.", - "api-error-fileexists-shared-forbidden": "Ένα αρχείο με όνομα \"$1\" υπάρχει ήδη στο χώρο φύλαξης κοινόχρηστων αρχείων και δεν είναι δυνατό να αντικατασταθεί.", - "api-error-file-too-large": "Το αρχείο που υποβάλλατε ήταν πολύ μεγάλο.", - "api-error-filename-tooshort": "Το όνομα αρχείου είναι πολύ μικρό.", - "api-error-filetype-banned": "Αυτός ο τύπος αρχείου έχει απαγορευτεί.", - "api-error-filetype-banned-type": "$1 δεν είναι {{PLURAL:$4|επιτρεπόμενος τύπος αρχείου|επιτρεπόμενοι τύποι αρχείων}}. {{PLURAL:$3|Επιτρεπόμενος τύπος αρχείων|Επιτρεπόμενοι τύποι αρχείων}} είναι το $2.", - "api-error-filetype-missing": "Το αρχείο δεν έχει επέκταση.", - "api-error-hookaborted": "Η τροποποίηση που επιχειρήσατε να κάνετε ματαιώθηκε από ένα άγκιστρο της επέκτασης.", - "api-error-http": "Εσωτερικό σφάλμα: δεν είναι δυνατή η σύνδεση με το διακομιστή.", - "api-error-illegal-filename": "Αυτό το όνομα αρχείου δεν επιτρέπεται.", - "api-error-internal-error": "Εσωτερικό σφάλμα: κάτι πήγε στραβά με την επεξεργασία της επιφόρτωσής σας στο wiki.", - "api-error-invalid-file-key": "Εσωτερικό σφάλμα: το αρχείο δεν βρέθηκε στην προσωρινή αποθήκευση.", - "api-error-missingparam": "Εσωτερικό σφάλμα: λείπουν παράμετροι από το αίτημα.", - "api-error-missingresult": "Εσωτερικό σφάλμα: δεν ήταν δυνατό να προσδιοριστεί εάν η αντίγραφή ολοκληρώθηκε με επιτυχία.", - "api-error-mustbeloggedin": "Θα πρέπει να συνδεθείτε για να φορτώσετε τα αρχεία.", - "api-error-mustbeposted": "Εσωτερικό σφάλμα: το αίτημα απαιτεί HTTP POST.", - "api-error-noimageinfo": "Η αποστολή πέτυχε, αλλά ο διακομιστής δεν μας παρείχε πληροφορίες σχετικά με το αρχείο.", - "api-error-nomodule": "Εσωτερικό σφάλμα: δεν υπάρχει σετ επιφόρτωσης.", - "api-error-ok-but-empty": "Εσωτερικό σφάλμα: δεν υπάρχει απάντηση από το διακομιστή.", - "api-error-overwrite": "Αντικατάσταση ενός υπάρχοντος αρχείου δεν επιτρέπεται.", - "api-error-stashfailed": "Εσωτερικό σφάλμα: ο διακομιστής απέτυχε να αποθηκεύσει το προσωρινό αρχείο.", "api-error-publishfailed": "Εσωτερικό σφάλμα: ο διακομιστής απέτυχε να αποθηκεύσει το προσωρινό αρχείο.", - "api-error-stasherror": "Παρουσιάστηκε ένα σφάλμα κατά το ανέβασμα του αρχείου στην κρύπτη.", - "api-error-stashedfilenotfound": "Το κρυμμένο αρχείο δεν βρέθηκε κατά την προσπάθεια να το ανεβάσετε από αποθετήριό του.", - "api-error-stashpathinvalid": "Η διαδρομή, στην οποία το κρυμμένο αρχείο θα έπρεπε να έχει βρεθεί δεν ήταν έγκυρη.", - "api-error-stashfilestorage": "Παρουσιάστηκε ένα σφάλμα κατά την αποθήκευση του αρχείου στην κρύπτη.", - "api-error-stashzerolength": "Ο διακομιστής δεν θα μπορούσε να κρύψει το αρχείο, επειδή είχε μηδενικό μήκος.", - "api-error-stashnotloggedin": "Θα πρέπει να συνδεθείτε για να αποθηκεύσετε τα αρχεία στο αποθετήριο φόρτωσης.", - "api-error-stashnosuchfilekey": "Το κλειδί αρχείου στο οποίο προσπαθούσατε να αποκτήσετε πρόσβαση στο αποθετήριο δεν υπάρχει.", - "api-error-timeout": "Ο διακομιστής δεν αποκρίθηκε εντός του αναμενόμενου χρόνου.", - "api-error-unclassified": "Προέκυψε ένα άγνωστο σφάλμα.", - "api-error-unknown-code": "Άγνωστο σφάλμα: \"$1\"", - "api-error-unknown-error": "Εσωτερικό σφάλμα: κάτι πήγε στραβά, όταν προσπαθείσατε να φορτώσετε το αρχείο σας.", + "api-error-stashfailed": "Εσωτερικό σφάλμα: ο διακομιστής απέτυχε να αποθηκεύσει το προσωρινό αρχείο.", "api-error-unknown-warning": "Άγνωστη προειδοποίηση: «$1».", "api-error-unknownerror": "Άγνωστο σφάλμα: «$1».", - "api-error-uploaddisabled": "Το ανέβασμα αρχείων είναι απενεργοποιημένο σε αυτό το wiki.", - "api-error-verification-error": "Αυτό το αρχείο μπορεί να είναι κατεστραμμένο, ή να έχει λανθασμένη επέκταση.", "duration-seconds": "$1 {{PLURAL:$1|δευτερόλεπτο|δευτερόλεπτα}}", "duration-minutes": "$1 {{PLURAL:$1|λεπτό|λεπτά}}", "duration-hours": "$1 {{PLURAL:$1|ώρα|ώρες}}", @@ -3472,7 +3502,7 @@ "limitreport-templateargumentsize-value": "$1 από $2 {{PLURAL:$2|byte|bytes}}", "limitreport-expansiondepth": "Μεγαλύτερο βάθος ανάπτυξης", "limitreport-expensivefunctioncount": "Πλήθος ακριβών συναρτήσεων συντακτικού αναλυτή", - "expandtemplates": "Επέκτεινε τα πρότυπα", + "expandtemplates": "Επέκταση προτύπων", "expand_templates_intro": "Αυτή η ειδική σελίδα παίρνει κείμενο και αναπτύσσει όλα τα πρότυπα σε αυτό αναδρομικά. \nΕπίσης αναπτύσσει συναρτήσεις συντακτικού αναλυτή όπως η\n<nowiki>{{</nowiki>#language:…}}, και μεταβλητές όπως η\n<nowiki>{{</nowiki>CURRENTDAY}}.\nΟυσιαστικά επεκτείνει οτιδήποτε βρίσκεται σε διπλές αγκύλες.", "expand_templates_title": "Τίτλων συμφραζόμενων, για την {{FULLPAGENAME}} κ.τ.λ.:", "expand_templates_input": "Κείμενο εισόδου:", @@ -3485,14 +3515,19 @@ "expand_templates_generate_xml": "Εμφάνιση δέντρου συντακτικής ανάλυσης XML", "expand_templates_generate_rawhtml": "Εμφάνιση ανεπεξέργαστης HTML", "expand_templates_preview": "Προεπισκόπηση", - "expand_templates_preview_fail_html": "<em>Επειδή το {{SITENAME}} έχει ενεργοποιημένη ακατέργαστη HTML και υπήρξε μια απώλεια της συνόδου δεδομένων, η προεπισκόπηση είναι κρυμμένη ως ένα προληπτικό μέτρο κατά επιθέσεων JavaScript.</em>\n\n<strong>Αν αυτή είναι μια δικαιολογημένη προσπάθεια προεπισκόπησης, παρακαλούμε δοκιμάστε ξανά.</strong>\nΑν εξακολουθεί να μην λειτουργεί, δοκιμάστε να [[Special:UserLogout|αποσυνδεθείτε]] και να συνδεθείτε πάλι, καθώς και να ελέγξετε πως ο φυλλομετρητής σας επιτρέπει την χρήση cookies από τον ιστότοπο αυτό.", + "expand_templates_preview_fail_html": "<em>Επειδή το {{SITENAME}} επιτρέπει την εισαγωγή ακατέργαστου HTML και υπήρξε μια απώλεια των δεδομένων συνόδου, η προεπισκόπηση είναι κρυμμένη ως ένα προληπτικό μέτρο κατά επιθέσεων JavaScript.</em>\n\n<strong>Αν αυτή είναι μια θεμιτή προσπάθεια προεπισκόπησης, παρακαλούμε δοκιμάστε ξανά.</strong>\nΑν εξακολουθεί να μην λειτουργεί, δοκιμάστε να [[Special:UserLogout|αποσυνδεθείτε]] και να συνδεθείτε ξανά και βεβαιωθείτε ότι το πρόγραμμα περιήγησής σας επιτρέπει cookies από αυτόν τον ιστότοπο.", "expand_templates_preview_fail_html_anon": "<em>Επειδή το {{SITENAME}} έχει ενεργοποιημένη raw HTML και δεν είστε συνδεδεμένοι, η προεπισκόπηση είναι κρυμμένη ως ένα προληπτικό μέτρο ενάντια σε επιθέσεις JavaScript.</em>\n\n<strong>Αν αυτό είναι δικαιολογημένη απόπειρα προεπισκόπησης, παρακαλούμε να [[Special:UserLogin|συνδεθείτε]] και δοκιμάστε πάλι.</strong>", "pagelanguage": "Αλλαγή γλώσσας σελίδας", "pagelang-name": "Σελίδα", "pagelang-language": "Γλώσσα", "pagelang-use-default": "Χρήση προεπιλεγμένης γλώσσας", "pagelang-select-lang": "Επιλογή γλώσσας", + "pagelang-reason": "Αιτιολογία", "pagelang-submit": "Υποβολή", + "pagelang-nonexistent-page": "Η σελίδα $1 δεν υπάρχει.", + "pagelang-unchanged-language": "Η σελίδα $1 έχει ήδη οριστεί σε γλώσσα $2.", + "pagelang-unchanged-language-default": "Η σελίδα $1 έχει ήδη οριστεί στην προεπιλεγμένη γλώσσα περιεχομένου του wiki.", + "pagelang-db-failed": "Η βάση δεδομένων απέτυχε να αλλάξει τη γλώσσα σελίδας.", "right-pagelang": "Αλλαγή γλώσσας σελίδας", "action-pagelang": "αλλαγή της γλώσσας σελίδας", "log-name-pagelang": "Αρχείο καταγραφών αλλαγών γλώσσας", @@ -3559,18 +3594,34 @@ "mw-widgets-dateinput-no-date": "Καμία ημερομηνία δεν επιλέχθηκε", "mw-widgets-dateinput-placeholder-day": "ΕΕΕΕ-ΜΜ-ΗΗ", "mw-widgets-dateinput-placeholder-month": "ΕΕΕΕ-ΜΜ", + "mw-widgets-mediasearch-input-placeholder": "Αναζήτηση για πολυμέσα", + "mw-widgets-mediasearch-noresults": "Δεν βρέθηκαν αποτελέσματα.", "mw-widgets-titleinput-description-new-page": "η σελίδα που δεν υπάρχει ακόμα", "mw-widgets-titleinput-description-redirect": "ανακατεύθυνση στο $1", + "mw-widgets-categoryselector-add-category-placeholder": "Προσθήκη κατηγορίας...", + "mw-widgets-usersmultiselect-placeholder": "Προσθήκη περισσότερων...", "sessionprovider-generic": "$1 συνεδρίες", "sessionprovider-mediawiki-session-cookiesessionprovider": "συνεδρίες με βάση τα cookies", "sessionprovider-nocookies": "Τα Cookies μπορούν να απενεργοποιηθούν. Βεβαιωθείτε ότι έχετε ενεργοποιημένα τα cookies και ξεκινήστε πάλι.", "randomrootpage": "Τυχαία κύρια σελίδα", "log-action-filter-block": "Τύπος φραγής:", + "log-action-filter-delete": "Τύπος διαγραφής:", + "log-action-filter-import": "Τύπος εισαγωγής:", + "log-action-filter-move": "Τύπος μετακίνησης:", + "log-action-filter-newusers": "Τύπος δημιουργίας λογαριασμού:", + "log-action-filter-protect": "Τύπος προστασίας:", "log-action-filter-rights": "Πληκτρολογήστε για αλλαγή δικαιωμάτων:", + "log-action-filter-upload": "Τύπος ανεβάσματος:", "log-action-filter-all": "Όλα", "log-action-filter-block-block": "Φραγή", "log-action-filter-block-reblock": "Τροποποίηση φραγής", "log-action-filter-block-unblock": "Άρση φραγής", + "log-action-filter-contentmodel-change": "Αλλαγή του μοντέλου περιεχομένου", + "log-action-filter-contentmodel-new": "Δημιουργία σελίδας με μη προεπιλεγμένο μοντέλο περιεχομένου", + "log-action-filter-delete-delete": "Διαγραφή σελίδας", + "log-action-filter-import-upload": "Εισαγωγή μέσω ανεβάσματος XML", + "log-action-filter-managetags-create": "Δημιουργία ετικέτας", + "log-action-filter-managetags-delete": "Διαγραφή ετικέττας", "log-action-filter-protect-protect": "Προστασία", "log-action-filter-protect-modify": "Τροποποίηση προστασίας", "log-action-filter-protect-unprotect": "Άρση προστασίας", diff --git a/languages/i18n/en-gb.json b/languages/i18n/en-gb.json index 1a206aa838..bf06e49da1 100644 --- a/languages/i18n/en-gb.json +++ b/languages/i18n/en-gb.json @@ -10,18 +10,318 @@ "Reedy", "Shirayuki", "The Evil IP address", - "Vogone" + "Vogone", + "Alluk.", + "Andibing", + "Aursani", + "Caliburn", + "Chase me ladies, I'm the Cavalry", + "Codynguyen1116", + "Don Alessandro", + "Ed g2s", + "EpochFail", + "Esketti", + "Issyl0", + "Lemondoge", + "Paladox", + "SamanthaNguyen", + "Usandaru555", + "Aefgh39622", + "Anomie", + "Dr. Shikha Jaggi", + "Xð" ] }, + "tog-underline": "Link underlining:", + "tog-hideminor": "Hide minor edits from recent changes", + "tog-hidepatrolled": "Hide patrolled edits from recent changes", + "tog-newpageshidepatrolled": "Hide patrolled pages from new page list", + "tog-hidecategorization": "Hide categorisation of pages", + "tog-extendwatchlist": "Expand watchlist to show all changes, not just the most recent", + "tog-usenewrc": "Group changes by page in recent changes and watchlist", + "tog-numberheadings": "Auto-number headings", + "tog-showtoolbar": "Show edit toolbar", + "tog-editondblclick": "Edit pages on double click", + "tog-editsectiononrightclick": "Enable section editing by right clicking on section titles", "tog-watchcreations": "Add pages I create and files I upload to my watchlist", "tog-watchdefault": "Add pages and files I edit to my watchlist", "tog-watchmoves": "Add pages and files I move to my watchlist", "tog-watchdeletion": "Add pages and files I delete to my watchlist", + "tog-watchuploads": "Add new files I upload to my watchlist", + "tog-watchrollback": "Add pages where I have performed a rollback to my watchlist", + "tog-minordefault": "Mark all edits minor by default", + "tog-previewontop": "Show preview before edit box", + "tog-previewonfirst": "Show preview on first edit", + "tog-enotifwatchlistpages": "Email me when a page or a file on my watchlist has changed", + "tog-enotifusertalkpages": "Email me when my user talk page has changed", + "tog-enotifminoredits": "Email me also for minor edits of pages and files", + "tog-enotifrevealaddr": "Reveal my email address in notification emails", + "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-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-watchlisthideanons": "Hide edits by anonymous users from the watchlist", + "tog-watchlisthidepatrolled": "Hide patrolled edits from the watchlist", + "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", + "tog-norollbackdiff": "Don't show diff after performing a rollback", + "tog-useeditwarning": "Warn me when I leave an edit page with unsaved changes", + "tog-prefershttps": "Always use a secure connection while logged in", + "underline-always": "Always", + "underline-never": "Never", + "underline-default": "Skin or browser default", + "editfont-style": "Edit area font style:", + "editfont-default": "Browser default", + "editfont-monospace": "Monospaced font", + "editfont-sansserif": "Sans-serif font", + "editfont-serif": "Serif font", + "sunday": "Sunday", + "monday": "Monday", + "tuesday": "Tuesday", + "wednesday": "Wednesday", + "thursday": "Thursday", + "friday": "Friday", + "saturday": "Saturday", + "sun": "Sun", + "mon": "Mon", + "tue": "Tue", + "wed": "Wed", + "thu": "Thu", + "fri": "Fri", + "sat": "Sat", + "january": "January", + "february": "February", + "march": "March", + "april": "April", + "may_long": "May", + "june": "June", + "july": "July", + "august": "August", + "september": "September", + "october": "October", + "november": "November", + "december": "December", + "january-gen": "January", + "february-gen": "February", + "march-gen": "March", + "april-gen": "April", + "may-gen": "May", + "june-gen": "June", + "july-gen": "July", + "august-gen": "August", + "september-gen": "September", + "october-gen": "October", + "november-gen": "November", + "december-gen": "December", + "jan": "Jan", + "feb": "Feb", + "mar": "Mar", + "apr": "Apr", + "may": "May", + "jun": "Jun", + "jul": "Jul", + "aug": "Aug", + "sep": "Sep", + "oct": "Oct", + "nov": "Nov", + "dec": "Dec", + "january-date": "January $1", + "february-date": "February $1", + "march-date": "March $1", + "april-date": "April $1", + "may-date": "May $1", + "june-date": "June $1", + "july-date": "July $1", + "august-date": "August $1", + "september-date": "September $1", + "october-date": "October $1", + "november-date": "November $1", + "december-date": "December $1", + "pagecategories": "{{PLURAL:$1|Category|Categories}}", "category_header": "Pages in category ‘$1’", + "subcategories": "Subcategories", "category-media-header": "Media in category ‘$1’", + "category-empty": "<em>This category currently contains no pages or media.</em>", + "hidden-categories": "{{PLURAL:$1|Hidden category|Hidden categories}}", + "hidden-category-category": "Hidden categories", + "category-subcat-count": "{{PLURAL:$2|This category has only the following subcategory.|This category has the following {{PLURAL:$1|subcategory|$1 subcategories}}, out of $2 total.}}", + "category-subcat-count-limited": "This category has the following {{PLURAL:$1|subcategory|$1 subcategories}}.", + "category-article-count": "{{PLURAL:$2|This category contains only the following page.|The following {{PLURAL:$1|page is|$1 pages are}} in this category, out of $2 total.}}", + "category-article-count-limited": "The following {{PLURAL:$1|page is|$1 pages are}} in the current category.", + "category-file-count": "{{PLURAL:$2|This category contains only the following file.|The following {{PLURAL:$1|file is|$1 files are}} in this category, out of $2 total.}}", + "category-file-count-limited": "The following {{PLURAL:$1|file is|$1 files are}} in the current category.", + "listingcontinuesabbrev": "cont.", + "index-category": "Indexed pages", + "noindex-category": "Noindexed pages", + "broken-file-category": "Pages with broken file links", + "about": "About", + "article": "Content page", + "newwindow": "(opens in new window)", + "cancel": "Cancel", + "moredotdotdot": "More...", + "morenotlisted": "This list may be complete.", + "mypage": "Page", + "mytalk": "Talk", + "anontalk": "Talk", + "navigation": "Navigation", + "and": " and", + "qbfind": "Find", + "qbbrowse": "Browse", + "qbedit": "संपादित करें", + "qbpageoptions": "यह पन्ना", + "qbmyoptions": "मेरे पृष्ठों", + "faq": "FAQ", + "faqpage": "Project:FAQ", + "actions": "Actions", + "namespaces": "Namespaces", + "variants": "Variants", + "navigation-heading": "Navigation menu", + "errorpagetitle": "Error", + "returnto": "Return to $1.", + "tagline": "From {{SITENAME}}", + "help": "Help", + "search": "Search", + "search-ignored-headings": " #<!-- leave this line exactly as it is --> <pre>\n# Headings that will be ignored by search.\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# Syntax is as follows:\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.\nReferences\nExternal links\nSee also\n #</pre> <!-- leave this line exactly as it is -->", + "searchbutton": "Search", + "go": "Go", + "searcharticle": "Go", + "history": "Page history", + "history_short": "History", + "updatedmarker": "updated since my last visit", + "printableversion": "Printable version", + "permalink": "Permanent link", + "print": "Print", + "view": "View", + "view-foreign": "View on $1", + "edit": "Edit", + "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", + "imagepage": "View file page", + "mediawikipage": "View message page", + "templatepage": "View template page", + "viewhelppage": "View help page", + "categorypage": "View category page", + "viewtalkpage": "View discussion", + "otherlanguages": "In other languages", + "redirectedfrom": "(Redirected from $1)", + "redirectpagesub": "Redirect page", + "redirectto": "Redirect to:", + "lastmodifiedat": "This page was last modified on $1, at $2.", + "viewcount": "This page has been accessed {{PLURAL:$1|once|$1 times}}.", + "protectedpage": "Protected page", + "jumpto": "Jump to:", + "jumptonavigation": "navigation", + "jumptosearch": "search", + "view-pool-error": "Sorry, the servers are overloaded at the moment.\nToo many users are trying to view this page.\nPlease wait a while before you try to access this page again.\n\n$1", + "generic-pool-error": "Sorry, the servers are overloaded at the moment.\nToo many users are trying to view this resource.\nPlease wait a while before you try to access this resource again.", + "pool-timeout": "Timeout waiting for the lock", + "pool-queuefull": "Pool queue is full", + "pool-errorunknown": "Unknown error", + "pool-servererror": "The pool counter service is not available ($1).", + "poolcounter-usage-error": "Usage error: $1", + "aboutsite": "About {{SITENAME}}", + "aboutpage": "Project:About", + "copyright": "Content is available under $1 unless otherwise noted.", + "copyrightpage": "{{ns:project}}:Copyrights", + "currentevents": "Current events", + "currentevents-url": "Project:Current events", + "disclaimers": "Disclaimers", + "disclaimerpage": "Project:General disclaimer", + "edithelp": "Editing help", + "helppage-top-gethelp": "Help", + "mainpage": "Main Page", + "mainpage-description": "Main page", + "policy-url": "Project:Policy", + "portal": "Community portal", + "portal-url": "Project:Community portal", + "privacy": "Privacy policy", + "privacypage": "Project:Privacy policy", + "badaccess": "Permission error", + "badaccess-group0": "You are not allowed to execute the action you have requested.", + "badaccess-groups": "The action you have requested is limited to users in {{PLURAL:$2|the group|one of the groups}}: $1.", + "versionrequired": "Version $1 of MediaWiki required", + "versionrequiredtext": "Version $1 of MediaWiki is required to use this page.\nSee [[Special:Version|version page]].", + "ok": "OK", "retrievedfrom": "Retrieved from ‘$1’", + "youhavenewmessages": "{{PLURAL:$3|You have}} $1 ($2).", + "youhavenewmessagesfromusers": "{{PLURAL:$4|You have}} $1 from {{PLURAL:$3|another user|$3 users}} ($2).", + "youhavenewmessagesmanyusers": "You have $1 from many users ($2).", + "newmessageslinkplural": "{{PLURAL:$1|a new message|999=new messages}}", + "newmessagesdifflinkplural": "last {{PLURAL:$1|change|999=changes}}", + "youhavenewmessagesmulti": "You have new messages on $1", + "editsection": "edit", + "editold": "edit", + "viewsourceold": "view source", + "editlink": "edit", + "viewsourcelink": "view source", + "editsectionhint": "Edit section: $1", + "toc": "Contents", + "showtoc": "show", + "hidetoc": "hide", + "collapsible-collapse": "Collapse", + "collapsible-expand": "Expand", + "confirmable-confirm": "Are {{GENDER:$1|you}} sure?", + "confirmable-yes": "Yes", + "confirmable-no": "No", + "thisisdeleted": "View or restore $1?", + "viewdeleted": "View $1?", + "restorelink": "{{PLURAL:$1|one deleted edit|$1 deleted edits}}", + "feedlinks": "Feed:", + "feed-invalid": "Invalid subscription feed type.", + "feed-unavailable": "Syndication feeds are not available", + "site-rss-feed": "$1 RSS feed", + "site-atom-feed": "$1 Atom feed", "page-rss-feed": "‘$1’ RSS feed", "page-atom-feed": "‘$1’ Atom feed", + "red-link-title": "$1 (page does not exist)", + "sort-descending": "Sort descending", + "sort-ascending": "Sort ascending", + "nstab-main": "Page", + "nstab-user": "User page", + "nstab-media": "Media page", + "nstab-special": "Special page", + "nstab-project": "Project page", + "nstab-image": "File", + "nstab-mediawiki": "Message", + "nstab-template": "Template", + "nstab-help": "Help page", + "nstab-category": "Category", + "mainpage-nstab": "Main page", + "nosuchaction": "No such action", + "nosuchactiontext": "The action specified by the URL is invalid.\nYou might have mistyped the URL, or followed an incorrect link.\nThis might also indicate a bug in the software used by {{SITENAME}}.", + "nosuchspecialpage": "No such special page", + "nospecialpagetext": "<strong>You have requested an invalid special page.</strong>\n\nA list of valid special pages can be found at [[Special:SpecialPages|{{int:specialpages}}]].", + "error": "Error", "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.", "filecopyerror": "Could not copy file ‘$1’ to ‘$2’.", "filerenameerror": "Could not rename file ‘$1’ to ‘$2.’", @@ -32,29 +332,149 @@ "cannotdelete": "The page or file ‘$1’ could not be deleted.\nIt may have already been deleted by someone else.", "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.", - "cascadeprotected": "This page has been protected from editing, because it is included in the following {{PLURAL:$1|page, which is|pages, which are}} protected with the ‘cascading’ option turned on:\n$2", + "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", + "pt-login": "Log in", + "pt-createaccount": "Create account", + "botpasswords-no-central-id": "To use bot passwords, you must be logged in to a centralised account.", + "savearticle": "Save page", + "blockedtext": "<strong>Your username or IP address has been blocked.</strong>\n\nThe block was made by $1.\nThe reason given is <em>$2</em>.\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:<em>$2</em>\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.", + "loginreqlink": "log in", + "noarticletext": "There is currently no text in this page.\nYou can [[Special:Search/{{PAGENAME}}|search for this page title]] in other pages,\n<span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} search the related logs],\nor [{{fullurl:{{FULLPAGENAME}}|action=edit}} create this page]</span>.", + "template-protected": "(protected)", + "revisionasof": "Revision as of $1", + "previousrevision": "← Older revision", + "cur": "cur", + "lineno": "Line $1:", + "editundo": "undo", + "searchresults": "Search results", + "searchresults-title": "Search results for \"$1\"", + "prevn": "previous {{PLURAL:$1|$1}}", + "nextn": "next {{PLURAL:$1|$1}}", + "shown-title": "Show $1 {{PLURAL:$1|result|results}} per page", + "searchprofile-articles": "Content pages", + "searchprofile-images": "Multimedia", + "searchprofile-everything": "Everything", + "searchprofile-advanced": "Advanced", + "searchprofile-articles-tooltip": "Search in $1", + "searchprofile-images-tooltip": "Search for files", + "searchprofile-everything-tooltip": "Search all of content (including talk pages)", + "searchprofile-advanced-tooltip": "Search in custom namespaces", + "search-result-size": "$1 ({{PLURAL:$2|1 word|$2 words}})", "prefs-i18n": "Internationalisation", + "right-writeapi": "Use of the write API", + "grant-group-customization": "Customisation and preferences", + "newuserlogpage": "User creation log", + "recentchanges": "Recent changes", + "recentchanges-legend": "Recent changes options", + "recentchanges-label-newpage": "This edit created a new page", + "recentchanges-label-minor": "This is a minor edit", + "recentchanges-label-bot": "This edit was performed by a bot", + "rclistfrom": "Show new changes starting from $2, $3", + "rcshowhidebots": "$1 bots", + "rcshowhideliu": "$1 registered users", + "rclinks": "Show last $1 changes in last $2 days<br />$3", + "diff": "diff", + "hist": "hist", + "minoreditletter": "m", + "newpageletter": "N", + "boteditletter": "b", + "rc-change-size-new": "$1 {{PLURAL:$1|byte|bytes}} after change", + "recentchangeslinked-toolbox": "Related changes", + "recentchangeslinked-summary": "This is a list of changes made recently to pages linked from a specified page (or to members of a specified category).\nPages on [[Special:Watchlist|your watchlist]] are <strong>bold</strong>.", + "upload": "Upload file", "license": "Licencing:", "license-header": "Licencing", "licenses-edit": "Edit licence options", + "file-anchor-link": "File", + "filehist": "File history", + "filehist-help": "Click on a date/time to view the file as it appeared at that time.", + "filehist-current": "current", + "filehist-datetime": "Date/Time", + "filehist-thumb": "Thumbnail", + "filehist-thumbtext": "Thumbnail for version as of $1", + "filehist-user": "User", + "filehist-dimensions": "Dimensions", + "filehist-comment": "Comment", + "imagelinks": "File usage", + "linkstoimage": "The following {{PLURAL:$1|page links|$1 pages link}} to this file:", + "sharedupload-desc-here": "This file is from $1 and may be used by other projects.\nThe description on its [$2 file description page] there is shown below.", + "randompage": "Random page", + "nbytes": "$1 {{PLURAL:$1|byte|bytes}}", "uncategorizedpages": "Uncategorised pages", "uncategorizedcategories": "Uncategorised categories", "uncategorizedimages": "Uncategorised files", "uncategorizedtemplates": "Uncategorised templates", + "newpages": "New pages", + "allpagessubmit": "Go", + "listgrants-summary": "The following is a list of grants with their associated access to user rights. Users can authorise applications to use their account, but with limited permissions based on the grants the user gave to the application. An application acting on behalf of a user cannot actually use rights that the user does not have however.\nThere may be [[{{MediaWiki:Listgrouprights-helppage}}|additional information]] about individual rights.", + "wlshowhidecategorization": "page categorisation", + "rollbacklink": "rollback", "sessionfailure": "There seems to be a problem with your login session;\nthis action has been cancelled as a precaution against session hijacking.\nGo back to the previous page, reload that page and then try again.", - "blockiptext": "Use the form below to block write access from a specific IP address or username.\nThis should be done only to prevent vandalism, and in accordance with [[{{MediaWiki:Policy-url}}|policy]].\nFill in a specific reason below (for example, citing particular pages that were vandalised).", - "blocklogentry": "blocked [[$1]] with an expiry time of $2 $3", - "blockedtext": "<strong>Your username or IP address has been blocked.</strong>\n\nThe block was made by $1.\nThe reason given is <em>$2</em>.\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:<em>$2</em>\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.", - "reblock-logentry": "changed block settings for [[$1]] with an expiry time of $2 $3", + "protect_expiry_invalid": "Expiry time is invalid.", + "protect_expiry_old": "Expiry time is in the past.", + "protect-existing-expiry": "Existing expiry time: $3, $2", + "protect-existing-expiry-infinity": "Existing expiry time: infinite", + "namespace": "Namespace:", + "invert": "Invert selection", + "tooltip-invert": "Check this box to hide changes to pages within the selected namespace (and the associated namespace if checked)", + "namespace_association": "Associated namespace", + "tooltip-namespace_association": "Check this box to also include the talk or subject namespace associated with the selected namespace", + "blanknamespace": "(Main)", + "whatlinkshere": "What links here", + "blockiptext": "Use the form below to block write access from a specific IP address or username.\nThis should be done only to prevent vandalism, and in accordance with [[{{MediaWiki:Policy-url}}|policy]].\nFill in a specific reason below (for example, citing particular pages that were vandalised).\nYou can block IP address ranges using the [https://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing CIDR] syntax; the largest allowed range is /$1 for IPv4 and /$2 for IPv6.", "ipbexpiry": "Expiry:", "ipbreason-dropdown": "*Common block reasons\n** Inserting false information\n** Removing content from pages\n** Spamming links to external sites\n** Inserting nonsense/gibberish into pages\n** Intimidating behaviour/harassment\n** Abusing multiple accounts\n** Unacceptable username", + "blocklink": "block", + "contribslink": "contribs", + "blocklogentry": "blocked [[$1]] with an expiry time of $2 $3", + "reblock-logentry": "changed block settings for [[$1]] with an expiry time of $2 $3", "proxyblockreason": "Your IP address has been blocked because it is an open proxy.\nPlease contact your Internet service provider or technical support of your organisation and inform them of this serious security problem.", - "movecategorypage-warning": "<strong>Warning:</strong> You are about to move a category page. Please note that only the page will be moved and any pages in the old category will <em>not</em> be recategorised into the new one.", + "databaselocked": "The database is already locked.", + "movecategorypage-warning": "<strong>Warning:</strong> You are about to move a category page. Please note that only the page will be moved and any pages in the old category will <em>not</em> be recategorized into the new one.", "allmessagestext": "This is a list of system messages available in the MediaWiki namespace.\nPlease visit [https://www.mediawiki.org/wiki/Special:MyLanguage/Localisation MediaWiki Localisation] and [https://translatewiki.net translatewiki.net] if you wish to contribute to the generic MediaWiki localisation.", "allmessages-filter": "Filter by customisation state:", + "thumbnail-more": "Enlarge", "import-error-unserialize": "Revision $2 of page \"$1\" could not be unserialised. The revision was reported to use content model $3 serialised as $4.", + "tooltip-pt-login": "You are encouraged to log in; however, it is not mandatory", + "tooltip-pt-createaccount": "You are encouraged to create an account and log in; however, it is not mandatory", + "tooltip-ca-talk": "Discussion about the content page", + "tooltip-ca-edit": "Edit this page", + "tooltip-ca-addsection": "Start a new section", + "tooltip-ca-history": "Past revisions of this page", + "tooltip-ca-watch": "Add this page to your watchlist", + "tooltip-search": "Search {{SITENAME}}", + "tooltip-search-go": "Go to a page with this exact name if it exists", + "tooltip-search-fulltext": "Search pages for this text", + "tooltip-p-logo": "Visit the main page", + "tooltip-n-mainpage": "Visit the main page", + "tooltip-n-mainpage-description": "Visit the main page", + "tooltip-n-portal": "About the project, what you can do, and where to find things", + "tooltip-n-currentevents": "Find background information on current events", + "tooltip-n-recentchanges": "A list of recent changes in the wiki", + "tooltip-n-randompage": "Load a random page", + "tooltip-n-help": "The place to find out", + "tooltip-t-whatlinkshere": "A list of all wiki pages that link here", + "tooltip-t-recentchangeslinked": "Recent changes in pages linked from this page", + "tooltip-feed-atom": "Atom feed for this page", + "tooltip-t-upload": "Upload files", + "tooltip-t-specialpages": "A list of all special pages", + "tooltip-t-print": "Printable version of this page", + "tooltip-t-permalink": "Permanent link to this revision of the page", + "tooltip-ca-nstab-main": "View the content page", + "tooltip-ca-nstab-special": "This is a special page, and it cannot be edited", + "tooltip-ca-nstab-image": "View the file page", + "tooltip-ca-nstab-category": "View the category page", + "tooltip-rollback": "\"Rollback\" reverts edit(s) to this page of the last contributor in one click", + "pageinfo-toolboxlink": "Page information", + "file-info-size": "$1 × $2 pixels, file size: $3, MIME type: $4", + "show-big-image": "Original file", + "show-big-image-preview": "Size of this preview: $1.", + "show-big-image-other": "Other {{PLURAL:$2|resolution|resolutions}}: $1.", + "show-big-image-size": "$1 × $2 pixels", + "metadata": "Metadata", "metadata-help": "This file contains additional information, probably added from the digital camera or scanner used to create or digitise it.\nIf the file has been modified from its original state, some details may not fully reflect the modified file.", + "metadata-fields": "Image metadata fields listed in this message will be included on the image page display when the metadata table is collapsed.\nOthers will be hidden by default.\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-ycbcrcoefficients": "Colour space transformation matrix coefficients", "exif-colorspace": "Colour space", "exif-datetimedigitized": "Date and time of digitising", @@ -79,6 +499,7 @@ "exif-gpsdestdistance-k": "Kilometres", "exif-ycbcrpositioning-1": "Centred", "exif-iimcategory-lab": "Labour", + "namespacesall": "all", "confirmemail_invalidated": "Email address confirmation cancelled", "version-license": "MediaWiki Licence", "version-ext-license": "Licence", @@ -87,14 +508,14 @@ "version-license-not-found": "No detailed licence information was found for this extension.", "version-credits-summary": "We would like to recognise the following persons for their contribution to [[Special:Version|MediaWiki]].", "version-license-info": "MediaWiki is free software; you can redistribute it and/or modify it under the terms of the GNU General Public Licence as published by the Free Software Foundation; either version 2 of the Licence, or (at your option) any later version.\n\nMediaWiki is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public Licence for more details.\n\nYou should have received [{{SERVER}}{{SCRIPTPATH}}/COPYING a copy of the GNU General Public Licence] along with this programme; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA or [//www.gnu.org/licenses/old-licenses/gpl-2.0.html read it online].", - "feedback-error1": "Error: Unrecognised result from API", + "specialpages": "Special pages", + "tag-filter": "[[Special:Tags|Tag]] filter:", + "tag-list-wrapper": "([[Special:Tags|{{PLURAL:$1|Tag|Tags}}]]: $2)", "logentry-block-block": "$1 {{GENDER:$2|blocked}} {{GENDER:$4|$3}} with an expiry time of $5 $6", "logentry-block-reblock": "$1 {{GENDER:$2|changed}} block settings for {{GENDER:$4|$3}} with an expiry time of $5 $6", "logentry-suppress-block": "$1 {{GENDER:$2|blocked}} {{GENDER:$4|$3}} with an expiry time of $5 $6", "logentry-suppress-reblock": "$1 {{GENDER:$2|changed}} block settings for {{GENDER:$4|$3}} with an expiry time of $5 $6", - "protect_expiry_invalid": "Expiry time is invalid.", - "protect_expiry_old": "Expiry time is in the past.", - "protect-existing-expiry": "Existing expiry time: $3, $2", - "protect-existing-expiry-infinity": "Existing expiry time: infinite", - "search-ignored-headings": " #<!-- leave this line exactly as it is --> <pre>\n# Headings that will be ignored by search.\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# Syntax is as follows:\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.\nReferences\nExternal links\nSee also\n #</pre> <!-- leave this line exactly as it is -->" + "logentry-newusers-create": "User account $1 was {{GENDER:$2|created}}", + "feedback-error1": "Error: Unrecognised result from API", + "searchsuggest-search": "Search {{SITENAME}}" } diff --git a/languages/i18n/en.json b/languages/i18n/en.json index 1e37d40baf..2816f310cb 100644 --- a/languages/i18n/en.json +++ b/languages/i18n/en.json @@ -427,20 +427,13 @@ "login-security": "Verify your identity", "nav-login-createaccount": "Log in / create account", "loginprompt": "", - "userlogin": "Log in / create account", - "userloginnocreate": "Log in", "logout": "Log out", "userlogout": "Log out", "userlogout-summary": "", "notloggedin": "Not logged in", "userlogin-noaccount": "Don't have an account?", "userlogin-joinproject": "Join {{SITENAME}}", - "nologin": "Don't have an account? $1.", - "nologinlink": "Create an account", "createaccount": "Create account", - "gotaccount": "Already have an account? $1.", - "gotaccountlink": "Log in", - "userlogin-resetlink": "Forgotten your login details?", "userlogin-resetpassword-link": "Forgot your password?", "helplogin-url": "https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Logging_in", "userlogin-helplink2": "Help with logging in", @@ -454,7 +447,6 @@ "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)", - "createaccountreason": "Reason:", "createacct-reason": "Reason", "createacct-reason-ph": "Why you are creating another account", "createacct-reason-help": "Message shown in the account creation log", @@ -672,8 +664,8 @@ "selfredirect": "<strong>Warning:</strong> You are redirecting this page to itself.\nYou may have specified the wrong target for the redirect, or you may be editing the wrong page.\nIf you click \"{{int:savearticle}}\" again, the redirect will be created anyway.", "missingcommenttext": "Please enter a comment below.", "missingcommentheader": "<strong>Reminder:</strong> You have not provided a subject for this comment.\nIf you click \"{{int:savearticle}}\" again, your edit will be saved without one.", - "summary-preview": "Summary preview:", - "subject-preview": "Subject preview:", + "summary-preview": "Preview of edit summary:", + "subject-preview": "Preview of subject:", "previewerrortext": "An error occurred while attempting to preview your changes.", "blockedtitle": "User is blocked", "blockedtext": "<strong>Your username or IP address has been blocked.</strong>\n\nThe block was made by $1.\nThe reason given is <em>$2</em>.\n\n* Start of block: $8\n* Expiration 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.", @@ -1002,6 +994,7 @@ "search-interwiki-default": "Results from $1:", "search-interwiki-custom": "", "search-interwiki-more": "(more)", + "search-interwiki-more-results": "more results", "search-relatedarticle": "Related", "searchrelated": "related", "searchall": "all", @@ -1095,6 +1088,7 @@ "username": "{{GENDER:$1|Username}}:", "prefs-memberingroups": "{{GENDER:$2|Member}} of {{PLURAL:$1|group|groups}}:", "prefs-memberingroups-type": "$1", + "group-membership-link-with-expiry": "$1 (until $2)", "prefs-registration": "Registration time:", "prefs-registration-date-time": "$1", "yourrealname": "Real name:", @@ -1141,19 +1135,29 @@ "editusergroup": "Load user groups", "editinguser": "Changing user rights of {{GENDER:$1|user}} <strong>[[User:$1|$1]]</strong> $2", "viewinguserrights": "Viewing user rights of {{GENDER:$1|user}} <strong>[[User:$1|$1]]</strong> $2", - "userrights-editusergroup": "Edit user groups", - "userrights-viewusergroup": "View user groups", + "userrights-editusergroup": "Edit {{GENDER:$1|user}} groups", + "userrights-viewusergroup": "View {{GENDER:$1|user}} groups", "saveusergroups": "Save {{GENDER:$1|user}} groups", "userrights-groupsmember": "Member of:", "userrights-groupsmember-auto": "Implicit member of:", "userrights-groupsmember-type": "$1", - "userrights-groups-help": "You may alter the groups this user is in:\n* A checked box means the user is in that group.\n* An unchecked box means the user is not in that group.\n* A * indicates that you cannot remove the group once you have added it, or vice versa.", + "userrights-groups-help": "You may alter the groups this user is in:\n* A checked box means the user is in that group.\n* An unchecked box means the user is not in that group.\n* A * indicates that you cannot remove the group once you have added it, or vice versa.\n* A # indicates that you can only put back the expiration time of this group; you cannot bring it forward.", "userrights-reason": "Reason:", "userrights-no-interwiki": "You do not have permission to edit user rights on other wikis.", "userrights-nodatabase": "Database $1 does not exist or is not local.", "userrights-changeable-col": "Groups you can change", "userrights-unchangeable-col": "Groups you cannot change", "userrights-irreversible-marker": "$1*", + "userrights-no-shorten-expiry-marker": "$1#", + "userrights-expiry-current": "Expires $1", + "userrights-expiry-none": "Does not expire", + "userrights-expiry": "Expires:", + "userrights-expiry-existing": "Existing expiration time: $3, $2", + "userrights-expiry-othertime": "Other time:", + "userrights-expiry-options": "1 day:1 day,1 week:1 week,1 month:1 month,3 months:3 months,6 months:6 months,1 year:1 year", + "userrights-invalid-expiry": "The expiry time for group \"$1\" is invalid.", + "userrights-expiry-in-past": "The expiry time for group \"$1\" is in the past.", + "userrights-cannot-shorten-expiry": "You cannot bring forward the expiry of group \"$1\". Only users with permission to add and remove this group can bring forward expiry times.", "userrights-conflict": "Conflict of user rights changes! Please review and confirm your changes.", "group": "Group:", "group-user": "Users", @@ -1360,22 +1364,61 @@ "recentchanges-legend-plusminus": "(<em>±123</em>)", "recentchanges-submit": "Show", "rcfilters-activefilters": "Active filters", + "rcfilters-restore-default-filters": "Restore default filters", + "rcfilters-clear-all-filters": "Clear all filters", "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-feedbacklink": "Provide feedback on the new (beta) filters", + "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-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": "The \"Unregistered\" filter is inactive because its effect is being canceled by the following Experience {{PLURAL:$2|filter|filters}}, which {{PLURAL:$2|finds|find}} only registered users: $1", "rcfilters-filtergroup-authorship": "Edit authorship", "rcfilters-filter-editsbyself-label": "Your own edits", "rcfilters-filter-editsbyself-description": "Edits by you.", "rcfilters-filter-editsbyother-label": "Edits by others", - "rcfilters-filter-editsbyother-description": "Edits created by other users (not you.)", - "rcfilters-filtergroup-userExpLevel": "User experience level", - "rcfilters-filter-userExpLevel-newcomer-label": "Newcomers", - "rcfilters-filter-userExpLevel-newcomer-description": "Very new editors: fewer than 10 edits and 4 days of activity.", - "rcfilters-filter-userExpLevel-learner-label": "Learners", - "rcfilters-filter-userExpLevel-learner-description": "More days of activity and edits than 'Newcomers' but fewer than 'Experienced users.'", - "rcfilters-filter-userExpLevel-experienced-label": "Experienced users", - "rcfilters-filter-userExpLevel-experienced-description": "More than 30 days of activity and 500 edits.", + "rcfilters-filter-editsbyother-description": "Edits created by other users (not you).", + "rcfilters-filtergroup-userExpLevel": "Experience level (for registered users only)", + "rcfilters-filtergroup-user-experience-level-conflicts-unregistered": "This filter is inactive because it finds only registered users, so the \"Unregistered\" filter is canceling its effect.", + "rcfilters-filtergroup-user-experience-level-conflicts-unregistered-global": "The \"Unregistered\" filter is in conflict with one or more Experience filters. Experience filters find registered users only. The conflicting filters are marked as inactive above.", + "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-learner-label": "Learners", + "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-experienced-label": "Experienced users", + "rcfilters-filter-user-experience-level-experienced-description": "More than 30 days of activity and 500 edits.", + "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": "Edits made by human editors.", + "rcfilters-filtergroup-reviewstatus": "Review status", + "rcfilters-filter-patrolled-label": "Patrolled", + "rcfilters-filter-patrolled-description": "Edits marked as patrolled.", + "rcfilters-filter-unpatrolled-label": "Unpatrolled", + "rcfilters-filter-unpatrolled-description": "Edits not marked as patrolled.", + "rcfilters-filtergroup-significance": "Significance", + "rcfilters-filter-minor-label": "Minor edits", + "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-changetype": "Type of change", + "rcfilters-filter-pageedits-label": "Page edits", + "rcfilters-filter-pageedits-description": "Edits to 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....", "rcnotefrom": "Below {{PLURAL:$5|is the change|are the changes}} since <strong>$3, $4</strong> (up to <strong>$1</strong> shown).", "rclistfrom": "Show new changes starting from $2, $3", "rcshowhideminor": "$1 minor edits", @@ -1517,7 +1560,7 @@ "uploaded-setting-handler-svg": "SVG that sets the \"handler\" attribute with remote/data/script is blocked. Found <code>$1=\"$2\"</code> in the uploaded SVG file.", "uploaded-remote-url-svg": "SVG that sets any style attribute with remote URL is blocked. Found <code>$1=\"$2\"</code> in the uploaded SVG file.", "uploaded-image-filter-svg": "Found image filter with URL: <code><$1 $2=\"$3\"></code> in the uploaded SVG file.", - "uploadscriptednamespace": "This SVG file contains an illegal namespace \"$1\".", + "uploadscriptednamespace": "This SVG file contains an illegal namespace \"<nowiki>$1</nowiki>\".", "uploadinvalidxml": "The XML in the uploaded file could not be parsed.", "uploadvirus": "The file contains a virus!\nDetails: $1", "uploadjava": "The file is a ZIP file that contains a Java .class file.\nUploading Java files is not allowed because they can cause security restrictions to be bypassed.", @@ -1936,8 +1979,11 @@ "apisandbox-sending-request": "Sending API request...", "apisandbox-loading-results": "Receiving API results...", "apisandbox-results-error": "An error occurred while loading the API query response: $1.", - "apisandbox-request-params-json": "JSON parameters:", + "apisandbox-request-selectformat-label": "Show request data as:", + "apisandbox-request-format-url-label": "URL query string", "apisandbox-request-url-label": "Request URL:", + "apisandbox-request-format-json-label": "JSON", + "apisandbox-request-json-label": "Request JSON:", "apisandbox-request-time": "Request time: {{PLURAL:$1|$1 ms}}", "apisandbox-results-fixtoken": "Correct token and resubmit", "apisandbox-results-fixtoken-fail": "Failed to fetch \"$1\" token.", @@ -2092,7 +2138,7 @@ "emailccsubject": "Copy of your message to $1: $2", "emailsent": "Email sent", "emailsenttext": "Your email message has been sent.", - "emailuserfooter": "This email was {{GENDER:$1|sent}} by $1 to {{GENDER:$2|$2}} by the \"{{int:emailuser}}\" function at {{SITENAME}}. {{GENDER:$2|Your}} email will be sent directly to the {{GENDER:$1|original sender}}, revealing {{GENDER:$2|your}} email address to {{GENDER:$1|them}}.", + "emailuserfooter": "This email was {{GENDER:$1|sent}} by $1 to {{GENDER:$2|$2}} by the \"{{int:emailuser}}\" function at {{SITENAME}}. If {{GENDER:$2|you}} reply to this email, {{GENDER:$2|your}} email will be sent directly to the {{GENDER:$1|original sender}}, revealing {{GENDER:$2|your}} email address to {{GENDER:$1|them}}.", "usermessage-summary": "Leaving system message.", "usermessage-editor": "System messenger", "usermessage-template": "MediaWiki:UserMessage", @@ -2192,7 +2238,7 @@ "editcomment": "The edit summary was: <em>$1</em>.", "revertpage": "Reverted edits by [[Special:Contributions/$2|$2]] ([[User talk:$2|talk]]) to last revision by [[User:$1|$1]]", "revertpage-nouser": "Reverted edits by a hidden user to last revision by {{GENDER:$1|[[User:$1|$1]]}}", - "rollback-success": "Reverted edits by $1;\nchanged back to last revision by $2.", + "rollback-success": "Reverted edits by {{GENDER:$3|$1}};\nchanged back to last revision by {{GENDER:$4|$2}}.", "rollback-success-notify": "Reverted edits by $1;\nchanged back to last revision by $2. [$3 Show changes]", "sessionfailure-title": "Session failure", "sessionfailure": "There seems to be a problem with your login session;\nthis action has been canceled as a precaution against session hijacking.\nGo back to the previous page, reload that page and then try again.", @@ -3919,15 +3965,6 @@ "logentry-tag-update-revision": "$1 {{GENDER:$2|updated}} tags on revision $4 of page $3 ({{PLURAL:$7|added}} $6; {{PLURAL:$9|removed}} $8)", "logentry-tag-update-logentry": "$1 {{GENDER:$2|updated}} tags on log entry $5 of page $3 ({{PLURAL:$7|added}} $6; {{PLURAL:$9|removed}} $8)", "rightsnone": "(none)", - "revdelete-logentry": "changed revision visibility of \"[[$1]]\"", - "logdelete-logentry": "changed event visibility of \"[[$1]]\"", - "revdelete-content": "content", - "revdelete-summary": "edit summary", - "revdelete-uname": "username", - "revdelete-hid": "hid $1", - "revdelete-unhid": "unhid $1", - "revdelete-log-message": "$1 for $2 {{PLURAL:$2|revision|revisions}}", - "logdelete-log-message": "$1 for $2 {{PLURAL:$2|event|events}}", "deletedarticle": "deleted \"[[$1]]\"", "suppressedarticle": "suppressed \"[[$1]]\"", "undeletedarticle": "restored \"[[$1]]\"", @@ -3942,6 +3979,7 @@ "newuserlog-autocreate-entry": "Account created automatically", "rightslogentry": "changed group membership for $1 from $2 to $3", "rightslogentry-autopromote": "was automatically promoted from $2 to $3", + "rightslogentry-temporary-group": "$1 (temporary, until $2)", "feedback-adding": "Adding feedback to page...", "feedback-back": "Back", "feedback-bugcheck": "Great! Just check that it is not already one of the [$1 known bugs].", @@ -3966,56 +4004,12 @@ "feedback-useragent": "User agent:", "searchsuggest-search": "Search {{SITENAME}}", "searchsuggest-containing": "containing...", - "api-error-autoblocked": "Your IP address has been blocked automatically, because it was used by a blocked user.", - "api-error-badaccess-groups": "You are not permitted to upload files to this wiki.", "api-error-badtoken": "Internal error: Bad token.", - "api-error-blocked": "You have been blocked from editing.", - "api-error-copyuploaddisabled": "Uploading by URL is disabled on this server.", - "api-error-duplicate": "There {{PLURAL:$1|is another file|are some other files}} already on the site with the same content.", - "api-error-duplicate-archive": "There {{PLURAL:$1|was another file|were some other files}} already on the site with the same content, but {{PLURAL:$1|it was|they were}} deleted.", - "api-error-empty-file": "The file you submitted was empty.", "api-error-emptypage": "Creating new, empty pages is not allowed.", - "api-error-fetchfileerror": "Internal error: Something went wrong while fetching the file.", - "api-error-fileexists-forbidden": "A file with name \"$1\" already exists, and cannot be overwritten.", - "api-error-fileexists-shared-forbidden": "A file with name \"$1\" already exists in the shared file repository, and cannot be overwritten.", - "api-error-file-too-large": "The file you submitted was too large.", - "api-error-filename-tooshort": "The filename is too short.", - "api-error-filetype-banned": "This type of file is banned.", - "api-error-filetype-banned-type": "$1 {{PLURAL:$4|is not a permitted file type|are not permitted file types}}. Permitted {{PLURAL:$3|file type is|file types are}} $2.", - "api-error-filetype-missing": "The filename is missing an extension.", - "api-error-hookaborted": "The modification you tried to make was aborted by an extension.", - "api-error-http": "Internal error: Unable to connect to server.", - "api-error-illegal-filename": "The filename is not allowed.", - "api-error-internal-error": "Internal error: Something went wrong with processing your upload on the wiki.", - "api-error-invalid-file-key": "Internal error: File was not found in temporary storage.", - "api-error-missingparam": "Internal error: Missing parameters on request.", - "api-error-missingresult": "Internal error: Could not determine if the copy succeeded.", - "api-error-mustbeloggedin": "You must be logged in to upload files.", - "api-error-mustbeposted": "Internal error: Request requires HTTP POST.", - "api-error-noimageinfo": "The upload succeeded, but the server did not give us any information about the file.", - "api-error-nomodule": "Internal error: No upload module set.", - "api-error-ok-but-empty": "Internal error: No response from server.", - "api-error-overwrite": "Overwriting an existing file is not allowed.", - "api-error-ratelimited": "You're trying to upload more files in a short space of time than this wiki allows.\nPlease try again in a few minutes.", - "api-error-stashfailed": "Internal error: Server failed to store temporary file.", "api-error-publishfailed": "Internal error: Server failed to publish temporary file.", - "api-error-stasherror": "There was an error while uploading the file to stash.", - "api-error-stashedfilenotfound": "The stashed file was not found when attempting to upload it from the stash.", - "api-error-stashpathinvalid": "The path at which the stashed file should have been found was invalid.", - "api-error-stashfilestorage": "There was an error while storing the file in the stash.", - "api-error-stashzerolength": "The server could not stash the file, because it had zero length.", - "api-error-stashnotloggedin": "You must be logged in to save files in the upload stash.", - "api-error-stashwrongowner": "The file you were attempting to access in the stash does not belong to you.", - "api-error-stashnosuchfilekey": "The file key you were attempting to access in the stash does not exist.", - "api-error-timeout": "The server did not respond within the expected time.", - "api-error-unclassified": "An unknown error occurred.", - "api-error-unknown-code": "Unknown error: \"$1\".", - "api-error-unknown-error": "Internal error: Something went wrong when trying to upload your file.", + "api-error-stashfailed": "Internal error: Server failed to store temporary file.", "api-error-unknown-warning": "Unknown warning: \"$1\".", "api-error-unknownerror": "Unknown error: \"$1\".", - "api-error-uploaddisabled": "Uploading is disabled on this wiki.", - "api-error-verification-error": "This file might be corrupt, or have the wrong extension.", - "api-error-was-deleted": "A file of this name has been previously uploaded and subsequently deleted.", "duration-seconds": "$1 {{PLURAL:$1|second|seconds}}", "duration-minutes": "$1 {{PLURAL:$1|minute|minutes}}", "duration-hours": "$1 {{PLURAL:$1|hour|hours}}", @@ -4142,6 +4136,7 @@ "mw-widgets-titleinput-description-new-page": "page does not exist yet", "mw-widgets-titleinput-description-redirect": "redirect to $1", "mw-widgets-categoryselector-add-category-placeholder": "Add a category...", + "mw-widgets-usersmultiselect-placeholder": "Add more...", "sessionmanager-tie": "Cannot combine multiple request authentication types: $1.", "sessionprovider-generic": "$1 sessions", "sessionprovider-mediawiki-session-cookiesessionprovider": "cookie-based sessions", @@ -4277,7 +4272,7 @@ "usercssispublic": "Please note: CSS subpages should not contain confidential data as they are viewable by other users.", "restrictionsfield-badip": "Invalid IP address or range: $1", "restrictionsfield-label": "Allowed IP ranges:", - "restrictionsfield-help": "One IP address or CIDR range per line. To enable everything, use<br><code>0.0.0.0/0</code><br><code>::/0</code>", + "restrictionsfield-help": "One IP address or CIDR range per line. To enable everything, use:<pre>0.0.0.0/0\n::/0</pre>", "revid": "revision $1", "pageid": "page ID $1" } diff --git a/languages/i18n/eo.json b/languages/i18n/eo.json index 254a9231de..d5c5258953 100644 --- a/languages/i18n/eo.json +++ b/languages/i18n/eo.json @@ -50,7 +50,8 @@ "Orikrin1998", "Gamliel Fishkin", "Kastanoto", - "Rafaneta" + "Rafaneta", + "NMaia" ] }, "tog-underline": "Substrekado de ligiloj:", @@ -218,6 +219,7 @@ "searcharticle": "Ek", "history": "Historio de paĝo", "history_short": "Historio", + "history_small": "historio", "updatedmarker": "ĝisdatigita de post mia lasta vizito", "printableversion": "Presebla versio", "permalink": "Konstanta ligilo", @@ -577,7 +579,7 @@ "botpasswords-label-delete": "Forigi", "botpasswords-label-resetpassword": "Rekomencigi la pasvorton", "botpasswords-label-grants": "Uzeblaj permesdonoj:", - "botpasswords-help-grants": "Rajtigiloj permesas aliron al rajtoj jam provizita al via uzantkonto. Ebligi rajtigilojn ĉi tie ne provizas aliron al ajnaj rajtoj ke via uzantkonto ne alie havus. Vidu la [[Special:MyLanguage/Special:ListGrants|tablo de gratifikoj]] por pli da informo.", + "botpasswords-help-grants": "Rajtigiloj permesas aliron al rajtoj jam provizita al via uzantkonto. Ebligi rajtigilojn ĉi tie ne provizas aliron al ajnaj rajtoj ke via uzantkonto ne alie havus. Vidu la [[Special:ListGrants|tablo de rajtigiloj]] por pli da informo.", "botpasswords-label-grants-column": "Permeso donita", "botpasswords-bad-appid": "La robota nomo \"$1\" estas malvalida.", "botpasswords-insert-failed": "Aldono de la robota nomo \"$1\" ne sukcesis. Ĉu ĝi jam estis aldonita?", @@ -1332,22 +1334,49 @@ "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (vidu ankaÅ­ [[Special:NewPages|liston de novaj paĝoj]])", "recentchanges-submit": "Montri", "rcfilters-activefilters": "Aktivaj filtriloj", + "rcfilters-restore-default-filters": "Restarigi defaÅ­ltajn filtrilojn", + "rcfilters-clear-all-filters": "Nuligi ĉiujn filtrilojn", "rcfilters-search-placeholder": "Filtri lastajn ŝanĝojn (vi povas elekti aÅ­ ekskribi)", "rcfilters-invalid-filter": "Nevalida filtrilo", + "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 de la aliaj uzantoj (krom vi)", - "rcfilters-filtergroup-userExpLevel": "Uzanta spertonivelo", + "rcfilters-filter-editsbyother-description": "Redaktoj kreitaj far aliaj uzantoj (krom vi).", + "rcfilters-filtergroup-userExpLevel": "Spertonivelo (nur por registritaj uzantoj)", "rcfilters-filter-userExpLevel-newcomer-label": "Novuloj", - "rcfilters-filter-userExpLevel-newcomer-description": "Tre novaj redaktantoj: malpli ol 10 redaktoj kaj 4 tagoj da aktiveco", + "rcfilters-filter-userExpLevel-newcomer-description": "Malpli ol 10 redaktoj kaj 4 tagoj de aktiveco.", "rcfilters-filter-userExpLevel-learner-label": "Lernantoj", - "rcfilters-filter-userExpLevel-learner-description": "Pliaj tagoj da aktiveco kaj redaktoj ol 'Novuloj' sed malpli ol 'Spertaj uzantoj.'", + "rcfilters-filter-userExpLevel-learner-description": "Pliaj tagoj da aktiveco kaj redaktoj ol \"Novuloj\" sed malpli ol \"Spertaj uzantoj\".", "rcfilters-filter-userExpLevel-experienced-label": "Spertaj uzantoj", "rcfilters-filter-userExpLevel-experienced-description": "Pli ol 30 tagoj da aktiveco kaj 500 redaktoj.", + "rcfilters-filtergroup-automated": "AÅ­tomatigitaj kontribuoj", + "rcfilters-filter-bots-label": "Roboto", + "rcfilters-filter-bots-description": "Redaktoj farita de aÅ­tomatigitaj iloj.", + "rcfilters-filter-humans-label": "Homa (ne robota)", + "rcfilters-filter-humans-description": "Redaktoj farita de homaj redaktantoj.", + "rcfilters-filtergroup-significance": "Signifo", + "rcfilters-filter-minor-label": "Etaj redaktoj", + "rcfilters-filter-minor-description": "Redaktoj kiujn la aÅ­toro markis kiel \"redakteto\".", + "rcfilters-filter-major-label": "Redaktoj kiujn la aÅ­toro ne markis kiel \"redakteto\".", + "rcfilters-filter-major-description": "Redaktoj kiujn la aÅ­toro ne markis kiel \"redakteto\".", + "rcfilters-filtergroup-changetype": "Tipo de ŝanĝo", + "rcfilters-filter-pageedits-label": "Redaktoj de paĝoj", + "rcfilters-filter-pageedits-description": "Redaktoj al vikia enhavo, diskutoj, kategoriaj priskriboj...", + "rcfilters-filter-newpages-label": "Kreaĵoj de paĝo", + "rcfilters-filter-newpages-description": "Redaktoj kiuj faras novajn paĝojn.", + "rcfilters-filter-categorization-label": "Ŝanĝoj de kategorioj", + "rcfilters-filter-categorization-description": "Registroj de paĝoj aldonitaj aÅ­ forigitaj de kategorioj", + "rcfilters-filter-logactions-label": "Registritaj agoj", + "rcfilters-filter-logactions-description": "Administraciaj agoj, kontaj kreoj, paĝaj forigoj, alŝutoj....", "rcnotefrom": "Malsupre estas la {{PLURAL:$5|ŝanĝo|ŝanĝoj}} ekde <strong>$3, $4</strong> (montrante ĝis <strong>$1</strong>).", "rclistfrom": "Montri novajn ŝanĝojn ekde \"$3 $2\"", "rcshowhideminor": "$1 etajn redaktojn", @@ -1481,7 +1510,7 @@ "uploaded-setting-handler-svg": "SVGa dosiero kiu ensignas la traktilan atributon (''<span lang=\"en\">handler</span>'') kun fora/datena/skripta estas blokita. Trovis <code>$1=\"$2\"</code> en la alsûtita SVGa dosiero.", "uploaded-remote-url-svg": "SVG-a dosiero kiu asignas ajnan stilan atributon kun fora URL estas blokita. Ni trovis <code>$1=\"$2\"</code> en la alsûtita SVG-a dosiero.", "uploaded-image-filter-svg": "Trovis bildan filtrilon kun URL: <code><$1 $2=\"$3\"></code> en la alŝutita SVGa dosiero.", - "uploadscriptednamespace": "Ĉi tiu SVG-dosiero enhavas nevalidan nomspacon \"$1\"", + "uploadscriptednamespace": "Ĉi tiu SVG-dosiero enhavas nevalidan nomspacon \"<nowiki>$1</nowiki>\"", "uploadinvalidxml": "Ne eblas interpreti la XML-sintakson en la alŝutita dosiero", "uploadvirus": "Viruso troviĝas en la dosiero! Detaloj: $1", "uploadjava": "La dosiero estas ZIP-dosiero kiu enhavas .class-dosieron de Java.\nAlŝutante Java-dosieron estas malpermesita, ĉar ili povas kaÅ­zi sekureco-limigojn esti preterpasitaj.", @@ -1757,6 +1786,7 @@ "uncategorizedcategories": "Neenkategoriitaj kategorioj", "uncategorizedimages": "Neenkategoriigitaj dosieroj", "uncategorizedtemplates": "Neenkategoriigitaj ŝablonoj", + "uncategorized-categories-exceptionlist": "# Enhavas liston de kategorioj, kiuj ne devus esti menciitaj en Specialaĵo:UncategorizedCategories. Unu po linio, komencante per \"*\". Linioj komencantaj kun alia karaktero (inkluzivante blankspaco) estas ignorata. Uzu \"#\" por rimarkoj.", "unusedcategories": "Neuzitaj kategorioj", "unusedimages": "Neuzataj bildoj", "wantedcategories": "Dezirataj kategorioj", @@ -1855,7 +1885,6 @@ "apisandbox-sending-request": "Sendanta aplikprograminterfacan peton…", "apisandbox-loading-results": "Ricevas APIajn rezultojn…", "apisandbox-results-error": "Eraro okazis dum ŝutis la APIan petan respondon: $1.", - "apisandbox-request-params-json": "JSON-parametroj:", "apisandbox-request-url-label": "Mendi URL-on.", "apisandbox-request-time": "Tempo de peto:{{PLURAL:$1|$1 ms}}", "apisandbox-results-fixtoken": "Korekti ĵetonon kaj resendi", @@ -1873,12 +1902,12 @@ "booksources-search": "Serĉi", "booksources-text": "Jen ligilaro al aliaj TTT-ejoj, kiuj vendas librojn,\nkaj/aÅ­ informumos pri la libro ligita.\nLa {{SITENAME}} ne estas komerce ligita al tiuj vendejoj, kaj la listo ne estu\nkomprenata kiel rekomendo aÅ­ reklamo.", "booksources-invalid-isbn": "La donata ISBN verŝajne estas nevalida; kontrolu pri erara kopiado el la originala fonto.", - "magiclink-tracking-rfc": "Paĝoj kiuj uzas [https://en.wikipedia.org/wiki/Help:Magic_links#RFC magiajn ligojn] por [https://eo.wikipedia.org/wiki/Request_for_Comments peto pri komentoj]", - "magiclink-tracking-rfc-desc": "Ĉi tiu paĝo uzas magiajn ligojn por [https://eo.wikipedia.org/wiki/Request_for_Comments peto pri komentoj]. Vidi [https://www.mediawiki.org/wiki/special:MyLanguage/Helpo:Magiaj_ligoj mediawiki.org] pri kiel migri.", - "magiclink-tracking-pmid": "Paĝoj kiuj uzas magiajn ligojn por PubMed", + "magiclink-tracking-rfc": "Paĝoj kiuj uzas [https://en.wikipedia.org/wiki/Help:Magic_links#RFC magiajn ligilojn] por [https://eo.wikipedia.org/wiki/Request_for_Comments peto pri komentoj]", + "magiclink-tracking-rfc-desc": "Ĉi tiu paĝo uzas magiajn ligilojn por [https://eo.wikipedia.org/wiki/Request_for_Comments peto pri komentoj]. Vidi [https://www.mediawiki.org/wiki/special:MyLanguage/Helpo:Magiaj_ligoj mediawiki.org] pri kiel migri.", + "magiclink-tracking-pmid": "Paĝoj kiuj uzas magiajn ligilojn por PubMed", "magiclink-tracking-pmid-desc": "Ĉi tiu paĝo uzas PubMed-aj magiaj ligoj. Vidi [https://www.mediawiki.org/wiki/special:MyLanguage/Helpo:Magiaj_ligoj mediawiki.org] pri kiel migri.", - "magiclink-tracking-isbn": "Paĝoj kiuj uzas ISBNajn magiajn ligojn", - "magiclink-tracking-isbn-desc": "Ĉi tiu paĝo uzas ISBNajn magiajn ligojn. Vidi [https://www.mediawiki.org/wiki/special:MyLanguage/Helpo:Magiaj_ligoj mediawiki.org] pri kiel migri.", + "magiclink-tracking-isbn": "Paĝoj kiuj uzas ISBNajn magiajn ligilojn", + "magiclink-tracking-isbn-desc": "Ĉi tiu paĝo uzas ISBNajn magiajn ligilojn. Vidi [https://www.mediawiki.org/wiki/special:MyLanguage/Helpo:Magiaj_ligoj mediawiki.org] pri kiel migri.", "specialloguserlabel": "Faranto:", "speciallogtitlelabel": "Celo (titolo aÅ­ {{ns:user}}:salutnomo por uzanto):", "log": "Protokoloj", @@ -1998,7 +2027,7 @@ "emailccsubject": "Kopio de via mesaĝo al $1: $2", "emailsent": "Retmesaĝo sendita", "emailsenttext": "Via retmesaĝo estas sendita.", - "emailuserfooter": "Ĉi tiu retpoŝtmesaĝo estis {{GENDER:$1|sendita}} de $1 al {{GENDER:$2|$2}} per la funkcio \"{{int:emailuser}}\" ĉe {{SITENAME}}. {{GENDER:$2|Via}} retpoŝto estos sendita rekte al la {{{{GENDER:$1|}}|originala sendinto}}, rivelanta {{GENDER:$2|via}} retpoŝta adreso al {{GENDER:$1|ili}}.", + "emailuserfooter": "Ĉi tiu retpoŝtmesaĝo estis {{GENDER:$1|sendita}} de $1 al {{GENDER:$2|$2}} per la funkcio \"{{int:emailuser}}\" ĉe {{SITENAME}}. Se {{GENDER:$2|vi}} respondas al ĉi tiu retpoŝto, {{GENDER:$2|via}} retpoŝto estos sendita rekte al la {{{{GENDER:$1|}}|originala sendinto}}, rivelanta {{GENDER:$2|via}} retpoŝta adreso al {{GENDER:$1|ili}}.", "usermessage-summary": "Lasanta sisteman mesaĝon.", "usermessage-editor": "Mesaĝanto de sistemo", "watchlist": "Mia atentaro", @@ -2266,7 +2295,7 @@ "whatlinkshere-hideredirs": "$1 alidirektilojn", "whatlinkshere-hidetrans": "$1 inkludojn", "whatlinkshere-hidelinks": "$1 ligilojn", - "whatlinkshere-hideimages": "$1 dosieraj ligoj", + "whatlinkshere-hideimages": "$1 dosier{{PLURAL:$1|a ligilo|aj ligiloj}}", "whatlinkshere-filters": "Filtriloj", "whatlinkshere-submit": "Ek", "autoblockid": "AÅ­tomata forbaro #$1", @@ -2458,7 +2487,7 @@ "exporttext": "Vi povas elporti la tekston kaj la redaktohistorion de aparta paĝo aÅ­ de paĝaro kolektita en ia XML.\nĈi tio povas esti enportita en alian programon funkciantan per MediaWiki per la [[Special:Import|enportpaĝo]].\n\nPor elporti paĝojn, enigu la titolojn en la jena tekst-skatolo, po unu por linio, kaj elektu ĉu vi volas kaj la nunan version kaj ĉiujn antaÅ­ajn versiojn, kun la paĝaj historiaj linioj, aÅ­ la nunan version kun la informo pri la lasta redakto.\n\nEn la lasta okazo, vi ankaÅ­ povas uzi ligilon, ekz-e [[{{#Special:Export}}/{{MediaWiki:Mainpage}}]] por la paĝo \"[[{{MediaWiki:Mainpage}}]]\".", "exportall": "Elporti ĉiujn paĝojn", "exportcuronly": "Entenas nur la aktualan version, ne la malnovajn.", - "exportnohistory": "----\n'''Notu:''' Eksportado de la plena historio de paĝoj per ĉi paĝo estis malebligita pro funkciigaj kialoj.", + "exportnohistory": "----\n'''Notu:''' Elportado de la plena historio de paĝoj per ĉi paĝo estis malebligita pro funkciigaj kialoj.", "exportlistauthors": "Inkluzivi plenan liston de kontribuantoj por ĉiu paĝo.", "export-submit": "Elporti", "export-addcattext": "Aldoni paĝojn el kategorio:", @@ -3597,56 +3626,12 @@ "feedback-useragent": "Klienta aplikaĵo:", "searchsuggest-search": "Serĉi tra {{SITENAME}}", "searchsuggest-containing": "enhavas...", - "api-error-autoblocked": "Via IPa adreso estis blokita aÅ­tomate, ĉar ĝi estis uzita far forbara uzanto.", - "api-error-badaccess-groups": "Vi ne havas permeson alŝuti dosierojn al tiu ĉi vikio.", "api-error-badtoken": "Interna eraro: fuŝaĵo.", - "api-error-blocked": "Vi estis blokita pri redakto.", - "api-error-copyuploaddisabled": "Alŝuto per URL-adreso estas malebligata en tiu ĉi servilo.", - "api-error-duplicate": "Jam estas {{PLURAL:$1|alia dosiero|pluraj aliaj dosieroj}} en la retejo kun la sama enhavo.", - "api-error-duplicate-archive": "Jam estis {{PLURAL:$1|alia dosiero|pluraj aliaj dosieroj}} de sama enhavo en la retejo, sed {{PLURAL:$1|ĝi estis forigita|ili estis forigitaj}}.", - "api-error-empty-file": "La dosiero kiun vi sendis estis malplena.", "api-error-emptypage": "Kreo de novaj malplenaj paĝoj ne estas permesita.", - "api-error-fetchfileerror": "Interna eraro: io misfunkciis dum la dosiera prenado.", - "api-error-fileexists-forbidden": "Dosiero nomata \"$1\" jam existas kaj ne estas surskribebla.", - "api-error-fileexists-shared-forbidden": "Dosiero nomata \"$1\" jam existas en la kunhavata dosier-datumbazo kaj ne estas surskribebla.", - "api-error-file-too-large": "La dosiero kiun vi alŝutis estis tro granda.", - "api-error-filename-tooshort": "La dosiernomo estas tro mallonga.", - "api-error-filetype-banned": "Ĉi tiu tipo de dosiero estas malpermesita.", - "api-error-filetype-banned-type": "$1 ne estas {{PLURAL:$4|permesita dosiero-tipo|permesitaj dosiero-tipoj}}. {{PLURAL:$3|Permesita dosiero-tipo|Permesitaj dosiero-tipoj}} estas $2.", - "api-error-filetype-missing": "Mankas sufikso de la dosiero.", - "api-error-hookaborted": "La ŝanĝo kiun vi provis fari estis haltigita de etendaĵa hoko.", - "api-error-http": "Interna eraro: ne eblas konektiĝi al la servilo.", - "api-error-illegal-filename": "La dosiernomo ne estas permesata.", - "api-error-internal-error": "Interna eraro: io misokazis en la prilaboro de via alŝuto en la vikio.", - "api-error-invalid-file-key": "Interna eraro: la dosiero ne troveblis en la dumtempa stokejo.", - "api-error-missingparam": "Interna eraro: mankantaj parametroj en la alŝutopeto.", - "api-error-missingresult": "Interna eraro: ne eblis eltrovi ĉu la kopiado sukcesis.", - "api-error-mustbeloggedin": "Vi devas esti ensalutinta por rajti alŝuti dosierojn.", - "api-error-mustbeposted": "Interna eraro: la peto necesigas alŝuton en formato HTTP.", - "api-error-noimageinfo": "La alŝuto sukcesis, sed la servilo ne donis ajnan informon pri la dosiero.", - "api-error-nomodule": "Interna eraro: ne troveblas alŝuta helpilaro.", - "api-error-ok-but-empty": "Interna eraro: nenia respondo de la servilo.", - "api-error-overwrite": "AnstataÅ­igo de ekzistanta dosiero ne permesatas.", - "api-error-ratelimited": "Vi provas alŝuti pli da dosieroj dum mallonga periodo ol ĉi tiu vikio permesas.\nBonvolu provi denove en kelkaj minutoj.", - "api-error-stashfailed": "Interna eraro: la servilo malsukcesis stoki provizoran dosieron.", "api-error-publishfailed": "Interna eraro: Servilo malsukcesis eldoni provizoran dosieron.", - "api-error-stasherror": "Eraro okazis dum alŝutado de la dosiero al dosierujo.", - "api-error-stashedfilenotfound": "Dum provo alŝuti dosieron de rezervujo ne estis la dosiero trovita.", - "api-error-stashpathinvalid": "La vojo en rezervujo, kie devus esti la dosiero trovita, estas malvalida.", - "api-error-stashfilestorage": "Okazis eraro dum konservado de dosiero al rezervujo.", - "api-error-stashzerolength": "La servilo ne povis konservi dosieron en rezervujon, ĉar ĝi havis nulan longecon.", - "api-error-stashnotloggedin": "Vi devas esti ensalutinta por konservi dosieron en alŝutan rezervujon.", - "api-error-stashwrongowner": "La rezervuja dosiero, kiun vi provis aliri, ne apartenas al vi.", - "api-error-stashnosuchfilekey": "La dosiera ŝlosilo, kiun vi provis aliri en rezervujo, ne ekzistas.", - "api-error-timeout": "La servilo ne respondis ene de la atendita tempo.", - "api-error-unclassified": "Okazis nekonata eraro", - "api-error-unknown-code": "Nekonata eraro: \"$1\"", - "api-error-unknown-error": "Interna eraro: io misokazis en la alŝuto de via dosiero.", + "api-error-stashfailed": "Interna eraro: la servilo malsukcesis stoki provizoran dosieron.", "api-error-unknown-warning": "Nekonata averto: \"$1\".", "api-error-unknownerror": "Nekonata eraro: \"$1\"", - "api-error-uploaddisabled": "Alŝutato estas malebligata en tiu ĉi vikio.", - "api-error-verification-error": "Tiu ĉi dosiero eble estas difektita, aÅ­ havas la malĝustan dosieran finaĵon.", - "api-error-was-deleted": "Dosiero kun ĉi tiu nomo estis antaÅ­e alŝutita kaj sekvente forigita.", "duration-seconds": "$1 {{PLURAL:$1|sekundo|sekundoj}}", "duration-minutes": "$1 {{PLURAL:$1|minuto|minutoj}}", "duration-hours": "$1 {{PLURAL:$1|horo|horoj}}", @@ -3739,7 +3724,7 @@ "headline-anchor-title": "Ligilo al tiu ĉi sekcio", "special-characters-group-latin": "Latina", "special-characters-group-latinextended": "Latina etendita", - "special-characters-group-ipa": "IPA", + "special-characters-group-ipa": "IFA", "special-characters-group-symbols": "Simboloj", "special-characters-group-greek": "Greka", "special-characters-group-greekextended": "Greka etendita", @@ -3899,7 +3884,7 @@ "usercssispublic": "Bonvolu noti: subpaĝoj en CSS ne enhavu konfidenciajn datumojn ĉar ili estas videblaj por aliaj uzantoj.", "restrictionsfield-badip": "Malvalida IP-adreso de la intervalo: $1", "restrictionsfield-label": "Permesita IP-intervalo:", - "restrictionsfield-help": "Unu IP-adreso aÅ­ CIDR-intervalo per linio. Por permesigi ĉion, uzu<br><code>0.0.0.0/0</code><br><code>::/0</code>", + "restrictionsfield-help": "Unu IP-adreso aÅ­ CIDR-intervalo per linio. Por permesigi ĉion, uzu:<pre>0.0.0.0/0</code>\n<code>::/0</pre>", "revid": "revizio $1", "pageid": "Identigilo de paĝo $1" } diff --git a/languages/i18n/es.json b/languages/i18n/es.json index f0fcfc1949..5b5e0e432b 100644 --- a/languages/i18n/es.json +++ b/languages/i18n/es.json @@ -288,7 +288,7 @@ "category-file-count-limited": "{{PLURAL:$1|El siguiente archivo pertenece|Los siguientes $1 archivos pertenecen}} a esta categoría.", "listingcontinuesabbrev": "cont.", "index-category": "Páginas indizadas", - "noindex-category": "Páginas no indexadas", + "noindex-category": "Páginas no indizadas", "broken-file-category": "Páginas con enlaces rotos a archivos", "about": "Acerca de", "article": "Página de contenido", @@ -323,6 +323,7 @@ "searcharticle": "Ir", "history": "Historial", "history_short": "Historial", + "history_small": "historial", "updatedmarker": "actualizado desde mi última visita", "printableversion": "Versión para imprimir", "permalink": "Enlace permanente", @@ -415,7 +416,7 @@ "editsection": "editar", "editold": "editar", "viewsourceold": "ver código", - "editlink": "modificar", + "editlink": "editar", "viewsourcelink": "ver código", "editsectionhint": "Editar sección: $1", "toc": "Contenido", @@ -462,7 +463,7 @@ "databaseerror-query": "Consulta: $1", "databaseerror-function": "Función: $1", "databaseerror-error": "Error: $1", - "transaction-duration-limit-exceeded": "Para evitar la creación de lentitud alta de respuesta, la transacción fue abortada porque la duración de escritura ($1) excedió el límite de $2 {{PLURAL:$2|segundo|segundos}}.\nSi estás cambiando muchos elementos a la vez, trata de hacer operaciones similares más pequeñas.", + "transaction-duration-limit-exceeded": "Con el fin de evitar un aumento excesivo del retardo de replicación, se anuló esta transacción porque la duración de escritura ($1) excedió el límite de $2 {{PLURAL:$2|segundo|segundos}}.\nSi estás cambiando muchos elementos a la vez, trata de hacer operaciones similares más pequeñas.", "laggedslavemode": "<strong>Advertencia:</strong> puede que falten las actualizaciones más recientes en esta página.", "readonly": "Base de datos bloqueada", "enterlockreason": "Explica el motivo del bloqueo, incluyendo una estimación de cuándo se producirá el desbloqueo", @@ -479,8 +480,8 @@ "filerenameerror": "No se ha podido renombrar el archivo «$1» a «$2».", "filedeleteerror": "No se ha podido borrar el archivo «$1».", "directorycreateerror": "No se ha podido crear el directorio «$1».", - "directoryreadonlyerror": "La carpeta «$1» es de solo lectura.", - "directorynotreadableerror": "La carpeta «$1» no tiene permisos de lectura.", + "directoryreadonlyerror": "El directorio «$1» es de solo lectura.", + "directorynotreadableerror": "El directorio «$1» no tiene permisos de lectura.", "filenotfound": "No se ha encontrado el archivo «$1».", "unexpected": "Valor inesperado: «$1»=«$2».", "formerror": "Error: no se ha podido enviar el formulario.", @@ -562,19 +563,12 @@ "login": "Acceder", "login-security": "Verifica tu identidad", "nav-login-createaccount": "Acceder/crear cuenta", - "userlogin": "Acceder/crear cuenta", - "userloginnocreate": "Acceder", "logout": "Salir", "userlogout": "Salir", "notloggedin": "No has iniciado sesión", "userlogin-noaccount": "¿No tienes una cuenta?", "userlogin-joinproject": "Únete a {{SITENAME}}", - "nologin": "¿No tienes una cuenta? $1.", - "nologinlink": "Crear una cuenta", "createaccount": "Crear una cuenta", - "gotaccount": "¿Ya tienes una cuenta? $1.", - "gotaccountlink": "Acceder", - "userlogin-resetlink": "¿Olvidaste tus datos de acceso?", "userlogin-resetpassword-link": "¿Has olvidado tu contraseña?", "userlogin-helplink2": "Ayuda con el acceso", "userlogin-loggedin": "Ya estás {{GENDER:$1|conectado|conectada}} como $1.\nUsa el formulario de abajo para iniciar sesión como otro usuario.", @@ -587,7 +581,6 @@ "createaccountmail": "Utilizar una contraseña aleatoria temporal y enviarla a la dirección de correo electrónico especificada", "createaccountmail-help": "Puede usarse para crear una cuenta para otra persona sin revelar la contraseña.", "createacct-realname": "Nombre real (opcional)", - "createaccountreason": "Motivo:", "createacct-reason": "Motivo", "createacct-reason-ph": "Por qué estás creando otra cuenta", "createacct-reason-help": "Mensaje que se muestra en el registro de creación de cuentas", @@ -786,7 +779,7 @@ "selfredirect": "<strong>Advertencia:</strong> estás redirigiendo esta página a sí misma.\nPuede que hayas especificado erróneamente el destino de la redirección, o quizá estés editando la página equivocada. En cualquier caso, si haces clic de nuevo en \"{{int:savearticle}}\", se creará la redirección.", "missingcommenttext": "Escribe un comentario a continuación.", "missingcommentheader": "<strong>Atención:</strong> no has escrito un asunto para este comentario.\nSi haces clic nuevamente en \"{{int:savearticle}}\" tu edición se grabará sin él.", - "summary-preview": "Previsualización del resumen:", + "summary-preview": "Previsualización del resumen de edición:", "subject-preview": "Previsualización del asunto:", "previewerrortext": "Se ha producido un error al intentar la vista previa de los cambios.", "blockedtitle": "El usuario está bloqueado", @@ -1094,6 +1087,7 @@ "search-interwiki-caption": "Proyectos hermanos", "search-interwiki-default": "Resultados de $1:", "search-interwiki-more": "(más)", + "search-interwiki-more-results": "más resultados", "search-relatedarticle": "Relacionado", "searchrelated": "relacionado", "searchall": "todos", @@ -1183,6 +1177,7 @@ "youremail": "Correo electrónico:", "username": "{{GENDER:$1|Nombre de usuario|Nombre de usuaria}}:", "prefs-memberingroups": "{{GENDER:$2|Miembro}} {{PLURAL:$1|del grupo|de los grupos}}:", + "group-membership-link-with-expiry": "$1 (hasta $2)", "prefs-registration": "Fecha y hora de registro:", "yourrealname": "Nombre real:", "yourlanguage": "Idioma:", @@ -1227,17 +1222,25 @@ "editusergroup": "Cargar grupos de usuarios", "editinguser": "Cambio de los permisos {{GENDER:$1|del usuario|de la usuaria}} <strong>[[User:$1|$1]]</strong> $2", "viewinguserrights": "Visualización de los derechos {{GENDER:$1|del usuario|de la usuaria}} <strong>[[User:$1|$1]]</strong> $2", - "userrights-editusergroup": "Modificar grupos {{GENDER:$1|del usuario| de la usuaria}}", - "userrights-viewusergroup": "Ver grupos de usuarios", + "userrights-editusergroup": "Modificar grupos {{GENDER:$1|del usuario|de la usuaria}}", + "userrights-viewusergroup": "Ver grupos {{GENDER:$1|del usuario|de la usuaria}}", "saveusergroups": "Guardar grupos {{GENDER:$1|del usuario|de la usuaria}}", "userrights-groupsmember": "Miembro de:", "userrights-groupsmember-auto": "Miembro implícito de:", - "userrights-groups-help": "Puedes modificar los grupos a los que pertenece {{GENDER:$1|este usuario|esta usuaria}}:\n* Un recuadro marcado significa que {{GENDER:$1|el usuario|la usuaria}} está en ese grupo.\n* Un recuadro no marcado significa que {{GENDER:$1|el usuario|la usuaria}} no está en ese grupo.\n* Un * indica que no podrás eliminar el grupo una vez que lo agregues, o viceversa.", + "userrights-groups-help": "Usted puede alterar los grupos en que está este usuario:\n* Una casilla marcada significa que el usuario está en ese grupo.\n* Una casilla sin marcar significa que el usuario no está en ese grupo.\n* Un * indica que no se puede eliminar el grupo una vez que se han añadido o viceversa.\n* Un # indica que sólo se puede volver a poner la fecha de caducidad de este grupo; no se pueden llevar adelante.", "userrights-reason": "Motivo:", "userrights-no-interwiki": "No tienes permiso para editar permisos de usuario en otros wikis.", "userrights-nodatabase": "La base de datos $1 no existe o no es local.", "userrights-changeable-col": "Grupos que puedes cambiar", "userrights-unchangeable-col": "Grupos que no puedes cambiar", + "userrights-expiry-current": "Caduca el $1", + "userrights-expiry-none": "No caduca", + "userrights-expiry": "Caduca:", + "userrights-expiry-existing": "Fecha de caducidad actual: $2 a las $3", + "userrights-expiry-othertime": "Otro tiempo:", + "userrights-expiry-options": "1 día:1 day,1 semana:1 week,1 mes:1 month,3 meses:3 months,6 meses:6 months,1 año:1 year", + "userrights-invalid-expiry": "El tiempo de caducidad del grupo \"$1\" no es válido.", + "userrights-expiry-in-past": "El tiempo de caducidad del grupo \"$1\" está en el pasado.", "userrights-conflict": "¡Conflicto de cambio de los permisos de usuario! Por favor, revisa y confirma tus cambios.", "group": "Grupo:", "group-user": "Usuarios", @@ -1438,22 +1441,53 @@ "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (véase también la [[Special:NewPages|lista de páginas nuevas]])", "recentchanges-submit": "Mostrar", "rcfilters-activefilters": "Filtros activos", + "rcfilters-restore-default-filters": "Restaurar filtros predeterminados", + "rcfilters-clear-all-filters": "Borrar todos los filtros", "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-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-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-filtergroup-authorship": "Editar autoría", "rcfilters-filter-editsbyself-label": "Tus propias ediciones", "rcfilters-filter-editsbyself-description": "Ediciones tuyas", "rcfilters-filter-editsbyother-label": "Ediciones de otros", "rcfilters-filter-editsbyother-description": "Ediciones creadas por otros usuarios (no por ti).", - "rcfilters-filtergroup-userExpLevel": "Nivel de experiencia del usuario", - "rcfilters-filter-userExpLevel-newcomer-label": "Recién llegados", - "rcfilters-filter-userExpLevel-newcomer-description": "Editores recién llegados: menos de 10 ediciones y 4 días de actividad.", - "rcfilters-filter-userExpLevel-learner-label": "Aprendices", - "rcfilters-filter-userExpLevel-learner-description": "Más días de actividad y ediciones que los «recién llegados», pero menos que los «usuarios experimentados».", - "rcfilters-filter-userExpLevel-experienced-label": "Usuarios experimentados", - "rcfilters-filter-userExpLevel-experienced-description": "Más de 30 días de actividad y 500 ediciones.", + "rcfilters-filtergroup-userExpLevel": "Nivel de experiencia (solo para usuarios registrados)", + "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-learner-label": "Aprendices", + "rcfilters-filter-user-experience-level-learner-description": "Más días de actividad y ediciones que los «recién llegados», pero menos que los «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-filtergroup-automated": "Contribuciones automatizadas", + "rcfilters-filter-bots-label": "Bot", + "rcfilters-filter-bots-description": "Ediciones realizadas por herramientas automatizadas.", + "rcfilters-filter-humans-label": "Ser humano (no bot)", + "rcfilters-filter-humans-description": "Ediciones realizadas por editores humanos.", + "rcfilters-filtergroup-reviewstatus": "Estado de revisión", + "rcfilters-filtergroup-significance": "Significación", + "rcfilters-filter-minor-label": "Ediciones menores", + "rcfilters-filter-minor-description": "Ediciones etiquetadas por el autor como menores.", + "rcfilters-filter-major-label": "Ediciones no menores", + "rcfilters-filter-major-description": "Ediciones no etiquetadas como menores.", + "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...", + "rcfilters-filter-newpages-label": "Creaciones de páginas", + "rcfilters-filter-newpages-description": "Ediciones en las que se crean páginas nuevas.", + "rcfilters-filter-categorization-label": "Cambios de categorías", + "rcfilters-filter-categorization-description": "Registros de páginas añadidas o borradas de categorías.", + "rcfilters-filter-logactions-label": "Acciones registradas", + "rcfilters-filter-logactions-description": "Acciones administrativas, creación de cuentas, borrados de páginas, subidas de archivos...", "rcnotefrom": "Debajo aparece{{PLURAL:$5| el cambio|n los cambios}} desde <strong>$3, $4</strong> (se muestran hasta <strong>$1</strong>).", "rclistfrom": "Mostrar cambios nuevos desde las $2 del $3", "rcshowhideminor": "$1 ediciones menores", @@ -1587,7 +1621,7 @@ "uploaded-setting-handler-svg": "Están bloqueados los archivos SVG que configuran el atributo \"handler\" con remote/data/script. Se encontró <code>$1=\"$2\"</code> en el archivo SVG cargado.", "uploaded-remote-url-svg": "Se bloquean los SVG que contienen URL de estilo externas. El archivo SVG cargado contiene <code>$1=\"$2\"</code>.", "uploaded-image-filter-svg": "Se encontró un filtro de imagen con URL: <code><$1 $2=\"$3\"></code> en el archivo SVG cargado.", - "uploadscriptednamespace": "Este archivo SVG contiene un espacio de nombres no permitido: \"$1\".", + "uploadscriptednamespace": "Este archivo SVG contiene un espacio de nombres no permitido: «<nowiki>$1</nowiki>».", "uploadinvalidxml": "No se pudo analizar el XML del archivo cargado.", "uploadvirus": "¡El archivo contiene un virus!\nDetalles: $1", "uploadjava": "El archivo es un ZIP que contiene un archivo .class de Java.\nNo se permite subir archivos Java, porque pueden causar que se puedan saltar restricciones de seguridad.", @@ -1783,7 +1817,7 @@ "filedelete-comment": "Motivo:", "filedelete-submit": "Eliminar", "filedelete-success": "<strong>$1</strong> se ha borrado.", - "filedelete-success-old": "La versión de <strong>[[Media:$1|$1]]</strong> del $2 a las $3 ha sido borrada.", + "filedelete-success-old": "La versión de <strong>[[Media:$1|$1]]</strong> del $2 a las $3 se ha borrado.", "filedelete-nofile": "<strong>$1</strong> no existe.", "filedelete-nofile-old": "No existe una versión guardada de <strong>$1</strong> con los atributos especificados.", "filedelete-otherreason": "Otra razón:", @@ -1865,6 +1899,7 @@ "uncategorizedcategories": "Categorías sin categorizar", "uncategorizedimages": "Archivos sin categorizar", "uncategorizedtemplates": "Plantillas sin categorizar", + "uncategorized-categories-exceptionlist": "# Contiene una lista de categorías que no deberían figurar en Special:UncategorizedCategories. Una categoría por línea, empezando por «*». Las líneas que empiecen por otro carácter (espacios en blanco incluidos) se ignorarán. Usa «#» para añadir comentarios.", "unusedcategories": "Categorías sin uso", "unusedimages": "Archivos sin uso", "wantedcategories": "Categorías requeridas", @@ -1963,7 +1998,8 @@ "apisandbox-sending-request": "Enviando pedido a la API...", "apisandbox-loading-results": "Recibiendo resultados de la API...", "apisandbox-results-error": "Ocurrió un error durante la carga de la respuesta a la consulta API: $1", - "apisandbox-request-params-json": "Parámetros JSON:", + "apisandbox-request-selectformat-label": "Mostrar los datos de la petición como:", + "apisandbox-request-format-url-label": "Cadena de consulta de la URL", "apisandbox-request-url-label": "URL solicitante:", "apisandbox-request-time": "Tiempo de solicitud: {{PLURAL:$1|$1 ms}}", "apisandbox-results-fixtoken": "Corrige el token y vuelve a enviar", @@ -2106,7 +2142,7 @@ "emailccsubject": "Copia de tu mensaje a $1: $2", "emailsent": "Correo electrónico enviado", "emailsenttext": "Se ha enviado tu mensaje de correo electrónico.", - "emailuserfooter": "Este correo electrónico fue {{GENDER:$1|enviado}} por $1 a {{GENDER:$2|$2}} a través de la función «{{int:emailuser}}» en {{SITENAME}}. {{GENDER:$2|Tu}} correo electrónico se enviará directamente {{GENDER:$1|al emisor|a la emisora}} original, y {{GENDER:$1|le}} revelará {{GENDER:$2|tu}} dirección de correo electrónico.", + "emailuserfooter": "Este correo electrónico fue {{GENDER:$1|enviado}} por $1 a {{GENDER:$2|$2}} a través de la función «{{int:emailuser}}» en {{SITENAME}}. Si {{GENDER:$2|respondes}}, tu correo electrónico se enviará directamente {{GENDER:$1|al emisor|a la emisora}} original, y {{GENDER:$1|le}} revelará {{GENDER:$2|tu}} dirección de correo electrónico.", "usermessage-summary": "Dejando un mensaje de sistema.", "usermessage-editor": "Mensajero del sistema", "watchlist": "Lista de seguimiento", @@ -2176,8 +2212,8 @@ "historywarning": "<strong>Atención:</strong> la página que estás a punto de borrar tiene un historial con $1 {{PLURAL:$1|revisión|revisiones}}:", "historyaction-submit": "Mostrar", "confirmdeletetext": "Estás a punto de borrar una página, así como todo su historial.\nConfirma que realmente quieres hacer esto, que entiendes las consecuencias y que lo estás haciendo de acuerdo con [[{{MediaWiki:Policy-url}}|las políticas]].", - "actioncomplete": "Acción completada", - "actionfailed": "Falló la acción", + "actioncomplete": "Se ha realizado la acción", + "actionfailed": "Ha fallado la acción", "deletedtext": "«$1» ha sido borrado.\nVéase $2 para un registro de los borrados recientes.", "dellogpage": "Registro de borrados", "dellogpagetext": "A continuación se muestra una lista de los borrados más recientes.", @@ -2204,10 +2240,10 @@ "editcomment": "El resumen de la edición fue: <em>$1</em>.", "revertpage": "Revertidos los cambios de [[Special:Contributions/$2|$2]] ([[User talk:$2|disc.]]) a la última edición de [[User:$1|$1]]", "revertpage-nouser": "Revertidas las ediciones hechas por un usuario oculto a la última revisión hecha por {{GENDER:$1|[[User:$1|$1]]}}", - "rollback-success": "Revertidas las ediciones de $1; recuperada la última versión de $2.", + "rollback-success": "Revertidas las ediciones de {{GENDER:$3|$1}};\nrecuperada la última versión de {{GENDER:$4|$2}}.", "rollback-success-notify": "Revertidas las ediciones de $1 hasta la última revisión de $2. [$3 Ver cambios]", "sessionfailure-title": "Error de sesión", - "sessionfailure": "Parece que hay un problema con tu sesión;\nesta acción ha sido cancelada como medida de precaución contra secuestros de sesión.\nPor favor, pulsa «Atrás», recarga la página de la que viniste e inténtalo de nuevo.", + "sessionfailure": "Parece que hay un problema con tu sesión;\nse ha cancelado esta acción como medida de precaución contra el robo de sesiones.\nVuelve a la página anterior, recárgala e inténtalo de nuevo.", "changecontentmodel": "Cambiar el modelo de contenido de una página", "changecontentmodel-legend": "Cambiar el modelo de contenido", "changecontentmodel-title-label": "Título de página", @@ -2355,7 +2391,7 @@ "sp-contributions-blocked-notice-anon": "Esta dirección IP se encuentra actualmente bloqueada.\nA continuación se muestra la última entrada del registro de bloqueos para mayor referencia.", "sp-contributions-search": "Buscar contribuciones", "sp-contributions-username": "Dirección IP o nombre de usuario:", - "sp-contributions-toponly": "Solo mostrar últimas ediciones de página", + "sp-contributions-toponly": "Mostrar solo últimas ediciones de página", "sp-contributions-newonly": "Mostrar solo ediciones que son creaciones de páginas", "sp-contributions-hideminor": "Ocultar ediciones menores", "sp-contributions-submit": "Buscar", @@ -2456,7 +2492,7 @@ "reblock-logentry": "cambió el bloqueo para [[$1]] con una caducidad de $2 $3", "blocklogtext": "Esto es un registro de acciones de bloqueo y desbloqueo de usuarios.\nLas direcciones IP bloqueadas automáticamente no aparecen aquí.\nConsulta la [[Special:BlockList|lista de bloqueos]] para ver la lista de bloqueos y prohibiciones de operar en vigor.", "unblocklogentry": "desbloqueó a $1", - "block-log-flags-anononly": "sólo anónimos", + "block-log-flags-anononly": "solo usuarios anónimos", "block-log-flags-nocreate": "desactivada la creación de cuentas", "block-log-flags-noautoblock": "bloqueo automático desactivado", "block-log-flags-noemail": "correo electrónico desactivado", @@ -3089,6 +3125,7 @@ "exif-compression-6": "JPEG (antiguo)", "exif-copyrighted-true": "Con derechos de autor", "exif-copyrighted-false": "No se ha definido el estado del copyright", + "exif-photometricinterpretation-0": "Blanco y negro (blanco es 0)", "exif-photometricinterpretation-1": "Blanco y negro (el negro es 0)", "exif-photometricinterpretation-4": "Máscara de transparencia", "exif-photometricinterpretation-5": "Separados (Probablemente CMYK)", @@ -3460,7 +3497,7 @@ "tags-deactivate": "desactivar", "tags-hitcount": "$1 {{PLURAL:$1|cambio|cambios}}", "tags-manage-no-permission": "No tienes permiso para gestionar las etiquetas de cambios.", - "tags-manage-blocked": "No puedes gestionar etiquetas de cambio mientras estés {{GÉNERO:$1|bloqueado|bloqueada}}.", + "tags-manage-blocked": "No puedes gestionar etiquetas de cambio mientras estés {{GENDER:$1|bloqueado|bloqueada}}.", "tags-create-heading": "Crear una etiqueta", "tags-create-explanation": "De manera predeterminada, las etiquetas nuevas estarán disponibles para su uso por usuarios y bots.", "tags-create-tag-name": "Nombre de la etiqueta:", @@ -3644,7 +3681,7 @@ "logentry-tag-update-revision": "$1 {{GENDER:$2|actualizó}} etiquetas de la revisión $4 de la página $3 ({{PLURAL:$7|agregó}} $6; {{PLURAL:$9|eliminó}} $8)", "logentry-tag-update-logentry": "$1 {{GENDER:$2|actualizó}} etiquetas de la entrada del registro $5 de la página $3 ({{PLURAL:$7|agregó}} $6; {{PLURAL:$9|eliminó}} $8)", "rightsnone": "(ninguno)", - "revdelete-summary": "resumen de edición", + "rightslogentry-temporary-group": "$1 (provisional, hasta $2)", "feedback-adding": "Añadiendo comentarios a la página...", "feedback-back": "Volver", "feedback-bugcheck": "¡Perfecto! Únicamente comprueba que no sea un [$1 fallo conocido].", @@ -3669,56 +3706,12 @@ "feedback-useragent": "Agente de usuario:", "searchsuggest-search": "Buscar en {{SITENAME}}", "searchsuggest-containing": "que contiene...", - "api-error-autoblocked": "Tu dirección IP ha sido bloqueada automáticamente porque fue utilizada por un usuario bloqueado.", - "api-error-badaccess-groups": "No puedes cargar archivos en este wiki.", "api-error-badtoken": "Error interno: Símbolo incorrecto.", - "api-error-blocked": "Has sido bloqueado de editar.", - "api-error-copyuploaddisabled": "La subida por URL está desactivada en este servidor.", - "api-error-duplicate": "Ya {{PLURAL:$1|existe otro archivo|existen otros archivos}} en el sitio con el mismo contenido.", - "api-error-duplicate-archive": "Ya {{PLURAL:$1|existía otro archivo|existían otros archivos}} en el sitio con el mismo contenido, pero {{PLURAL:$1|fue eliminado|fueron eliminados}}.", - "api-error-empty-file": "El archivo que enviaste estaba vacío.", "api-error-emptypage": "No se pueden crear páginas nuevas que estén vacías.", - "api-error-fetchfileerror": "Error interno: Algo salió mal mientras se obtenía el archivo.", - "api-error-fileexists-forbidden": "Ya existe un archivo con el nombre «$1» y no se puede sobrescribir.", - "api-error-fileexists-shared-forbidden": "Ya existe un archivo con el nombre «$1» en el repositorio de archivos compartido y no se puede sobrescribir.", - "api-error-file-too-large": "El archivo que enviaste era demasiado grande.", - "api-error-filename-tooshort": "El nombre de archivo es demasiado corto.", - "api-error-filetype-banned": "Este tipo de archivo está prohibido.", - "api-error-filetype-banned-type": "$1 {{PLURAL:$4|no es un tipo de archivo permitido|no son tipos de archivos permitidos}}. {{PLURAL:$3|El tipo de archivo permitido es|Los tipos de archivos permitidos son}} $2.", - "api-error-filetype-missing": "El archivo no tiene extensión de archivo.", - "api-error-hookaborted": "La modificación que intentaste hacer fue cancelada por una extensión.", - "api-error-http": "Error interno: No se puede conectar al servidor.", - "api-error-illegal-filename": "El nombre de archivo no está permitido.", - "api-error-internal-error": "Error interno: Algo salió mal al procesar tu subida en el wiki.", - "api-error-invalid-file-key": "Error interno: No se encontró el archivo en el almacenamiento temporal.", - "api-error-missingparam": "Error interno: Faltan parámetros en la solicitud.", - "api-error-missingresult": "Error interno: No se pudo determinar si la copia tuvo éxito.", - "api-error-mustbeloggedin": "Debes iniciar sesión para subir archivos.", - "api-error-mustbeposted": "Error interno: La solicitud requiere HTTP POST.", - "api-error-noimageinfo": "La carga se realizó correctamente, pero el servidor no nos dio ninguna información sobre el archivo.", - "api-error-nomodule": "Error interno: No hay un módulo de carga configurado.", - "api-error-ok-but-empty": "Error interno: No hay respuesta del servidor.", - "api-error-overwrite": "No se permite sobrescribir un archivo existente.", - "api-error-ratelimited": "Estás tratando de subir, en un corto periodo de tiempo, más archivos de los que este wiki permite.\nPor favor, inténtalo de nuevo dentro de algunos minutos.", - "api-error-stashfailed": "Error interno: El servidor no pudo almacenar el archivo temporal.", "api-error-publishfailed": "Error interno: el servidor no pudo publicar el archivo temporal.", - "api-error-stasherror": "Ha ocurrido un error al subir el archivo al depósito.", - "api-error-stashedfilenotfound": "No se encontró el archivo del espacio temporal al intentar cargarlo.", - "api-error-stashpathinvalid": "La ruta donde debería encontrarse el archivo del espacio temporal no es válida.", - "api-error-stashfilestorage": "Ocurrió un error al almacenar el archivo en el espacio temporal.", - "api-error-stashzerolength": "El servidor no pudo almacenar el archivo en el espacio temporal porque este no contiene datos.", - "api-error-stashnotloggedin": "Debes acceder para guardar archivos en el espacio temporal de carga.", - "api-error-stashwrongowner": "El archivo del espacio temporal al que quieres acceder no te pertenece.", - "api-error-stashnosuchfilekey": "La clave de archivo del espacio temporal al que quieres acceder no existe.", - "api-error-timeout": "El servidor no respondió en el plazo previsto.", - "api-error-unclassified": "Ocurrió un error desconocido.", - "api-error-unknown-code": "Error desconocido: «$1»", - "api-error-unknown-error": "Error interno: Algo salió mal al intentar cargar el archivo.", + "api-error-stashfailed": "Error interno: El servidor no pudo almacenar el archivo temporal.", "api-error-unknown-warning": "Advertencia desconocida: «$1».", "api-error-unknownerror": "Error desconocido: «$1».", - "api-error-uploaddisabled": "Las subidas están desactivadas en este wiki.", - "api-error-verification-error": "Este archivo puede estar dañado, o tiene una extensión incorrecta.", - "api-error-was-deleted": "Un archivo de este nombre se ha subido previamente y eliminado posteriormente.", "duration-seconds": "$1 {{PLURAL:$1|segundo|segundos}}", "duration-minutes": "$1 {{PLURAL:$1|minuto|minutos}}", "duration-hours": "$1 {{PLURAL:$1|hora|horas}}", @@ -3841,6 +3834,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...", "sessionmanager-tie": "No se pueden combinar múltiples tipos de autenticación de solicitudes: $1.", "sessionprovider-generic": "sesiones $1", "sessionprovider-mediawiki-session-cookiesessionprovider": "sesiones basadas en cookies", @@ -3972,7 +3966,7 @@ "usercssispublic": "Recuerda: las subpáginas CSS no deberían contener datos confidenciales, pues otros usuarios los pueden ver.", "restrictionsfield-badip": "Dirección o intervalo IP no válidos: $1", "restrictionsfield-label": "Intervalos de IP permitidos:", - "restrictionsfield-help": "Una dirección IP o intervalo de CIDR por renglón. Para activar todo, utiliza<br><code>0.0.0.0/0</code><br><code>::/0</code>", + "restrictionsfield-help": "Una dirección IP o intervalo de CIDR por renglón. Para activarlo todo, utiliza <pre>0.0.0.0/0\n::/0</pre>", "revid": "revisión $1", "pageid": "ID de página $1" } diff --git a/languages/i18n/et.json b/languages/i18n/et.json index 0ab9653a3d..d82602fe6a 100644 --- a/languages/i18n/et.json +++ b/languages/i18n/et.json @@ -197,6 +197,7 @@ "searcharticle": "Mine", "history": "Ajalugu", "history_short": "Ajalugu", + "history_small": "ajalugu", "updatedmarker": "uuendatud pärast viimast külastust", "printableversion": "Prinditav versioon", "permalink": "Püsilink", @@ -427,7 +428,7 @@ "cannotlogin-title": "Ei saa sisse logida", "cannotlogin-text": "Sisselogimine pole võimalik.", "cannotloginnow-title": "Praegu ei saa sisse logida", - "cannotloginnow-text": "Sisselogimine pole võimalik, kui kasutad $1.", + "cannotloginnow-text": "Sisselogimine pole võimalik, kui kasutusel on $1.", "cannotcreateaccount-title": "Ei saa kontosid luua", "cannotcreateaccount-text": "Kontode käsitsi loomine pole selles vikis lubatud.", "yourdomainname": "Sinu domeen:", @@ -436,19 +437,12 @@ "login": "Sisselogimine", "login-security": "Identsuskontroll", "nav-login-createaccount": "Logi sisse või registreeru kasutajaks", - "userlogin": "Sisselogimine või kasutajakonto loomine", - "userloginnocreate": "Sisselogimine", "logout": "Logi välja", "userlogout": "Väljalogimine", "notloggedin": "Sisse logimata", "userlogin-noaccount": "Kas sul pole kontot?", "userlogin-joinproject": "Ühine projektiga {{SITENAME}}", - "nologin": "Kas sul pole kontot? $1.", - "nologinlink": "Registreeru siin", "createaccount": "Konto loomine", - "gotaccount": "Kui sul on juba konto, '''$1'''.", - "gotaccountlink": "logi sisse", - "userlogin-resetlink": "Kas oled unustanud oma sisselogimisandmed?", "userlogin-resetpassword-link": "Kas unustasid parooli?", "userlogin-helplink2": "Sisselogimisabi", "userlogin-loggedin": "Oled juba sisse logitud nimega {{GENDER:$1|$1}}.\nKasuta allolevat vormi, et logida sisse teise kasutajaga.", @@ -459,12 +453,15 @@ "createacct-email-ph": "Sisesta e-posti aadress", "createacct-another-email-ph": "Sisesta e-posti aadress", "createaccountmail": "Kasuta juhuslikku parooli ja saada see määratud e-posti aadressile", + "createaccountmail-help": "Saab kasutada konto loomiseks teisele kasutajale ilma parooli teada saamata.", "createacct-realname": "Pärisnimi (valikuline)", - "createaccountreason": "Põhjus:", "createacct-reason": "Põhjus", "createacct-reason-ph": "Miks lood teist kontot?", + "createacct-reason-help": "Sõnum, mida näidatakse konto loomise logis", "createacct-submit": "Loo konto", "createacct-another-submit": "Loo konto", + "createacct-continue-submit": "Jätka konto loomist", + "createacct-another-continue-submit": "Jätka konto loomist", "createacct-benefit-heading": "{{SITENAME}} on sinusuguste inimeste tehtud.", "createacct-benefit-body1": "{{PLURAL:$1|muudatus|muudatust}}", "createacct-benefit-body2": "{{PLURAL:$1|lehekülg|lehekülge}}", @@ -478,6 +475,7 @@ "nocookiesnew": "Kasutajakonto loodi, aga sa ei ole sisse logitud, sest {{SITENAME}} kasutab kasutajate tuvastamisel küpsiseid. Sinu brauseris on küpsised keelatud. Palun sea küpsised lubatuks ja logi siis oma vastse kasutajanime ning parooliga sisse.", "nocookieslogin": "{{SITENAME}} kasutab kasutajate tuvastamisel küpsiseid. Sinu brauseris on küpsised keelatud. Palun sea küpsised lubatuks ja proovi siis uuesti.", "nocookiesfornew": "Kasutajakonto jäi loomata, kuna me ei saanud selle allikat kindlaks teha.\nVeendu, et sul on küpsised lubatud, taaslaadi see lehekülg ja proovi uuesti.", + "createacct-loginerror": "Konto on edukalt loodud, aga automaatselt ei õnnestunud sisse logida. Et jätkata, [[Special:UserLogin|logi palun sisse käsitsi]].", "noname": "Sa ei sisestanud kasutajanime lubataval kujul.", "loginsuccesstitle": "Sisse logitud", "loginsuccess": "Oled sisse loginud. Sinu kasutajanimi on \"$1\".", @@ -522,6 +520,7 @@ "createacct-another-realname-tip": "Tegelik nimi on valikuline.\nKui otsustad selle sisestada, kasutatakse seda kasutaja töö temale omistamiseks.", "pt-login": "Logi sisse", "pt-login-button": "Logi sisse", + "pt-login-continue-button": "Jätka sisselogimist", "pt-createaccount": "Loo konto", "pt-userlogout": "Logi välja", "php-mail-error-unknown": "Tundmatu tõrge PHP funktsioonis mail().", @@ -564,7 +563,7 @@ "passwordreset-domain": "Domeen:", "passwordreset-email": "E-posti aadress:", "passwordreset-emailtitle": "{{GRAMMAR:genitive|{{SITENAME}}}} konto andmed", - "passwordreset-emailtext-ip": "Keegi, arvatavasti sina ise, IP-aadressilt $1 palus lähtestada sinu {{GRAMMAR:genitive|{{SITENAME}}}} ($4) parooli. Selle e-posti aadressiga on seotud {{PLURAL:$3|järgmine konto|järgmised kontod}}:\n\n$2\n\n{{PLURAL:$3|See ajutine parool aegub|Need ajutised paroolid aeguvad}} {{PLURAL:$5|ühe|$5}} päeva pärast.\nPeaksid nüüd sisse logima ja uue parooli valima. Kui selle palve esitas keegi teine või kui sulle meenus su parool ja sa ei soovi seda enam muuta, võid teadet eirata ja jätkata vana parooli kasutamist.", + "passwordreset-emailtext-ip": "Keegi IP-aadressilt $1, arvatavasti sina ise, palus lähtestada sinu {{GRAMMAR:genitive|{{SITENAME}}}} ($4) parooli. Selle e-posti aadressiga on seotud {{PLURAL:$3|järgmine konto|järgmised kontod}}:\n\n$2\n\n{{PLURAL:$3|See ajutine parool aegub|Need ajutised paroolid aeguvad}} {{PLURAL:$5|ühe|$5}} päeva pärast.\nPeaksid nüüd sisse logima ja uue parooli valima. Kui selle palve esitas keegi teine või kui sulle meenus su parool ja sa ei soovi seda enam muuta, võid teadet eirata ja jätkata vana parooli kasutamist.", "passwordreset-emailtext-user": "{{GRAMMAR:genitive|{{SITENAME}}}} kasutaja $1 palus lähtestada sinu {{GRAMMAR:genitive|{{SITENAME}}}} ($4) parooli. Selle e-posti aadressiga on seotud {{PLURAL:$3|järgmine konto|järgmised kontod}}:\n\n$2\n\n{{PLURAL:$3|See ajutine parool aegub|Need ajutised paroolid aeguvad}} {{PLURAL:$5|ühe|$5}} päeva pärast.\nPeaksid nüüd sisse logima ja uue parooli valima. Kui selle palve esitas keegi teine või kui sulle meenus su parool ja sa ei soovi seda enam muuta, võid teadet eirata ja jätkata vana parooli kasutamist.", "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.", @@ -628,11 +627,12 @@ "missingcommenttext": "Palun sisesta siit allapoole kommentaar.", "missingcommentheader": "<strong>Meeldetuletus:</strong> Sa pole kirjutanud kommentaarile teemat.\nKui klõpsad uuesti \"{{int:savearticle}}\", salvestatakse su kommentaar ilma teemata.", "summary-preview": "Resümee eelvaade:", - "subject-preview": "Alaosa pealkirja eelvaade:", + "subject-preview": "Resümee eelvaade:", "previewerrortext": "Sinu muudatuste eelvaatluse juures esines tõrge.", "blockedtitle": "Kasutaja on blokeeritud", "blockedtext": "'''Sinu kasutajanimi või IP-aadress on blokeeritud.'''\n\nBlokeeris $1.\nTema põhjendus on järgmine: ''$2''.\n\n* Blokeeringu algus: $8\n* Blokeeringu lõpp: $6\n* Sooviti blokeerida: $7\n\nKüsimuse arutamiseks võid pöörduda kasutaja $1 või mõne teise [[{{MediaWiki:Grouppage-sysop}}|administraatori]] poole.\n\nPane tähele, et sa ei saa kasutajale teadet saata, kui sa pole kinnitanud oma [[Special:Preferences|eelistuste lehel]] kehtivat e-posti aadressi.\n\nSinu praegune IP-aadress on $3 ning blokeeringu number on #$5. Lisa need andmed kõigile järelepärimistele, mida kavatsed teha.", "autoblockedtext": "Sinu IP-aadress blokeeriti automaatselt, sest seda kasutas teine kasutaja, kelle $1 blokeeris.\nPõhjendus on järgmine:\n\n:''$2''\n\n* Blokeeringu algus: $8\n* Blokeeringu lõpp: $6\n* Sooviti blokeerida: $7\n\nKüsimuse arutamiseks võid pöörduda kasutaja $1 või mõne teise [[{{MediaWiki:Grouppage-sysop}}|administraatori]] poole.\n\nPane tähele, et sa ei saa teisele kasutajale teadet saata, kui sa pole kinnitanud oma [[Special:Preferences|eelistuste lehel]] kehtivat e-posti aadressi ega ole selle kasutamisest blokeeritud.\n\nSinu praegune IP-aadress on $3 ja blokeeringu number #$5. Lisa need andmed kõigile järelpärimistele, mida kavatsed teha.", + "systemblockedtext": "MediaWiki tarkvara on sinu kasutajanime või IP-aadressi automaatselt blokeerinud.\nToodud on järgmine põhjus:\n\n:<em>$2</em>\n\n* Blokeerimisaeg: $8\n* Blokeeringu aegumistähtaeg: $6\n* Sooviti blokeerida: $7\n\nSinu praegune IP-aadress on $3.\nLisa need andmed kõigile järelepärimistele, mida kavatsed teha.", "blockednoreason": "põhjendust ei ole kirja pandud", "whitelistedittext": "Lehekülgede toimetamiseks pead $1.", "confirmedittext": "Lehekülgi ei saa toimetada enne e-posti aadressi kinnitamist.\nPalun määra ja kinnita e-posti aadress [[Special:Preferences|eelistuste leheküljel]].", @@ -721,6 +721,8 @@ "invalid-content-data": "Vigased sisuandmed", "content-not-allowed-here": "Lehekülg [[$2]] ei tohi sisaldada $1i.", "editwarning-warning": "Sellelt leheküljelt lahkumise tõttu võivad tehtud muudatused kaotsi minna.\nKui oled sisse loginud, saad selle hoiatuse eelistuste alaosas \"{{int:prefs-editing}}\" keelata.", + "editpage-invalidcontentmodel-title": "Toetamata sisumudel", + "editpage-invalidcontentmodel-text": "Sisumudelit \"$1\" ei toetata.", "editpage-notsupportedcontentformat-title": "Sisuvormingu tugi puudub", "editpage-notsupportedcontentformat-text": "Sisumudelil $2 puudub sisuvormingu $1 tugi.", "content-model-wikitext": "vikitekst", @@ -730,6 +732,7 @@ "content-json-empty-object": "Tühi objekt", "content-json-empty-array": "Tühi massiiv", "deprecated-self-close-category": "Vigaste endassesuletud HTML-siltidega leheküljed", + "deprecated-self-close-category-desc": "Leheküljel on endassesuletud HTML-silte nagu <code><b/></code> või <code><span/></code>. Nende kuvamisviis viiakse peagi vastavusse HTML5 spetsifikatsiooniga. Seetõttu selliseid silte vikitekstis enam kasutama ei peaks.", "duplicate-args-warning": "<strong>Hoiatus:</strong> [[:$1]] kutsub malli [[:$2]] nii, et parameetrile \"$3\" vastab rohkem kui üks väärtus. Väärtustest kasutatakse ainult viimast.", "duplicate-args-category": "Leheküljed, kus mallikutses on topeltargument", "duplicate-args-category-desc": "Lehekülg sisaldab mallikutseid, kus mõnd argumenti on kasutatud mitu korda, näiteks <code><nowiki>{{foo|bar=1|bar=2}}</nowiki></code> või <code><nowiki>{{foo|bar|1=baz}}</nowiki></code>.", @@ -865,6 +868,13 @@ "mergehistory-empty": "Ühtegi redaktsiooni ei saa liita.", "mergehistory-done": "Lehekülje $1 {{PLURAL:$3|üks redaktsioon|$3 redaktsiooni}} liideti lehega [[:$2]].", "mergehistory-fail": "Muudatuste ajaloo liitmine ebaõnnestus. Palun kontrolli lehekülje ja aja parameetreid.", + "mergehistory-fail-bad-timestamp": "Ajatempel on vigane.", + "mergehistory-fail-invalid-source": "Alliklehekülg on vigane.", + "mergehistory-fail-invalid-dest": "Sihtlehekülg on vigane.", + "mergehistory-fail-no-change": "Ajalugude liitmisel ei liidetud ühtegi redaktsiooni. Palun kontrolli lehekülgede ja aja parameetrid veelkord üle.", + "mergehistory-fail-permission": "Ajalugude liitmiseks vajalikud õigused puuduvad.", + "mergehistory-fail-self-merge": "Allik- ja sihtlehekülg on üks ja sama lehekülg.", + "mergehistory-fail-timestamps-overlap": "Alliklehekülje redaktsioonid kattuvad ajaliselt sihtlehekülje redaktsioonidega või on neist uuemad.", "mergehistory-fail-toobig": "Ajalugusid ei õnnestu liita, sest teisaldada tuleks rohkem kui {{PLURAL:$1|üks redaktsioon|$1 redaktsiooni}}, mis on piirmäär.", "mergehistory-no-source": "Alliklehekülge $1 pole olemas.", "mergehistory-no-destination": "Sihtlehekülge $1 pole olemas.", @@ -924,6 +934,7 @@ "search-interwiki-caption": "Sõsarprojektid", "search-interwiki-default": "Tulemused asukohast $1:", "search-interwiki-more": "(veel)", + "search-interwiki-more-results": "veel tulemusi", "search-relatedarticle": "Seotud", "searchrelated": "seotud", "searchall": "kõik", @@ -941,6 +952,7 @@ "search-external": "Välisotsing", "searchdisabled": "Otsimine on preagu keelatud.\nVahepeal saad otsimiseks Google'it kasutada.\nPane tähele, et Google'is talletatud {{GRAMMAR:genitive|{{SITENAME}}}} sisu võib olla iganenud.", "search-error": "Otsimise ajal ilmnes tõrge: $1", + "search-warning": "Otsimisel esines hoiatus: $1", "preferences": "Eelistused", "mypreferences": "Eelistused", "prefs-edits": "Redigeerimiste arv:", @@ -972,8 +984,6 @@ "saveprefs": "Salvesta eelistused", "restoreprefs": "Taasta kõik vaike-eelistused (kõigil kaartidel)", "prefs-editing": "Toimetamine", - "rows": "Ridu:", - "columns": "Veerge:", "searchresultshead": "Otsingutulemite sätted", "stub-threshold": "Nupukese suurus lingivormistusel ($1):", "stub-threshold-sample-link": "näide", @@ -1014,6 +1024,7 @@ "youremail": "E-posti aadress:", "username": "{{GENDER:$1|Kasutajanimi}}:", "prefs-memberingroups": "{{PLURAL:$1|Järgmise rühma|Järgmiste rühmade}} {{GENDER:$2|liige}}:", + "group-membership-link-with-expiry": "$1 (tähtaeg $2)", "prefs-registration": "Registreerumise aeg:", "yourrealname": "Tegelik nimi:", "yourlanguage": "Keel:", @@ -1057,16 +1068,27 @@ "userrights-user-editname": "Sisesta kasutajanimi:", "editusergroup": "Laadi kasutajarühmad", "editinguser": "Kasutaja '''[[User:$1|$1]]''' $2 õiguste muutmine", - "userrights-editusergroup": "Kasutajarühmade muutmine", + "viewinguserrights": "{{GENDER:$1|Kasutaja}} <strong>[[User:$1|$1]]</strong> $2 õiguste vaatamine", + "userrights-editusergroup": "{{GENDER:$1|Kasutajarühmade}} muutmine", + "userrights-viewusergroup": "{{GENDER:$1|Kasutajarühmade}} vaatamine", "saveusergroups": "Salvesta {{GENDER:$1|kasutajarühmad}}", "userrights-groupsmember": "Kuulub rühmadesse:", "userrights-groupsmember-auto": "Kuulub vaikimisi rühmadesse:", - "userrights-groups-help": "Sa võid muuta selle kasutaja kuuluvust eri kasutajarühmadesse.\n* Märgitud kast tähendab, et kasutaja kuulub sellesse rühma.\n* Märkimata kast tähendab, et kasutaja ei kuulu sellesse rühma.\n* Aga * kasutajarühma juures tähistab õigust, mida sa peale lisamist enam eemaldada ei saa, või siis ka vastupidi.", + "userrights-groups-help": "Võid muuta selle kasutaja kuuluvust eri kasutajarühmadesse.\n* Märgitud ruut tähendab, et kasutaja kuulub sellesse rühma.\n* Märkimata ruut tähendab, et kasutaja ei kuulu sellesse rühma.\n* Märk * tähistab kasutajarühma, mida sa ei saa pärast lisamist eemaldada, või vastupidi.\n* Märk # tähistab kasutajarühma, millesse kuulumise aegumistähtaega saad ainult edasi lükata, sa ei saa tähtaega varasemale ajale tuua.", "userrights-reason": "Põhjus:", "userrights-no-interwiki": "Sul ei ole luba muuta kasutajaõigusi teistes vikides.", "userrights-nodatabase": "Andmebaasi $1 ei ole olemas või pole see kohalik.", "userrights-changeable-col": "Rühmad, mida sa saad muuta", "userrights-unchangeable-col": "Rühmad, mida sa ei saa muuta", + "userrights-expiry-current": "Aegumistähtaeg $1", + "userrights-expiry-none": "Ei aegu", + "userrights-expiry": "Aegumistähtaeg:", + "userrights-expiry-existing": "Kehtiv aegumistähtaeg: $2, kell $3", + "userrights-expiry-othertime": "Muu tähtaeg:", + "userrights-expiry-options": "1 päev:1 day,1 nädal:1 week,1 kuu:1 month,3 kuud:3 months,6 kuud:6 months,1 aasta:1 year", + "userrights-invalid-expiry": "Rühma \"$1\" aegumistähtaeg on vigane.", + "userrights-expiry-in-past": "Rühma \"$1\" aegumistähtaeg on minevikus.", + "userrights-cannot-shorten-expiry": "Rühma \"$1\" aegumistähtaega ei saa varasemale ajale tuua. Ainult kasutajad, kellel on õigus seda rühma lisada ja eemaldada, saavad aegumistähtaegu varsemale ajale tuua.", "userrights-conflict": "Kasutajaõiguste muutmise konflikt! Palun vaata oma muudatused üle ja kinnita need.", "group": "Rühm:", "group-user": "Kasutajad", @@ -1106,7 +1128,7 @@ "right-reupload-shared": "Asendada kohalikus vikis jagatud failivaramu faile", "right-upload_by_url": "Faile internetiaadressilt üles laadida", "right-purge": "Tühjendada lehekülje vahemälu kinnituseta", - "right-autoconfirmed": "Hoiduda IP-põhistest piirangumääradest", + "right-autoconfirmed": "Hoiduda IP-aadressi põhistest piirangumääradest", "right-bot": "Olla koheldud kui automaadistatud toimimisviis", "right-nominornewtalk": "Teha arutelulehekülgedel pisimuudatusi, ilma et lehekülg märgitaks uuena", "right-apihighlimits": "Kasutada API-päringutes kõrgemaid limiite", @@ -1161,6 +1183,7 @@ "right-applychangetags": "Rakendada [[Special:Tags|märgiseid]] enda muudatuste suhtes", "right-changetags": "Lisada ja eemaldada käsitsi rakendatavaid [[Special:Tags|märgiseid]] üksikute redaktsioonide ja logisissekannete juures", "right-deletechangetags": "Kustutada andmebaasist [[Special:Tags|märgiseid]]", + "grant-generic": "Volituse \"$1\" õiguste komplekt", "grant-group-page-interaction": "Interaktsioon lehekülgedega", "grant-group-file-interaction": "Interaktsioon meediafailidega", "grant-group-watchlist-interaction": "Interaktsioon sinu jälgimisloendiga", @@ -1168,6 +1191,7 @@ "grant-group-high-volume": "Suuremahuline tegevus", "grant-group-customization": "Kohandamine ja eelistused", "grant-group-administration": "Administraatori toimingud", + "grant-group-private-information": "Juurdepääs enda eraandmetele", "grant-group-other": "Mitmesugused toimingud", "grant-blockusers": "Kasutajate blokeerimine ja blokeeringute eemaldamine", "grant-createaccount": "Kontode loomine", @@ -1182,6 +1206,7 @@ "grant-highvolume": "Suuremahuline redigeerimine", "grant-oversight": "Kasutajate peitmine ja redaktsioonide varjamine", "grant-patrol": "Lehekülgede muudatuste kontroll", + "grant-privateinfo": "Juurdepääs erateabele", "grant-protect": "Lehekülgede kaitsmine ja kaitse eemaldamine", "grant-rollback": "Lehekülgede muudatuste tühistamine", "grant-sendemail": "Kasutajatele e-kirjade saatmine", @@ -1190,6 +1215,7 @@ "grant-basic": "Põhiõigused", "grant-viewdeleted": "Kustutatud failide ja lehekülgede vaatamine", "grant-viewmywatchlist": "Oma jälgimisloendi vaatamine", + "grant-viewrestrictedlogs": "Pääsupiiranguga andmete vaatamine", "newuserlogpage": "Konto loomise logi", "newuserlogpagetext": "Siin on logitud kasutajate registreerimine.", "rightslog": "Kasutajaõiguste logi", @@ -1213,7 +1239,9 @@ "action-writeapi": "kirjutamise rakendusliidest kasutada", "action-delete": "seda lehekülge kustutada", "action-deleterevision": "redaktsioone kustutada", + "action-deletelogentry": "logisissekandeid kustutada", "action-deletedhistory": "vaadata lehekülje kustutatud ajalugu", + "action-deletedtext": "vaadata kustutatud redaktsioonide teksti", "action-browsearchive": "kustutatud lehekülgi otsida", "action-undelete": "lehekülgi taastada", "action-suppressrevision": "peidetud redaktsioone vaadata ega taastada", @@ -1231,6 +1259,7 @@ "action-userrights-interwiki": "teiste vikide kasutajate õigusi muuta", "action-siteadmin": "andmebaasi lukustada või avada", "action-sendemail": "e-kirju saata", + "action-editmyoptions": "muuta oma eelistusi", "action-editmywatchlist": "oma jälgimisloendit redigeerida", "action-viewmywatchlist": "oma jälgimisloendit vaadata", "action-viewmyprivateinfo": "oma eraandmeid vaadata", @@ -1239,6 +1268,7 @@ "action-managechangetags": "märgiseid koostada ega (in)aktiveerida", "action-applychangetags": "rakendada märgiseid oma muudatuste suhtes", "action-changetags": "käsitsi rakendatavaid märgiseid üksikute redaktsioonide ega logisissekannete juures lisada ega eemaldada", + "action-deletechangetags": "märgiseid andmebaasist kustutada", "nchanges": "$1 {{PLURAL:$1|muudatus|muudatust}}", "enhancedrc-since-last-visit": "$1 {{PLURAL:$1|viimase vaatamise järel}}", "enhancedrc-history": "ajalugu", @@ -1362,6 +1392,8 @@ "file-thumbnail-no": "Failinimi algab eesliitega <strong>$1</strong>.\nSee paistab vähendatud suurusega pilt (''pisipilt'') olevat.\nKui sul on ka selle pildi täislahutusega versioon, laadi palun hoopis see üles, vastasel korral muuda palun faili nime.", "fileexists-forbidden": "Sellise nimega fail on juba olemas, seda ei saa üle kirjutada.\nPalun pöörduge tagasi ja laadige fail üles mõne teise nime all. [[File:$1|thumb|center|$1]]", "fileexists-shared-forbidden": "Samanimeline fail on juba olemas jagatud meediavaramus.\nKui soovid siiski oma faili üles laadida, siis palun mine tagasi ja kasuta teist failinime.\n[[File:$1|thumb|center|$1]]", + "fileexists-no-change": "Üleslaaditav fail on faili <strong>[[:$1]]</strong> praeguse versiooni üksühene duplikaat.", + "fileexists-duplicate-version": "Üleslaaditav fail on faili <strong>[[:$1]]</strong> {{PLURAL:$2|vanema versiooni|vanemate versioonide}} üksühene duplikaat.", "file-exists-duplicate": "See fail on {{PLURAL:$1|järgmise faili|järgmiste failide}} duplikaat:", "file-deleted-duplicate": "Selle failiga ([[:$1]]) identne fail on hiljuti kustutatud.\nVaata selle faili kustutamise ajalugu enne jätkamist.", "file-deleted-duplicate-notitle": "Selle failiga identne fail on varem kustutatud ja pealkiri on varjatud.\nEnne kui jätkad uuesti üleslaadimisega, peaksid paluma olukorda hinnata kellelgi, kes saab vaadata varjatud andmeid.", @@ -1377,6 +1409,7 @@ "uploaded-script-svg": "Üleslaaditud SVG-failist leiti skriptitav element \"$1\".", "uploaded-hostile-svg": "Üleslaaditud SVG-faili laadielemendist leiti ebaturvaline CSS.", "uploaded-event-handler-on-svg": "Sündmuse halduse atribuutide <code>$1=\"$2\"</code> seadmine pole SVG-failis lubatud.", + "uploaded-href-attribute-svg": "SVG-failis on lubatud href-atribuudiga viidata ainult sihtkohta skeemiga http:// või https://. Leiti <code><$1 $2=\"$3\"></code>.", "uploaded-href-unsafe-target-svg": "Üleslaaditud SVG-failist leiti href, mis viitab ebaturvalistele andmetele: URI sihtkoht <code><$1 $2=\"$3\"></code>.", "uploaded-animate-svg": "Üleslaaditud SVG-failist leiti silt \"animate\", mis võib href-i muuta, kasutades from-atribuuti <code><$1 $2=\"$3\"></code>.", "uploaded-setting-event-handler-svg": "Sündmuse halduse atribuutide seadmine on keelatud, üleslaaditud SVG-failist leiti <code><$1 $2=\"$3\"></code>.", @@ -1385,7 +1418,7 @@ "uploaded-setting-handler-svg": "SVG-failid, mis seavad atribuudile \"handler\" kaug-, andme- või skriptisihtkoha, on keelatud. Üleslaaditud SVG-failist leiti <code>$1=\"$2\"</code>.", "uploaded-remote-url-svg": "SVG-fail, mis kasutab mistahes laadiatribuudi seadmiseks kaug-URL-i, on keelatud. Üleslaaditud SVG-failist leiti <code>$1=\"$2\"</code>.", "uploaded-image-filter-svg": "Üleslaaditud SVG-failist leiti URL-iga pildifilter: <code><$1 $2=\"$3\"></code>.", - "uploadscriptednamespace": "See SVG-fail sisaldab keelatud nimeruumi \"$1\".", + "uploadscriptednamespace": "See SVG-fail sisaldab keelatud nimeruumi \"<nowiki>$1</nowiki>\".", "uploadinvalidxml": "Üleslaaditud failis sisalduvat XMLi ei õnnestunud liigendada.", "uploadvirus": "Fail sisaldab viirust! Täpsemalt: $1", "uploadjava": "See fail on ZIP-fail, milles on Java .class-fail.\nJava failide üleslaadimine on keelatud, kuna nende kaudu võidaks turvapiiranguist mööda minna.", @@ -1410,17 +1443,23 @@ "upload-too-many-redirects": "URL sisaldas liiga palju ümbersuunamisi", "upload-http-error": "HTTP-viga: $1", "upload-copy-upload-invalid-domain": "Sellest domeenist pole kopeerimise teel üleslaadimine võimalik.", + "upload-foreign-cant-upload": "Selles vikis pole häälestatud failide üleslaadimine päritud välisesse failihoidlasse.", + "upload-foreign-cant-load-config": "Ei õnnestunud laadida häälestust, mis puudutab failide üleslaadimist välisesse failihoidlasse.", + "upload-dialog-disabled": "Selle dialoogi kasutamine üleslaadimiseks on siin vikis keelatud.", "upload-dialog-title": "Faili üleslaadimine", "upload-dialog-button-cancel": "Loobu", + "upload-dialog-button-back": "Tagasi", "upload-dialog-button-done": "Valmis", "upload-dialog-button-save": "Salvesta", "upload-dialog-button-upload": "Laadi üles", "upload-form-label-infoform-title": "Üksikasjad", "upload-form-label-infoform-name": "Pealkiri", + "upload-form-label-infoform-name-tooltip": "Ainukordne ja kirjeldav pealkiri, millest saab failinimi. Võid kasutada lihtteksti ja tühikuid. Ära lisa nimele faililaiendit.", "upload-form-label-infoform-description": "Kirjeldus", + "upload-form-label-infoform-description-tooltip": "Anna teose kohta lühidalt edasi kõik märkimisväärne.\nFoto juures maini, mida on kujutatud, mis sündmuse või kohaga on tegu.", "upload-form-label-usage-title": "Kasutus", "upload-form-label-usage-filename": "Failinimi", - "upload-form-label-own-work": "See on minu enda töö", + "upload-form-label-own-work": "See on minu enda looming.", "upload-form-label-infoform-categories": "Kategooriad", "upload-form-label-infoform-date": "Kuupäev", "upload-form-label-own-work-message-generic-local": "Kinnitan, et seda faili üles laadides järgin saidi {{SITENAME}} kasutustingimusi ja litsentsipõhimõtteid.", @@ -1470,13 +1509,15 @@ "zip-wrong-format": "Valitud fail ei ole ZIP-fail.", "zip-bad": "See ZIP-fail on kas rikutud või muul põhjusel loetamatu.\nSelle turvalisust ei saa kontrollida.", "zip-unsupported": "See ZIP-fail kasutab ZIP-funktsioone, mida MediaWiki ei toeta.\nSelle turvalisust ei saa kontrollida.", - "uploadstash": "Üleslaaditud failide algne hoidla", + "uploadstash": "Üleslaadimise peithoidla", "uploadstash-summary": "See lehekülg pakub juurdepääsu failidele, mis on üles laaditud (või mida parasjagu üles laaditakse), kuid mis pole veel vikis avaldatud. Need failid on nähtavad üksnes kasutajale, kes need üles laadis.", - "uploadstash-clear": "Kustuta failid algsest hoidlast", - "uploadstash-nofiles": "Sul pole algses hoidlas faile.", + "uploadstash-clear": "Eemalda peitfailid", + "uploadstash-nofiles": "Sul pole peitfaile.", "uploadstash-badtoken": "Toiming ebaõnnestus, võib-olla redigeerimismandaadi aegumise tõttu. Palun proovi uuesti.", - "uploadstash-errclear": "Failide kustutamine ebaõnnestus.", + "uploadstash-errclear": "Failide eemaldamine ebaõnnestus.", "uploadstash-refresh": "Värskenda faililoendit", + "uploadstash-thumbnail": "vaata pisipilti", + "uploadstash-exception": "Üleslaaditavat faili ei õnnestunud peithoidlas talletada ($1): \"$2\".", "invalid-chunk-offset": "Tüki vigane nihe", "img-auth-accessdenied": "Juurdepääs keelatud", "img-auth-nopathinfo": "PATH_INFO puudub.\nSinu server pole seadistatud seda teavet edastama.\nSee võib olla CGI-põhine ja ei toeta img_auth-i.\nVaata lehekülge https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Image_Authorization.", @@ -1565,6 +1606,7 @@ "filerevert-submit": "Taasta", "filerevert-success": "Faili '''[[Media:$1|$1]]''' seisuga [$4 $3, $2 kasutusel olnud versioon] on taastatud.", "filerevert-badversion": "Ette antud ajatempliga kohalik versioon sellest failist puudub.", + "filerevert-identical": "Praegune versioon on valitud versiooniga juba identne.", "filedelete": "Kustuta $1", "filedelete-legend": "Faili kustutamine", "filedelete-intro": "Oled kustutamas faili '''[[Media:$1|$1]]''' ja kogu selle ajalugu.", @@ -1654,6 +1696,7 @@ "uncategorizedcategories": "Kategoriseerimata kategooriad", "uncategorizedimages": "Kategoriseerimata failid", "uncategorizedtemplates": "Kategoriseerimata mallid", + "uncategorized-categories-exceptionlist": " # Loetelu kategooriatest, mis ei peaks kajastuma leheküljel \"Eri:Kategoriseerimata kategooriad\". Üks kategooria rea kohta, rea alguses \"*\". Muu märgiga (sh tühemik) algavaid ridu eiratakse. Komentaari jaoks kasuta märki \"#\".", "unusedcategories": "Kasutamata kategooriad", "unusedimages": "Kasutamata failid", "wantedcategories": "Kõige oodatumad kategooriad", @@ -1824,6 +1867,7 @@ "trackingcategories-name": "Sõnumi nimi", "trackingcategories-desc": "Kategooriasse arvamise kriteeriumid", "restricted-displaytitle-ignored": "Eiratava kuvapealkirjaga leheküljed", + "restricted-displaytitle-ignored-desc": "Leheküljel on <code><nowiki>{{DISPLAYTITLE}}</nowiki></code>, mida eiratakse, sest see ei vasta lehekülje tegelikule pealkirjale.", "noindex-category-desc": "Robotid ei indekseeri lehekülge, sest sellel on võlusõna <code><nowiki>__NOINDEX__</nowiki></code> ja lehekülg on nimeruumis, kus see silt on lubatud.", "index-category-desc": "Leheküljel on <code><nowiki>__INDEX__</nowiki></code> ja lehekülg on nimeruumis, kus see silt on lubatud ning seetõttu indekseerivad robotid lehekülge seal, kus nad muidu seda ei teeks.", "post-expand-template-inclusion-category-desc": "Kõigi mallide hõrendamise järel on lehekülg suurem kui <code>$wgMaxArticleSize</code>, mistõttu jäid mõned mallid hõrendamata.", @@ -1859,7 +1903,7 @@ "emailccsubject": "Koopia sinu sõnumist kasutajale $1: $2", "emailsent": "E-kiri saadetud", "emailsenttext": "Sinu teade on e-kirjaga saadetud.", - "emailuserfooter": "Selle e-kirja saatis $1 {{GRAMMAR:elative|{{SITENAME}}}} kasutajale $2 toimingu \"{{int:emailuser}}\" abil. Sinu kiri saadetakse otse algse kirja saatjale, mistõttu saab ta sinu e-posti aadressi teada.", + "emailuserfooter": "Selle e-kirja saatis $1 {{GRAMMAR:elative|{{SITENAME}}}} kasutajale $2 toimingu \"{{int:emailuser}}\" abil. Kui vastad sellele e-kirjale, saadetakse sinu e-kiri otse algse kirja saatjale, mistõttu saab ta teada sinu e-posti aadressi.", "usermessage-summary": "Jätan süsteemiteate.", "usermessage-editor": "Süsteemiteadete edastaja", "watchlist": "Jälgimisloend", @@ -1950,12 +1994,15 @@ "rollbacklinkcount": "tühista {{PLURAL:$1|üks muudatus|$1 muudatust}}", "rollbacklinkcount-morethan": "tühista üle {{PLURAL:$1|ühe muudatuse|10 muudatuse}}", "rollbackfailed": "Muudatuste tühistamine ebaõnnestus", + "rollback-missingparam": "Päringus puuduvad nõutavad parameetrid.", + "rollback-missingrevision": "Redaktsiooni andmeid ei õnnestu laadida.", "cantrollback": "Ei saa muudatusi eemaldada, sest viimane kaastööline on artikli ainus autor.", "alreadyrolled": "Muudatust, mille tegi lehele [[:$1]] kasutaja [[User:$2|$2]] ([[User talk:$2|arutelu]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]]), ei saa tühistada, sest keegi teine on seda lehte vahepeal muutnud.\n\nLehte muutis viimasena [[User:$3|$3]] ([[User talk:$3|arutelu]]{{int:pipe-separator}}[[Special:Contributions/$3|{{int:contribslink}}]]).", "editcomment": "Redaktsiooni resümee oli: <em>$1</em>.", "revertpage": "Tühistati kasutaja [[Special:Contributions/$2|$2]] ([[User talk:$2|arutelu]]) tehtud muudatused ja pöörduti tagasi viimasele muudatusele, mille tegi [[User:$1|$1]].", "revertpage-nouser": "Tühistati peidetud kasutaja muudatused ja pöörduti tagasi viimasele muudatusele, mille tegi [[User:$1|$1]].", - "rollback-success": "Tühistati muudatused, mille tegi $1;\npöörduti tagasi viimasele muudatusele, mille tegi $2.", + "rollback-success": "Tühistati muudatused, mille tegi {{GENDER:$3|$1}};\npöörduti tagasi viimasele muudatusele, mille tegi {{GENDER:$4|$2}}.", + "rollback-success-notify": "Tühistatud kasutaja $1 tehtud muudatused;\npöördutud tagasi kasutaja $2 viimase redaktsiooni juurde. [$3 Näita muudatusi]", "sessionfailure-title": "Seansiviga", "sessionfailure": "Sinu sisselogimisseansiga näib probleem olevat.\nSee toiming on seansiärandamise vastase ettevaatusabinõuna tühistatud.\nMine tagasi eelmisele leheküljele ja taaslaadi see, seejärel proovi uuesti.", "changecontentmodel": "Lehekülje sisumudeli muutmine", @@ -1968,8 +2015,11 @@ "changecontentmodel-success-text": "Lehekülje [[:$1]] sisumudel on muudetud.", "changecontentmodel-cannot-convert": "Lehekülje [[:$1]] sisumudelit ei saa teisendada tüübiks $2.", "changecontentmodel-nodirectediting": "Sisumudel $1 ei võimalda otseredigeerimist.", + "changecontentmodel-emptymodels-title": "Sisumudeleid pole saadaval", + "changecontentmodel-emptymodels-text": "Lehekülje [[:$1]] sisu ei saa teisendada ühtegi tüüpi mudelisse.", "log-name-contentmodel": "Sisumudeli muutmislogi", - "log-description-contentmodel": "Lehekülje sisumudelite muutmisega seotud sündmused", + "log-description-contentmodel": "Siin on loetletud lehekülgede sisumudelite muudatused ning leheküljed, mis loodi vaikeväärtusest erineva sisumudeliga.", + "logentry-contentmodel-new": "$1 {{GENDER:$2|lõi}} lehekülje $3 vaikeväärtusest erineva sisumudeliga \"$5\"", "logentry-contentmodel-change": "$1 {{GENDER:$2|muutis}} lehekülje \"$3\" sisumudeli: \"$4\" → \"$5\"", "logentry-contentmodel-change-revertlink": "võta tagasi", "logentry-contentmodel-change-revert": "tagasi võetud", @@ -1991,7 +2041,7 @@ "protect-norestrictiontypes-title": "Kaitstamatu lehekülg", "protect-legend": "Kaitse kinnitamine", "protectcomment": "Põhjus:", - "protectexpiry": "Aegub:", + "protectexpiry": "Aegumistähtaeg:", "protect_expiry_invalid": "Sobimatu aegumise tähtaeg.", "protect_expiry_old": "Aegumise tähtaeg on minevikus.", "protect-unchain-permissions": "Ava edasised kaitsmissuvandid", @@ -2012,13 +2062,13 @@ "protect-cantedit": "Sa ei saa lehekülje kaitsetaset muuta, sest sul puudub lehekülje redigeerimise õigus.", "protect-othertime": "Muu aeg:", "protect-othertime-op": "muu aeg", - "protect-existing-expiry": "Kehtiv aegumisaeg: $2 kell $3", - "protect-existing-expiry-infinity": "Kehtiv aegumisaeg: igavene", + "protect-existing-expiry": "Kehtiv aegumistähtaeg: $2, kell $3", + "protect-existing-expiry-infinity": "Kehtiv aegumistähtaeg: tähtajatu", "protect-otherreason": "Muu või täiendav põhjus:", "protect-otherreason-op": "Muu põhjus", "protect-dropdown": "*Tavalised kaitsmise põhjused\n** Liigne vandalism\n** Liigne rämpspostitamine\n** Redigeerimissõja pidamine\n** Suure liiklusega lehekülg", "protect-edit-reasonlist": "Muudatuste eest kaitsmise põhjused", - "protect-expiry-options": "1 tund:1 hour,1 päev:1 day,1 nädal:1 week,2 nädalat: 2 weeks,1 kuu:1 month,3 kuud:3 months,6 kuud:6 months,1 aasta:1 year,igavene:infinite", + "protect-expiry-options": "1 tund:1 hour,1 päev:1 day,1 nädal:1 week,2 nädalat: 2 weeks,1 kuu:1 month,3 kuud:3 months,6 kuud:6 months,1 aasta:1 year,tähtajatu:infinite", "restriction-type": "Lubatud:", "restriction-level": "Kaitsmise tase:", "minimum-size": "Min suurus", @@ -2131,7 +2181,7 @@ "blockip-legend": "Kasutaja blokeerimine", "blockiptext": "See vorm on kindla IP-aadressi või kasutajanime kirjutamisõiguste blokeerimiseks.\nSeda tohib teha ainult vandalismi vältimiseks ja kooskõlas [[{{MediaWiki:Policy-url}}|{{GRAMMAR:genitive|{{SITENAME}}}} sisekorraga]].\nTäida ka põhjuse väli, näiteks viidates lehekülgedele, mis rikuti.\nIP-aadresside vahemikke saad blokeerida [https://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing CIDR]-süntaksi abil; suurim lubatud vahemik on IPv4 jaoks /$1 ja IPv6 jaoks /$2.", "ipaddressorusername": "IP-aadress või kasutajanimi:", - "ipbexpiry": "Kehtivus:", + "ipbexpiry": "Aegumistähtaeg:", "ipbreason": "Põhjus:", "ipbreason-dropdown": "*Tavalised blokeerimise põhjused\n** Valeandmete lisamine\n** Lehekülgedelt sisu kustutamine\n** Välislinkide rämpspostitus\n** Sodimine\n** Hirmutav käitumine/ahistamine\n** Mitme konto väärkasutus\n** Lubamatu kasutajanimi", "ipb-hardblock": "Keela sellelt IP-aadressilt sisseloginud kasutajatel redigeerida", @@ -2181,7 +2231,7 @@ "ipblocklist-submit": "Otsi", "ipblocklist-localblock": "Kohalik blokeering", "ipblocklist-otherblocks": "{{PLURAL:$1|Muu blokeering|Muud blokeeringud}}", - "infiniteblock": "igavene", + "infiniteblock": "tähtajatu", "expiringblock": "aegumistähtaeg $1, $2", "anononlyblock": "ainult nimetuna", "noautoblockblock": "IP-aadressi ei blokita automaatselt", @@ -2227,6 +2277,7 @@ "proxyblockreason": "Sinu IP-aadress on blokeeritud, sest see on avatud proksi. Palun võta ühendust oma internetiteenuse pakkujaga või tehnilise toega ja teata neile sellest probleemist.", "sorbsreason": "Sinu IP-aadress on {{GRAMMAR:genitive|{{SITENAME}}}} kasutatavas DNS-põhises mustas nimekirjas märgitud kui avatud proksi.", "sorbs_create_account_reason": "Sinu IP-aadress on {{GRAMMAR:genitive|{{SITENAME}}}} kasutatavas DNS-põhises mustas nimekirjas märgitud kui avatud proksi.\nSa ei saa kasutajakontot luua.", + "softblockrangesreason": "Sinu IP-aadressilt ($1) pole anonüümne kaastöö lubatud. Palun logi sisse.", "xffblockreason": "X-Forwarded-Fori päises esinev IP-aadress, mis kuulub kas sulle või proksiserverile, mida kasutad, on blokeeritud. Blokeerimise algne põhjus oli: $1", "cant-see-hidden-user": "Kasutaja, keda blokeerida üritad, on juba blokeeritud ning peidetud. Kuna sul pole õigust blokeerida kasutajanimesid, peites need avalikkuse eest, ei saa sa selle kasutaja blokeeringut vaadata ega muuta.", "ipbblocked": "Sa ei saa teisi blokeerida ega nende blokeeringuid eemaldada, sest oled ise blokeeritud.", @@ -2245,6 +2296,7 @@ "lockdbsuccesstext": "Andmebaas on nüüd lukustatud.<br />\nKui sinu hooldustöö on läbi, ära unusta [[Special:UnlockDB|kirjutuspääsu taastada]]!", "unlockdbsuccesstext": "Andmebaasi kirjutuspääs on taastatud.", "lockfilenotwritable": "Andmebaasi lukufail ei ole kirjutatav.\nAndmebaasi lukustamiseks ja avamiseks peavad veebiserveril olema sellele kirjutusõigused.", + "databaselocked": "Andmebaas on juba lukustatud.", "databasenotlocked": "Andmebaas ei ole lukustatud.", "lockedbyandtime": "(lukustas $1; $2, kell $3)", "move-page": "Lehekülje \"$1\" teisaldamine", @@ -2261,6 +2313,8 @@ "cant-move-to-user-page": "Sul ei ole õigust teisaldada lehekülge kasutajaleheks (ei käi kasutaja alamlehe kohta).", "cant-move-category-page": "Sul pole õigust kategoorialehekülgi teisaldada.", "cant-move-to-category-page": "Sul pole õigust teisaldada lehekülge kategoorialeheküljele.", + "cant-move-subpages": "Sul pole lubatud alamlehekülgi teisaldada.", + "namespace-nosubpages": "Nimeruumis \"$1\" pole alamleheküljed lubatud.", "newtitle": "Uus pealkiri:", "move-watch": "Jälgi lähte- ja sihtlehekülge", "movepagebtn": "Teisalda lehekülg", @@ -2281,6 +2335,7 @@ "movelogpagetext": "See logi sisaldab infot lehekülgede teisaldamistest.", "movesubpage": "{{PLURAL:$1|Alamlehekülg|Alamleheküljed}}", "movesubpagetext": "Selle lehekülje $1 {{PLURAL:$1|alamlehekülg|alamlehekülge}} on kuvatud allpool.", + "movesubpagetalktext": "Seonduval aruteluleheküljel on $1 allnäidatud {{PLURAL:$1|alamlehekülg|alamlehekülge}}.", "movenosubpage": "Sellel leheküljel pole alamlehekülgi.", "movereason": "Põhjus:", "revertmove": "taasta", @@ -2514,6 +2569,7 @@ "pageinfo-length": "Lehekülje pikkus (baitides)", "pageinfo-article-id": "Lehekülje identifikaator", "pageinfo-language": "Lehekülje sisu keel", + "pageinfo-language-change": "muuda", "pageinfo-content-model": "Lehekülje sisumudel", "pageinfo-content-model-change": "muuda", "pageinfo-robot-policy": "Robotindekseering", @@ -2569,6 +2625,7 @@ "log-show-hide-patrol": "$1 kontrollimislogi", "log-show-hide-tag": "$1 märgiste logi", "confirm-markpatrolled-button": "Sobib", + "confirm-markpatrolled-top": "Kas märgid lehekülje $2 redaktsiooni $3 kontrollituks?", "deletedrevision": "Kustutatud vanem versioon $1", "filedeleteerror-short": "Tõrge faili kustutamisel: $1", "filedeleteerror-long": "Faili kustutamisel esines tõrkeid:\n\n$1", @@ -2827,6 +2884,7 @@ "exif-photometricinterpretation-0": "Mustvalge (valge on 0)", "exif-photometricinterpretation-1": "Mustvalge (must on 0)", "exif-photometricinterpretation-3": "Palett", + "exif-photometricinterpretation-4": "Läbipaistvusmask", "exif-photometricinterpretation-5": "Eraldatud (arvatavasti CMYK)", "exif-photometricinterpretation-9": "CIE L*a*b* (ICC kodeering)", "exif-photometricinterpretation-10": "CIE L*a*b* (ITU kodeering)", @@ -3006,6 +3064,10 @@ "confirmemail_body_set": "Keegi IP-aadressilt $1, arvatavasti sina ise, on {{GRAMMAR:genitive|{{SITENAME}}}} konto \"$2\" e-posti aadressiks määranud selle aadressi.\n\nKinnitamaks, et see konto kuulub tõesti sulle ja et aktiveerida e-posti teenused, ava võrgulehitsejas järgmine link:\n\n$3\n\nKui konto *ei* kuulu sulle, kasuta e-posti aadressi kinnituse tühistamiseks järgmist linki:\n\n$5\n\nSelle kinnituskoodi aegumistähtaeg on $4.", "confirmemail_invalidated": "E-posti aadressi kinnitamine tühistati", "invalidateemail": "E-posti aadressi kinnituse tühistamine", + "notificationemail_subject_changed": "{{GRAMMAR:inessive|{{SITENAME}}}} registreeritud e-posti aadress on muudetud", + "notificationemail_subject_removed": "{{GRAMMAR:inessive|{{SITENAME}}}} registreeritud e-posti aadress on eemaldatud", + "notificationemail_body_changed": "Keegi IP-aadressilt $1, arvatavasti sina ise,\nmuutis {{GRAMMAR:inessive|{{SITENAME}}}} konto \"$2\" e-posti aadressiks \"$3\".\n\nKui see ei olnud sina, siis võta viivitamata ühendust saidi administraatoriga.", + "notificationemail_body_removed": "Keegi IP-aadressilt $1, arvatavasti sina ise,\neemaldas {{GRAMMAR:inessive|{{SITENAME}}}} konto \"$2\" e-posti aadressi.\n\nKui see ei olnud sina, siis võta viivitamata ühendust saidi administraatoriga.", "scarytranscludedisabled": "[Vikidevaheline mallina kasutamine on keelatud]", "scarytranscludefailed": "[Malli $1 hankimine ebaõnnestus]", "scarytranscludefailed-httpstatus": "[Malli $1 hankimine ebaõnnestus: HTTP $2]", @@ -3022,6 +3084,7 @@ "confirm-unwatch-button": "Sobib", "confirm-unwatch-top": "Kas eemaldad selle lehekülje oma jälgimisloendist?", "confirm-rollback-button": "Sobib", + "confirm-rollback-top": "Kas tühistad sellel leheküljel tehtud muudatused?", "quotation-marks": "\"$1\"", "imgmultipageprev": "← eelmine lehekülg", "imgmultipagenext": "järgmine lehekülg →", @@ -3084,8 +3147,10 @@ "watchlisttools-edit": "vaata ja redigeeri jälgimisloendit", "watchlisttools-raw": "redigeeri jälgimisloendi toorandmeid", "signature": "[[{{ns:user}}:$1|$2]] ([[{{ns:user_talk}}:$1|arutelu]])", + "timezone-local": "Kohalik", "duplicate-defaultsort": "'''Hoiatus:''' Järjestamisvõti \"$2\" tühistab eespool oleva järjestamisvõtme \"$1\".", "duplicate-displaytitle": "<strong>Hoiatus:</strong> Kuvatava pealkirjaga \"$2\" kirjutatakse üle varasem kuvatav pealkiri \"$1\".", + "restricted-displaytitle": "<strong>Hoiatus:</strong> Kuvapealkirja \"$1\" eirati, sest see ei vasta lehekülje tegelikule pealkirjale.", "invalid-indicator-name": "<strong>Tõrge:</strong> Lehekülje olekunäidu juures ei tohi atribuudi <code>name</code> väärtus puududa.", "version": "Versioon", "version-extensions": "Paigaldatud lisad", @@ -3143,6 +3208,7 @@ "redirect-page": "Lehekülje identifikaator", "redirect-revision": "Lehekülje redaktsioon", "redirect-file": "Failinimi", + "redirect-logid": "Logi identifikaator", "redirect-not-exists": "Väärtust ei leitud", "fileduplicatesearch": "Faili duplikaatide otsimine", "fileduplicatesearch-summary": "Otsi duplikaatfaile nende räsiväärtuse järgi.", @@ -3220,6 +3286,7 @@ "tags-delete-not-found": "Märgist \"$1\" pole.", "tags-delete-too-many-uses": "Märgist \"$1\" on rakendatud rohkem kui {{PLURAL:$2|ühe|$2}} redaktsiooni juures, mistõttu ei saa seda kustutada.", "tags-delete-warnings-after-delete": "Märgis \"$1\" on kustutatud, kuid väljastati {{PLURAL:$2|järgmine hoiatus|järgmised hoiatused}}:", + "tags-delete-no-permission": "Sul pole lubatud muudatusmärgiseid kustutada.", "tags-activate-title": "Märgise lubamine", "tags-activate-question": "Siinkohal lubad märgise \"$1\".", "tags-activate-reason": "Põhjus:", @@ -3295,6 +3362,18 @@ "htmlform-cloner-create": "Lisa veel", "htmlform-cloner-delete": "Eemalda", "htmlform-cloner-required": "Vähemalt üks väärtus on nõutav.", + "htmlform-date-placeholder": "AAAA-KK-PP", + "htmlform-time-placeholder": "TT:MM:SS", + "htmlform-datetime-placeholder": "AAAA-KK-PP TT:MM:SS", + "htmlform-date-invalid": "Väärtus, mille ette andsid, pole äratuntav kuupäev. Proovi kasutada vormingut AAAA-KK-PP.", + "htmlform-time-invalid": "Väärtus, mille ette andsid, pole äratuntav kellaaeg. Proovi kasutada vormingut TT:MM:SS.", + "htmlform-datetime-invalid": "Väärtus, mille ette andsid, pole äratuntav kuupäev ja kellaaeg. Proovi kasutada vormingut AAAA-KK-PP TT:MM:SS.", + "htmlform-date-toolow": "Väärtus, mille ette andsid, on enne varaseimat lubatud kuupäeva $1.", + "htmlform-date-toohigh": "Väärtus, mille ette andsid, on pärast hiliseimat lubatud kuupäeva $1.", + "htmlform-time-toolow": "Väärtus, mille ette andsid, on enne varaseimat lubatud kellaaega $1.", + "htmlform-time-toohigh": "Väärtus, mille ette andsid, on pärast hiliseimat lubatud kellaaega $1.", + "htmlform-datetime-toolow": "Väärtus, mille ette andsid, on enne varaseimat lubatud kuupäeva ja kellaaega $1.", + "htmlform-datetime-toohigh": "Väärtus, mille ette andsid, on pärast hiliseimat lubatud kuupäeva ja kellaaega $1.", "htmlform-title-badnamespace": "[[:$1]] pole nimeruumis \"{{ns:$2}}\".", "htmlform-title-not-creatable": "Pealkirja \"$1\" all ei saa lehekülge alustada.", "htmlform-title-not-exists": "Lehekülge $1 pole olemas.", @@ -3368,7 +3447,7 @@ "logentry-tag-update-revision": "$1 {{GENDER:$2|uuendas}} leheküljel \"$3\" redaktsiooni $4 märgiseid ({{PLURAL:$7|lisatud}} $6; {{PLURAL:$9|eemaldatud}} $8)", "logentry-tag-update-logentry": "$1 {{GENDER:$2|uuendas}} leheküljel \"$3\" logisissekande $5 märgiseid ({{PLURAL:$7|lisatud}} $6; {{PLURAL:$9|eemaldatud}} $8)", "rightsnone": "(puudub)", - "revdelete-summary": "resümee", + "rightslogentry-temporary-group": "$1 (ajutine, tähtaeg $2)", "feedback-adding": "Tagasiside lisamine leheküljele...", "feedback-back": "Tagasi", "feedback-bugcheck": "Hästi! Kontrolli vaid, ega tegu pole juba [$1 teada oleva veaga].", @@ -3393,52 +3472,12 @@ "feedback-useragent": "Kasutajaagent:", "searchsuggest-search": "Otsi {{GRAMMAR:elative|{{SITENAME}}}}", "searchsuggest-containing": "sisalduv...", - "api-error-badaccess-groups": "Sul pole selles vikis üleslaadimisõigust.", "api-error-badtoken": "Sisemine tõrge: Sobimatu nimi.", - "api-error-copyuploaddisabled": "URLi kaudu üleslaadimine on selles serveris keelatud.", - "api-error-duplicate": "Siin on {{PLURAL:$1|teine samasisuline fail|mõned teised samasisulised failid}} juba olemas.", - "api-error-duplicate-archive": "Siin {{PLURAL:$1|on teine samasisuline fail|olid mõned teised samasisulised failid}} juba olemas, aga {{PLURAL:$1|see|need}} kustutati.", - "api-error-empty-file": "Üleslaaditav fail on tühi.", "api-error-emptypage": "Uute tühjade lehekülgede loomine pole lubatud.", - "api-error-fetchfileerror": "Sisemine tõrge: Midagi läks faili kättesaamisel valesti.", - "api-error-fileexists-forbidden": "Fail nimega \"$1\" on juba olemas ja seda ei saa üle kirjutada.", - "api-error-fileexists-shared-forbidden": "Fail nimega \"$1\" on jagatud failivaramus juba olemas ja seda ei saa üle kirjutada.", - "api-error-file-too-large": "Üleslaaditav fail on liiga suur.", - "api-error-filename-tooshort": "Failinimi on liiga lühike.", - "api-error-filetype-banned": "Antud failitüüp on keelatud.", - "api-error-filetype-banned-type": "$1 pole lubatud {{PLURAL:$4|failitüüp|failitüübid}}. Lubatud {{PLURAL:$3|failitüüp|failitüübid}} on $2.", - "api-error-filetype-missing": "Failinime tagant puudub laiend.", - "api-error-hookaborted": "Tarkvaralisa katkestas muudatuse tegemise.", - "api-error-http": "Sisetõrge: Serveriga pole võimalik ühendust luua.", - "api-error-illegal-filename": "Failinimi pole lubatud.", - "api-error-internal-error": "Sisetõrge: Sinu faili vikisse üleslaadimise juures läks midagi valesti.", - "api-error-invalid-file-key": "Sisetõrge: Faili ei leitud ajutisest mälust.", - "api-error-missingparam": "Sisetõrge: Päringust puudub mõni parameeter.", - "api-error-missingresult": "Sisetõrge: Ei õnnestu kindlaks teha, kas kopeerimine õnnestus.", - "api-error-mustbeloggedin": "Failide üleslaadimiseks pead sisse logima.", - "api-error-mustbeposted": "Sisetõrge: Päring tuleb sooritada, kasutades HTTP POST-meetodit.", - "api-error-noimageinfo": "Üleslaadimine õnnestus, aga server ei andnud faili kohta mingit teavet.", - "api-error-nomodule": "Sisetõrge: Üleslaadimismoodul on määramata.", - "api-error-ok-but-empty": "Sisetõrge: Server ei vasta.", - "api-error-overwrite": "Olemasolevate failide ülekirjutamine pole lubatud.", - "api-error-stashfailed": "Sisetõrge: Serveril ei õnnestunud ajutist faili talletada.", "api-error-publishfailed": "Sisetõrge: Serveril ebaõnnestus ajutise faili avaldamine.", - "api-error-stasherror": "Selle faili hoidlasse üleslaadimisel ilmnes tõrge.", - "api-error-stashedfilenotfound": "Algses hoidlas talletatud faili ei leitud, kui seda sealt üles püüti laadida.", - "api-error-stashpathinvalid": "Failitee, kus algse hoidla fail pidanuks leiduma, oli vigane.", - "api-error-stashfilestorage": "Faili algsesse hoidlasse talletamisel esines tõrge.", - "api-error-stashzerolength": "Server ei saanud faili algses hoidlas talletada, sest fail on tühi.", - "api-error-stashnotloggedin": "Pead olema sisse logitud, et salvestada faile üleslaadimise algsesse hoidlasse.", - "api-error-stashwrongowner": "Fail, mille juurde algses hoidlas üritasid pääseda, ei kuulu sulle.", - "api-error-stashnosuchfilekey": "Failivõtit, mille juurde algses hoidlas üritasid pääseda, pole olemas.", - "api-error-timeout": "Server ei vastanud oodatud aja sees.", - "api-error-unclassified": "Ilmnes teadmata tõrge.", - "api-error-unknown-code": "Teadmata tõrge: \"$1\"", - "api-error-unknown-error": "Sisetõrge: Sellal kui sinu faili üritati üles laadida, läks midagi valesti.", + "api-error-stashfailed": "Sisetõrge: Serveril ei õnnestunud ajutist faili talletada.", "api-error-unknown-warning": "Teadmata hoiatus: $1", "api-error-unknownerror": "Tundmatu tõrge: \"$1\".", - "api-error-uploaddisabled": "Üleslaadimine on selles vikis keelatud.", - "api-error-verification-error": "See fail võib olla rikutud või vale laiendiga.", "duration-seconds": "$1 {{PLURAL:$1|sekund|sekundit}}", "duration-minutes": "$1 {{PLURAL:$1|minut|minutit}}", "duration-hours": "$1 {{PLURAL:$1|tund|tundi}}", @@ -3477,6 +3516,7 @@ "expand_templates_preview": "Eelvaade", "expand_templates_preview_fail_html": "<em>Kuna {{GRAMMAR:inessive|{{SITENAME}}}} on toor-HTML lubatud ja osa seansiandmeid läks kaotsi, siis on JavaScripti põhiste rünnakute vastase abinõuna eelvaade peidetud.</em>\n\n<strong>Kui see eelvaatekatse on õigustatud, proovi palun uuesti.</strong>\nKui see ikka ei tööta, proovi [[Special:UserLogout|logida välja]] ja tagasi sisse ning kontrolli, kas brauser lubab sellest võrgukohast küpsiseid.", "expand_templates_preview_fail_html_anon": "<em>Kuna {{GRAMMAR:inessive|{{SITENAME}}}} on toor-HTML lubatud ja sa pole sisse logitud, siis on JavaScripti põhiste rünnakute vastase abinõuna eelvaade peidetud.</em>\n\n<strong>Kui see eelvaatekatse on õigustatud, [[Special:UserLogin|logi]] palun sisse ja proovi uuesti.</strong>", + "expand_templates_input_missing": "Sul tuleb tekst sisestada.", "pagelanguage": "Lehekülje keele valik", "pagelang-name": "Lehekülg", "pagelang-language": "Keel", @@ -3548,11 +3588,16 @@ "mw-widgets-dateinput-no-date": "Kuupäev valimata", "mw-widgets-dateinput-placeholder-day": "AAAA-KK-PP", "mw-widgets-dateinput-placeholder-month": "AAAA-KK", + "mw-widgets-mediasearch-input-placeholder": "Otsi meediafaile", + "mw-widgets-mediasearch-noresults": "Tulemusi ei leitud.", "mw-widgets-titleinput-description-new-page": "lehekülge pole veel", "mw-widgets-titleinput-description-redirect": "ümbersuunamine leheküljele \"$1\"", "mw-widgets-categoryselector-add-category-placeholder": "Lisa kategooria...", + "mw-widgets-usersmultiselect-placeholder": "Lisa veel...", + "sessionmanager-tie": "Ei saa ühitada mitut päringu autentimise tüüpi: $1.", "sessionprovider-generic": "klassi $1 seansse", - "sessionprovider-mediawiki-session-cookiesessionprovider": "küpsisepõhiseid seansse", + "sessionprovider-mediawiki-session-cookiesessionprovider": "küpsisepõhised seansid", + "sessionprovider-nocookies": "Võimalik, et küpsised on keelatud. Veendu, et sul on küpsised lubatud ja alusta uuesti.", "randomrootpage": "Juhuslik juurlehekülg", "log-action-filter-block": "Blokeeringu tüüp:", "log-action-filter-contentmodel": "Sisumudeli muudatuse tüüp:", @@ -3571,7 +3616,7 @@ "log-action-filter-block-reblock": "Blokeeringu muutmine", "log-action-filter-block-unblock": "Blokeeringu tühistamine", "log-action-filter-contentmodel-change": "Sisumudeli muudatus", - "log-action-filter-contentmodel-new": "Ebastandardse sisumudeliga lehekülje loomine", + "log-action-filter-contentmodel-new": "Vaikeväärtusest erineva sisumudeliga lehekülje loomine", "log-action-filter-delete-delete": "Lehekülje kustutamine", "log-action-filter-delete-delete_redir": "Ümbersuunamise ülekirjutamine", "log-action-filter-delete-restore": "Lehekülje taastamine", @@ -3618,5 +3663,5 @@ "userjsispublic": "Pea silmas, et JavaScripti alamleheküljed ei tohiks sisaldada konfidentsiaalseid andmeid, kuna neid näevad teised kasutajad.", "restrictionsfield-badip": "Vigane IP-aadress või -aadressivahemik: $1", "restrictionsfield-label": "Lubatud IP-aadressivahemikud:", - "restrictionsfield-help": "Üks IP-aadress või CIDR-vahemik rea kohta. Et lubada kõik, kasuta süntaksit <br><code>0.0.0.0/0</code><br><code>::/0</code>" + "restrictionsfield-help": "Üks IP-aadress või CIDR-vahemik rea kohta. Et lubada kõik, kasuta järgmist süntaksit:<pre>0.0.0.0/0\n::/0</pre>" } diff --git a/languages/i18n/eu.json b/languages/i18n/eu.json index 5269c65f6f..b0b5e1f38c 100644 --- a/languages/i18n/eu.json +++ b/languages/i18n/eu.json @@ -47,7 +47,7 @@ "tog-watchdeletion": "Ezabatzen ditudan orrialdeak eta fitxategiak nire jarraipen-zerrendara gehitu", "tog-watchuploads": "Gehitu igotzen ditudan fitxategiak nire jarraipen zerrendara", "tog-watchrollback": "Nire jarraipen zerrendan rollbacka egin dudan orrialdeak erakutsi", - "tog-minordefault": "Lehenetsi bezala aldaketa txiki bezala markatu guztiak", + "tog-minordefault": "Aukera lehenetsitzat, markatu aldaketa guztiak txikitzat", "tog-previewontop": "Aurrebista aldaketa koadroaren aurretik erakutsi", "tog-previewonfirst": "Lehen aldaketan aurrebista erakutsi", "tog-enotifwatchlistpages": "Bidal iezadazue e-posta bat, jarraitzen ari naizen orrialde edo fitxategi bat aldatzen denean", @@ -149,7 +149,7 @@ "subcategories": "Azpikategoriak", "category-media-header": "Media \"$1\" kategorian", "category-empty": "''Kategoria honek ez dauka artikulurik uneotan.''", - "hidden-categories": "{{PLURAL:$1|Izkutuko kategoria|Izkutuko kategoriak}}", + "hidden-categories": "{{PLURAL:$1|Ezkutuko kategoria|Ezkutuko kategoriak}}", "hidden-category-category": "Kategoria ezkutuak", "category-subcat-count": "{{PLURAL:$2|Kategoria honek beste honako azpikategoria baino ez du.|Kategoria honek honako {{PLURAL:$1|azpikategoria du|$1 azpikategoriak ditu}}, guztira dauden $2tik.}}", "category-subcat-count-limited": "Kategoria honek {{PLURAL:$1|azpikategoria hau du|$1 azpikategoria hauek ditu}}.", @@ -193,6 +193,7 @@ "searcharticle": "Joan", "history": "Orriaren historia", "history_short": "Historia", + "history_small": "historia", "updatedmarker": "nire azkeneko bisitaz geroztik eguneratuta", "printableversion": "Inprimatzeko bertsioa", "permalink": "Lotura finkoa", @@ -225,6 +226,7 @@ "views": "Ikustaldiak", "toolbox": "Tresnak", "tool-link-userrights": "Erabiltzaile {{GENDER:$1|taldea}} aldatu", + "tool-link-userrights-readonly": "{{GENDER:$1|Erabiltzailearen}} taldeak ikusi", "tool-link-emailuser": "{{GENDER:$1|Erabiltzale}} honi e-posta bidali", "userpage": "Lankide orrialdea ikusi", "projectpage": "Proiektuaren orrialdea ikusi", @@ -908,8 +910,6 @@ "saveprefs": "Gorde", "restoreprefs": "Konfigurazio lehenetsi guztiak berrezarri (sekzio guztietan)", "prefs-editing": "Aldatzen", - "rows": "Lerroak:", - "columns": "Zutabeak:", "searchresultshead": "Bilaketa", "stub-threshold": "<a href=\"#\" class=\"stub\">stub link</a> formaturako atalasea ($1):", "stub-threshold-sample-link": "adibidea", @@ -920,7 +920,7 @@ "prefs-help-recentchangescount": "Honek azken aldaketak, orrialdeen historiak eta logak barne-biltzen ditu.", "prefs-help-watchlist-token2": "Hau da zure jarraipen zerrendako web jarioaren giltza sekretua.\nEzagutzen duen orok zure jarraipen zerrenda irakurtzeko aukera izango du, ez partekatu.\n[[Special:ResetTokens|Klik egin hemen berrezarri behar baduzu]]", "savedprefs": "Zure hobespenak gorde egin dira.", - "savedrights": "{{GENDER:$1|$1}} erabiltzailearen eskubideak gorde dira.", + "savedrights": "{{GENDER:$1|$1}} erabiltzailearen taldeak gorde dira.", "timezonelegend": "Ordu-eremua:", "localtime": "Ordu lokala:", "timezoneuseserverdefault": "Erabili lehenetsitako wikia ($1)", @@ -991,11 +991,11 @@ "userrights-user-editname": "Erabiltzaile izena idatzi:", "editusergroup": "Erabiltzaile taldeak kargatu", "editinguser": "<strong>[[User:$1|$1]]</strong> $2 {{GENDER:$1|lankidearen}} erabiltzaile-eskubideak aldatzen", - "userrights-editusergroup": "Erabiltzaile taldeak editatu", + "userrights-editusergroup": "{{GENDER:$1|Erabiltzaile}} taldeak editatu", "saveusergroups": "Erabiltzaile {{GENDER:$1|taldeak}} gorde", "userrights-groupsmember": "Ondorengo talde honetako kide da:", "userrights-groupsmember-auto": "Honen kide inplizitua:", - "userrights-groups-help": "Lankide hau zein taldetakoa den alda dezakezu:\n* Laukia hautatuta baldin badago, esan nahi du lankidea talde horretakoa dela.\n* Laukia hautatu gabe baldin badago, esan nahi du lankidea talde horretakoa ez dela.\n* Izartxoak (*) erakusten du ezin duzula talde horretatik kendu, taldera gehitu eta gero; edo alderantziz, ezin duzula talde horretara gehitu, taldetik kendu eta gero.", + "userrights-groups-help": "Lankide hau zein taldetakoa den alda dezakezu:\n* Laukia hautatuta baldin badago, esan nahi du lankidea talde horretakoa dela.\n* Laukia hautatu gabe baldin badago, esan nahi du lankidea talde horretakoa ez dela.\n* Izartxoak (*) erakusten du ezin duzula talde horretatik kendu, taldera gehitu eta gero; edo alderantziz, ezin duzula talde horretara gehitu, taldetik kendu eta gero.\n* Traolak (#) erakusten du taldearen iraungipen data luzatu egin dezakezula soilik; ez ordea aurreratu.", "userrights-reason": "Arrazoia:", "userrights-no-interwiki": "Ez duzu beste wikietan erabiltzaile eskumenak aldatzeko baimenik.", "userrights-nodatabase": "$1 datubasea ez da existitzen edo ez dago lokalki.", @@ -1162,7 +1162,11 @@ "recentchanges-legend-heading": "<strong>Azalpenak:</strong>", "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (ikus, gainera, [[Special:NewPages|orri berrien zerrenda]])", "recentchanges-submit": "Erakutsi", - "rcnotefrom": "Jarraian azaltzen diren aldaketak data honetatik aurrerakoak dira: <b>$2</b> (gehienez <b>$1</b> erakusten dira).", + "rcfilters-filterlist-title": "Iragazkiak", + "rcfilters-filtergroup-authorship": "Edizioaren egiletza", + "rcfilters-filter-bots-label": "Bot", + "rcfilters-filter-minor-label": "Aldaketa txikiak", + "rcnotefrom": "Jarraian azaltzen diren {{PLURAL:$5|aldaketak}} data honetatik aurrerakoak dira: <strong>$3,$4</strong> (gehienez <b>$1</b> erakusten dira).", "rclistfrom": "Erakutsi $3 $2 ondorengo aldaketa berriak", "rcshowhideminor": "$1 aldaketa txikiak", "rcshowhideminor-show": "Erakutsi", @@ -1588,6 +1592,8 @@ "apisandbox-dynamic-parameters-add-placeholder": "Parametroaren izena", "apisandbox-dynamic-error-exists": "$1 parametro izena dagoeneko existitzen da", "apisandbox-results": "Emaitzak", + "apisandbox-continue": "Jarraitu", + "apisandbox-continue-clear": "Garbitu", "booksources": "Iturri liburuak", "booksources-search-legend": "Liburuen bilaketa", "booksources-search": "Bilatu", @@ -1689,7 +1695,7 @@ "emailccsubject": "Zure mezuaren kopia $1(r)i: $2", "emailsent": "Mezua bidali egin da", "emailsenttext": "Zure e-posta mezua bidali egin da.", - "emailuserfooter": "E-posta hau $1(e)k {{GENDER:$1|bidali}} dio {{GENDER:$2|$2}}(r)i {{SITENAME}}ko \"{{int:emailuser}}\" funtzioa erabiliz.", + "emailuserfooter": "E-posta hau $1(e)k {{GENDER:$1|bidali}} dio {{GENDER:$2|$2}}(r)i {{SITENAME}}ko \"{{int:emailuser}}\" funtzioa erabiliz. Email honi erantzuten {{GENDER:$2|badiozu}}, zure emaila zuzenean jatorrizko {{GENDER:$1|igorleari}} bidaliko zaio eta {{GENDER:$1|harentzat}} {{GENDER:$2|zure}} email helbidea ikusgai geratuko da.", "usermessage-summary": "Sistema mezua uzten.", "usermessage-editor": "Sistemako mezularia", "watchlist": "Jarraipen zerrenda", @@ -1702,7 +1708,7 @@ "addedwatchtext": "\"[[:$1]]\" eta haren eztabaida orria zure [[Special:Watchlist|jarraipen zerrendara]] erantsi da. \n\nOrri honetan aurrerantzean egindako aldaketak zerrenda horretan agertuko dira.", "addedwatchtext-short": "$1 orria zure jarraipen zerrendara gehitu da.", "removewatch": "Kendu zure jarraipen zerrendatik", - "removedwatchtext": "\"[[:$1]]\" orrialdea zure [[Special:Watchlist|jarraipen zerrendatik]] kendu da.", + "removedwatchtext": "\"[[:$1]]\" eta haren eztabaida orrialdea zure [[Special:Watchlist|jarraipen zerrendatik]] kendu da.", "removedwatchtext-short": "$1 orria zure jarraipen zerrendatik ezabatu da.", "watch": "Jarraitu", "watchthispage": "Orrialde hau jarraitu", @@ -2353,7 +2359,7 @@ "previousdiff": "← Aldaketa zaharragoa", "nextdiff": "Aldaketa berriagoa →", "mediawarning": "'''Oharra''': Fitxategi honek kode mingarria izan lezake.\nZure sisteman exekutatzea arriskutsua izan liteke.", - "imagemaxsize": "Irudiaren tamainaren muga:<br />''(fitxategi deskribapen-orrietarako)''", + "imagemaxsize": "Irudiaren tamainaren muga:<br />''(fitxategia deskribatzen duten orrietarako)''", "thumbsize": "Irudi txikiaren tamaina:", "widthheightpage": "$1 × $2, $3 {{PLURAL:$3|orri|orri}}", "file-info": "fitxategiaren tamaina: $1, MIME mota: $2", @@ -3055,8 +3061,9 @@ "logentry-patrol-patrol": "$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 sortu du", + "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-upload-upload": "$1(e)k $3 {{GENDER:$2|igo du}}", "log-name-tag": "Etiketen erregistroa", "rightsnone": "(bat ere ez)", @@ -3076,37 +3083,12 @@ "feedback-thanks-title": "Eskerrik asko!", "searchsuggest-search": "{{SITENAME}} wikian bilatu", "searchsuggest-containing": "edukian...", - "api-error-badaccess-groups": "Ez duzu baimendik fitxategi hauek wiki honetara igotzeko.", "api-error-badtoken": "Barne akatsa: token okerra.", - "api-error-empty-file": "Bidali duzun fitxategia hutsik dago.", "api-error-emptypage": "Berria sortzerako garaian orrialde hutsak ezin dira erabili.", - "api-error-fetchfileerror": "Barne akatsa: zerbait gaizki joan da fitxategia eskuratzerakoan.", - "api-error-file-too-large": "Bidali duzun fitxategia handiegia zen.", - "api-error-filename-tooshort": "Fitxategiaren izena laburregia da.", - "api-error-filetype-banned": "Mota horretako fitxategiak debekatuta daude.", - "api-error-filetype-missing": "Fitxategiak ez zuen luzapenik.", - "api-error-http": "Barne-errorea: Ezin da zerbitzariarekin konektatu.", - "api-error-illegal-filename": "Fitxategiaren izena ez da onartzen.", - "api-error-internal-error": "Barne-errorea: Zerbaitek huts egin du zuk wikira igotakoa prozesatzean.", - "api-error-invalid-file-key": "Barne-errorea: Ez da fitxategia aurkitu aldi baterako biltegian.", - "api-error-missingparam": "Barne-errorea: Parametroak falta dira eskaeran.", - "api-error-missingresult": "Barne-errorea: Ezin da zehaztu kopia ondo burutu den ala ez.", - "api-error-mustbeloggedin": "Fitxategiak igotzeko izena emanda eduki behar duzu.", - "api-error-mustbeposted": "Barne arazoa: HTTP POST beharrezkoa da.", - "api-error-noimageinfo": "Igoera ondo egin da, baina zerbitzariak ez digu informaziorik eman zerbitzariaren inguruan.", - "api-error-nomodule": "Barne arazoa: igoera modulurik ez dago.", - "api-error-ok-but-empty": "Barne arazoa: zerbitzariaren erantzunik ez.", - "api-error-overwrite": "Existitzen den fitxategi bat gain-idaztea ez da posible.", - "api-error-stashfailed": "Barne arazoa: Zerbitzariak ezin izan du behin-behineko fitxategia gorde", "api-error-publishfailed": "Barne-errorea: Zerbitzariak ezin izan du aldi baterako fitxategia gorde.", - "api-error-timeout": "Zerbitzariak ez du erantzun espero zitekeen denboran.", - "api-error-unclassified": "Ezezaguna den errorea gertatu da.", - "api-error-unknown-code": "Akats ezezaguna: \"$1\".", - "api-error-unknown-error": "Barne arazoa: fitxategia igotzen saiatzerakoan zerbait gaizki egon da.", + "api-error-stashfailed": "Barne arazoa: Zerbitzariak ezin izan du behin-behineko fitxategia gorde", "api-error-unknown-warning": "Ohartarazpen ezezaguna: \"$1\".", "api-error-unknownerror": "Akats ezezaguna: \"$1\".", - "api-error-uploaddisabled": "Wiki honetan ezin dira igoerak egin.", - "api-error-verification-error": "Fitxategia ustela izan daiteke, edo fitxategi luzapen ez egokia du.", "duration-seconds": "{{PLURAL:$1|Segundu $1|$1 segundu}}", "duration-minutes": "{{PLURAL:$1|Minutu $1|$1 minutu}}", "duration-hours": "{{PLURAL:$1|Ordu $1|$1 ordu}}", diff --git a/languages/i18n/ext.json b/languages/i18n/ext.json index 54f5134888..1953747152 100644 --- a/languages/i18n/ext.json +++ b/languages/i18n/ext.json @@ -1360,7 +1360,7 @@ "tooltip-pt-login": "Te recomendamus que te rustris, inque nu es mestel.", "tooltip-pt-logout": "Salil", "tooltip-ca-talk": "Caraba al tentu el artículu", - "tooltip-ca-edit": "Pueis eital esta página.\nPol favol, gasta el botón \"previsoreal\" enantis d'emburacal.", + "tooltip-ca-edit": "Eital esta páhina", "tooltip-ca-addsection": "Prencipial una nueva seción", "tooltip-ca-viewsource": "Esta páhina está protehia (nu pueis hazel chambus).", "tooltip-ca-history": "Velsionis anterioris d'esta página.", diff --git a/languages/i18n/fa.json b/languages/i18n/fa.json index f33653a6b9..5ab3f93ed9 100644 --- a/languages/i18n/fa.json +++ b/languages/i18n/fa.json @@ -56,7 +56,8 @@ "Matma Rex", "4nn1l2", "Namo", - "Alifakoor" + "Alifakoor", + "Dejavu" ] }, "tog-underline": "خط کشیدن زیر پیوندها:", @@ -224,6 +225,7 @@ "searcharticle": "برو", "history": "تاریخچهٔ صفحه", "history_short": "تاریخچه", + "history_small": "تاریخچه", "updatedmarker": "به‌روزشده از آخرین باری که سرزده‌ام", "printableversion": "نسخهٔ قابل چاپ", "permalink": "پیوند پایدار", @@ -465,19 +467,12 @@ "login": "ورود به سامانه", "login-security": "هویتتان را تائید کنید", "nav-login-createaccount": "ورود به سامانه / ایجاد حساب کاربری", - "userlogin": "ورود به سامانه / ایجاد حساب کاربری", - "userloginnocreate": "ورود به سامانه", "logout": "خروج از سامانه", "userlogout": "خروج از سامانه", "notloggedin": "به سامانه وارد نشده‌اید", "userlogin-noaccount": "حساب کاربری ندارید؟", "userlogin-joinproject": "در {{SITENAME}} نام‌نویسی کنید!", - "nologin": "حساب کاربری ندارید؟ $1.", - "nologinlink": "یک حساب کاربری تازه بسازید", "createaccount": "ایجاد حساب کاربری", - "gotaccount": "حساب کاربری دارید؟ $1.", - "gotaccountlink": "به سامانه وارد شوید", - "userlogin-resetlink": "جزئیات ورود را فراموش کرده‌اید؟", "userlogin-resetpassword-link": "گذرواژه‌تان را فراموش کردید؟", "userlogin-helplink2": "کمک با ورود", "userlogin-loggedin": "شما در حال حاضر به عنوان {{GENDER:$1|$1}} وارد شده‌اید.\nاز فرم پایین برای ورود به عنوان یک کاربر دیگر استفاده کنید.", @@ -490,7 +485,6 @@ "createaccountmail": "استفاده از رمز عبور موقت تصادفی و ارسال آن به آدرس ایمیل مشخص شده", "createaccountmail-help": "جهت ايجاد حساب برای شخص ديگری بدون دانستن گذرواژهٔ آن کاربرد دارد.", "createacct-realname": "نام واقعی (اختیاری)", - "createaccountreason": "دلیل:", "createacct-reason": "دلیل", "createacct-reason-ph": "چرا شما حساب دیگری می‌سازید؟", "createacct-reason-help": "پیامی که در سياههٔ ایجاد حساب نمایش داده می‌شود", @@ -695,6 +689,7 @@ "blockedtitle": "کاربر بسته شده‌است", "blockedtext": "<strong>دسترسی حساب کاربری یا نشانی آی‌پی شما بسته شده‌است.</strong>\n\nاین قطع دسترسی توسط $1 انجام شده است.\nدلیل ارائه‌شده چنین است: <em>$2</em>\n\n* شروع قطع دسترسی: $8\n* پایان قطع دسترسی: $6\n* کاربری هدف قطع دسترسی: $7\n\nشما می‌توانید با $1 یا [[{{MediaWiki:Grouppage-sysop}}|مدیری]] دیگر تماس بگیرید و در این باره صحبت کنید.\nتوجه کنید که شما نمی‌توانید از قابلیت «ایمیل به این کاربر» استفاده کنید مگر آنکه آدرس ایمیل معتبری در [[Special:Preferences|ترجیحات کاربری]] خودتان ثبت کرده باشید و نیز باید امکان استفاده از این قابلیت برای شما قطع نشده باشد.\nنشانی آی‌پی فعلی شما $3 و شمارهٔ قطع دسترسی شما $5 است.\nلطفاً تمامی جزئیات فوق را در کلیهٔ درخواست‌هایی که در این باره مطرح می‌کنید ذکر کنید.", "autoblockedtext": "دسترسی نشانی آی‌پی شما قطع شده‌است، زیرا این نشانی آی‌پی توسط کاربر دیگری استفاده شده که دسترسی او توسط $1 قطع شده‌است.\nدلیل ارائه‌شده چنین است:\n\n:''$2''\n\n* شروع قطع دسترسی: $8\n* پایان قطع دسترسی: $6\n* کاربری هدف قطع دسترسی: $7\n\nشما می‌توانید با $1 یا [[{{MediaWiki:Grouppage-sysop}}|مدیری]] دیگر تماس بگیرید و در این باره صحبت کنید.\nتوجه کنید که شما نمی‌توانید از قابلیت «ایمیل به این کاربر» استفاده کنید مگر آنکه نشانی ایمیل معتبری در [[Special:Preferences|ترجیحات کاربری]] خودتان ثبت کرده باشید و نیز باید امکان استفاده از این قابلیت برای شما قطع نشده باشد.\nنشانی آی‌پی فعلی شما $3 و شمارهٔ قطع دسترسی شما $5 است.\nلطفاً تمامی جزئیات فوق را در کلیهٔ درخواست‌هایی که در این باره مطرح می‌کنید ذکر کنید.", + "systemblockedtext": "نام کاربری یا نشانی آی‌پی شما خودکار توسط مدیاویکی مسدود شده‌است.\nدلیل ارائه‌شده:\n\n:<em>$2</em>\n\n* آغاز بلاک: $8\n* پایان بلاک: $6\n* قطع دسترسی‌شده مورد نظر: $7\n\nنشانی آی‌پی کنونی شما $3 است.\nخواهشمند است تمام جزئیات بالا را در هر پرس‌وجویی که انجام می‌دهید قرار دهید.", "blockednoreason": "دلیلی مشخص نشده‌است", "whitelistedittext": "برای ویرایش مقاله‌ها باید $1.", "confirmedittext": "شما باید، پیش از ویرایش صفحات، آدرس ایمیل خود را مشخص و تأیید کنید. لطفاً از طریق [[Special:Preferences|ترجیحات کاربر]] این کار را صورت دهید.", @@ -996,6 +991,7 @@ "search-interwiki-caption": "پروژه‌های خواهر", "search-interwiki-default": "نتایج از $1:", "search-interwiki-more": "(بیشتر)", + "search-interwiki-more-results": "نتایج بیشتر", "search-relatedarticle": "مرتبط", "searchrelated": "مرتبط", "searchall": "همه", @@ -1045,8 +1041,6 @@ "saveprefs": "ذخیره", "restoreprefs": "برگرداندن تمام تنظیمات پیش‌فرض (در تمامی قسمت‌ها)", "prefs-editing": "ویرایش", - "rows": "تعداد سطرها:", - "columns": "تعداد ستون‌ها:", "searchresultshead": "جستجو", "stub-threshold": "آستانهٔ ویرایش پیوندهای ناقص ($1):", "stub-threshold-sample-link": "نمونه", @@ -1087,6 +1081,7 @@ "youremail": "ایمیل:", "username": "{{GENDER:$1|نام کاربری}}:", "prefs-memberingroups": "{{GENDER:$2|عضو}} {{PLURAL:$1|گروه|گروه}}:", + "group-membership-link-with-expiry": "$1 (تا $2)", "prefs-registration": "زمان ثبت‌نام:", "yourrealname": "نام واقعی:", "yourlanguage": "زبان:", @@ -1130,16 +1125,27 @@ "userrights-user-editname": "یک نام کاربری وارد کنید:", "editusergroup": "بارگیری گروه‌های کاربر", "editinguser": "تغییر اختیارات کاربری کاربر {{GENDER:$1|کاربر}} <strong>[[User:$1|$1]]</strong> $2", - "userrights-editusergroup": "ویرایش گروه‌های کاربری", + "viewinguserrights": "دیدن دسترسی {{GENDER:$1|کاربری}} <strong>[[User:$1|$1]]</strong> $2", + "userrights-editusergroup": "ویرایش گروه‌های {{GENDER:$1|کاربر}}", + "userrights-viewusergroup": "مشاهدهٔ گروه‌های {{GENDER:$1|کاربر}}", "saveusergroups": "ثبت گروه‌های {{GENDER:$1|کاربری}}", "userrights-groupsmember": "عضو:", "userrights-groupsmember-auto": "عضو ضمنی:", - "userrights-groups-help": "شما می‌توانید گروه‌هایی را که کاربر در آن قرار دارد تغییر دهید:\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": "زمان انقضای موجود: $2، $3", + "userrights-expiry-othertime": "زمانی دیگر:", + "userrights-expiry-options": "Û± روز:1 day,Û± هفته:1 week,Û± ماه:1 month,Û³ ماه:3 months,Û¶ ماه:6 months,Û± سال:1 year", + "userrights-invalid-expiry": "زمان انقضای گروه «$1» نادرست است.", + "userrights-expiry-in-past": "زمان انقضای گروه «$1» گذشته‌است.", + "userrights-cannot-shorten-expiry": "امکان جلو آوردن تاریخ انقضای گروه \"$1\" را ندارید. تنها کاربرانی که دسترسی اضافه و حذف این گروه را دارند می‌توانند تاریخ انقضا را جلو بیاورند.", "userrights-conflict": "تعارض دسترسی‌های کاربری! لطفاً بررسی کنید و تغییرات را تأیید کنید.", "group": "گروه:", "group-user": "کاربران", @@ -1291,10 +1297,12 @@ "action-upload_by_url": "بارگذاری این پرونده از یک نشانی اینترنتی", "action-writeapi": "استفاده از API نوشتن", "action-delete": "حذف این صفحه", - "action-deleterevision": "حذف این نسخه", + "action-deleterevision": "حذف نسخه‌ها", + "action-deletelogentry": "حذف سیاههٔ ورودی‌ها", "action-deletedhistory": "مشاهدهٔ تاریخچهٔ حذف شدهٔ این صفحه", + "action-deletedtext": "مشاهدهٔ متن نسخهٔ حذف‌شده", "action-browsearchive": "جستجوی صفحه‌های حذف‌شده", - "action-undelete": "احیای این صفحه", + "action-undelete": "احیای صفحه‌ها", "action-suppressrevision": "مشاهده و احیای ویرایش‌های حذف شده", "action-suppressionlog": "مشاهدهٔ این سیاههٔ خصوصی", "action-block": "قطع دسترسی این کاربر از ویرایش‌کردن", @@ -1310,6 +1318,7 @@ "action-userrights-interwiki": "ویرایش اختیارات کاربری کاربران یک ویکی دیگر", "action-siteadmin": "قفل‌کردن و بازکردن پایگاه داده‌ها", "action-sendemail": "ارسال ایمیل", + "action-editmyoptions": "ویرایش ترجیحاتتان", "action-editmywatchlist": "فهرست پیگیری‌های خود را ویرایش کنید", "action-viewmywatchlist": "فهرست پیگیری‌های خود را ببینید", "action-viewmyprivateinfo": "اطلاعات خصوصی خود را ببینید", @@ -1337,6 +1346,53 @@ "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (همچنین به [[Special:NewPages|فهرست صفحات تازه]] نگاه کنید)", "recentchanges-legend-plusminus": "(<em>±۱۲۳</em>)", "recentchanges-submit": "نمایش", + "rcfilters-activefilters": "فعال‌کردن پالایه‌ها", + "rcfilters-restore-default-filters": "بازگردانی پالایه‌های پیش‌فرض", + "rcfilters-clear-all-filters": "پاک‌کردن پالایش‌ها", + "rcfilters-search-placeholder": "پالایش تغییرات اخیر (جستجو یا شروع به تایپ)", + "rcfilters-invalid-filter": "پالایهٔ نامعتبر", + "rcfilters-empty-filter": "پالایه‌ای فعال نیست. همهٔ مشارکت‌های دیده می‌شوند.", + "rcfilters-filterlist-title": "پالایه‌ها", + "rcfilters-filterlist-feedbacklink": "ارسال بازخورد برای پالایه‌های جدید (آزمایشی)", + "rcfilters-highlightbutton-title": "پررنگ کردن نتایج", + "rcfilters-highlightmenu-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-newcomer-label": "تازه‌واردها", + "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-experienced-label": "کاربران باتجربه", + "rcfilters-filter-user-experience-level-experienced-description": "بیشتر از Û³Û° روز فعالیت و ÛµÛ°Û° ویرایش.", + "rcfilters-filtergroup-automated": "ویرایش‌های خودکار", + "rcfilters-filter-bots-label": "ربات", + "rcfilters-filter-bots-description": "ویرایش توسط ابزارهای خودکار.", + "rcfilters-filter-humans-label": "انسان (ربات نه)", + "rcfilters-filter-humans-description": "ویرایش توسط انسان.", + "rcfilters-filtergroup-significance": "اهمیت", + "rcfilters-filter-minor-label": "ویرایش‌های جزئی", + "rcfilters-filter-minor-description": "ویرایش‌هایی که به عنوان جزئی برچسب خورده‌اند.", + "rcfilters-filter-major-label": "ویرایش‌های غیرجزئی", + "rcfilters-filter-major-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": "فعالیت‌های مدیریتی، ایجاد حساب، حذف صفحه، بارگذاری‌ها ....", "rcnotefrom": "در زیر تغییرات از <strong>$3, $4</strong> (تا <strong>$1</strong> {{PLURAL:$5|نشان داده شده‌است|نشان داده شده‌اند}}).", "rclistfrom": "نمایش تغییرات تازه با شروع از $3 $2", "rcshowhideminor": "$1 ویرایش‌های جزئی", @@ -1470,7 +1526,7 @@ "uploaded-setting-handler-svg": "پرونده SVG تنظیم شده با مشخصهٔ \"handler\" با remote/data/script بسته شده‌است. در پروندهٔ بارگذاری‌شده <code>$1=\"$2\"</code> یافت شد.", "uploaded-remote-url-svg": "پرونده SVG تنظیم شده با remote URL بسته شده‌است. در پروندهٔ بارگذاری‌شده <code>$1=\"$2\"</code> یافت شد.", "uploaded-image-filter-svg": "پالایه پرونده در نشانی:<code><$1 $2=\"$3\"></code> در پرونده SVG بارگذاری‌شده یافت شد.", - "uploadscriptednamespace": "این پوشه اس‌وی‌جی شامل فضای نام غیرقانونی '$1' است", + "uploadscriptednamespace": "این پوشه اس‌وی‌جی حاوی نام غیرقانونی '<nowiki>$1</nowiki>' است", "uploadinvalidxml": "XML در پروندهٔ بارگذاری‌شده نمی‌تواند تجزیه شود.", "uploadvirus": "این پرونده ویروس دارد!\nجزئیات : $1", "uploadjava": "این پرونده یک پرونده زیپ است که حاوی پرونده‌ای از نوع ‎‎.class جاوا است.\nبارگذاری پرونده‌های جاوا مجاز نیست، چرا که ممکن است اجازه دور زدن محدودیت‌های امنیتی را بدهند.", @@ -1747,6 +1803,7 @@ "uncategorizedcategories": "رده‌های رده‌بندی‌نشده", "uncategorizedimages": "پرونده‌های رده‌بندی‌نشده", "uncategorizedtemplates": "الگوهای رده‌بندی‌نشده", + "uncategorized-categories-exceptionlist": "# شامل فهرست رده‌هایی که باید در ویژه:رده‌های_رده‌بندی‌نشده اصلاح شوند. هر خطی که با \"*\" شروع شده‌است. خطوطی که با نویسه‌های دیگر شروع شده‌اند در نظر گرفته نمی‌شوند (حتی فاصله). برای توضیحات از \"#\" استفاده کنید.", "unusedcategories": "رده‌های استفاده‌نشده", "unusedimages": "پرونده‌های استفاده‌نشده", "wantedcategories": "رده‌های مورد نیاز", @@ -1845,7 +1902,10 @@ "apisandbox-sending-request": "ارسال درخواست ای‌پی‌آی...", "apisandbox-loading-results": "دریافت درخواست‌های ای‌پی‌آی...", "apisandbox-results-error": "در زمان بارگیری پاسخ کوئری API خطایی رخ داده‌است: $1.", + "apisandbox-request-selectformat-label": "نمایش داده‌های مورد درخواست به عنوان:", + "apisandbox-request-format-url-label": "آدرس اینترنتی متن پرسمان", "apisandbox-request-url-label": "درخواست آدرس:", + "apisandbox-request-json-label": "درخواست JSON:", "apisandbox-request-time": "زمان درخواست: {{PLURAL:$1|$1 ms}}", "apisandbox-results-fixtoken": "توکن را اصلاح کنید و از نو ارسال کنید", "apisandbox-results-fixtoken-fail": "خطا در دریافت توکن \"$1\"", @@ -1988,7 +2048,7 @@ "emailccsubject": "رونوشت پیغام شما به $1: $2", "emailsent": "ایمیل ارسال شد", "emailsenttext": "پیام ایمیل شما فرستاده شد.", - "emailuserfooter": "این ایمیل با استفاده از ویژگی «{{int:emailuser}}» {{SITENAME}} توسط $1 به {{GENDER:$2|$2}} {{GENDER:$1|ارسال شد}}.", + "emailuserfooter": "این ایمیل با استفاده از ویژگی «{{int:emailuser}}» {{SITENAME}} توسط $1 به {{GENDER:$2|$2}} {{GENDER:$1|ارسال شد}}.\n\nاگر {{GENDER:$2|شما}} به این ایمیل پاسخ دهید، به {{GENDER:$2|فرستنده}} ایمیل اصلی را ارسال {{GENDER:$1|کنید}}، آدرس ایمیل شما برای {{GENDER:$1|آنها}} ارسال می‌شود.", "usermessage-summary": "گذاشتن پیغام سامانه.", "usermessage-editor": "پیغام رسان سامانه", "watchlist": "فهرست پی‌گیری", @@ -2055,7 +2115,7 @@ "exbeforeblank": "محتوای صفحه قبل از خالی‌کردن این بود: «$1»", "delete-confirm": "حذف «$1»", "delete-legend": "حذف", - "historywarning": "<strong>هشدار:</strong> صفحه‌ای که در حال پاک‌کردن آن هستید دارای یک تاریخچه همراه $1 {{PLURAL:$1|بازبینی|بازبینی}} است:", + "historywarning": "<strong>هشدار:</strong> صفحه‌ای که در حال پاک کردن آن هستید دارای یک تاریخچه همراه با $1 {{PLURAL:$1|بازبینی|بازبینی}} است:", "historyaction-submit": "نمایش", "confirmdeletetext": "شما در حال حذف کردن یک صفحه یا تصویر از پایگاه داده‌ها همراه با تمام تاریخچهٔ آن هستید.\nلطفاً این عمل را تأیید کنید و اطمینان حاصل کنید که عواقب این کار را می‌دانید و این عمل را مطابق با [[{{MediaWiki:Policy-url}}|سیاست‌ها]] انجام می‌دهید.", "actioncomplete": "عمل انجام شد", @@ -2086,7 +2146,7 @@ "editcomment": "خلاصهٔ ویرایش این بود: <em>«$1»</em>.", "revertpage": "ویرایش [[Special:Contributions/$2|$2]] ([[User talk:$2|بحث]]) به آخرین تغییری که [[User:$1|$1]] انجام داده بود واگردانده شد", "revertpage-nouser": "ویرایش‌های انجام‌شده توسط (نام کاربری حذف شده) به آخرین ویرایش [[User:$1|$1]] واگردانی شد.", - "rollback-success": "ویرایش‌های $1 واگردانی شد؛\nصفحه به آخرین ویرایش $2 برگردانده شد.", + "rollback-success": "ویرایش‌های {{GENDER:$3|$1}} واگردانی شد؛\nصفحه به آخرین ویرایش {{GENDER:$4|$2}} برگردانده شد.", "rollback-success-notify": "ویرایش‌های توسط $1 واگردانی شد؛\nبه آخرین نسخه توسط $2 بازگردانی شد. [$3 نمایش تغییرات]", "sessionfailure-title": "خطای نشست کاربری", "sessionfailure": "به نظر می‌رسد مشکلی در مورد نشست کاربری شما وجود دارد؛\nعمل درخواست شده در اقدامی پیشگیرانه در برابر ربوده‌شدن اطلاعات نشست کاربری، لغو شد.\nلطفاً دکمهٔ «بازگشت» را در مرورگر خود بفشارید و صفحه‌ای که از آن به اینجا رسیده‌اید را دوباره فراخوانی کنید، سپس مجدداً سعی کنید.", @@ -2103,7 +2163,7 @@ "changecontentmodel-emptymodels-title": "هيچ مدل محتوایی در دسترس نيست", "changecontentmodel-emptymodels-text": "محتوای موجود در [[:$1]] به هيچ نوعی نمی‌تواند تبديل شود.", "log-name-contentmodel": "سیاهه تغییر نمونه محتوی", - "log-description-contentmodel": "رویدادهای مرتبط با نمونه محتوی‌های یک صفحه", + "log-description-contentmodel": "این صفحه تغییرات محتوی صفحاتی که با محتوی غیر از پیش‌فرض ایجاد شده‌اند، را فهرست می‌کند.", "logentry-contentmodel-new": "صفحهٔ $3 با استفاده از مدل‌های محتوایی غیر پیش‌فرض «$5» توسط $1 {{GENDER:$2|ساخته شد}}", "logentry-contentmodel-change": "نمونه محتوای صفحهٔ $3 از \"$4\" به \"$5\" توسط $1 {{GENDER:$2|تغییر داده شد}}", "logentry-contentmodel-change-revertlink": "واگردانی", @@ -2168,7 +2228,7 @@ "restriction-level-all": "هر سطحی", "undelete": "احیای صفحهٔ حذف‌شده", "undeletepage": "نمایش و احیای صفحه‌های حذف‌شده", - "undeletepagetitle": "'''آن چه در ادامه می‌آید شامل نسخه‌های حذف شدهٔ [[:$1|$1]] است'''.", + "undeletepagetitle": "<strong>آنچه در ادامه می‌آید شامل نسخه‌های حذف شدهٔ [[:$1|$1]] است</strong>.", "viewdeletedpage": "نمایش صفحه‌های حذف‌شده", "undeletepagetext": "{{PLURAL:$1|صفحهٔ زیر حدف شده|صفحه‌های زیر حذف شده‌اند}} ولی هنوز در بایگانی {{PLURAL:$1|هست|هستند}} و {{PLURAL:$1|می‌تواند احیا شود|می‌توانند احیا شوند}}.\nاین بایگانی ممکن است هر چند وقت تمیز شود.", "undelete-fieldset-title": "احیای نسخه‌ها", @@ -2362,6 +2422,7 @@ "proxyblockreason": "نشانی آی‌پی شما بسته شده است چون متعلق به یک پروکسی باز است.\nلطفاً با ارائه دهندهً خدمات اینترنت خود یا پشتیبانی فنی تماس بگیرید و آنها را از این مشکل امنیتی جدی آگاه کنید.", "sorbsreason": "نشانی آی‌پی شما توسط DNSBL مورد استفاده {{SITENAME}} به عنوان یک پروکسی باز گزارش شده است.", "sorbs_create_account_reason": "نشانی آی‌پی شما توسط DNSBL مورد استفاده {{SITENAME}} به عنوان یک پروکسی باز گزارش شده‌است.\nشما اجازهٔ ساختن حساب کاربری ندارید.", + "softblockrangesreason": "کاربران ثبت‌نام نکرده نمی‌توانند از IP شما ($1) برای ویرایش استفاده کنند. لطفاً به سامانه وارد شوید.", "xffblockreason": "نشانی آی‌پی در X-Forwarded-For header موجود است و پروکسی شما یا سروری که از آن استفاده می‌کنید بسته‌شده‌است. دلیل بسته‌شدن: $1", "cant-see-hidden-user": "کاربری که می‌خواهید ببندید قبلاً بسته شده و پنهان گردیده است. چون شما دسترسی پنهان کردن کاربران را ندارید، نمی‌توانید قطع دسترسی کاربر را ببینید یا ویرایش کنید.", "ipbblocked": "شما نمی‌توانید دسترسی دیگر کاربران را ببندید یا باز کنید زیرا دسترسی خودتان بسته است.", @@ -2397,6 +2458,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": "صفحه منتقل شود", @@ -2640,6 +2703,7 @@ "pageinfo-length": "حجم صفحه (بایت)", "pageinfo-article-id": "شناسهٔ صفحه", "pageinfo-language": "زبان محتوای صفحه", + "pageinfo-language-change": "تغییر", "pageinfo-content-model": "ساختار محتوای صفحه", "pageinfo-content-model-change": "تغییر", "pageinfo-robot-policy": "‌فهرست‌کردن توسط ربات‌ها", @@ -3564,7 +3628,7 @@ "logentry-tag-update-revision": "$1 برچسب نسخهٔ $4 صفحهٔ $3 را {{GENDER:$2|به‌روز کرد}} ($6 {{PLURAL:$7|افزوده‌شد}}؛ $8 {{PLURAL:$9|حذف شد}})", "logentry-tag-update-logentry": "$1 برچسب سیاههٔ $5 صفحهٔ $3 را {{GENDER:$2|به‌روز کرد}} ($6 {{PLURAL:$7|افزوده‌شد}}؛ $8 {{PLURAL:$9|حذف شد}})", "rightsnone": "(هیچ)", - "revdelete-summary": "خلاصه ویرایش", + "rightslogentry-temporary-group": "$1 (موقت، تا $2)", "feedback-adding": "افزودن بازخورد به صفحه...", "feedback-back": "بازگشت", "feedback-bugcheck": "عالی‌است! فقط بررسی کنید که از [$1 ایرادهای شناخته‌شده] نباشد.", @@ -3589,56 +3653,12 @@ "feedback-useragent": "رابط کاربر:", "searchsuggest-search": "جستجو در {{SITENAME}}", "searchsuggest-containing": "صفحه‌های دربردارنده...", - "api-error-autoblocked": "نشانی آی‌پی شما به صورت خودکار بسته شده‌است، چون توسط یک کاربر بسته‌شده استفاده می‌شد.", - "api-error-badaccess-groups": "شما اجازهٔ بارگذاری پرونده‌ها را در این ویکی ندارید.", "api-error-badtoken": "خطای داخلی: کد امنیتی اشتباه (Bad token).", - "api-error-blocked": "شما از ویرایش بسته شده‌اید.", - "api-error-copyuploaddisabled": "بارگذاری با استفاده از نشانی اینترنتی در این کارساز غیرفعال است.", - "api-error-duplicate": "{{PLURAL:$1|پروندهٔ دیگری|چند پروندهٔ دیگر}} در تارنما با محتوای یکسان وجود داشت.", - "api-error-duplicate-archive": "{{PLURAL:$1| پروندهٔ دیگری|چند پروندهٔ دیگر}} در تارنما با محتوای یکسان وجود داشت، ولی حذف {{PLURAL:$1|شده است|شده‌اند}}.", - "api-error-empty-file": "پرونده‌ای که شما ارسال کردید خالی بود.", "api-error-emptypage": "ایجاد صفحه‌های خالی مجاز نیست.", - "api-error-fetchfileerror": "خطای داخلی: در هنگام گرفتن پرونده، یک چیزی درست پیش نرفت.", - "api-error-fileexists-forbidden": "یک پرونده با نام \"$1\" موجود است و امکان بازنویسی نیست.", - "api-error-fileexists-shared-forbidden": "یک پرونده با نام \"$1\" در انبار اشتراک پرونده موجود است و امکان بازنویسی نیست.", - "api-error-file-too-large": "پرونده‌ای که شما ارسال کردید بیش از اندازه بزرگ بود.", - "api-error-filename-tooshort": "نام پرونده بیش از اندازه کوتاه است.", - "api-error-filetype-banned": "این نوع پرونده ممنوع است.", - "api-error-filetype-banned-type": "‎$1 {{PLURAL:$4|یک نوع پروندهٔ نامجاز است|انواع پروندهٔ نامجاز هستند}}. {{PLURAL:$3|نوع پروندهٔ مجاز|انواع پروندهٔ مجاز}} از این قرار است: $2.", - "api-error-filetype-missing": "پرونده فرمت ندارد.", - "api-error-hookaborted": "اصلاحیه‌ای که شما سعی در ایجاد آن بودید توسط افزونه‌ای به دام افتاد.", - "api-error-http": "خطای داخلی: قادر به اتصال به سرور نیست.", - "api-error-illegal-filename": "نام پرونده مجاز نیست.", - "api-error-internal-error": "خطای داخلی: با پردازش بارگذاری شما در ویکی، یک چیز اشتباه پیش رفت.", - "api-error-invalid-file-key": "خطای داخلی: پرونده در حافظهٔ موقت موجود نیست.", - "api-error-missingparam": "خطای داخلی: پارامترهای ناموجود در درخواست.", - "api-error-missingresult": "خطای داخلی: نمی‌توان فهمید کپی‌برداری موفق بوده‌است یا نه.", - "api-error-mustbeloggedin": "برای بارگذاری پرونده‌ها شما باید به سامانه وارد شوید.", - "api-error-mustbeposted": "خطای داخلی: درخواست باید از روش POST HTTP ارسال گردد.", - "api-error-noimageinfo": "بارگذاری موفق بود، ولی کارساز هیچ اطلاعاتی دربارهٔ پرونده به ما نداد.", - "api-error-nomodule": "خطای داخلی: پودمان بارگذاری تنظیم نشده‌است.", - "api-error-ok-but-empty": "خطای داخلی : پاسخی از سرور دریافت نشد.", - "api-error-overwrite": "جای نوشتن یک پرونده موجود مجاز نیست.", - "api-error-ratelimited": "شما سعی داريد، در بازه زمانی کوتاهی، بيشتر از تعدادی که اين ويکی اجازه داده‌است پرونده بارگذاری کنيد.\nلطفاً چند دقيقه بعد مجدداً تلاش نماييد.", - "api-error-stashfailed": "خطای داخلی: کارساز نمی‌تواند پرونده موقت را ذخیره کند.", "api-error-publishfailed": "خطای داخلی: کارساز نمی‌تواند پرونده موقت را ذخیره کند.", - "api-error-stasherror": "هنگام انتقال پوشه برای ذخیره خطایی بود.", - "api-error-stashedfilenotfound": "زمانی که تلاش برای بارگذاری فایل استش بود، فایل استش یافت نشد.", - "api-error-stashpathinvalid": "مسیری که فایل استش در آن باید یافت می‌شد اشتباه است.", - "api-error-stashfilestorage": "برای ذخیرهٔ فایل استش خطایی رخ داده است.", - "api-error-stashzerolength": "سرور نمی‌تواند فایل استش را ذخیره کند چون حجم آن صفر است.", - "api-error-stashnotloggedin": "برای ذخیرهٔ فایل‌ها در بارگذاری استش باید وارد سامانه شده‌باشید.", - "api-error-stashwrongowner": "فایلی که در استش قصد داشتید به آن دسترسی داشته‌باشید متعلق به شما نیست.", - "api-error-stashnosuchfilekey": "کلیدی که در فایل استش می خواستید به آن دسترسی داشته‌باشید، وجود ندارد.", - "api-error-timeout": "کارساز در زمان انتظار هیچ پاسخی نداد.", - "api-error-unclassified": "یک خطای ناشناخته رخ داد.", - "api-error-unknown-code": "خطای ناشناخته: \" $1 \"", - "api-error-unknown-error": "خطای داخلی: در زمانی که شما در حال تلاش برای بارگذاری پروندهٔ‌تان بودید، یک چیز اشتباه پیش رفت.", - "api-error-unknown-warning": "اخطار ناشناخته: $1", + "api-error-stashfailed": "خطای داخلی: کارساز نمی‌تواند پرونده موقت را ذخیره کند.", + "api-error-unknown-warning": "اخطار ناشناخته: \"$1\".", "api-error-unknownerror": "خطای ناشناخته: «$1».", - "api-error-uploaddisabled": "بارگذاری در این ویکی غیرفعال است.", - "api-error-verification-error": "ممکن است پرونده آسیب دیده باشد، یا دارای پسوند نادرست باشد.", - "api-error-was-deleted": "پرونده‌ای با همين نام قبلاً بارگذاری و متعاقباً حذف شده است.", "duration-seconds": "$1 ثانیه", "duration-minutes": "$1 دقیقه", "duration-hours": "$1 ساعت", @@ -3662,7 +3682,7 @@ "limitreport-templateargumentsize-value": "$1/$2 {{PLURAL:$2|بایت|بایت}}", "limitreport-expansiondepth": "بیشترین عمق گسترش", "limitreport-expensivefunctioncount": "تعداد تابع تجزیه‌گر پرمصرف", - "expandtemplates": "بسط‌دادن الگوها", + "expandtemplates": "بسط دادن الگوها", "expand_templates_intro": "این صفحهٔ ویژه متنی را دریافت کرده و تمام الگوهای به‌کاررفته در آن را به طور بازگشتی بسط می‌دهد. همچنین تابع‌های تجزیه چون <code><nowiki>{{</nowiki>#language:…}}</code> و متغیرهایی چون <code><nowiki>{{</nowiki>CURRENTDAY}}</code> را هم بسط می‌دهد — در واقع تقریباً هرچه را که داخل دوآکولاد باشد. این کار با صدازدن مرحلهٔ تجزیهٔ مربوط در خود مدیاویکی صورت می‌گیرد.", "expand_templates_title": "عنوان موضوع، برای {{FULLPAGENAME}} و غیره:", "expand_templates_input": "متن ورودی:", @@ -3683,7 +3703,12 @@ "pagelang-language": "زبان", "pagelang-use-default": "استفاده از زبان پیش‌فرض", "pagelang-select-lang": "انتخاب زبان", + "pagelang-reason": "دلیل", "pagelang-submit": "اعمال", + "pagelang-nonexistent-page": "صفحهٔ $1 وجود ندارد.", + "pagelang-unchanged-language": "صفحهٔ $1 برای زبان $2 تنظیم شده‌است.", + "pagelang-unchanged-language-default": "صفحهٔ $1 برای محتوی زبانی پیش‌فرض ویکی، تعریف شده‌است.", + "pagelang-db-failed": "پایگاه داده برای تغییر زبان صفحه خطا داد.", "right-pagelang": "تغییر صفحهٔ زبان", "action-pagelang": "تغییر زبان صفحه", "log-name-pagelang": "سیاههٔ تغییر زبان", @@ -3753,13 +3778,14 @@ "mw-widgets-titleinput-description-new-page": "این صفحه هنوز وجود ندارد", "mw-widgets-titleinput-description-redirect": "تغییر مسیر به $1", "mw-widgets-categoryselector-add-category-placeholder": "در حال افزودن رده ...", + "mw-widgets-usersmultiselect-placeholder": "افزودن بیشتر...", "sessionmanager-tie": "نمی‌توان چندین نوع درخواست هویت‌سنجی را ترکیب کرد: $1.", "sessionprovider-generic": "$1 فصل", "sessionprovider-mediawiki-session-cookiesessionprovider": "فصل‌های کوکی‌محور", "sessionprovider-nocookies": "کوکی‌ها ممکن است غیر فعال شده باشند. اطمینان کسب کنید که کوکی‌ها را فعال کرده‌اید و دوباره آغاز کنید.", "randomrootpage": "صفحهٔ ریشهٔ تصادفی", "log-action-filter-block": "نوع بسته شدن:", - "log-action-filter-contentmodel": "تغییر نوع contentmodel:", + "log-action-filter-contentmodel": "نوع تغییرات مدل محتوا:", "log-action-filter-delete": "نوع حذف:", "log-action-filter-import": "نوع واردات", "log-action-filter-managetags": "نوع مدیریت", @@ -3775,7 +3801,7 @@ "log-action-filter-block-reblock": "تصحیح بلاک", "log-action-filter-block-unblock": "باز شدن", "log-action-filter-contentmodel-change": "تغییر مدل محتوا", - "log-action-filter-contentmodel-new": "ایجاد صفحه با contentmodel غیر استاندارد", + "log-action-filter-contentmodel-new": "ایجاد صفحه با مدل محتوای غیر استاندارد", "log-action-filter-delete-delete": "حذف صفحه", "log-action-filter-delete-delete_redir": "رونویسی تغییرمسیر", "log-action-filter-delete-restore": "احیای صفحه", @@ -3884,5 +3910,7 @@ "usercssispublic": "لطفاً توجه کنید: زیرصفحه‌های سی‌اس‌اس نباید حاوی اطلاعات محرمانه باشند چون توسط دیگران قابل مشاهده هستند.", "restrictionsfield-badip": "نشانی یا بازهٔ آی‌پی نامعتبر: $1", "restrictionsfield-label": "بازه‌های آی‌پی مجاز:", - "restrictionsfield-help": "یک نشانی آی‌پی یا بازهٔ سی‌آی‌دی‌ار در هر خط وارد کنید. برای فعال کردن همه‌چیز، این مقدار را استفاده کنید: <code>0.0.0.0/0</code><br><code>::/0</code>" + "restrictionsfield-help": "یک نشانی آی‌پی یا بازهٔ سی‌آی‌دی‌ار در هر خط وارد کنید. برای فعال کردن همه‌چیز، این مقدار را استفاده کنید: <code>0.0.0.0/0</code><br /><code>::/0</code>", + "revid": "نسخهٔ $1", + "pageid": "شناسهٔ صفحهٔ $1" } diff --git a/languages/i18n/fi.json b/languages/i18n/fi.json index c2638ad190..1f3a4e6f56 100644 --- a/languages/i18n/fi.json +++ b/languages/i18n/fi.json @@ -221,6 +221,7 @@ "searcharticle": "Siirry", "history": "Sivun historia", "history_short": "Historia", + "history_small": "historia", "updatedmarker": "päivitetty viimeisimmän käyntisi jälkeen", "printableversion": "Tulostettava versio", "permalink": "Ikilinkki", @@ -459,19 +460,12 @@ "login": "Kirjaudu sisään", "login-security": "Varmista henkilöllisyytesi", "nav-login-createaccount": "Kirjaudu sisään tai luo tunnus", - "userlogin": "Kirjaudu sisään tai luo tunnus", - "userloginnocreate": "Kirjaudu sisään", "logout": "Kirjaudu ulos", "userlogout": "Kirjaudu ulos", "notloggedin": "Et ole kirjautunut", "userlogin-noaccount": "Eikö sinulla vielä ole käyttäjätunnusta?", "userlogin-joinproject": "Liity {{GRAMMAR:illative|{{SITENAME}}}}", - "nologin": "Jos sinulla ei ole vielä käyttäjätunnusta, $1.", - "nologinlink": "voit luoda sellaisen", "createaccount": "Luo uusi käyttäjätunnus", - "gotaccount": "Jos sinulla on jo tunnus, voit '''$1'''.", - "gotaccountlink": "kirjautua sisään", - "userlogin-resetlink": "Unohditko salasanasi?", "userlogin-resetpassword-link": "Unohditko salasanasi?", "userlogin-helplink2": "Apua sisäänkirjautumiseen", "userlogin-loggedin": "Olet jo kirjautunut sisään tunnuksella {{GENDER:$1|$1}}.\nKäytä alla olevaa lomaketta kirjautuaksesi sisään toisena käyttäjänä.", @@ -484,7 +478,6 @@ "createaccountmail": "Käytä satunnaista väliaikaissalasanaa ja lähetä se alla olevaan sähköpostiosoitteeseen", "createaccountmail-help": "Voidaan käyttää luomaan tunnus toiselle käyttäjälle ilman salasanan tietämistä.", "createacct-realname": "Oikea nimi (vapaaehtoinen tieto)", - "createaccountreason": "Syy:", "createacct-reason": "Syy", "createacct-reason-ph": "Miksi olet luomassa toista käyttäjätunnusta", "createacct-reason-help": "Tunnustenluontilokissa näytetty viesti", @@ -686,6 +679,7 @@ "blockedtitle": "Käyttäjä on estetty", "blockedtext": "'''Käyttäjätunnuksesi tai IP-osoitteesi on estetty.'''\n\nEston on asettanut $1.\nSyy: '''$2'''\n\n* Eston alkamisaika: $8\n* Eston päättymisaika: $6\n* Kohde: $7\n\nVoit keskustella ylläpitäjän $1 tai toisen [[{{MediaWiki:Grouppage-sysop}}|ylläpitäjän]] kanssa estosta.\nHuomaa, ettet voi lähettää sähköpostia {{GRAMMAR:genitive|{{SITENAME}}}} kautta, ellet ole asettanut olemassa olevaa sähköpostiosoitetta [[Special:Preferences|asetuksissa]] tai jos esto on asetettu koskemaan myös sähköpostin lähettämistä.\nIP-osoitteesi on $3 ja estotunnus on #$5.\nLiitä kaikki yllä olevat tiedot mahdollisiin kyselyihisi.", "autoblockedtext": "IP-osoitteesi on estetty automaattisesti, koska sitä on käyttänyt toinen käyttäjä, jonka on estänyt ylläpitäjä $1.\nEston syy on:\n\n:''$2''\n\n* Eston alkamisaika: $8\n* Eston päättymisaika: $6\n* Kohde: $7\n\nVoit keskustella ylläpitäjän $1 tai toisen [[{{MediaWiki:Grouppage-sysop}}|ylläpitäjän]] kanssa estosta.\n\nHuomaa, ettet voi lähettää sähköpostia {{GRAMMAR:genitive|{{SITENAME}}}} kautta, ellet ole asettanut olemassa olevaa sähköpostiosoitetta [[Special:Preferences|asetuksissa]] tai jos esto on asetettu koskemaan myös sähköpostin lähettämistä.\n\nIP-osoitteesi on $3 ja estotunnus on #$5.\nLiitä kaikki yllä olevat tiedot mahdollisiin kyselyihisi.", + "systemblockedtext": "Käyttäjätunnuksesi tai IP-osoitteesi on automaattisesti estetty MediaWikin toimesta.\nAnnettu syy on:\n\n:<em>$2</em>\n\n* Start of block: $8\n* Expiration of block: $6\n* Intended blockee: $7\n\nTämänhetkinen IP-osoitteesi on $3.\nOle hyvä ja liitä kaikki yllä olevat tiedot mahdollisiin kyselyihisi.", "blockednoreason": "(syytä ei annettu)", "whitelistedittext": "Sinun täytyy $1, jotta voisit muokata sivuja.", "confirmedittext": "Et voi muokata sivuja, ennen kuin olet varmentanut sähköpostiosoitteesi. Voit tehdä varmennuksen [[Special:Preferences|asetussivulla]].", @@ -984,9 +978,10 @@ "search-file-match": "(vastaa tiedoston sisältöä)", "search-suggest": "Tarkoititko: $1", "search-rewritten": "Näytetään tulokset haulla $1. Haluatko hakea haulla $2?", - "search-interwiki-caption": "Sisarprojektit", + "search-interwiki-caption": "Sisarhankkeet", "search-interwiki-default": "Tulokset osoitteesta $1:", "search-interwiki-more": "(lisää)", + "search-interwiki-more-results": "lisää tuloksia", "search-relatedarticle": "Hae samankaltaisia sivuja", "searchrelated": "samankaltainen", "searchall": "kaikki", @@ -1075,6 +1070,7 @@ "youremail": "Sähköpostiosoite", "username": "{{GENDER:$1|Käyttäjätunnus}}", "prefs-memberingroups": "{{GENDER:$2|Jäsenenä}} {{PLURAL:$1|ryhmässä|ryhmissä}}", + "group-membership-link-with-expiry": "$1 ($2 asti)", "prefs-registration": "Rekisteröintiaika", "yourrealname": "Oikea nimi", "yourlanguage": "Käyttöliittymän kieli", @@ -1119,17 +1115,23 @@ "editusergroup": "Lataa käyttäjäryhmät", "editinguser": "Muutetaan {{GENDER:$1|käyttäjän}} <strong>[[User:$1|$1]]</strong> $2 oikeuksia", "viewinguserrights": "Näytetään {{GENDER:$1|käyttäjän}} <strong>[[User:$1|$1]]</strong> $2 käyttäjäryhmät", - "userrights-editusergroup": "Muuta käyttäjän ryhmiä", - "userrights-viewusergroup": "Näytä käyttäjäryhmät", + "userrights-editusergroup": "Muuta {{GENDER:$1|käyttäjän}} ryhmiä", + "userrights-viewusergroup": "Tarkastele {{GENDER:$1|käyttäjän}} ryhmiä", "saveusergroups": "Tallenna {{GENDER:$1|käyttäjän}} ryhmät", "userrights-groupsmember": "Jäsenenä ryhmissä:", "userrights-groupsmember-auto": "Automaattisesti jäsenenä ryhmissä:", - "userrights-groups-help": "Voit muuttaa ryhmiä, joissa tämä käyttäjä on.\n* Merkattu valintaruutu tarkoittaa, että käyttäjä on kyseisessä ryhmässä.\n* Merkkaamaton valintaruutu tarkoittaa, että käyttäjä ei ole kyseisessä ryhmässä.\n* <nowiki>*</nowiki> tarkoittaa, että et pysty poistamaan käyttäjää tästä ryhmästä, kun olet hänet siihen lisännyt tai päinvastoin", + "userrights-groups-help": "Voit muuttaa ryhmiä, joissa tämä käyttäjä on.\n* Merkattu valintaruutu tarkoittaa, että käyttäjä on kyseisessä ryhmässä.\n* Merkkaamaton valintaruutu tarkoittaa, että käyttäjä ei ole kyseisessä ryhmässä.\n* <nowiki>*</nowiki> tarkoittaa, että et pysty poistamaan ryhmää, kun olet sen lisännyt tai päinvastoin.\n* # tarkoittaa että voit vain asettaa tämän ryhmän päättymisajan takaisin; et voi tuoda sitä eteenpäin.", "userrights-reason": "Syy:", "userrights-no-interwiki": "Sinulla ei ole oikeutta muokata käyttöoikeuksia muissa wikeissä.", "userrights-nodatabase": "Tietokantaa $1 ei ole tai se ei ole paikallinen.", "userrights-changeable-col": "Ryhmät, joita voit muuttaa", "userrights-unchangeable-col": "Ryhmät, joita et voi muuttaa", + "userrights-expiry-current": "Vanhentuu $1", + "userrights-expiry-none": "Ei vanhene", + "userrights-expiry": "Vanhentuu:", + "userrights-expiry-existing": "Nykyinen vanhentumisaika: $3, $2", + "userrights-expiry-othertime": "Muu aika:", + "userrights-expiry-options": "1 päivä:1 day,1 viikko:1 week,1 kuukausi:1 month,3 kuukautta:3 months,6 kuukautta:6 months,1 vuosi:1 year", "userrights-conflict": "Päällekkäinen käyttöoikeuksien muutos! Tarkista tekemäsi muutokset ja vahvista ne.", "group": "Ryhmä", "group-user": "käyttäjät", @@ -1330,6 +1332,42 @@ "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (katso myös [[Special:NewPages|lista uusista sivuista]])", "recentchanges-legend-plusminus": "(''±123'')", "recentchanges-submit": "Näytä", + "rcfilters-activefilters": "Aktiiviset suodattimet", + "rcfilters-restore-default-filters": "Palauta oletussuodattimet", + "rcfilters-clear-all-filters": "Tyhjennä kaikki suodattimet", + "rcfilters-search-placeholder": "Suodattimen viimeaikaiset muutokset (selaa tai aloita kirjoittaa)", + "rcfilters-invalid-filter": "Suodatin on epäkelpo", + "rcfilters-empty-filter": "Ei aktiivisia suodattimia. Kaikki muutokset näytetään.", + "rcfilters-filterlist-title": "Suodattimet", + "rcfilters-highlightmenu-title": "Valitse väri", + "rcfilters-filterlist-noresults": "Ei löytynyt suodattimia", + "rcfilters-filtergroup-registration": "Käyttäjän rekisteröinti", + "rcfilters-filter-registered-label": "Rekisteröitynyt", + "rcfilters-filter-registered-description": "Kirjautuneet muokkaukset.", + "rcfilters-filter-unregistered-label": "Rekisteröimätön", + "rcfilters-filter-unregistered-description": "Muokkaajat, jotka eivät ole kirjautuneet sisään.", + "rcfilters-filter-editsbyself-label": "Omat muokkauksesi", + "rcfilters-filter-editsbyself-description": "Muokkauksesi", + "rcfilters-filter-editsbyother-label": "Muiden muokkaukset", + "rcfilters-filter-editsbyother-description": "Muutokset jotka tehneet muut käyttäjät (et sinä).", + "rcfilters-filter-user-experience-level-newcomer-label": "Tulokkaat", + "rcfilters-filter-user-experience-level-learner-label": "Oppijat", + "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ää aktiivisena ja 500 muokkausta.", + "rcfilters-filtergroup-automated": "Automatisoidut muutokset", + "rcfilters-filter-bots-label": "Botti", + "rcfilters-filter-bots-description": "Muokkaukset jotka tehty automaattisilla työkaluilla.", + "rcfilters-filter-humans-label": "Ihminen (ei botti)", + "rcfilters-filtergroup-significance": "Merkitys", + "rcfilters-filter-minor-label": "Pienet muutokset", + "rcfilters-filter-major-label": "Ei-pienet muutokset", + "rcfilters-filter-major-description": "Muokkauksia ei ole merkitty kuin pieniksi.", + "rcfilters-filtergroup-changetype": "Muutoksen tyyppi", + "rcfilters-filter-pageedits-label": "Sivun muokkaukset", + "rcfilters-filter-pageedits-description": "Muokkaukset wikin sisältöön, keskusteluihin, luokkakuvauksiin....", + "rcfilters-filter-newpages-description": "Muokkaukset jotka luovat uusia sivuja.", + "rcfilters-filter-categorization-label": "Luokkamuutokset", + "rcfilters-filter-logactions-label": "Kirjatut toimet", "rcnotefrom": "Alla ovat muutokset <strong>$3, $4</strong> lähtien. (Enintään <strong>$1</strong> näytetään.)", "rclistfrom": "Näytä uudet muutokset $3 kello $2 alkaen", "rcshowhideminor": "$1 pienet muutokset", @@ -1463,7 +1501,7 @@ "uploaded-setting-handler-svg": "SVG that sets the \"handler\" attribute with remote/data/script is blocked. Found <code>$1=\"$2\"</code> in the uploaded SVG file.", "uploaded-remote-url-svg": "SVG that sets any style attribute with remote URL is blocked. Found <code>$1=\"$2\"</code> in the uploaded SVG file.", "uploaded-image-filter-svg": "Found image filter with URL: <code><$1 $2=\"$3\"></code> in the uploaded SVG file.", - "uploadscriptednamespace": "Tämä SVG-tiedosto sisältää nimiavaruuden ”$1”, joka ei ole sallittu.", + "uploadscriptednamespace": "Tämä SVG-tiedosto sisältää nimiavaruuden ”<nowiki>$1</nowiki>”, joka ei ole sallittu.", "uploadinvalidxml": "Ladatun tiedoston XML-koodia ei voitu jäsentää kunnolla.", "uploadvirus": "Tiedosto sisältää viruksen. Tarkemmat tiedot: $1", "uploadjava": "Tämä tiedosto on ZIP-tiedosto, joka sisältää Java .class-tiedoston.\nJava-tiedostojen tallentaminen ei ole sallittua, sillä ne saattavat aiheuttaa tietoturvariskejä.", @@ -1834,6 +1872,7 @@ "apisandbox-sending-request": "API-pyyntöä lähetetään...", "apisandbox-loading-results": "API-tuloksia vastaanotetaan...", "apisandbox-results-error": "Tapahtui virhe ladattaessa API-kyselyn vastausta: $1", + "apisandbox-request-format-url-label": "URL-kyselymerkkijono", "apisandbox-request-url-label": "Pyynnön URL", "apisandbox-request-time": "Pyyntöön kulunut aika: {{PLURAL:$1|$1 ms}}", "apisandbox-results-fixtoken": "Korjaa \"token\" ja lähetä uudelleen", @@ -1841,6 +1880,7 @@ "apisandbox-alert-field": "Tässä kentässä oleva arvo ei ole kelvollinen.", "apisandbox-continue": "Jatka", "apisandbox-continue-clear": "Tyhjennä", + "apisandbox-param-limit": "Kirjoita <kbd>max</kbd> käyttääksesi ylärajaa.", "apisandbox-multivalue-all-namespaces": "$1 (Kaikki nimiavaruudet)", "apisandbox-multivalue-all-values": "$1 (Kaikki arvot)", "booksources": "Kirjalähteet", @@ -1849,6 +1889,9 @@ "booksources-search": "Hae", "booksources-text": "Alla linkkejä ulkopuolisiin sivustoihin, joilla myydään uusia ja käytettyjä kirjoja. Sivuilla voi myös olla lisätietoa kirjoista.", "booksources-invalid-isbn": "Annettu ISBN-numero ei ole kelvollinen. Tarkista alkuperäisestä lähteestä kirjoitusvirheiden varalta.", + "magiclink-tracking-rfc": "Sivut, jotka käyttävät RFC-taikalinkkejä", + "magiclink-tracking-pmid": "Sivut, jotka käyttävät PMID-taikalinkkejä", + "magiclink-tracking-isbn": "Sivut, jotka käyttävät ISBN-taikalinkkejä", "specialloguserlabel": "Suorittaja:", "speciallogtitlelabel": "Kohde (sivu tai {{ns:user}}:käyttäjänimi):", "log": "Lokit", @@ -2376,6 +2419,8 @@ "cant-move-to-user-page": "Sinulla ei ole oikeutta siirtää sivua käyttäjäsivuksi (paitsi käyttäjän alasivuksi).", "cant-move-category-page": "Sinulla ei ole oikeutta siirtää luokkien sivuja.", "cant-move-to-category-page": "Sinulla ei ole oikeutta siirtää sivua luokkasivuksi.", + "cant-move-subpages": "Sivulla ei ole oikeutta siirtää alasivuja.", + "namespace-nosubpages": "Nimiavaruus \"$1\" ei hyväksy alasivuja.", "newtitle": "Uusi nimi sivulle:", "move-watch": "Tarkkaile tätä sivua", "movepagebtn": "Siirrä sivu", @@ -2632,6 +2677,7 @@ "pageinfo-length": "Sivun pituus (tavuina)", "pageinfo-article-id": "Sivun tunnistenumero", "pageinfo-language": "Sivun sisällön kieli", + "pageinfo-language-change": "vaihda", "pageinfo-content-model": "Sivun sisältömalli", "pageinfo-content-model-change": "muuta", "pageinfo-robot-policy": "Hakukonemerkinnät", @@ -3514,7 +3560,7 @@ "logentry-tag-update-revision": "$1 {{GENDER:$2|päivitti}} merkkauksia kohdeversiossa $4 sivulla $3 ({{PLURAL:$7|lisätty}} $6; {{PLURAL:$9|poistettu}} $8)", "logentry-tag-update-logentry": "$1 {{GENDER:$2|päivitti}} merkkauksia lokimerkinnässä $5 sivulla $3 ({{PLURAL:$7|lisätty}} $6; {{PLURAL:$9|poistettu}} $8)", "rightsnone": "(ei oikeuksia)", - "revdelete-summary": "yhteenvedon", + "rightslogentry-temporary-group": "$1 (tilapäinen, $2 asti)", "feedback-adding": "Lisätään palautetta sivulle...", "feedback-back": "Takaisin", "feedback-bugcheck": "Hyvä! Varmista vielä, että ohjelmointivirhettä ei löydy [$1 tunnettujen virheiden luettelosta].", @@ -3539,56 +3585,12 @@ "feedback-useragent": "User agent:", "searchsuggest-search": "Hae {{GRAMMAR:elative|{{SITENAME}}}}", "searchsuggest-containing": "sisältää...", - "api-error-autoblocked": "Sinun IP-osoitteesi on estetty automaattisesti, koska sitä on käyttänyt estetty käyttäjätunnus.", - "api-error-badaccess-groups": "Sinulla ei ole oikeutta tallentaa tiedostoja tähän wikiin.", "api-error-badtoken": "Sisäinen virhe: virheellinen tarkistussumma.", - "api-error-blocked": "Sinut on estetty muokkaamasta.", - "api-error-copyuploaddisabled": "Tallentaminen URL-osoitteesta ei ole käytössä.", - "api-error-duplicate": "Samansisältöisiä tiedostoja löytyi {{PLURAL:$1|yksi kappale|useampia kappaleita}}.", - "api-error-duplicate-archive": "Sivustolla oli aiemmin {{PLURAL:$1|toinen samansisältöinen tiedosto|toisia samansisältöisiä tiedostoja}}, mutta {{PLURAL:$1|se|ne}} poistettiin.", - "api-error-empty-file": "Määrittämäsi tiedosto on tyhjä.", "api-error-emptypage": "Ei ole sallittua luoda uutta, tyhjää sivua.", - "api-error-fetchfileerror": "Sisäinen virhe: Jotakin meni pieleen kun tiedostoa haettiin.", - "api-error-fileexists-forbidden": "Tiedosto nimellä \"$1\" on jo olemassa eikä sitä voi korvata.", - "api-error-fileexists-shared-forbidden": "Tiedosto nimeltä \"$1\" on jo olemassa yhteisessä tietovarastossa eikä sitä voi korvata.", - "api-error-file-too-large": "Määrittämäsi tiedosto on liian iso.", - "api-error-filename-tooshort": "Tiedoston nimi on liian lyhyt.", - "api-error-filetype-banned": "Tämän tyyppisten tiedostojen tallentaminen on kielletty.", - "api-error-filetype-banned-type": "$1 {{PLURAL:$4|ei ole sallittu tiedostomuoto|eivät ole sallittuja tiedostomuotoja}}. {{PLURAL:$3|Sallittu tiedostomuoto on|Sallittuja tiedostomuotoja ovat}} $2.", - "api-error-filetype-missing": "Tiedostolta puuttuu tiedostopääte.", - "api-error-hookaborted": "Laajennuskoodi esti yrittämäsi muutoksen.", - "api-error-http": "Sisäinen virhe: palvelimeen ei saatu yhteyttä.", - "api-error-illegal-filename": "Tiedoston nimi ei kelpaa.", - "api-error-internal-error": "Sisäinen virhe: jotain meni vikaan tallennuksesi käsittelyssä.", - "api-error-invalid-file-key": "Sisäinen virhe: tiedostoa ei löytynyt välikaisvarastosta.", - "api-error-missingparam": "Sisäinen virhe: pyynnöstä puutuu parametreja.", - "api-error-missingresult": "Sisäinen virhe: ei voitu varmistaa, että tallennus onnistui.", - "api-error-mustbeloggedin": "Sinun pitää olla kirjautunut sisään, jotta voisit tallentaa tiedostoja.", - "api-error-mustbeposted": "Sisäinen virhe: HTTP POST-pyyntö edellytetty.", - "api-error-noimageinfo": "Tallennus onnistui, mutta palvelin ei antanut meille tietoja tiedostosta.", - "api-error-nomodule": "Sisäinen virhe: tallennusmoduulia ei ole asetettu.", - "api-error-ok-but-empty": "Sisäinen virhe: palvelimelta ei saatu vastausta.", - "api-error-overwrite": "Olemassa olevan tiedoston korvaaminen toisella ei ole sallittua.", - "api-error-ratelimited": "Yrität tallentaa lyhyessä ajassa enemmän tiedostoja kuin tämä wiki sallii.\nYritä uudelleen muutaman minuutin kuluttua.", - "api-error-stashfailed": "Sisäinen virhe: Väliaikaisen tiedoston tallentaminen epäonnistui.", "api-error-publishfailed": "Sisäinen virhe: Väliaikaisen tiedoston julkaiseminen epäonnistui.", - "api-error-stasherror": "Tiedostoa ladattaessa tapahtui virhe.", - "api-error-stashedfilenotfound": "Tallennettavaa tiedostoa ei löytynyt säilöstä.", - "api-error-stashpathinvalid": "Hakupolku, jossa säilötyn tiedoston olisi pitänyt olla, oli virheellinen.", - "api-error-stashfilestorage": "Tiedoston tallentaminen säilöön epäonnistui.", - "api-error-stashzerolength": "Palvelin ei voinut säilöä tiedostoa, koska sen pituus oli nolla.", - "api-error-stashnotloggedin": "Sinun täytyy kirjautua sisään, jotta voit tallentaa tiedostoja lataussäilöön.", - "api-error-stashwrongowner": "Tiedosto, jota yritit käyttää säilössä, ei ole sinun omasi.", - "api-error-stashnosuchfilekey": "Tiedoston avainta, jota yritit käyttää säilössä, ei ole olemassa.", - "api-error-timeout": "Palvelin ei vastannut odotetun ajan kuluessa.", - "api-error-unclassified": "Tapahtui tuntematon virhe.", - "api-error-unknown-code": "Tuntematon virhe: $1.", - "api-error-unknown-error": "Sisäinen virhe: Jotain meni vikaan kun tiedostoasi yritettiin tallentaa.", - "api-error-unknown-warning": "Tuntematon varoitus: $1.", + "api-error-stashfailed": "Sisäinen virhe: Väliaikaisen tiedoston tallentaminen epäonnistui.", + "api-error-unknown-warning": "Tuntematon varoitus: \"$1\".", "api-error-unknownerror": "Tuntematon virhe: $1.", - "api-error-uploaddisabled": "Tiedostojen tallentaminen ei ole käytössä.", - "api-error-verification-error": "Tiedosto voi olla vioittunut, tai sillä saattaa olla väärä tiedostopääte.", - "api-error-was-deleted": "Tämänniminen tiedosto on aikaisemmin tallennettu ja sittemmin poistettu.", "duration-seconds": "$1 {{PLURAL:$1|sekunti|sekuntia}}", "duration-minutes": "$1 {{PLURAL:$1|minuutti|minuuttia}}", "duration-hours": "$1 {{PLURAL:$1|tunti|tuntia}}", @@ -3635,6 +3637,9 @@ "pagelang-select-lang": "Valitse kieli", "pagelang-reason": "Syy", "pagelang-submit": "Lähetä", + "pagelang-nonexistent-page": "Sivua $1 ei ole olemassa.", + "pagelang-unchanged-language": "Sivu $1 on jo asetettu kielelle $2.", + "pagelang-db-failed": "Tietokanta epäonnistui vaihtamaan sivun kielen.", "right-pagelang": "Vaihtaa sivun kieli", "action-pagelang": "muuttaa sivun kieliasetuksia", "log-name-pagelang": "Kielenvaihtoloki", @@ -3706,6 +3711,7 @@ "mw-widgets-titleinput-description-new-page": "sivua ei ole olemassa vielä", "mw-widgets-titleinput-description-redirect": "ohjaus kohteeseen $1", "mw-widgets-categoryselector-add-category-placeholder": "Lisää luokka...", + "mw-widgets-usersmultiselect-placeholder": "Lisää enemmän...", "sessionmanager-tie": "!!FYZZ!!Cannot combine multiple request authentication types: $1.", "sessionprovider-generic": "$1 istuntoa", "sessionprovider-mediawiki-session-cookiesessionprovider": "istuntoja, joissa on evästeet käytössä", @@ -3728,7 +3734,7 @@ "log-action-filter-block-reblock": "Estoasetusten muuttaminen", "log-action-filter-block-unblock": "Eston poistaminen", "log-action-filter-contentmodel-change": "Sisältömallin muuttaminen", - "log-action-filter-contentmodel-new": "Luotu sivu, jossa on poikkeava Sisältömalli", + "log-action-filter-contentmodel-new": "Luotu sivu, jossa on poikkeava sisältömalli", "log-action-filter-delete-delete": "Sivun poistaminen", "log-action-filter-delete-delete_redir": "Ohjauksen päällekirjoitus", "log-action-filter-delete-restore": "Sivun palauttaminen", @@ -3790,6 +3796,7 @@ "authmanager-realname-label": "Oikea nimi", "authmanager-realname-help": "Käyttäjän oikea nimi", "authmanager-provider-password": "Salasanapohjainen varmennus", + "authmanager-provider-password-domain": "Salasana- ja toimialue-pohjainen todennus", "authmanager-provider-temporarypassword": "Väliaikainen salasana", "authprovider-confirmlink-message": "Viimeisimpien kirjautumisyritystesi perusteella seuraavat tunnukset voidaan linkittää wikitunnuksellesi. Tunnusten linkittäminen mahdollistaa sisäänkirjautumisen niitä käyttämällä. Valitse tunnukset, jotka tulisi linkittää.", "authprovider-confirmlink-request-label": "Tunnukset, jotka tulisi yhdistää", diff --git a/languages/i18n/fr.json b/languages/i18n/fr.json index 5a59952a2c..127583882f 100644 --- a/languages/i18n/fr.json +++ b/languages/i18n/fr.json @@ -151,7 +151,9 @@ "Pymouss", "Derugon", "Benoit Rochon", - "Fitoschido" + "Fitoschido", + "Archaeodontosaurus", + "Trizek (WMF)" ] }, "tog-underline": "Soulignement des liens :", @@ -565,19 +567,12 @@ "login": "Connexion", "login-security": "Vérifier votre identité", "nav-login-createaccount": "Créer un compte ou se connecter", - "userlogin": "Créer un compte ou se connecter", - "userloginnocreate": "Connexion", "logout": "Se déconnecter", "userlogout": "Déconnexion", "notloggedin": "Non connecté", "userlogin-noaccount": "Vous n’avez pas de compte ?", "userlogin-joinproject": "Rejoignez {{SITENAME}}", - "nologin": "Vous n’avez pas de compte ? $1.", - "nologinlink": "Créer un compte", "createaccount": "Créer un compte", - "gotaccount": "Vous avez déjà un compte ? $1.", - "gotaccountlink": "Connectez-vous", - "userlogin-resetlink": "Vous avez oublié vos détails de connexion ?", "userlogin-resetpassword-link": "Mot de passe oublié ?", "userlogin-helplink2": "Aide pour se connecter", "userlogin-loggedin": "Vous êtes déjà connecté{{GENDER:$1||e|(e)}} en tant que $1.\nUtilisez le formulaire ci-dessous pour vous connecter avec un autre compte utilisateur.", @@ -590,7 +585,6 @@ "createaccountmail": "Utiliser un mot de passe aléatoire temporaire et l’envoyer à l’adresse de courriel spécifiée", "createaccountmail-help": "Peut être utilisé pour créer un compte pour une autre personne sans connaître le mot de passe.", "createacct-realname": "Nom réel (facultatif)", - "createaccountreason": "Motif :", "createacct-reason": "Motif", "createacct-reason-ph": "Pourquoi créez-vous un autre compte", "createacct-reason-help": "Message affiché dans le journal de création de compte", @@ -790,7 +784,7 @@ "selfredirect": "<strong>Attention :</strong> vous êtes en train de rediriger la page vers elle-même.\nVous pouvez avoir spécifié la mauvaise cible pour la redirection, ou vous modifiez peut-être la mauvaise page.\nSi vous cliquez de nouveau sur « {{int:savearticle}} », la redirection sera tout de même créée.", "missingcommenttext": "Veuillez entrer un commentaire ci-dessous.", "missingcommentheader": "<strong>Rappel :</strong> vous n’avez pas fourni de sujet pour ce commentaire.\nSi vous cliquez de nouveau sur « {{int:Savearticle}} », votre modification sera enregistrée sans sujet.", - "summary-preview": "Aperçu du résumé :", + "summary-preview": "Aperçu du résumé de modification :", "subject-preview": "Aperçu du sujet :", "previewerrortext": "Une erreur s’est produite lors de la tentative de prévisualisation de vos modifications.", "blockedtitle": "L’utilisateur est bloqué.", @@ -942,7 +936,7 @@ "last": "diff", "page_first": "première", "page_last": "dernière", - "histlegend": "Diff de sélection : cochez les boîtes radio des versions à comparer et appuyez sur entrée ou sur le bouton en bas.<br />\nLégende: <strong>({{int:cur}})</strong> = différence avec la dernière version, <strong>({{int:last}})</strong> = différence avec la précédente version, <strong>{{int:minoreditletter}}</strong> = modification mineure.", + "histlegend": "Sélection du diff : cochez les boutons radio des versions à comparer et appuyez sur entrée ou sur le bouton en bas.<br />\nLégende : <strong>({{int:cur}})</strong> = différence avec la dernière version, <strong>({{int:last}})</strong> = différence avec la version précédente, <strong>{{int:minoreditletter}}</strong> = modification mineure.", "history-fieldset-title": "Naviguer dans l’historique", "history-show-deleted": "Supprimés seulement", "histfirst": "les plus anciennes", @@ -1101,6 +1095,7 @@ "search-interwiki-caption": "Projets frères", "search-interwiki-default": "Résultats de $1 :", "search-interwiki-more": "(plus)", + "search-interwiki-more-results": "résultats supplémentaires", "search-relatedarticle": "Reliés", "searchrelated": "reliés", "searchall": "tout", @@ -1190,6 +1185,7 @@ "youremail": "Courriel :", "username": "{{GENDER:$1|Nom d'utilisateur|Nom d'utilisatrice}} :", "prefs-memberingroups": "{{GENDER:$2|Membre}} {{PLURAL:$1|du groupe|des groupes}} :", + "group-membership-link-with-expiry": "$1 (jusqu'à $2)", "prefs-registration": "Date d'inscription :", "yourrealname": "Nom réel :", "yourlanguage": "Langue :", @@ -1234,19 +1230,28 @@ "editusergroup": "Charger des groupes d’utilisateurs", "editinguser": "Modification des droits de l’{{GENDER:$1|utilisateur|utilisatrice}} <strong>[[User:$1|$1]]</strong> $2", "viewinguserrights": "Affichage des droits utilisateur de {{GENDER:$1|l’utilisateur|l’utilisatrice}} <strong>[[User:$1|$1]]</strong> $2", - "userrights-editusergroup": "Modifier les groupes de l'utilisateur", - "userrights-viewusergroup": "Afficher les groupes d'utilisateurs", + "userrights-editusergroup": "Modifier les groupes de l'utilisat{{GENDER:$1|eur|rice}}", + "userrights-viewusergroup": "Afficher les groupes d'utilisat{{GENDER:$1|eur|rice}}", "saveusergroups": "Enregistrer les groupes de l’{{GENDER:$1|utilisateur|utilisatrice}}", "userrights-groupsmember": "Membre de :", "userrights-groupsmember-auto": "Membre implicite de :", "userrights-groupsmember-type": "$1", - "userrights-groups-help": "Vous pouvez modifier les groupes auxquels appartient {{GENDER:$1|cet utilisateur|cette utilisatrice}} :\n* Une case cochée signifie que l’utilisat{{GENDER:$1|eur|rice}} se trouve dans ce groupe.\n* Une case non cochée signifie qu’{{GENDER:$1|il|elle}} ne s’y trouve pas.\n* Un astérisque (*) indique que vous ne pouvez pas retirer ce groupe une fois que vous l’avez ajouté, ou vice-versa.", + "userrights-groups-help": "Vous pouvez modifier les groupes auxquels appartient {{GENDER:$1|cet utilisateur|cette utilisatrice}} :\n* Une case cochée signifie que l’utilisat{{GENDER:$1|eur|rice}} se trouve dans ce groupe.\n* Une case non cochée signifie qu’{{GENDER:$1|il|elle}} ne s’y trouve pas.\n* Un astérisque (*) indique que vous ne pouvez pas retirer ce groupe une fois que vous l’avez ajouté, ou vice-versa.\n* Un dièse (#) indique que vous ne pouvez que rallonger le délai d'expiration du groupe et non pas le raccourcir.", "userrights-reason": "Motif :", "userrights-no-interwiki": "Vous n'avez pas la permission de modifier les droits utilisateur sur d'autres wikis.", "userrights-nodatabase": "La base de données « $1 » n'existe pas ou n'est pas locale.", "userrights-changeable-col": "Les groupes que vous pouvez modifier", "userrights-unchangeable-col": "Les groupes que vous ne pouvez pas modifier", "userrights-irreversible-marker": "$1*", + "userrights-expiry-current": "Expire le $1", + "userrights-expiry-none": "N'expire pas", + "userrights-expiry": "Date d’expiration :", + "userrights-expiry-existing": "Date d'expiration existante : $2 à $3", + "userrights-expiry-othertime": "Autre temps :", + "userrights-expiry-options": "1 jour:1 day,1 semaine:1 week,1 mois:1 month,3 mois:3 montghs,6 mois:6 month,1 an:1 year", + "userrights-invalid-expiry": "La date d'expiration pour le groupe « $1 » n'est pas valide.", + "userrights-expiry-in-past": "La date d'expiration pour le groupe « $1 » est dépassée.", + "userrights-cannot-shorten-expiry": "Vous ne pouvez pas rallonger la durée d'expiration du groupe « $1 ». Seuls les utilisateurs disposant de l'autorisation d'ajouter et de supprimer ce groupe peuvent rallonger les durées d'expiration.", "userrights-conflict": "Conflit de modification des droits utilisateur ! Veuillez relire et confirmer vos modifications.", "group": "Groupe :", "group-user": "Utilisateurs", @@ -1448,22 +1453,55 @@ "recentchanges-legend-plusminus": "(''±123'')", "recentchanges-submit": "Lister", "rcfilters-activefilters": "Filtres actifs", + "rcfilters-restore-default-filters": "Rétablir les filtres par défaut", + "rcfilters-clear-all-filters": "Effacer tous les filtres", "rcfilters-search-placeholder": "Modifications récentes de filtres (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-feedbacklink": "Fournir un commentaire sur les nouveaux filtres (en bêta)", + "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-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-filtergroup-authorship": "Modifier la paternité", "rcfilters-filter-editsbyself-label": "Vos propres modifications", "rcfilters-filter-editsbyself-description": "Vos modifications.", "rcfilters-filter-editsbyother-label": "Modifications par d’autres.", "rcfilters-filter-editsbyother-description": "Modifications créées par d’autres utilisateurs (pas vous).", - "rcfilters-filtergroup-userExpLevel": "Niveau d’expérience utilisateur", - "rcfilters-filter-userExpLevel-newcomer-label": "Nouveaux arrivants", - "rcfilters-filter-userExpLevel-newcomer-description": "Tout nouveaux éditeurs : moins de 10 modifications et 4 jours d’activité.", - "rcfilters-filter-userExpLevel-learner-label": "Apprentis", - "rcfilters-filter-userExpLevel-learner-description": "Davantage de jours d’activité et de modifications que les 'Nouveaux arrivants' mais moins que les 'Utilisateurs expérimentés'.", - "rcfilters-filter-userExpLevel-experienced-label": "Utilisateurs expérimentés", - "rcfilters-filter-userExpLevel-experienced-description": "Plus de 30 jours d’activité et 500 modifications", + "rcfilters-filtergroup-userExpLevel": "Niveau d’expérience (uniquement pour les utilisateurs enregistrés)", + "rcfilters-filtergroup-user-experience-level-conflicts-unregistered": "Ce filtre est désactivé car il ne recherche que les utilisateurs enregistrés, et le filtre \"Unregistered\" annule son effet.", + "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-learner-label": "Apprentis", + "rcfilters-filter-user-experience-level-learner-description": "Davantage de jours d’activité et de modifications que les « Nouveaux arrivants » mais moins que les « 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-filtergroup-automated": "Contributions automatisées", + "rcfilters-filter-bots-label": "Robot", + "rcfilters-filter-bots-description": "Modifications faites par des outils automatisés.", + "rcfilters-filter-humans-label": "Humain (non robot)", + "rcfilters-filter-humans-description": "Modifications faites par des éditeurs humains.", + "rcfilters-filtergroup-reviewstatus": "Etat de révision", + "rcfilters-filtergroup-significance": "Signification", + "rcfilters-filter-minor-label": "Modifications mineures", + "rcfilters-filter-minor-description": "Modifications que l’auteur a marquées comme mineures.", + "rcfilters-filter-major-label": "Modifications non mineures", + "rcfilters-filter-major-description": "Modifications non marquées comme mineures.", + "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…", + "rcfilters-filter-newpages-label": "Créations de page", + "rcfilters-filter-newpages-description": "Modifications créant de nouvelles pages.", + "rcfilters-filter-categorization-label": "Modifications de catégorie", + "rcfilters-filter-categorization-description": "Enregistrements de pages ajoutées ou supprimées des catégories.", + "rcfilters-filter-logactions-label": "Actions tracées", + "rcfilters-filter-logactions-description": "Actions d’administration, créations de compte, suppression de pages, téléchargements…", "rcnotefrom": "Ci-dessous {{PLURAL:$5|la modification effectuée|les modifications effectuées}} depuis le <strong>$3, $4</strong> (affichées jusqu’à <strong>$1</strong>).", "rclistfrom": "Afficher les nouvelles modifications depuis le $3 à $2", "rcshowhideminor": "$1 les modifications mineures", @@ -1527,7 +1565,7 @@ "upload_directory_read_only": "Le serveur web n’a pas accès en écriture au répertoire d’import de fichier ($1).", "uploaderror": "Erreur lors de l’import", "upload-recreate-warning": "<strong>Attention : Un fichier portant ce nom a été supprimé ou déplacé.</strong>\n\nLe journal des suppressions et celui des déplacements de cette page sont affichés ici pour informations :", - "uploadtext": "Utilisez ce formulaire pour importer des fichiers sur le serveur.\nPour voir ou rechercher des images précédemment envoyées, consultez la [[Special:FileList|liste des images]]. L’import est aussi enregistré dans le [[Special:Log/upload|journal d’import des fichiers]], et les suppressions dans le [[Special:Log/delete|journal des suppressions]].\n\nPour inclure un fichier dans une page, utilisez un lien de la forme :\n* '''<code><nowiki>[[</nowiki>{{ns:file}}<nowiki>:fichier.jpg]]</nowiki></code>''', pour afficher le fichier en pleine résolution (dans le cas d’une image) ;\n* '''<code><nowiki>[[</nowiki>{{ns:file}}<nowiki>:fichier.png|200px|thumb|left|texte descriptif]]</nowiki></code>''' pour utiliser une miniature de 200 pixels de large dans une boîte à gauche avec « texte descriptif » comme description ;\n* '''<code><nowiki>[[</nowiki>{{ns:media}}<nowiki>:fichier.ogg]]</nowiki></code>''' pour lier directement vers le fichier sans l’afficher.", + "uploadtext": "Utilisez ce formulaire pour téléverser des fichiers sur le serveur.\nPour voir ou rechercher des images précédemment envoyées, consultez la [[Special:FileList|liste des fichiers téléversés]]. Les envois multiples sont également tracés dans le [[Special:Log/upload|journal des téléversements]], et les suppressions dans le [[Special:Log/delete|journal des suppressions]].\n\nPour inclure un fichier dans une page, utilisez un lien ayant l'un des formats suivants :\n* <strong><code><nowiki>[[</nowiki>{{ns:file}}<nowiki>:fichier.jpg]]</nowiki></code></strong>, pour afficher le fichier en pleine résolution (dans le cas d’une image) ;\n* <strong><code><nowiki>[[</nowiki>{{ns:file}}<nowiki>:fichier.png|200px|thumb|left|texte descriptif]]</nowiki></code></strong> pour utiliser une miniature de 200 pixels de large dans une boîte à gauche avec « texte descriptif » comme description ;\n* <strong><code><nowiki>[[</nowiki>{{ns:media}}<nowiki>:fichier.ogg]]</nowiki></code></strong> pour relier directement le fichier sans l’afficher.", "upload-permitted": "{{PLURAL:$2|Format|Formats}} de fichiers {{PLURAL:$2|autorisé|autorisés}} : $1.", "upload-preferred": "{{PLURAL:$2|Format|Formats}} de fichiers {{PLURAL:$2|préféré|préférés}} : $1.", "upload-prohibited": "‎{{PLURAL:$2|Format|Formats}} de fichiers {{PLURAL:$2|interdit|interdits}} : $1.", @@ -1599,7 +1637,7 @@ "uploaded-setting-handler-svg": "Les SVG qui positionnent l’attribut « handler » avec distant/données/script sont bloqués. <code>$1=\"$2\"</code> a été trouvé dans le fichier SVG téléchargé.", "uploaded-remote-url-svg": "Les SVG qui positionnent un attribut de style avec une URL distante sont bloqués. <code>$1=\"$2\"</code> trouvé dans le fichier SVG téléchargé.", "uploaded-image-filter-svg": "Filtre d’image avec URL trouvé : <code><$1 $2=\"$3\"></code> dans le fichier SVG téléchargé.", - "uploadscriptednamespace": "Ce fichier SVG contient un espace de noms '$1' non autorisé.", + "uploadscriptednamespace": "Ce fichier SVG contient un espace de noms '<nowiki>$1</nowiki>' non autorisé.", "uploadinvalidxml": "Le XML dans le fichier importé n’a pas pu être analysé.", "uploadvirus": "Ce fichier contient un virus ! Pour plus de détails, consultez : $1", "uploadjava": "C’est un fichier ZIP qui contient un fichier Java .class.\nLe téléchargement de fichiers Java n’est pas autorisé, car ils peuvent contourner certaines restrictions de sécurité.", @@ -1883,7 +1921,7 @@ "unusedimages": "Fichiers orphelins", "wantedcategories": "Catégories les plus demandées", "wantedpages": "Pages les plus demandées", - "wantedpages-summary": "Liste des pages inexistantes ayant le plus de lien vers elles, en excluant les pages n’ayant que des redirections pointant vers elles. Pour avoir une liste des pages inexistantes qui ont des redirections pointant vers elles, voyez [[{{#special:BrokenRedirects}}|la liste des redirections cassées]].", + "wantedpages-summary": "Liste des pages inexistantes ayant le plus de liens vers elles, en excluant les pages n’ayant que des redirections pointant vers elles. Pour avoir une liste des pages inexistantes qui ont des redirections pointant vers elles, voyez [[{{#special:BrokenRedirects}}|la liste des redirections cassées]].", "wantedpages-badtitle": "Titre invalide dans les résultats : $1", "wantedfiles": "Fichiers les plus demandés", "wantedfiletext-cat": "Les fichiers suivants sont utilisés, mais n'existent pas localement. Les fichiers qui se trouvent sur un dépôt externe peuvent être listés ici, bien qu'ils soient, de fait, déjà disponibles. Tous ces faux positifs seront <del>barrés</del>. En outre, les pages qui intègrent des fichiers qui n'existent pas sont répertoriées dans [[:$1]].", @@ -1977,8 +2015,10 @@ "apisandbox-sending-request": "Envoi de la requête à l'API...", "apisandbox-loading-results": "Réception des résultats de l'API...", "apisandbox-results-error": "Une erreur s'est produite lors du chargement de la réponse à la requête de l'API: $1.", - "apisandbox-request-params-json": "Paramètres JSON :", + "apisandbox-request-selectformat-label": "Afficher les données de la requête comme :", + "apisandbox-request-format-url-label": "Chaîne de requête de l’URL", "apisandbox-request-url-label": "Requête URL :", + "apisandbox-request-json-label": "Demander du JSON :", "apisandbox-request-time": "Durée de la demande: {{PLURAL:$1|$1 ms}}", "apisandbox-results-fixtoken": "Corrigez le jeton et renvoyez", "apisandbox-results-fixtoken-fail": "Impossible de récupérer le jeton \"$1\"", @@ -2121,7 +2161,7 @@ "emailccsubject": "Copie de votre message à $1 : $2", "emailsent": "Courriel envoyé", "emailsenttext": "Votre message a été envoyé par courriel.", - "emailuserfooter": "Ce courriel a été {{GENDER:$1|envoyé}} par « $1 » à « {{GENDER:$2|$2}} » par la fonction « {{int:emailuser}} » de {{SITENAME}}. {{GENDER:$2|Votre}} courriel sera envoyé directement à l'{{GENDER:$1|émetteur initial}}, en {{GENDER:$1|lui}} mentionnant {{GENDER:$2|votre}} adresse courriel .", + "emailuserfooter": "Ce courriel a été {{GENDER:$1|envoyé}} par « $1 » à « {{GENDER:$2|$2}} » par la fonction « {{int:emailuser}} » de {{SITENAME}}. Si {{GENDER:$2|vous}} répondez à ce courriel, {{GENDER:$2|votre}} courriel sera envoyé directement à l’{{GENDER:$1|émetteur initial}}, en {{GENDER:$1|lui}} mentionnant {{GENDER:$2|votre}} adresse courriel .", "usermessage-summary": "Laisser un message système.", "usermessage-editor": "Messager du système", "watchlist": "Liste de suivi", @@ -2204,7 +2244,7 @@ "deletereason-dropdown": "* Motifs de suppression les plus courants\n** Pourriel\n** Vandalisme\n** Violation des droits d’auteur\n** Demande de l’auteur\n** Redirection cassée", "delete-edit-reasonlist": "Modifier les motifs de suppression de page", "delete-toobig": "Cette page possède un historique important de modifications, dépassant $1 version{{PLURAL:$1||s}}.\nLa suppression de telles pages a été restreinte pour prévenir des perturbations accidentelles de {{SITENAME}}.", - "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}} ;\nveuiller ne procéder qu'avec prudence.", + "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": "<strong>Attention :</strong> [[Special:WhatLinksHere/{{FULLPAGENAME}}|D’autres pages]] ont un lien vers ou incorporent la page que vous allez supprimer.", "rollback": "Révoquer les modifications", @@ -2219,7 +2259,7 @@ "editcomment": "Le résumé de la modification était : <em>$1</em>.", "revertpage": "Révocation des modifications de [[Special:Contributions/$2|$2]] ([[User talk:$2|discussion]]) vers la dernière version de [[User:$1|$1]]", "revertpage-nouser": "Révocation des modifications par un utilisateur masqué à la dernière version par {{GENDER:$1|[[User:$1|$1]]}}", - "rollback-success": "Révocation des modifications effectuées par $1 ;\nrétablissement de la dernière version par $2.", + "rollback-success": "Révocation des modifications effectuées par {{GENDER:$3|$1}} ;\nrétablissement de la dernière version par {{GENDER:$4|$2}}.", "rollback-success-notify": "Modifications annulées par $1 ;\nretour à la dernière révision par $2. [$3 Voir les changements]", "sessionfailure-title": "Erreur de session", "sessionfailure": "Votre session de connexion semble avoir des problèmes ;\ncette action a été annulée en prévention d'un piratage de session.\nVeuillez cliquer sur « Précédent », rechargez la page d'où vous venez, puis réessayez.", @@ -2344,7 +2384,7 @@ "tooltip-invert": "Cochez cette case pour cacher les modifications des pages dans l'espace de noms sélectionné (et l'espace de noms associé si coché)", "tooltip-whatlinkshere-invert": "Cochez cette case pour cacher les liens des pages dans l'espace de nom sélectionné.", "namespace_association": "Espace de noms associé", - "tooltip-namespace_association": "Cochez cette case pour inclure également l'espace de noms de discussion associé à l'espace de noms sélectionné", + "tooltip-namespace_association": "Cochez cette case pour inclure également l'espace de noms de discussion ou du sujet, associé à l'espace de noms sélectionné", "blanknamespace": "(Principal)", "contributions": "Contributions de l’{{GENDER:$1|utilisateur|utilisatrice}}", "contributions-title": "Liste des contributions de l’utilisat{{GENDER:$1|eur|rice|eur}} $1", @@ -2581,7 +2621,7 @@ "exporttext": "Vous pouvez exporter en XML le texte et l’historique d’une page ou d’un ensemble de pages.\nLe résultat peut alors être importé dans un autre wiki utilisant le logiciel MediaWiki via la [[Special:Import|page d’importation]].\n\nPour exporter des pages, entrez leurs titres dans la boîte de texte ci-dessous, à raison d’un titre par ligne. Sélectionnez si vous désirez la version actuelle avec toutes les anciennes versions, avec les lignes de l’historique de la page, ou simplement la page actuelle avec des informations sur la dernière modification.\n\nDans ce dernier cas vous pouvez aussi utiliser un lien, tel que [[{{#Special:Export}}/{{MediaWiki:Mainpage}}]] pour la page [[{{MediaWiki:Mainpage}}]].", "exportall": "Exporter toutes les pages", "exportcuronly": "Exporter uniquement la version courante, sans l’historique complet", - "exportnohistory": "----\n'''Note :''' l’exportation de l’historique complet des pages à l’aide de ce formulaire a été désactivée pour des raisons de performance.", + "exportnohistory": "----\n<strong>Note :</strong> l’exportation de l’historique complet des pages à l’aide de ce formulaire a été désactivée pour des raisons de performance.", "exportlistauthors": "Inclure une liste complète des contributeurs pour chaque page", "export-submit": "Exporter", "export-addcattext": "Ajouter les pages de la catégorie :", @@ -3675,7 +3715,7 @@ "htmlform-user-not-exists": "<strong>$1</strong> n’existe pas.", "htmlform-user-not-valid": "<strong>$1</strong> n’est pas un nom d’utilisateur valide.", "logentry-delete-delete": "$1 {{GENDER:$2|a supprimé}} la page $3", - "logentry-delete-delete_redir": "$1 {{GENDER:$2|supprimé}} redirigé vers $3 par écrasement.", + "logentry-delete-delete_redir": "$1 a {{GENDER:$2|supprimé}} la redirection vers $3 par écrasement", "logentry-delete-restore": "$1 {{GENDER:$2|a restauré}} la page $3", "logentry-delete-event": "$1 {{GENDER:$2|a modifié}} la visibilité {{PLURAL:$5|d'un événement du journal|de $5 événements du journal}} sur $3: $4", "logentry-delete-revision": "$1 {{GENDER:$2|a modifié}} la visibilité {{PLURAL:$5|d'une révision|de $5 révisions}} sur la page $3 : $4", @@ -3742,7 +3782,7 @@ "logentry-tag-update-revision": "$1 {{GENDER:$2|a mis à jour}} les balises de la révision $4 de la page $3 ($6 {{PLURAL:$7|ajoutée|ajoutées}} ; $8 {{PLURAL:$9|supprimée|supprimées}})", "logentry-tag-update-logentry": "$1 {{GENDER:$2|a mis à jour}} les balises de l’entrée de journal $5 de la page $3 ($6 {{PLURAL:$7|ajoutée|ajoutées}} ; $8 {{PLURAL:$9|supprimée|supprimées}})", "rightsnone": "(aucun)", - "revdelete-summary": "résumé de modification", + "rightslogentry-temporary-group": "$1 (temporaire, jusqu'au $2)", "feedback-adding": "Ajout de vos commentaires à la page...", "feedback-back": "Retour", "feedback-bugcheck": "Formidable ! Vérifiez simplement que ce n'est pas un des [$1 bogues déjà connus].", @@ -3767,56 +3807,12 @@ "feedback-useragent": "Agent utilisateur :", "searchsuggest-search": "Rechercher sur {{SITENAME}}", "searchsuggest-containing": "contenant...", - "api-error-autoblocked": "Votre adresse IP a été bloquée automatiquement, parce qu’elle a été utilisée par un utilisateur bloqué.", - "api-error-badaccess-groups": "Vous n'êtes pas autorisé à téléverser des fichiers sur ce wiki.", "api-error-badtoken": "Erreur interne : mauvais « jeton ».", - "api-error-blocked": "Vous avez été bloqué en édition.", - "api-error-copyuploaddisabled": "Les versements via URL sont désactivés sur ce serveur.", - "api-error-duplicate": "Il y a déjà {{PLURAL:$1|un autre fichier présent|d’autres fichiers présents}} sur le site avec le même contenu.", - "api-error-duplicate-archive": "Il y avait déjà {{PLURAL:$1|un autre fichier présent|d’autres fichiers présents}} sur le site avec le même contenu, mais {{PLURAL:$1|il a été supprimé|ils ont été supprimés}}.", - "api-error-empty-file": "Le fichier que vous avez soumis était vide.", "api-error-emptypage": "Création de pages vide n'est pas autorisée.", - "api-error-fetchfileerror": "Erreur interne : Quelque chose s'est mal passé lors de la récupération du fichier.", - "api-error-fileexists-forbidden": "Un fichier nommé \"$1\" existe déjà, et ne peut pas être écrasé.", - "api-error-fileexists-shared-forbidden": "Un fichier nommé \"$1\" existe déjà dans le répertoire des fichiers partagés, et ne peut pas être écrasé.", - "api-error-file-too-large": "Le fichier que vous avez soumis était trop grand.", - "api-error-filename-tooshort": "Le nom du fichier est trop court.", - "api-error-filetype-banned": "Ce type de fichier est interdit.", - "api-error-filetype-banned-type": "$1 {{PLURAL:$4|n'est pas un type de fichier autorisé|ne sont pas des types de fichiers autorisés}}. {{PLURAL:$3|Le type de fichier autorisé est |Les types de fichiers autorisés sont}} $2.", - "api-error-filetype-missing": "L'extension du fichier est manquante.", - "api-error-hookaborted": "La modification que vous avez essayé de faire a été annulée par une extension.", - "api-error-http": "Erreur interne : ne peut se connecter au serveur.", - "api-error-illegal-filename": "Le nom du fichier n'est pas autorisé.", - "api-error-internal-error": "Erreur interne : quelque chose s'est mal passé lors du traitement de votre import sur le wiki.", - "api-error-invalid-file-key": "Erreur interne : fichier non trouvé dans l'espace de stockage temporaire.", - "api-error-missingparam": "Erreur interne : Il manque des paramètres dans la requête.", - "api-error-missingresult": "Erreur interne : Nous n'avons pas pu déterminer si la copie avait réussi.", - "api-error-mustbeloggedin": "Vous devez être connecté pour télécharger des fichiers.", - "api-error-mustbeposted": "Erreur interne : cette requête nécessite la méthode HTTP POST.", - "api-error-noimageinfo": "Le téléchargement a réussi, mais le serveur n’a pas fourni d’information sur le fichier.", - "api-error-nomodule": "Erreur interne : aucun module de versement défini.", - "api-error-ok-but-empty": "Erreur interne : Le serveur n'a pas répondu.", - "api-error-overwrite": "Écraser un fichier existant n'est pas autorisé.", - "api-error-ratelimited": "Vous essayez de téléverser plus de fichiers dans un court espace de temps que ce que ce wiki peut accepter.\nVeuillez réessayer dans quelques minutes.", - "api-error-stashfailed": "Erreur interne : le serveur n'a pas pu enregistrer le fichier temporaire.", "api-error-publishfailed": "Erreur interne : Le serveur n'a pas pu publier le fichier temporaire.", - "api-error-stasherror": "Une erreur s'est produite lors du téléchargement du fichier pour le dissimuler.", - "api-error-stashedfilenotfound": "Le fichier caché n’a pas été trouvé lors de la tentative pour le télécharger depuis sa cachette.", - "api-error-stashpathinvalid": "Le chemin où aurait dû se trouver le fichier caché n’est pas valide.", - "api-error-stashfilestorage": "Une erreur s’est produite en stockant le fichier dans la cachette.", - "api-error-stashzerolength": "Le serveur n’a pas pu cacher le fichier, car il a une taille de zéro.", - "api-error-stashnotloggedin": "Vous devez être connecté pour enregistrer des fichiers dans la cachette de téléchargement.", - "api-error-stashwrongowner": "Le fichier auquel vous essayez d’accéder dans la cachette ne vous appartient pas.", - "api-error-stashnosuchfilekey": "La clé du fichier auquel vous essayez d’accéder dans la cachette n’existe pas.", - "api-error-timeout": "Le serveur n’a pas répondu dans le délai imparti.", - "api-error-unclassified": "Une erreur inconnue s'est produite", - "api-error-unknown-code": "Erreur inconnue : « $1 »", - "api-error-unknown-error": "Erreur interne : quelque chose s'est mal passé lors du téléversement de votre fichier.", + "api-error-stashfailed": "Erreur interne : le serveur n'a pas pu enregistrer le fichier temporaire.", "api-error-unknown-warning": "Avertissement inconnu : « $1 ».", "api-error-unknownerror": "Erreur inconnue : « $1 ».", - "api-error-uploaddisabled": "Le téléversement est désactivé sur ce wiki.", - "api-error-verification-error": "Ce fichier est peut-être corrompu, ou son extension est incorrecte.", - "api-error-was-deleted": "Un fichier portant ce nom a déjà été importé puis supprimé.", "duration-seconds": "$1 seconde{{PLURAL:$1||s}}", "duration-minutes": "$1 minute{{PLURAL:$1||s}}", "duration-hours": "$1 heure{{PLURAL:$1||s}}", @@ -3938,6 +3934,7 @@ "mw-widgets-titleinput-description-new-page": "la page n’existe pas encore", "mw-widgets-titleinput-description-redirect": "redirection vers $1", "mw-widgets-categoryselector-add-category-placeholder": "Ajouter une catégorie...", + "mw-widgets-usersmultiselect-placeholder": "Ajouter plus ...", "sessionmanager-tie": "Impossible de combiner des types multiples de demandes d’authentification : $1.", "sessionprovider-generic": "sessions $1", "sessionprovider-mediawiki-session-cookiesessionprovider": "sessions basées sur les témoins (''cookies'')", @@ -4069,7 +4066,7 @@ "usercssispublic": "Veuillez noter: les sous-pages CSS ne doivent pas contenir de données confidentielles parce qu'elles sont visibles des autres utilisateurs.", "restrictionsfield-badip": "Adresse IP ou plage non valide : $1", "restrictionsfield-label": "Plages IP autorisées :", - "restrictionsfield-help": "Une adresse IP ou une plage CIDR par ligne. Pour tout activer, utiliser <br><code>0.0.0.0/0</code><br><code>::/0</code>", + "restrictionsfield-help": "Une adresse IP ou une plage CIDR par ligne. Pour tout activer, utiliser <pre>0.0.0.0/0\n::/0</pre>", "revid": "version $1", "pageid": "ID de page $1" } diff --git a/languages/i18n/frp.json b/languages/i18n/frp.json index 006492e5f6..23b5493305 100644 --- a/languages/i18n/frp.json +++ b/languages/i18n/frp.json @@ -554,8 +554,6 @@ "passwordreset-emaildisabled": "Les fonccionalitâts de mèssageria èlèctronica sont étâyes dèsactivâyes sur cél vouiqui.", "passwordreset-username": "Nom d’utilisator :", "passwordreset-domain": "Domêno :", - "passwordreset-capture": "Vos voléd vêre lo mèssâjo rèsultent ?", - "passwordreset-capture-help": "Se vos pouentâd cela câsa, lo mèssâjo (avouéc lo contresegno temporèro) vos serat montrâ quand serat mandâ a l’utilisator.", "passwordreset-email": "Adrèce èlèctronica :", "passwordreset-emailtitle": "Dètalys du comptio dessus {{SITENAME}}", "passwordreset-emailtext-ip": "Yon (de sûr vos, avouéc l’adrèce IP $1) at demandâ na remês’a zérô de voutron\ncontresegno por {{SITENAME}} ($4). {{PLURAL:$3|Ceti comptio utilisator est associyê|Cetos comptios utilisators sont associyês}}\na cel’adrèce èlèctronica :\n\n$2\n\n{{PLURAL:$3|Cél contresegno temporèro èxpirerat|Celos contresegnos temporèros èxpireront}} dens {{PLURAL:$5|un jorn|$5 jorns}}.\nOra vos vos dête branchiér et pués chouèsir un contresegno novél. Se cela demanda vint pas de vos\nou ben se vos vos éte rapelâ de voutron contresegno originâl et que vos en voléd pas més changiér,\nvos pouede ignorar cél mèssâjo et continuar a empleyér voutron viely contresegno.", @@ -967,8 +965,6 @@ "saveprefs": "Encartar", "restoreprefs": "Rètablir tota la configuracion per dèfôt (dedens totes les sèccions)", "prefs-editing": "Changement", - "rows": "Renches :", - "columns": "Colones :", "searchresultshead": "Rechèrche", "stub-threshold": "Lendâr por lo formatâjo des lims de vers los començons ($1) :", "stub-threshold-sample-link": "ègzemplo", @@ -1060,12 +1056,9 @@ "userrights-reason": "Rêson :", "userrights-no-interwiki": "Vos éd pas la pèrmission de changiér de drêts d’utilisator sur d’ôtros vouiquis.", "userrights-nodatabase": "La bâsa de balyês « $1 » ègziste pas ou ben est pas locâla.", - "userrights-nologin": "Vos vos dête [[Special:UserLogin|branchiér]] avouéc un comptio d’administrator por balyér de drêts d’utilisator.", - "userrights-notallowed": "Vos éd pas la pèrmission de balyér enlevar de drêts d’utilisator.", "userrights-changeable-col": "Les tropes que vos pouede changiér", "userrights-unchangeable-col": "Les tropes que vos pouede pas changiér", "userrights-conflict": "Disputa de changement de drêts d’utilisator ! Se vos plét, controlâd et pués confirmâd voutros changements.", - "userrights-removed-self": "Vos éd enlevâ los voutros drêts. Cen fât que vos pouede pas més arrevar a cela pâge.", "group": "Tropa :", "group-user": "Utilisators", "group-autoconfirmed": "Utilisators ôtoconfirmâs", @@ -1156,7 +1149,6 @@ "right-siteadmin": "Cotar et dècotar la bâsa de balyês", "right-override-export-depth": "Èxportar les pâges avouéc les pâges liyêes tant qu’a na provondior de 5 nivéls", "right-sendemail": "Mandar un mèssâjo ux ôtros utilisators", - "right-passwordreset": "Vêre los mèssâjos de remês’a zérô des contresegnos", "right-managechangetags": "Fâre et suprimar de [[Special:Tags|balises]] de la bâsa de balyês", "right-applychangetags": "Aplicar les [[Special:Tags|balises]] avouéc los sins changements", "right-changetags": "Apondre et enlevar de façon arbitrèra de [[Special:Tags|balises]] sur des vèrsions endividuèles et des entrês de jornâl", @@ -1387,7 +1379,7 @@ "uploaded-setting-handler-svg": "Los SVG que dèfenéssont l’atribut « handler » avouéc distant / balyês / scripte sont dèfendus. <code>$1=\"$2\"</code> est étâ trovâ dedens lo fichiér SVG tèlèchargiê.", "uploaded-remote-url-svg": "Los SVG que dèfenéssont un atribut de stilo quint que seye avouéc un’URL distanta sont dèfendus. <code>$1=\"$2\"</code> est étâ trovâ dedens lo fichiér SVG tèlèchargiê.", "uploaded-image-filter-svg": "Un filtro d’émâge avouéc URL est étâ trovâ : <code><$1 $2=\"$3\"></code> dedens lo fichiér SVG tèlèchargiê.", - "uploadscriptednamespace": "Cél fichiér SVG contint un èspâço de noms « $1 » pas ôtorisâ.", + "uploadscriptednamespace": "Cél fichiér SVG contint un èspâço de noms « <nowiki>$1</nowiki> » pas ôtorisâ.", "uploadinvalidxml": "Lo XML dedens lo fichiér tèlèchargiê at pas possu étre analisâ.", "uploadvirus": "Cél fichiér contint un virus !\nDètalys : $1", "uploadjava": "O est un fichiér ZIP que contint un fichiér Java « .class ».\nLo tèlèchargement de fichiérs Java est pas ôtorisâ, pôvont èvitar de rèstriccions de sècuritât.", @@ -3337,43 +3329,13 @@ "feedback-subject": "Sujèt :", "feedback-submit": "Sometre", "feedback-thanks": "Grant-marci ! Voutron avis at étâ postâ sur la pâge « [$2 $1] ».", - "searchsuggest-search": "Rechèrchiér", + "searchsuggest-search": "Rechèrchiér dessus {{SITENAME}}", "searchsuggest-containing": "que contint...", - "api-error-badaccess-groups": "Vos éte pas ôtorisâ a tèlèchargiér des fichiérs sur ceti vouiqui.", "api-error-badtoken": "Èrror de dedens : crouyo « jeton ».", - "api-error-copyuploaddisabled": "Los tèlèchargements per URL sont dèsactivâs sur cél sèrvor.", - "api-error-duplicate": "Y at {{PLURAL:$1|un ôtro fichiér|d’ôtros fichiérs}} ja sur lo seto avouéc lo mémo contegnu.", - "api-error-duplicate-archive": "Y avéve {{PLURAL:$1|un ôtro fichiér|d’ôtros fichiérs}} ja sur lo seto avouéc lo mémo contegnu, mas {{PLURAL:$1|il at étâ suprimâ|ils ont étâ suprimâs}}.", - "api-error-empty-file": "Lo fichiér que vos éd somês ére vouedo.", "api-error-emptypage": "La crèacion de pâges novèles vouedes est pas ôtorisâ.", - "api-error-fetchfileerror": "Èrror de dedens : quârque-ren s’est mâl passâ pendent la rècupèracion du fichiér.", - "api-error-file-too-large": "Lo fichiér que vos éd somês ére trop grant.", - "api-error-filename-tooshort": "Lo nom du fichiér est trop côrt.", - "api-error-filetype-banned": "Cél tipo de fichiér est dèfendu.", - "api-error-filetype-banned-type": "$1 {{PLURAL:$4|est pas un tipo de fichiér ôtorisâ|sont pas des tipos de fichiérs ôtorisâs}}. {{PLURAL:$3|Lo tipo de fichiér ôtorisâ est|Los tipos de fichiérs ôtorisâs sont}} $2.", - "api-error-filetype-missing": "L’èxtension du fichiér est manquenta.", - "api-error-hookaborted": "Lo changement que vos éd tâchiê de fâre est étâ anulâ per n’èxtension.", - "api-error-http": "Èrror de dedens : sè pôt pas branchiér u sèrvor.", - "api-error-illegal-filename": "Lo nom du fichiér est pas ôtorisâ.", - "api-error-internal-error": "Èrror de dedens : quârque-ren s’est mâl passâ pendent lo trètament de voutron tèlèchargement sur lo vouiqui.", - "api-error-invalid-file-key": "Èrror de dedens : gins de fichiér trovâ dens lo stocâjo temporèro.", - "api-error-missingparam": "Èrror de dedens : manque des paramètres dens la requéta.", - "api-error-missingresult": "Èrror de dedens : nos ens pas possu dètèrmenar se la copia avéve reussia.", - "api-error-mustbeloggedin": "Vos dête étre branchiê por tèlèchargiér des fichiérs.", - "api-error-mustbeposted": "Èrror de dedens : la requéta at fôta d’HTTP POST.", - "api-error-noimageinfo": "Lo tèlèchargement at reussi, mas lo sèrvor at pas balyê d’enformacions sur lo fichiér.", - "api-error-nomodule": "Èrror de dedens : gins de modulo de tèlèchargement dèfeni.", - "api-error-ok-but-empty": "Èrror de dedens : lo sèrvor at pas rèpondu.", - "api-error-overwrite": "Ècllafar un fichiér ègzistent est pas ôtorisâ.", "api-error-stashfailed": "Èrror de dedens : lo sèrvor at pas possu encartar lo fichiér temporèro.", - "api-error-timeout": "Lo sèrvor at pas rèpondu dens lo dèlê atendu.", - "api-error-unclassified": "Una èrror encognua est arrevâ", - "api-error-unknown-code": "Èrror encognua : « $1 ».", - "api-error-unknown-error": "Èrror de dedens : quârque-ren s’est mâl passâ pendent lo tèlèchargement de voutron fichiér.", "api-error-unknown-warning": "Avèrtissement encognu : $1", "api-error-unknownerror": "Èrror encognua : « $1 ».", - "api-error-uploaddisabled": "Lo tèlèchargement est dèsactivâ sur ceti vouiqui.", - "api-error-verification-error": "Cél fichiér pôt étre corrompu, ou ben son èxtension est fôssa.", "duration-seconds": "$1 second{{PLURAL:$1|a|es}}", "duration-minutes": "$1 menut{{PLURAL:$1|a|es}}", "duration-hours": "$1 hor{{PLURAL:$1|a|es}}", diff --git a/languages/i18n/frr.json b/languages/i18n/frr.json index 063cdae71f..a022551f1e 100644 --- a/languages/i18n/frr.json +++ b/languages/i18n/frr.json @@ -944,8 +944,6 @@ "saveprefs": "Iinstelangen seekre", "restoreprefs": "Normool iinstelangen weder haale (uun arke kirew)", "prefs-editing": "Bewerke", - "rows": "Räen:", - "columns": "Spleder:", "searchresultshead": "Schük", "stub-threshold": "Formatiarang faan links <a href=\"#\" class=\"stub\">för letj sidjen</a> (uun Byte):", "stub-threshold-disabled": "Ufsteld", @@ -1316,7 +1314,7 @@ "uploaded-script-svg": "Skriptelement „$1“ uun det huuchschüürd SVG-datei fünjen.", "uploaded-hostile-svg": "Ünseeker CSS uun't style-element faan det huuchschüürd SVG-datei fünjen.", "uploaded-event-handler-on-svg": "Event-handler atributen <code>$1=\"$2\"</code> san uun SVG-datein ei tuläät.", - "uploadscriptednamespace": "Detdiar SVG-datei wiset üüb en ferkiarden nöömrüm \"$1\".", + "uploadscriptednamespace": "Detdiar SVG-datei wiset üüb en ferkiarden nöömrüm \"<nowiki>$1</nowiki>\".", "uploadinvalidxml": "Det XML uun det huuchschüürd datei küd ei ''parset'' wurd.", "uploadvirus": "Uun detdiar datei as en wiirus! Details: $1", "uploadjava": "Detdiar as en ZIP-datei mä en CLASS-datei faan Java.\nJava-datein kön ei tuläät wurd, auer jo det seekerhaid uun fraag stel küd.", @@ -3173,52 +3171,12 @@ "feedback-useragent": "Brüker-agent:", "searchsuggest-search": "Schük uun {{SITENAME}}", "searchsuggest-containing": "diar banen as ...", - "api-error-badaccess-groups": "Dü mutst nian datein tu detdiar Wiki huuchschüür.", "api-error-badtoken": "Intern feeler: Token as ferkiard.", - "api-error-copyuploaddisabled": "Det huuchschüüren auer URL as üüb didiar server ei aktiif.", - "api-error-duplicate": "Uun det Wiki {{PLURAL:$1|as al en ööder datei|san al muar datein}} mä detsalew banen.", - "api-error-duplicate-archive": "Diar wiar al {{PLURAL:$1|ööder datei|ööder datein}} mä detsalew banen. {{PLURAL:$1|Hat as |Jo san}} oober stregen wurden.", - "api-error-empty-file": "Det datei, wat dü huuchschüürd heest, as leesag.", "api-error-emptypage": "Dü mutst nian leesag sidjen nei iinstel.", - "api-error-fetchfileerror": "Intern feeler: Bi't ufrepen faan det datei as wat skiaf gingen.", - "api-error-fileexists-forbidden": "En datei mä di nööm „$1“ as al diar. Hat koon ei auerskrewen wurd.", - "api-error-fileexists-shared-forbidden": "En date mä di nööm „$1“ as al uun't gemiansoom archiif an koon ei auerskrewen wurd.", - "api-error-file-too-large": "Det datei, wat dü huuchschüürd heest, as tu grat.", - "api-error-filename-tooshort": "Di dateinööm as tu kurt.", - "api-error-filetype-banned": "Son slach faan datei as ei tuläät.", - "api-error-filetype-banned-type": "$1 {{PLURAL:$4|as nään tuläät slach faan datein|san nian tuläät slacher faan datein}}.\n{{PLURAL:$3|En tuläät slach as|Tuläät slacher san}} $2.", - "api-error-filetype-missing": "Det datei, wat dü huuchschüür wel, hää nian dateiaanj.", - "api-error-hookaborted": "Det feranrang, wat dü maage wulst, as faan en ütjwidjet software-funktjuun ufbreegen wurden.", - "api-error-http": "Intern feeler: Ferbinjang tu a server as skiaf gingen.", - "api-error-illegal-filename": "Didiar dateinööm as ei tuläät.", - "api-error-internal-error": "Intern feeler: diar as wat skiaf gingen bi't huuchschüüren faan det datei tu det Wiki.", - "api-error-invalid-file-key": "Intern feeler: Det datei as uun det tidjwiis archiif ei fünjen wurden.", - "api-error-missingparam": "Intern feeler: Det uunfraag as ei hial uunkimen.", - "api-error-missingresult": "Intern feeler: Küd ei luke, of det kopiarin loket hää.", - "api-error-mustbeloggedin": "Dü skel di uunmelde, am datein huuchtuschüüren.", - "api-error-mustbeposted": "Intern feeler: Ferkiard HTTP-muude.", - "api-error-noimageinfo": "Det huuchschüüren hää loket, oober di server hää nian datei-dooten.", - "api-error-nomodule": "Intern feeler: Diar as nian modul tu huuchschüüren fäästlaanj wurden.", - "api-error-ok-but-empty": "Intern feeler: Di server sait niks.", - "api-error-overwrite": "Dü könst nian datei auerskriiw, wat al diar as.", - "api-error-stashfailed": "Intern feeler: Di server küd nian tidjwiis datei seekre.", "api-error-publishfailed": "Intern feeler: Di server küd det tidjwiis datei ei widjer schüür.", - "api-error-stasherror": "Bi't huuchschüüren faan detdiar datei as wat skiaf gingen.", - "api-error-stashedfilenotfound": "Det datei, wat al ans seekert wurden as, küd bi't huuchloosin ei fünjen wurd.", - "api-error-stashpathinvalid": "Det steed, huar det seekert datei fünjen wurd skul, jaft at ei.", - "api-error-stashfilestorage": "Bi't seekrin faan detdiar datei uun a spiiker as wat skiaf gingen.", - "api-error-stashzerolength": "Di server küd det datei ei seekre, auer hat man bluas nul bytes grat as.", - "api-error-stashnotloggedin": "Dü skel uunmeldet wees, wan dü datein uun a spiiker seekre wel.", - "api-error-stashwrongowner": "Det datei, huar dü uun a spiiker üüb tugrip wulst, hiart di ei.", - "api-error-stashnosuchfilekey": "Di datei-kai, huar dü uun a spiiker üüb tugrip wulst, as ei diar.", - "api-error-timeout": "Di server hää ei rochttidjag swaaret (time-out).", - "api-error-unclassified": "Diar as irgentwat skiaf gingen.", - "api-error-unknown-code": "Ünbekäänd feeler: „$1“", - "api-error-unknown-error": "Intern feeler: Bi't huuchschüüren faan det datei as wat skiaf gingen.", + "api-error-stashfailed": "Intern feeler: Di server küd nian tidjwiis datei seekre.", "api-error-unknown-warning": "Ünbekäänd wäärnang: $1", "api-error-unknownerror": "Ünbekäänd feeler: „$1“", - "api-error-uploaddisabled": "Uun detdiar Wiki könst dü niks huuchschüür.", - "api-error-verification-error": "Det datei, wat dü huuchschüür wel, as uunstaken of hää en ferkiard dateiaanj.", "duration-seconds": "$1 {{PLURAL:$1|sekund|sekunden}}", "duration-minutes": "$1 {{PLURAL:$1|minüüt|minüüten}}", "duration-hours": "$1 {{PLURAL:$1|stünj|stünjen}}", diff --git a/languages/i18n/gd.json b/languages/i18n/gd.json index 93fb4792b5..5bd8f3b69d 100644 --- a/languages/i18n/gd.json +++ b/languages/i18n/gd.json @@ -17,6 +17,7 @@ "tog-hideminor": "Falaich mùthaidhean beaga ann an liosta nam mùthaidhean ùra", "tog-hidepatrolled": "Falaich mùthaidhean fo fhreiceadan ann an liosta nam mùthaidhean ùra", "tog-newpageshidepatrolled": "Falaich duilleagan fo fhreiceadan ann an liosta nan duilleagan ùra", + "tog-hidecategorization": "Falaich roinnean nan duilleagan", "tog-extendwatchlist": "Leudaich an clàr-faire gus an seall e gach mùthadh 's chan ann an fheadhainn as ùire a-mhàin", "tog-usenewrc": "Buidhnich na h-atharraichean a-rèir duilleige sna mùthaidhean ùra agus air a' chlàr-fhaire", "tog-numberheadings": "Cuir àireamhan ri ceann-sgrìobhaidhean leis fhèin", @@ -27,6 +28,7 @@ "tog-watchdefault": "Cuir duilleagan a dheasaicheas mi air a' chlàr-fhaire agam", "tog-watchmoves": "Cuir duilleagan a ghluaiseas mi air a' chlàr-fhaire agam", "tog-watchdeletion": "Cuir duilleagan a sguabas mi às air a' chlàr-fhaire agam", + "tog-watchuploads": "Cuir faidhlichean ùra ris a luchdaicheas mi suas dhan liosta-fhaire agam", "tog-watchrollback": "Cuir duilleagan air an do rinn mi roladh air ais air a' chlàr-fhaire agam", "tog-minordefault": "Comharraich gach mùthadh mar mhùthadh beag a ghnàth", "tog-previewontop": "Nochd an ro-shealladh os cionn a' bhogsa deasachaidh", @@ -36,7 +38,7 @@ "tog-enotifminoredits": "Cuir post-dealain thugam nuair a nithear mùthadh beag air duilleagan cuideachd", "tog-enotifrevealaddr": "Nochd an seòladh puist-d agam ann am brathan-naidheachd puist-d", "tog-shownumberswatching": "Nochd àireamh nan cleachdaichean a tha a' cumail sùil air", - "tog-oldsig": "An t-earr-sgrìobhadh làithreach:", + "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-forceeditsummary": "Cuir ceist nuair a dh'fhàgas mi gearr-chunntas an deasachaidh bàn", @@ -44,8 +46,10 @@ "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-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", "tog-ccmeonemails": "Cuir lethbhric de phuist-dhealain a chuireas mi do chleachdaichean eile thugam", "tog-diffonly": "Na seall susbaint nan duilleagan fo na diofaran", "tog-showhiddencats": "Seall na roinnean-seòrsa falaichte", @@ -139,7 +143,7 @@ "category-file-count-limited": "Tha {{PLURAL:$1|an $1 fhaidhle|an $1 fhaidhle|na $1 faidhlichean|na $1 faidhle}} a leanas san roinn-seòrsa làithreach.", "listingcontinuesabbrev": "(an corr)", "index-category": "Duilleagan air a' chlàr-innse", - "noindex-category": "Duilleagan nach eil air a' chlàr-innse", + "noindex-category": "Duilleagan nach deach inneacsadh", "broken-file-category": "Duilleagan sa bheil ceanglaichean faidhle a tha briste", "categoryviewer-pagedlinks": "($1) ($2)", "about": "Mu", @@ -147,7 +151,7 @@ "newwindow": "(a' fosgladh ann an uinneag ùr)", "cancel": "Sguir dheth", "moredotdotdot": "Barrachd...", - "morenotlisted": "Chan eil an liosta seo iomlan.", + "morenotlisted": "Dh’fhaoidte nach eil an liosta seo iomlan.", "mypage": "Duilleag", "mytalk": "Deasbaireachd", "anontalk": "Deasbaireachd", @@ -169,11 +173,13 @@ "tagline": "O {{SITENAME}}", "help": "Cobhair", "search": "Lorg", + "search-ignored-headings": " #<!-- fàg an loidhne seo dìreach mar a tha e --> <pre>\n# Ceann-sgrìobhaidhean nach doir lorg for dhaibh.\n# Bidh buaidh aig na h-atharraichean seo cho luath ’s a thèid an ceann-sgrìobhadh inneacsadh.\n# ’S urrainn dhut ath-inneacsadh a sparradh air an t-siostam le bhith a’ sàbhalachadh deasachadh neoinitheach.\n# Seo an co-chàradh:\n# * Tha rud sam bith eadar caractar “#” agus deireadh loidhne ’na bheachd.\n# * Ma tha loidhne sam bith ann nach eil bàn, sin an tiotal a thèid a leigeil seachad.\nIomraidhean\nCeanglaichean ris an taobh a-muigh\nFaic na leanas cuideachd\n #</pre> <!-- fàg an loidhne seo dìreach mar a tha e -->", "searchbutton": "Lorg", "go": "Siuthad", "searcharticle": "Siuthad", "history": "Eachdraidh na duilleige", "history_short": "Eachdraidh", + "history_small": "eachdraidh", "updatedmarker": "air ùrachadh on turas mu dheireadh a thadhail mi air", "printableversion": "Tionndadh a ghabhas a chlò-bhualadh", "permalink": "Ceangal buan", @@ -205,6 +211,9 @@ "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", @@ -457,7 +466,7 @@ "eauthentsent": "Chaidh post-d dearbhaidh a chur dhan phost-d a chaidh ainmeachadh.\nMus dèid post-d sam bith eile a chur dhan chunntas, feumaidh tu leantainn ris an stiùireadh sa phost-d mar dhearbhadh gur ann agadsa a tha an cunntas.", "throttled-mailpassword": "Chaidh post-d a chur airson ath-shuidheachadh facail-fhaire mu thràth $1 {{PLURAL:$1|uair|uair|uairean|uair}} a thìde air ais.\nGus casg a chur air mì-ghnàthachadh, cha chuir sinn ach aon chuimhneachan facail-fhaire gach $1 {{PLURAL:$1|uair|uair|uairean|uair}} a thìde.", "mailerror": "Mearachd a' cur post: $1", - "acct_creation_throttle_hit": "Chruthaich na h-aoighean air an uicidh seo {{PLURAL:$1|$1 chunntas|$1 chunntas|$1 cunntasan|$1 cunntas}} fon IP agad an-dè agus sin an àireamh as motha a tha ceadaichte. Chan urrainn do dh'aoighean eile on IP seo barrachd chunntasan a chruthachadh air sgàth sin.", + "acct_creation_throttle_hit": "Chruthaich na h-aoighean air an uicidh seo {{PLURAL:$1|$1 chunntas|$1 chunntas|$1 cunntasan|$1 cunntas}} fon IP agad anns na $2 seo chaidh agus sin an àireamh as motha a tha ceadaichte.\nChan urrainn do dh’aoighean eile on IP seo barrachd chunntasan a chruthachadh air sgàth sin aig an àm seo.", "emailauthenticated": "Chaidh an seòladh puist-d agad a dhearbhadh $2 aig $3.", "emailnotauthenticated": "Cha deach am post-d agad a dhearbhadh fhathast.\nCha dèid post-d a chur airson gin dhe na feartan a leanas.", "noemailprefs": "Sònraich post-d sna roghainnean agad gus na feartan seo a chur an comas.", @@ -511,8 +520,6 @@ "passwordreset-emaildisabled": "Chaidh feartan a' phuist-d a chur à comas san uicidh seo.", "passwordreset-username": "Ainm-cleachdaiche:", "passwordreset-domain": "Àrainn-lìn:", - "passwordreset-capture": "A bheil thu airson coimhead air a' phost-d?", - "passwordreset-capture-help": "Ma chuireas tu cromag sa bhogsa seo, chì thusa am post-d (leis an fhacal-fhaire sealach) agus gheibh an cleachdaiche e cuideachd.", "passwordreset-email": "Seòladh puist-d:", "passwordreset-emailtitle": "Dàta a' chunntais air {{SITENAME}}", "passwordreset-emailtext-ip": "Dh'iarr cuideigin (thu fhèin, 's mathaid, on t-seòladh IP $1) am facal-faire airson {{SITENAME}} ($4) ath-shuidheachadh. Tha {{PLURAL:$3|an cunntas|na cunntasan}} a leanas co-cheangailte ris a' phost-d seo:\n\n$2\n\nFalbhaidh an ùine air {{PLURAL:$3|an fhacal-fhaire shealach|na faclan-faire sealach}} seo an ceann $5 {{PLURAL:$5|latha|latha|làithean|latha}}.\nBu chòir dhut logadh a-steach agus facal-faire ùr a thaghadh an-dràsta. Ma dh'iarr cuideigin eile seo no ma chuimhnich thu air an fhacal-fhaire agad 's mur eil thu airson atharrachadh tuilleadh, leig seachad an teachdaireachd seo 's lean ort leis an t-seann fhacal-fhaire.", @@ -559,6 +566,7 @@ "minoredit": "Seo mùthadh beag", "watchthis": "Cum sùil air an duilleag seo", "savearticle": "Sàbhail an duilleag", + "savechanges": "Sàbhail na dh’atharraich thu", "publishpage": "Foillsich an duilleag", "publishchanges": "Foillsich na mùthaidhean", "preview": "Ro-shealladh", @@ -853,7 +861,7 @@ "searchprofile-advanced-tooltip": "Lorg am broinn ainm-spàsan gnàthaichte", "search-result-size": "$1 ({{PLURAL:$2|$2 fhacal|$2 fhacal|$2 faclan|$2 facal}})", "search-result-category-size": "{{PLURAL:$1|$1 bhall|$1 bhall|$1 bhuill|$1 ball}} ({{PLURAL:$2|$2 fho-roinn-seòrsa|$2 fho-roinn-seòrsa|$2 fo-roinnean-seòrsa|$2 fo-roinn-seòrsa}}, {{PLURAL:$3|$3 fhaidhle|$3 fhaidhle|$3 faidhlichean|$3 faidhle}})", - "search-redirect": "(ag ath-sheòladh $1)", + "search-redirect": "(ag ath-sheòladh o $1)", "search-section": "(earrann $1)", "search-category": "(roinn-seòrsa $1)", "search-file-match": "(a' freagairt ri susbaint an fhaidhle)", @@ -908,8 +916,6 @@ "saveprefs": "Sàbhail", "restoreprefs": "Aisig na roghainnean bunaiteach uile (anns gach earrann)", "prefs-editing": "Deasachadh", - "rows": "Sreathan", - "columns": "Colbhan", "searchresultshead": "Lorg", "stub-threshold": "An stairsneach airson fòrmatadh cheanglaichean nam bun ($1):", "stub-threshold-disabled": "À comas", @@ -989,26 +995,23 @@ "prefswarning-warning": "Rinn thu atharrachadh air na roghainnean agad nach deach a shàbhaladh fhathast.\nCha tèid na roghainnean agad ùrachadh ma dh'fhàgas tu an duilleag seo gun bhriogadh air \"$1\".", "prefs-tabs-navigation-hint": "Gliocas: 'S urrainn dhut na h-iuchraichean saighde chlì 's dheas a chleachdadh gus leum a ghearradh o thaba gu taba air liosta nan taba.", "userrights": "Stiùireadh ceadan a' chleachdaiche", - "userrights-lookup-user": "Stiùirich na buidhnean chleachdaichean", + "userrights-lookup-user": "Tagh cleachdaiche", "userrights-user-editname": "Cuir a-steach ainm-cleachdaiche:", - "editusergroup": "Deasaich na buidhnean {{GENDER:$1|chleachdaichean}}", + "editusergroup": "Luchdaich buidhnean nan cleachdaichean", "editinguser": "Ag atharrachadh ceadan a’ {{GENDER:$1|chleachdaiche}} <strong>[[User:$1|$1]]</strong> $2", - "userrights-editusergroup": "Deasaich na buidhnean chleachdaichean", + "userrights-editusergroup": "Deasaich buidhnean {{GENDER:$1|a’ chleachdaiche}}", "saveusergroups": "Sàbhail na buidhnean {{GENDER:$1|chleachdaichean}}", "userrights-groupsmember": "Ball de:", "userrights-groupsmember-auto": "Ball fèin-obrachail de:", "userrights-groupsmember-type": "$1", - "userrights-groups-help": "'S urrainn dhut na buidhnean sa bheil an cleachdaiche seo 'na bhall atharrachadh:\n* Is ciall dha chromag sa bhogsa gu bheil an cleachdaiche seo 'na bhall sa buidheann.\n* Is ciall dha bhogsa gun chromag ris nach eil an cleachdaiche seo 'na bhall sa buidheann.\n* Innsidh * dhut nach urrainn dhut am buidheann a thoirt air falbh nuair a bhios tu air a chur ris no an caochladh.", + "userrights-groups-help": "’S urrainn dhut na buidhnean sa bheil an cleachdaiche seo ’na b(h)all atharrachadh:\n* Is ciall do chromag sa bhogsa gu bheil an cleachdaiche seo ’na bhall sa buidheann.\n* Is ciall do bhogsa gun chromag nach eil an cleachdaiche seo ’na bhall sa buidheann.\n* Innsidh * dhut nach urrainn dhut am buidheann a thoirt air falbh nuair a bhios tu air a chur ris no a chaochladh.\n* Innsidh # dhut nach urrainn dhut latha nas tràithe a thaghadh air am falbh an ùine air a’ bhuidheann seo, dìreach latha nas anmoiche.", "userrights-reason": "Adhbhar:", "userrights-no-interwiki": "Chan eil cead agad ceadan chleachdaichean a dheasachadh air uicidhean eile.", "userrights-nodatabase": "Chan eil an stòr-dàta $1 ann no chan e fear ionadail a tha ann.", - "userrights-nologin": "Feumaidh tu [[Special:UserLogin|logadh a-steach]] le cunntas rianaire ach an toir thu ceadan nam ball seachad.", - "userrights-notallowed": "Chan eil cead agad gus ceadan nam ball a chur ris no a thoirt air falbh.", "userrights-changeable-col": "Buidhnean as urrainn dhut atharrachadh", "userrights-unchangeable-col": "Buidhnean nach urrainn dhut atharrachadh", "userrights-irreversible-marker": "$1*", "userrights-conflict": "Tha còmhstri le atharraichean air ceadan nam ball! Thoir sùil air a-rithist 's dearbhaich na h-atharraichean agad.", - "userrights-removed-self": "Tha thu air na ceadan agad fhèin a thoirt air falbh. Mar sin, chan eil cead agad tuilleadh gus an duilleag seo inntrigeadh.", "group": "Buidheann:", "group-user": "Cleachdaichean", "group-autoconfirmed": "Cleachdaichean fèin-dearbhte", @@ -1098,7 +1101,6 @@ "right-siteadmin": "Cead gus an stòr-dàta a glasadh 's a' ghlas a thoirt fo bharr", "right-override-export-depth": "Cead gus duilleagan às-phortadh, a' gabhail a-seach duilleagan ceangailte suas ri doimhneachd de 5", "right-sendemail": "Cead gus puist-d a chur gu cleachdaichean eile", - "right-passwordreset": "Cead gus puist-d ath-shuidheachadh nam facal-faire a shealltainn", "right-managechangetags": "Cruthaich is gnìomhaich no neo-ghnìomhaich [[Special:Tags|tagaichean]]", "newuserlogpage": "Loga cruthachadh nan cleachdaichean", "newuserlogpagetext": "Seo loga nan cleachdaichean a chaidh a chruthachadh.", @@ -1106,8 +1108,8 @@ "rightslogtext": "Seo loga nan atharraichean air ceadan nan cleachdaichean.", "action-read": "leugh an duilleag seo", "action-edit": "deasaich an duilleag seo", - "action-createpage": "cruthaich duilleagan", - "action-createtalk": "cruthaich duilleagan deasbaireachd", + "action-createpage": "an duilleag seo a chruthachadh", + "action-createtalk": "an duilleag deasbaireachd seo a chruthachadh", "action-createaccount": "cruthaich an cunntas cleachdaiche seo", "action-history": "seall eachdraidh na duilleige seo", "action-minoredit": "cuir comharra nach e ach deasachadh beag a th' ann", @@ -1122,11 +1124,11 @@ "action-upload_by_url": "luchdaich suas am faidhle seo o URL", "action-writeapi": "cleachd API sgrìobhaidh", "action-delete": "sguab às an duilleag seo", - "action-deleterevision": "sguab às am mùthadh seo", - "action-deletedhistory": "seall eachdraidh an sguabaidh às aig an duilleag seo", + "action-deleterevision": "mùthaidhean a sguabadh às", + "action-deletedhistory": "eachdraidh de dhuilleag a chaidh a sguabadh às fhaicinn", "action-browsearchive": "lorg sna duilleagan air an sguabadh às", - "action-undelete": "neo-dhèan sguabadh às na duilleige seo", - "action-suppressrevision": "thoir sùil air a' mhùthadh fhalaichte seo 's aisig e", + "action-undelete": "sguabadh às de dhuilleagan a neo-dhèanamh", + "action-suppressrevision": "sùil a thoirt air mùthaidhean falaichte ’s an aiseag", "action-suppressionlog": "seall an loga prìobhaideach seo", "action-block": "bac an cleachdaiche seo o dheasachadh", "action-protect": "atharraich leibheil dìon na duilleige seo", @@ -1275,7 +1277,7 @@ "uploaddisabledtext": "Tha luchdadh suas fhaidhlichean à comas.", "php-uploaddisabledtext": "Tha luchdadh suas fhaidhlichean à comas ann am PHP.\nThoir sùil air an roghainn file_uploads.", "uploadscripted": "Tha còd HTML no sgriobt san fhaidhle seo a b' urrainn do bhrabhsair-lìn a ruith le mearachd.", - "uploadscriptednamespace": "Tha ainm-spàs \"$1\" mì-dhligheach san fhaidhle SVG seo.", + "uploadscriptednamespace": "Tha ainm-spàs \"<nowiki>$1</nowiki>\" mì-dhligheach san fhaidhle SVG seo.", "uploadinvalidxml": "Cha b' urrainn dhuinn an XML san fhaidhle air a luchdadh suas a pharsadh.", "uploadvirus": "Tha bhìoras san fhaidhle!\nFiosrachadh: $1", "uploadjava": "Tha am faidhle seo 'na fhaidhle ZIP sa bheil faidhle .class Java.\nChan fhaod thu faidhlichean Java a luchdadh suas on a b' urrainn dhaibh cuingeachaidhean na tèarainteachd a leigeil seachad.", @@ -1697,7 +1699,7 @@ "emailccsubject": "Lethbhreac dhen teachdaireachd agad gu $1: $2", "emailsent": "Post-d air a chur", "emailsenttext": "Chaidh an teachdaireachd puist-d agad a chur.", - "emailuserfooter": "Chaidh am post-d seo a chur o $1 gu $2 leis an fheart \"{{int:emailuser}}\" air {{SITENAME}}.", + "emailuserfooter": "Chaidh am post-d seo a {{GENDER:$1|chuir}} gu {{GENDER:$2|$2}} le $1 leis a’ ghleus “{{int:emailuser}}” aig {{SITENAME}}. Ma fhreagras {{GENDER:$2|tu}} am post-d seo, thèid am post-d{{GENDER:$2|agad}} a chur gun {{GENDER:$1|neach a chuir e an toiseach}} agus leigidg seo an seòladh puist-d {{GENDER:$2|agad}} {{GENDER:$1|riutha}}.", "usermessage-summary": "A' fàgail teachdaireachd an t-siostaim.", "usermessage-editor": "Teachdaire an t-siostaim", "usermessage-template": "MediaWiki:UserMessage", @@ -1793,6 +1795,7 @@ "modifiedarticleprotection": "a dh'atharraich an ìre dìon de \"[[$1]]\"", "unprotectedarticle": "a neo-dhìon \"[[$1]]\"", "movedarticleprotection": "chaidh roghainn an dìona a ghluasad o \"[[$2]]\" gu \"[[$1]]\"", + "modifiedarticleprotection-comment": "Dh’atharraich {{GENDER:$2|ìre an dìon}} aig “[[$1]]”", "protect-title": "Atharraich an dìon airson \"$1\"", "protect-title-notallowed": "Seall an dìon airson \"$1\"", "prot_1movedto2": "chaidh [[$1]] a ghluasad gu [[$2]]", @@ -1865,7 +1868,7 @@ "undeletedrevisions": "Chaidh $1 {{PLURAL:$1|mhùthadh|mhùthadh|mùthaidhean|mùthadh}} aiseag", "undeletedrevisions-files": "Chaidh $1 {{PLURAL:$1|mhùthadh|mhùthadh|mùthaidhean|mùthadh}} agus $2 {{PLURAL:$2|fhaidhle|fhaidhle|faidhlichean|faidhle}} aiseag", "undeletedfiles": "Chaidh $1 {{PLURAL:$1|fhaidhle|fhaidhle|faidhlichean|faidhle}} aiseag", - "cannotundelete": "Cha deach leinn an sguabadh às a neo-dhèanamh:\n$1", + "cannotundelete": "Dh’fhàillig neo-dhèanamh an sguabaidh às no co-dhiù cuid dheth:\n$1", "undeletedpage": "<strong>Chaidh $1 aiseag</strong>\n\nThoir sùil air [[Special:Log/delete|loga an sguabaidh às]] airson clàr air na chaidh a sguabadh às no aiseag o chionn goirid.", "undelete-header": "Faic [[Special:Log/delete|loga an sguabaidh às]] airson duilleagan a chaidh a sguabadh às o chionn goirid.", "undelete-search-title": "Lorg sna duilleagan air an sguabadh às", @@ -1902,8 +1905,8 @@ "sp-contributions-newbies-sub": "Airson cunntasan ùra", "sp-contributions-newbies-title": "Obair le cunntasan ùra", "sp-contributions-blocklog": "an loga bacaidh", - "sp-contributions-suppresslog": "obair a chaidh a mhùchadh", - "sp-contributions-deleted": "obair air a sguabadh às", + "sp-contributions-suppresslog": "obair {{GENDER:$1|a’ chleachdaiche}} a chaidh a mhùchadh", + "sp-contributions-deleted": "obair {{GENDER:$1|a’ chleachdaiche}} a chaidh a sguabadh às", "sp-contributions-uploads": "a' luchdadh suas", "sp-contributions-logs": "logaichean", "sp-contributions-talk": "deasbaireachd", @@ -3086,47 +3089,15 @@ "feedback-subject": "Cuspair:", "feedback-submit": "Cuir a-null", "feedback-thanks": "Mòran taing! Chaidh do bheachd a phostadh air an duilleag \"[$2 $1]\".", - "searchsuggest-search": "Lorg", + "feedback-thanks-title": "Ceud taing!", + "searchsuggest-search": "Lorg air {{SITENAME}}", "searchsuggest-containing": "anns a bheil...", - "api-error-badaccess-groups": "Chan eil cead agad gus faidhlichean a luchdadh suas dhan uicidh seo.", "api-error-badtoken": "Mearachd taobh a-staigh: Droch thòcan.", - "api-error-copyuploaddisabled": "Tha luchdadh suas le URL à comas air an fhrithealaiche seo.", - "api-error-duplicate": "Tha {{PLURAL:$1|faidhle eile|faidhlichean eile}} air an làrach seo mar-thà sa bheil an aon susbaint.", - "api-error-duplicate-archive": "Tha {{PLURAL:$1|faidhle eile|faidhlichean eile}} air an làrach seo mar-thà sa bheil an aon susbaint ach chaidh {{PLURAL:$1|a sguabadh|an sguabadh}} às.", - "api-error-empty-file": "Tha am faidhle a chuir thu a-null falamh.", "api-error-emptypage": "Chan fhaodar duilleagan falamh ùra a chruthachadh.", - "api-error-fetchfileerror": "Mearachd taobh a-staigh: Chaidh rudeigin cearr le faighinn an fhaidhle.", - "api-error-fileexists-forbidden": "Tha faidhle air a bheil \"$1\" ann mar-thà 's cha ghabh sgrìobhadh thairis air.", - "api-error-fileexists-shared-forbidden": "Tha faidhle air a bheil \"$1\" san ionad-tasgaich cho-roinnte mar-thà 's cha ghabh sgrìobhadh thairis air.", - "api-error-file-too-large": "Tha am faidhle a chuir thu a-null ro mhòr.", - "api-error-filename-tooshort": "Tha ainm an fhaidhle ro ghoirid.", - "api-error-filetype-banned": "Tha an seòrsa faidhle seo toirmisgte.", - "api-error-filetype-banned-type": "Chan eil $1 {{PLURAL:$4|'na seòrsa faidhle|'nan seòrsaichean faidhle}} ceadaichte. Is $2 {{PLURAL:$3|an seòrsa faidhle|na seòrsaichean faidhle}} ceadaichte.", - "api-error-filetype-missing": "Tha leudachan a dhìth air an fhaidhle.", - "api-error-hookaborted": "Chaidh sgur dhen atharrachadh a dh'fheuch thu ri dèanamh le leudachan.", - "api-error-http": "Mearachd taobh a-staigh: Cha b' urrainn dhuinn ceangal ris an fhrithealaiche.", - "api-error-illegal-filename": "Chan eil ainm an fhaidhle ceadaichte.", - "api-error-internal-error": "Mearachd tabh a-staigh: chaidh rudeigin cearr rè an luchdaidh suas agad dhan uicidh.", - "api-error-invalid-file-key": "Mearachd taobh a-staigh: Cha deach am faidhle a lorg san stòras shealach.", - "api-error-missingparam": "Mearachd taobh a-staigh: Tha paramadair a dhìth air an iarrtas.", - "api-error-missingresult": "Mearachd taobh a-staigh: Cha d' fhuair sinn a-mach co-dhiù an do shoirbhich leis an lethbhreac gus nach do shoirbhich.", - "api-error-mustbeloggedin": "Feumaidh tu logadh a-steach mus luchdaich thu suas faidhle.", - "api-error-mustbeposted": "Mearachd taobh a-staigh: Tha an t-iarrtas ag iarraidh HTTP POST.", - "api-error-noimageinfo": "Shoirbhich leis an luchdadh suas, ach cha dug am frithealaiche fiosrachadh sam bith dhuinn mun fhaidhle.", - "api-error-nomodule": "Mearachd taobh a-staigh: cha deach mòideal luchdaidh suas a shuidheachadh.", - "api-error-ok-but-empty": "Mearachd taobh a-staigh: Cha d' fhuair sinn freagairt on fhrithealaiche.", - "api-error-overwrite": "Chan fhaodar sgrìobhadh thairis air faidhle a tha ann mar-thà.", - "api-error-stashfailed": "Mearachd taobh a-staigh: Cha deach leis an fhrithealaiche faidhle sealach a stòradh.", "api-error-publishfailed": "Mearachd taobh a-staigh: Cha deach leis an fhrithealaiche faidhle sealach fhoillseachadh.", - "api-error-stasherror": "Thachair mearachd le luchdadh suas an fhaidhle dhan tasgadan.", - "api-error-timeout": "Cha d' fhuair sinn freagairt on fhrithealaiche ri àm.", - "api-error-unclassified": "Thachair mearachd neo-aithnichte.", - "api-error-unknown-code": "Mearachd neo-aithnichte: \"$1\".", - "api-error-unknown-error": "Mearachd tabh a-staigh: Chaidh rudeigin cearr rè luchdadh suas an fhaidhle agad.", - "api-error-unknown-warning": "Rabhadh neo-aithnichte: \"$1\".", + "api-error-stashfailed": "Mearachd taobh a-staigh: Cha deach leis an fhrithealaiche faidhle sealach a stòradh.", + "api-error-unknown-warning": "Rabhadh neo-aithnichte: “$1”.", "api-error-unknownerror": "Mearachd neo-aithnichte: \"$1\".", - "api-error-uploaddisabled": "Tha luchdadh suas à comas air an uicidh seo.", - "api-error-verification-error": "Dh'fhaoidte gu bheil am faidhle seo coirbte no gu bheil an leudachan cearr air.", "duration-seconds": "$1 {{PLURAL:$1|diog|dhiog|diogan|diog}}", "duration-minutes": "$1 {{PLURAL:$1|mhionaid|mhionaid|mionaidean|mionaid}}", "duration-hours": "$1 {{PLURAL:$1|uair|uair|uairean|uair}}", diff --git a/languages/i18n/gl.json b/languages/i18n/gl.json index e18eaa84e3..4b95c8d32d 100644 --- a/languages/i18n/gl.json +++ b/languages/i18n/gl.json @@ -23,7 +23,8 @@ "Macofe", "Banjo", "Josep Maria Roca Peña", - "Luan" + "Luan", + "Hamilton Abreu" ] }, "tog-underline": "Subliñar as ligazóns:", @@ -430,19 +431,12 @@ "login": "Acceder ao sistema", "login-security": "Verifique a súa identidade", "nav-login-createaccount": "Rexistro", - "userlogin": "Rexistro", - "userloginnocreate": "Rexistro", "logout": "Saír ao anonimato", "userlogout": "Saír ao anonimato", "notloggedin": "Non accedeu ao sistema", "userlogin-noaccount": "Non está rexistrado?", "userlogin-joinproject": "Únase a {{SITENAME}}", - "nologin": "Non está rexistrado? $1.", - "nologinlink": "Cree unha conta", "createaccount": "Crear unha conta", - "gotaccount": "Xa ten unha conta? $1.", - "gotaccountlink": "Acceda ao sistema", - "userlogin-resetlink": "Esqueceu os seus datos de rexistro?", "userlogin-resetpassword-link": "Esqueceu o contrasinal?", "userlogin-helplink2": "Axuda co rexistro", "userlogin-loggedin": "Xa accedeu ao sistema como {{GENDER:$1|$1}}.\nUtilice o formulario inferior para acceder como outro usuario.", @@ -455,7 +449,6 @@ "createaccountmail": "Utilizar un contrasinal aleatorio temporal e envialo ao enderezo de correo electrónico especificado", "createaccountmail-help": "Pode usarse para crear unha conta para outra persoa sen coñecer o contrasinal.", "createacct-realname": "Nome real (opcional)", - "createaccountreason": "Motivo:", "createacct-reason": "Motivo", "createacct-reason-ph": "Por que crea outra conta?", "createacct-reason-help": "Mensaxe mostrada no rexistro de creación de contas", @@ -654,7 +647,7 @@ "selfredirect": "<strong>Atención:</strong> Está redirixindo esta páxina a si mesma.\nQuizais especificou incorrectamente a páxina de destino ou poida que estea a editar unha páxina errónea.\nSe preme en \"{{int:savearticle}}\" de novo, crearase a redireción de calquera xeito.", "missingcommenttext": "Por favor, escriba un comentario a continuación.", "missingcommentheader": "<strong>Aviso:</strong> Non escribiu ningún texto no asunto deste comentario.\nSe preme en \"{{int:savearticle}}\" de novo, a súa edición gardarase sen el.", - "summary-preview": "Vista previa do resumo:", + "summary-preview": "Vista previa do resumo de edición:", "subject-preview": "Vista previa do asunto:", "previewerrortext": "Produciuse un erro ao intentar previsualizar os cambios.", "blockedtitle": "O usuario está bloqueado", @@ -962,6 +955,7 @@ "search-interwiki-caption": "Proxectos irmáns", "search-interwiki-default": "Resultados de $1:", "search-interwiki-more": "(máis)", + "search-interwiki-more-results": "máis resultados", "search-relatedarticle": "Relacionado", "searchrelated": "relacionado", "searchall": "todo", @@ -1051,6 +1045,7 @@ "youremail": "Correo electrónico:", "username": "Nome de {{GENDER:$1|usuario|usuaria}}:", "prefs-memberingroups": "{{GENDER:$2|Membro}} {{PLURAL:$1|do grupo|dos grupos}}:", + "group-membership-link-with-expiry": "$1 (ata $2)", "prefs-registration": "Data e hora de rexistro:", "yourrealname": "Nome real:", "yourlanguage": "Lingua:", @@ -1095,17 +1090,26 @@ "editusergroup": "Cargar os grupos de usuario", "editinguser": "Mudando os dereitos {{GENDER:$1|do usuario|da usuaria}} <strong>[[User:$1|$1]]</strong> $2", "viewinguserrights": "Consultando os dereitos {{GENDER:$1|de usuario|de usuaria}} <strong>[[User:$1|$1]]</strong> $2", - "userrights-editusergroup": "Editar os grupos do usuario", - "userrights-viewusergroup": "Consultar os grupos do usuario", + "userrights-editusergroup": "Editar os grupos {{GENDER:$1|do usuario|da usuaria}}", + "userrights-viewusergroup": "Consultar os grupos {{GENDER:$1|do usuario|da usuaria}}", "saveusergroups": "Gardar os grupos {{GENDER:$1|do usuario|da usuaria}}", "userrights-groupsmember": "Membro de:", "userrights-groupsmember-auto": "Membro implícito de:", - "userrights-groups-help": "Pode cambiar os grupos aos que {{GENDER:$1|o usuario|a usuaria}} pertence:\n* Se a caixa ten un sinal (✓) significa que {{GENDER:$1|o usuario|a usuaria}} pertence a ese grupo.\n* Se, pola contra, non o ten, significa que non pertence.\n* Un asterisco (*) indica que non pode eliminar o grupo unha vez que o engadiu, e viceversa.", + "userrights-groups-help": "Pode cambiar os grupos aos que {{GENDER:$1|o usuario|a usuaria}} pertence:\n* Se a caixa ten un sinal (✓) significa que {{GENDER:$1|o usuario|a usuaria}} pertence a ese grupo.\n* Se, pola contra, non o ten, significa que non pertence.\n* Un asterisco (*) indica que non pode eliminar o grupo unha vez que o engadiu, e viceversa.\n* Un # indica que só se pode atrasar a data de caducidade deste grupo; non se pode adiantar.", "userrights-reason": "Motivo:", "userrights-no-interwiki": "Non ten os permisos necesarios para editar os dereitos de usuario noutros wikis.", "userrights-nodatabase": "A base de datos \"$1\" non existe ou non é local.", "userrights-changeable-col": "Os grupos que pode cambiar", "userrights-unchangeable-col": "Os grupos que non pode cambiar", + "userrights-expiry-current": "Caduca o $1", + "userrights-expiry-none": "Non caduca", + "userrights-expiry": "Caduca:", + "userrights-expiry-existing": "Período de caducidade actual: $2 ás $3", + "userrights-expiry-othertime": "Outro tempoː", + "userrights-expiry-options": "1 día:1 día,1 semana:1 semana,1 mes:1 mes,3 meses:3 meses,6 meses:6 meses,1 ano:1 ano", + "userrights-invalid-expiry": "O tempo de caducidade para o grupo \"$1\" non é válido.", + "userrights-expiry-in-past": "O tempo de caducidade para o grupo \"$1\" está no pasado.", + "userrights-cannot-shorten-expiry": "Non pode adiantar a data de caducidade do grupo \"$1\". Só os usuarios con permisos para engadir e eliminar este grupo poden adiantar datas de caducidade.", "userrights-conflict": "Hai un conflito na modificación dos dereitos de usuario! Por favor, revíseo e confirme os seus cambios.", "group": "Grupo:", "group-user": "Usuarios", @@ -1307,22 +1311,53 @@ "recentchanges-legend-plusminus": "(''±123'')", "recentchanges-submit": "Mostrar", "rcfilters-activefilters": "Filtros activos", + "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-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-feedbacklink": "Deixar comentarios sobre os novos filtros (en fase beta)", + "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-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-filtergroup-authorship": "Editar autoría", "rcfilters-filter-editsbyself-label": "As súas propias edicións", "rcfilters-filter-editsbyself-description": "Edicións súas.", "rcfilters-filter-editsbyother-label": "Edicións doutros.", - "rcfilters-filter-editsbyother-description": "Edicións creadas por outros usuarios.", - "rcfilters-filtergroup-userExpLevel": "Nivel de experiencia de usuario", - "rcfilters-filter-userExpLevel-newcomer-label": "Chegados recentemente", - "rcfilters-filter-userExpLevel-newcomer-description": "Editores moi novosː menos de 10 edicións e 4 días de actividade.", - "rcfilters-filter-userExpLevel-learner-label": "Aprendices", - "rcfilters-filter-userExpLevel-learner-description": "Máis días de actividade e edicións que 'novatos' pero menos que 'usuarios experimentados'.", - "rcfilters-filter-userExpLevel-experienced-label": "Usuarios experimentados", - "rcfilters-filter-userExpLevel-experienced-description": "Máis de 30 días de actividade e 500 edicións.", + "rcfilters-filter-editsbyother-description": "Edicións creadas por outros usuarios (non por vostede).", + "rcfilters-filtergroup-userExpLevel": "Nivel de experiencia (só para usuarios rexistrados)", + "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-learner-label": "Aprendices", + "rcfilters-filter-user-experience-level-learner-description": "Máis días de actividade e edicións que \"novatos\" pero menos que \"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-filtergroup-automated": "Contribucións automatizadas", + "rcfilters-filter-bots-label": "Bot", + "rcfilters-filter-bots-description": "Edicións realizadas por ferramentas automatizadas.", + "rcfilters-filter-humans-label": "Humano (non bot)", + "rcfilters-filter-humans-description": "Edicións realizadas por editores humanos.", + "rcfilters-filtergroup-significance": "Importancia", + "rcfilters-filter-minor-label": "Edicións menores", + "rcfilters-filter-minor-description": "Edicións que o autor etiquetou como menores.", + "rcfilters-filter-major-label": "Edicións non menores", + "rcfilters-filter-major-description": "Edicións non marcadas como menores.", + "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...", + "rcfilters-filter-newpages-label": "Creacións de páxinas", + "rcfilters-filter-newpages-description": "Edicións que crean páxinas novas.", + "rcfilters-filter-categorization-label": "Cambios de categoría", + "rcfilters-filter-categorization-description": "Rexistros de páxinas engadidas ou borradas de categorías.", + "rcfilters-filter-logactions-label": "Accións rexistradas", + "rcfilters-filter-logactions-description": "Accións administrativas, creacións de conta, borrados de páxinas, subas de ficheiros....", "rcnotefrom": "A continuación {{PLURAL:$5|móstrase o cambio feito|móstranse os cambios feitos}} desde o <strong>$3</strong> ás <strong>$4</strong> (móstranse <strong>$1</strong> como máximo).", "rclistfrom": "Mostrar os cambios novos desde o $3 ás $2", "rcshowhideminor": "$1 as edicións pequenas", @@ -1456,7 +1491,7 @@ "uploaded-setting-handler-svg": "Non están permitidos os ficheiros SVG que fixen o atributo \"handler\" cun obxectivo remoto/datos/secuencia de comandos. Atopouse <code>$1=\"$2\"</code> no ficheiro SVG subido.", "uploaded-remote-url-svg": "Non están permitidos os ficheiros SVG que fixen calquera atributo de estilo con enderezos URL remotos. Atopouse <code>$1=\"$2\"</code> no ficheiro SVG subido.", "uploaded-image-filter-svg": "Atopouse un filtro de imaxe con URL: <code><$1 $2=\"$3\"></code> no ficheiro SVG subido.", - "uploadscriptednamespace": "Este ficheiro SVG contén o espazo de nomes non permitido \"$1\"", + "uploadscriptednamespace": "Este ficheiro SVG contén o espazo de nomes non permitido \"<nowiki>$1</nowiki>\"", "uploadinvalidxml": "Non se puido analizar o XML do ficheiro cargado.", "uploadvirus": "O ficheiro contén un virus!\nDetalles: $1", "uploadjava": "O ficheiro é un ZIP que contén un ficheiro .class de Java.\nNon están permitidas as cargas de ficheiros Java, dado que poden causar restricións de seguridade.", @@ -1734,6 +1769,7 @@ "uncategorizedcategories": "Categorías sen categorías", "uncategorizedimages": "Ficheiros sen categorías", "uncategorizedtemplates": "Modelos sen categorías", + "uncategorized-categories-exceptionlist": "# Contén unha lista de categorías que non van aparecer en Especial:UncategorizedCategories. Unha por liña, comezando con \"*\". As liñas que comecen con outro carácter (incluíndo espazos en branco) ignóranse. Use \"#\" para engadir comentarios.", "unusedcategories": "Categorías sen uso", "unusedimages": "Imaxes sen uso", "wantedcategories": "Categorías requiridas", @@ -1832,8 +1868,10 @@ "apisandbox-sending-request": "Enviando a petición á API...", "apisandbox-loading-results": "Recibindo os resultados da API...", "apisandbox-results-error": "Produciuse un erro mentres se cargaba a resposta da petición á API: $1.", - "apisandbox-request-params-json": "Parámetros JSON:", + "apisandbox-request-selectformat-label": "Mostrar os datos da petición como:", + "apisandbox-request-format-url-label": "Cadea de consulta da URL", "apisandbox-request-url-label": "URL da solicitude:", + "apisandbox-request-json-label": "Solicitude do JSONː", "apisandbox-request-time": "Duración da solicitude: {{PLURAL:$1|$1 ms}}", "apisandbox-results-fixtoken": "Corrixir o identificador e reenviar", "apisandbox-results-fixtoken-fail": "Erro ao recuperar o identificador \"$1\".", @@ -1975,7 +2013,7 @@ "emailccsubject": "Copia da súa mensaxe para $1: $2", "emailsent": "Mensaxe enviada", "emailsenttext": "A súa mensaxe de correo electrónico foi enviada.", - "emailuserfooter": "$1 {{GENDER:$1|enviou}} este correo electrónico a {{GENDER:$2|$2}} mediante a función \"{{int:emailuser}}\" de {{SITENAME}}. {{GENDER:$2|A súa}} dirección de correo electrónico será enviada directamente {{GENDER:$1|ó|á}} remitente orixinal, {{GENDER:$1|revelándolle}} a {{GENDER:$2|súa}} dirección de correo.", + "emailuserfooter": "Este correo electrónico foi {{GENDER:$1|enviado}} por $1 a {{GENDER:$2|$2}} a través da función «{{int:emailuser}}» en {{SITENAME}}. Se {{GENDER:$2|responde}}, o seu correo electrónico enviarase directamente {{GENDER:$1|ó emisor|á emisora}} orixinal, e así {{GENDER:$1|coñecerá}} {{GENDER:$2|o seu}} enderezo de correo electrónico.", "usermessage-summary": "Mensaxe deixada polo sistema.", "usermessage-editor": "Editor das mensaxes do sistema", "watchlist": "Lista de vixilancia", @@ -2073,7 +2111,7 @@ "editcomment": "O resumo de edición foi: <em>$1</em>.", "revertpage": "Desfixéronse as edicións de [[Special:Contributions/$2|$2]] ([[User talk:$2|conversa]]); cambiado á última versión feita por [[User:$1|$1]]", "revertpage-nouser": "Desfixéronse as edicións dun usuario agochado; cambiado á última versión feita por {{GENDER:$1|[[User:$1|$1]]}}", - "rollback-success": "Desfixéronse as edicións de $1;\nvolveuse á última edición, feita por $2.", + "rollback-success": "Desfixéronse as edicións de {{GENDER:$3|$1}};\nvolveuse á última edición, feita por {{GENDER:$4|$2}}.", "rollback-success-notify": "Revertéronse as edicións de $1;\nrestaurouse a última revisión de $2. [$3 Mostrar os cambios]", "sessionfailure-title": "Erro de sesión", "sessionfailure": "Parece que hai un problema co rexistro da súa sesión;\nesta acción cancelouse como precaución fronte ao secuestro de sesións.\nPrema no botón \"atrás\", volva cargar a páxina da que proviña e inténteo de novo.", @@ -2090,7 +2128,7 @@ "changecontentmodel-emptymodels-title": "Non hai modelos de contido dispoñibles", "changecontentmodel-emptymodels-text": "O contido de \"[[:$1]]\" non se pode converter a ningún tipo.", "log-name-contentmodel": "Rexistro de cambios no modelo de contido", - "log-description-contentmodel": "Eventos relacinados cos modelos de contido dunha páxina", + "log-description-contentmodel": "Esta páxina mostra cambios no modelo de contido das páxinas, así como as páxinas creadas cun modelo de contido distinto do estándar.", "logentry-contentmodel-new": "$1 {{GENDER:$2|creou}} a páxina \"$3\" usando o modelo de contido non predeterminado \"$5\"", "logentry-contentmodel-change": "$1 {{GENDER:$2|cambiou}} o modelo de contido da páxina \"$3\" de \"$4\" a \"$5\"", "logentry-contentmodel-change-revertlink": "reverter", @@ -3502,7 +3540,7 @@ "logentry-tag-update-revision": "$1 {{GENDER:$2|actualizou}} etiquetas da revisión $4 da páxina $3 ({{PLURAL:$7|engadiu}} $6; {{PLURAL:$9|eliminou}} $8)", "logentry-tag-update-logentry": "$1 {{GENDER:$2|actualizou}} etiquetas da entrada do rexistro $5 da páxina $3 ({{PLURAL:$7|engadiu}} $6; {{PLURAL:$9|eliminou}} $8)", "rightsnone": "(ningún)", - "revdelete-summary": "o resumo de edición", + "rightslogentry-temporary-group": "$1 (temporal, ata $2)", "feedback-adding": "Enviando os comentarios...", "feedback-back": "Volver", "feedback-bugcheck": "Perfecto! Comprobe que aínda non está entre os [$1 erros coñecidos].", @@ -3527,56 +3565,12 @@ "feedback-useragent": "Axente de usuario:", "searchsuggest-search": "Procurar en {{SITENAME}}", "searchsuggest-containing": "que conteña...", - "api-error-autoblocked": "A súa dirección IP foi bloqueada automaticamente porque foi usada por un usuario bloqueado.", - "api-error-badaccess-groups": "Non ten os permisos necesarios para cargar ficheiros neste wiki.", "api-error-badtoken": "Erro interno: Pase incorrecto.", - "api-error-blocked": "Foi bloqueado fronte á edición.", - "api-error-copyuploaddisabled": "As cargas mediante URL están desactivadas neste servidor.", - "api-error-duplicate": "Xa hai {{PLURAL:$1|outro ficheiro| outros ficheiros}} no sitio co mesmo contido.", - "api-error-duplicate-archive": "Xa había {{PLURAL:$1|outro ficheiro|outros ficheiros}} no sitio co mesmo contido, pero {{PLURAL:$1|foi borrado|foron borrados}}.", - "api-error-empty-file": "O ficheiro que enviou estaba baleiro.", "api-error-emptypage": "Non está permitida a creación de páxinas novas que estean baleiras.", - "api-error-fetchfileerror": "Erro interno: Houbo un problema ao buscar o ficheiro.", - "api-error-fileexists-forbidden": "Xa existe un ficheiro co nome \"$1\". Non se pode sobrescribir.", - "api-error-fileexists-shared-forbidden": "Xa existe un ficheiro co nome \"$1\" no repositorio de ficheiros compartidos. Non se pode sobrescribir.", - "api-error-file-too-large": "O ficheiro que enviou era grande de máis.", - "api-error-filename-tooshort": "O nome do ficheiro é curto de máis.", - "api-error-filetype-banned": "Este tipo de ficheiro está prohibido.", - "api-error-filetype-banned-type": "$1 non {{PLURAL:$4|é un tipo de ficheiro permitido|son tipos de ficheiro permitidos}}. {{PLURAL:$3|O tipo de ficheiro permitido é|Os tipos de ficheiro permitidos son}} $2.", - "api-error-filetype-missing": "Fáltalle a extensión ao ficheiro.", - "api-error-hookaborted": "O asociador da extensión cancelou a modificación que intentou realizar.", - "api-error-http": "Erro interno: Non se puido conectar co servidor.", - "api-error-illegal-filename": "O nome do ficheiro non está permitido.", - "api-error-internal-error": "Erro interno: Houbo un problema ao procesar a súa carga no wiki.", - "api-error-invalid-file-key": "Erro interno: Non se atopou o ficheiro no depósito temporal.", - "api-error-missingparam": "Erro interno: Faltan parámetros na solicitude.", - "api-error-missingresult": "Erro interno: Non se puido determinar se a copia saíu ben.", - "api-error-mustbeloggedin": "Debe acceder ao sistema para cargar ficheiros.", - "api-error-mustbeposted": "Erro interno: A solicitude necesita HTTP POST.", - "api-error-noimageinfo": "A carga realizouse correctamente, pero o servidor non nos deu ningunha información sobre o ficheiro.", - "api-error-nomodule": "Erro interno: Non hai ningún módulo de cargas.", - "api-error-ok-but-empty": "Erro interno: Non hai resposta do servidor.", - "api-error-overwrite": "Non está permitido sobrescribir un ficheiro existente.", - "api-error-ratelimited": "Está intentando subir máis ficheiros nun pequeno espazo de tempo do que permite este wiki.\nPor favor, inténteo de novo nuns minutos.", - "api-error-stashfailed": "Erro interno: O servidor non puido almacenar o ficheiro temporal.", "api-error-publishfailed": "Erro interno: O servidor non puido publicar o ficheiro temporal.", - "api-error-stasherror": "Houbo un erro ao subir o ficheiro ao depósito.", - "api-error-stashedfilenotfound": "O ficheiro apartado non se atopou ao intentar envialo.", - "api-error-stashpathinvalid": "A ruta na que se apartara o ficheiro non era correcta.", - "api-error-stashfilestorage": "Produciuse un erro ao apartar o ficheiro.", - "api-error-stashzerolength": "O servidor non puido apartar o ficheiro porque o ficheiro está baleiro.", - "api-error-stashnotloggedin": "Debe identificarse para gardar ficheiros no apartado de envío.", - "api-error-stashwrongowner": "O ficheiro apartado ao que intentaba acceder non lle pertence a vostede.", - "api-error-stashnosuchfilekey": "A clave de ficheiro apartado á que intentaba acceder non existe.", - "api-error-timeout": "O servidor non respondeu no tempo esperado.", - "api-error-unclassified": "Houbo un erro descoñecido.", - "api-error-unknown-code": "Erro descoñecido: \"$1\"", - "api-error-unknown-error": "Erro interno: Houbo un problema ao intentar cargar o ficheiro.", + "api-error-stashfailed": "Erro interno: O servidor non puido almacenar o ficheiro temporal.", "api-error-unknown-warning": "Advertencia descoñecida: \"$1\".", "api-error-unknownerror": "Erro descoñecido: \"$1\".", - "api-error-uploaddisabled": "As cargas están desactivadas neste wiki.", - "api-error-verification-error": "Este ficheiro podería estar corrupto ou ter unha extensión incorrecta.", - "api-error-was-deleted": "Un ficheiro con este mesmo nome xa foi cargado con anterioridade e posteriormente eliminado.", "duration-seconds": "$1 {{PLURAL:$1|segundo|segundos}}", "duration-minutes": "$1 {{PLURAL:$1|minuto|minutos}}", "duration-hours": "$1 {{PLURAL:$1|hora|horas}}", @@ -3625,6 +3619,7 @@ "pagelang-submit": "Enviar", "pagelang-nonexistent-page": "A páxina $1 non existe.", "pagelang-unchanged-language": "A páxina $1 xa foi definida coa lingua $2.", + "pagelang-unchanged-language-default": "A páxina $1 xa está configurada na lingua de contido por defecto do wiki.", "pagelang-db-failed": "A base de datos fallou ó tentar mudar a lingua da páxina.", "right-pagelang": "Cambiar a lingua da páxina", "action-pagelang": "cambiar a lingua da páxina", @@ -3697,6 +3692,7 @@ "mw-widgets-titleinput-description-new-page": "a páxina aínda non existe", "mw-widgets-titleinput-description-redirect": "redirección cara a $1", "mw-widgets-categoryselector-add-category-placeholder": "Engadir unha categoría...", + "mw-widgets-usersmultiselect-placeholder": "Engadir máis...", "sessionmanager-tie": "Non pode combinar peticións múltiples de tipos de autenticación: $1.", "sessionprovider-generic": "sesións $1", "sessionprovider-mediawiki-session-cookiesessionprovider": "sesións baseadas nas cookies", @@ -3828,7 +3824,7 @@ "usercssispublic": "Lembre: As subpáxinas CSS non deberían conter datos confidenciais porque outros usuarios poden velos.", "restrictionsfield-badip": "Enderezo IP ou rango de IP non válido: $1", "restrictionsfield-label": "Rangos de IP permitidos:", - "restrictionsfield-help": "Un único enderezo IP ou rango CIDR por liña. Para habilitalos todos, utilice<br><code>0.0.0.0/0</code><br><code>::/0</code>", + "restrictionsfield-help": "Un único enderezo IP ou rango CIDR por liña. Para habilitalos todos, utiliceː\n<pre>0.0.0.0/0\n::/0</pre>", "revid": "revisión $1", "pageid": "identificador de páxina $1" } diff --git a/languages/i18n/glk.json b/languages/i18n/glk.json index 4e4e804bc1..bb6c4bccfd 100644 --- a/languages/i18n/glk.json +++ b/languages/i18n/glk.json @@ -82,6 +82,7 @@ "dec": "دسامبر", "pagecategories": "{{PLURAL:$1|جرگه|جرگهٰ‌ن}}", "category_header": "\"$1\" جرگه مئنˇ ولگؤن", + "subcategories": "جيررچؤن", "category-media-header": "\"$1\" جرگه مئنˇ رسانهٰ‌ن", "hidden-categories": "{{PLURAL:$1|جخۊته جرگه|جخۊته جرگهٰ‌ن}}", "category-subcat-count": "{{PLURAL:$2|اي جرگه ميئن خالي اي جيرجرگه دره.|{{PLURAL:$1|اي جيرجرگه|اي $1 جيرجرگه}} اي جرگه ميئن {{PLURAL:$1|دره|درن}}؛ اي جرگه سرجمع $2ته جيرجرگه دأنه.}}", @@ -89,6 +90,7 @@ "category-article-count-limited": "جيرˇ{{PLURAL:$1|ولگ|$1 ولگ}} هي جرگه مئن دره.", "category-file-count": "{{PLURAL:$2|اي جرگه مئن خالي اي فاىل دره.|{{PLURAL:$1|اي فاىل|اي $1ته فاىل}} اي جرگه مئن {{PLURAL:$1|دره|درن}}؛ اي جرگه مئن در کؤل $2ته فاىل دره.}}", "listingcontinuesabbrev": "(ايدامه)", + "newwindow": "(تازه پنجره ميئن بازأبۊنه)", "cancel": "لغو", "moredotdotdot": "ویشتر...", "mypage": "ولگ", @@ -114,6 +116,7 @@ "printableversion": "وؤته چاپ گۊدن", "permalink": "داىمي خال", "view": "دئن", + "view-foreign": "دئن $1ˇ ميئن", "edit": "دچينواچين", "editthispage": "اي ولگه دچينواچين بکۊن", "create-this-page": "اي ولگه چاکۊن", @@ -134,12 +137,13 @@ "categorypage": "جرگه ولگه دئن", "otherlanguages": "باخي زوانؤنˇ جي", "redirectedfrom": "(مسير عوضاؤدن $1 أجي)", + "lastmodifiedat": "اي ولگ آخري گرش $1ˇ ميئن ساعت $2 دچينواچين بۊبؤ.", "protectedpage": "بپأسه ولگ", "jumpto": "بوؤز:", "jumptonavigation": "گردسن", "jumptosearch": "وامج", "view-pool-error": "سرورؤنˇ سر پۊر بار هننأ. پۊر پۊرˇ کارگيرؤن حقسأى کأدرن که اي ولگه فأندرن. \nلؤطف بۊکۊنين ىيسکالى صبر بدأرين.\n\n$1", - "aboutsite": "راجه به {{SITENAME}}", + "aboutsite": "راجع به {{SITENAME}}", "aboutpage": "Project:راجه به", "copyrightpage": "{{ns:project}}:چاکۊدنحق", "currentevents": "هسأىي تفاقؤن", @@ -282,7 +286,6 @@ "resetpass-submit-cancel": "لغو", "passwordreset": "هندئه رمز چاگۊدن", "passwordreset-username": "کارگيري نؤم:", - "passwordreset-capture-help": "أگه اي گۊزينه' تيک بزنين، ايمىل (که اينˇ مئن مؤوقتي رمز دره) شيمئبه نۊشؤن بدأ بنه ؤ کارگيرئبه ني اۊسئه بنه.", "passwordreset-emailelement": "کارگيري نؤم: \n$1\n\nمؤوقتي رمز: \n$2", "bold_sample": "پۊررنگˇ وؤت", "bold_tip": "پۊررنگˇ وؤت", @@ -293,8 +296,11 @@ "extlink_sample": "http://www.example.com خالˇ تيتر", "extlink_tip": "بيريني خال (http://‎ پيشونده ىادانکۊنين)", "headline_sample": "تيترˇ وؤت", + "headline_tip": "سطحˇ ۲ˇ تيتر", + "nowiki_sample": "قالب-بندي نۊبؤ وؤت ائره واردأبي", "image_tip": "وؤتˇ مئنˇ تصوير", "media_tip": "فاىلˇ خال", + "sig_tip": "شيمي ايمضا ؤ زمتˇ برچسب", "hr_tip": "اؤفؤقي خط (اۊن أجي کم کارأگيرين)", "summary": "فيچالسه:", "minoredit": "اي نيميزگره دچينواچينه", @@ -312,6 +318,7 @@ "editingsection": "دچيواچينˇ مئن $1 (وابين)", "templatesused": "اي ولگˇ مينˇ {{PLURAL:$1|قالب|قالبؤن}}", "template-protected": "(بپأسه)", + "template-semiprotected": "(نيمه بپأسه)", "hiddencategories": "اي ولگ {{PLURAL:$1|ىکته جخۊته جرگه|$1 جخۊته جرگه}} مئن دره:", "currentrev-asof": "هسأىي نۊسخه تا $1", "revisionasof": "نۊسخه $1", @@ -332,6 +339,7 @@ "prevn": "داميشکˇ {{PLURAL:$1|$1}}", "nextn": "بعدي {{PLURAL:$1|$1}}", "shown-title": "$1هر ىکته ولگˇ مئن {{PLURAL:$1|نتيجه'|نتيجه'ن}} نۊشؤن بدي.", + "viewprevnext": "نۊشؤن دأن ($1 {{int:pipe-separator}} $2) ($3)", "searchprofile-articles": "دله ولگؤن", "searchprofile-images": "چنرسانه", "searchprofile-everything": "همه چي", @@ -341,9 +349,12 @@ "searchprofile-everything-tooltip": "تمؤمˇ دله' وامتن (حتی گبˇ ولگؤنه)", "searchprofile-advanced-tooltip": "دؤجئه نؤمفضا'نˇ مئن وامتن", "search-result-size": "$1 ({{PLURAL:$2|ىک کلمه|$2 کلمه'ن}})", + "search-redirect": "(مسير عوضاؤدن $1ˇ جي)", + "search-section": "($1ˇ وابين)", "search-category": "($1 جرگه)", "search-suggest": "شيمي منظۊر بۊ: $1", "searchall": "همه", + "search-nonefound": "نتيجه-اي ياته نۊبؤ.", "mypreferences": "ترجيحات", "skin-preview": "پيشادئن", "prefs-user-pages": "کارگيري ولگؤن", @@ -390,9 +401,16 @@ "enhancedrc-history": "تاريخ", "recentchanges": "آخري تغىيرؤن", "recentchanges-legend": "آخري تغىيرؤنˇ تنظيمات", + "recentchanges-summary": "ويکي آخري تغييرؤنه اي ولگˇ ميئن پى بگيرين.", "recentchanges-label-newpage": "اي دچينواچين ىکته تازه ولگ چاگۊده", "recentchanges-label-minor": "اي نيميزگره دچينواچينه", "recentchanges-label-bot": "اي دچينواچينه ىکته رۊبات بؤده", + "recentchanges-label-unpatrolled": "اي دچينواچين هلئه گشتزني نۊبؤ", + "recentchanges-label-plusminus": "ولگˇ حجم اي مقدار بايتˇ واويراز تغيير بؤده", + "recentchanges-legend-heading": "<strong>اختصارؤن:</strong>", + "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}}( [[Special:NewPages|تازه ولگؤنˇ ليسته]] بينين)", + "rclistfrom": "تازه تغييرؤنˇ نۊشؤن دأنˇ سرأگيري $3 $2ˇ جي", + "rcshowhideminor": "$1 نيميزگره دچينواچينؤن", "rcshowhideminor-show": "نۊشؤن دأن", "rcshowhideminor-hide": "دۊخۊسان", "rcshowhidebots": "$1 رۊباتؤن", @@ -414,7 +432,7 @@ "newpageletter": "نؤ", "boteditletter": "ر", "number_of_watching_users_pageview": "[$1 {{PLURAL:$1|کارگير}} پىگير]", - "rc-change-size-new": "$1 {{PLURAL:$1|باىت}} تغىيرˇ پسي", + "rc-change-size-new": "$1 {{PLURAL:$1|باىت}} تغييرˇ پسي", "recentchangeslinked": "مۊرتبطˇ تغىيرؤن", "recentchangeslinked-toolbox": "مۊرتبطˇ تغىيرؤن", "recentchangeslinked-summary": "اي جير، ىکته ليسته تينين بىنين آخري تغييرؤن أجي اۊ ولگؤنˇ مئن کي اي ولگˇ جي خال ببؤن (ىا جرگهٔ مؤردˇ نظرˇ جي). اۊ ولگؤني که [[Special:Watchlist|شيمئه پىگيري ليست]]۱ميئن دبۊن پۊررنگ نۊشؤن بدأبۊنن.", @@ -496,6 +514,7 @@ "namespace_association": "مؤرتبطˇ نؤمفضا", "tooltip-namespace_association": "ائره' تيک بزنين تا گبˇ نؤمفضا ىا مؤرتبط مؤضۊع ىا دؤجين بۊبؤ نؤمفضا ني شامل بۊبۊن.", "blanknamespace": "گت", + "contributions": "{{GENDER:$1|کارگير}}ˇ مۊشارکتؤن", "month": "اي ماه مئن (ؤ دأميشک):", "year": "اي سالˇ مئن (ؤ دأميشک):", "sp-contributions-talk": "گب", @@ -508,7 +527,7 @@ "blocklist-by": "دبۊدگر کيا", "blocklist-nousertalk": "مننه خۊ گبˇ ولگه دچينواچين بکۊنه", "blocklink": "دبۊستن", - "contribslink": "ىاوري‌ئن", + "contribslink": "ياوري‌ئن", "block-log-flags-nousertalk": "مننه خۊ گبˇ ولگه دچينواچين بکۊنه", "block-log-flags-hiddenname": "دۊخۊسانئه کارگيري نؤم", "movecategorypage-warning": "<strong>اخظار:</strong> شمه جرگه ولگه جابجا کأدرين. شيمه حواس بمؤنه کي فقط ولگ جابجا بنه ؤ ولگؤن قديمي جرگه مئن مؤنن ؤ تازه جرگه مئن <em>نشنن</em>.", @@ -524,9 +543,10 @@ "tooltip-pt-login": "بئتره ديرين بشين؛ بسچی گه ايجباری نیه.", "tooltip-pt-logout": "بيرين شؤن", "tooltip-pt-createaccount": "بئتره کارگیري حساب چاکۊنين ؤ ديرين بشين؛ بسچي که حساب چاؤدن ايجباری نیه.", - "tooltip-ca-talk": "گب راجه به ولگˇ مؤحتوا", + "tooltip-ca-talk": "گب راجع به ولگˇ مؤحتوا", "tooltip-ca-edit": "اي ولگه دچينواچين بۊکۊنين", "tooltip-ca-addsection": "ىکته تازه وابين چاکۊن", + "tooltip-ca-viewsource": "اي ولگ بپاسأکه.\nتؤنين اينˇ سربسه بينين", "tooltip-ca-history": "اي ولگˇ قديمي نۊسخه'ن", "tooltip-ca-protect": "Ø£ ولگه بپا", "tooltip-ca-move": "اي ولگه جابجا گۊدن", @@ -542,10 +562,13 @@ "tooltip-n-randompage": "ىکته کترئي ولگه أردن", "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-permalink": "پايدارˇ خال اي ولگˇ نۊسخهٰ جي", "tooltip-ca-nstab-main": "مۊحتوياتˇ ولگه دئن", "tooltip-ca-nstab-user": "کارگيرˇ ولگه دئن", "tooltip-ca-nstab-special": "اي ىکته خاصˇ ولگه ؤ نشأنه دچينواچين گۊدن.", @@ -554,16 +577,20 @@ "tooltip-ca-nstab-category": "جرگه ولگه دئن", "tooltip-save": "شيمه تغىيرؤنه ذخيره بکۊنين", "tooltip-preview": "شيمئه تغىيرؤنˇ پيشادئن. هلئه ثبت نۊده، اي کيليده کاراگيرين.", + "tooltip-diff": "تغييرؤني گه شۊمۊ وؤتˇ ميئن بدأينˇ نۊشؤن دأن", "tooltip-rollback": "\"پساوگردان\" اي ولگˇ آخري دچينواچينگرˇ دچينواچينؤنه ىکته تنگۊلى أجي خؤنثا کؤنه.", + "tooltip-summary": "فيچالسه وارد بکۊنين", "pageinfo-header-restrictions": "ولگه پأسن", "pageinfo-hidden-categories": "جخۊته {{PLURAL:$1| جرگه|جرگه}} ( $1 )", "pageinfo-toolboxlink": "ولگˇ اطلاعات", "pageinfo-category-info": "جرگه اطلاعات", "file-info-size": "<span dir=\"ltr\">$1 × $2</span> پیکسل، فاىلˇ واويراز: $3، نوع MIME فاىل: $4", "show-big-image": "أصلˇ فاىل", + "show-big-image-preview": "اي پيشأدئنˇ واويراز: $1.", "show-big-image-size": "<span dir=\"ltr\">$1 × $2</span> پيکسل", "metadata": "گتˇ دىتا", "metadata-fields": "اي پىغؤمˇ مئنˇ نۊشؤن بدأ تاتاىي گتˇ دىتا'ن، وختي کي تاتاىي گتˇ دىتا'نˇ جدول جمأبؤبي، هندئه نۊشؤن بدأ بنه. باخيˇ مؤردؤن خالي اۊ زمت نۊشؤن بدأ بنه کي اۊ جدول وابۊبۊن.\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-model": "دۊربينˇ مؤدل", "exif-software": "کارىته-بۊبؤ نرمبزار", "exif-colorspace": "رنگي فضا", @@ -575,7 +602,7 @@ "specialpages-group-login": "ديرين/ثبتˇ نؤم", "tag-list-wrapper": "([[Special:Tags|{{PLURAL:$1|تگ|تگؤن}}]]: $2)", "logentry-newusers-create": "کارگيري حساب $1 {{GENDER:$2|چاگۊده-بۊبؤ}}", - "searchsuggest-search": "وامج", + "searchsuggest-search": "{{SITENAME}} مئن وامج", "expand_templates_preview": "پيشادئن", "default-skin-not-found": "اؤخ! پيشفرضˇ قالبي که شيمه ويکي ئبه <code dir=\"ltr\"<$wgDefaultSkin</code> مئن تعريف ببؤ به عنوانˇ <code>$1</code>، دسفرس نيه.\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] نصب کنید، که همراه چندین پوسته و افزونه هستند. شما می‌توانید شاخه <code>skins/</code> را از آن نسخه‌برداری کرده و بچسبانید.\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 راهنما: کشف خودکار پوسته] را ببینید). شما می‌توانید خطوط زیر را به داخل <code>LocalSettings.php</code> بچسبانید تا {{PLURAL:$5|همه|همه}} پوسته‌های نصب‌شده را فعال کنید:\n\n<pre dir=\"ltr\">$3</pre>\n\n; اگر اخیراً <code>LocalSettings.php</code> را تغییر دادید:\n: نام پوسته‌ها را برای غلط املایی دوباره بررسی کنید." } diff --git a/languages/i18n/gom-latn.json b/languages/i18n/gom-latn.json index a3d9b8377f..9283234523 100644 --- a/languages/i18n/gom-latn.json +++ b/languages/i18n/gom-latn.json @@ -17,7 +17,7 @@ "tog-previewonfirst": "Poileach bodolacher zolok dakhoi", "tog-enotifwatchlistpages": "Mhojea sadurvollerintlem pan vo fail bodol'li zalear mhaka email dhadd", "tog-shownumberswatching": "Nodor dovorpi vangdianche sonkhya dakhoi", - "tog-oldsig": "Sodheachi soy:", + "tog-oldsig": "Tujea sod'dheachi soy:", "tog-uselivepreview": "Boroitastana zolok dahkoi", "tog-watchlisthideown": "Sadurvollerint mhojeo bodlopam lipoi", "tog-watchlisthidebots": "Sadurvollerint robotani kel'lim bodlopam lipoi", @@ -29,17 +29,17 @@ "editfont-default": "Browsera pormonnem", "sunday": "Aitar", "monday": "Somar", - "tuesday": "Munglar", - "wednesday": "Budhwar", - "thursday": "Birestar", + "tuesday": "Mongllar", + "wednesday": "Budvar", + "thursday": "Brestar", "friday": "Sukrar", - "saturday": "Sonvar", + "saturday": "Son'var", "sun": "Ait", "mon": "Som", - "tue": "Mung", - "wed": "Budh", - "thu": "Bres", - "fri": "Sukr", + "tue": "Mon", + "wed": "Bud", + "thu": "Bre", + "fri": "Suk", "sat": "Son", "january": "Janer", "february": "Febrer", @@ -107,7 +107,7 @@ "newwindow": "(novea zonelant uktem zata)", "cancel": "Rod'd kor", "moredotdotdot": "Anik...", - "morenotlisted": "Hi suchi purn na", + "morenotlisted": "Hi suchi purn nasonk xekta.", "mypage": "Pan", "mytalk": "Bhasabhas", "navigation": "Dixa-niontronn", @@ -350,7 +350,7 @@ "passwordreset-domain": "Domain:", "passwordreset-email": "Email potto:", "passwordreset-emailelement": "Vapurpeachem nanv: \n$1\n\nTatpurtem gupitutor: \n$2", - "passwordreset-emailsentemail": "Gupitutor portun tharaipacho email dhadla.", + "passwordreset-emailsentemail": "Ho email pot'to tujea kontak zodlelem asa zalear, gupitutor portun tharaipacho email dhadlelem zatelem.", "changeemail": "Email potto bodol vo kad", "changeemail-oldemail": "Sodhyacho email potto:", "changeemail-newemail": "Novo email potto:", @@ -382,6 +382,7 @@ "minoredit": "Hem ek dhaktem bodol", "watchthis": "Hea panar nodor dovor", "savearticle": "Pan samball", + "savechanges": "Bodlopam samball", "preview": "Zholok", "showpreview": "Zholok dakhoi", "showdiff": "Bodolpam dakhoi", @@ -470,7 +471,7 @@ "searchprofile-advanced-tooltip": "Khaxel'lea nanvthollanni sod", "search-result-size": "$1 {{PLURAL:$2|1 utor|$2 utram}}", "search-result-category-size": "{{PLURAL:$1|1 vangddi|$1 vangddi}} ({{PLURAL:$2|1 upvorg|$2 upvorg}}, {{PLURAL:$3|1 fichier|$3 fichieri}})", - "search-redirect": "(punornirdexon $1)", + "search-redirect": "($1 savn punornirdexit)", "search-section": "(vibhag $1)", "search-suggest": "Tu mhonnunk sodi: $1 ?", "search-rewritten": "$1 hachim porinamam dakhoilean. Hea vantteache $2 ak sod.", @@ -508,7 +509,7 @@ "recentchanges-label-plusminus": "Hea panacho akar itlea baitani bodol'lo", "recentchanges-legend-heading": "<strong>Kunji:</strong>", "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} ([[Special:NewPages|nove pananchi suchi]]-ui polloi)", - "rcnotefrom": "Sokoil <strong>$3, $4<strong> savnsavn {{PLURAL:$5|zalelem bodlop dilam|zalelim bodolpam dileant}} (<strong>$1<strong> meren {{PLURAL:$5|dakhoilam|dakhoileant}}).", + "rcnotefrom": "Sokoil <strong>$3, $4<strong> savn {{PLURAL:$5|zalelem bodlop dilam|zalelim bodolpam dileant}} (<strong>$1<strong> meren {{PLURAL:$5|dakhoilam|dakhoileant}}).", "rclistfrom": "$3 $2 savn suru zatelim novim bodolpam dakhoi", "rcshowhideminor": "$1 dhaktteo bodlopam", "rcshowhideminor-show": "Dakhoi", @@ -550,6 +551,7 @@ "uploadlogpage": "Uploadachem sotr", "filedesc": "Sar", "fileuploadsummary": "Aapros", + "large-file": "Faylachem akar $1 akin odik naslear borem; hi fayl $2 -anchi asa.", "watchthisupload": "Hea faylar dixtt dovor", "license": "Porvangi", "license-header": "Porvangi", @@ -680,7 +682,7 @@ "whatlinkshere-hideredirs": "$1 punornirdexonam", "whatlinkshere-hidetrans": "$1 durasth-somaveso", "whatlinkshere-hidelinks": "$1 zoddnio", - "whatlinkshere-hideimages": "Failinchim zoddpam $1", + "whatlinkshere-hideimages": "$1 faylinchim zoddni", "whatlinkshere-filters": "Challnio", "ipboptions": "2 voram:2 hours,1 dis:1 day,3 dis:3 days,1 satollo:1 week,2 satolle:2 weeks,1 mhoino:1 month,3 mhoine:3 months,6 mhoine:6 months,1 voros:1 year,sasnnank:infinite", "ipblocklist": "Addhailele vaporpi", @@ -800,7 +802,7 @@ "logentry-move-move": "$1-an $3 panak $4 {{GENDER:$2|haloilea}}", "logentry-newusers-create": "Vapurpeacho kont $1 {{GENDER:$2|rochlam}}", "logentry-upload-upload": "$1-an $3 {{GENDER:$2|upload kela}}", - "searchsuggest-search": "Sod", + "searchsuggest-search": "{{SITENAME}} sod", "special-characters-group-latin": "Romi", "special-characters-group-latinextended": "Romi (anink-ui)", "special-characters-group-ipa": "IPA", diff --git a/languages/i18n/gor.json b/languages/i18n/gor.json index 1006cc8fa6..7983c95592 100644 --- a/languages/i18n/gor.json +++ b/languages/i18n/gor.json @@ -112,12 +112,12 @@ "nov": "Nop", "dec": "Des", "january-date": "$1 Yanuari", - "february-date": "$1 Peburuari", + "february-date": "$1 Pebruari", "march-date": "$1 Maret", "april-date": "$1 April", "may-date": "$1 Mei", - "june-date": "$1 Yuni", - "july-date": "$1 Yuli", + "june-date": "$1 Juni", + "july-date": "$1 Juli", "august-date": "$1 Agustus", "september-date": "$1 September", "october-date": "$1 Oktober", @@ -174,6 +174,7 @@ "searcharticle": "Ntali", "history": "Riwayati lo halaman", "history_short": "Riwayati", + "history_small": "riwayati", "updatedmarker": "iluba to'u nila'o'u pulitiyo", "printableversion": "Persi cetak", "permalink": "Wumbuta kakali", @@ -184,15 +185,15 @@ "edit-local": "Ubawa deskripsi lokal", "create": "Mohutu", "create-local": "Duhengi deskripsi lokal", - "editthispage": "Ubawa halaamani boti", - "create-this-page": "Pohutuwa halaamani boti", + "editthispage": "Boli'a halaman botiye", + "create-this-page": "Pohutuwa halamani botiye", "delete": "Luluta", - "deletethispage": "Luluta halaamani boti", + "deletethispage": "Luluta halaman botiye", "undeletethispage": "Bataliya moluluto", "undelete_short": "Batali moluluto {{PLURAL:$1|tuwawu uba|$1 ubawa}}", "viewdeleted_short": "Bilohi {{PLURAL:$1|tuwawu yiluluto uba|$1 yiluluto ubawa}}", "protect": "Dahawa", - "protect_change": "gantiyi", + "protect_change": "boli'a", "protectthispage": "Dahawa halaman boti", "unprotect": "dudaha ubaalo", "unprotectthispage": "ubawa dudaha halaman botiye", @@ -205,6 +206,9 @@ "talk": "Biisalawa", "views": "Bibilohu", "toolbox": "Pilaakasi", + "tool-link-userrights": "Boli'a lembo'a {{GENDER:$1|pengguna}}", + "tool-link-userrights-readonly": "Bilohi lembo'a {{GENDER:$1|pengguna}}", + "tool-link-emailuser": "Lawola email ode {{GENDER:$1|user}}", "userpage": "Bilohi halaman pengguna", "projectpage": "Bilohi halaman proyek", "imagepage": "Bilohi halaman berkas", @@ -239,7 +243,7 @@ "disclaimers": "Momaahu", "disclaimerpage": "Project:Momaahu umum", "edithelp": "Wubodu momoli'o", - "helppage-top-gethelp": "Tuulungi", + "helppage-top-gethelp": "Wubodu", "mainpage": "Halaman Bungaliyo", "mainpage-description": "Halaman bungaliyo", "policy-url": "Project:Kebijakan", @@ -269,8 +273,8 @@ "toc": "Tuwango", "showtoc": "popobilehe", "hidetoc": "wanto'a", - "collapsible-collapse": "Lolohubu", - "collapsible-expand": "Duhengi", + "collapsible-collapse": "Wanto'a", + "collapsible-expand": "Bu'ade", "confirmable-confirm": "Delo {{GENDER:$1|yi'o}} yakini?", "confirmable-yes": "Jo", "confirmable-no": "De'e", @@ -309,6 +313,7 @@ "databaseerror-query": "Kueri $1", "databaseerror-function": "Huna: $1", "databaseerror-error": "Lotaalawa: $1", + "transaction-duration-limit-exceeded": "Untuk mencegah penundaan replikasi yang tinggi, pengiriman ini dibatalkan karena durasi tulis ($1) melebihi batas $2 {{PLURAL:$2|detik|detik}}.\nJika Anda ingin mengganti banyak butir sekaligus, cobalah melakukan dalam operasi yang lebih kecil.", "laggedslavemode": "<strong>Warning:</strong> Halaman kira ja o tuwanga lo'ubawa bohu", "readonly": "Basis data unti-unti", "enterlockreason": "Masowa alasani longunti wawu omoluwa u'unti hu'oolo", @@ -349,6 +354,7 @@ "protectedpagetext": "Halaman botiye ma iluntiya alihu diya'a ta momoli'o meyalo huhutu uweewo.", "viewsourcetext": "Yi'o mowali momilohu wawu mohemi monto bungoliyo lo halaman botiye.", "viewyourtext": "Yi'o mowali momilohu wawu mohemi bungo monto <strong>biloli'umu</strong> to halaman botiye.", + "protectedinterface": "Halaman ini memuat teks antarmuka untuk perangkat lunak pada wiki ini, dan dilindungi terhadap penyalahgunaan. Untuk menambah atau mengubah terjemahan pada semua wiki, harap gunakan [https://translatewiki.net/ translatewiki.net], proyek pelokalan MediaWiki.", "namespaceprotected": "Yi'o ja o haku momoli'a halaman botiye to <strong>$1</strong> huwali tanggulo.", "mycustomcssprotected": "Yi'o ja o iijini monguba halaman CSS boti.", "mycustomjsprotected": "Yi'o ja o iijini monguba halaman JavaScript boti.", @@ -746,5 +752,5 @@ "logentry-move-move": "$1 {{GENDER:$2|moheyi}} halaman $3 ode $4", "logentry-newusers-create": "Ta ohu'uwo akun $1 {{GENDER:$2|mohutu}}", "logentry-upload-upload": "$1 {{GENDER:$2|mengunggah}} $3", - "searchsuggest-search": "Lolohe" + "searchsuggest-search": "Lolohe {{SITENAME}}" } diff --git a/languages/i18n/gsw.json b/languages/i18n/gsw.json index c6f36fa134..b4db8f3924 100644 --- a/languages/i18n/gsw.json +++ b/languages/i18n/gsw.json @@ -423,19 +423,12 @@ "login": "Aamälde", "login-security": "Due dyni Identität verifiziere", "nav-login-createaccount": "Aamälde / Konto aalege", - "userlogin": "Aamälde/Konto aalege", - "userloginnocreate": "Aamälde", "logout": "Abmälde", "userlogout": "Abmälde", "notloggedin": "Nit aagmäldet", "userlogin-noaccount": "No kei Benutzerkonto?", "userlogin-joinproject": "Bi {{SITENAME}} aamälde", - "nologin": "No kei Benutzerkonto? $1.", - "nologinlink": "»Konto aaleege«", "createaccount": "Nöis Benutzerkonto aalege", - "gotaccount": "Du häsch scho a Konto? '''$1'''", - "gotaccountlink": "»Login fir Benutzer, wu scho aagmäldet sin«", - "userlogin-resetlink": "Hesch Dyy Aamäldedate vergässe?", "userlogin-resetpassword-link": "Passwort vergässe?", "userlogin-helplink2": "Hilf bim Aamälde", "userlogin-loggedin": "Du bisch scho as {{GENDER:$1|$1}} aagmäldet.\nBruuch s Formular unte go Di unter eme andere Benutzername aamälde.", @@ -446,7 +439,6 @@ "createacct-another-email-ph": "Gib Dyy E-Mail-Adräss yy", "createaccountmail": "E temporär Zuefallspasswort bruuchen un an di aagee E-Mail-Adräss schicke", "createacct-realname": "Richtige Name (optional)", - "createaccountreason": "Grund:", "createacct-reason": "Grund", "createacct-reason-ph": "Wurum Du ne ander Benutzerkonto aaleisch", "createacct-submit": "Dyy Benutzerkonto aalege", @@ -948,8 +940,6 @@ "saveprefs": "Änderige spychere", "restoreprefs": "Alli Standardyystellige widerhärstelle (in allne Abschnitt)", "prefs-editing": "Tekscht-Ygab", - "rows": "Zylene", - "columns": "Spaltene", "searchresultshead": "Suech-Ergäbnis", "stub-threshold": "Spezielli Darstellig ($1) für Links uf chlyni Syte bis zu’re bestimmte Gröössi (i Bytes):", "stub-threshold-sample-link": "Byspil", @@ -1330,7 +1320,7 @@ "uploaded-setting-handler-svg": "Ir ufegladnigen SVG-Datei het’s es «handler»-Attribut mit Externem/Date/Script: <code>$1=\"$2\"</code>. Das isch nid erloubt.", "uploaded-remote-url-svg": "Ir ufegladnigen SVG-Datei het’s es Style-Attribut mit emnen externen URL: <code>$1=\"$2\"</code>. Das isch nid erloubt.", "uploaded-image-filter-svg": "Ir ufegladnigen SVG-Datei het’s e Bildfilter mit emnen URL: <code><$1 $2=\"$3\"></code>.", - "uploadscriptednamespace": "I deren SVG-Datei het’s der illegal Namensruum «$1».", + "uploadscriptednamespace": "I deren SVG-Datei het’s der illegal Namensruum «<nowiki>$1</nowiki>».", "uploadinvalidxml": "S XML in dr uffegladene Datei het nit chenne parst wäre.", "uploadvirus": "In däre Datei het s e Virus! Detail: $1", "uploadjava": "Des isch e ZIP-Datei, wu s e CLASS-Datei vu Java din het.\nS Uffelade vu Java-Dateien isch nit gstattet, wel si s Umgoh vu Sicherheitsyyschränkige chennte megli mache.", @@ -3015,7 +3005,7 @@ "specialpages-group-changes": "D letschte Änderige un Logbüecher", "specialpages-group-media": "Medie", "specialpages-group-users": "Benutzer un Rächt", - "specialpages-group-highuse": "Syte wo oft bruucht werde", + "specialpages-group-highuse": "Syte wo hüüfig bruucht werde", "specialpages-group-pages": "Lischte vo Syte", "specialpages-group-pagetools": "Sytewerchzüüg", "specialpages-group-wiki": "Date un Wärchzyyg", @@ -3214,7 +3204,6 @@ "logentry-tag-update-revision": "{{GENDER:$2|Der $1|D $1|$1}} het d Markierige bir Version $4 vor Syte $3 aktualisiert ({{PLURAL:$7|eini|$6}} derzueta, {{PLURAL:$9|eini|$8}} furtgnoh).", "logentry-tag-update-logentry": "{{GENDER:$2|Der $1|D $1|$1}} het d Markierige bim Logbuechytrag $5 vor Syte $3 aktualisiert ({{PLURAL:$7|eini|$6}} derzueta, {{PLURAL:$9|eini|$8}} furtgnoh).", "rightsnone": "(keini)", - "revdelete-summary": "Zämmefassig", "feedback-adding": "Ruggmäldig wird zur Syte dezuegfiegt …", "feedback-back": "Zrügg", "feedback-bugcheck": "Schen! Bitte iberprief no, eb s sich doderby nit um e scho [$1 bekannte Fähler] handlet.", @@ -3239,52 +3228,12 @@ "feedback-useragent": "User Agent:", "searchsuggest-search": "{{SITENAME}} dursueche", "searchsuggest-containing": "din het s …", - "api-error-badaccess-groups": "Du derfsch keini Dateie in des Wiki uffelade.", "api-error-badtoken": "Intärne Fähler: Dr Token isch fählerhaft.", - "api-error-copyuploaddisabled": "S Uffelade iber e URL isch uf däm Server deaktiviert.", - "api-error-duplicate": "S git im Wiki scho {{PLURAL:$1|ei anderi Datei|anderi Dateie}} mit em glyche Inhalt.", - "api-error-duplicate-archive": "Es {{PLURAL:$1|isch scho e andri Datei|sin scho anderi Dateie}} mit em glyche Inhalt vorhande gsi. {{PLURAL:$1|Si isch|Si sin}} allerdings glöscht worde.", - "api-error-empty-file": "D Datei, wu Du uffeglade hesch, isch läär.", "api-error-emptypage": "S isch nit erlaubt, neji lääri Syte aazlege.", - "api-error-fetchfileerror": "Intärne Fähler: Bim Abruefe vu dr Datei isch e Fähler ufträtte.", - "api-error-fileexists-forbidden": "S git scho ne Datei mit Name „$1“, si cha nit iberschryybe wäre.", - "api-error-fileexists-shared-forbidden": "S git scho ne Datei mit Name „$1“ im gmeinsame Dateirepositorium, si cha wäge däm nit iberschrybe wäre.", - "api-error-file-too-large": "D Datei, wu Du ibertrait hesch, isch z groß.", - "api-error-filename-tooshort": "Dr Dateiname isch z churz.", - "api-error-filetype-banned": "Dää Dateityp isch gsperrt.", - "api-error-filetype-banned-type": "$1 {{PLURAL:$4|isch e Dateiformat, wu nit erlaubt isch|sin Dateitype, wu nit erlaubt sin}}. Erlaubt {{PLURAL:$3|isch s Dateiformat|sin d Dateiformat}} $2.", - "api-error-filetype-missing": "D Datei het kei Dateinameerwyterig.", - "api-error-hookaborted": "D Änderig, wu Du versuecht hesch, isch wäg eme Erwyterigs-Hooks abbroche wore.", - "api-error-http": "Intärne Fähler: S het kei Verbindig zum Server chenne härgstellt wäre.", - "api-error-illegal-filename": "Dr Dateiname isch nit erlaubt.", - "api-error-internal-error": "Intärne Fähler: E nit bekannte Fähler isch ufträtte bim Uffelade vu dr Datei ins Wiki.", - "api-error-invalid-file-key": "Intärne Fähler: D Datei isch nit im temporäre Spycher gfunde wore.", - "api-error-missingparam": "Intärne Fähler: Zue dr Aafrog fähle Parameter.", - "api-error-missingresult": "Intärne Fähler: S het nit chenne feschtgstellt wäre, eb s Kopiere erfolgryych gsi isch.", - "api-error-mustbeloggedin": "Zum Dateie uffelade muesch aagmäldet syy.", - "api-error-mustbeposted": "S git e Programmierfähler (s wird di falsch HTTP-Method brucht).", - "api-error-noimageinfo": "S Uffelade isch erfolgryych gsi, aber de Server het kei Informatione über d Datei zur Verfiegig gstellt.", - "api-error-nomodule": "Intärne Fähler: S isch kei Modul zum Uffelade feschtgleit wore.", - "api-error-ok-but-empty": "Intärne Fähler: Dr Server reagiert nit.", - "api-error-overwrite": "S Iberschryybe vun ere Datei, wu s scho git, isch nit erlaubt.", - "api-error-stashfailed": "Intärne Fähler: Dr Server het kei temporäri Datei chenne spychere.", "api-error-publishfailed": "Interne Fähler: Der Server het di temporäri Datei nid chönne veröffentleche.", - "api-error-stasherror": "Bim Ufelade vor Datei het’s e Fähler ’gä.", - "api-error-stashedfilenotfound": "Di gspychereti Datei het sech nümm la finde bim Versuech, se vom Spycher ufezlade.", - "api-error-stashpathinvalid": "Der Pfad isch ungültig, wo di gspychereti Datei hätt sölle sy.", - "api-error-stashfilestorage": "Bim Spychere vor Datei het’s e Fähler ’gä.", - "api-error-stashzerolength": "Der Server het d Datei nid chönne spychere, wil si e Lengi vo Null het.", - "api-error-stashnotloggedin": "Du muesch di ylogge, für Dateie zum Ufelade chönne z spychere.", - "api-error-stashwrongowner": "D Datei ghört nid dir, wo du probiert hesch im Spycher druf zuezgryffe.", - "api-error-stashnosuchfilekey": "Der Dateischlüssel git’s nid, wo du probiert hesch im Spycher druf zuezgryffe.", - "api-error-timeout": "Dr Server het kei antwort gee in dr erwartete Zyt.", - "api-error-unclassified": "S het e nit bekannte Fähler gee.", - "api-error-unknown-code": "Nit bekannte Fähler: „$1“", - "api-error-unknown-error": "Intärne Fähler: E nit bekannte Fähler isch ufträtte bim Uffelade vu dr Datei.", + "api-error-stashfailed": "Intärne Fähler: Dr Server het kei temporäri Datei chenne spychere.", "api-error-unknown-warning": "Unbekannti Warnig: $1", "api-error-unknownerror": "Nit bekannte Fähler: „$1“", - "api-error-uploaddisabled": "S Uffelade isch in däm Wiki deaktiviert.", - "api-error-verification-error": "Die Datei isch entwäder fählerhaft oder si het di falsch Dateinameerwyterig.", "duration-seconds": "$1 {{PLURAL:$1|Sekund|Sekunde}}", "duration-minutes": "$1 {{PLURAL:$1|Minut|Minute}}", "duration-hours": "$1 {{PLURAL:$1|Stund|Stunde}}", diff --git a/languages/i18n/he.json b/languages/i18n/he.json index cada57582a..f5fdd7d6ee 100644 --- a/languages/i18n/he.json +++ b/languages/i18n/he.json @@ -36,7 +36,8 @@ "DatGuy", "IKhitron", "Matma Rex", - "Or" + "Or", + "שמזן" ] }, "tog-underline": "סימון קישורים בקו תחתי:", @@ -445,19 +446,12 @@ "login": "כניסה לחשבון", "login-security": "אימות הזהות שלך", "nav-login-createaccount": "כניסה לחשבון / הרשמה", - "userlogin": "כניסה לחשבון / הרשמה", - "userloginnocreate": "כניסה לחשבון", "logout": "יציאה מהחשבון", "userlogout": "יציאה מהחשבון", "notloggedin": "לא בחשבון", "userlogin-noaccount": "אין לך חשבון?", "userlogin-joinproject": "הצטרפות ל{{grammar:תחילית|{{SITENAME}}}}", - "nologin": "אין לך חשבון? $1.", - "nologinlink": "הרשמה", "createaccount": "יצירת חשבון חדש", - "gotaccount": "כבר יש לך חשבון? $1.", - "gotaccountlink": "כניסה לחשבון", - "userlogin-resetlink": "שכחת את פרטי הכניסה?", "userlogin-resetpassword-link": "שכחת את הסיסמה?", "userlogin-helplink2": "עזרה בכניסה לחשבון", "userlogin-loggedin": "אתם כבר מחוברים לחשבון {{GENDER:$1|$1}}.\nהשתמשו בטופס שלהלן כדי להתחבר לחשבון אחר.", @@ -470,7 +464,6 @@ "createaccountmail": "שימוש בסיסמה זמנית אקראית ושליחתה לכתובת הדוא\"ל שצוינה", "createaccountmail-help": "יכול לשמש ליצירת חשבון לאדם אחר בלי לברר מה הססמה.", "createacct-realname": "שם אמיתי (לא חובה)", - "createaccountreason": "סיבה:", "createacct-reason": "סיבה", "createacct-reason-ph": "סיבה ליצירת חשבון נוסף", "createacct-reason-help": "הודעה שמוצגת ביומן רישום המשתמשים", @@ -667,7 +660,7 @@ "selfredirect": "<strong>אזהרה:</strong> ניסית ליצור הפניה מדף זה לעצמו.\nאולי כתבת יעד שגוי להפניה, ואולי ערכת את הדף הלא־נכון.\nלחיצה חוזרת על הכפתור \"{{int:savearticle}}\" תגרום להפניה להיווצר בכל זאת.", "missingcommenttext": "יש להקליד את ההודעה למטה.", "missingcommentheader": "<strong>תזכורת:</strong> לא הזנת נושא להודעה זו.\nלחיצה חוזרת על הכפתור \"{{int:savearticle}}\" תגרום לעריכה שלך להישמר ללא נושא.", - "summary-preview": "תצוגה מקדימה של התקציר:", + "summary-preview": "תצוגה מקדימה של תקציר העריכה:", "subject-preview": "תצוגה מקדימה של הנושא:", "previewerrortext": "אירעה שגיאה בעת הניסיון להציג תצוגה מקדימה של השינויים שלך.", "blockedtitle": "המשתמש חסום", @@ -975,6 +968,7 @@ "search-interwiki-caption": "מיזמי אחות", "search-interwiki-default": "תוצאות מתוך $1:", "search-interwiki-more": "(עוד)", + "search-interwiki-more-results": "תוצאות נוספות", "search-relatedarticle": "קשור", "searchrelated": "קשור", "searchall": "הכול", @@ -1064,6 +1058,7 @@ "youremail": "דואר אלקטרוני:", "username": "שם {{GENDER:$1|המשתמש|המשתמשת}}:", "prefs-memberingroups": "{{GENDER:$2|חבר|חברה}} {{PLURAL:$1|בקבוצה|בקבוצות}}:", + "group-membership-link-with-expiry": "$1 (עד $2)", "prefs-registration": "זמן ההרשמה:", "yourrealname": "שם אמיתי:", "yourlanguage": "שפת הממשק:", @@ -1108,17 +1103,26 @@ "editusergroup": "טעינת קבוצות המשתמש", "editinguser": "שינוי ההרשאות של {{GENDER:$1|המשתמש|המשתמשת}} <strong>[[User:$1|$1]]</strong> $2", "viewinguserrights": "צפייה בהרשאות של {{GENDER:$1|המשתמש|המשתמשת}} <strong>[[User:$1|$1]]</strong> $2", - "userrights-editusergroup": "עריכת קבוצות משתמש", - "userrights-viewusergroup": "צפייה בקבוצות משתמש", + "userrights-editusergroup": "עריכת קבוצות {{GENDER:$1|המשתמש|המשתמשת}}", + "userrights-viewusergroup": "צפייה בקבוצות {{GENDER:$1|המשתמש|המשתמשת}}", "saveusergroups": "שמירת הקבוצות של ה{{GENDER:$1|משתמש|משתמשת}}", "userrights-groupsmember": "{{GENDER:$2|חבר|חברה}} ב{{PLURAL:$1|קבוצה|קבוצות}}:", "userrights-groupsmember-auto": "{{GENDER:$2|חבר|חברה}} אוטומטית ב{{PLURAL:$1|קבוצה|קבוצות}}:", - "userrights-groups-help": "באפשרותך לשנות את הקבוצות ש{{GENDER:$1|משתמש זה חבר|משתמשת זו חברה}} בהן:\n* תיבה מסומנת פירושה שה{{GENDER:$1|משתמש כבר חבר|משתמשת כבר חברה}} בקבוצה.\n* תיבה בלתי מסומנת פירושה שה{{GENDER:$1|משתמש אינו חבר|משתמשת אינה חברה}} בקבוצה.\n* סימון * פירושו שלא יהיה באפשרותך להסיר את ה{{GENDER:$1|משתמש|משתמשת}} מהקבוצה לאחר שהוספת {{GENDER:$1|אותו|אותה}} אליה, או להפך.", + "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": "{{PLURAL:$1|קבוצה|קבוצות}} שבאפשרותך לשנות", "userrights-unchangeable-col": "{{PLURAL:$1|קבוצה|קבוצות}} שאין באפשרותך לשנות", + "userrights-expiry-current": "פוקעת ב־$1", + "userrights-expiry-none": "אינה פוקעת", + "userrights-expiry": "פקיעה:", + "userrights-expiry-existing": "זמן הפקיעה הנוכחי: $3, $2", + "userrights-expiry-othertime": "זמן אחר:", + "userrights-expiry-options": "יום:1 day,שבוע:1 week,חודש:1 month,שלושה חודשים:3 months,שישה חודשים:6 months,שנה:1 year", + "userrights-invalid-expiry": "זמן הפקיעה לקבוצה \"$1\" אינו תקין.", + "userrights-expiry-in-past": "זמן הפקיעה לקבוצה \"$1\" הוא בעבר.", + "userrights-cannot-shorten-expiry": "אין באפשרותך להקדים את זמן הפקיעה של הקבוצה \"$1\". רק משתמשים בעלי הרשאה להוסיף ולהסיר את הקבוצה יכולים להקדים את זמן הפקיעה.", "userrights-conflict": "התנגשות בין שינויי הרשאות משתמש! אנא בִּדקו את השינויים שלכם ואשרו אותם.", "group": "קבוצה:", "group-user": "משתמשים", @@ -1320,22 +1324,61 @@ "recentchanges-legend-plusminus": "(<em>±123</em>)", "recentchanges-submit": "הצגה", "rcfilters-activefilters": "מסננים פעילים", + "rcfilters-restore-default-filters": "שחזור למסנני ברירת המחדל", + "rcfilters-clear-all-filters": "מחיקת כל המסננים", "rcfilters-search-placeholder": "סינון שינויים אחרונים (עיינו או התחילו להקליד)", "rcfilters-invalid-filter": "מסנן בלתי־תקין", + "rcfilters-empty-filter": "אין מסננים פעילים. כל התרומות מוצגות.", "rcfilters-filterlist-title": "מסננים", + "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-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-filter-userExpLevel-newcomer-label": "חדשים", - "rcfilters-filter-userExpLevel-newcomer-description": "עורכים חדשים מאוד: פחות מ־10 עריכות ו־4 ימים של פעילות.", - "rcfilters-filter-userExpLevel-learner-label": "לומדים", - "rcfilters-filter-userExpLevel-learner-description": "יותר ימי פעילות ועריכות מ\"חדשים\", אבל פחות מ\"משתמשים מנוסים\".", - "rcfilters-filter-userExpLevel-experienced-label": "משתמשים מנוסים", - "rcfilters-filter-userExpLevel-experienced-description": "יותר מ־30 ימים של פעילות ו־500 עריכות.", + "rcfilters-filtergroup-userExpLevel": "רמת ניסיון (למשתמשים רשומים בלבד)", + "rcfilters-filtergroup-user-experience-level-conflicts-unregistered": "המסנן הזה אינו פעיל כי הוא מוצא רק משתמשים רשומים, ולכן המסנן \"לא רשומים\" מבטל את השפעתו.", + "rcfilters-filtergroup-user-experience-level-conflicts-unregistered-global": "המסנן \"לא רשומים\" מתנגש עם אחד או יותר ממסנני רמת הניסיון. מסנני רמת ניסיון מוצאים משתמשים רשומים בלבד. המסננים המתנגשים מסומנים לעיל כבלתי־פעילים.", + "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": "יותר מ־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-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": "פעולות מנהליות, יצירת חשבונות, מחיקת דפים, העלאות...", "rcnotefrom": "להלן {{PLURAL:$5|השינוי שבוצע|השינויים שבוצעו}} מאז <strong>$3, $4</strong> (מוצגים עד <strong>$1</strong>).", "rclistfrom": "הצגת שינויים חדשים החל מ־$2, $3", "rcshowhideminor": "$1 עריכות משניות", @@ -1469,7 +1512,7 @@ "uploaded-setting-handler-svg": "SVG שמגדיר את המאפיין \"handler\" עם remote/data/script חסום. נמצא <code dir=\"ltr\">$1=\"$2\"</code> בקובץ ה־SVG שהועלה.", "uploaded-remote-url-svg": "SVG שמגדיר כל מאפיין style עם URL מרוחק חסום. נמצא <code dir=\"ltr\">$1=\"$2\"</code> בקובץ ה־SVG שהועלה.", "uploaded-image-filter-svg": "נמצא מסנן תמונה עם URL‏: <code dir=\"ltr\"><$1 $2=\"$3\"></code> בקובץ ה־SVG שהועלה.", - "uploadscriptednamespace": "קובץ ה‏‏֫־SVG הזה כולל מרחב שם בלתי חוקי: '$1'", + "uploadscriptednamespace": "קובץ ה‏‏֫־SVG הזה כולל מרחב שם בלתי חוקי \"<nowiki>$1</nowiki>\".", "uploadinvalidxml": "לא ניתן לפרש את ה־XML בקובץ שהועלה.", "uploadvirus": "הקובץ מכיל וירוס!\nפרטים:\n<div dir=\"ltr\">$1</div>", "uploadjava": "קובץ זה הוא קובץ ZIP שמכיל קובץ ‎.class של Java.\nהעלאת קובצי Java אסורה, כיוון שהם יכולים לגרום לעקיפת מגבלות האבטחה.", @@ -1748,7 +1791,7 @@ "uncategorizedcategories": "קטגוריות חסרות קטגוריה", "uncategorizedimages": "קבצים חסרי קטגוריה", "uncategorizedtemplates": "תבניות חסרות קטגוריה", - "uncategorized-categories-exceptionlist": " # מכיל רשימה של קטגוריות שאינן אמורות להופיע בדףSpecial:UncategorizedCategories. יש לכתוב קטגוריה אחת בכל שורה, ולהתחיל כל שורה בתו \"*\". התוכנה תתעלם משורות המתחילות בתווים אחרים (לרבות רווחים). התו \"#\" משמש להערות.", + "uncategorized-categories-exceptionlist": " # מכיל רשימה של קטגוריות שאינן אמורות להופיע בדף Special:UncategorizedCategories. יש לכתוב קטגוריה אחת בכל שורה, ולהתחיל כל שורה בתו \"*\". התוכנה תתעלם משורות המתחילות בתווים אחרים (לרבות רווחים). התו \"#\" משמש להערות.", "unusedcategories": "קטגוריות שאינן בשימוש", "unusedimages": "קבצים שאינם בשימוש", "wantedcategories": "קטגוריות מבוקשות", @@ -1847,8 +1890,10 @@ "apisandbox-sending-request": "בקשת ה־API בשליחה...", "apisandbox-loading-results": "תוצאות ה־API בתהליך קבלה...", "apisandbox-results-error": "אירעה שגיאה בעת טעינת תשובת ה־API לבקשה: $1.", - "apisandbox-request-params-json": "הפרמטרים בפורמט JSON:", + "apisandbox-request-selectformat-label": "הצגת המידע שבבקשה כ:", + "apisandbox-request-format-url-label": "מחרוזת השאילתה (query string) של כתובת ה־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\" נכשלה.", @@ -1992,7 +2037,7 @@ "emailccsubject": "העתק של הודעתך למשתמש $1: $2", "emailsent": "הדואר נשלח", "emailsenttext": "הודעת הדואר האלקטרוני שלך נשלחה.", - "emailuserfooter": "$1 {{GENDER:$1|שלח|שלחה}} את הדוא\"ל הזה ל{{GENDER:$2|משתמש|משתמשת}} $2 באמצעות התכונה \"{{int:emailuser}}\" באתר {{SITENAME}}. התשובה שלך תישלח ישירות {{GENDER:$1|לשולח המקורי|לשולחת המקורית}}, והיא תחשוף {{GENDER:$1|בפניו|בפניה}} את כתובת הדוא\"ל שלך.", + "emailuserfooter": "$1 {{GENDER:$1|שלח|שלחה}} את הדוא\"ל הזה ל{{GENDER:$2|משתמש|משתמשת}} $2 באמצעות התכונה \"{{int:emailuser}}\" באתר {{SITENAME}}. אם {{GENDER:$2|תגיב|תגיבי}} לדוא\"ל הזה, התשובה שלך תישלח ישירות {{GENDER:$1|לשולח המקורי|לשולחת המקורית}}, והיא תחשוף {{GENDER:$1|בפניו|בפניה}} את כתובת הדוא\"ל שלך.", "usermessage-summary": "השארת הודעת מערכת.", "usermessage-editor": "שולח הודעות המערכת", "watchlist": "רשימת המעקב", @@ -2090,7 +2135,7 @@ "editcomment": "תקציר העריכה היה: <em>$1</em>.", "revertpage": "שוחזר מעריכות של [[Special:Contributions/$2|$2]] ([[User talk:$2|שיחה]]) לעריכה האחרונה של [[User:$1|$1]]", "revertpage-nouser": "שוחזר מעריכות של משתמש מוסתר לעריכה האחרונה של {{GENDER:$1|[[User:$1|$1]]}}", - "rollback-success": "שוחזר מעריכות של $1 לעריכה האחרונה של $2.", + "rollback-success": "שוחזר מעריכות של {{GENDER:$3|$1}} לעריכה האחרונה של {{GENDER:$4|$2}}.", "rollback-success-notify": "שוחזר מעריכות של $1 לעריכה האחרונה של $2. [$3 הצגת שינויים]", "sessionfailure-title": "בעיה בחיבור", "sessionfailure": "נראה שיש בעיה בחיבור שלך לאתר;\nפעולה זו בוטלה כאמצעי זהירות נגד התחזות לתקשורת ממחשבך.\nנא לחזור לדף הקודם, לטעון אותו מחדש ולנסות שוב.", @@ -3603,7 +3648,7 @@ "logentry-tag-update-revision": "$1 {{GENDER:$2|עדכן|עדכנה}} את התגיות בגרסה $4 של הדף $3 ({{PLURAL:$7|הוסיף|הוסיפה}} את $6; {{PLURAL:$9|הסיר|הסירה}} את $8)", "logentry-tag-update-logentry": "$1 {{GENDER:$2|עדכן|עדכנה}} את התגיות ברשומת היומן $5 של הדף $3 ({{PLURAL:$7|הוסיף|הוסיפה}} את $6; {{PLURAL:$9|הסיר|הסירה}} את $8)", "rightsnone": "(כלום)", - "revdelete-summary": "תקציר העריכה", + "rightslogentry-temporary-group": "$1 (זמני, עד $2)", "feedback-adding": "הוספת משוב לדף...", "feedback-back": "חזרה", "feedback-bugcheck": "מצוין! נא לבדוק שזה לא אחד מה[$1 באגים הידועים].", @@ -3628,56 +3673,12 @@ "feedback-useragent": "User agent:", "searchsuggest-search": "חיפוש ב{{grammar:תחילית|{{SITENAME}}}}", "searchsuggest-containing": "כולל...", - "api-error-autoblocked": "כתובת ה־IP שלך נחסמה אוטומטית, כי היא הייתה בשימוש על־ידי משתמש חסום.", - "api-error-badaccess-groups": "אינך מורשה להעלות קבצים לאתר הוויקי הזה.", "api-error-badtoken": "שגיאה פנימית: אסימון שבור.", - "api-error-blocked": "נחסמת מעריכה.", - "api-error-copyuploaddisabled": "העלאה לפי כתובת כובתה בשרת זה.", - "api-error-duplicate": "כבר יש באתר הזה {{PLURAL:$1|קובץ אחר|קבצים אחרים}} עם אותו תוכן.", - "api-error-duplicate-archive": "כבר {{PLURAL:$1|היה|היו}} באתר הזה {{PLURAL:$1|קובץ|קבצים}} עם אותו תוכן, אבל {{PLURAL:$1|הוא נמחק|הם נמחקו}}.", - "api-error-empty-file": "הקובץ ששלחת היה ריק.", "api-error-emptypage": "יצירת דפים חדשים ריקים אינה אפשרית.", - "api-error-fetchfileerror": "שגיאה פנימית: משהו השתבש בזמן אחזור הקובץ.", - "api-error-fileexists-forbidden": "קובץ בשם \"$1\" כבר קיים ואי־אפשר לדרוס אותו.", - "api-error-fileexists-shared-forbidden": "קובץ בשם \"$1\" כבר קיים במאגר הקבצים המשותף ואי־אפשר לדרוס אותו.", - "api-error-file-too-large": "הקובץ ששלחת היה גדול מדי.", - "api-error-filename-tooshort": "שם הקובץ קצר מדי.", - "api-error-filetype-banned": "סוג קובץ זה חסום.", - "api-error-filetype-banned-type": "$1 {{PLURAL:$4|הוא סוג קובץ אסור להעלאה|הם סוגי קבצים אסורים להעלאה}}. {{PLURAL:$3|סוג הקובץ המותר הוא|סוגי הקבצים המותרים הם}} $2.", - "api-error-filetype-missing": "חסרה סיומת לשם הקובץ.", - "api-error-hookaborted": "השינוי שניסית לעשות נחסם על־ידי הרחבה.", - "api-error-http": "שגיאה פנימית: לא ניתן להתחבר לשרת.", - "api-error-illegal-filename": "שם הקובץ הזה אינו מורשה.", - "api-error-internal-error": "שגיאה פנימית: משהו השתבש בעת עיבוד ההעלאה שלך באתר הוויקי.", - "api-error-invalid-file-key": "שגיאה פנימית: הקובץ לא נמצא במאגר הזמני.", - "api-error-missingparam": "שגיאה פנימית: פרמטרים חסרים בבקשה שנשלחה.", - "api-error-missingresult": "שגיאה פנימית: לא ניתן לקבוע אם ההעתקה הצליחה.", - "api-error-mustbeloggedin": "יש להיכנס לחשבון כדי להעלות קבצים.", - "api-error-mustbeposted": "שגיאה פנימית: הבקשה דורשת שימוש בשיטת POST של HTTP.", - "api-error-noimageinfo": "ההעלאה עבדה, אבל השרת לא נתן לנו שום מידע על הקובץ.", - "api-error-nomodule": "שגיאה פנימית: מודול ההעלאה אינו מוגדר.", - "api-error-ok-but-empty": "שגיאה פנימית: אין תשובה מהשרת.", - "api-error-overwrite": "לא מותרת החלפת קובץ קיים.", - "api-error-ratelimited": "ניסית להעלות בזמן קצר יותר קבצים מהכמות המירבית המותרת באתר הוויקי הזה.\nנא לנסות שוב בעוד מספר דקות.", - "api-error-stashfailed": "שגיאה פנימית: השרת נכשל באחסון הקובץ הזמני.", "api-error-publishfailed": "שגיאה פנימית: השרת נכשל בפרסום הקובץ הזמני.", - "api-error-stasherror": "הייתה שגיאה בהעלאת הקובץ לסליק.", - "api-error-stashedfilenotfound": "הקובץ המוסלק לא נמצא בעת הניסיון להעלות אותו מהסליק.", - "api-error-stashpathinvalid": "הנתיב שבו הקובץ שבמאגר אמור היה להימצא היה בלתי תקין.", - "api-error-stashfilestorage": "הייתה שגיאה בעת אחסון הקובץ בסליק.", - "api-error-stashzerolength": "השרת לא יכול היה לאחסן במאגר את הקובץ, כי אורכו היה אפס.", - "api-error-stashnotloggedin": "נדרשת כניסה לחשבון כדי לשמור קבצים בסליק ההעלאות.", - "api-error-stashwrongowner": "הקובץ שניסית לגשת אליו במאגר אינו שייך לך.", - "api-error-stashnosuchfilekey": "מפתח הקובץ שניסית לגשת אליו בסליק אינו קיים.", - "api-error-timeout": "השרת לא השיב בזמן המצופה.", - "api-error-unclassified": "אירעה שגיאה בלתי ידועה.", - "api-error-unknown-code": "שגיאה בלתי ידועה: \"$1\".", - "api-error-unknown-error": "שגיאה פנימית: משהו השתבש בעת ניסיון להעלות את הקובץ שלך.", + "api-error-stashfailed": "שגיאה פנימית: השרת נכשל באחסון הקובץ הזמני.", "api-error-unknown-warning": "אזהרה בלתי־ידועה: \"$1\".", "api-error-unknownerror": "שגיאה בלתי ידועה: \"$1\".", - "api-error-uploaddisabled": "ההעלאה מבוטלת באתר הוויקי הזה.", - "api-error-verification-error": "קובץ זה עשוי להיות פגום או בעל סיומת שגויה.", - "api-error-was-deleted": "קובץ בשם הזה הועלה מוקדם יותר ונמחק לאחר מכן.", "duration-seconds": "{{PLURAL:$1|שנייה|$1 שניות}}", "duration-minutes": "{{PLURAL:$1|דקה|$1 דקות}}", "duration-hours": "{{PLURAL:$1|שעה|שעתיים|$1 שעות}}", @@ -3797,6 +3798,7 @@ "mw-widgets-titleinput-description-new-page": "הדף עדיין לא קיים", "mw-widgets-titleinput-description-redirect": "הפניה ל{{GRAMMAR:תחילית|$1}}", "mw-widgets-categoryselector-add-category-placeholder": "הוספת קטגוריה...", + "mw-widgets-usersmultiselect-placeholder": "הוספת עוד...", "sessionmanager-tie": "לא ניתן לצרף מספר סוגי אימות זהות: $1.", "sessionprovider-generic": "התחברויות של $1", "sessionprovider-mediawiki-session-cookiesessionprovider": "התחברויות המבוססות על עוגיות", @@ -3853,16 +3855,16 @@ "log-action-filter-upload-upload": "העלאות של קבצים חדשים", "log-action-filter-upload-overwrite": "דריסות של קבצים קיימים", "authmanager-authn-not-in-progress": "האימות נכשל או שנתוני הפעולה נאבדו. נא להתחיל את התהליך מחדש.", - "authmanager-authn-no-primary": "לא ניתן היה לאמת את האישורים שסופקו.", - "authmanager-authn-no-local-user": "האישורים שסופקו אינם שייכים לשום משתמש באתר זה.", + "authmanager-authn-no-primary": "לא ניתן היה לאמת את נתוני ההזדהות שסופקו.", + "authmanager-authn-no-local-user": "נתוני ההזדהות שסופקו אינם שייכים לשום משתמש באתר זה.", "authmanager-authn-no-local-user-link": "נתוני ההאמנה שניתנו תקינים, אבל אינם משויכים לשום משתמש בוויקי הזה. נא להיכנס לחשבון באופן שונה, או ליצור משתמש חדש ואז תהיה לך אפשרות לקשר את נתוני ההאמנה הקודמים שלך לחשבון ההוא.", "authmanager-authn-autocreate-failed": "יצירה אוטומטית של חשבון מקומי נכשלה: $1", "authmanager-change-not-supported": "לא ניתן לשנות את נתוני ההאמנה שניתנו, כי שום דבר לא ישתמש בהם.", "authmanager-create-disabled": "אפשרות יצירת החשבונות מבוטלת.", "authmanager-create-from-login": "כדי ליצור את החשבון, יש למלא את השדות.", "authmanager-create-not-in-progress": "יצירת החשבון נכשלה או שנתוני הפעולה נאבדו. נא להתחיל את התהליך מחדש.", - "authmanager-create-no-primary": "האישורים שסופקו לא יכולים להיות בשימוש ביצירת חשבון.", - "authmanager-link-no-primary": "האישורים שסופקו לא יכולים להיות בשימוש בקישור חשבונות.", + "authmanager-create-no-primary": "נתוני ההזדהות שסופקו לא יכולים להיות בשימוש ביצירת חשבון.", + "authmanager-link-no-primary": "נתוני ההזדהות שסופקו לא יכולים להיות בשימוש לשם קישור חשבונות.", "authmanager-link-not-in-progress": "קישור החשבונות נכשל או שנתוני הפעולה נאבדו. נא להתחיל את התהליך מחדש.", "authmanager-authplugin-setpass-failed-title": "שינוי הסיסמה נכשל", "authmanager-authplugin-setpass-failed-message": "תוסף האימות דחה את שינוי הסיסמה.", @@ -3906,15 +3908,15 @@ "authpage-cannot-link-continue": "לא ניתן להמשיך בתהליך קישור החשבונות. כנראה שזמן ההמתנה של הפעולה חלף.", "cannotauth-not-allowed-title": "הגישה נדחתה", "cannotauth-not-allowed": "אינך מורשה להשתמש בדף זה", - "changecredentials": "שינוי האישורים", - "changecredentials-submit": "שינוי האישורים", + "changecredentials": "שינוי נתוני ההזדהות", + "changecredentials-submit": "שינוי נתוני ההזדהות", "changecredentials-invalidsubpage": "$1 אינו סוג אישור תקין.", - "changecredentials-success": "האישורים שלך שונו.", - "removecredentials": "הסרת האישורים", - "removecredentials-submit": "הסרת האישורים", + "changecredentials-success": "נתוני ההזדהות שלך שונו.", + "removecredentials": "הסרת נתוני ההזדהות", + "removecredentials-submit": "הסרת נתוני ההזדהות", "removecredentials-invalidsubpage": "$1 אינו סוג אישור תקין.", - "removecredentials-success": "האישורים שלך הוסרו.", - "credentialsform-provider": "סוג האישורים:", + "removecredentials-success": "נתוני ההזדהות שלך הוסרו.", + "credentialsform-provider": "סוג נתוני ההזדהות:", "credentialsform-account": "שם החשבון:", "cannotlink-no-provider-title": "אין חשבונות שניתן לקשר", "cannotlink-no-provider": "אין חשבונות שניתן לקשר.", @@ -3928,7 +3930,7 @@ "usercssispublic": "שימו לב: משתמשים אחרים יכולים לצפות בדפי ה־CSS שלכם, ולכן אין לכלול בהם מידע סודי.", "restrictionsfield-badip": "כתובת או טווח כתובות IP בלתי תקין: $1", "restrictionsfield-label": "טווחי כתובות IP מותרים:", - "restrictionsfield-help": "כתובת IP אחת או טווח CIDR אחד בשורה. כדי לאפשר את הכול, ניתן להשתמש ב:<br><code>0.0.0.0/0</code><br><code>::/0</code>", + "restrictionsfield-help": "כתובת IP אחת או טווח CIDR אחד בשורה. כדי לאפשר את הכול, ניתן להשתמש ב:<pre>0.0.0.0/0\n::/0</pre>", "revid": "גרסה $1", "pageid": "מזהה דף $1" } diff --git a/languages/i18n/hi.json b/languages/i18n/hi.json index 456ba8de96..6bbe11ed97 100644 --- a/languages/i18n/hi.json +++ b/languages/i18n/hi.json @@ -75,7 +75,11 @@ "Nemo bis", "Wassan.anmol", "Ziyaurr", - "NehalDaveND" + "NehalDaveND", + "Susant purohit", + "Jayprakash12345", + "Dr. Shikha Jaggi", + "Shyamal" ] }, "tog-underline": "कड़ियाँ अधोरेखन:", @@ -144,7 +148,7 @@ "fri": "शुक्र", "sat": "शनि", "january": "जनवरी", - "february": "फरवरी", + "february": "फ़रवरी", "march": "मार्च", "april": "अप्रैल", "may_long": "मई", @@ -156,7 +160,7 @@ "november": "नवम्बर", "december": "दिसम्बर", "january-gen": "जनवरी", - "february-gen": "फरवरी", + "february-gen": "फ़रवरी", "march-gen": "मार्च", "april-gen": "अप्रैल", "may-gen": "मई", @@ -180,7 +184,7 @@ "nov": "नव॰", "dec": "दिस॰", "january-date": "$1 जनवरी", - "february-date": "$1 फरवरी", + "february-date": "$1 फ़रवरी", "march-date": "$1 मार्च", "april-date": "$1 अप्रैल", "may-date": "$1 मई", @@ -242,6 +246,7 @@ "searcharticle": "जाएँ", "history": "पृष्ठ इतिहास", "history_short": "इतिहास", + "history_small": "इतिहास", "updatedmarker": "मेरे अन्तिम बार पधारने के बाद के अद्यतन", "printableversion": "छापने योग्य संस्करण", "permalink": "स्थायी कड़ी", @@ -485,19 +490,12 @@ "login": "प्रवेश", "login-security": "अपनी पहचान सत्यापित करें", "nav-login-createaccount": "सत्रारंभ / खाता खोलें", - "userlogin": "सत्रारंभ / खाता खोलें", - "userloginnocreate": "लॉग इन", "logout": "प्रस्थान करें", "userlogout": "प्रस्थान करें", "notloggedin": "लॉग इन नहीं किया है", "userlogin-noaccount": "खाता नहीं है?", "userlogin-joinproject": "{{SITENAME}} से जुड़ें", - "nologin": "क्या आपने सदस्यता नहीं ली है? '''$1'''।", - "nologinlink": "नया खाता बनाएँ", "createaccount": "खाता बनाएँ", - "gotaccount": "पहले से आपका खाता है? '''$1''' करें।", - "gotaccountlink": "प्रवेश करें", - "userlogin-resetlink": "अपनी प्रवेश जानकारी भूल गए हैं?", "userlogin-resetpassword-link": "अपना पासवर्ड भूल गए?", "userlogin-helplink2": "लॉग इन करने में सहायता", "userlogin-loggedin": "आप {{GENDER:$1|$1}} के रूप में पहले से लॉग्ड इन हैं।\nकिसी अन्य सदस्य के रूप में लॉग इन करने के लिए निम्नलिखित फ़ॉर्म का प्रयोग करें।", @@ -510,7 +508,6 @@ "createaccountmail": "एक अस्थायी यादृच्छिक (रैंडम) कूटशब्द चुनें और उसे निर्दिष्ट ई-मेल पते पर भेजें", "createaccountmail-help": "इसका उपयोग बिना पासवर्ड जाने किसी और के लिए खाता खोलने के लिए उपयोग किया जाता है।", "createacct-realname": "असली नाम (वैकल्पिक)", - "createaccountreason": "कारण:", "createacct-reason": "कारण", "createacct-reason-ph": "आप एक अन्य खाता क्यों बना रहे हैं", "createacct-reason-help": "खाता निर्माण लॉग में यह सन्देश दिखाई देगा।", @@ -648,7 +645,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": "इस पृष्ठ का सीधे प्रयोग करने के लिए आपको लॉग इन करना होगा।", @@ -710,6 +711,7 @@ "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 है और अवरोध क्रमांक #$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अपने किसी भी प्रश्न में कृपया यह सभी जानकारी भी शामिल करें।", + "systemblockedtext": "आपका यूज़र नेम या आईपी का पता स्वचालित रूप से MediaWiki द्वारा अवरुद्ध कर दिया गया है।\nकारण दिया है:\n:<em>$2</em>\n\n* ब्लॉक का प्रारंभ: $8\n* ब्लॉक की समय सीमा समाप्त: $6\n* इरादा : $7\n\nआपका वर्तमान आईपी पता $3 है।\nआप किसी भी प्रश्न में सभी जानकारी भी शामिल करें।", "blockednoreason": "कोई कारण नहीं दिया है", "whitelistedittext": "पृष्ठ संपादित करने के लिये आपको $1 करना होगा।", "confirmedittext": "संपादन करने से पहले अपना ई-मेल पता प्रमाणित करना आवश्यक है।\nकृपया अपनी [[Special:Preferences|सदस्य वरीयताओं]] में जाकर अपना ई-मेल पता दें और उसे प्रमाणित करें।", @@ -798,6 +800,8 @@ "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": "$1 सामग्री स्वरूप $2 सामग्री मॉडल द्वारा समर्थित नहीं है।", "content-model-wikitext": "विकिपाठ्य", @@ -807,6 +811,7 @@ "content-model-json": "जेसन", "content-json-empty-object": "रिक्त ऑब्जेक्ट", "content-json-empty-array": "रिक्त ऐरे", + "deprecated-self-close-category": "अवैध एचटीएमएल टैग का उपयोग कर रहे पृष्ठ", "duplicate-args-warning": "<strong>चेतावनी:</strong> [[:$1]] प्राचल \"$3\" के लिए [[:$2]] को एक से अधिक बार काम में ले रहा है। केवल अन्त में दिया गया मान ही काम में लिया जायेगा।", "duplicate-args-category": "टेम्पलेट कॉल में डुप्लिकेट तर्क का उपयोग करते हुए पन्ने", "duplicate-args-category-desc": "पेज जैसे तर्कों के डुप्लिकेट का उपयोग करने वाले टेम्पलेट कॉल, जैसे <code><nowiki>{{foo|bar=1|bar=2}}</nowiki></code> और <code><nowiki>{{foo|bar|1=baz}}</nowiki></code>.", @@ -1008,6 +1013,7 @@ "search-interwiki-caption": "अन्य प्रकल्प", "search-interwiki-default": "$1 से परिणाम:", "search-interwiki-more": "(और)", + "search-interwiki-more-results": "अधिक परिणाम", "search-relatedarticle": "सम्बंधित", "searchrelated": "सम्बंधित", "searchall": "सभी", @@ -1025,6 +1031,7 @@ "search-external": "बाहरी खोज", "searchdisabled": "{{SITENAME}} पर खोज अक्षम है।\nआप गूगल से खोज कर सकते हैं।\nध्यान रखें कि उनकी {{SITENAME}} सामग्री की सूची पुरानी हो सकती है।", "search-error": "खोजते समय निम्न त्रुटि उत्पन्न हुई है: $1", + "search-warning": "खोजते समय निम्न त्रुटि उत्पन्न हुई है: $1", "preferences": "मेरी वरीयताएँ", "mypreferences": "पसंद", "prefs-edits": "संपादन संख्या:", @@ -1056,8 +1063,6 @@ "saveprefs": "संजोएँ", "restoreprefs": "वापिस मूल जमावों पर आ जाएँ (सभी भागों में)", "prefs-editing": "संपादन", - "rows": "कतारें:", - "columns": "कॉलम:", "searchresultshead": "खोज", "stub-threshold": "आधार कड़ी हेतु प्रारूपण ($1):", "stub-threshold-sample-link": "उदाहरण", @@ -1098,6 +1103,7 @@ "youremail": "आपका ई-मेल पता:", "username": "{{GENDER:$1|सदस्यनाम}}:", "prefs-memberingroups": "निम्नलिखित {{PLURAL:$1|समूह|समूहों}} के {{GENDER:$2|सदस्य}}:", + "group-membership-link-with-expiry": "$1 ($2 तक)", "prefs-registration": "पंजीकरण समय:", "yourrealname": "वास्तविक नाम:", "yourlanguage": "भाषा:", @@ -1137,7 +1143,7 @@ "prefswarning-warning": "आपने अपनी वरीयताओं में एैसे परिवर्तन किए हैं जिन्हे अभी तक संचित नहीं किया गया है। अगर अाप \"$1\" पर बिना क्लिक किये इस पृष्ठ को छोड़ देते हैं तो अापकी वरीयताओं का अद्यतन नहीं किया जाएगा।", "prefs-tabs-navigation-hint": "सुझाव: आप टैब्स सूची में टैब्स के बीच आवागमन करने के लिए बाएँ और दाएँ तीर कुंजियों का उपयोग कर सकते हैं।", "userrights": "सदस्य अधिकार व्यवस्थापन", - "userrights-lookup-user": "सदस्य समूहों का व्यवस्थापन करें", + "userrights-lookup-user": "सदस्य चुनें", "userrights-user-editname": "सदस्यनाम दें:", "editusergroup": "{{GENDER:$1|सदस्य}} समूहों का संपादन करें", "editinguser": "सदस्य '''[[User:$1|$1]]''' $2 के अधिकार बदलें\n{{GENDER:$1|सदस्य}} के सदस्य अधिकार बदले जा रहे हैं <strong>[[User:$1|$1]]</strong> $2", @@ -1152,6 +1158,13 @@ "userrights-nodatabase": "डाटाबेस $1 या तो मौजूद नहीं है या फिर स्थानीय नहीं है।", "userrights-changeable-col": "समूह जिन्हें आप बदल सकते हैं", "userrights-unchangeable-col": "समूह जिन्हें आप नहीं बदल सकते हैं", + "userrights-expiry-current": "समाप्ती $1", + "userrights-expiry-none": "समाप्त नहीं होता", + "userrights-expiry": "समाप्ति:", + "userrights-expiry-othertime": "अन्य समय:", + "userrights-expiry-options": "एक दिन:1 day,एक सप्ताह:1 week,एक महीना:1 month,तीन महीने:3 months,छः महीने:6 months,एक वर्ष:1 year", + "userrights-invalid-expiry": "\"$1\" समूह के लिए समाप्ती तिथि अमान्य है।", + "userrights-expiry-in-past": "\"$1\" समूह हेतु समाप्ती का समय पहले ही बीत चुका है।", "userrights-conflict": "सदस्य अधिकार बदलावों में अंतर्विरोध! कृपया अपने बदलाव जाँचें और पुनः सुनिश्चित करें।", "group": "समूह:", "group-user": "सदस्य", @@ -1246,6 +1259,7 @@ "right-managechangetags": "डेटाबेस से [[Special:Tags|चिप्पियाँ]] बनायें और हटायें", "right-applychangetags": "प्रयोग में लाइये [[Special:Tags|tags]] किसी के बदलाव के साथ।", "right-changetags": "जमा करो और हटाओ स्वतंत्र [[Special:Tags|टैग]] व्यक्तिगत अवतरणों और लॉग प्रविक्तियों पर", + "right-deletechangetags": "डेटाबेस से [[Special:Tags|चिप्पियाँ]] हटाएँ", "grant-generic": "\"$1\" अधिकार संग्रह", "grant-group-page-interaction": "पृष्ठों से जुड़ें", "grant-group-file-interaction": "मीडिया से जुड़ें", @@ -1278,6 +1292,7 @@ "grant-basic": "सामान्य अधिकार", "grant-viewdeleted": "हटाये गए फ़ाइल व पृष्ठ देखें", "grant-viewmywatchlist": "अपनी ध्यानसूची देखें", + "grant-viewrestrictedlogs": "प्रतिबंधित प्रविष्टि लॉग देखें", "newuserlogpage": "सदस्य खाता निर्माण लॉग", "newuserlogpagetext": "यह सदस्य खातों के निर्माण का लॉग है।", "rightslog": "सदस्य अधिकार लॉग", @@ -1302,6 +1317,7 @@ "action-writeapi": "लेखन ए॰पी॰आई का प्रयोग करने", "action-delete": "इस पृष्ठ को हटाने", "action-deleterevision": "इस अवतरण को हटाने", + "action-deletelogentry": "लॉग प्रविष्टियाँ को हटाए", "action-deletedhistory": "इस पृष्ठ के मिटे इतिहास को देखने", "action-browsearchive": "हटाएँ गए पृष्ठों में खोजने", "action-undelete": "इस पृष्ठ को पुनर्स्थापित करने", @@ -1326,9 +1342,10 @@ "action-viewmyprivateinfo": "अपनी व्यक्तिगत जानकारी देखने", "action-editmyprivateinfo": "अपनी व्यक्तिगत जानकारी बदलने", "action-editcontentmodel": "एक पेज की सामग्री मॉडल को संपादित।", - "action-managechangetags": "डेटाबेस से चिप्पि बनायें और हटायें", + "action-managechangetags": "चिप्पि बनायें और हटायें", "action-applychangetags": "अपमे बदलाव के साथ टैग जोड़ें।", "action-changetags": "जमा करें और हटाएँ स्वतंत्र टैग व्यक्तिगत अवतरणों और लॉग प्रविक्तियों पर", + "action-deletechangetags": "डेटाबेस से चिप्पि हटा दें", "action-purge": "पृष्ठ ताजा करें", "nchanges": "$1 {{PLURAL:$1|बदलाव}}", "enhancedrc-since-last-visit": "$1 {{PLURAL:$1|अंतिम बार देखने के बाद से}}", @@ -1346,6 +1363,37 @@ "recentchanges-legend-heading": "<strong>कुंजी:</strong>", "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} ([[Special:NewPages|नए पन्नों की सूची]] को भी देखें)", "recentchanges-submit": "दिखाएँ", + "rcfilters-activefilters": "सक्रिय फिल्टर", + "rcfilters-restore-default-filters": "मूलभूत फिल्टर पुनर्स्थापित करे", + "rcfilters-clear-all-filters": "सभी फिल्टर हटाएँ", + "rcfilters-search-placeholder": "हाल में हुए बदलाव फ़िल्टर (ब्राउज़ या टाइप करना आरंभ करें)", + "rcfilters-invalid-filter": "अमान्य फ़िल्टर", + "rcfilters-empty-filter": "कोई सक्रिय फिल्टर नहीं। सभी योगदान दिखाए गए है।", + "rcfilters-filterlist-title": "फिल्टर", + "rcfilters-highlightbutton-title": "परिणाम रेखांकन करें", + "rcfilters-highlightmenu-title": "रंग चुनें", + "rcfilters-filterlist-noresults": "कोई फिल्टर नहीं पाया", + "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-user-experience-level-newcomer-label": "अपरिचित", + "rcfilters-filter-user-experience-level-learner-label": "शिक्षार्थियों", + "rcfilters-filter-bots-label": "बॉट", + "rcfilters-filter-humans-label": "मानव (बॉट नहीं)", + "rcfilters-filter-humans-description": "मानव संपादक द्वारा किए गए संपादन।", + "rcfilters-filtergroup-significance": "महत्व", + "rcfilters-filter-minor-label": "छोटा संपादन", + "rcfilters-filter-major-label": "गैर-मामूली संपादन", + "rcfilters-filtergroup-changetype": "बदलाव के प्रकार:", + "rcfilters-filter-pageedits-label": "पृष्ठ संपादन", + "rcfilters-filter-newpages-label": "पृष्ठ कृतियों", + "rcfilters-filter-newpages-description": "संपादन जिससे नया पृष्ट बना", + "rcfilters-filter-categorization-label": "श्रेणी परिवर्तन", "rcnotefrom": "नीचे <strong>$2</strong> के बाद से (<strong>$1</strong> तक) {{PLURAL:$5|हुआ बदलाव दर्शाया गया है|हुए बदलाव दर्शाए गये हैं}}।", "rclistfrom": "$3 $2 से नये बदलाव दिखाएँ", "rcshowhideminor": "छोटे बदलाव $1", @@ -1477,7 +1525,7 @@ "uploaded-setting-handler-svg": "एसवीजी जो \"handler\" जोड़ता है, अवरोधित है। उससे मिला <code>$1=\"$2\"</code> है।", "uploaded-remote-url-svg": "एसवीजी जो रिमोट पते द्वारा शैली तय करता है, अवरोधित है। उससे <code>$1=\"$2\"</code> मिला है।", "uploaded-image-filter-svg": "पते के साथ छवि छन्नी मिला: <code><$1 $2=\"$3\"></code> एसवीजी फ़ाइल में।", - "uploadscriptednamespace": "इस एस॰वी॰जी फ़ाइल में अमान्य नामस्थान \"$1\" है।", + "uploadscriptednamespace": "इस एस॰वी॰जी फ़ाइल में अमान्य नामस्थान \"<nowiki>$1</nowiki>\" है।", "uploadinvalidxml": "अपलोड की गई फ़ाइल में स्थित XML पार्स नहीं की जा सकी।", "uploadvirus": "इस फ़ाइल में व्हाईरस हैं! अधिक जानकारी: $1", "uploadjava": "यह फ़ाइल एक ज़िप फ़ाइल है जिसमें एक जावा .class फ़ाइल है।\nजावा फ़ाइलों को अपलोड करना वर्जित है, क्योंकि इनके कारण सुरक्षा बाधाएँ पार की जा सकती हैं।", @@ -2635,6 +2683,7 @@ "pageinfo-length": "पृष्ठ आकार (बाइट्स में)", "pageinfo-article-id": "पृष्ठ आइ॰डी", "pageinfo-language": "पृष्ठ सामग्री भाषा", + "pageinfo-language-change": "परिवर्तन", "pageinfo-content-model": "पृष्ठ सामग्री का नमूना", "pageinfo-content-model-change": "बदलें", "pageinfo-robot-policy": "सर्च इंजन बॉट द्वारा अनुक्रमण", @@ -2690,6 +2739,7 @@ "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", @@ -3330,6 +3380,7 @@ "tag-filter": "[[Special:Tags|चिप्पी]] छननी:", "tag-filter-submit": "छननी", "tag-list-wrapper": "([[Special:Tags|{{PLURAL:$1|टैग}}]]: $2)", + "tag-mw-contentmodelchange": "सामग्री मॉडल परिवर्तन", "tags-title": "चिप्पियाँ", "tags-intro": "यह पृष्ठ अर्थ सहित वह चिप्पियाँ दर्शाता है जिनका कोई तंत्रांश किसी संपादन पर निशान लगाने के लिए इस्तेमाल कर सकता है।", "tags-tag": "चिप्पी का नाम", @@ -3524,7 +3575,6 @@ "logentry-tag-update-revision": "$1 {{GENDER:$2|उद्यतन किए गए}} टैग संशोधन $4 पर पृष्ठ $3 के ({{PLURAL:$7|जोड़ दिए गए}} $6; {{PLURAL:$9|हटाए गए}} $8)", "logentry-tag-update-logentry": "$1 {{GENDER:$2|उद्यतन किए गए}} टैग संशोधन $5 पर पृष्ठ $3 के ({{PLURAL:$7|जोड़ दिए गए}} $6; {{PLURAL:$9|हटाए गए}} $8)", "rightsnone": "(कोई नहीं)", - "revdelete-summary": "संपादन सारांश", "feedback-adding": "पृष्ठ पर प्रतिक्रिया जोड़ना ...", "feedback-back": "पीछे जाएँ", "feedback-bugcheck": "शानदार! जांच ले कहीं ये [ $1 known bugs] पहले से ही न हो ।", @@ -3549,55 +3599,12 @@ "feedback-useragent": "सदस्य कर्ता:", "searchsuggest-search": "खोजें {{SITENAME}}", "searchsuggest-containing": "...से युक्त", - "api-error-autoblocked": "आपका आईपी पता अपने आप अवरोधित हो गया, क्योंकि यह किसी अवरोधित सदस्य द्वारा उपयोग किया गया था।", - "api-error-badaccess-groups": "आपको इस विकि के लिए फ़ाइलें अपलोड करने की अनुमति नहीं है.", "api-error-badtoken": "आंतरिक त्रुटि: बुरी टोकन।", - "api-error-blocked": "आपको सम्पादन से अवरोधित किया गया है।", - "api-error-copyuploaddisabled": "URL द्वारा इस सर्वर पर अपलोड अक्षम है।", - "api-error-duplicate": "वहाँ {{PLURAL:$1| अन्य फ़ाइल | रहे हैं कुछ अन्य फ़ाइलों}} एक ही सामग्री के साथ साइट पर पहले से ही है.", - "api-error-duplicate-archive": "वहाँ {{PLURAL:$1|था कुछ अन्य फ़ाइल |were कुछ अन्य फ़ाइलें}}, पहले से ही {{PLURAL:$1|यह was|they थे}} परन्तु हटा दिये गये", - "api-error-empty-file": "प्रस्तुत फ़ाइल खाली था।", "api-error-emptypage": "नए खाली पृष्ठ बनाने की अनुमति नहीं है।", - "api-error-fetchfileerror": "आंतरिक त्रुटि: जब फ़ाइल लाया जा रहा तो कुछ गलत हो गया था।", - "api-error-fileexists-forbidden": "\"$1\" नाम की फ़ाइल पहले से मौजूद है और अधिलेखित नहीं की जा सकती।", - "api-error-fileexists-shared-forbidden": "\"$1\" नाम की फ़ाइल पहले से साझे फ़ाइल भण्डार में मौजूद है, और अधिलेखित नहीं की जा सकती।", - "api-error-file-too-large": "प्रस्तुत फ़ाइल बहुत बड़ी थी।", - "api-error-filename-tooshort": "फ़ाइल का नाम बहुत छोटा है।", - "api-error-filetype-banned": "इस प्रकार की फ़ाइल पर प्रतिबंध लगा दिया है।", - "api-error-filetype-banned-type": "$1 फ़ाइल {{PLURAL:$4|प्रकार|प्रकारों}} की अनुमति नहीं है। फ़ाइल प्रकार {{PLURAL:$3|जिसकी|जिनकी}} अनुमति है: $2।", - "api-error-filetype-missing": "फाईल की एक्सटेंशन लापता है.", - "api-error-hookaborted": "आपके द्वारा प्रयासरत संशोधन विस्तार हूक द्वारा निरस्त किया गया।", - "api-error-http": "आंतरिक त्रुटि: सर्वर से कनेक्ट करने में असमर्थ।", - "api-error-illegal-filename": "फ़ाइल नाम की अनुमति नहीं है।", - "api-error-internal-error": "आंतरिक त्रुटि: विकि पर अपने अपलोड प्रसंस्करण के साथ कुछ गलत हो गया था.", - "api-error-invalid-file-key": "आंतरिक त्रुटि: फ़ाइल अस्थायी भंडारण में नहीं पाया गया.", - "api-error-missingparam": "आंतरिक त्रुटि: अनुरोध पर पैरामीटर लापता", - "api-error-missingresult": "आन्तरिक त्रुटि: यह प्रतिलिपि सफल निर्धारित नहीं हो सकी", - "api-error-mustbeloggedin": "आप फ़ाइलों को अपलोड करने के लिये आपको लॉग इन होना चाहिए.", - "api-error-mustbeposted": "आंतरिक त्रुटि: HTTP POST अनुरोध की आवश्यकता है.", - "api-error-noimageinfo": "अपलोड सफल, लेकिन सर्वर ने फ़ाइल के बारे में हमें कोई जानकारी नहीं दी.", - "api-error-nomodule": "आंतरिक त्रुटि: कोई अपलोड मॉड्यूल सेट नहीं", - "api-error-ok-but-empty": "आंतरिक त्रुटि: सर्वर से कोई जवाब नहीं.", - "api-error-overwrite": "मौजूदा फ़ाइल को अधिलेखित करने की अनुमति नहीं है", - "api-error-stashfailed": "आंतरिक त्रुटि: सर्वर अस्थाई फ़ाइल को संग्रहीत करने में विफल।", "api-error-publishfailed": "आंतरिक त्रुटि: सर्वर अस्थाई फ़ाइल को प्रकासन करने में विफल।", - "api-error-stasherror": "फ़ाइल को स्टैश पर अपलोड करने के दौरान एक त्रुटि देखी गई है।", - "api-error-stashedfilenotfound": "स्टैश में डाली गई फ़ाइल वहाँ से अपलोड करने के प्रयास के दौरान नहीं मिली।", - "api-error-stashpathinvalid": "वह स्थान जहाँ स्टैश वाली फ़ाइल मिलना चाहिए था अवैध है।", - "api-error-stashfilestorage": "फ़ाइल को स्टैश में अपलोड करने के दौरान एक त्रुटि देखी गई है।", - "api-error-stashzerolength": "सरवर उस फ़ाइल को स्टैश नहीं कर सका, क्योंकि उसकी लम्बाई शून्य है।", - "api-error-stashnotloggedin": "आपको लॉग्ड इन होना चाहिए ताकि फ़ाइल को अपलोड स्टैश में सुरक्षित किया जा सके।", - "api-error-stashwrongowner": "स्टैश की जिस फ़ाइल तक आप पहुँचना चाहते हैं वह आपसे सम्बंधित नहीं है।", - "api-error-stashnosuchfilekey": "फ़ाइल की चाबी जिसे आप स्टैश में प्रयोग में लाने का प्रयास कर रहे थे, मौजूद नहीं है।", - "api-error-timeout": "सर्वर ने अपेक्षित समय के भीतर जवाब नहीं दिया", - "api-error-unclassified": "एक अज्ञात त्रुटि उत्पन्न हुई", - "api-error-unknown-code": "अज्ञात त्रुटि: \" $1 \"", - "api-error-unknown-error": "आंतरिक त्रुटि: आपकी फ़ाइल अपलोड करने का प्रयास करते समय कुछ गलत हो गया था।", + "api-error-stashfailed": "आंतरिक त्रुटि: सर्वर अस्थाई फ़ाइल को संग्रहीत करने में विफल।", "api-error-unknown-warning": "अज्ञात चेतावनी: $1", "api-error-unknownerror": "अज्ञात त्रुटि: \" $1 \"", - "api-error-uploaddisabled": "इस विकि पर अपलोड अक्षम है.", - "api-error-verification-error": "यह फ़ाइल दूषित हो सकती है, या गलत एक्सटेंशन है।", - "api-error-was-deleted": "इस नाम का फ़ाइल पहले अपलोड हुआ था और हट भी गया था।", "duration-seconds": "$1 {{PLURAL:$1|सॅकेंड}}", "duration-minutes": "$1 {{PLURAL:$1|मिनट}}", "duration-hours": "$1 {{PLURAL:$1|घंटा|घंटे}}", @@ -3765,6 +3772,7 @@ "authprovider-confirmlink-success-line": "$1 : सफलतापूर्वक जुड़ा।", "authprovider-confirmlink-failed": "खाता जोड़ने का काम पूरी तरह से नहीं हो पाया : $1", "authprovider-resetpass-skip-label": "छोड़ें", + "authprovider-resetpass-skip-help": "पासवर्ड को रीसेट करना छोड़ें।", "authform-newtoken": "टोकन लापता है $1", "authform-notoken": "टोकन लापता है", "authform-wrongtoken": "गलत टोकन", @@ -3794,5 +3802,9 @@ "linkaccounts-success-text": "खाता जुड़ गया।", "linkaccounts-submit": "खाता जोड़ें", "unlinkaccounts": "खाता अलग करें", - "unlinkaccounts-success": "खाता अलग हो गया।" + "unlinkaccounts-success": "खाता अलग हो गया।", + "restrictionsfield-badip": "अमान्य आईपी पते या सीमा: $1", + "restrictionsfield-label": "अनुमत आईपी सीमा:", + "revid": "अवतरण $1", + "pageid": "पेज आईडी" } diff --git a/languages/i18n/hif-latn.json b/languages/i18n/hif-latn.json index a49910acdc..12ea679144 100644 --- a/languages/i18n/hif-latn.json +++ b/languages/i18n/hif-latn.json @@ -185,6 +185,7 @@ "searcharticle": "Jaao", "history": "Panna ke itihaas", "history_short": "Itihaas", + "history_small": "itihaas", "updatedmarker": "hamaar pahile waala visit ke baad badla gais hai", "printableversion": "Chhape ke khaatir", "permalink": "Pakka jorr", @@ -1042,6 +1043,7 @@ "youremail": "E-mail:", "username": "{{GENDER:$1|Sadasya ke naam}}:", "prefs-memberingroups": "{{PLURAL:$1|group|groups}} ke {{GENDER:$2|Member}}:", + "group-membership-link-with-expiry": "$1 (until $2)", "prefs-registration": "Registration kare ke time:", "yourrealname": "Asli naam:", "yourlanguage": "Bhasa:", @@ -1097,6 +1099,14 @@ "userrights-nodatabase": "Database $1 abhi hai nai, nai to local nai hai.", "userrights-changeable-col": "Groups jiske aap badle sakta hai", "userrights-unchangeable-col": "Groups jiske aap badle nai sakta hai", + "userrights-expiry-current": "$1 khalaas hoe hai", + "userrights-expiry-none": "Khalaas nai hoe hai", + "userrights-expiry": "Khalas hoe hai:", + "userrights-expiry-existing": "Abhi ke khatam hoe waala time: $3, $2", + "userrights-expiry-othertime": "Duusra time:", + "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-conflict": "User right me conflict hae! Meharbaani kar ke aapan badlao ke fir se review aur confirm karo.", "group": "Jhund:", "group-user": "Sadasya", @@ -1297,22 +1307,49 @@ "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (aur dekho [[Special:NewPages|nawaa panna ke suchi]])", "recentchanges-submit": "Dekhao", "rcfilters-activefilters": "Active filters", + "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-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-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", + "rcfilters-filtergroup-userExpLevel": "User experience level (registered sadasya ke khaatir)", "rcfilters-filter-userExpLevel-newcomer-label": "Newcomers", - "rcfilters-filter-userExpLevel-newcomer-description": "Bahut nawaa editor: 10 se kamtii badlao aur 4 din se kamtii activity.", + "rcfilters-filter-userExpLevel-newcomer-description": "10 se kamtii badlao aur 4 din se kamtii activity.", "rcfilters-filter-userExpLevel-learner-label": "Sikhe waala", "rcfilters-filter-userExpLevel-learner-description": "More days of activity and edits than 'Newcomers' but fewer than 'Experienced users.'", "rcfilters-filter-userExpLevel-experienced-label": "Experienced users", "rcfilters-filter-userExpLevel-experienced-description": "30 din se jaada activity aur 500 se jaada badlao", + "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-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-changetype": "Type of change", + "rcfilters-filter-pageedits-label": "Panna ke badlao", + "rcfilters-filter-pageedits-description": "Edits to 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....", "rcnotefrom": "Niche {{PLURAL:$5|badlao hae|badlao hae}} <strong>$3, $4</strong> (<strong>$1</strong> talak dekhawa gais) talak.", "rclistfrom": "$3 $2 se suruu kar ke nawaa badlao dekhao", "rcshowhideminor": "$1 chhota badlao", @@ -1446,7 +1483,7 @@ "uploaded-setting-handler-svg": "SVG that sets the \"handler\" attribute with remote/data/script is blocked. Found <code>$1=\"$2\"</code> in the uploaded SVG file.", "uploaded-remote-url-svg": "SVG that sets any style attribute with remote URL is blocked. Found <code>$1=\"$2\"</code> in the uploaded SVG file.", "uploaded-image-filter-svg": "Found image filter with URL: <code><$1 $2=\"$3\"></code> in the uploaded SVG file.", - "uploadscriptednamespace": "Ii SVG file me illegal namespace \"$1\" hae.", + "uploadscriptednamespace": "Ii SVG file me illegal namespace \"<nowiki>$1</nowiki>\" hae.", "uploadinvalidxml": "Upload karaa gais file ke XML ke parse nai karaa jaae sake hae.", "uploadvirus": "Ii file me virus hai! Details: $1", "uploadjava": "Ii file ek ZIP file hae jisme Java .class ke file hae.\nJava ke uplaod kare ke anumati nai hae, kaaheki isse kuchh security restrictions ke bypass karaa jaae sake hae.", @@ -1821,8 +1858,10 @@ "apisandbox-sending-request": "Sending API request...", "apisandbox-loading-results": "Receiving API results...", "apisandbox-results-error": "An error occurred while loading the API query response: $1.", - "apisandbox-request-params-json": "JSON parameters:", + "apisandbox-request-selectformat-label": "Show request data as:", + "apisandbox-request-format-url-label": "URL query string", "apisandbox-request-url-label": "Request ke URL:", + "apisandbox-request-json-label": "Request JSON:", "apisandbox-request-time": "Request time: {{PLURAL:$1|$1 ms}}", "apisandbox-results-fixtoken": "Token ke sudhaar ke resubmit karo", "apisandbox-results-fixtoken-fail": "Failed to fetch \"$1\" token.", @@ -1994,6 +2033,14 @@ "wlshowlast": "Pichhla $1 ghanta $2 din ke dekhao", "watchlist-hide": "Lukao", "watchlist-submit": "Dekhao", + "wlshowtime": "Kon samay ke display karaa jaae:", + "wlshowhideminor": "chhotaa badlao", + "wlshowhidebots": "bots", + "wlshowhideliu": "registered sadasya", + "wlshowhideanons": "binaa naam ke sadasya", + "wlshowhidepatr": "jon badlao pe pahraa dewaa jaae hai", + "wlshowhidemine": "hamaar badlao", + "wlshowhidecategorization": "panna categorization", "watchlist-options": "Dhyan suchi ke options", "watching": "Dekhtaa...", "unwatching": "Nai dekhtaa...", @@ -2019,11 +2066,12 @@ "deletepage": "Pana ke delete karo", "confirm": "Confirm karo", "excontent": "content rahaa: '$1'", - "excontentauthor": "content rahaa: '$1' (aur khaali ek contributor rahaa '[[Special:Contributions/$2|$2]]')", + "excontentauthor": "content rahaa: \"$1\", aur khaali ek contributor rahaa \"[[Special:Contributions/$2|$2]]\" ([[User talk:$2|talk]])", "exbeforeblank": "blanking se pahile content rahaa: '$1'", "delete-confirm": "\"$1\" ke mitao", "delete-legend": "Mitao", "historywarning": "<strong>Sawadhan</strong>: Jon panna ke aap mitae waala hai ke itihaas hai $1 {{PLURAL:$1|badlao|badlao}} ke saathe:", + "historyaction-submit": "Dekhao", "confirmdeletetext": "Aap ek panna ke uske itihaas ke saathe delete kare waala hai.\nMeharbani kar ke iske confirm karo, ki aap iske consequences ke samajhta hai, aur aap iske [[{{MediaWiki:Policy-url}}|the policy]] ke policy ke niche delete karta hai.", "actioncomplete": "Action puura hoe gais hai", "actionfailed": "Action fail hoe gais", @@ -2040,26 +2088,50 @@ "delete-toobig": "Ii panna ke barraa balao ke itihass hai, $1 se jaada {{PLURAL:$1|revision|revisions}}.\nAisan panna ke mitae pe rok lagawa gais hai so that accidental disruption of {{SITENAME}} ke roka jaae sake hai.", "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 hae jiske aap delete kare waala hae.", + "deleting-backlinks-warning": "<string>Chetauni:</strong> [[Special:WhatLinksHere/{{FULLPAGENAME}}|Duusra panna]] uu panna se link, nai to transclude kare hai jiske aap delete kare waala hae.", "rollback": "Pahile jaise kare waala badlao", "rollbacklink": "pahile jaise karo", "rollbacklinkcount": "$1 {{PLURAL:$1|edit|edits}} ke rollback karo", "rollbacklinkcount-morethan": "$1 {{PLURAL:$1|edit|edits}} se jaada badlao ke rollback karo", "rollbackfailed": "Pahile jaise kare ke kosis safal nai bhais", + "rollback-missingparam": "Maange par, required parameters nai hai.", + "rollback-missingrevision": "Badalo ke data ke nai load kare sakaa hai.", "cantrollback": "Badlao ke pahile jaise nai kare sakta hai;\nisse pahile waala sadasya ii panna ke khaali yogdaan de waala hai.", "alreadyrolled": "[[:$1]] by [[User:$2|$2]] ke pahile jaise nai kare sakta hai. ([[User talk:$2|Talk]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]]);\naur koi ii panna ke badal nai to pahile jaise kar diis hai.\n\nIi panna ke pichla badla [[User:$3|$3]] ([[User talk:$3|Talk]]{{int:pipe-separator}}[[Special:Contributions/$3|{{int:contribslink}}]]) se rahaa", "editcomment": "Badlao ke summary rahaa: <em>$1</em>.", "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-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.", + "changecontentmodel": "Panna ke content model ke badlo", + "changecontentmodel-legend": "Content model ke badlo", + "changecontentmodel-title-label": "Panna ke title", + "changecontentmodel-model-label": "Nawaa content model", + "changecontentmodel-reason-label": "Kaaran:", + "changecontentmodel-submit": "Badlo", + "changecontentmodel-success-title": "Content model ke badal dewaa gais hai", + "changecontentmodel-success-text": "The content type of [[:$1]] ke badlaa gais hai.", + "changecontentmodel-cannot-convert": "The content on [[:$1]] ke $2 ke rakam nai convert karaa jaae sake hai.", + "changecontentmodel-nodirectediting": "The $1 content model, direct editing ke nai support kare hai", + "changecontentmodel-emptymodels-title": "Koi content model nai hai", + "changecontentmodel-emptymodels-text": "The content on [[:$1]] ke koi bhi type me nai badlaa jaae sake hai.", + "log-name-contentmodel": "Content model ke change log", + "log-description-contentmodel": "Ii panna lists changes to the content model of pages, and pages that were created with a content model other than the default.", + "logentry-contentmodel-new": "$1 {{GENDER:$2|created}} the page $3 using a non-default content model \"$5\"", + "logentry-contentmodel-change": "$1 {{GENDER:$2|changed}} the content model of the page $3 from \"$4\" to \"$5\"", + "logentry-contentmodel-change-revertlink": "pahile jaise karo", + "logentry-contentmodel-change-revert": "pahile jaise karo", "protectlogpage": "Surakchha suchi", "protectlogtext": "Panna surakchha ke suchi niche dewa gais hae.\nAbhi ke laabu panna surakchha ke dekho [[Special:ProtectedPages|protected pages list]] me", "protectedarticle": "bachawal \"[[$1]]\"", "modifiedarticleprotection": "[[$1]]\" ke protection level ke badal dia hai", "unprotectedarticle": "surakchha suchi \"[[$1]]\" me se hatawa gais", "movedarticleprotection": "protection settings ke \"[[$2]]\" se \"[[$1]]\" kae dia hai", + "protectedarticle-comment": "{{GENDER:$2|Protected}} \"[[$1]]\"", + "modifiedarticleprotection-comment": "{{GENDER:$2|Changed protection level}} for \"[[$1]]\"", + "unprotectedarticle-comment": "{{GENDER:$2|Removed protection}} from \"[[$1]]\"", "protect-title": "\"$1\" ke protection level ke badlo", "protect-title-notallowed": "\"$1\" ke protection level ke dekho", "prot_1movedto2": "[[$1]] ke naam badal ke [[$2]] kar dewa gae hai", @@ -2116,12 +2188,13 @@ "undeletepagetext": "Niche dekhawa gais {{PLURAL:$1|panna ke mitae dewa gais hai lekin|$1 panna ke mitae dewa gais hai lekin}} abhi archive me hai aur iske pahile jaise karaa jaawe sake hai.\nArchive ke time time se safaa karaa jaawe hai.", "undelete-fieldset-title": "Badlao ke pahile jaise karo", "undeleteextrahelp": "Panna ke itihaas ke pahile jaise kare ke khatir sab checkboxes me kuch nai karna aur ''''{{int:undeletebtn}}''''' ke click karo.\nChuna gais panna ke pahile jaise kare ke khatir, uu box ke check karo jon badlao ke aap pahile jaise kare mangta hai aur ''''{{int:undeletebtn}}''''' ke click karo.\n'''''Reset''''' click kare se comment field aur sab checkboxes clear hoe jaai.", - "undeleterevisions": "$1 {{PLURAL:$1|badlao|badlao}} ke archive kar dewa gais hai", + "undeleterevisions": "$1 {{PLURAL:$1|badlao}} ke mitae dewa gais hai", "undeletehistory": "Agar aap panna ke pahile jaise karaa tab sab badlao itihass me restore hoe jaai.\nAgar koi wahii naam ke nawaa panna mitae ke baad banaa hoi tab restore karaa gais badlao pahile ke itihass me dekhai.", "undeleterevdel": "Pahile jaise nai kare sakega agar isse uppar waala panna nai to file revision bhi delete hoe jaai.\nAisan time pe, aap ke chaahi ki aap sab se nawaa deleted revision ke uncheck nai to unhide karo.", "undeletehistorynoadmin": "Ii panna ke mitae dewa gais hai.\nMitae ke kaaran niche ke summary me dewa gais hai, aur iske saathe uu sadasya ke baare me bhi jaankari hai jon ki ii panna ke badle rahin.\nIi mitawa gais badlao ke baare me puura jankari khaali administrators ke mile sake hai.", "undelete-revision": "$1 ke badlao ke (as of $4, at $5) by $3 mitae dewa gais hai:", "undeleterevision-missing": "Badlao kharaab nai to pawa nai jaawe sake hai.\nSait aap ke kharaab link hoi, nai to badlao ke sait pahile jaise kar dewa gais hoi, nai to archive se mitae dewa gais hoi.", + "undeleterevision-duplicate-revid": "{{PLURAL:$1|One revision|$1 revisions}} could not be restored, because {{PLURAL:$1|its|their}} <code>rev_id</code> was already in use.", "undelete-nodiff": "Koi pahile ke badlao ke nai pawa gais hai.", "undeletebtn": "Pahile jaise kar do", "undeletelink": "dekho/pahile jaise karo", @@ -2131,7 +2204,7 @@ "undeletedrevisions": "{{PLURAL:$1|1 badlao|$1 badlao}} ke pahile jaise kar dewa gais hai", "undeletedrevisions-files": "{{PLURAL:$1|1 badlao|$1 badlao}} aur {{PLURAL:$2|1 file|$2 files}} ke pahile jaise kar dewa gais hai", "undeletedfiles": "{{PLURAL:$1|1 file|$1 files}} ke pahile jaise kar dewa gais hai", - "cannotundelete": "Undelete failed:\n$1", + "cannotundelete": "Kuchh, nai to sab undelete fail hoe gais hai:\n$1", "undeletedpage": "'''$1 ke pahile jaise kar dewa gais hai'''\n\nNawaa mitawa gais aur badlao ke ulta karaa gais panna ke dekhe ke khatir [[Special:Log/delete|deletion log]] ke dekho.", "undelete-header": "Nawaa mitawa gais panna ke dekhe ke khatir [[Special:Log/delete|the deletion log]] ke dekho.", "undelete-search-title": "Mitawa gais panna ke khojo", @@ -2169,8 +2242,8 @@ "sp-contributions-newbies-sub": "Nawaa account khatir", "sp-contributions-newbies-title": "Nawaa account ke sadasya ke yogdaan", "sp-contributions-blocklog": "Suchi roko", - "sp-contributions-suppresslog": "Sadasya ke yogdaan jiske suppress karaa gais hae", - "sp-contributions-deleted": "Mitawa gais adasya ke yogdaan", + "sp-contributions-suppresslog": "{{GENDER:$1|sadasya}} ke yogdaan jiske suppress karaa gais hae", + "sp-contributions-deleted": "Mitawa gais {{GENDER:$1|sadasya}} ke yogdaan", "sp-contributions-uploads": "upload karaa gais file", "sp-contributions-logs": "logs", "sp-contributions-talk": "baat", @@ -2181,6 +2254,7 @@ "sp-contributions-username": "IP Address nai to username:", "sp-contributions-toponly": "Khaali sab se nawaa badlao ke dekhao", "sp-contributions-newonly": "Khaali uu badlao ke dekhao jon ke panna banae waala hae", + "sp-contributions-hideminor": "Chhotaa badlao ke lukao", "sp-contributions-submit": "Khojo", "whatlinkshere": "Hian konchij jurre hae", "whatlinkshere-title": "Panna jon ki $1 se jurre hai", @@ -2199,12 +2273,13 @@ "whatlinkshere-hidelinks": "$1 jorr", "whatlinkshere-hideimages": "$1 file ke jorr", "whatlinkshere-filters": "Filters", + "whatlinkshere-submit": "Jaao", "autoblockid": "#$1 ke apne se block karo", "block": "Sadasya ke roko", "unblock": "Sadasya ke rukawat k khalaas karo", "blockip": "{{GENDER:$1|sadasya}} ke roko", "blockip-legend": "Sadasya ke roko", - "blockiptext": "Niche ke form ke use kar ke koi khaas IP address nai to username ke write access ke roko.\nIske khaali vandalism ke roke ke khatir use kare ke chaahi [[{{MediaWiki:Policy-url}}|policy]] ke niche.\nNiche ek khaas kaaran likho (jaise ki, citing particular pages that were vandalized).", + "blockiptext": "Niche ke form ke use kar ke koi khaas IP address nai to username ke write access ke roko.\nIske khaali vandalism ke roke ke khatir kaam me laae ke chaahi [[{{MediaWiki:Policy-url}}|policy]] ke niche.\nFill in a specific reason below (for example, citing particular pages that were vandalized).\nYou can block IP address ranges using the [https://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing CIDR] syntax; the largest allowed range is /$1 for IPv4 and /$2 for IPv6.", "ipaddressorusername": "IP Address nai to username:", "ipbexpiry": "Expiry:", "ipbreason": "Kaaran:", @@ -2232,6 +2307,7 @@ "ipb-unblock": "Ek username nai to IP address ke rukawat ke khalaas karo", "ipb-blocklist": "Abhi ke rukawat ke dekho", "ipb-blocklist-contribs": "{{GENDER:$1|$1}} ke yogdaan", + "ipb-blocklist-duration-left": "$1 left", "unblockip": "Sadasya ke rukawat ke khalaas karo", "unblockiptext": "Niche ke form ke use kar ke pahile roka gais IP address nai to username ke likhe ke adhikar do.", "ipusubmit": "Ii rukawat ke hatao", @@ -2286,6 +2362,7 @@ "block-log-flags-hiddenname": "username ke lukae dewa gais hai", "range_block_disabled": "Administrator ke adhikar, jisse range block banawa jaawat rahaa, ke rok dewa gais hai.", "ipb_expiry_invalid": "Khalaas hoe waala time galat hai.", + "ipb_expiry_old": "Khalas hoe waala time past me hai.", "ipb_expiry_temp": "Lukawa gais username ke rukawat ke permanent hoe ke chaahi.", "ipb_hide_invalid": "Ii account ke dabae nai sakaa hai; saait {{PLURAL:$1|one edit|$1 edits}} se jaada badlao hae.", "ipb_already_blocked": "\"$1\" ke pahile rok dewa gais hai", @@ -2300,6 +2377,7 @@ "proxyblockreason": "Aap ke IP address ke block kar dewa gais hai kahe ki ii ek open proxy hai.\nMeharbaani kar ke aap aapan Internet service provider, nai to tech support, ke contact kar ke ii serious security problem ke baare me batao.", "sorbsreason": "DNSBL used by {{SITENAME}} me aap ke IP address ke as an open proxy list karaa gais hai.", "sorbs_create_account_reason": "DNSBL used by {{SITENAME}} me aap ke IP address ke as an open proxy list karaa gais hai.\nAap ke ek account banae ke ijajat nai hai", + "softblockrangesreason": "Anonymous contributions are not allowed from your IP address ($1). Please log in karo.", "xffblockreason": "Ek IP address jon ki X-Forwarded-For header me hae, chaahe aap ke nai to jon proxy server ke aap use kartaa hae ke, ke block kar dewa gais hae. Suruu waala block kare ke kaaran rahaa:$1", "cant-see-hidden-user": "Jon sadasya ke aap roke mangtaa hae ke pahile rok ke lukae dewa gais hae.\nJab ki aap ke lage hideuser adhikaar nai hae, tab aap ii sadasya ke rukawat ke nai dekhe aur badle saktaa hae.", "ipbblocked": "Aap duusra sadasya ke roke nai to kohle nai sakta hae, kaahe ki aap ke bhi rokaa gais hae", @@ -2318,13 +2396,14 @@ "lockdbsuccesstext": "Database ke band kar dewa gais hai.<br />\nYaad kar ke [[Special:UnlockDB|lock ke hatae dena]] maintenance khalaas kare ke baad.", "unlockdbsuccesstext": "Database ke khol dewa gais hai.", "lockfilenotwritable": "Database lock file me likha nai jaawe sake hai.\nDatabase ke khole nai to band kare ke khatir, iske web server se likhe ke laayek hoe ke chaahi", + "databaselocked": "Database already band hai.", "databasenotlocked": "Database band nai hai.", "lockedbyandtime": "(se {{GENDER:$1|$1}} pe $2 hian $3)", "move-page": "$1 ke naam badlo", "move-page-legend": "Panna ke naam badlo", - "movepagetext": "Niche ke form kaam me laae se panna ke naam badal jaai aur iske itihass nawaa naam ke niche hoe jaai.\nPuraana title nawaa title pe redirect hoe jaai.\nAap uu redirect, jon ki pahile waala title pe jawe hai, ke update kare sakta hai.\nAgar aap ii nai kare mangta hai, tab [[Special:DoubleRedirects|double]] nai to [[Special:BrokenRedirects|broken redirects]] ke check karna.\nAap ke jimewaari hai ki dekho ki links right jagah point kare hai.\n\nKhayal rakhna ki agar jo nawaa title ke naam ke ek panna hai tab panna move '''nai''' hae saki jab tak ki panna khali nahi hai yah to redirect hai yah to koi pahile ke edit itihaas nahi hai.\nIske matlab ii hai ki aap ek panna ke naam badal ke wahi naam rakh de sakta hai jon naam pahile rahaa aur agar aap mistake karaa tab abhi ke panna ke overwrite nahi kare saktaa.\n\n'''CHETAWANI'''\nIi ek lokpriye panna ke galti se badal de sake hai;\nmeharbaani kar ke aap aapan karya ke natiija ke baare me socho aage kuch kare se pahile.", - "movepagetext-noredirectfixer": "Niche ke form kaam me laae se panna ke naam badal jaai aur iske itihass nawaa naam ke niche hoe jaai.\nPuraana title nawaa title pe redirect hoe jaai.\nIi jaruri hae ki aap [[Special:DoubleRedirects|double]] nai to [[Special:BrokenRedirects|broken redirects]] ke check karo.\nAap ke jimewaari hai ki dekho ki links right jagah point kare hai.\n\nKhayal rakhna ki agar jo nawaa title ke naam ke ek panna hai tab panna move '''nai''' hae saki jab tak ki panna khali nahi hai yah to redirect hai yah to koi pahile ke edit itihaas nahi hai.\nIske matlab ii hai ki aap ek panna ke naam badal ke wahi naam rakh de sakta hai jon naam pahile rahaa aur agar aap mistake karaa tab abhi ke panna ke overwrite nahi kare saktaa.\n\n'''CHETAWANI'''\nIi ek lokpriye panna ke galti se badal de sake hai;\nmeharbaani kar ke aap aapan karya ke natiija ke baare me socho aage kuch kare se pahile.", - "movepagetalktext": "Saathe ke talk panna ke automatically move kar dewa jai ii panna ke saathe '''agar jo:'''\n* khali nahi talk page nawaa naam ke already hai, yah\n* Aap nivhe waala box ke uncheck karo\nIi prastithi me, aap ke manually move yah merge kare ke parri.", + "movepagetext": "Niche ke form kaam me laae se panna ke naam badal jaai aur iske itihass nawaa naam ke niche hoe jaai.\nPuraana title nawaa title pe redirect hoe jaai.\nAap uu redirect, jon ki pahile waala title pe jawe hai, ke update kare sakta hai.\nAgar aap ii nai kare mangta hai, tab [[Special:DoubleRedirects|double]] nai to [[Special:BrokenRedirects|broken redirects]] ke check karna.\nAap ke jimewaari hai ki dekho ki links right jagah point kare hai.\n\nKhayal rakhna ki agar jo nawaa title ke naam ke ek panna hai tab panna move <strong>nai</strong> hae saki jab tak ki panna khali nahi hai yah to redirect hai yah to koi pahile ke edit itihaas nahi hai.\nIske matlab ii hai ki aap ek panna ke naam badal ke wahi naam rakh de sakta hai jon naam pahile rahaa aur agar aap mistake karaa tab abhi ke panna ke overwrite nahi kare saktaa.\n\n<strong>CHETAWANI</strong>\nIi ek lokpriye panna ke galti se badal de sake hai;\nmeharbaani kar ke aap aapan karya ke natiija ke baare me socho aage kuch kare se pahile.", + "movepagetext-noredirectfixer": "Niche ke form kaam me laae se panna ke naam badal jaai aur iske itihass nawaa naam ke niche hoe jaai.\nPuraana title nawaa title pe redirect hoe jaai.\nIi jaruri hae ki aap [[Special:DoubleRedirects|double]] nai to [[Special:BrokenRedirects|broken redirects]] ke check karo.\nAap ke jimewaari hai ki dekho ki links right jagah point kare hai.\n\nKhayal rakhna ki agar jo nawaa title ke naam ke ek panna hai tab panna move <strong>nai</strong> hae saki jab tak ki panna khali nahi hai yah to redirect hai yah to koi pahile ke edit itihaas nahi hai.\nIske matlab ii hai ki aap ek panna ke naam badal ke wahi naam rakh de sakta hai jon naam pahile rahaa aur agar aap mistake karaa tab abhi ke panna ke overwrite nahi kare saktaa.\n\n<strong>CHETAWANI</strong>\nIi ek lokpriye panna ke galti se badal de sake hai;\nmeharbaani kar ke aap aapan karya ke natiija ke baare me socho aage kuch kare se pahile.", + "movepagetalktext": "Agar aap box ke tick karaa tab, saathe ke talk panna ke automatically move kar dewa jai ii panna ke saathe '''agar jo:'''\n* khali nahi talk page nawaa naam ke already hai, yah\nIi prastithi me, aap ke manually move yah merge kare ke parri.", "moveuserpage-warning": " '''Chetauni:''' Aap ek sadasya ke panna ke naam badle waala hae. Ii yaad rakhna ki khaali panna ke naam badla jaai, sadasya ke naam ''nai'' badlaa jaai.", "movecategorypage-warning": "<strong>Chetauni:</strong> Aap ek category panna ke hatae waala hae. Khaali ii panna ke hataawa jaai aur purana category ke aur panna ke nawaa category me <em>nai</em> recategorize karaa jaai.", "movenologintext": "Panna ke naam badle ke khatir aap ke ek registered sadasya rahe ke parri aur [[Special:UserLogin|logged in]].", @@ -2334,7 +2413,9 @@ "cant-move-to-user-page": "Aap ke koi panna ke hatae ke sadasya ke panna pe kare ke ijajat nai hai (sadasya ke subpage ke chhorr ke).", "cant-move-category-page": "Aap ke panna ke category panna ke hatae ke ijajat nai hai.", "cant-move-to-category-page": "Aap ke panna ke category panna me hatae ke ijajat nai hai.", - "newtitle": "Nawaa title pe:", + "cant-move-subpages": "Aap ke subpages ke naam badle ke ijajat nai hai.", + "namespace-nosubpages": "Namespace \"$1\" subpages ke nai allow kare hai.", + "newtitle": "Nawaa title:", "move-watch": "Ii panna pe dhyan rakho", "movepagebtn": "Panna ke naam badlo", "pagemovedsub": "Panna ke naam badle me safalta", @@ -2354,10 +2435,11 @@ "movelogpagetext": "Niche sab panna, jiske naam badla gais hai, ke suchi hai.", "movesubpage": "{{PLURAL:$1|Subpage|Subpages}}", "movesubpagetext": "Ii panna me $1 {{PLURAL:$1|subpage|subpages}} hai jiske niche dekhawa gais hai.", + "movesubpagetalktext": "Corresponding baat waala panna $1 {{PLURAL:$1|subpage|subpages}} ke niche dekhawa gais hai.", "movenosubpage": "Ii panna me koi subpages nai hai.", "movereason": "Kaaran:", "revertmove": "purana copy pe lae jao", - "delete_and_move_text": "== Mitae ke jaruri hai ==\nDestination panna \"[[:$1]]\" abhi hai.\nKa aap mangta hai ki iske mitae dewa jaae, jisse ki ii naam se duusra paana ke save karaa jaae sake?", + "delete_and_move_text": "Destination panna \"[[:$1]]\" abhi hai.\nKa aap mangta hai ki iske mitae dewa jaae, jisse ki ii naam se duusra paana ke save karaa jaae sake?", "delete_and_move_confirm": "Haan, panna ke mitao", "delete_and_move_reason": "\"[[$1]]\" se move kare ke khatir isk mitaya", "selfmove": "Source aur destination title ke naam ekke hai;\npanna ke wahi ke uppar nai save karaa jaae sake hai.", @@ -2375,7 +2457,7 @@ "move-leave-redirect": "Ek redirect ke pichhe chhorro", "protectedpagemovewarning": "Chetauni: Ii panna ke band kar dewa gais hai jisse ki khaali administrator logan iske naam badle sake hai.\nAap ke jaankari ke khatir sab se nawaa suchi niche dewa gais hae:", "semiprotectedpagemovewarning": "Dhyan me rakhna: Ii panna ke band kar dewa gais hai jisse ki khaali registered sadasya iske naam badle sake hai.\nAap ke jaankari ke khatir sab se nawaa suchi ke niche dewa gais hae:", - "move-over-sharedrepo": "==File hae==\n[[:$1]] shared repository me hae. Ek file ke naam badal ke ii naam kare se shared file mit jaai.", + "move-over-sharedrepo": "[[:$1]] shared repository me hae. Ek file ke naam badal ke ii naam kare se shared file mit jaai.", "file-exists-sharedrepo": "Jon file ke naam ke chuna gais hae, pahile se shared repository me hae.\nMeharbani kar ke duusra naam do.", "export": "Panna niryat karo", "exporttext": "Aap ek khaas panna, nai to dher panna jon ki XML me bandha hai, ke text aur balao ke itihass ke export kare saktaa hai.\nIske duusra wiki me MediaWiki [[Special:Import|import panna]] se import karaa jaawe sake hai.\n\nPanna ke export kare ke khatir titles ke niche ke text box me likho, ek line pe ek title, aur ii select karo ki aap abhi ke version ke saathe purana version mangtaa hai, panna ke itihaas ke saathe, nai to abhi ke version jisme last badlao ke jankari hai.\n\nDuusra case me aap ek link ke bhi use kare saktaa hai, jaise ki [[{{#Special:Export}}/{{MediaWiki:Mainpage}}]] panna ke khatir \"[[{{MediaWiki:Mainpage}}]]\".", @@ -2391,6 +2473,7 @@ "export-download": "Save as file", "export-templates": "Templates ke include karo", "export-pagelinks": "Include linked pages to a depth of:", + "export-manual": "Panna ke manually jorro", "allmessages": "System sandesh", "allmessagesname": "Naam", "allmessagesdefault": "Default text", @@ -2429,6 +2512,9 @@ "import-interwiki-history": "Ii panna ke sab badlao ke itihaas ke copy karo", "import-interwiki-templates": "Sab template ke include karo", "import-interwiki-submit": "Import karo", + "import-mapping-default": "Default locations pe import karo", + "import-mapping-namespace": "Name space pe import karo:", + "import-mapping-subpage": "Import as subpages of the following page:", "import-upload-filename": "File ke naam:", "import-comment": "Aapan bichar do:", "importtext": "Meharbani kar ke file ke [[Special:Export|export utility]] use kar ke source wiki me se export karo.\nAapan computer me save kar ke hian pe upload karo.", @@ -2451,7 +2537,7 @@ "import-nonewrevisions": "Koi badalo ke import nai karaa gais hae (sab ke chaahe pahile import karaa gais rahaa, nai to error ke kaaran skip karaa gais rahaa).", "xml-error-string": "$1 line $2 me, col $3 (byte $4): $5", "import-upload": "XML data ke upload karo", - "import-token-mismatch": "Loss of session data.\nMeharbani kar ke, fir se kosis karo.", + "import-token-mismatch": "Loss of session data.\nYou might have been logged out. <strong>Please verify that you're still logged in and try again</strong>.\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": "Naam dewa gais wiki se import nai kare saktaa hai.", "import-error-edit": "Panna \"$1\" ke import nai kara gais kaahe ki aap ke badle ke adhikar nai hae.", "import-error-create": "Panna \"$1\" ke import nai kara gais kaahe ki aap ke panna banae ke adhikar nai hae.", @@ -2477,6 +2563,7 @@ "tooltip-pt-preferences": "{{GENDER:|Aap ke}} pasand", "tooltip-pt-watchlist": "Panna ke suchi jispe aap dhyan rakhaa hae", "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-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", @@ -2508,7 +2595,7 @@ "tooltip-feed-rss": "Ii panna ke khatir RSS feed", "tooltip-feed-atom": "Ii panna ke khatir atom feed", "tooltip-t-contributions": "Yogdaan ke suchi dekho {{GENDER:$1|ii sadasya se}}", - "tooltip-t-emailuser": "Ii user ke lage ek mail bhejo", + "tooltip-t-emailuser": "Email bhejo {{GENDER:$1|ii sadasya}} ke lage", "tooltip-t-info": "Ii panna ke bare me aur jankari", "tooltip-t-upload": "File upload karo", "tooltip-t-specialpages": "Sab khaas panna ke suchi", @@ -2526,6 +2613,7 @@ "tooltip-ca-nstab-category": "Vibhag panna ke dekho", "tooltip-minoredit": "Ii badlao ke chhota badlao ke chihna lagao", "tooltip-save": "Aapan badlao ke bachao", + "tooltip-publish": "Aapan panna ke publish karo", "tooltip-preview": "Badlao ke preview karo, bachae se pahile!", "tooltip-diff": "Dekhao ki aap kon chij badlaa hae", "tooltip-compareselectedversions": "Ii panna ke dui chuna gais version ke antar dekho.", @@ -2544,7 +2632,7 @@ "lastmodifiedatby": "Ii panna ke aakhri dafe $3 badlis rahaa $2, $1.", "othercontribs": "Ii $1 ke kaam pe based hae.", "others": "duusra jane", - "siteusers": "{{SITENAME}} {{PLURAL:$2|sadasya|sadasya}} $1", + "siteusers": "{{SITENAME}} {{PLURAL:$2|sadasya}} $1", "anonusers": "{{SITENAME}} benaam {{PLURAL:$2|sadasya|sadasya}} $1", "creditspage": "Panna ke credit", "nocredits": "Ii panna ke khatir koi credit ke baare me jaankari nai hai.", @@ -2567,12 +2655,16 @@ "pageinfo-length": "Panna ke lambai (bytes me)", "pageinfo-article-id": "Panna ke ID", "pageinfo-language": "Panna ke bhasa", + "pageinfo-language-change": "badlo", "pageinfo-content-model": "Page content model", + "pageinfo-content-model-change": "badlo", "pageinfo-robot-policy": "Robots se indexing", "pageinfo-robot-index": "Ijajat hae", "pageinfo-robot-noindex": "Ijajat nai hae", "pageinfo-watchers": "Ketnaa jane panna ke dekhe hae", + "pageinfo-visiting-watchers": "Etna page wathchers recent edits ke visit karin hai", "pageinfo-few-watchers": "$1 {{PLURAL:$1|watcher|watchers}} se kamtii log hae", + "pageinfo-few-visiting-watchers": "There may or may not be a watching user visiting recent edits", "pageinfo-redirects-name": "Ii panna me etna redirect hae", "pageinfo-subpages-name": "Ii panna ke subpage", "pageinfo-subpages-value": "$1 ($2 {{PLURAL:$2|redirect|redirects}}; $3 {{PLURAL:$3|non-redirect|non-redirects}})", @@ -2597,11 +2689,14 @@ "pageinfo-protect-cascading-yes": "Haan", "pageinfo-protect-cascading-from": "Protections isse cascade hoe hae", "pageinfo-category-info": "Category ke bare me jaankari", + "pageinfo-category-total": "Sadasya ke total", "pageinfo-category-pages": "Ketnaa panna hae", "pageinfo-category-subcats": "Etnaa subcategories hae", "pageinfo-category-files": "Etnaa file hae", + "pageinfo-user-id": "Sadasya ke ID", "markaspatrolleddiff": "Mark karo ke pahraa dewa jaawe hai", "markaspatrolledtext": "Mark karo ki panna pe pahraa dewa jaawe hai", + "markaspatrolledtext-file": "Mark this file version as patrolled", "markedaspatrolled": "Mark karo ke pahraa dewa jaawe hai", "markedaspatrolledtext": "Pasand karaa gais [[:$1]] ke badlao pe pahraa dewa jaawe hai", "rcpatroldisabled": "Nawaa badlao pe pahraa de ke ijajat nai hai", @@ -2614,6 +2709,9 @@ "patrol-log-page": "Pahraa de waala suchi", "patrol-log-header": "Ii pahraa dewa gais badlao ke suchi hai.", "log-show-hide-patrol": "$1 pahraa de waala suchi", + "log-show-hide-tag": "$1 tag log", + "confirm-markpatrolled-button": "OK", + "confirm-markpatrolled-top": "Mark karo ki ii revision $3 of $2 patrolled hai?", "deletedrevision": "Purana badlao ke mitae dia hai $1", "filedeleteerror-short": "File ke mitae me galti hoe gais: $1", "filedeleteerror-long": "File ke mitae ke time garrbarr hoe gais:\n\n$1", @@ -2636,6 +2734,7 @@ "svg-long-error": "SCG file valid nai hae: $1", "show-big-image": "Original file", "show-big-image-preview": "Ii preview ke size: $1", + "show-big-image-preview-differ": "Size of this $3 preview of this $2 file: $1.", "show-big-image-other": "Duusra {{PLURAL:$2|resolution|resolutions}}: $1", "show-big-image-size": "$1 × $2 pixels", "file-info-gif-looped": "Ghuum ghumae ke wahii jagha pe aawe hae", @@ -2651,7 +2750,9 @@ "newimages-legend": "Chaalo", "newimages-label": "Filename (nai to iske ek hissa):", "newimages-showbots": "Bots se upload dekhawa jaae hae", + "newimages-hidepatrolled": "Patrolled uploads ke lukao", "noimages": "Koi chij dekhe ke nai hai.", + "gallery-slideshow-toggle": "Toggle thumbnails", "ilsubmit": "Khojo", "bydate": "tarik se", "sp-newimages-showfrom": " $2, $1 se suruu kar ke nawaa file ke dekhao", @@ -2863,6 +2964,7 @@ "exif-compression-4": "CCITT Group 4 fax ke encoding", "exif-copyrighted-true": "Copyright karaa gais hae", "exif-copyrighted-false": "Copyright status ke nai set karaa gais hae", + "exif-photometricinterpretation-1": "Kariyaa aur ujjar (Kariyaa 0 hai)", "exif-unknowndate": "Taarik nai maalum", "exif-orientation-1": "Saamaan", "exif-orientation-2": "Baraabar ultawa gais hae", @@ -3039,13 +3141,17 @@ "confirmemail_body_set": "Koi, hoe sake aap IP address $1 se, ek account \"$2\" with this email address on {{SITENAME}} ke set karis hae.\n\nIi confirm kare ke khatir ki asliyat me ii acount aap ke hae, {{SITENAME}} me email features ke activate karo, aur aapan browser me ii link ke kholo:\n\n$3\n\nAgar aapa ii account ke nai register karaa hae, ii link ke follow karo aur email address confirmation ke cancel karo:\n\n$5\n\nIi confirmation code $4 ke expire hoi.", "confirmemail_invalidated": "Email address confirmation ke cancel kae dewa gais hae", "invalidateemail": "Email confirmation ke cancel karo", + "notificationemail_subject_changed": "{{SITENAME}} ke registered email address ke badal dewa gais hai", + "notificationemail_subject_removed": "{{SITENAME}} ke registered email address ke hatae dewa gais hai", + "notificationemail_body_changed": "Koi jan, hoe sake aap, IP address $1 se,\nemail address ke badlis hai account \"$2\" to \"$3\" {{SITENAME}} pe.\n\nAgar ii aap nai hai to ek site administrator ke contact karo", + "notificationemail_body_removed": "Koi jan, hoe sake aap, IP address $1 se,\nemail address ke hate diis hai, account \"$2\" {{SITENAME}} pe.\n\nAgar ii aap nai hai to ek site administrator ke contact karo", "scarytranscludedisabled": "[Interwiki transcluding ke disable kar dewa gais hae]", "scarytranscludefailed": "[Template fetch $1 ke khatir fail hoe gais hae]", "scarytranscludefailed-httpstatus": "[$1: HTTP $2 ke khatir template fetch fail hoe gais hae]", "scarytranscludetoolong": "[URL bahut lambaa hae]", "deletedwhileediting": "'''Chetauni:''' Aap ke editing suruu kare ke baad ii panna ke delete kar dewa gais hae!", - "confirmrecreate": "User [[User:$1|$1]] ([[User talk:$1|talk]]) mitae dewa gais ii pannaa aap ke badlao suruu kare ke baad, ii kaaran se: ''$2''\nMeharbaani kar ke confirm karo ki aap ii panna ke fir banae mangtaa hae.", - "confirmrecreate-noreason": "User [[User:$1|$1]] ([[User talk:$1|talk]]) mitae dewa gais ii pannaa aap ke badlao suruu kare ke baad.\nMeharbaani kar ke confirm karo ki aap ii panna ke fir banae mangtaa hae.", + "confirmrecreate": "Sadasya [[User:$1|$1]] ([[User talk:$1|talk]]) {{GENDER:$1|mitais}} ii panna after you started editing with reason:\n: <em>$2</em>\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_button": "Thik hae", "confirm-purge-top": "Ii panna ke cache ke mitao", @@ -3054,6 +3160,8 @@ "confirm-watch-top": "Ii panna ke aap ke dhyan suchi me jorro?", "confirm-unwatch-button": "Thiik hae", "confirm-unwatch-top": "Ii panna ke aap ke dhyan suchi se hatao?", + "confirm-rollback-button": "OK", + "confirm-rollback-top": "Ii panna ke badlao ke pahile jaise karo?", "quotation-marks": "\"$1\"", "imgmultipageprev": "← pahile waala panna", "imgmultipagenext": "aage waala panna →", @@ -3092,7 +3200,7 @@ "watchlistedit-raw-done": "Aap ke watchlist ke update kar dewa gais hae.", "watchlistedit-raw-added": "{{PLURAL:$1|1 title was|$1 titles were}} added:", "watchlistedit-raw-removed": "{{PLURAL:$1|1 title was|$1 titles were}} removed:", - "watchlistedit-clear-title": "Watchlist ke clear karaa gais hae", + "watchlistedit-clear-title": "Watchlist ke clear karo", "watchlistedit-clear-legend": "Watchlist ke clear karo", "watchlistedit-clear-explain": "Aap ke watchlist me se sab title ke hatae dewa jaai", "watchlistedit-clear-titles": "Titles:", @@ -3105,8 +3213,10 @@ "watchlisttools-edit": "Dhyan suchi ke dekho aur badlo", "watchlisttools-raw": "Dhyan suchi ke apne sampadan karo", "signature": "[[{{ns:user}}:$1|$2]] ([[{{ns:user_talk}}:$1|talk]])", + "timezone-local": "Local", "duplicate-defaultsort": "'''Chetauni:''' Default sort key \"$2\" pahile ke default sort key \"$1\" ke override kare hae.", "duplicate-displaytitle": "<strong>Chetauni:</strong> Display title \"$2\" pahile ke display title \"$1\" ke override kare hae.", + "restricted-displaytitle": "<strong>Chetauni:</strong> Display title \"$1\" was ignored since it is not equivalent to the page's actual title.", "invalid-indicator-name": "<strong>Error:</strong> Panna status indicators' <code>naam</code> attribute khaali nai rahe sake hae.", "version": "Badlao", "version-extensions": "Installed extensions", @@ -3149,6 +3259,9 @@ "version-libraries": "Installed libraries", "version-libraries-library": "Library", "version-libraries-version": "Version", + "version-libraries-license": "License", + "version-libraries-description": "Baare me", + "version-libraries-authors": "Likhe waale", "redirect": "File, sadasya, panna, nai to, revision ID se redirect", "redirect-summary": "Ii khaas panna ek file (given the filename), panna (given a revision ID or page ID), nai to, sadasya ke panna (given a numeric user ID) pe redirect hoe hae. Usage: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/page/64308]], [[{{#Special:Redirect}}/revision/328429]], or [[{{#Special:Redirect}}/user/101]].", "redirect-submit": "Jaao", @@ -3158,6 +3271,7 @@ "redirect-page": "Sadasya ke ID", "redirect-revision": "Panna ke revision", "redirect-file": "Filename", + "redirect-logid": "Log ID", "redirect-not-exists": "Value ke nai paawa gais hae", "fileduplicatesearch": "Duplicate files ke khojo", "fileduplicatesearch-summary": "Duplicate files based on hash values ke khojo.", @@ -3190,6 +3304,8 @@ "tag-filter": "[[Special:Tags|Tag]] filter karo:", "tag-filter-submit": "Filter", "tag-list-wrapper": "([[Special:Tags|{{PLURAL:$1|Tag|Tags}}]]: $2)", + "tag-mw-contentmodelchange": "Content model ke badlao", + "tag-mw-contentmodelchange-description": "Badlao, jon ki [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:ChangeContentModel change the content model] of a page", "tags-title": "Tags", "tags-intro": "Ii panna uu tag ke list kare hae jiske software edit with, aur their meaning se mark kare hae.", "tags-tag": "Tag ke naam", @@ -3201,7 +3317,7 @@ "tags-actions-header": "Actions", "tags-active-yes": "Haan", "tags-active-no": "Nai", - "tags-source-extension": "Ek extension se define hoe hae", + "tags-source-extension": "Software define karis hai", "tags-source-manual": "Sadasya aur bot se manually apply karaa jaawe hae", "tags-source-none": "Ab iske kaam me nai lawa jaae hae", "tags-edit": "badlo", @@ -3210,6 +3326,7 @@ "tags-deactivate": "deactivate karo", "tags-hitcount": "$1 {{PLURAL:$1|badlao|badlao}}", "tags-manage-no-permission": "Aap ke change tags ke manage kare ke ijaajat nai hae.", + "tags-manage-blocked": "Aap tags ke nai badle saktaa hai, jab {{GENDER:$1|aap}} blocked hai.", "tags-create-heading": "Ek nawaa tag ke banao", "tags-create-explanation": "Default se, jon nawaa tag banawa gais hae ke sadasya aur bots ke kaam me laae khatir dewa jaai.", "tags-create-tag-name": "Tag ke naam:", @@ -3224,7 +3341,58 @@ "tags-delete-title": "Tag ke delete karo", "tags-delete-explanation-initial": "Aap tag \"$1\" ke database se mitae waala hae.", "tags-delete-explanation-in-use": "Iske {{PLURAL:$2|$2 revision or log entry|all $2 revisions and/or log entries}} se hatae dewa jaai jahaan pe it is currently applied.", + "tags-delete-explanation-warning": "Ii action <strong>irreversible</strong> hai aur <strong>cannot be undone</strong>, not even by database administrators. Be certain this is the tag you mean to delete.", + "tags-delete-explanation-active": "<strong>Ii tag \"$1\" abhi bhi active hai, and will continue to be applied in the future.</strong> To stop this from happening, go to the place(s) where the tag is set to be applied, and disable it there.", "tags-delete-reason": "Kaaran:", + "tags-delete-submit": "Irreversibly delete this tag", + "tags-delete-not-allowed": "Tags jiske ek an extension se define karaa gais hai, ke nai mataawa jaae sake hai unless the extension specifically allows it.", + "tags-delete-not-found": "Tag \"$1\" nai hai.", + "tags-delete-too-many-uses": "Tag \"$1\" ke $2 {{PLURAL:$2|revision|revisions}} time se jaada apply karaa gais hai, jiske matalab hai is iske mitaawa nai jaae sake hai.", + "tags-delete-warnings-after-delete": "Tag \"$1\" ke mitae dewa gais rahaa, but the following {{PLURAL:$2|warning was|warnings were}} encountered:", + "tags-delete-no-permission": "Aap ke change tags ke mitae ke ijaajat nai hae.", + "tags-activate-title": "Tag ke activate karo", + "tags-activate-question": "Aap tag \"$1\" ke activate kare waala hai.", + "tags-activate-reason": "Kaaran:", + "tags-activate-not-allowed": "Tag \"$1\" ke nai activate karaa jaae sake hai.", + "tags-activate-not-found": "Tag \"$1\" nai hai.", + "tags-activate-submit": "Activate karo", + "tags-deactivate-title": "Tag ke Deactivate karo", + "tags-deactivate-question": "Aap tag \"$1\" ke deactivate kare waala hai.", + "tags-deactivate-reason": "Kaaran:", + "tags-deactivate-not-allowed": "Tag \"$1\" ke deactivate nai karaa jaae sake hai.", + "tags-deactivate-submit": "Deactivate karo", + "tags-apply-no-permission": "Aap ke lage, aapan badlao ke saathe, tag ke badle ke ijaajat nai hai.", + "tags-apply-blocked": "Aap ke lage, aapan badlao ke saathe, tag ke badle ke ijaajat nai hai jab ke {{GENDER:$1|aap}} blocked hai.", + "tags-apply-not-allowed-one": "Tag \"$1\" ke manually apply kare ke ijaajat nai hai.", + "tags-apply-not-allowed-multi": "Niche ke {{PLURAL:$2|tag}} ke manually apply nai karaa jaae sake hai: $1", + "tags-update-no-permission": "Aap ke lage individual revisions nai to log entries pe tags ke jorre aur hatae ke adhikaar nai hai.", + "tags-update-blocked": "Aap tags ke nai hatae saktaa hai, jab {{GENDER:$1|aap}} blocked hai.", + "tags-update-add-not-allowed-one": "Tag \"$1\" ke manually jorre ke ijaajat nai hai.", + "tags-update-add-not-allowed-multi": "Niche ke {{PLURAL:$2|tag}} ke manually jorra nai jaae sake hai: $1", + "tags-update-remove-not-allowed-one": "Tag \"$1\" ke hatae ke adhikaae nai hai.", + "tags-update-remove-not-allowed-multi": "Niche ke {{PLURAL:$2|tag}} ke manually hataawa nai jaae sake hai: $1", + "tags-edit-title": "Tags ke badlo", + "tags-edit-manage-link": "Tags ke manage karo", + "tags-edit-revision-selected": "{{PLURAL:$1|Chunaa gais badlao}} [[:$2]] ke:", + "tags-edit-logentry-selected": "{{PLURAL:$1|Chuna gais log event}}:", + "tags-edit-revision-legend": "{{PLURAL:$1|Ii badlao|sab $1 badlao}} se tag ke jorro , nai to hatao", + "tags-edit-logentry-legend": "{{PLURAL:$1|Ii log entry se|sab $1 log entry}} se tag ke jorro, nai to hatao", + "tags-edit-existing-tags": "Abhi ke tag:", + "tags-edit-existing-tags-none": "<em>Kuchh bhi nai</em>", + "tags-edit-new-tags": "Nawaa tag:", + "tags-edit-add": "Ii tag ke jorro:", + "tags-edit-remove": "Ii tag ke hatao:", + "tags-edit-remove-all-tags": "(sab tag ke hatao)", + "tags-edit-chosen-placeholder": "Kuchh tag ke select karo", + "tags-edit-chosen-no-results": "Uu match se koi tag nai milaa", + "tags-edit-reason": "Kaaran:", + "tags-edit-revision-submit": "{{PLURAL:$1|Ii badlao|$1 badlao}} pe changes ke apply karo", + "tags-edit-logentry-submit": "{{PLURAL:$1|Ii log entry|$1 log entry}} pe changes ke apply karo", + "tags-edit-success": "Badlao ke apply kar dewa gais hai.", + "tags-edit-failure": "Balao ke nai apply karaa jaae sakaa gais hai:\n$1", + "tags-edit-nooldid-title": "Target revision jon ki valid nai hai", + "tags-edit-nooldid-text": "Aap saait koi target revision ke nai specify karaa hai, jispe ii function perfom karaa jaae sake hai, nai to specified revision does not exist.", + "tags-edit-none-selected": "Meharbaani kar ke ek tag ke chuno jiske jorra, nai to, hataawa jaae sake hai.", "comparepages": "Panna ke biich me antar dekho", "compare-page1": "Panna 1", "compare-page2": "Panna 2", @@ -3257,7 +3425,25 @@ "htmlform-cloner-create": "Aur add karo", "htmlform-cloner-delete": "Remove karo", "htmlform-cloner-required": "Kamti se kamti ek value ke jaruri hae", + "htmlform-date-placeholder": "YYYY-MM-DD", + "htmlform-time-placeholder": "HH:MM:SS", + "htmlform-datetime-placeholder": "YYYY-MM-DD HH:MM:SS", + "htmlform-date-invalid": "Jon value ke aap specify karaa hai, ke date nai maana jaawe hai. Format YYYY-MM-DD ke use kare ke kosis karo.", + "htmlform-time-invalid": "Jon value ke aap specify karaa hai, ke time nai maana jaawe hai. Format HH:MM:SS ke use kar ke format kare ke kosis karo.", + "htmlform-datetime-invalid": "Jon value ke aap specify karaa hai, ke date nai maana jaawe hai. Format YYYY-MM-DD HH-MM-SS ke use kar ke format kare ke kosis karo.", + "htmlform-date-toolow": "Jon value ke aap specify karaa hai, sab se puraana allowed date $1 se pahile hai:", + "htmlform-date-toohigh": "Jon value ke aap specify karaa hai, sab se nawaa allowed date ke baad hai:$1", + "htmlform-time-toolow": "Jon value ke aap specify karaa hai, sab se puraana allowed time $1 se pahile hai", + "htmlform-time-toohigh": "Jon value ke aap specify karaa hai, sab se nawaa allowed time $1 ke baad hai.", + "htmlform-datetime-toolow": "Jon value ke aap specify karaa hai, sab se puraana allowed date $1 se pahile hai.", + "htmlform-datetime-toohigh": "Jon value ke aap specify karaa hai, sab se nawaa allowed date $1 ke baad hai.", + "htmlform-title-badnamespace": "[[:$1]] is not in the \"{{ns:$2}}\" namespace.", + "htmlform-title-not-creatable": "\"$1\" is not a creatable page title", + "htmlform-title-not-exists": "$1 nai hae", + "htmlform-user-not-exists": "<strong>$1</strong> nai hai.", + "htmlform-user-not-valid": "<strong>$1</strong> 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-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", @@ -3276,6 +3462,15 @@ "revdelete-uname-unhid": "username ke lukawa gais hae", "revdelete-restricted": "sysops pe llabu restrictions", "revdelete-unrestricted": "sysops se hatawa gae rukawat", + "logentry-block-block": "$1 {{GENDER:$2|blocked}} {{GENDER:$4|$3}} with an expiration time of $5 $6", + "logentry-block-unblock": "$1 {{GENDER:$2|unblocked}} {{GENDER:$4|$3}}", + "logentry-block-reblock": "$1 {{GENDER:$2|changed}} block settings for {{GENDER:$4|$3}} with an expiration time of $5 $6", + "logentry-suppress-block": "$1 {{GENDER:$2|blocked}} {{GENDER:$4|$3}} with an expiration time of $5 $6", + "logentry-suppress-reblock": "$1 {{GENDER:$2|changed}} block settings for {{GENDER:$4|$3}} with an expiration time of $5 $6", + "logentry-import-upload": "$1 {{GENDER:$2|imported}} $3 by file upload", + "logentry-import-upload-details": "$1 {{GENDER:$2|imported}} $3 by file upload ($4 {{PLURAL:$4|revision|revisions}})", + "logentry-import-interwiki": "$1 {{GENDER:$2|imported}} $3 from another wiki", + "logentry-import-interwiki-details": "$1 {{GENDER:$2|imported}} $3 from $5 ($4 {{PLURAL:$4|revision|revisions}})", "logentry-merge-merge": "$1 {{GENDER:$2|merged}} $3 into $4 (revisions up to $5)", "logentry-move-move": "$1 {{GENDER:$2|moved}} panna $3 se $4", "logentry-move-move-noredirect": "$1 {{GENDER:$2|moved}} panna $3 se $4 without leaving a redirect", @@ -3288,40 +3483,316 @@ "logentry-newusers-create2": "Sadasya $3 ke account {{GENDER:$2|created}} ke $1 banais hae.", "logentry-newusers-byemail": "Sadasya $3 ke account {{GENDER:$2|created}} ke $1 banais hae aur password ke email se bheja gais hae", "logentry-newusers-autocreate": "Sadasya $1 ke account {{GENDER:$2|created}} ke automatically banawa gais hae", - "logentry-rights-rights": "$1 {{GENDER:$2|changed}} group ke membership $3 ke khatir $4 se lai ke $5 talak", + "logentry-protect-move_prot": "$1 {{GENDER:$2|moved}} protection settings from $4 to $3", + "logentry-protect-unprotect": "$1 {{GENDER:$2|removed}} protection from $3", + "logentry-protect-protect": "$1 {{GENDER:$2|protected}} $3 $4", + "logentry-protect-protect-cascade": "$1 {{GENDER:$2|protected}} $3 $4 [cascading]", + "logentry-protect-modify": "$1 {{GENDER:$2|changed}} protection level for $3 $4", + "logentry-protect-modify-cascade": "$1 {{GENDER:$2|changed}} protection level for $3 $4 [cascading]", + "logentry-rights-rights": "$1 {{GENDER:$2|changed}} group membership for {{GENDER:$6|$3}} from $4 to $5", "logentry-rights-rights-legacy": "$1 {{GENDER:$2|changed}} group ke membership $3 ke khatir", "logentry-rights-autopromote": "$1 ke apne se $4 se $5 {{GENDER:$2|promoted karaa gais hae}}", "logentry-upload-upload": "$1 {{GENDER:$2|upload karaa gais hae}} $3", "logentry-upload-overwrite": "$1 {{GENDER:$2|uploaded}} a new version of $3", "logentry-upload-revert": "$1 {{GENDER:$2|upload karaa gais hae}} $3", + "log-name-managetags": "Tag management log", + "log-description-managetags": "Ii panna me [[Special:Tags|tags]] ke suchi hai.\nThe log contains only actions carried out manually by an administrator; tags may be created or deleted by the wiki software without an entry being recorded in this log.", + "logentry-managetags-create": "$1 {{GENDER:$2|created}} the tag \"$4\"", + "logentry-managetags-delete": "$1 {{GENDER:$2|deleted}} the tag \"$4\" (removed from $5 {{PLURAL:$5|revision or log entry|revisions and/or log entries}})", + "logentry-managetags-activate": "$1 {{GENDER:$2|activated}} the tag \"$4\" for use by users and bots", + "logentry-managetags-deactivate": "$1 {{GENDER:$2|deactivated}} the tag \"$4\" for use by users and bots", + "log-name-tag": "Tag log", + "log-description-tag": "Ii panna sadasya ke dekhae hai jab uu [[Special:Tags|tags]] ke jorre, nai to, hatae hai, individual revision, nai to, log entries se. The log does not list tagging actions when they occur as part of an edit, deletion, or similar action.", + "logentry-tag-update-add-revision": "$1 {{GENDER:$2|added}} the {{PLURAL:$7|tag|tags}} $6 to revision $4 of page $3", + "logentry-tag-update-add-logentry": "$1 {{GENDER:$2|added}} the {{PLURAL:$7|tag|tags}} $6 to log entry $5 of page $3", + "logentry-tag-update-remove-revision": "$1 {{GENDER:$2|removed}} the {{PLURAL:$9|tag|tags}} $8 from revision $4 of page $3", + "logentry-tag-update-remove-logentry": "$1 {{GENDER:$2|removed}} the {{PLURAL:$9|tag|tags}} $8 from log entry $5 of page $3", + "logentry-tag-update-revision": "$1 {{GENDER:$2|updated}} tags on revision $4 of page $3 ({{PLURAL:$7|added}} $6; {{PLURAL:$9|removed}} $8)", + "logentry-tag-update-logentry": "$1 {{GENDER:$2|updated}} tags on log entry $5 of page $3 ({{PLURAL:$7|added}} $6; {{PLURAL:$9|removed}} $8)", "rightsnone": "(koi nai hai)", "revdelete-summary": "summary ke badlo", + "rightslogentry-temporary-group": "$1 (temporary, until $2)", "feedback-adding": "Panna me subject jorra jaawe hae...", + "feedback-back": "Piichhe", "feedback-bugcheck": "Julum! Khaali ii check karna ki ii ek pahile se jaana waala bugs me se nai hae [$1 known bugs].", "feedback-bugnew": "Ham karaa hae. Nawaa bug ke report karo", "feedback-bugornote": "Agar aap ek technical problem ke detail me describe kare mangtaa hae tab meharbaani kar ke [$1 report a bug].\n\nNai to, aap niche ke sahaj form ke kaam me laae saktaa hae. Aap ke comment ke, aap ke naam ke saathe, panna \"[$3 $2]\" me jorra jaai.", "feedback-cancel": "Cancel karo", "feedback-close": "Kar dewa gais hae", + "feedback-external-bug-report-button": "Ek technical task ke file karo", + "feedback-dialog-title": "Feedback ke submit karo", + "feedback-dialog-intro": "App niche ke easy form ke kaam me laae ke aapan feedback bheje saktaa hai. App ke comment ke panna \"$1\" me, aap ke username ke saathe jorra jaai.", "feedback-error1": "Error: Unrecognized result from API", "feedback-error2": "Error: Edit fail hoi gais hae", "feedback-error3": "Error: API se koi response nai mila", + "feedback-error4": "Error: Dewa gais feedback title ke post nai kare sakaa", "feedback-message": "Sandes:", "feedback-subject": "Subject:", "feedback-submit": "Submit karo", + "feedback-terms": "Ham samajhtaa hai ki hamaar user agent jaankaari me hamaar exact browser aur operating system version ke jaankaari rahii aur iske hamaar feedback ke saathe publically share karaa jaai.", + "feedback-termsofuse": "Ham Terms of Use ke niche feedback provide karegaa.", "feedback-thanks": "Dhanyabaad! Aap ke feedback ke panna \"[$2 $1]\" me post karaa gais hae.", + "feedback-thanks-title": "Dhanbaad!", + "feedback-useragent": "User agent:", "searchsuggest-search": "{{SITENAME}} me khojo", "searchsuggest-containing": "isme hae.....", - "api-error-badaccess-groups": "Aap ke ii wiki me file upload kare ke ijajat nai hae.", "api-error-badtoken": "Internal error: Bad token.", - "api-error-copyuploaddisabled": "Uploading by URL ke ii server me disable kar dewa gais hae.", - "api-error-duplicate": "There {{PLURAL:$1|is another file|are some other files}} already on the site with the same content.", - "api-error-duplicate-archive": "There {{PLURAL:$1|was another file|were some other files}} already on the site with the same content, but {{PLURAL:$1|it was|they were}} deleted.", - "api-error-empty-file": "Jon file ke aap submit karaa rahaa, khaali hae.", "api-error-emptypage": "Nawaa, khaali panna ke banae ke ijajat nai hae.", - "api-error-fetchfileerror": "Internal error: File khoje ke time kuch wrong hoe gais hae.", - "api-error-fileexists-forbidden": "Ek file, jiske naam \"$1\" hae abhi hae, aur iske overwrite nai karaa jaae sake hae.", - "api-error-fileexists-shared-forbidden": "Ek file, jiske naam \"$1\" hae abhi hae aur file repository me shared hae, aur iske overwrite nai karaa jaae sake hae.", - "api-error-file-too-large": "Jon file ke aap submit karaa hae bahut barraa hae.", - "api-error-filename-tooshort": "Filename bahut chhota hae.", - "api-error-filetype-banned": "Ii rakam ke file banned hae." + "api-error-publishfailed": "Internal error: Server temporary file ke publish nai kare sakis hai.", + "api-error-stashfailed": "Internal error: Server temporary file ke store nai kare sakis hai.", + "api-error-unknown-warning": "Unknown warning: \"$1\".", + "api-error-unknownerror": "Unknown error: \"$1\".", + "duration-seconds": "$1 {{PLURAL:$1|second|seconds}}", + "duration-minutes": "$1 {{PLURAL:$1|minute|minutes}}", + "duration-hours": "$1 {{PLURAL:$1|ghantaa}}", + "duration-days": "$1 {{PLURAL:$1|din}}", + "duration-weeks": "$1 {{PLURAL:$1|haptaa}}", + "duration-years": "$1 {{PLURAL:$1|saal}}", + "duration-decades": "$1 {{PLURAL:$1|decade|decades}}", + "duration-centuries": "$1 {{PLURAL:$1|century|centuries}}", + "duration-millennia": "$1 {{PLURAL:$1|millennium|millennia}}", + "rotate-comment": "Image rotated by $1 {{PLURAL:$1|degree|degrees}} clockwise", + "limitreport-title": "Parser profiling data:", + "limitreport-cputime": "CPU time usage", + "limitreport-cputime-value": "$1 {{PLURAL:$1|second|seconds}}", + "limitreport-walltime": "Real time usage", + "limitreport-walltime-value": "$1 {{PLURAL:$1|second|seconds}}", + "limitreport-ppvisitednodes": "Preprocessor visited node count", + "limitreport-ppgeneratednodes": "Preprocessor generated node count", + "limitreport-postexpandincludesize": "Post-expand include size", + "limitreport-postexpandincludesize-value": "$1/$2 {{PLURAL:$2|byte|bytes}}", + "limitreport-templateargumentsize": "Template argument size", + "limitreport-templateargumentsize-value": "$1/$2 {{PLURAL:$2|byte|bytes}}", + "limitreport-expansiondepth": "Highest expansion depth", + "limitreport-expensivefunctioncount": "Expensive parser function count", + "expandtemplates": "Expand templates", + "expand_templates_intro": "This special page takes text and expands all templates in it recursively.\nIt also expands supported parser functions like\n<code><nowiki>{{</nowiki>#language:…}}</code> and variables like\n<code><nowiki>{{</nowiki>CURRENTDAY}}</code>.\nIn fact, it expands pretty much everything in double-braces.", + "expand_templates_title": "Context title, for {{FULLPAGENAME}}, etc.:", + "expand_templates_input": "Input text:", + "expand_templates_output": "Natiija", + "expand_templates_xml_output": "XML output", + "expand_templates_html_output": "Raw HTML output", + "expand_templates_ok": "OK", + "expand_templates_remove_comments": "Comment ke hatao", + "expand_templates_remove_nowiki": "Suppress <nowiki> tags in result", + "expand_templates_generate_xml": "Show XML parse tree", + "expand_templates_generate_rawhtml": "raw HTML ke dekhao", + "expand_templates_preview": "Jhalak dekhao", + "expand_templates_preview_fail_html": "<em>Iske kaaran hai ki {{SITENAME}} me raw HTML enabled hai, preview ke lukae dewa gais hai as a precaution against JavaScript attacks.</em>\n<strong>Agar ii kanuni badlao hai, tab fir se kosis karna.</strong>\nAgar ii fir bhi kaam nai kare, tab [[Special:UserLogout|logging out]] aur logging back in ke kosis karna, aur ii check karna ki ii site ke khaatir cookies enabled hai.", + "expand_templates_preview_fail_html_anon": "<em>Iske kaaran hai ki {{SITENAME}} me raw HTML enabled hai aur aap logged in nai hai, tab preview ke lukae dewa gais hai as a precaution against JavaScript attacks.</em>\n<strong>Agar ii kanuni badlao hai, tab [[Special:UserLogin|log in]] karna aur fir se kosis karna </strong>", + "expand_templates_input_missing": "Aap ke kuchh input text de ke parri.", + "pagelanguage": "Panna ke bhasa badlo", + "pagelang-name": "Panna", + "pagelang-language": "Bhasa", + "pagelang-use-default": "Default bhasa ke use karo", + "pagelang-select-lang": "Bhasa ke chuno", + "pagelang-reason": "Kaaran", + "pagelang-submit": "Submit karo", + "pagelang-nonexistent-page": "Panna $1 nai hai.", + "pagelang-unchanged-language": "Panna $1 is already set to language $2.", + "pagelang-unchanged-language-default": "The panna $1 is already set to the wiki's default content language.", + "pagelang-db-failed": "Database panna ke bhasa ke nai badle sakis.", + "right-pagelang": "Panna ke bhasa badlo", + "action-pagelang": "panna ke bhasa badlo", + "log-name-pagelang": "Bhasa badlao ke log", + "log-description-pagelang": "Ii panna ke bhasa me badlao ke log hai.", + "logentry-pagelang-pagelang": "$1 {{GENDER:$2|changed}} the language of $3 from $4 to $5", + "default-skin-not-found": "Whoops! aap ke wiki ke khaatir default skin, defined in <code dir=\"ltr\">$wgDefaultSkin</code> as <code>$1</code>, available nai hai.\n\nYour installation seems to include the following {{PLURAL:$4|skin|skins}}. See [https://www.mediawiki.org/wiki/Manual:Skin_configuration Manual: Skin configuration] for information how to enable {{PLURAL:$4|it|them and choose the default}}.\n\n$2\n\n; If you have just installed MediaWiki:\n: You probably installed from git, or directly from the source code using some other method. This is expected. Try installing some skins from [https://www.mediawiki.org/wiki/Category:All_skins mediawiki.org's skin directory], by:\n:* Downloading the [https://www.mediawiki.org/wiki/Download tarball installer], which comes with several skins and extensions. You can copy and paste the <code>skins/</code> directory from it.\n:* Downloading individual skin tarballs from [https://www.mediawiki.org/wiki/Special:SkinDistributor mediawiki.org].\n:* [https://www.mediawiki.org/wiki/Download_from_Git#Using_Git_to_download_MediaWiki_skins Using Git to download skins].\n: Doing this should not interfere with your git repository if you're a MediaWiki developer.\n\n; If you have just upgraded MediaWiki:\n: MediaWiki 1.24 and newer no longer automatically enables installed skins (see [https://www.mediawiki.org/wiki/Manual:Skin_autodiscovery Manual: Skin autodiscovery]). You can paste the following {{PLURAL:$5|line|lines}} into <code>LocalSettings.php</code> to enable {{PLURAL:$5|the|all}} installed {{PLURAL:$5|skin|skins}}:\n\n<pre dir=\"ltr\">$3</pre>\n\n; If you have just modified <code>LocalSettings.php</code>:\n: Double-check the skin names for typos.", + "default-skin-not-found-no-skins": "Whoops! Aap ke wiki ke default skin, defined in <code>$wgDefaultSkin</code> as <code>$1</code>, available nai hai.\n\nYou have no installed skins.\n\n; If you have just installed or upgraded MediaWiki:\n: You probably installed from git, or directly from the source code using some other method. This is expected. MediaWiki 1.24 and newer doesn't include any skins in the main repository. Try installing some skins from [https://www.mediawiki.org/wiki/Category:All_skins mediawiki.org's skin directory], by:\n:* Downloading the [https://www.mediawiki.org/wiki/Download tarball installer], which comes with several skins and extensions. You can copy and paste the <code>skins/</code> directory from it.\n:* Downloading individual skin tarballs from [https://www.mediawiki.org/wiki/Special:SkinDistributor mediawiki.org].\n:* [https://www.mediawiki.org/wiki/Download_from_Git#Using_Git_to_download_MediaWiki_skins Using Git to download skins].\n: Doing this should not interfere with your git repository if you're a MediaWiki developer. See [https://www.mediawiki.org/wiki/Manual:Skin_configuration Manual: Skin configuration] for information how to enable skins and choose the default.", + "default-skin-not-found-row-enabled": "* <code>$1</code> / $2 (enabled)", + "default-skin-not-found-row-disabled": "* <code>$1</code> / $2 (<strong>disabled</strong>)", + "mediastatistics": "Media statistics", + "mediastatistics-summary": "Uploaded file types ke statistics. This only includes the most recent version of a file. Old or deleted versions of files are excluded.", + "mediastatistics-nbytes": "{{PLURAL:$1|$1 byte|$1 bytes}} ($2; $3%)$3$3$3", + "mediastatistics-bytespertype": "Total file size for this section: {{PLURAL:$1|$1 byte|$1 bytes}} ($2; $3%).", + "mediastatistics-allbytes": "Total file size for all files: {{PLURAL:$1|$1 byte|$1 bytes}} ($2).", + "mediastatistics-table-mimetype": "MIME ke rakam:", + "mediastatistics-table-extensions": "Possible extensions", + "mediastatistics-table-count": "Etnaa file hai", + "mediastatistics-table-totalbytes": "Combined size", + "mediastatistics-header-unknown": "Nai maluum", + "mediastatistics-header-bitmap": "Bitmap images", + "mediastatistics-header-drawing": "Drawings (vector images)", + "mediastatistics-header-audio": "Audio", + "mediastatistics-header-video": "Videos", + "mediastatistics-header-multimedia": "Rich media", + "mediastatistics-header-office": "Office", + "mediastatistics-header-text": "Textual", + "mediastatistics-header-executable": "Executables", + "mediastatistics-header-archive": "Compressed formats", + "mediastatistics-header-total": "Sab file", + "json-warn-trailing-comma": "$1 trailing {{PLURAL:$1|comma was|commas were}} removed from JSON", + "json-error-unknown": "JSON me kuchh garrbarr hai. Error: $1", + "json-error-depth": "Maximum stack depth ke exceed kar dewa gais hai.", + "json-error-state-mismatch": "Invalid, nai to, malformed JSON", + "json-error-ctrl-char": "Control character error, possibly incorrectly encoded", + "json-error-syntax": "Syntax me galti", + "json-error-utf8": "Malformed UTF-8 characters, possibly incorrectly encoded", + "json-error-recursion": "One or more recursive references in the value to be encoded", + "json-error-inf-or-nan": "One or more NAN or INF values in the value to be encoded", + "json-error-unsupported-type": "A value of a type that cannot be encoded was given", + "headline-anchor-title": "Ii section pe link karo", + "special-characters-group-latin": "Latin", + "special-characters-group-latinextended": "Latin extended", + "special-characters-group-ipa": "IPA", + "special-characters-group-symbols": "Symbols", + "special-characters-group-greek": "Greek", + "special-characters-group-greekextended": "Greek extended", + "special-characters-group-cyrillic": "Cyrillic", + "special-characters-group-arabic": "Arabic", + "special-characters-group-arabicextended": "Arabic extended", + "special-characters-group-persian": "Persian", + "special-characters-group-hebrew": "Hebrew", + "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": "Devanagari", + "special-characters-group-thai": "Thai", + "special-characters-group-lao": "Lao", + "special-characters-group-khmer": "Khmer", + "special-characters-title-endash": "en dash", + "special-characters-title-emdash": "em dash", + "special-characters-title-minus": "minus sign", + "mw-widgets-dateinput-no-date": "Koi date ke select nai karaa gais hai", + "mw-widgets-mediasearch-input-placeholder": "Media ke khojo", + "mw-widgets-mediasearch-noresults": "Koi result nai milaa.", + "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...", + "sessionmanager-tie": "Cannot combine multiple request authentication types: $1.", + "sessionprovider-generic": "$1 sessions", + "sessionprovider-mediawiki-session-cookiesessionprovider": "cookie-based sessions", + "sessionprovider-nocookies": "Cookies disabled hoi. Ensure you have cookies enabled and start again.", + "randomrootpage": "Random root page", + "log-action-filter-block": "Type of block:", + "log-action-filter-contentmodel": "Type of content model change:", + "log-action-filter-delete": "Type of deletion:", + "log-action-filter-import": "Type of import:", + "log-action-filter-managetags": "Type of tag management action:", + "log-action-filter-move": "Type of move:", + "log-action-filter-newusers": "Type of account creation:", + "log-action-filter-patrol": "Type of patrol:", + "log-action-filter-protect": "Type of protection:", + "log-action-filter-rights": "Type of right change:", + "log-action-filter-suppress": "Type of suppression:", + "log-action-filter-upload": "Type of upload:", + "log-action-filter-all": "Sab", + "log-action-filter-block-block": "Block", + "log-action-filter-block-reblock": "Block modification", + "log-action-filter-block-unblock": "Unblock", + "log-action-filter-contentmodel-change": "Content model ke badlao", + "log-action-filter-contentmodel-new": "Creation of page with non-default content model", + "log-action-filter-delete-delete": "Page deletion", + "log-action-filter-delete-delete_redir": "Redirect overwrite", + "log-action-filter-delete-restore": "Page undeletion", + "log-action-filter-delete-event": "Log deletion", + "log-action-filter-delete-revision": "Revision deletion", + "log-action-filter-import-interwiki": "Transwiki import", + "log-action-filter-import-upload": "Import by XML upload", + "log-action-filter-managetags-create": "Tag creation", + "log-action-filter-managetags-delete": "Tag deletion", + "log-action-filter-managetags-activate": "Tag activation", + "log-action-filter-managetags-deactivate": "Tag deactivation", + "log-action-filter-move-move": "Move without overwriting of redirects", + "log-action-filter-move-move_redir": "Move with overwriting of redirects", + "log-action-filter-newusers-create": "Creation by anonymous user", + "log-action-filter-newusers-create2": "Registered user banais hai", + "log-action-filter-newusers-autocreate": "Automatically banaawa gais hai", + "log-action-filter-newusers-byemail": "I banaawa gais hai with password sent by e-mail", + "log-action-filter-patrol-patrol": "Manual patrol", + "log-action-filter-patrol-autopatrol": "Automatic patrol", + "log-action-filter-protect-protect": "Protection", + "log-action-filter-protect-modify": "Protection modification", + "log-action-filter-protect-unprotect": "Unprotection", + "log-action-filter-protect-move_prot": "Moved protection", + "log-action-filter-rights-rights": "Manual change", + "log-action-filter-rights-autopromote": "Automatic change", + "log-action-filter-suppress-event": "Log suppression", + "log-action-filter-suppress-revision": "Revision suppression", + "log-action-filter-suppress-delete": "Page suppression", + "log-action-filter-suppress-block": "User suppression by block", + "log-action-filter-suppress-reblock": "User suppression by reblock", + "log-action-filter-upload-upload": "Nawaa upload", + "log-action-filter-upload-overwrite": "Reupload", + "authmanager-authn-not-in-progress": "Authentication progress me nai hai, nai to, session data has been lost. Please start again from the beginning.", + "authmanager-authn-no-primary": "Supplied credentials ke authenticate nai kare sakaa hai.", + "authmanager-authn-no-local-user": "Supply karaa gais credentials are not associated with any user on this wiki.", + "authmanager-authn-no-local-user-link": "Supply karaa gais credentials are valid but are not associated with any user on this wiki. Login in a different way, or create a new user, and you will have an option to link your previous credentials to that account.", + "authmanager-authn-autocreate-failed": "Auto-creation of a local account failed: $1", + "authmanager-change-not-supported": "Supply karaa gais credentials cannot be changed, as nothing would use them.", + "authmanager-create-disabled": "Nawaa account banae ke disable kar dewa gais hai.", + "authmanager-create-from-login": "Account banae ke khaatir, fields ke fill karo.", + "authmanager-create-not-in-progress": "Account creation progress me nai hai, nai to, session data has been lost. Please start again from the beginning.", + "authmanager-create-no-primary": "Supplied credentials ke account banae me nai kaam me laae sakaa.", + "authmanager-link-no-primary": "Supplied credentials ke account linking me nai kaam me laae sakaa.", + "authmanager-link-not-in-progress": "Account linking progress me nai hai, nai to, session data has been lost. Meharbaani kar ke suruu se suruu karo.", + "authmanager-authplugin-setpass-failed-title": "Pasword ke nai badle sakaa", + "authmanager-authplugin-setpass-failed-message": "The authentication plugin denied the password change.", + "authmanager-authplugin-create-fail": "The authentication plugin denied the account creation.", + "authmanager-authplugin-setpass-denied": "The authentication plugin does not allow changing passwords.", + "authmanager-authplugin-setpass-bad-domain": "Domain invalid hai.", + "authmanager-autocreate-noperm": "Automatic account creation, allowed nai hai.", + "authmanager-autocreate-exception": "Automatic account creation ke temporarily disable kar dewa gais hai, due to prior errors.", + "authmanager-userdoesnotexist": "User account \"$1\" abhi registered nai hai", + "authmanager-userlogin-remembermypassword-help": "Whether the password should be remembered for longer than the length of the session.", + "authmanager-username-help": "Authentication ke khaatir username.", + "authmanager-password-help": "Authentication ke khaatir password.", + "authmanager-domain-help": "External authentication ke khaatoir domain.", + "authmanager-retype-help": "Confirm kare ke khaatir paasword fir se likho.", + "authmanager-email-label": "Email", + "authmanager-email-help": "Email address", + "authmanager-realname-label": "Asli naam", + "authmanager-realname-help": "Sadasya ke aslii naam", + "authmanager-provider-password": "Password-based authentication", + "authmanager-provider-password-domain": "Password- and domain-based authentication", + "authmanager-provider-temporarypassword": "Kachchaa password", + "authprovider-confirmlink-message": "Abhi haali ke login attempts ke dekh ke, the following accounts can be linked to your wiki account. Linking them enables logging in via those accounts. Please select which ones should be linked.", + "authprovider-confirmlink-request-label": "Accounts, jiske link kare ke chaahi", + "authprovider-confirmlink-success-line": "$1: Linked successfully.", + "authprovider-confirmlink-failed": "Account linking nai hoe paais: $1", + "authprovider-confirmlink-ok-help": "Continue after displaying linking failure messages.", + "authprovider-resetpass-skip-label": "Skip karo", + "authprovider-resetpass-skip-help": "Resetting the password ke skip karo.", + "authform-nosession-login": "Authentication successful rahaa, but your browser cannot \"remember\" being logged in.\n\n$1", + "authform-nosession-signup": "Account ke banae dewaa gais, but your browser cannot \"remember\" being logged in.\n\n$1", + "authform-newtoken": "Missing token. $1", + "authform-notoken": "Missing token", + "authform-wrongtoken": "Wrong token", + "specialpage-securitylevel-not-allowed-title": "Not allowed", + "specialpage-securitylevel-not-allowed": "Maaf karna, app ke ii panna me aae ke ijaajat nai hai, because your identity could not be verified.", + "authpage-cannot-login": "Login ke suruu nai kare sakaa.", + "authpage-cannot-login-continue": "Unable to continue login. Your session most likely timed out.", + "authpage-cannot-create": "Account creation ke start nai kare sakaa.", + "authpage-cannot-create-continue": "Account creation ke continue nai kare saktaa. Your session most likely timed out.", + "authpage-cannot-link": "Account linking ke suruu nai kare sakaa.", + "authpage-cannot-link-continue": "Account linking ke continue nai kare saktaa. Your session most likely timed out.", + "cannotauth-not-allowed-title": "Ijaajat nai hai", + "cannotauth-not-allowed": "Aap ke ii panna ke kaam me laae ke adhikaar nai hai.", + "changecredentials": "Credentials ke badlo", + "changecredentials-submit": "Credentials ke badlo", + "changecredentials-invalidsubpage": "$1 is not a valid credential type.", + "changecredentials-success": "App ke credentials ke badal dewa gais hai.", + "removecredentials": "Credentials ke hatao", + "removecredentials-submit": "Credentials ke hatao", + "removecredentials-invalidsubpage": "$1 valid credential type nai hai.", + "removecredentials-success": "App ke credentials ke hatae dewa gais hai.", + "credentialsform-provider": "Credentials type:", + "credentialsform-account": "Account naam:", + "cannotlink-no-provider-title": "Koi linkable accounts nai hai", + "cannotlink-no-provider": "Koi linkable accounts nai hai", + "linkaccounts": "Accounts ke link karo", + "linkaccounts-success-text": "Account ke link kar dewa gais hai.", + "linkaccounts-submit": "Accounts ke link karo", + "unlinkaccounts": "Accounts ke unlink karo", + "unlinkaccounts-success": "Account ke unlink kar dewa gais hai.", + "authenticationdatachange-ignored": "Authentication data change ke handle nai karaa gais hai. Maybe no provider was configured?", + "userjsispublic": "Note karnaa: JavaScript subpages should not contain confidential data as they are viewable by other users.", + "usercssispublic": "Please note: CSS subpages should not contain confidential data as they are viewable by other users.", + "restrictionsfield-badip": "IP ke range me galti hai: $1", + "restrictionsfield-label": "Allowed IP ranges:", + "restrictionsfield-help": "One IP address or CIDR range per line. To enable everything, use:<pre>0.0.0.0/0\n::/0</pre>", + "revid": "badlao $1", + "pageid": "panna ID $1" } diff --git a/languages/i18n/hr.json b/languages/i18n/hr.json index 86f869cb9d..3101c6fc54 100644 --- a/languages/i18n/hr.json +++ b/languages/i18n/hr.json @@ -34,7 +34,8 @@ "Teoo3", "Matma Rex", "Vrhnje", - "Ivi104" + "Ivi104", + "Сербијана" ] }, "tog-underline": "Podcrtavanje poveznica", @@ -153,10 +154,10 @@ "period-am": "AM", "period-pm": "PM", "pagecategories": "{{PLURAL:$1|Kategorija|Kategorije|Kategorija}}", - "category_header": "Stranice u kategoriji \"$1\"", + "category_header": "Stranice u kategoriji »$1«", "subcategories": "Potkategorije", - "category-media-header": "Mediji u kategoriji \"$1\":", - "category-empty": "''U ovoj kategoriji trenutačno nema članaka ni medija.''", + "category-media-header": "Mediji u kategoriji »$1«", + "category-empty": "<em>U ovoj kategoriji trenutačno nema članaka ni medija.</em>", "hidden-categories": "{{PLURAL:$1|Skrivena kategorija|Skrivene kategorije|Skrivenih kategorija}}", "hidden-category-category": "Skrivene kategorije", "category-subcat-count": "Ova kategorija sadrži $2 {{PLURAL:$2|podkategoriju|podkategorije|podkategorija}}, ovaj popis prikazuje $1.", @@ -199,8 +200,9 @@ "searchbutton": "Traži", "go": "Kreni", "searcharticle": "Kreni", - "history": "Stare izmjene", + "history": "Povijest stranice", "history_short": "Stare izmjene", + "history_small": "stare izmjene", "updatedmarker": "obnovljeno od posljednjeg posjeta", "printableversion": "Inačica za ispis", "permalink": "Trajna poveznica", @@ -233,7 +235,8 @@ "views": "Pogledi", "toolbox": "Pomagala", "tool-link-userrights": "Promijeni {{GENDER:$1|suradnikove|suradničine}} grupe", - "tool-link-emailuser": "PoÅ¡alji e-poÅ¡tu {{GENDER:$1|suradniku|suradnici}}", + "tool-link-userrights-readonly": "Vidi {{GENDER:$1|suradnikovu|suradničinu|suradničku}} pripadnost skupinama", + "tool-link-emailuser": "PoÅ¡alji {{GENDER:$1|suradniku|suradnici}} e-poruku", "userpage": "Vidi suradnikovu stranicu", "projectpage": "Vidi stranicu o projektu", "imagepage": "Vidi stranicu datoteke", @@ -246,7 +249,7 @@ "redirectedfrom": "(Preusmjereno s $1)", "redirectpagesub": "Preusmjeravanje", "redirectto": "Preusmjerava na:", - "lastmodifiedat": "Ova stranica posljednji put je izmjenjena $1 u $2.", + "lastmodifiedat": "Ova stranica posljednji je put izmijenjena $1 u $2.", "viewcount": "Ova stranica je pogledana {{PLURAL:$1|$1 put|$1 puta}}.", "protectedpage": "ZaÅ¡tićena stranica", "jumpto": "Skoči na:", @@ -275,7 +278,7 @@ "portal-url": "Project:Portal zajednice", "privacy": "ZaÅ¡tita privatnosti", "privacypage": "Project:ZaÅ¡tita privatnosti", - "badaccess": "PogreÅ¡ka u ovlaÅ¡tenjima", + "badaccess": "PogrjeÅ¡ka u ovlastima", "badaccess-group0": "Nije Vam dopuÅ¡teno izvrÅ¡iti ovaj zahvat.", "badaccess-groups": "Ovaj zahvat mogu izvrÅ¡iti samo suradnici iz {{PLURAL:$2|skupine|jedne od skupina}}: $1.", "versionrequired": "Potrebna inačica $1 MediaWikija", @@ -285,7 +288,7 @@ "youhavenewmessages": "Imate $1 ($2).", "youhavenewmessagesfromusers": "Imate $1 {{PLURAL:$3||od $3 suradnika|od $3 suradnika}} ($2).", "youhavenewmessagesmanyusers": "Imate $1 od viÅ¡e suradnika ($2).", - "newmessageslinkplural": "{{PLURAL:$1|novu poruku|$1 nove poruke|999=novih poruka}}", + "newmessageslinkplural": "{{PLURAL:$1|novu poruku|999=nove poruke}}", "newmessagesdifflinkplural": "{{PLURAL:$1|posljednje uređivanje|posljednja $1 uređivanja|posljednjih $1 uređivanja}} na stranici za razgovor", "youhavenewmessagesmulti": "Imate nove poruke na $1", "editsection": "uredi", @@ -297,8 +300,8 @@ "toc": "Sadržaj", "showtoc": "prikaži", "hidetoc": "sakrij", - "collapsible-collapse": "sklopi stablo", - "collapsible-expand": "raÅ¡iri stablo", + "collapsible-collapse": "sklopi", + "collapsible-expand": "raÅ¡iri", "confirmable-confirm": "Jeste li sigurni?", "confirmable-yes": "Da", "confirmable-no": "Ne", @@ -404,7 +407,7 @@ "virus-scanfailed": "skeniranje neuspjeÅ¡no (kod $1)", "virus-unknownscanner": "nepoznati antivirus:", "logouttext": "'''Odjavili ste se.'''\n\nNeke se stranice mogu prikazivati kao da ste joÅ¡ uvijek prijavljeni, sve dok ne očistite međuspremnik svog preglednika.", - "cannotlogoutnow-title": "Odjava trenutno nije moguća.", + "cannotlogoutnow-title": "Odjava trenutno nije moguća", "cannotlogoutnow-text": "Odjava nije moguća tijekom uporabe $1.", "welcomeuser": "DobrodoÅ¡li, $1!", "welcomecreation-msg": "VaÅ¡ je suradnički račun otvoren.\nNe zaboravite prilagoditi VaÅ¡e [[Special:Preferences|{{SITENAME}} postavke]].", @@ -432,22 +435,16 @@ "login": "Prijavi se", "login-security": "Potvrdite svoj identitet", "nav-login-createaccount": "Prijavi se", - "userlogin": "Prijavi se / stvori račun", - "userloginnocreate": "Prijavi se", "logout": "Odjavi se", "userlogout": "Odjavi se", "notloggedin": "Niste prijavljeni", "userlogin-noaccount": "Nemate suradnički račun?", "userlogin-joinproject": "Pridružite se {{SITENAME}}", - "nologin": "Nemate suradnički račun? $1.", - "nologinlink": "Otvorite račun", "createaccount": "Otvori novi suradnički račun", - "gotaccount": "Već imate suradnički račun? '''$1'''.", - "gotaccountlink": "Prijavite se", - "userlogin-resetlink": "Zaboravili ste detalje vaÅ¡e prijave?", "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-createanother": "Stvori joÅ¡ jedan račun", "createacct-emailrequired": "Adresa e-poÅ¡te", "createacct-emailoptional": "Adresa e-poÅ¡te", @@ -455,11 +452,12 @@ "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", "createacct-realname": "Stvarno ime (neobvezatno)", - "createaccountreason": "Razlog:", "createacct-reason": "Razlog", "createacct-reason-ph": "ZaÅ¡to stvarate drugi račun", "createacct-submit": "Stvorite svoj suradnički račun", "createacct-another-submit": "Otvori račun", + "createacct-continue-submit": "Pritisni za stvaranje računa", + "createacct-another-continue-submit": "Nastavi za stvaranje računa", "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}}", @@ -494,7 +492,7 @@ "eauthentsent": "Na navedenu adresu poslana je e-poruka s potvrdom.\nPrije nego Å¡to poÅ¡aljemo daljnje poruke, molimo Vas otvorite e-poruku i slijedite u njemu sadržana uputstva kako biste potvrdili da je adresa e-poÅ¡te zaista VaÅ¡a.", "throttled-mailpassword": "Već Vam je poslan e-mail za promjenu zaporke, u {{PLURAL:$1|posljednjih sat vremena|posljednja $1 sata|posljednjih $1 sati}}.\nDa bi spriječili zloupotrebu, moguće je poslati samo jedan e-mail za promjenu zaporke {{PLURAL:$1|svakih sat vremena|svaka $1 sata|svakih $1 sati}}.", "mailerror": "PogrjeÅ¡ka pri slanju e-poÅ¡te: $1", - "acct_creation_throttle_hit": "Posjetitelji ovog wikija koji rabe VaÅ¡u IP adresu napravili su {{PLURAL:$1|1 račun|$1 računa}} u posljednjem danu, Å¡to je najveći dopuÅ¡teni broj u tom vremenskom razdoblju.\nZbog toga posjetitelji s ove IP adrese trenutačno ne mogu otvoriti nove suradničke račune.", + "acct_creation_throttle_hit": "Posjetitelji ovog wikija koji rabe VaÅ¡u IP adresu napravili su {{PLURAL:$1|1 račun|$1 računa}} u posljednjih $2, Å¡to je najveći dopuÅ¡teni broj u tom vremenskom razdoblju.\nZbog toga posjetitelji s ove IP adrese trenutačno ne mogu otvoriti nove suradničke račune.", "emailauthenticated": "VaÅ¡a adresa e-poÅ¡te potvrđena je $2 u $3.", "emailnotauthenticated": "VaÅ¡a adresa e-poÅ¡te joÅ¡ nije potvrđena.\nNe možemo poslati e-poruku ni u jednoj od sljedećih naredbi.", "noemailprefs": "Nije navedena adresa elektroničke poÅ¡te, stoga sljedeće naredbe ne će raditi.", @@ -514,6 +512,7 @@ "createacct-another-realname-tip": "Pravo ime nije obvezno. \nAko ga navedete, bit će koriÅ¡teno za pripisivanje VaÅ¡ih doprinosa.", "pt-login": "Prijavi se", "pt-login-button": "Prijavi se", + "pt-login-continue-button": "Nastavi prijavu", "pt-createaccount": "Otvori novi suradnički račun", "pt-userlogout": "Odjavi se", "php-mail-error-unknown": "Nepoznata pogrjeÅ¡ka u funkciji PHP-poruke()", @@ -546,6 +545,10 @@ "botpasswords-bad-appid": "Ime bota \"$1\" nije valjano.", "botpasswords-insert-failed": "Nije moguće dodavanje imena bota \"$1\". Možda je već dodano?", "botpasswords-update-failed": "Nije moguće ažurirati bot s imenom \"$1\". Možda je izbrisan?", + "botpasswords-created-title": "Stvorena bot zaporka", + "botpasswords-updated-title": "Zaporka za VaÅ¡eg bota obnovljena je", + "botpasswords-updated-body": "Zaporka za bota imena »$1« suradnika »$2« obnovljena je.", + "botpasswords-deleted-title": "Zaporka je za VaÅ¡eg bota uklonjena", "resetpass_forbidden": "Zaporka ne može biti promijenjena", "resetpass-no-info": "Morate biti prijavljeni da biste izravno pristupili ovoj stranici.", "resetpass-submit-loggedin": "Promijeni zaporku", @@ -571,15 +574,18 @@ "passwordreset-emailtext-user": "Suradnik $1 na {{SITENAME}} zatražio je podsjetnik o pojedinostima vaÅ¡eg računa za {{SITENAME}}\n($4). Sljedeći {{PLURAL:$3|račun suradnika je|računi suradnika su}} povezani s ovom e-mail adresom:\n\n$2\n\n{{PLURAL:$3|Ova privremena zaporka|Ove privremene zaporke}} će isteći u {{PLURAL:$5|jedan dan|$5 dana}}.\nTrebate se prijaviti i odabrati novu zaporku. Ukoliko je netko drugi napravio ovaj\nzahtjev, ili ako ste se sjetili VaÅ¡e izvorne zaporke, a viÅ¡e je ne želite promijeniti, \nmožete zanemariti ovu poruku i nastavite koristiti staru zaporku.", "passwordreset-emailelement": "Suradničko ime: \n$1\n\nPrivremena zaporka: \n$2", "passwordreset-emailsentemail": "Ako je ova adresa povezana s VaÅ¡im suradničkim računom, na nju će biti poslan podsjetnik na zaporku.", + "passwordreset-invalidemail": "Nevaljala adresa e-poÅ¡te", "changeemail": "Promijeni ili izbriÅ¡i e-mail adresu", - "changeemail-header": "Promijeni adresu e-poÅ¡te računa", + "changeemail-header": "Ispunite ovaj obrazac da biste promijenili svoju adresu e-poÅ¡te. Ukoliko želite ukloniti povezanost svoje adrese e-poÅ¡te i suradničkoga računa, prilikom popunjavanja obrasca ostavite prazno polje umjesto upisivanja nove adrese e-poÅ¡te.", "changeemail-no-info": "Morate biti prijavljeni da biste izravno pristupili ovoj stranici.", "changeemail-oldemail": "Trenutačna adresa e-poÅ¡te:", "changeemail-newemail": "Nova adresa e-poÅ¡te:", + "changeemail-newemail-help": "Ako želite izbrisati adresu VaÅ¡e e-poÅ¡te, ostavite ovo polje praznim. U tom slučaju, nećete biti u mogućnosti ponovno postaviti zaboravljenu zaporku i nećete moći primati e-poÅ¡tu s ovog wikija.", "changeemail-none": "(niÅ¡ta)", "changeemail-password": "Zaporka za projekt {{SITENAME}}:", - "changeemail-submit": "Promijeni E-mail", + "changeemail-submit": "Promijeni e-mail", "changeemail-throttled": "Nedavno ste se previÅ¡e puta pokuÅ¡ali prijaviti.\nMolimo Vas pričekajte $1 prije nego Å¡to pokuÅ¡ate ponovno.", + "changeemail-nochange": "Molimo vas, upiÅ¡ite neku novu adresu e-poÅ¡te.", "bold_sample": "Podebljani tekst", "bold_tip": "Podebljani tekst", "italic_sample": "Kurzivni tekst", @@ -603,7 +609,7 @@ "minoredit": "Ovo je manja promjena", "watchthis": "Prati ovu stranicu", "savearticle": "Sačuvaj stranicu", - "savechanges": "Spremi promjene", + "savechanges": "Sačuvaj stranicu", "publishpage": "Objavi stranicu", "publishchanges": "Objavi izmjene", "preview": "Pregled kako će stranica izgledati", @@ -615,9 +621,10 @@ "missingsummary": "'''Podsjetnik:''' Niste unijeli sažetak promjena. Ako ponovno kliknete na \"Sačuvaj stranicu\", VaÅ¡e će promjene biti snimljene bez sažetka.", "selfredirect": "<strong>Upozorenje:</strong> Stvarate preusmjeravanje na isti članak.\nMožda ste izabrali pogrjeÅ¡nu odrediÅ¡nu stranicu za preusmjeravanje ili uređujete pogrjeÅ¡nu stranicu.\nAko pritisnete na \"{{int:savearticle}}\" joÅ¡ jednom, preusmjeravanje će svejedno biti stvoreno.", "missingcommenttext": "Molim unesite sažetak.", - "missingcommentheader": "'''Podsjetnik:''' Niste napisali sažetak ovog komentara. Ako ponovno kliknete \"{{int:savearticle}}\", VaÅ¡ će komentar biti snimljen bez sažetka.", - "summary-preview": "Pregled sažetka:", - "subject-preview": "Pregled predmeta:", + "missingcommentheader": "<strong>Podsjetnik:</strong> Niste napisali sažetak ovoga komentara. Ukoliko ponovo kliknete \"{{int:savearticle}}\", VaÅ¡ će komentar biti snimljen bez sažetka.", + "summary-preview": "Pregled polja Sažetak:", + "subject-preview": "Pregled teme:", + "previewerrortext": "Pri pokuÅ¡aju prikazivanja pretpregleda vaÅ¡ih promjena doÅ¡lo je do pogrjeÅ¡ke.", "blockedtitle": "Suradnik je blokiran", "blockedtext": "'''VaÅ¡e suradničko ime ili IP adresa je blokirana'''\n\nBlokirao Vas je $1.\nRazlog blokiranja je sljedeći: ''$2''.\n\n* Početak blokade: $8\n* Istek blokade: $6\n* Ime blokiranog suradnika: $7\n\nMožete kontaktirati $1 ili jednog od [[{{MediaWiki:Grouppage-sysop}}|administratora]] kako bi Vam pojasnili razlog blokiranja.\n\nPrimijetite da ne možete koristiti opciju \"PoÅ¡alji mu e-poruku\" ako niste upisali valjanu adresu e-poÅ¡te u VaÅ¡im [[Special:Preferences|suradničkim postavkama]] i ako niste u tome onemogućeni prilikom blokiranja.\n\nVaÅ¡a trenutačna IP adresa je $3, a oznaka bloka #$5. Molimo navedite ovaj broj kod svakog upita vezano za razlog blokiranja.", "autoblockedtext": "VaÅ¡a IP adresa automatski je blokirana zbog toga Å¡to ju je koristio drugi suradnik, kojeg je blokirao $1.\nRazlog blokiranja je sljedeći:\n\n:''$2''\n\n* Početak blokade: $8\n* Blokada istječe: $6\n* Ime blokiranog suradnika: $7\n\nMožete kontaktirati $1 ili jednog od [[{{MediaWiki:Grouppage-sysop}}|administratora]] kako bi Vam pojasnili razlog blokiranja.\n\nPrimijetite da ne možete rabiti opciju \"PoÅ¡alji mu e-poruku\" ako niste upisali valjanu adresu e-poÅ¡te u VaÅ¡im [[Special:Preferences|suradničkim postavkama]] i ako niste u tome onemogućeni prilikom blokiranja.\n\nVaÅ¡a trenutačna IP adresa je $3, a oznaka bloka #$5. Molimo navedite ovaj broj kod svakog upita vezano za razlog blokiranja.", @@ -670,6 +677,7 @@ "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.<br />\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!'''", "copyrightwarning2": "Molimo uočite da svi suradnici mogu mijenjati sve doprinose na {{SITENAME}}. Ako ne želite da se VaÅ¡e pisanje nemilosrdno uređuje, nemojte ga slati ovdje.<br /> Takođ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 (vidi $1 za detalje). '''NE POSTAVLJAJTE RADOVE ZAÅ TIĆENE AUTORSKIM PRAVIMA BEZ DOPUÅ TENJA!'''", + "editpage-cannot-use-custom-model": "Model sadržaja ove stranice ne može se mijenjati.", "longpageerror": "'''PogrjeÅ¡ka: Tekst koji ste unijeli dug je {{PLURAL:$1|jedan kilobajt|$1 kilobajta}}, Å¡to je viÅ¡e od maksimalno {{PLURAL:$2|jednog kilobajta|$2 kilobajta}}.'''\nNije ga moguće snimiti.", "readonlywarning": "'''UPOZORENJE: Baza podataka je zaključana zbog održavanja, pa trenutačno ne možete sačuvati svoje\npromjene. Najbolje je da kopirate i zaljepite tekst u tekstualnu datoteku te je snimite za kasnije.'''\n\nAdministrator je zaključao bazu iz razloga: $1", "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:", @@ -682,14 +690,14 @@ "template-protected": "(zaÅ¡tićen)", "template-semiprotected": "(djelomično zaÅ¡tićen)", "hiddencategories": "Ova stranica je član {{PLURAL:$1|1 skrivene kategorije|$1 skrivene kategorije|$1 skrivenih kategorija}}:", - "edittools": "<!-- Ovaj će tekst biti prikazan ispod obrasca za uređivanje i postavljanje. -->", + "edittools": "<div id=\"specialcharss\" class=\"toccolours specialchars\" style=\"margin-top:.5em; padding: .3em .5em; font-size: 100%; color:#aaa; text-align:left;\" title=\"{{int:bw-edittools-tooltip}}\">\n<p class=\"specialbasic\" id=\"Standard\">\n'''{{int:bw-edittools-lead-in}}''' \n<charinsert>Á á É é Í í Ó ó Ú ú Ý ý</charinsert> –\n<charinsert>À à È è Ì ì Ò ò Ù ù </charinsert> –\n<charinsert> â Ê ê Î î Ô ô Û û </charinsert> –\n<charinsert>Ä ä Ë ë Ï ï Ö ö Ü ü Ÿ ÿ</charinsert> –\n<charinsert>Æ æ Ø ø Œ œ ẞ ß </charinsert> –\n<charinsert>Šå Å® ů </charinsert> –\n<charinsert>à ã Ẽ ẽ ɛ̃ Ĩ Ä© Ñ ñ Õ õ ɔ̃ Ũ Å© </charinsert> –\n<charinsert>Ð ð Þ þ </charinsert> –\n<charinsert>Ç ç Ä¢ Ä£ Ķ Ä· Ä» ļ Ņ ņ Ŗ ŗ Ş ş Å¢ Å£ </charinsert> –\n<charinsert>Ć ć Ĺ ĺ Ń ń Ŕ ŕ Ś ś Ý ý Ź ź </charinsert> –\n<charinsert>Č č Ď ď Ľ ľ Ň ň Ř ř Å  Å¡ Ť Å¥ Ž ž </charinsert> –\n<charinsert>Ǎ ǎ Ě ě Ǐ ǐ Ǒ ǒ Ǔ ǔ </charinsert> –\n<charinsert>Ā ā Ē ē Ī Ä« Ō ō Ū Å« </charinsert> –\n<charinsert>ǖ ǘ ǚ ǜ </charinsert> –\n<charinsert>Ĉ ĉ Ĝ ĝ Ĥ Ä¥ Ä´ ĵ Ŝ ŝ Å´ ŵ Ŷ Å· </charinsert> –\n<charinsert>Ă ă Ğ ğ Ŭ Å­ </charinsert> –\n<charinsert>Ċ ċ Ė ė Ä  Ä¡ Għ għ Ä° ı Å» ż </charinsert> –\n<charinsert>Ą ą Ę ę Ä® į Ų ų </charinsert> –\n<charinsert>Ő ő Å° ű </charinsert> –\n<charinsert>Đ đ Ħ ħ Ł ł Ä¿ ŀ </charinsert> –\n<charinsert>Ɖ ɖ Ɛ ɛ Ƒ ƒ Ɣ É£ Ŋ ŋ Ɔ ɔ Ʋ ʋ </charinsert> -\n<charinsert>Ə ə </charinsert> –\n<charinsert>– — ’</charinsert> –\n<charinsert>~ | ° ¹ ² ³ ⅛ ¼ ⅓ ⅜ ½ ⅝ ¾ ⅔ ⅞ € $ Â¥ £ † × ← → ↔ ↑ ± ≠ © ® ™ ‰ »+« ›+‹ „+” ‚+’ ‚+‘ „+“ ¡ ¿ …</charinsert> –\n<charinsert>&nbsp;   #REDIRECT {{msg-mw|+|notext=1}} !!FUZZY!! ~~~~ <nowiki>+</nowiki></charinsert>\n<charinsert>ڈ ڑ Ù¹ </charinsert>\n<charinsert>Ù¼ څ ځ ډ ړ ږ ښ Ú¼ ؤ ي ې ۍ ئ </charinsert>\n<charinsert>{{{+}}} {{+}} {{subst:+}} <noinclude>+</noinclude></charinsert>\n<charinsert><!-- + --> <br /></charinsert>\n</p></div>", "nocreatetext": "Na ovom je projektu ograničeno otvaranje novih stranica.\nMožete se vratiti i uređivati već postojeće stranice ili se [[Special:UserLogin|prijaviti ili otvoriti suradnički račun]].", "nocreate-loggedin": "Nemate ovlasti za stvaranje novih stranica.", "sectioneditnotsupported-title": "Uređivanje odjeljka nije podržano", "sectioneditnotsupported-text": "Uređivanje odjeljka nije podržano na ovoj stranici", - "permissionserrors": "PogreÅ¡ka u pravima", + "permissionserrors": "PogrjeÅ¡ka u pravima", "permissionserrorstext": "Nemate ovlasti za tu radnju iz sljedećih {{PLURAL:$1|razlog|razloga}}:", - "permissionserrorstext-withaction": "Nemate dopuÅ¡tenje za $2, iz {{PLURAL:$1|razloga|razloga}}:", + "permissionserrorstext-withaction": "Nemate dopuÅ¡tenje za $2, iz {{PLURAL:$1|navedenog|navedenih}} razloga:", "recreate-moveddeleted-warn": "'''Upozorenje: Ponovno stvarate stranicu koja je prethodno bila izbrisana.'''\n\nRazmotrite je li prikladno nastaviti s uređivanje ove stranice.\nZa VaÅ¡u informaciju slijedi evidencija brisanja i premjeÅ¡tanja ove stranice:", "moveddeleted-notice": "Ova stranica je bila izbrisana.\nEvidencija brisanja i evidencija premjeÅ¡tanja za ovu stranicu je prikazana niže.", "moveddeleted-notice-recent": "Žao nam je, ova stranica je izbrisana u proÅ¡la 24 sata. \nNiže je navedena evidencija brisanja i premjeÅ¡tanja.", @@ -714,6 +722,7 @@ "content-json-empty-object": "Prazan objekt", "content-json-empty-array": "Prazno polje", "duplicate-args-warning": "<strong>Upozorenje:</strong> [[:$1]] poziva na [[:$2]] s viÅ¡e od jedne vrijednosti za parametar \"$3\". Rabit će se samo posljednja navedena vrijednost.", + "duplicate-args-category": "Stranice u kojima se ponavljaju argumenti u predloÅ¡cima", "expensive-parserfunction-warning": "Upozorenje: Ova stranica sadrži previÅ¡e opterećujućih poziva parserskih funkcija\n\nTrebala bi imati manje od $2 {{PLURAL:$2|poziva|poziva}}, sada ima {{PLURAL:$1|$1 poziv|$1 poziva}}.", "expensive-parserfunction-category": "Stranice s previÅ¡e poziva opterećujućih parserskih funkcija", "post-expand-template-inclusion-warning": "Upozorenje: Veličina uključenih predložaka je prevelika.\nNeki predloÅ¡ci neće biti uključeni.", @@ -750,7 +759,7 @@ "last": "pret", "page_first": "prva", "page_last": "zadnja", - "histlegend": "Uputa: (sad) = razlika od trenutačne inačice,\n(pret) = razlika od prethodne inačice, m = manja promjena", + "histlegend": "Izbor za usporedbu: označi kružiće pokraj dvije inačice koje želiÅ¡ usporediti i pritisni \"Enter\" ili tipku na dnu.<br />\nUputa: <strong>({{int:cur}})</strong> = razlika od trenutačne inačice, <strong>({{int:last}})</strong> = razlika od prethodne inačice, <strong>{{int:minoreditletter}}</strong> = manja promjena.", "history-fieldset-title": "Pretraži povijest", "history-show-deleted": "Samo izbrisane", "histfirst": "najstarije", @@ -761,6 +770,7 @@ "history-feed-description": "Povijest promjena ove stranice na wikiju", "history-feed-item-nocomment": "$1 u (test) $2", "history-feed-empty": "Tražena stranica ne postoji.\nStranica je vjerojatno prethodno izbrisana s wikija, ili preimenovana.\nPokuÅ¡ajte [[Special:Search|pretražiti]] važnije nove stranice na wikiju.", + "history-edit-tags": "Uredi oznake označenih izmjena", "rev-deleted-comment": "(komentar uklonjen)", "rev-deleted-user": "(suradničko ime uklonjeno)", "rev-deleted-event": "(zapis uklonjen)", @@ -784,8 +794,8 @@ "revdelete-no-file": "Navedena datoteka ne postoji.", "revdelete-show-file-confirm": "Jeste li sigurni da želite pregledati izbrisanu inačicu datoteke \"<nowiki>$1</nowiki>\" od $2 u $3?", "revdelete-show-file-submit": "Da", - "revdelete-selected-text": "{{PLURAL:$1|Označena izmjena|Označene izmjene}} stranice [[:$2]]:", - "revdelete-selected-file": "{{PLURAL:$1|Označena inačica|Označene inačice}} datoteke [[:$2]]:", + "revdelete-selected-text": "{{PLURAL:$1|Označena izmjena|Označene izmjene|Označenih izmjena}} stranice [[:$2]]:", + "revdelete-selected-file": "{{PLURAL:$1|Označena inačica|Označene inačice|Označenih inačica}} datoteke [[:$2]]:", "logdelete-selected": "{{PLURAL:$1|Odabrani zapis u evidenciji|Odabrani zapisi u evidenciji}}:", "revdelete-text-text": "Izbrisane izmjene će i dalje biti vidljive u povijesti stranice, ali dijelovi sadržaja neće biti javno vidljivi.", "revdelete-text-file": "Izbrisane inačice datoteke će i dalje biti vidljive u povijesti datoteke, ali neki dijelovi sadržaja neće biti javno vidljivi.", @@ -840,6 +850,7 @@ "mergehistory-empty": "Nema spojivih promjena (spajanje nije moguće).", "mergehistory-done": "$3 {{PLURAL:$3|izmjena|izmjene}} stranice $1 uspjeÅ¡no {{PLURAL:$3|spojena|spojene}} u povijest stranice [[:$2]].", "mergehistory-fail": "Nemoguće spojiti povijest stranica, molimo provjerite stranice i vremenske parametre.", + "mergehistory-fail-bad-timestamp": "Oznaka vremena nije valjana.", "mergehistory-no-source": "Izvorna stranica $1 ne postoji.", "mergehistory-no-destination": "Ciljna stranica $1 ne postoji.", "mergehistory-invalid-source": "Izvorna stranica mora imati valjani naziv.", @@ -851,8 +862,8 @@ "mergelog": "Evidencija spajanja povijesti stranica", "revertmerge": "Razdvoji", "mergelogpagetext": "Slijedi popis posljednjih spajanja povijesti stranica.", - "history-title": "Povijest izmjena stranice \"$1\"", - "difference-title": "Razlika između inačica stranice $1", + "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-multipage": "(Razlika između stranica)", "lineno": "Redak $1:", @@ -924,7 +935,7 @@ "prefs-labs": "Labs mogućnosti", "prefs-user-pages": "Suradničke stranice", "prefs-personal": "Podaci o suradniku", - "prefs-rc": "Nedavne promjene i kratki članci", + "prefs-rc": "Nedavne promjene", "prefs-watchlist": "Praćene stranice", "prefs-editwatchlist": "Uredi popis praćenja", "prefs-editwatchlist-label": "Uredi stavke na popisu praćenja:", @@ -944,7 +955,7 @@ "prefs-rendering": "Izgled", "saveprefs": "Spremi", "restoreprefs": "Vrati sve postavke na prvotno zadane", - "prefs-editing": "Å irina okvira za uređivanje", + "prefs-editing": "Uređivanje", "searchresultshead": "Prikaz rezultata pretrage", "stub-threshold": "Prag za formatiranje poveznice na mrve ($1):", "stub-threshold-disabled": "Onemogućeno", @@ -993,10 +1004,10 @@ "prefs-help-signature": "Komentari na stranicama za razgovor trebali bi biti potpisani s \"<nowiki>~~~~</nowiki>\" Å¡to će biti pretvoreno u VaÅ¡ potpis i datum.", "badsig": "Kôd VaÅ¡eg potpisa nije valjan; provjerite HTML tagove.", "badsiglength": "VaÅ¡ potpis je predugačak.\nNe smije biti duži od $1 {{PLURAL:$1|znaka|znaka|znakova}}.", - "yourgender": "Spol:", - "gender-unknown": "Neodređeni", - "gender-male": "MuÅ¡ki", - "gender-female": "Ženski", + "yourgender": "Na koji način želite da Vam se ostali suradnici obraćaju?", + "gender-unknown": "Kad Vas se spominje, programska će oprema pokuÅ¡ati upotrijebiti srednji rod kad god je to moguće.", + "gender-male": "Uređivač sam wikistranica.", + "gender-female": "Uređivačica sam wikistranica.", "prefs-help-gender": "Mogućnost softvera da ispravno oslovljava razlikujući spol. Ovaj će podatak biti javan.", "email": "Adresa elektroničke poÅ¡te *", "prefs-help-realname": "Pravo ime nije obvezno. Ako ga navedete, može biti rabljeno za pripisivanje VaÅ¡ih doprinosa.", @@ -1027,21 +1038,22 @@ "editusergroup": "Učitaj suradničke skupine", "editinguser": "Promjena suradničkih prava {{GENDER:$1|suradnika|suradnice}} <strong>[[User:$1|$1]]</strong> $2", "viewinguserrights": "Pregled suradničkih prava {{GENDER:$1|suradnika|suradnice}} <strong>[[User:$1|$1]]</strong> $2", - "userrights-editusergroup": "Uredi suradničke skupine", - "userrights-viewusergroup": "Pregled suradničkih skupina", + "userrights-editusergroup": "Uredi {{GENDER:$1|suradničke}} skupine", + "userrights-viewusergroup": "Vidi {{GENDER:$1|suradničke}} skupine", "saveusergroups": "Spremi {{GENDER:$1|suradničke}} grupe", - "userrights-groupsmember": "Član:", - "userrights-groupsmember-auto": "Uključeni član:", - "userrights-groups-help": "Možete promijeniti skupine za ovog suradnika:\n* označena kućica pokazuje skupinu kojoj suradnik pripada;\n* neoznačena kućica pokazuje skupinu kojoj suradnik ne pripada;\n* zvjezdica (*) označava skupinu koju ne možete ukloniti kad ju jednom dodate, ili obratno.", + "userrights-groupsmember": "{{GENDER:$2|Pripadnik|Pripadnica}} skupina:", + "userrights-groupsmember-auto": "{{GENDER:$2|Pripadnik|Pripadnica}} obuhvaćenih skupina:", + "userrights-groups-help": "Možete promijeniti skupine za ovog suradnika:\n* označena kućica pokazuje skupinu kojoj suradnik pripada;\n* neoznačena kućica pokazuje skupinu kojoj suradnik ne pripada;\n* zvjezdica (*) označava skupinu koju ne možete ukloniti kad ju jednom dodate, ili obratno.\n* povisilica (#) označava da rok valjanosti pripadanja skupini možete samo skratiti, a ne i produljiti", "userrights-reason": "Razlog:", "userrights-no-interwiki": "Nemate dopuÅ¡tenje za uređivanje suradničkih prava na drugim wikijima.", "userrights-nodatabase": "Baza podataka $1 ne postoji ili nije lokalno dostupna.", "userrights-changeable-col": "Skupine koje možete promijeniti", "userrights-unchangeable-col": "Skupine koje ne možete promijeniti", + "userrights-expiry-none": "Neograničeno trajanje statusa", "userrights-conflict": "Sukob promjene suradničkih prava! Molimo provjerite i potvrdite svoje promjene.", "group": "Skupina:", "group-user": "Suradnici", - "group-autoconfirmed": "automatski potvrđeni suradnici", + "group-autoconfirmed": "Automatski potvrđeni suradnici", "group-bot": "Botovi", "group-sysop": "Administratori", "group-bureaucrat": "Birokrati", @@ -1068,6 +1080,7 @@ "right-move": "PremjeÅ¡tanje stranica", "right-move-subpages": "PremjeÅ¡tanje stranica s njihovim podstranicama", "right-move-rootuserpages": "PremjeÅ¡tanje osnovne stranice suradnika", + "right-move-categorypages": "premjeÅ¡tanja kategorizacijskih stranica", "right-movefile": "PremjeÅ¡tanje datoteka", "right-suppressredirect": "Ne raditi preusmjeravanje od starog imena prilikom premjeÅ¡tanja stranice", "right-upload": "Postavljanje datoteka", @@ -1097,8 +1110,8 @@ "right-ipblock-exempt": "Iznimka od blokiranja IP adresa, auto-bloka i blokiranja opsega", "right-unblockself": "Odblokirati se", "right-protect": "Mijenjanje razina zaÅ¡tićivanja i uređivanje zaÅ¡tićenih stranica", - "right-editprotected": "Uređivanje zaÅ¡tićenih stranica (bez prenosive zaÅ¡tite)", - "right-editsemiprotected": "Uređivanje zaÅ¡tićenih stranica kao \"{{int: zaÅ¡tititi-nivo-autoconfirmed}}\"", + "right-editprotected": "Uređivanje stranica zaÅ¡tićenih kao \"{{int:protect-level-sysop}}\"", + "right-editsemiprotected": "Uređivanje stranica zaÅ¡tićenih kao \"{{int:protect-level-autoconfirmed}}\"", "right-editinterface": "Uređivanje suradničkog sučelja", "right-editusercssjs": "Uređivanje CSS i JS stranica drugih suradnika", "right-editusercss": "Uređivanje CSS stranica drugih suradnika", @@ -1116,7 +1129,7 @@ "right-import": "Uvoženje stranica s drugih wikija", "right-importupload": "Uvoženje stranica kao datoteke", "right-patrol": "Označavanje izmjena pregledanim", - "right-autopatrol": "Izmjene su automatski označene kao pregledane", + "right-autopatrol": "Izmjene su automatski označene kao ophođene", "right-patrolmarks": "Vidljive oznake pregledavanja u nedavnim promjenama", "right-unwatchedpages": "Vidljiv popis nepraćenih stranica", "right-mergehistory": "Spajanje povijesti stranica", @@ -1128,11 +1141,13 @@ "grant-group-email": "PoÅ¡alji e-mail", "grant-blockusers": "Blokiraj i odblokiraj korisnike", "grant-createaccount": "Otvori račune", - "grant-createeditmovepage": "Stvori, uredi i premjesti stranice", + "grant-createeditmovepage": "Stvaranje, uređivanje i premjeÅ¡tanje stranica", "grant-editmyoptions": "Uređivanje vlastitih suradničkih postavki", "grant-editpage": "Uređivanje postojećih stranica", "grant-editprotected": "Uređivanje zaÅ¡tićenih stranica", "grant-highvolume": "Uređivanja velikog opsega", + "grant-uploadeditmovefile": "Postavljanje, zamjena i premjeÅ¡tanje datoteka", + "grant-uploadfile": "Postavljanje novih datoteka", "grant-basic": "Osnovna prava", "grant-viewdeleted": "Prikaz izbrisanih datoteka i stranica", "grant-viewmywatchlist": "Pregled popisa praćenih stranica", @@ -1169,7 +1184,7 @@ "action-import": "uvoženje ove stranice s drugog wikija", "action-importupload": "uvoženje ove stranice postavljanjem datoteke", "action-patrol": "označavanje tuđih izmjena pregledanim", - "action-autopatrol": "automatsko označavanje pregledanim za svoje izmjene", + "action-autopatrol": "automatsko označavanje vlastitih izmjena ophođenim", "action-unwatchedpages": "gledanje popisa stranica koje nisu praćene", "action-mergehistory": "spajanje povijesti ove stranice", "action-userrights": "uređivanje svih suradničkih prava", @@ -1191,7 +1206,7 @@ "recentchanges-label-minor": "Manja izmjena", "recentchanges-label-bot": "Izmjenu napravio bot", "recentchanges-label-unpatrolled": "Nepregledana izmjena", - "recentchanges-label-plusminus": "Promjena veličine stranice (u bajtovima)", + "recentchanges-label-plusminus": "Promjena veličine stranice u bajtovima", "recentchanges-legend-heading": "<strong>Legenda:</strong>", "recentchanges-legend-newpage": "Nova stranica", "recentchanges-legend-plusminus": "(<em>±123</em>)", @@ -1455,7 +1470,7 @@ "filehist-dimensions": "Dimenzije", "filehist-filesize": "Veličina datoteke", "filehist-comment": "Komentar", - "imagelinks": "Upotreba datoteke", + "imagelinks": "Uporaba datoteke", "linkstoimage": "{{PLURAL:$1|Sljedeća stranica povezuje|$1 sljedeće stranice povezuju|$1 sljedećih stranica povezuje}} na ovu datoteku:", "linkstoimage-more": "ViÅ¡e od $1 {{PLURAL:$1|stranice povezuje|stranica povezuje}} na ovu datoteku.\nSljedeći popis prikazuje {{PLURAL:$1|stranice koje|prvih $1 stranica koje}} vode na ovu datoteku.\n[[Special:WhatLinksHere/$2|Ovdje se nalazi]] potpuni popis.", "nolinkstoimage": "Nijedna stranica ne povezuje na ovu sliku.", @@ -1532,8 +1547,9 @@ "statistics-users": "Prijavljeni [[Special:ListUsers|suradnici]]", "statistics-users-active": "Aktivni suradnici", "statistics-users-active-desc": "Suradnici koji su napravili neku od radnji u posljednjih {{PLURAL:$1|dan|$1 dana}}", - "pageswithprop": "Stranice sa osobinom stranice", - "pageswithprop-legend": "Stranice sa osobinom stranice", + "pageswithprop": "Stranice s određenim osobinama", + "pageswithprop-legend": "Stranice s određenim osobinama", + "pageswithprop-text": "Ovo je popis stranica koje koriste određene osobine stranica.", "pageswithprop-prop": "Ime osobine:", "pageswithprop-submit": "Idi", "doubleredirects": "Dvostruka preusmjeravanja", @@ -1549,12 +1565,12 @@ "withoutinterwiki-summary": "Sljedeće stranice nemaju poveznice na projekte na drugim jezicima:", "withoutinterwiki-legend": "Prefiks", "withoutinterwiki-submit": "Prikaži", - "fewestrevisions": "Članci s najmanje izmjena", + "fewestrevisions": "Stranice s najmanje izmjena", "nbytes": "$1 {{PLURAL:$1|bajt|bajta|bajtova}}", "ncategories": "$1 {{PLURAL:$1|kategorija|kategorije|kategorija}}", "ninterwikis": "$1 međuwiki {{PLURAL:$1|poveznica|poveznice|poveznica}}", "nlinks": "$1 {{PLURAL:$1|poveznica|poveznice|poveznica}}", - "nmembers": "$1 {{PLURAL:$1|član|članova}}", + "nmembers": "$1 {{PLURAL:$1|č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}}", @@ -1578,10 +1594,10 @@ "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", - "mostcategories": "Popis članaka po broju kategorija", + "mostcategories": "Popis stranica po broju kategorija", "mostimages": "Slike na koje vodi najviÅ¡e poveznica", "mostinterwikis": "Stranice s najviÅ¡e međuwiki poveznica", - "mostrevisions": "Popis članaka po broju uređivanja", + "mostrevisions": "Popis stranica po broju uređivanja", "prefixindex": "Sve stranice prema početku naslova", "prefixindex-namespace": "Sve stranice s predmetkom (imenski prostor $1)", "prefixindex-submit": "Prikaži", @@ -1592,7 +1608,9 @@ "deadendpagestext": "Sljedeće stranice nemaju poveznice na druge stranice na ovom wikiju ({{SITENAME}}).", "protectedpages": "ZaÅ¡tićene stranice", "protectedpages-indef": "Samo neograničene zaÅ¡tite", + "protectedpages-summary": "Ova posebna stranica automatski je popis trenutačno zaÅ¡tićenih stranica. Za popis naslova koji su zaÅ¡tićeni za stvaranje vidi [[{{#special:ProtectedTitles}}|{{int:protectedtitles}}]].", "protectedpages-cascade": "Samo prenosiva zaÅ¡tita", + "protectedpages-noredirect": "Skrij preusmjeravanja", "protectedpagesempty": "Nema zaÅ¡tićenih stranica koje ispunjavaju uvjete koje ste postavili.", "protectedpages-page": "Stranica", "protectedpages-expiry": "Istječe", @@ -1637,6 +1655,10 @@ "booksources-search": "Traži", "booksources-text": "Ovdje je popis vanjskih poveznica na internetskim stranicama koje prodaju nove i rabljene knjige, ali mogu sadržavati i ostale podatke o knjigama koje tražite:", "booksources-invalid-isbn": "Čini se da dani ISBN nije valjan; provjerite greÅ¡ke kopirajući iz izvornika.", + "magiclink-tracking-rfc": "Stranice s čarobnim RFC poveznicama", + "magiclink-tracking-rfc-desc": "Ova stranica rabi čarobne RFC poveznice. Za njihovu migraciju vidi [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Magic_links mediawiki.org].", + "magiclink-tracking-pmid": "Stranice s čarobnim PMID poveznicama", + "magiclink-tracking-pmid-desc": "Ova stranica rabi čarobne PMID poveznice. Za njihovu migraciju vidi [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Magic_links mediawiki.org].", "magiclink-tracking-isbn": "Stranice s čarobnim ISBN poveznicama", "magiclink-tracking-isbn-desc": "Ova stranica rabi čarobne ISBN poveznice. Za njihovu migraciju vidi [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Magic_links mediawiki.org].", "specialloguserlabel": "Suradnik:", @@ -1650,7 +1672,7 @@ "showhideselectedlogentries": "Otkrij/sakrij odabrane evidencije", "checkbox-select": "Odaberite: $1", "checkbox-all": "Sve", - "checkbox-none": "Nijedan", + "checkbox-none": "NiÅ¡ta", "checkbox-invert": "Obrnuto", "allpages": "Sve stranice", "nextpage": "Sljedeća stranica ($1)", @@ -1684,11 +1706,13 @@ "listusersfrom": "Prikaži suradnike počevÅ¡i od:", "listusers-submit": "Prikaži", "listusers-noresult": "Nema takvih suradnika.", - "listusers-blocked": "(blokiran)", + "listusers-blocked": "({{GENDER:$1|blokirani|blokirana}})", "activeusers": "Popis aktivnih suradnika", "activeusers-intro": "Ovo je popis suradnika koji su napravili neku aktivnost u {{PLURAL:$1|posljednji $1 dan|posljednja $1 dana|posljednjih $1 dana}}.", "activeusers-count": "{{PLURAL:$1|nedavna $1 izmjena|nedavne $1 izmjene|nedavnih $1 izmjena}} u {{PLURAL:$3|posljednji $3 dan|posljednja $3 dana|posljednjih $3 dana}}", "activeusers-from": "Prikaži suradnike počevÅ¡i od:", + "activeusers-groups": "Prikaži suradnike koji pripadaju suradničkim skupinama:", + "activeusers-excludegroups": "Isključi iz prikaza suradnike koji pripadaju ovim suradničkim skupinama:", "activeusers-noresult": "Niti jedan suradnik nije nađen.", "activeusers-submit": "Prikaz aktivnih suradnika", "listgrouprights": "Prava suradničkih skupina", @@ -1712,8 +1736,14 @@ "listgrants-summary": "Slijedi popis dozvola s pridruženim pristupom suradničkim pravima. Suradnici mogu omogućiti aplikacijama uporabu svojih računa, ali s ograničenim ovlastima na temelju dozvola koje je suradnik dodijelio aplikaciji. Aplikacija koja djeluje u ime suradnika međutim ne može rabiti prava koje suradnik nema.\nMoguće su [[{{MediaWiki:Listgrouprights-helppage}}|dodatne informacije]] o pojedinim pravima.", "listgrants-grant": "Dozvola", "listgrants-rights": "Prava", + "trackingcategories": "Kategorije za praćenje", + "trackingcategories-msg": "Praćene kategorije", + "trackingcategories-name": "Naziv poruke", + "trackingcategories-desc": "Kriteriji za uključenje u kategoriju", "restricted-displaytitle-ignored": "Stranice sa zanemarenim naslovima za prikaz", + "restricted-displaytitle-ignored-desc": "Na stranici je zanemaren <code><nowiki>{{DISPLAYTITLE}}</nowiki></code> jer ne odgovara trenutačnom naslovu stranice.", "trackingcategories-nodesc": "Opis nije dostupan.", + "trackingcategories-disabled": "Kategorija onemogućena", "mailnologin": "Nema adrese poÅ¡iljatelja", "mailnologintext": "Morate biti [[Special:UserLogin|prijavljeni]]\ni imati valjanu adresu e-poÅ¡te u svojim [[Special:Preferences|postavkama]]\nda bi mogli slati poÅ¡tu drugim suradnicima.", "emailuser": "PoÅ¡alji mu e-poruku", @@ -1740,7 +1770,7 @@ "emailccsubject": "Kopija VaÅ¡e poruke suradniku $1: $2", "emailsent": "E-mail poslan", "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}}.", + "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}}.", "usermessage-summary": "Ostavljanje poruke sustava.", "usermessage-editor": "Uređivač sistemskih poruka", "watchlist": "Popis praćenja", @@ -1750,10 +1780,12 @@ "watchlistanontext": "Molimo Vas prijavite se kako biste mogli vidjeti ili uređivati VaÅ¡ popis praćenih stranica.", "watchnologin": "Niste prijavljeni", "addwatch": "Dodaj u popis praćenja", - "addedwatchtext": "Stranica \"[[:$1]]\" je dodana na VaÅ¡ [[Special:Watchlist|popis praćenja]].\nPromjene na toj stranici i njenoj stranici za razgovor bit će prikazane na popisu praćenja.", + "addedwatchtext": "Stranica »[[:$1]]« dodana je na VaÅ¡ [[Special:Watchlist|popis praćenja]]; ujedno i njoj pripadajuća razgovorna stranica.", + "addedwatchtext-talk": "Stranica »[[:$1]]« i njoj pripadajuća razgovorna stranica dodane su na VaÅ¡ [[Special:Watchlist|popis praćenih stranica]].", "addedwatchtext-short": "Stranica \"$1\" dodana je VaÅ¡em popisu praćenja.", "removewatch": "Ukloni s popisa praćenja", - "removedwatchtext": "Stranica \"[[:$1]]\" je uklonjena s [[Special:Watchlist|VaÅ¡eg popisa praćenja]].", + "removedwatchtext": "Stranica »[[:$1]]« i pripadajuća razgovorna stranica uklonjene su s VaÅ¡ega [[Special:Watchlist|popisa praćenih stranica]].", + "removedwatchtext-talk": "Stranica »[[:$1]]« i njoj pripadajuća razgovorna stranica uklonjene su s VaÅ¡ega [[Special:Watchlist|popis praćenih stranica]].", "removedwatchtext-short": "Stranica \"$1\" uklonjena je s VaÅ¡eg popisa praćenja.", "watch": "Prati", "watchthispage": "Prati ovu stranicu", @@ -1801,7 +1833,7 @@ "deletepage": "IzbriÅ¡i stranicu", "confirm": "Potvrdi", "excontent": "sadržaj je bio: '$1'", - "excontentauthor": "sadržaj je bio: '$1' (a jedini urednik '$2')", + "excontentauthor": "sadržaj je bio: »$1«; {{GENDER:$2|jedini pridonositelj bio je|jedina pridonositeljica bila je}} [[Special:Contributions/$2|$2]] ([[User talk:$2|razgovor]])", "exbeforeblank": "sadržaj prije brisanja je bio: '$1'", "delete-confirm": "ObriÅ¡i \"$1\"", "delete-legend": "IzbriÅ¡i", @@ -1844,6 +1876,7 @@ "changecontentmodel-reason-label": "Razlog:", "changecontentmodel-submit": "Promijeni", "changecontentmodel-success-title": "Sadržaj modela je promijenjen", + "log-name-contentmodel": "Evidencija promjena modela sadržaja", "protectlogpage": "Evidencija zaÅ¡tićivanja", "protectlogtext": "Ispod je evidencija zaÅ¡tićivanja i uklanjanja zaÅ¡tite pojedinih stranica.\nPogledajte [[Special:ProtectedPages|zaÅ¡tićene stranice]] za popis trenutačno zaÅ¡tićenih stranica.", "protectedarticle": "članak \"[[$1]]\" je zaÅ¡tićen", @@ -1897,7 +1930,7 @@ "restriction-edit": "Uređivanje", "restriction-move": "PremjeÅ¡tanje", "restriction-create": "Stvori", - "restriction-upload": "Postavi", + "restriction-upload": "Postavljanje", "restriction-level-sysop": "samo administratori", "restriction-level-autoconfirmed": "samo prijavljeni suradnici", "restriction-level-all": "sve razine", @@ -2177,6 +2210,7 @@ "export-download": "Ponudi opciju snimanja u datoteku", "export-templates": "Uključi predloÅ¡ke", "export-pagelinks": "Uključi povezane stranice do dubine od:", + "export-manual": "Ručno dodaj stranice u polje:", "allmessages": "Sve poruke sustava", "allmessagesname": "Ime", "allmessagesdefault": "Prvotni tekst", @@ -2326,7 +2360,7 @@ "lastmodifiedatby": "Ovu je stranicu posljednji put {{GENDER:$4|mijenjao suradnik|mijenjala suradnica}} $3 dana $1 u $2.", "othercontribs": "Temelji se na doprinosu suradnika $1.", "others": "drugih", - "siteusers": "{{SITENAME}} {{PLURAL:$2|suradnik|suradnici}} $1", + "siteusers": "{{SITENAME}} {{PLURAL:$2|{{GENDER:$1|suradnik|suradnica}}|suradnici}} $1", "anonusers": "{{SITENAME}} {{PLURAL:$2|anonimni suradnik|anonimni suradnici}} $1", "creditspage": "Autori stranice", "nocredits": "Za ovu stranicu nema podataka o autorima.", @@ -2335,7 +2369,7 @@ "spamprotectionmatch": "NaÅ¡ filtar spama reagirao je na sljedeći tekst: $1", "spambot_username": "MediaWiki zaÅ¡tita od spama", "spam_reverting": "Vraćam na posljednju inačicu koja ne sadrži poveznice na $1", - "spam_blanking": "Sve inačice sadrže poveznice na $1, briÅ¡em cjelokupni sadržaj", + "spam_blanking": "Sve inačice koje sadržavaju poveznice na $1, briÅ¡em cjelokupni sadržaj", "spam_deleting": "Sve inačice sadržale su poveznice na $1, briÅ¡em cjelokupni sadržaj", "simpleantispam-label": "Anti-spam provjera.\n<strong>NE</strong> ispunjavajte ovo!", "pageinfo-title": "Podatci o stranici \"$1\"", @@ -2361,7 +2395,7 @@ "pageinfo-subpages-value": "Ukupno $1 ($2 {{PLURAL:$2|preusmjeravanje|preusmjeravanja}}; $3 {{PLURAL:$3|obična podstranica|obične podstranice|običnih podstranica}})", "pageinfo-firstuser": "Suradnik koji je stvorio stranicu", "pageinfo-firsttime": "Datum stvaranja stranice", - "pageinfo-lastuser": "Posljednji urednik stranice", + "pageinfo-lastuser": "Posljednji uređivač stranice", "pageinfo-lasttime": "Datum posljednjeg uređivanja", "pageinfo-edits": "Ukupan broj uređivanja", "pageinfo-authors": "Broj različitih autora", @@ -2387,16 +2421,17 @@ "markaspatrolledtext-file": "Označi ovu inačicu datoteke kao pregledanu", "markedaspatrolled": "Pregledano", "markedaspatrolledtext": "Odabrana promjena [[:$1]] označena je pregledanom.", - "rcpatroldisabled": "Nadzor nedavnih promjena isključen", - "rcpatroldisabledtext": "Naredba \"Nadziri nedavne promjene\" trenutačno je isključena.", + "rcpatroldisabled": "Ophodnja nedavnih promjena isključena", + "rcpatroldisabledtext": "Naredba \"Ophodnja nedavnih promjena\" trenutačno je isključena.", "markedaspatrollederror": "Ne mogu označiti za pregledano", "markedaspatrollederrortext": "Morate odabrati inačicu koju treba označiti za pregledanu.", "markedaspatrollederror-noautopatrol": "Ne možete vlastite promjene označiti patroliranima.", "markedaspatrollednotify": "Uređivanje stranice $1 označeno je pregledanim.", "markedaspatrollederrornotify": "Označavanje stranice pregledanom nije uspjelo.", - "patrol-log-page": "Evidencija pregledavanja promjena", + "patrol-log-page": "Evidencija ophodnji i samoophodnji", "patrol-log-header": "Ovo su evidencije ophođenih izmjena.", - "log-show-hide-patrol": "$1 evidenciju patroliranja", + "log-show-hide-patrol": "$1 evidenciju ophodnji", + "log-show-hide-tag": "$1 evidenciju oznaka", "confirm-markpatrolled-button": "U redu", "confirm-markpatrolled-top": "Označiti izmjenu $3 stranice $2 pregledanom?", "deletedrevision": "izbrisana stara inačica $1", @@ -2465,7 +2500,7 @@ "bad_image_list": "Rabi se sljedeći format:\n\nSamo retci koji počinju sa zvjezdicom su prikazani. Prva poveznica u retku mora biti poveznica na nevaljanu sliku.\nSvaka sljedeća poveznica u istom retku je izuzetak, npr. kod stranica gdje se slike pojavljuju ''inline''.", "variantname-sr-ec": "ćirilica", "variantname-sr-el": "latinica", - "metadata": "Metapodaci", + "metadata": "Metapodatci", "metadata-help": "Ova datoteka sadržava dodatne podatke koje je vjerojatno dodala digitalna kamera ili skener u procesu snimanja odnosno digitalizacije. Ako je datoteka mijenjana, podatci možda nisu u skladu sa stvarnim stanjem.", "metadata-expand": "Pokaži sve podatke", "metadata-collapse": "Sakrij dodatne podatke", @@ -2867,6 +2902,7 @@ "autoredircomment": "preusmjeravanje na [[$1]]", "autosumm-new": "nova stranica: $1", "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.", "watchlistedit-normal-title": "Uredi popis praćenja", @@ -3020,11 +3056,11 @@ "tags": "Valjane oznake izmjena", "tag-filter": "Filtar [[Special:Tags|oznaka]]:", "tag-filter-submit": "Filtar", - "tag-list-wrapper": "([[Special:Tags|{{PLURAL:$1|Oznaka|Oznake}}]]: $2)", + "tag-list-wrapper": "([[Special:Tags|{{PLURAL:$1|Oznaka|Oznake|Oznaka}}]]: $2)", "tag-mw-contentmodelchange": "promjena modela sadržaja", "tag-mw-contentmodelchange-description": "Uređivanja koja [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:ChangeContentModel mijenjanju model sadržaja] stranice", "tags-title": "Oznake", - "tags-intro": "Ova je stranica popis oznaka s kojima softver može označiti promjenu te njihovo značenje.", + "tags-intro": "Ova stranica sadržava popis oznaka s kojima programska oprema može označivati promjene te njihova značenja.", "tags-tag": "Naziv oznake", "tags-display-header": "Izgled na popisima izmjena", "tags-description-header": "Puni opis značenja", @@ -3032,15 +3068,15 @@ "tags-active-header": "Aktivno?", "tags-hitcount-header": "Označene izmjene", "tags-actions-header": "Radnje", - "tags-active-yes": "Da", - "tags-active-no": "Ne", + "tags-active-yes": "da", + "tags-active-no": "ne", "tags-source-extension": "Definirano proÅ¡irenjem", "tags-source-none": "Nije viÅ¡e u uporabi", "tags-edit": "uredi", "tags-delete": "izbriÅ¡i", "tags-activate": "pokreni", "tags-deactivate": "isključi", - "tags-hitcount": "$1 {{PLURAL:$1|promjena|promjene|promjena}}", + "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-tag-name": "Naziv oznake:", @@ -3064,6 +3100,7 @@ "tags-deactivate-submit": "Isključi", "tags-edit-title": "Uredi oznake", "tags-edit-manage-link": "Upravljaj oznakama", + "tags-edit-revision-selected": "{{PLURAL:$1|Označena izmjena|Označene izmjene|Označenih izmjena}} stranice [[:$2]]:", "tags-edit-existing-tags": "Postojeće oznake:", "tags-edit-existing-tags-none": "\"Nema\"", "tags-edit-new-tags": "Nove oznake:", @@ -3110,7 +3147,7 @@ "htmlform-time-invalid": "Unesena vrijednost nije prepoznati format vremena. PokuÅ¡ajte koristiti format HH:MM:SS.", "htmlform-datetime-toohigh": "Uneseni datum i vrijeme su veći od $1", "logentry-delete-delete": "$1 je {{GENDER:$2|obrisao|obrisala}} stranicu $3", - "logentry-delete-delete_redir": "$1 je {{GENDER:$2|obrisao|obrisala}} preusmjeravanje $3 prepisivanjem", + "logentry-delete-delete_redir": "$1 je premjeÅ¡tanjem {{GENDER:$2|pobrisao|pobrisala}} preusmjeravanje $3", "logentry-delete-restore": "$1 je {{GENDER:$2|vratio|vratila}} stranicu $3", "logentry-delete-event": "$1 je {{GENDER:$2|promijenio|promijenila}} vidljivost {{PLURAL:$5|zapisa u evidenciji|$5 zapisa u evidenciji}} na $3: $4", "logentry-delete-revision": "$1 je {{GENDER:$2|promijenio|promijenila}} vidljivost {{PLURAL:$5|uređivanja|$5 uređivanja}} na stranici $3: $4", @@ -3134,7 +3171,7 @@ "logentry-move-move-noredirect": "$1 je {{GENDER:$2|premjestio|premjestila}} stranicu $3 na $4 bez preusmjeravanja", "logentry-move-move_redir": "$1 je {{GENDER:$2|premjestio|premjestila}} stranicu $3 na $4 preko preusmjeravanja", "logentry-move-move_redir-noredirect": "$1 je {{GENDER:$2|premjestio|premjestila}} stranicu $3 na $4 preko preusmjeravanja bez ostavljanja preusmjeravanja", - "logentry-patrol-patrol": "$1 je {{GENDER:$2|označio|označila}} uređivanje $4 stranice $3 pregledanim", + "logentry-patrol-patrol": "$1 {{GENDER:$2|označio|označila}} je uređivanje $4 stranice $3 ophođenim", "logentry-patrol-patrol-auto": "$1 je automatski {{GENDER:$2|označio|označila}} uređivanje $4 stranice $3 pregledanim", "logentry-newusers-newusers": "$1 je {{GENDER:$2|otvorio|otvorila}} suradnički račun", "logentry-newusers-create": "$1 je {{GENDER:$2|stvorio|stvorila}} suradnički račun.", @@ -3153,8 +3190,9 @@ "logentry-upload-upload": "$1 је {{GENDER:$2|postavio|postavila}} $3", "logentry-upload-overwrite": "$1 је {{GENDER:$2|postavio|postavila}} novu inačicu $3", "logentry-upload-revert": "$1 је {{GENDER:$2|postavio|postavila}} $3", + "log-name-managetags": "Evidencija upravljanja oznakama", + "log-name-tag": "Evidencija oznaka", "rightsnone": "(suradnik)", - "revdelete-summary": "sažetak", "feedback-adding": "Dodajem povratne informacije na stranicu...", "feedback-back": "Natrag", "feedback-bugcheck": "Izvrsno! Molimo provjerite da se ne radi o nekom [$1 poznatom \"bugu\"].", @@ -3178,44 +3216,12 @@ "feedback-thanks-title": "Hvala!", "searchsuggest-search": "Pretraži projekt {{SITENAME}}", "searchsuggest-containing": "sadrži....", - "api-error-badaccess-groups": "Nemate ovlasti za postavljanje datoteka na ovu wiki.", "api-error-badtoken": "Interna pogrjeÅ¡ka: Token nije ispravan.", - "api-error-copyuploaddisabled": "Postavljanje datoteka putem URL-a nije omogućeno na ovom projektu.", - "api-error-duplicate": "{{PLURAL:$1|Postoji druga datoteka|Postoje $1 druge datoteke|Postoji $1 drugih datoteka}} istog sadržaja.", - "api-error-duplicate-archive": "{{PLURAL:$1|Postojala je druga datoteka|Postojale su neke druge datoteke|Postojalo je nekih drugih datoteka}} na projektu s istim sadržajem, ali {{PLURAL:$1|je obrisana|su obrisane}}.", - "api-error-empty-file": "Datoteka koju ste poslali je prazna.", "api-error-emptypage": "Stvaranje praznih novih stranica nije dopuÅ¡teno.", - "api-error-fetchfileerror": "Interna pogrjeÅ¡ka: Pojavio se neki problem pri dobivanju podataka o datoteci.", - "api-error-fileexists-forbidden": "Datoteka s imenom \"$1\" već postoji i ne može biti prepisana.", - "api-error-fileexists-shared-forbidden": "Datoteka s imenom \"$1\" već postoji u zajedničkom spremiÅ¡tu i ne može biti prepisana.", - "api-error-file-too-large": "Datoteka koju ste poslali bila je prevelika.", - "api-error-filename-tooshort": "Ime datoteke je prekratko.", - "api-error-filetype-banned": "Ova vrsta datoteke je zabranjena.", - "api-error-filetype-banned-type": "$1 {{PLURAL:$4|nije dopuÅ¡teni tip datoteke|su nedopuÅ¡teni tipovi datoteke|su nedopuÅ¡teni tipovi datoteka}}. DopuÅ¡teni {{PLURAL:$3|tip datoteke je|tipovi datoteke su|tipovi datoteka su}} $2.", - "api-error-filetype-missing": "Datoteci nedostaje nastavak.", - "api-error-hookaborted": "Izmjena koji ste pokuÅ¡ali načiniti je otkazana preko \"kuke\" proÅ¡irenja mediawiki softvera.", - "api-error-http": "Interna pogrjeÅ¡ka: Ne može se povezati na poslužitelj.", - "api-error-illegal-filename": "Ime datoteke nije dopuÅ¡teno.", - "api-error-internal-error": "Interna pogrjeÅ¡ka: Pojavio se neki problem s obradom postavljanja datoteke na wiki.", - "api-error-invalid-file-key": "Poslužitelj nije mogao naći tu datoteku u vaÅ¡im postavljenim datotekama.", - "api-error-missingparam": "Interna pogrjeÅ¡ka: Nedostaju parametri HTTP(S) zahtjeva.", - "api-error-missingresult": "Interna pogrjeÅ¡ka: Nismo mogli utvrditi je li kopiranje uspjelo.", - "api-error-mustbeloggedin": "Morate biti prijavljeni da bi mogli postavljati datoteke.", - "api-error-mustbeposted": "Postoji pogreÅ¡ka u ovom softveru; ne rabi ispravnu HTTP metodu.", - "api-error-noimageinfo": "Postavljanje je uspjelo, ali poslužitelj nije vratio nikakvu informaciju o datoteci.", - "api-error-nomodule": "Interna pogrjeÅ¡ka: nije postavljen modul za postavljanje.", - "api-error-ok-but-empty": "Interna pogrjeÅ¡ka: nema odgovora od poslužitelja.", - "api-error-overwrite": "Postavljanje preko postojeće datoteke nije dopuÅ¡teno.", - "api-error-stashfailed": "Interna pogrjeÅ¡ka: Poslužitelj nije uspio spremiti privremenu datoteku.", "api-error-publishfailed": "Interna pogrjeÅ¡ka: poslužitelj nije uspio objaviti privremenu datoteku.", - "api-error-timeout": "Poslužitelj nije odgovorio unutar očekivanog vrjemena.", - "api-error-unclassified": "Dogodila se nepoznata pogrjeÅ¡ka.", - "api-error-unknown-code": "Nepoznata pogrjeÅ¡ka: \"$1\"", - "api-error-unknown-error": "Interna pogrjeÅ¡ka: dogodila se pogrjeÅ¡ka pri pokuÅ¡aju postavljanja vaÅ¡e datoteke.", + "api-error-stashfailed": "Interna pogrjeÅ¡ka: Poslužitelj nije uspio spremiti privremenu datoteku.", "api-error-unknown-warning": "Nepoznato upozorenje: $1", "api-error-unknownerror": "Nepoznata pogrjeÅ¡ka: \"$1\"", - "api-error-uploaddisabled": "Postavljanje datoteka je onemogućeno na ovom wikiprojektu.", - "api-error-verification-error": "Ova datoteka je možda oÅ¡tećena ili ima pogreÅ¡an nastavak.", "duration-seconds": "$1 {{PLURAL:$1|sekunda|sekunde|sekundi}}", "duration-minutes": "$1 {{PLURAL:$1|minuta|minute|minuta}}", "duration-hours": "$1 {{PLURAL:$1|sat|sata|sati}}", @@ -3245,6 +3251,8 @@ "right-pagelang": "Promijeni jezik stranice", "mediastatistics": "Statistika datoteka", "mediastatistics-summary": "Slijede statistike postavljenih datoteka koje pokazuju zadnju inačicu datoteke. Starije ili izbrisane inačice nisu prikazane.", + "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-drawing": "Crteži (vektorske slike)", "mediastatistics-header-audio": "Audio", "mediastatistics-header-video": "Videozapisi", @@ -3257,21 +3265,26 @@ "special-characters-group-ipa": "IPA", "special-characters-group-symbols": "simboli", "special-characters-group-greek": "grčki", + "special-characters-group-greekextended": "grčki (proÅ¡ireno)", "special-characters-group-cyrillic": "ćirilica", "special-characters-group-arabic": "arapski", + "special-characters-group-arabicextended": "arapski (proÅ¡ireno)", "special-characters-group-persian": "perzijski", "special-characters-group-hebrew": "hebrejski", - "special-characters-group-bangla": "Bangla znakovi", + "special-characters-group-bangla": "bengalski", + "special-characters-group-tamil": "tamilski", "special-characters-group-telugu": "telugu", - "special-characters-group-sinhala": "SinhaleÅ¡ki znakovi", - "special-characters-group-gujarati": "Gudžaratski znakovi", - "special-characters-group-thai": "Tajlandski (tajski) znakovi", - "special-characters-group-lao": "laoski znakovi", + "special-characters-group-sinhala": "sinhaleÅ¡ki", + "special-characters-group-gujarati": "gudžaratski", + "special-characters-group-devanagari": "devanagari", + "special-characters-group-thai": "tajlandski (tajski)", + "special-characters-group-lao": "laoski", "special-characters-group-khmer": "kmerski", "mw-widgets-dateinput-placeholder-day": "GGGG-MM-DD", "mw-widgets-dateinput-placeholder-month": "GGGG-MM", "mw-widgets-titleinput-description-new-page": "stranica joÅ¡ ne postoji", "mw-widgets-titleinput-description-redirect": "preusmjeravanje na $1", + "randomrootpage": "Slučajna korijenska stranica", "log-action-filter-block": "Vrsta blokiranja:", "log-action-filter-delete": "Vrsta brisanja:", "log-action-filter-import": "Vrsta uvoza:", @@ -3307,6 +3320,14 @@ "log-action-filter-rights-autopromote": "automatska promjena", "log-action-filter-upload-upload": "novo postavljanje", "log-action-filter-upload-overwrite": "ponovno postavljanje", + "authmanager-authn-autocreate-failed": "Automatsko stvaranje lokalnoga računa nije uspjelo: $1", + "authmanager-autocreate-noperm": "Automatsko stvaranje računa nije dopuÅ¡teno.", + "authmanager-provider-password": "Autorizacija zaporkom", + "authmanager-provider-temporarypassword": "Privremena zaporka", "changecredentials": "Promjena vjerodajnica", - "removecredentials": "Uklanjanje vjerodajnica" + "changecredentials-submit": "Promijeni vjerodajnice", + "removecredentials": "Uklanjanje vjerodajnica", + "removecredentials-submit": "Ukloni vjerodajnice", + "credentialsform-provider": "Vrsta vjerodajnica:", + "credentialsform-account": "Suradnički račun:" } diff --git a/languages/i18n/hrx.json b/languages/i18n/hrx.json index 6bc52f5744..85192b195a 100644 --- a/languages/i18n/hrx.json +++ b/languages/i18n/hrx.json @@ -486,8 +486,6 @@ "passwordreset-emaildisabled": "Die E-Mail-Funktione worre uff dem Wiki deaktiviert.", "passwordreset-username": "Benutzernoome:", "passwordreset-domain": "Domain:", - "passwordreset-capture": "Die E-Mail-Nachricht oonsiehn?", - "passwordreset-capture-help": "Wenn du das Kästche oonkreizt, weard die E-Mail-Nachricht mit dem temporäre Passwort sowohl dir oongezeicht als ooch dem Benutzer zugesandt.", "passwordreset-email": "E-Mail-Adress", "passwordreset-emailtitle": "Benutzerkontoinformatione uff {{SITENAME}}", "passwordreset-emailtext-ip": "Jemand mit der IP-Adress $1, wahrscheinlich du sellebst, hot en Zurücksetzung von dein Passworts bei {{SITENAME}} oongefordert ($4). {{PLURAL:$3|Das follichend Benutzerkonto ist|Die follichende Benutzerkonte sind}}\nmit der E-Mail-Adress verknüpft:\n\n$2\n\n{{PLURAL:$3|Das temporär Passwort looft|Die temporäre Passwörter loofe}} innerhalb von {{PLURAL:$5|em Tooch|$5 Tooche}} ab.\nDu sollst dich oonmelde und en neies Passwort vergewe. Falls jemand annres die Oonfroch getätigt hot orrer du dich wieder an dein ursprüngliches Passwort erinnre kannst und das netmeh\nännre möchst, kannst du die Nachricht ignoriere und weiterhin dein altes\nPasswort benutze.", @@ -860,8 +858,6 @@ "saveprefs": "Instellunge speichre", "restoreprefs": "Alle Standardinstellunge wiederhearstelle (in alle Abschnitte)", "prefs-editing": "Beoorbeite", - "rows": "Zeile:", - "columns": "Spalte:", "searchresultshead": "Such", "stub-threshold": "Linkformatierung <a href=\"#\" class=\"stub\">klen Seite</a> (in Bytes):", "stub-threshold-disabled": "Deaktiviert", @@ -950,12 +946,9 @@ "userrights-reason": "Grund:", "userrights-no-interwiki": "Du host net die nötiche Berechtichung, um Benutzerrechte in annre Wikis ännre könne.", "userrights-nodatabase": "Die Datebank $1 ist net voarhand orrer net lokal.", - "userrights-nologin": "Du musst dich mit en Administratoar-Benutzerkonto [[Special:UserLogin|oonmeld]], um Benutzerrechte ännre.", - "userrights-notallowed": "Du verfüchst net üwer die erforderliche Berechtichunge, um Benutzerrechte vergebe orrer entziehe könne.", "userrights-changeable-col": "Gruppezugehörigkeit, die du ännre kannst", "userrights-unchangeable-col": "Gruppezugehörigkeit, die du net ännre kannst", "userrights-conflict": "Benutzerrechteännerungskonflikt! Bittschön üwerprüf und bestätich deine Ännrunge.", - "userrights-removed-self": "Du host dein eichne Rechte erfollichreich entfernt. Du kannst net länger uff die Seit zugreife.", "group": "Grupp:", "group-user": "Benutzer", "group-autoconfirmed": "Automatisch bestätichte Benutzer", @@ -1042,7 +1035,6 @@ "right-siteadmin": "Datebank sperre und entsperre", "right-override-export-depth": "Exportier Seite einschliesslich verlinkter Seite bis zu en Tief von 5", "right-sendemail": "E-Mails an annre Benutzer sende", - "right-passwordreset": "Passwort von en Benutzer zurücksetze und die dazu verschickte E-Mail einsiehn", "newuserlogpage": "Neioonmeldungs-Logbuch", "newuserlogpagetext": "Dies ist en Logbuch von der nei erstellte Benutzerkonte.", "rightslog": "Rechte-Logbuch", @@ -1212,7 +1204,7 @@ "uploaddisabledtext": "Das Hochloode von Dateie ist deaktiviert.", "php-uploaddisabledtext": "Das Hochloode von Dateie woard in PHP deaktiviert.\nBittschön üwerprüf die <code>file_uploads</code>-Einstellung.", "uploadscripted": "Die Datei enthält HTML- orrer Scriptcode, wo irrtümlich von enem Webbrowser ausgeführt werre könnt.", - "uploadscriptednamespace": "Die SVG-Datei enthält den ungültiche Noomeraum „$1“.", + "uploadscriptednamespace": "Die SVG-Datei enthält den ungültiche Noomeraum „<nowiki>$1</nowiki>“.", "uploadinvalidxml": "Das XML in der hochgeladne Datei konnt net geparst werre.", "uploadvirus": "Die Datei enthält en Virus! Details: $1", "uploadjava": "Dies ist ein ZIP-Datei, wo en CLASS-Datei von Java enthält.\nDas Hochloode von Java-Dateie ist net gestattet, weil sie die Umgehung von Sicherheitseinschränkunge ermöchliche könnte.", @@ -2922,45 +2914,12 @@ "feedback-thanks": "Dankschön. Dein Rückmeldung woard uff der Seit \"[$2 $1]\" gespeichert.", "searchsuggest-search": "Such", "searchsuggest-containing": "wo enthält …", - "api-error-badaccess-groups": "Du host net die Berechtichung Dateie in des Wiki hochzuloode.", "api-error-badtoken": "Interner Fehler: Der Token ist fehlerhaft.", - "api-error-copyuploaddisabled": "Das Hochloode doorrich URL woard uff dem Server deaktiviert.", - "api-error-duplicate": "Do gebts im Wiki schon {{PLURAL:$1|en anner Datei|mehrre andere Dateie}} mit dem gleiche Inhalt.", - "api-error-duplicate-archive": "Es {{PLURAL:$1|war schon annre Datei|woore schon annre Dateie}} mit dem gleiche Inhalt voarhand. {{PLURAL:$1|Sie woard|Sie woorre}} awer abgewischt.", - "api-error-empty-file": "Die hochgeloodne Datei woor leer.", "api-error-emptypage": "Es ist net erlaubt, neie leere Seite erstelle.", - "api-error-fetchfileerror": "Interner Fehler: Bei dem Datei abrufe ist en Fehler uffgetret.", - "api-error-fileexists-forbidden": "En Datei mit dem Noome \"$1\" ist schon voarhand und kann net üwerschrieb sin.", - "api-error-fileexists-shared-forbidden": "En Datei mit dem noomen \"$1\" ist schon im gemeinsam Dateirepositorium voarhand und kann doher net üwerschrieb sin.", - "api-error-file-too-large": "Die hochgeloodne Datei woor zu gross.", - "api-error-filename-tooshort": "Der Dateinoome ist zu koorz.", - "api-error-filetype-banned": "Die Dateiendung ist gesperrt.", - "api-error-filetype-banned-type": "$1 {{PLURAL:$4|ist en net zulässicher Dateityp|sind net zulässiche Dateitype}}. {{PLURAL:$3|En zulässicher Dateityp ist|Zulässiche Dateitype sind}} $2.", - "api-error-filetype-missing": "Die hochzuladende Datei hat keine Dateiendung.", - "api-error-hookaborted": "Der Versuch, die Ännrung doorrichzuführe, woard von en Parsererweitrung (API) abgebroch.", - "api-error-http": "Interner Fehler: Es konnt keh Verbinnung zum Server heargestellt sin.", - "api-error-illegal-filename": "Der Dateinoome ist net zulässich.", - "api-error-internal-error": "Interner Fehler: En unbekannter Fehler ist beim Hochloode von der Datei ins Wiki uffgetret.", - "api-error-invalid-file-key": "Interner Fehler: Die Datei woard net im temporäre Speicher gefunn.", - "api-error-missingparam": "Interner Fehler: Der Oonfroch fehle ehre Parameter.", - "api-error-missingresult": "Interner Fehler: Es konnt net festgestellt sin, ob das Kopiere erfollichreich woor.", - "api-error-mustbeloggedin": "Um Dateie hochloode könne, musst du oongemeldt sin.", - "api-error-mustbeposted": "Interner Fehler: Do gebts en Programmfehler, weil die falsche HTTP-Methode weard verwendt (HTTP POST ist nötich).", - "api-error-noimageinfo": "Das Hochloode woor erfollichreich, awer der Server kann ken Informatione zur Datei oonzeiche.", - "api-error-nomodule": "Interner Fehler: Es woarde ken Modul zum Hochloode festgeleht.", - "api-error-ok-but-empty": "Interner Fehler: Der Server reagiert net.", - "api-error-overwrite": "Das Üwerschreibe von en voarhand Datei ist net erlaubt.", - "api-error-stashfailed": "Interner Fehler: Der Server konnt keh temporär Datei speichre.", "api-error-publishfailed": "Interner Fehler: Der Server konnt die temporär Datei net veröffentliche.", - "api-error-stasherror": "Beim Hochloode von der Datei hot es en Fehler geb.", - "api-error-timeout": "Der Server hot net innerhalb von der erwoortete Zeit reagiert.", - "api-error-unclassified": "En unbekannter Fehler ist uffgetret.", - "api-error-unknown-code": "Unbekannter Fehler: \"$1\"", - "api-error-unknown-error": "Interner Fehler: En unbekannter Fehler ist beim Hochloode von der Datei uffgetret.", + "api-error-stashfailed": "Interner Fehler: Der Server konnt keh temporär Datei speichre.", "api-error-unknown-warning": "Unbekannte Woornung: $1", "api-error-unknownerror": "Unbekannter Fehler: \"$1\"", - "api-error-uploaddisabled": "Das Hochloode ist in diesem Wiki deaktiviert.", - "api-error-verification-error": "Die hochzuloodend Datei ist entweder fehlerhaft orrer hot keh Dateinoomeerweitrung.", "duration-seconds": "$1 {{PLURAL:$1|Sekund|Sekunde}}", "duration-minutes": "$1 {{PLURAL:$1|Minut|Minute}}", "duration-hours": "$1 {{PLURAL:$1|Stund|Stunne}}", diff --git a/languages/i18n/hsb.json b/languages/i18n/hsb.json index 558b1667e8..9012602faa 100644 --- a/languages/i18n/hsb.json +++ b/languages/i18n/hsb.json @@ -508,8 +508,6 @@ "passwordreset-emaildisabled": "E-mejlowe funkcije su so na tutym wikiju znjemóžnili.", "passwordreset-username": "Wužiwarske mjeno:", "passwordreset-domain": "Domena:", - "passwordreset-capture": "E-mejlku sej wobhladać?", - "passwordreset-capture-help": "Jeli nakřižujeÅ¡ tutón kašćik, budźe so e-mejlka z nachwilnym hesło pokazować a tež wužiwarjej pósłać.", "passwordreset-email": "E-mejlowa adresa:", "passwordreset-emailtitle": "Kontowe podrobnosće na {{GRAMMAR:lokatiw|{{SITENAME}}}}", "passwordreset-emailtext-ip": "Něchtó (najskerje ty, z IP-adresu $1) je anulowanje hesła za {{GRAMMAR:akuzatiw|{{SITENAME}}}} požadał ($4). {{PLURAL:$3|Slědowace wužiwarske konto je|Slědowacej wužiwarskej konće stej|Slědowace wužiwarske konta su}} z tutej e-mejlowej adresu {{PLURAL:$3|zwjazane|zwjazanej|zwjazane}}:\n\n$2\n\n{{PLURAL:$3|Tute nachwilne hesło spadnje|Tutej nachwilnej hesle spadnjetej|Tute nachwilne hesła spadnu}} za {{PLURAL:$5|jedyn dźeń|$5 dnjej|$5 dny|$5 dnjow}}.\nTy měł so nětko přizjewić a nowe hesło wubrać. Jeli něchtó druhi je tute napraÅ¡owanje pósłał, abo jeli sy so zaso na prěnjotne hesło dopomnił a wjace nochceÅ¡ jo změnić, móžeÅ¡ tutu zdźělenku ignorować a swoje stare hesło dale wužiwać.", @@ -900,8 +898,6 @@ "saveprefs": "Składować", "restoreprefs": "Wšě standardne nastajenja wobnowić (w druhich wotrězkach)", "prefs-editing": "Wobdźěłowanje", - "rows": "Rjadki:", - "columns": "Stołpiki:", "searchresultshead": "Pytać", "stub-threshold": "Wotkazowe formatowanje małych stronow ($1):", "stub-threshold-disabled": "Znjemóžnjeny", @@ -990,12 +986,9 @@ "userrights-reason": "Přičina:", "userrights-no-interwiki": "NimaÅ¡ prawo wužiwarske prawa w druhich wikijach změnić.", "userrights-nodatabase": "Datowa banka $1 njeeksistuje abo lokalna njeje.", - "userrights-nologin": "DyrbiÅ¡ so z admininstratorowym kontom [[Special:UserLogin|přizjewić]], zo by wužiwarske prawa změnił.", - "userrights-notallowed": "NimaÅ¡ trěbne prawa, zo by wužiwarske prawa přidźěliło abo zebrało.", "userrights-changeable-col": "Skupiny, kotrež móžeÅ¡ změnić", "userrights-unchangeable-col": "Skupiny, kotrež njemóžeÅ¡ změnić", "userrights-conflict": "Konflikt změnow wužiwarskich prawow! ProÅ¡u přepruwuj a wobkruć swoje změny.", - "userrights-removed-self": "Sy swoje prawa wotstronił. Tohodla nimaÅ¡ hižo přistup na tutu stronu měć.", "group": "Skupina:", "group-user": "wužiwarjo", "group-autoconfirmed": "Awtomatisce potwjerdźeni wužiwarjo", @@ -1085,7 +1078,6 @@ "right-siteadmin": "Datowu banku zawrěć abo wotewrić", "right-override-export-depth": "Strony inkluziwnje wotkazanych stronow hač do hłubokosće 5 eksportować", "right-sendemail": "Druhim wužiwarjam e-mejl pósłać", - "right-passwordreset": "E-mejlki za wróćostajenje hesłow sej wobhladać", "right-managechangetags": "[[Special:Tags|Markěrowanja]] wutworić a z(nje)móžnić", "right-applychangetags": "[[Special:Tags|Markěrowanja]] hromadźe ze změnami nałožować", "newuserlogpage": "Protokol nowych wužiwarjow", @@ -1265,7 +1257,7 @@ "uploaddisabledtext": "Nahraće datajow je znjemóžnjene.", "php-uploaddisabledtext": "Nahraća PHP-datajow su znjemóžnjene. ProÅ¡u skontroluj nastajenje file_uploads.", "uploadscripted": "Dataja wobsahuje HTML- abo skriptowy kod, kotryž móhł so mylnje přez wobhladowak wuwjesć.", - "uploadscriptednamespace": "Tuta SVG-dataja wobsahuje njedowoleny mjenowy rum '$1'", + "uploadscriptednamespace": "Tuta SVG-dataja wobsahuje njedowoleny mjenowy rum '<nowiki>$1</nowiki>'", "uploadinvalidxml": "XML w nahratej dataji njeda so parsować.", "uploadvirus": "Dataja wirus wobsahuje! Podrobnosće: $1", "uploadjava": "Tuta dataja je ZIP-dataja, kotraž .class-dataju z Javy wobsahuje.\nNahraće datajow Javy njeje dowolene, dokelž móhli wobeńdźenje wěstotnych wobmjezowanjow zmóžnić.", @@ -1950,7 +1942,7 @@ "badipaddress": "Njepłaćiwa IP-adresa", "blockipsuccesssub": "Zablokowanje wuspěšne", "blockipsuccesstext": "[[Special:Contributions/$1|$1]] bu {{GENDER:$1|zablokowany|zablokowana}}.<br />\nHlej [[Special:BlockList|lisćinu blokowanjow]], zo by zablokowanjow pruwował.", - "ipb-blockingself": "ChceÅ¡ samoho blokować! ChceÅ¡ to woprawdźe činić?", + "ipb-blockingself": "ChceÅ¡ runje sebi sam blokować! ChceÅ¡ to woprawdźe činić?", "ipb-confirmhideuser": "ChceÅ¡ runje wužiwarja z nastajenjom \"wužiwarja schować\" blokować. To k tomu dowjedźe, zo mjeno wužiwarja so we wÅ¡ch lisćinach a protokolowych zapiskach potłóči. ChceÅ¡ to woprawdźe činić?", "ipb-confirmaction": "Jeli sy sej wěsty, zo chceÅ¡ to woprawdźe činić, přepruwuj proÅ¡u deleka polo \"{{int:ipb-confirm}}\".", "ipb-edit-dropdown": "přičiny zablokowanjow wobdźěłać", @@ -3058,45 +3050,12 @@ "feedback-useragent": "Identifikator wobhladowaka:", "searchsuggest-search": "Pytać", "searchsuggest-containing": "wobsahuje...", - "api-error-badaccess-groups": "NimaÅ¡ prawo dataje do tutoho wikija nahrać.", "api-error-badtoken": "Nutřkowny zmylk: Wopačny token.", - "api-error-copyuploaddisabled": "Nahrawanje přez URL je na tutym serwerje znjemóžnjene.", - "api-error-duplicate": "{{PLURAL:$1|Je|Stej|Su}} hižo {{PLURAL:$1|druha dataja|druhej dataji|druhe dataje}} ze samsnym wobsahom na sydle.", - "api-error-duplicate-archive": "{{PLURAL:$1|Bě druha dataja|Běštej druhej dataji|Běchu druhe dataje|Bě druhich datajow}} hižo na websydle ze samsnym wobsahom, ale {{PLURAL:$1|je so zhaÅ¡ała|stej so zhaÅ¡ałoj|su so zhaÅ¡eli|je so zhaÅ¡ało}}.", - "api-error-empty-file": "Dataja, kotruž sy nahrał, je prózdna.", "api-error-emptypage": "Wutworjenje nowych, prózdnych stronow njeje dowolene.", - "api-error-fetchfileerror": "Nutřkowny zmylk: při wobstarowanju dataje je so něšto nimokuliło.", - "api-error-fileexists-forbidden": "Dataja z mjenom \"$1\" hižo eksistuje, a njeda so přepisać.", - "api-error-fileexists-shared-forbidden": "Dataja z mjenom \"$1\" hižo eksistuje w zhromadnym datajowym repozitoriju a njeda so přepisać.", - "api-error-file-too-large": "Dataja, kotruž sy nahrał, bě přewulka.", - "api-error-filename-tooshort": "Datajowe mjeno překrótko", - "api-error-filetype-banned": "Tutón datajowy typ je zawrjeny.", - "api-error-filetype-banned-type": "$1 {{PLURAL:$4|dowoleny datajowy typ njeje|dowolenej datajowej typaj njejstej|dowolene datajowe typy njejsu|dowolene datajowe typy njejsu}}. {{PLURAL:$3|Dowoleny datajowy typ je|Dowolenej datajowej typaj stej|Dowolene datajowe typy su|Dowolene datajowe typy su}} $2.", - "api-error-filetype-missing": "Dataja nima datajowu kóncowku.", - "api-error-hookaborted": "Změna, kotruž pospytowaÅ¡e přewjesć, bu přez rozšěrjensku hoku přetorhnjena.", - "api-error-http": "Nutřkowny zmylk: Zwisk ze serwerom njemóžno.", - "api-error-illegal-filename": "Datajowe mjeno njedowolene.", - "api-error-internal-error": "Nutřkowny zmylk: Při předźěłowanju twojeho nahraća na wiki je so něšto nimokuliło.", - "api-error-invalid-file-key": "Nutřkowny zmylk: dataja njeje so w nachwilnym składowaku namakała.", - "api-error-missingparam": "Nutřkowny zmylk: falowace parametry při napraÅ¡owanju.", - "api-error-missingresult": "Nutřkowny zmylk: njeda so zwěsćić, hač kopěrowanje je so poradźiło.", - "api-error-mustbeloggedin": "DyrbiÅ¡ přizjewjeny być, zo by dataje nahrał.", - "api-error-mustbeposted": "Nutřkowny zmylk: NapraÅ¡owanje wužaduje sej HTTP POST.", - "api-error-noimageinfo": "Nahraće je so poradźiło, ale serwer njeje nam žane informacije wo dataji dał.", - "api-error-nomodule": "Nutřkowny zmylk: Žadyn modul nastajeny.", - "api-error-ok-but-empty": "Nutřkowny zmylk: žana wotmołwa wot serwera.", - "api-error-overwrite": "Přepisowanje eksistowaceje dataje njeje dowolene.", - "api-error-stashfailed": "Nutřkowny zmylk: Serwer njemóžeÅ¡e nachwilnu dataju składować.", "api-error-publishfailed": "Nutřkowny zmylk: Serwer njemóžeÅ¡e nachwilnu dataju wozjewić.", - "api-error-stasherror": "Při nahrawanju dataje do chowanki je zmylk wusutpił.", - "api-error-timeout": "Serwer njeje znutřka wočakowaneho časa wotmołwił.", - "api-error-unclassified": "Njeznaty zmylk je wustupił.", - "api-error-unknown-code": "Njeznaty zmylk: \"$1\"", - "api-error-unknown-error": "Nutřkowny zmylk: Při nahrawanju twojeje dataje je so něšto nimokuliło.", + "api-error-stashfailed": "Nutřkowny zmylk: Serwer njemóžeÅ¡e nachwilnu dataju składować.", "api-error-unknown-warning": "Njeznate warnowanje: $1", "api-error-unknownerror": "Njeznaty zmylk: \"$1\".", - "api-error-uploaddisabled": "Nahraća su na tutym wikiju znjemóžnjene.", - "api-error-verification-error": "Tuta dataja móhła wobkÅ¡kodźena być abo wopačny sufiks měć.", "duration-seconds": "$1 {{PLURAL:$1|sekunda|sekundźe|sekundy|sekundow}}", "duration-minutes": "$1 {{PLURAL:$1|mjeńšina|mjeńšinje|mjeńšiny|mjeńšin}}", "duration-hours": "$1 {{PLURAL:$1|hodźina|hodźinje|hodźiny|hodźin}}", diff --git a/languages/i18n/hu.json b/languages/i18n/hu.json index ce3aabac8e..20d3ce7380 100644 --- a/languages/i18n/hu.json +++ b/languages/i18n/hu.json @@ -44,7 +44,8 @@ "JulesWinnfield-hu", "Bencoke", "Máté", - "Wolf Rex" + "Wolf Rex", + "BanKris" ] }, "tog-underline": "Hivatkozások aláhúzása:", @@ -70,7 +71,7 @@ "tog-enotifwatchlistpages": "Kapjak értesítést e-mailben, ha egy általam figyelt lap vagy fájl megváltozik", "tog-enotifusertalkpages": "Kapjak értesítést e-mailben, ha megváltozik a vitalapom", "tog-enotifminoredits": "Kapjak értesítést e-mailben a lapok és fájlok apró változtatásairól", - "tog-enotifrevealaddr": "Jelenjen meg az e-mail címem a figyelmeztető e-mailekben", + "tog-enotifrevealaddr": "Jelenjen meg az e-mail-címem az értesítő e-mailekben", "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)", @@ -212,6 +213,7 @@ "searcharticle": "Menj", "history": "Laptörténet", "history_short": "Laptörténet", + "history_small": "laptörténet", "updatedmarker": "az utolsó látogatásom óta frissítették", "printableversion": "Nyomtatható változat", "permalink": "Hivatkozás erre a változatra", @@ -244,6 +246,7 @@ "views": "Nézetek", "toolbox": "Eszközök", "tool-link-userrights": "{{GENDER:$1|Felhasználócsoportok}} módosítása", + "tool-link-userrights-readonly": "{{GENDER:$1|Felhasználói}} csoportok megtekintése", "tool-link-emailuser": "E-mail küldése ennek a {{GENDER:$1|felhasználónak}}", "userpage": "Felhasználó lapjának megtekintése", "projectpage": "Projektlap megtekintése", @@ -450,19 +453,12 @@ "login": "Bejelentkezés", "login-security": "Személyazonosságod igazolása", "nav-login-createaccount": "Bejelentkezés / fiók létrehozása", - "userlogin": "Bejelentkezés / fiók létrehozása", - "userloginnocreate": "Bejelentkezés", "logout": "Kijelentkezés", "userlogout": "Kijelentkezés", "notloggedin": "Nem vagy bejelentkezve", "userlogin-noaccount": "Nem rendelkezel még felhasználói fiókkal?", "userlogin-joinproject": "Csatlakozz a(z) {{SITENAME}} wikihez", - "nologin": "Nem rendelkezel még felhasználói fiókkal? $1.", - "nologinlink": "Itt regisztrálhatsz", "createaccount": "Regisztráció", - "gotaccount": "Már van fiókod? $1.", - "gotaccountlink": "Bejelentkezés", - "userlogin-resetlink": "Elfelejtetted a bejelentkezési adataidat?", "userlogin-resetpassword-link": "Elfelejtetted a jelszavad?", "userlogin-helplink2": "Segítség a bejelentkezéshez", "userlogin-loggedin": "Már be vagy jelentkezve mint {{GENDER:$1|$1}}. Ha más néven akarsz belépni, alább megteheted.", @@ -475,7 +471,6 @@ "createaccountmail": "Átmeneti, véletlenszerű jelszó beállítása és kiküldése a megadott e-mail címre", "createaccountmail-help": "A jelszó megismerése nélkül készíthető valaki másnak fiók.", "createacct-realname": "Igazi neved (nem kötelező)", - "createaccountreason": "Indoklás:", "createacct-reason": "Indoklás", "createacct-reason-ph": "Miért hozol létre egy másik fiókot", "createacct-reason-help": "A fióklétrehozási naplóban megjelenő üzenet", @@ -606,8 +601,6 @@ "passwordreset-emaildisabled": "Az e-mail funkció le van tiltva ezen a wikin.", "passwordreset-username": "Felhasználónév:", "passwordreset-domain": "Tartomány:", - "passwordreset-capture": "Meg szeretnéd nézni az elkészült üzenetet?", - "passwordreset-capture-help": "Ha kipipálod a dobozt, elmegy az üzenet a felhasználónak és megjelenik számodra (az ideiglenes jelszóval együtt).", "passwordreset-email": "E-mail cím:", "passwordreset-emailtitle": "A(z) {{SITENAME}}-fiók adatai", "passwordreset-emailtext-ip": "Valaki (vélhetően Te, a $1 IP-címről) a jelszavad visszaállítását kérte a {{SITENAME}} ($4) oldalon felvett {{PLURAL:$3|fiókban|fiókokban}}. A következő felhasználói {{PLURAL:$3|fiók van|fiókok vannak}} hozzárendelve ehhez az e-mail címhez:\n\n$2\n\n{{PLURAL:$3|Ez az ideiglenes jelszó|Ezek az ideiglenes jelszavak}} $5 nap múlva {{PLURAL:$3|jár|járnak}} le. Jelentkezz be, és cseréld le a jelszavadat. Ha valaki más kérte az emlékeztetőt, vagy eszedbe jutott a régi jelszó, és nem akarod lecserélni a jelszavadat, hagyd figyelmen kívül ezt az üzenetet, és használd a régi jelszavadat.", @@ -615,8 +608,6 @@ "passwordreset-emailelement": "Felhasználónév: \n$1\n\nIdeiglenes jelszó: \n$2", "passwordreset-emailsentemail": "Ha ez az e-mail-cím van a fiókodhoz társítva, egy jelszó-visszaállító e-mailt küldünk.", "passwordreset-emailsentusername": "Ha ehhez a felhasználónévhez tartozik e-mail cím, akkor egy jelszó-visszaállító levelet küld a rendszer.", - "passwordreset-emailsent-capture2": "A jelszóvisszaállító {{PLURAL:$1|e-mailt|e-maileket}} elküldtük. A {{PLURAL:$1|felhasználónév és a jelszó|felhasználónevek és jelszavak listája}} itt látható.", - "passwordreset-emailerror-capture2": "Az e-mail-küldés {{GENDER:$2|sikertelen}}: $1. A {{PLURAL:$3|felhasználónév és a jelszó|felhasználónevek és jelszavak listája}} itt látható.", "passwordreset-nocaller": "A hívó megadása kötelező", "passwordreset-nosuchcaller": "A hívó nem létezik: $1", "passwordreset-ignored": "A jelszó-visszaállítás nem lett kezelve. Talán nincs konfigurálva szolgáltató?", @@ -681,8 +672,9 @@ "subject-preview": "Tárgy előnézete:", "previewerrortext": "Hiba történt a változások előnézete megjelenítése során.", "blockedtitle": "A szerkesztő blokkolva van", - "blockedtext": "'''A szerkesztőnevedet vagy az IP-címedet blokkoltuk.'''\n\nA blokkolást $1 végezte el.\nAz általa felhozott indok: ''$2''.\n\n* A blokk kezdete: $8\n* A blokk lejárata: $6\n* Blokkolt szerkesztő: $7\n\nKapcsolatba léphetsz $1 szerkesztőnkkel, vagy egy másik [[{{MediaWiki:Grouppage-sysop}}|adminisztrátorral]], és megbeszélheted vele a blokkolást.\nAz 'E-mail küldése ennek a szerkesztőnek' funkciót csak akkor használhatod, ha érvényes e-mail címet adtál meg\n[[Special:Preferences|fiókbeállításaidban]], és nem blokkolták a használatát.\nJelenlegi IP-címed: $3, a blokkolás azonosítószáma: #$5.\nKérjük, hogy érdeklődés esetén mindkettőt add meg.", + "blockedtext": "<strong>A szerkesztőnevedet vagy az IP-címedet blokkoltuk.</strong>\n\nA blokkolást $1 végezte el.\nAz általa felhozott indok: <em>$2.</em>\n\n* A blokk kezdete: $8\n* A blokk lejárata: $6\n* Blokkolt szerkesztő: $7\n\nKapcsolatba léphetsz $1 szerkesztőnkkel vagy egy másik [[{{MediaWiki:Grouppage-sysop}}|adminisztrátorral]], és megbeszélheted vele a blokkolást.\nAz „E-mail küldése ennek a szerkesztőnek” funkciót csak akkor használhatod, ha érvényes e-mail címet adtál meg [[Special:Preferences|fiókbeállításaidban]], és nem blokkolták a használatát.\nJelenlegi IP-címed: $3, a blokkolás azonosítószáma: #$5.\nKérjük, hogy érdeklődés esetén minden fenti részletet adj meg.", "autoblockedtext": "Az IP-címed automatikusan blokkolva lett, mert korábban egy olyan szerkesztő használta, akit $1 blokkolt, az alábbi indoklással:\n\n:''$2''\n\n*A blokk kezdete: '''$8'''\n*A blokk lejárata: '''$6'''\n*Blokkolt szerkesztő: '''$7'''\n\nKapcsolatba léphetsz $1 szerkesztőnkkel, vagy egy másik [[{{MediaWiki:Grouppage-sysop}}|adminisztrátorral]], és megbeszélheted vele a blokkolást.\n\nAz 'E-mail küldése ennek a szerkesztőnek' funkciót csak akkor használhatod, ha érvényes e-mail címet adtál meg\n[[Special:Preferences|fiókbeállításaidban]], és nem blokkolták a használatát.\n\nJelenlegi IP-címed: $3, a blokkolás azonosítószáma: #$5.\nKérjük, hogy érdeklődés esetén mindkettőt add meg.", + "systemblockedtext": "A felhasználónevedet vagy IP-címedet automatikusan blokkolta a MediaWiki.\nA blokkolás indoka:\n\n:<em>$2</em>\n\n* A blokk kezdete: $8\n* A blokk lejárata: $6\n* Blokkolt szerkesztő: $7\n\nA jelenlegi IP-címed: $3.\nKérjük, hogy érdeklődés esetén minden fenti részletet adj meg.", "blockednoreason": "nem adott meg okot", "whitelistedittext": "Lapok szerkesztéséhez $1.", "confirmedittext": "Lapok szerkesztése előtt meg kell erősítened az e-mail címedet. Kérjük, hogy a [[Special:Preferences|szerkesztői beállításaidban]] add meg, majd erősítsd meg az e-mail címedet.", @@ -984,6 +976,7 @@ "search-interwiki-caption": "Társlapok", "search-interwiki-default": "$1 találatok:", "search-interwiki-more": "(több)", + "search-interwiki-more-results": "további eredmények", "search-relatedarticle": "Kapcsolódó", "searchrelated": "kapcsolódó", "searchall": "mind", @@ -1032,8 +1025,6 @@ "saveprefs": "Mentés", "restoreprefs": "A beállítások alaphelyzetbe állítása minden szakaszban", "prefs-editing": "Szerkesztés", - "rows": "Sor", - "columns": "Oszlop", "searchresultshead": "Keresés", "stub-threshold": "A hivatkozások csonkként történő formázásának határa ($1):", "stub-threshold-sample-link": "minta", @@ -1044,7 +1035,7 @@ "prefs-help-recentchangescount": "Ez vonatkozik a friss változtatásokra, laptörténetekre és naplókra is.", "prefs-help-watchlist-token2": "Ez a titkos kulcs a figyelőlistádhoz.\nAki ismeri, meg tudja nézni, milyen lapokat figyelsz, úgyhogy ne oszdd meg másokkal.\n[[Special:ResetTokens|Kattints ide, ha meg akarod változtatni]].", "savedprefs": "Az új beállításaid érvénybe léptek.", - "savedrights": "$1 felhasználói jogai el lettek mentve.", + "savedrights": "{{GENDER:$1|$1}} felhasználói csoportjai el lettek mentve.", "timezonelegend": "Időzóna:", "localtime": "Helyi idő:", "timezoneuseserverdefault": "Az alapértelmezett beállítás használata ($1)", @@ -1074,6 +1065,7 @@ "youremail": "Az e-mail címed:", "username": "{{GENDER:$1|Szerkesztőnév}}:", "prefs-memberingroups": "{{GENDER:$2|{{PLURAL:$1|Csoporttagság|Csoporttagságok}}}}:", + "group-membership-link-with-expiry": "$1 (a következő időpontig: $2)", "prefs-registration": "Regisztráció ideje:", "yourrealname": "Valódi neved:", "yourlanguage": "A felület nyelve:", @@ -1113,11 +1105,13 @@ "prefswarning-warning": "A beállításaidban tett módosítások nincsenek elmentve. Ha a $1 megnyomása nélkül hagyod el az oldalt, a beállításaid nem módosulnak.", "prefs-tabs-navigation-hint": "Tipp: a jobbra-balra nyilakkal navigálhatsz a fülek között.", "userrights": "Szerkesztői jogok beállítása", - "userrights-lookup-user": "Szerkesztőcsoportok beállítása", + "userrights-lookup-user": "Válasszon ki egy felhasználót", "userrights-user-editname": "Add meg a szerkesztő nevét:", - "editusergroup": "{{GENDER:$1|Szerkesztőcsoportok}} módosítása", + "editusergroup": "Szerkesztőcsoportok betöltése", "editinguser": "<strong>[[User:$1|$1]]</strong> felhasználó jogainak megváltoztatása $2", + "viewinguserrights": "<strong>[[User:$1|$1]]</strong> felhasználói csoportjainak megtekintése $2", "userrights-editusergroup": "Szerkesztőcsoportok módosítása", + "userrights-viewusergroup": "{{GENDER:$1|Felhasználói}}csoportok megtekintése", "saveusergroups": "{{GENDER:$1|Szerkesztőcsoportok}} mentése", "userrights-groupsmember": "Csoporttag:", "userrights-groupsmember-auto": "Alapértelmezetten tagja:", @@ -1125,12 +1119,17 @@ "userrights-reason": "Ok:", "userrights-no-interwiki": "Nincs jogod a szerkesztők jogainak módosításához más wikiken.", "userrights-nodatabase": "$1 adatbázis nem létezik vagy nem helyi.", - "userrights-nologin": "[[Special:UserLogin|Be kell jelentkezned]] egy adminisztrátori fiókkal, hogy szerkesztői jogokat adhass.", - "userrights-notallowed": "Nincs jogosultságod jogosultságok adására vagy elvételére.", "userrights-changeable-col": "Megváltoztatható csoportok", "userrights-unchangeable-col": "Nem megváltoztatható csoportok", + "userrights-expiry-current": "Lejár ekkor: $1", + "userrights-expiry-none": "Nem jár le", + "userrights-expiry": "Lejárat:", + "userrights-expiry-existing": "Jelenleg érvényben lévő lejárati idő: $2, $3", + "userrights-expiry-othertime": "Más idő:", + "userrights-expiry-options": "1 nap:1 day,1 hét:1 week,1 hónap:1 month,3 hónap:3 months,6 hónap:6 months,1 év:1 year", + "userrights-invalid-expiry": "A(z) „$1” csoport lejárati ideje érvénytelen.", + "userrights-expiry-in-past": "A(z) „$1” csoport lejárati ideje már elmúlt.", "userrights-conflict": "Felhasználói jogok ütközése! Kérlek, végezd el újra a változtatásokat.", - "userrights-removed-self": "Eltávolítottad a saját jogosultságaidat, így már nem tudod elérni ezt az oldalt.", "group": "Csoport:", "group-user": "szerkesztők", "group-autoconfirmed": "automatikusan megerősített szerkesztők", @@ -1221,7 +1220,6 @@ "right-siteadmin": "adatbázis lezárása, felnyitása", "right-override-export-depth": "Lapok exportálása a hivatkozott lapokkal együtt, legfeljebb 5-ös mélységig", "right-sendemail": "e-mail küldése más felhasználóknak", - "right-passwordreset": "Jelszó visszaállítási emailek megtekintése", "right-managechangetags": "[[Special:Tags|címkék]] létrehozása és (de)aktiválása", "right-applychangetags": "[[Special:Tags|címkék]] alkalmazása saját változatokra", "right-changetags": "egyedi lapváltozatokon és naplóbejegyzéseken tetszőleges [[Special:Tags|címkék]] hozzáadása és törlése", @@ -1258,6 +1256,7 @@ "grant-basic": "alapvető jogosultságok", "grant-viewdeleted": "törölt fájlok és lapok megtekintése", "grant-viewmywatchlist": "figyelőlista megtekintése", + "grant-viewrestrictedlogs": "korlátozott naplóbejegyzések megtekintése", "newuserlogpage": "Új szerkesztők naplója", "newuserlogpagetext": "Ez a napló az újonnan regisztrált szerkesztők listáját tartalmazza.", "rightslog": "Szerkesztői jogosultságok naplója", @@ -1281,11 +1280,13 @@ "action-upload_by_url": "fájl feltöltése URL-címről", "action-writeapi": "író API használata", "action-delete": "lap törlése", - "action-deleterevision": "változat törlése", + "action-deleterevision": "változatok törlése", + "action-deletelogentry": "naplóbejegyzések törlése", "action-deletedhistory": "lap törölt laptörténetének megtekintése", + "action-deletedtext": "törölt lapváltozat szövegének megtekintése", "action-browsearchive": "keresés a törölt lapok között", - "action-undelete": "lap helyreállítása", - "action-suppressrevision": "rejtett változat megtekintése és helyreállítása", + "action-undelete": "lapok helyreállítása", + "action-suppressrevision": "rejtett változatok megtekintése és helyreállítása", "action-suppressionlog": "privát napló megtekintése", "action-block": "szerkesztő blokkolása", "action-protect": "lap védelmi szintjének megváltoztatása", @@ -1300,6 +1301,7 @@ "action-userrights-interwiki": "más wikik szerkesztői jogainak módosítása", "action-siteadmin": "adatbázis lezárása vagy felnyitása", "action-sendemail": "e-mailek küldése", + "action-editmyoptions": "saját beállításaid szerkesztése", "action-editmywatchlist": "saját figyelőlista szerkesztése", "action-viewmywatchlist": "saját figyelőlista megtekintése", "action-viewmyprivateinfo": "személyes adatok megtekintése", @@ -1326,6 +1328,50 @@ "recentchanges-legend-heading": "<strong>Jelmagyarázat:</strong>", "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (lásd még: [[Special:NewPages|új lapok listája]])", "recentchanges-submit": "Megjelenítés", + "rcfilters-activefilters": "Aktív szűrők", + "rcfilters-restore-default-filters": "Alapértelmezett szűrők visszaállítása", + "rcfilters-clear-all-filters": "Összes szűrő kikapcsolása", + "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-highlightmenu-title": "Válassz egy színt", + "rcfilters-filterlist-noresults": "Nem található szűrő", + "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-filtergroup-authorship": "Szerkesztő", + "rcfilters-filter-editsbyself-label": "Saját szerkesztéseid", + "rcfilters-filter-editsbyself-description": "Saját szerkesztések", + "rcfilters-filter-editsbyother-label": "Mások szerkesztései", + "rcfilters-filter-editsbyother-description": "Más felhasználók által végzett szerkesztések (nem sajátok)", + "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-learner-label": "Tanulók", + "rcfilters-filter-user-experience-level-learner-description": "Több aktív nap és szerkesztés, mint az „újoncok”, de kevesebb, mint a „tapasztalt szerkesztők”.", + "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-filtergroup-automated": "Automatikus szerkesztések", + "rcfilters-filter-bots-label": "Bot", + "rcfilters-filter-bots-description": "Automatizált eszközök szerkesztései.", + "rcfilters-filter-humans-label": "Ember (nem bot)", + "rcfilters-filter-humans-description": "Emberi szerkesztők szerkesztései", + "rcfilters-filter-patrolled-label": "Ellenőrzött", + "rcfilters-filter-patrolled-description": "Ellenőrzöttnek jelölt szerkesztések", + "rcfilters-filter-unpatrolled-label": "Ellenőrizetlen", + "rcfilters-filter-unpatrolled-description": "Ellenőrzöttnek nem jelölt szerkesztések", + "rcfilters-filter-minor-label": "Apró szerkesztések", + "rcfilters-filter-minor-description": "Szerző által aprónak jelölt szerkesztések", + "rcfilters-filter-major-label": "Nem apró szerkesztések", + "rcfilters-filter-major-description": "Nem aprónak jelölt szerkesztések.", + "rcfilters-filtergroup-changetype": "Változtatás típusa", + "rcfilters-filter-pageedits-label": "Lapszerkesztések", + "rcfilters-filter-newpages-label": "Laplétrehozások", + "rcfilters-filter-newpages-description": "Új oldalt létrehozó szerkesztések.", + "rcfilters-filter-categorization-label": "Kategóriaváltoztatások", + "rcfilters-filter-logactions-label": "Naplózott műveletek", + "rcfilters-filter-logactions-description": "Adminisztratív műveletek, fióklétrehozások, laptörlések, feltöltések…", "rcnotefrom": "Alább a <strong>$3 $4</strong> óta történt változtatások láthatóak (legfeljebb <b>$1</b> db).", "rclistfrom": "$3, $2 után történt változtatások megtekintése", "rcshowhideminor": "apró szerkesztések $1", @@ -1458,7 +1504,7 @@ "uploaded-setting-handler-svg": "Az SVG kódok, amelyek a \"handler\" attribútumot távolra/adatra/szkriptre állítják, le vannak tiltva. A feltöltött SVG fájlban a következőt találtam: <code>$1=\"$2\"</code>.", "uploaded-remote-url-svg": "Az SVG kódok, amelyek bármely stílus-attribútumot távoli URL-ra állítják, le vannak tiltva. A feltöltött SVG fájlban a következőt találtam: <code>$1=\"$2\"</code>.", "uploaded-image-filter-svg": "A feltöltött SVG fájl URL-t tartalmazó képfiltert tartalmaz: <code><$1 $2=\"$3\"></code>.", - "uploadscriptednamespace": "Ez az SVG fájl érvénytelen névteret (\"$1\") tartalmaz.", + "uploadscriptednamespace": "Ez az SVG fájl érvénytelen névteret (\"<nowiki>$1</nowiki>\") tartalmaz.", "uploadinvalidxml": "A feltöltött XML fájlt nem lehet feldolgozni.", "uploadvirus": "Ez a fájl vírust tartalmaz! A részletek: $1", "uploadjava": "A fájl egy ZIP-fájl, ami egy Java .class fájlt tartalmaz.\nJava fájlok feltöltése nem engedélyezett, mert segítségükkel kijátszhatóak a biztonsági korlátozások.", @@ -1735,6 +1781,7 @@ "uncategorizedcategories": "Kategorizálatlan kategóriák", "uncategorizedimages": "Kategorizálatlan fájlok", "uncategorizedtemplates": "Kategorizálatlan sablonok", + "uncategorized-categories-exceptionlist": "# Lista azokról a kategóriákról, amiknek nem szabad szerepelniük a Special:UncategorizedCategories oldalon. Soronként egy, „*” jellel kezdve. Más karakterrel (akár szóközzel) kezdődő sorok nem számítanak. Használd a „#” karaktert megjegyzésekhez.", "unusedcategories": "Nem használt kategóriák", "unusedimages": "Nem használt fájlok", "wantedcategories": "Keresett kategóriák", @@ -1834,6 +1881,7 @@ "apisandbox-loading-results": "API-válaszok fogadása…", "apisandbox-results-error": "Hiba történt az API-lekérdezés válaszának betöltése közben: $1.", "apisandbox-request-url-label": "Kérő URL:", + "apisandbox-request-json-label": "JSON kérése:", "apisandbox-request-time": "Kérés hossza: $1 ms", "apisandbox-results-fixtoken": "Token javítása és újrapróbálkozás", "apisandbox-results-fixtoken-fail": "A(z) „$1” token lekérése sikertelen.", @@ -1842,6 +1890,9 @@ "apisandbox-continue": "Folytatás", "apisandbox-continue-clear": "Törlés", "apisandbox-continue-help": "A {{int:apisandbox-continue}} [https://www.mediawiki.org/wiki/API:Query#Continuing_queries folytatja] az utolsó kérést; a {{int:apisandbox-continue-clear}} törli a folytatáshoz kapcsolódó paramétereket.", + "apisandbox-param-limit": "Használj <kbd>max</kbd>-ot a maximális értékhez.", + "apisandbox-multivalue-all-namespaces": "$1 (minden névtér)", + "apisandbox-multivalue-all-values": "$1 (minden érték)", "booksources": "Könyvforrások", "booksources-search-legend": "Könyvforrások keresése", "booksources-search": "Keresés", @@ -1898,6 +1949,8 @@ "activeusers-intro": "Ez a lap azon felhasználók listáját tartalmazza, akik végeztek valamilyen tevékenységet az elmúlt {{PLURAL:$1|egy|$1}} napban.", "activeusers-count": "$1 művelet az elmúlt $3 napban", "activeusers-from": "Szerkesztők listázása a következő névtől kezdve:", + "activeusers-groups": "A következő csoportokba tartozó felhasználók megjelenítése:", + "activeusers-excludegroups": "A következő csoportokba tartozó felhasználók kizárása:", "activeusers-noresult": "Nem található ilyen szerkesztő.", "activeusers-submit": "Aktív szerkesztők megjelenítése", "listgrouprights": "Szerkesztői csoportok jogai", @@ -1964,7 +2017,7 @@ "emailccsubject": "$1 szerkesztőnek küldött $2 tárgyú üzenet másolata", "emailsent": "E-mail elküldve", "emailsenttext": "E-mail üzenetedet elküldtük.", - "emailuserfooter": "Ezt az e-mailt $1 küldte $2 számára, az „{{int:emailuser}}” funkció használatával a(z) {{SITENAME}} wikin.", + "emailuserfooter": "Ezt az e-mailt $1 küldte $2 számára, az „{{int:emailuser}}” funkció használatával a(z) {{SITENAME}} wikin. Ha válaszolsz erre az üzenetre, az a választ közvetlenül az eredeti feladónak küldöd, felfedve az e-mail-címedet neki.", "usermessage-summary": "Rendszerüzenet megadása.", "usermessage-editor": "Rendszerüzenetek", "watchlist": "Figyelőlistám", @@ -2062,7 +2115,7 @@ "editcomment": "A szerkesztési összefoglaló <em>$1</em> volt.", "revertpage": "Visszaállítottam a lap korábbi változatát: [[Special:Contributions/$2|$2]] ([[User talk:$2|vita]]) szerkesztéséről [[User:$1|$1]] szerkesztésére", "revertpage-nouser": "Visszaállítottam a lap korábbi változatát (szerkesztőnév eltávolítva) szerkesztéséről [[User:$1|$1]] szerkesztésére", - "rollback-success": "$1 szerkesztéseit visszaállítottam $2 utolsó változatára.", + "rollback-success": "{{GENDER:$3|$1}} szerkesztéseit visszaállítottam {{GENDER:$4|$2}} utolsó változatára.", "rollback-success-notify": "$1 szerkesztései visszaállítva;\nhelyreállítva $2 utolsó változata. [$3 Változtatások megtekintése]", "sessionfailure-title": "Munkamenethiba", "sessionfailure": "Úgy látszik, hogy probléma van a bejelentkezési munkameneteddel;\nez a művelet a munkamenet eltérítése miatti óvatosságból megszakadt.\nKérjük, hogy nyomd meg a „vissza” gombot, és töltsd le újra az oldalt, ahonnan jöttél, majd próbáld újra.", @@ -2079,7 +2132,7 @@ "changecontentmodel-emptymodels-title": "Nincs elérhető tartalommodell", "changecontentmodel-emptymodels-text": "A(z) [[:$1]] lapon lévő tartalom nem alakítható át semmilyen típusúvá.", "log-name-contentmodel": "Tartalommodell-változások naplója", - "log-description-contentmodel": "Egy lap tartalommodelljéhez kapcsolódó események", + "log-description-contentmodel": "Ez a napló lapok tartalommodelljének változását és az alapértelmezettől eltérő tartalommodellel létrehozott lapokat listázza.", "logentry-contentmodel-new": "$1 {{GENDER:$2|létrehozta}} a(z) $3 lapot nem alapértelmezett „$5” tartalommodellel.", "logentry-contentmodel-change": "$1 {{GENDER:$2|megváltoztatta}} a(z) $3 lap tartalommodeljét erről: „$4” erre: „$5”", "logentry-contentmodel-change-revertlink": "visszaállítás", @@ -2090,6 +2143,9 @@ "modifiedarticleprotection": "megváltoztatta a(z) „[[$1]]” lap védelmi szintjét", "unprotectedarticle": "eltávolította a védelmet a(z) „[[$1]]” lapról", "movedarticleprotection": "áthelyezte „[[$2]]” védelmi beállításait „[[$1]]” cím alá", + "protectedarticle-comment": "„[[$1]]” {{GENDER:$2|levédve}}", + "modifiedarticleprotection-comment": "„[[$1]]” védelmi szintje {{GENDER:$2|módosítva}}", + "unprotectedarticle-comment": "„[[$1]]” lapvédelme {{GENDER:$2|feloldva}}", "protect-title": "„$1” levédése", "protect-title-notallowed": "„$1” védelmi szintjének megtekintése", "prot_1movedto2": "[[$1]] lapot átneveztem [[$2]] névre", @@ -2335,6 +2391,7 @@ "proxyblockreason": "Az IP-címeden ''nyílt proxy'' üzemel. Amennyiben nem használsz proxyt, vedd fel a kapcsolatot egy informatikussal vagy az internetszolgáltatóddal ezen súlyos biztonsági probléma ügyében.", "sorbsreason": "Az IP-címed nyitott proxyként szerepel e webhely által használt DNSBL listán.", "sorbs_create_account_reason": "Az IP-címed nyitott proxyként szerepel e webhely által használt DNSBL listán. Nem hozhatsz létre fiókot.", + "softblockrangesreason": "Az anonim szerkesztések nem engedélyezettek az IP-címedről ($1). Jelentkezz be a szerkesztéshez.", "xffblockreason": "Az X-Forwarded-For fejlécben lévő IP-cím, akár a tied, akár a használt proxy szerveré, blokkolva van. Az eredeti blokkolási ok: $1", "cant-see-hidden-user": "A felhasználó, akit blokkolni próbáltál már blokkolva és rejtve van. Mivel nincs felhasználó elrejtése jogosultságod, nem láthatod és nem szerkesztheted a felhasználó blokkját.", "ipbblocked": "Nem blokkolhatsz és nem oldhatod fel más felhasználók blokkjait, mert te magad is blokkolva vagy", @@ -2370,6 +2427,8 @@ "cant-move-to-user-page": "Nincs jogosultságod átnevezni egy lapot szerkesztői lapnak (kivéve annak allapjának).", "cant-move-category-page": "Nincs jogosultságod kategórialapok átnevezéséhez.", "cant-move-to-category-page": "Nincs jogosultságod átnevezni egy lapot kategórialapnak.", + "cant-move-subpages": "Nincs jogosultságod az allapok átnevezéséhez.", + "namespace-nosubpages": "A(z) „$1” névtérben nem használhatóak allapok.", "newtitle": "Az új cím:", "move-watch": "Figyeld a lapot", "movepagebtn": "Lap átnevezése", @@ -2623,6 +2682,7 @@ "pageinfo-length": "Lap hossza (bájtokban)", "pageinfo-article-id": "Lapazonosító", "pageinfo-language": "Laptartalom nyelve", + "pageinfo-language-change": "módosítás", "pageinfo-content-model": "Oldal tartalom modell", "pageinfo-content-model-change": "módosítás", "pageinfo-robot-policy": "Indexelés robottal", @@ -2677,6 +2737,8 @@ "patrol-log-header": "Ez az ellenőrzött változatok naplója.", "log-show-hide-patrol": "járőrnapló $1", "log-show-hide-tag": "címkenapló $1", + "confirm-markpatrolled-button": "OK", + "confirm-markpatrolled-top": "Ellenőrzöttnek jelölöd a(z) $2 lap $3 változatát?", "deletedrevision": "Régebbi változat törölve: $1", "filedeleteerror-short": "Hiba a fájl törlésekor: $1", "filedeleteerror-long": "Hibák merültek föl a következő fájl törlésekor:\n\n$1", @@ -3293,7 +3355,7 @@ "tags-deactivate": "deaktiválás", "tags-hitcount": "{{PLURAL:$1|Egy|$1}} változtatás", "tags-manage-no-permission": "Nincs engedélyed a változtatások címkéinek kezeléséhez.", - "tags-manage-blocked": "Nem tudja kezelni a változás kategóriát, amíg blokkolt.", + "tags-manage-blocked": "Nem kezelheted a módosításcímkéket, amíg blokkolva {{GENDER:$1|vagy}}.", "tags-create-heading": "Új címke létrehozása", "tags-create-explanation": "Alapértelmezés szerint az újonnan létrehozott címkék felhasználók és botok által manuálisan hozzáadhatók lesznek.", "tags-create-tag-name": "Címke neve:", @@ -3329,11 +3391,11 @@ "tags-deactivate-not-allowed": "Nem lehetséges a(z) „$1” címkét deaktiválni.", "tags-deactivate-submit": "Deaktiválás", "tags-apply-no-permission": "Nincs jogosultságod a szerkesztéseidet címkékkel ellátni.", - "tags-apply-blocked": "Nem módosíthatsz címkéket, amíg blokkolva vagy.", + "tags-apply-blocked": "Nem használhatsz módosításcímkéket a szerkesztéseidhez, amíg blokkolva {{GENDER:$1|vagy}}.", "tags-apply-not-allowed-one": "A(z) „$1” címke nem alkalmazható manuálisan.", "tags-apply-not-allowed-multi": "A következő {{PLURAL:$2|címke|címkék}} nem alkalmazhatók manuálisan: $1", "tags-update-no-permission": "Nincs jogosultságod egyedi változatok és naplóbejegyzések címkézésére és címkék eltávolítására.", - "tags-update-blocked": "Nem adhatsz hozzá vagy távolíthatsz el címkéket, amíg blokkolva vagy.", + "tags-update-blocked": "Nem adhatsz hozzá vagy távolíthatsz el címkéket, amíg blokkolva {{GENDER:$1|vagy}}.", "tags-update-add-not-allowed-one": "A(z) „$1” címke nem adható hozzá manuálisan.", "tags-update-add-not-allowed-multi": "A következő {{PLURAL:$2|címke|címkék}} nem adhatók hozzá manuálisan: $1", "tags-update-remove-not-allowed-one": "A „$1” címkét nem lehet törölni.", @@ -3410,6 +3472,7 @@ "htmlform-user-not-exists": "<strong>$1</strong> nem létezik.", "htmlform-user-not-valid": "<strong>$1</strong> nem egy érvényes felhasználónév.", "logentry-delete-delete": "$1 törölte a következő lapot: $3", + "logentry-delete-delete_redir": "$1 {{GENDER:$2|törölte}} a(z) $3 átirányítást felülírással", "logentry-delete-restore": "$1 helyreállította a következő lapot: $3", "logentry-delete-event": "$1 megváltoztatta {{PLURAL:$5|egy napló bejegyzés|$5 napló bejegyzés}} láthatóságát a(z) $3 című lapon: $4", "logentry-delete-revision": "$1 {{GENDER:$2|módosította}} a(z) $3 című lap {{PLURAL:$5|egy|$5}} lapváltozatának láthatóságát: $4", @@ -3476,7 +3539,7 @@ "logentry-tag-update-revision": "$1 {{GENDER:$2|frissítette}} a címkéket a(z) $3 lap $4 változatánál ({{PLURAL:$7|hozzáadva}}: $6; {{PLURAL:$9|eltávolítva}}: $8)", "logentry-tag-update-logentry": "$1 {{GENDER:$2|frissítette}} a címkéket a(z) $3 lap $5 napló bejegyzésénél ({{PLURAL:$7|hozzáadta}}: $6; {{PLURAL:$9|eltávolította}}: $8)", "rightsnone": "(semmi)", - "revdelete-summary": "a szerkesztési összefoglalóját", + "rightslogentry-temporary-group": "$1 (ideiglenesen, a következő időpontig: $2)", "feedback-adding": "Visszajelzés elmentése...", "feedback-back": "Vissza", "feedback-bugcheck": "Nagyszerű! Ellenőrizd, hogy ez nem egy [$1 ismert hiba].", @@ -3501,56 +3564,12 @@ "feedback-useragent": "User agent:", "searchsuggest-search": "Keresés a wikin", "searchsuggest-containing": "tartalmazza…", - "api-error-autoblocked": "Az IP-címed automatikusan blokkolva lett, mert korábban egy blokkolt szerkesztő használta.", - "api-error-badaccess-groups": "Nincs jogod fájlokat feltölteni erre a wikire.", "api-error-badtoken": "Belső hiba: hibás token.", - "api-error-blocked": "Letiltották a szerkesztési jogosultságodat.", - "api-error-copyuploaddisabled": "Az URL-címes feltöltés nem engedélyezett ezen a kiszolgálón.", - "api-error-duplicate": "Már van {{PLURAL:$1|egy|néhány}} másik fájl az oldalon ugyanilyen tartalommal.", - "api-error-duplicate-archive": "Az oldalon {{PLURAL:$1|szerepelt|szerepeltek}} más {{PLURAL:$1|fájl|fájlok}} is ugyanezzel a tartalommal, de törölve {{PLURAL:$1|lett|lettek}}.", - "api-error-empty-file": "Az általad elküldött fájl üres volt.", "api-error-emptypage": "Új, üres lap létrehozása nem engedélyezett.", - "api-error-fetchfileerror": "Belső hiba: valami baj történt a fájl beolvasása közben.", - "api-error-fileexists-forbidden": "Már létezik „$1” nevű fájl, és nem lehet felülírni.", - "api-error-fileexists-shared-forbidden": "Már létezik „$1” nevű fájl a megosztott fájlok között, és nem lehet felülírni.", - "api-error-file-too-large": "Az általad elküldött fájl túl nagy.", - "api-error-filename-tooshort": "A fájlnév túl rövid.", - "api-error-filetype-banned": "Tiltott fájltípus.", - "api-error-filetype-banned-type": "!A következő {{PLURAL:$4|fájltípus nem engedélyezett|fájltípusok nem engedélyezettek}}: $1. Engedélyezett {{PLURAL:$3|típus|típusok}}: $2.", - "api-error-filetype-missing": "Hiányzik a fájl kiterjesztése.", - "api-error-hookaborted": "Az általad kezdeményezett módosítást nem lehet végrehajtani. (Egy bővítmény megakadályozta.)", - "api-error-http": "Belső hiba: nem sikerült kapcsolódni a kiszolgálóhoz.", - "api-error-illegal-filename": "Nem megengedett fájlnév.", - "api-error-internal-error": "Belső hiba: valami baj történt a feltöltésed feldolgozása közben.", - "api-error-invalid-file-key": "Belső hiba: a fájl nem található az ideiglenes tárhelyen.", - "api-error-missingparam": "Belső hiba: paraméterek hiányoznak a kérésből.", - "api-error-missingresult": "Belső hiba: nem sikerült megállapítani, hogy a másolás sikeres volt-e.", - "api-error-mustbeloggedin": "Be kell jelentkezned fájlok feltöltéséhez.", - "api-error-mustbeposted": "Belső hiba: a kérésnek HTTP POST-nak kell lennie.", - "api-error-noimageinfo": "A feltöltés sikerült, de a szerver nem szolgáltatott semmilyen információt a fájlról.", - "api-error-nomodule": "Belső hiba: nincs feltöltőmodul beállítva.", - "api-error-ok-but-empty": "Belső hiba: nem érkezett válasz a kiszolgálótól.", - "api-error-overwrite": "Létező fájlok felülírására nem engedélyezett.", - "api-error-ratelimited": "A megengedettnél több fájlt próbálsz feltölteni rövid időn belül.\nPróbálkozz újra néhány perc múlva.", - "api-error-stashfailed": "Belső hiba: a kiszolgálünak nem sikerült eltárolni az ideiglenes fájlt.", "api-error-publishfailed": "Belső hiba: a kiszolgálónak nem sikerült közzétennie az ideiglenes fájlt.", - "api-error-stasherror": "Hiba történt a fájl feltöltése közben.", - "api-error-stashedfilenotfound": "Az félretett fájl nem található a feltöltés során.", - "api-error-stashpathinvalid": "Az félretett fájlhoz tartozó útvonal érvénytelen.", - "api-error-stashfilestorage": "Hiba történt a tartalék helyre történő mentés során.", - "api-error-stashzerolength": "A szerver nem tudta tartalékba tenni a fájlt, mert nulla a mérete.", - "api-error-stashnotloggedin": "Be kell jelentkezned a fájl feltöltéséhez.", - "api-error-stashwrongowner": "A elérni kívánt tartalék fájl nem a tied.", - "api-error-stashnosuchfilekey": "Az elérni kívánt tartalék fájl kulcs nem létezik.", - "api-error-timeout": "A kiszolgáló nem adott választ a várt időn belül.", - "api-error-unclassified": "Ismeretlen hiba történt", - "api-error-unknown-code": "Ismeretlen hiba: „$1”", - "api-error-unknown-error": "Belső hiba: valami baj történt a fájl feltöltése közben.", - "api-error-unknown-warning": "Ismeretlen figyelmeztetés: $1", + "api-error-stashfailed": "Belső hiba: a kiszolgálünak nem sikerült eltárolni az ideiglenes fájlt.", + "api-error-unknown-warning": "Ismeretlen figyelmeztetés: „$1”.", "api-error-unknownerror": "Ismeretlen hiba: „$1”.", - "api-error-uploaddisabled": "A feltöltés le van tiltva ezen a wikin.", - "api-error-verification-error": "A fájl feltehetőleg sérült, vagy hibás a kiterjesztése.", - "api-error-was-deleted": "Ilyen nevű fájlt már töltöttek fel, majd törölték.", "duration-seconds": "{{PLURAL:$1|másodperc|másodperc}}", "duration-minutes": "$1 {{PLURAL:$1|perc|perc}}", "duration-hours": "{{PLURAL:$1|egy|$1}} óra", @@ -3595,7 +3614,11 @@ "pagelang-language": "Nyelv", "pagelang-use-default": "Alapértelmezett nyelv használata", "pagelang-select-lang": "Nyelv kiválasztása", + "pagelang-reason": "Indoklás", "pagelang-submit": "Küldés", + "pagelang-nonexistent-page": "A(z) $1 lap nem létezik.", + "pagelang-unchanged-language": "A(z) $1 lap már $2 nyelvű.", + "pagelang-unchanged-language-default": "A(z) $1 lap már a wiki alapértelmezett tartalomnyelvére van állítva.", "right-pagelang": "oldal nyelvének megváltoztatása", "action-pagelang": "oldal nyelvének módosítása", "log-name-pagelang": "Nyelvváltoztatások naplója", @@ -3662,8 +3685,11 @@ "mw-widgets-dateinput-no-date": "Nincs kiválasztott dátum", "mw-widgets-dateinput-placeholder-day": "ÉÉÉÉ-HH-NN", "mw-widgets-dateinput-placeholder-month": "ÉÉÉÉ-HH", + "mw-widgets-mediasearch-input-placeholder": "Média keresése", + "mw-widgets-mediasearch-noresults": "Nincs találat.", "mw-widgets-titleinput-description-new-page": "a lap még nem létezik", "mw-widgets-titleinput-description-redirect": "átirányítás ide: $1", + "mw-widgets-categoryselector-add-category-placeholder": "Kategória hozzáadása…", "sessionmanager-tie": "Nem kombinálható többféle hitelesítési típus: $1.", "sessionprovider-generic": "$1-munkamenetek", "sessionprovider-mediawiki-session-cookiesessionprovider": "sütialapú munkamenetek", @@ -3687,6 +3713,7 @@ "log-action-filter-contentmodel-change": "Tartalommodell módosítása", "log-action-filter-contentmodel-new": "Lap létrehozása nem alapértelmezett tartalommodellel", "log-action-filter-delete-delete": "Laptörlés", + "log-action-filter-delete-delete_redir": "Átirányítás felülírása", "log-action-filter-delete-restore": "Visszaállítás", "log-action-filter-delete-event": "Naplótörlés", "log-action-filter-delete-revision": "Lapváltozat-törlés", @@ -3788,7 +3815,7 @@ "usercssispublic": "Figyelem: CSS-allapokon ne tárolj bizalmas adatokat, mivel minden felhasználó számára láthatóak.", "restrictionsfield-badip": "Érvénytelen IP-cím vagy -tartomány: $1", "restrictionsfield-label": "Engedélyezett IP-tartományok:", - "restrictionsfield-help": "Egy IP-cím vagy CIDR-tartomány soronként. Minden engedélyezéséhez használd a következő tartományokat:<br><code>0.0.0.0/0</code><br><code>::/0</code>", - "edit-error-short": "Hiba: $1", - "edit-error-long": "Hibák:\n\n$1" + "restrictionsfield-help": "Egy IP-cím vagy CIDR-tartomány soronként. Minden engedélyezéséhez használd a következő tartományokat:\n<pre>\n0.0.0.0/0\n::/0\n</pre>", + "revid": "$1 változat", + "pageid": "$1 lapazonosító" } diff --git a/languages/i18n/hy.json b/languages/i18n/hy.json index e5cbf842d6..1bceb36d9c 100644 --- a/languages/i18n/hy.json +++ b/languages/i18n/hy.json @@ -195,7 +195,7 @@ "searcharticle": "Անցնել", "history": "Ô·Õ»Õ« պատմություն", "history_short": "Պատմություն", - "updatedmarker": "թարմացվել Õ§ Õ«Õ´ վերջին այցից Õ°Õ¥Õ¿Õ¸", + "updatedmarker": "փոփոխվել Õ§ ձեր վերջին այցից Õ°Õ¥Õ¿Õ¸", "printableversion": "Տպելու տարբերակ", "permalink": "Մշտական հղում", "print": "Տպել", @@ -512,24 +512,24 @@ "retypenew": "Հաստատեք նոր Õ£Õ¡Õ²Õ¿Õ¶Õ¡Õ¢Õ¡Õ¼Õ¨.", "resetpass_submit": "Հաստատել Õ£Õ¡Õ²Õ¿Õ¶Õ¡Õ¢Õ¡Õ¼Õ¨ և Õ´Õ¿Õ¶Õ¥Õ¬ համակարգ", "changepassword-success": "Ձեր Õ£Õ¡Õ²Õ¿Õ¶Õ¡Õ¢Õ¡Õ¼Õ¨ փոփոխվեց։", - "botpasswords": "Բոտերի ծածկագրեր", - "botpasswords-disabled": "Բոտերի ծածկագրերն Õ¡Õ¶Õ»Õ¡Õ¿Õ¾Õ¡Õ® Õ¥Õ¶:", - "botpasswords-existing": "Գոյություն ունեցող Õ¢Õ¸Õ¿Õ¡ÕµÕ«Õ¶ ծածկագրերը", - "botpasswords-createnew": "Ստեղծել նոր Õ¢Õ¸Õ¿Õ¡ÕµÕ«Õ¶ ծածկագիր", - "botpasswords-editexisting": "Խմբագրել Õ¡Õ¼Õ¯Õ¡ Õ¢Õ¸Õ¿Õ¡ÕµÕ«Õ¶ ծածկագիրը", + "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-resetpassword": "Վերականգնել Õ£Õ¡Õ²Õ¿Õ¶Õ¡Õ¢Õ¡Õ¼Õ¨", "botpasswords-label-grants-column": "Թույլատրված Õ§", "botpasswords-bad-appid": "\"$1\" Õ¢Õ¸Õ¿Õ« անունն անթույլատրելի Õ§:", "botpasswords-created-title": "Ô²Õ¸Õ¿Õ« ծածկագիրը Õ½Õ¿Õ¥Õ²Õ®Õ¾Õ¥Õ¬ Õ§", "botpasswords-created-body": "$2 մասնակցի $1 Õ¢Õ¸Õ¿Õ« համար Õ¢Õ¸Õ¿Õ« ծածկագիրը Õ½Õ¿Õ¥Õ²Õ®Õ¾Õ¥Õ¬ Õ§:", - "botpasswords-updated-title": "Ô²Õ¸Õ¿Õ« ծածկագիրը թարմացվել Õ§", - "botpasswords-updated-body": "$2 մասնակցի $1 Õ¢Õ¸Õ¿Õ« համար Õ¢Õ¸Õ¿Õ« ծածկագիրը Õ½Õ¿Õ¥Õ²Õ®Õ¾Õ¥Õ¬ Õ§:", - "botpasswords-deleted-title": "Ô²Õ¸Õ¿Õ« ծածկագիրը Õ»Õ¶Õ»Õ¾Õ¡Õ® Õ§", + "botpasswords-updated-title": "Ô²Õ¸Õ¿Õ« Õ£Õ¡Õ²Õ¿Õ¶Õ¡Õ¢Õ¡Õ¼Õ¨ թարմացվել Õ§", + "botpasswords-updated-body": "$2 մասնակցի $1 Õ¢Õ¸Õ¿Õ« Õ£Õ¡Õ²Õ¿Õ¶Õ¡Õ¢Õ¡Õ¼Õ¨ փոփոխվեց:", + "botpasswords-deleted-title": "Ô²Õ¸Õ¿Õ« Õ£Õ¡Õ²Õ¿Õ¶Õ¡Õ¢Õ¡Õ¼Õ¨ ջնջվեց", "botpasswords-deleted-body": "$2 մասնակցի $1 Õ¢Õ¸Õ¿Õ« համար Õ¢Õ¸Õ¿Õ« ծածկագիրը Õ»Õ¶Õ»Õ¾Õ¥Õ¬ Õ§:", "resetpass_forbidden": "Ô³Õ¡Õ²Õ¿Õ¶Õ¡Õ¢Õ¡Õ¼Õ¨ Õ¹Õ« կարող փոխվել", "resetpass-no-info": "Ô±ÕµÕ½ Õ§Õ»Õ«Õ¶ ուղիղ դիմելու համար անհրաժեշտ Õ§ Õ´Õ¿Õ¶Õ¥Õ¬ համակարգ։", diff --git a/languages/i18n/ia.json b/languages/i18n/ia.json index 463ec8a37a..f8dfc24f40 100644 --- a/languages/i18n/ia.json +++ b/languages/i18n/ia.json @@ -184,6 +184,7 @@ "searcharticle": "Va", "history": "Historia del pagina", "history_short": "Historia", + "history_small": "historia", "updatedmarker": "actualisate post mi ultime visita", "printableversion": "Version pro imprimer", "permalink": "Ligamine permanente", @@ -646,7 +647,7 @@ "selfredirect": "<strong>Attention:</strong> Tu redirige iste pagina verso se mesme.\nTu pote haber specificate le mal destination pro le redirection, o tu modifica forsan le mal pagina.\nSi tu clicca sur \"{{int:savearticle}}\" de novo, le redirection essera create in despecto de isto.", "missingcommenttext": "Per favor entra un commento infra.", "missingcommentheader": "<strong>Rememoration:</strong> Tu non ha fornite un subjecto pro iste commento.\nSi tu clicca super \"{{int:savearticle}}\" de novo, le modification essera publicate sin subjecto.", - "summary-preview": "Previsualisation del summario:", + "summary-preview": "Previsualisation del summario de modification:", "subject-preview": "Previsualisation del subjecto:", "previewerrortext": "Un error ha occurrite durante le tentativa de previsualisar le cambiamentos.", "blockedtitle": "Le usator es blocate", @@ -954,6 +955,7 @@ "search-interwiki-caption": "Projectos fratres", "search-interwiki-default": "Resultatos de $1:", "search-interwiki-more": "(plus)", + "search-interwiki-more-results": "plus resultatos", "search-relatedarticle": "Connexe", "searchrelated": "connexe", "searchall": "totes", @@ -1043,6 +1045,7 @@ "youremail": "E-mail:", "username": "{{GENDER:$1|Nomine de usator}}:", "prefs-memberingroups": "{{GENDER:$2|Membro}} de {{PLURAL:$1|gruppo|gruppos}}:", + "group-membership-link-with-expiry": "$1 (usque a $2)", "prefs-registration": "Data de registration:", "yourrealname": "Nomine real:", "yourlanguage": "Lingua:", @@ -1087,17 +1090,25 @@ "editusergroup": "Cargar gruppos de usator", "editinguser": "Cambia le derectos del {{GENDER:$1|usator}} <strong>[[User:$1|$1]]</strong> $2", "viewinguserrights": "Ecce le derectos del {{GENDER:$1|usator}} <strong>[[User:$1|$1]]</strong> $2", - "userrights-editusergroup": "Modificar gruppos de usatores", - "userrights-viewusergroup": "Vider gruppos del usator", + "userrights-editusergroup": "Modificar le gruppos del {{GENDER:$1|usator}}", + "userrights-viewusergroup": "Vider le gruppos del {{GENDER:$1|user}}", "saveusergroups": "Salveguardar gruppos de {{GENDER:$1|usator}}", "userrights-groupsmember": "Membro de:", "userrights-groupsmember-auto": "Membro implicite de:", - "userrights-groups-help": "Tu pote alterar le gruppos del quales iste usator es membro:\n* Un quadrato marcate significa que le usator es membro del gruppo in question.\n* Un non marcate significa que ille non es membro de illo.\n* Un * indica que tu non potera eliminar le gruppo quando tu lo ha addite, o vice versa.", + "userrights-groups-help": "Tu pote alterar le gruppos al quales iste usator pertine:\n* Un quadrato marcate significa que le usator es in le gruppo.\n* Un non marcate significa que ille non lo es.\n* Un * indica que tu non pote remover le gruppo post adder lo, o vice versa.\n* Un # indica que tu pote solmente reducer le tempore de expiration del gruppo e non extender lo.", "userrights-reason": "Motivo:", "userrights-no-interwiki": "Tu non ha le permission de modificar le derectos de usatores in altere wikis.", "userrights-nodatabase": "Le base de datos $1 non existe o non es local.", "userrights-changeable-col": "Gruppos que tu pote modificar", "userrights-unchangeable-col": "Gruppos que tu non pote modificar", + "userrights-expiry-current": "Expiration: $1", + "userrights-expiry-none": "Non expira", + "userrights-expiry": "Expiration:", + "userrights-expiry-existing": "Expiration existente: le $2 a $3", + "userrights-expiry-othertime": "Altere hora:", + "userrights-expiry-options": "1 die:1 day,1 septimana:1 week,1 mense:1 month,3 menses:3 months,6 menses:6 months,1 anno:1 year", + "userrights-invalid-expiry": "Le hora de expiration pro le gruppo \"$1\" es invalide.", + "userrights-expiry-in-past": "Le hora de expiration pro le gruppo \"$1\" es in le passato.", "userrights-conflict": "Conflicto inter cambiamentos de derectos de usator! Per favor revide e confirma tu cambiamentos.", "group": "Gruppo:", "group-user": "Usatores", @@ -1299,22 +1310,49 @@ "recentchanges-legend-plusminus": "(''±123'')", "recentchanges-submit": "Monstrar", "rcfilters-activefilters": "Filtros active", + "rcfilters-restore-default-filters": "Restaurar filtros predefinite", + "rcfilters-clear-all-filters": "Rader tote le filtros", "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-noresults": "Nulle filtro trovate", + "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-filtergroup-authorship": "Autor del modificationes", "rcfilters-filter-editsbyself-label": "Tu proprie modificationes", "rcfilters-filter-editsbyself-description": "Modificationes per te.", "rcfilters-filter-editsbyother-label": "Modificationes per alteres", "rcfilters-filter-editsbyother-description": "Modificationes create per altere usatores (non te).", - "rcfilters-filtergroup-userExpLevel": "Nivello de experientia del usator", + "rcfilters-filtergroup-userExpLevel": "Nivello de experientia (solmente pro usatores registrate)", "rcfilters-filter-userExpLevel-newcomer-label": "Novicios", - "rcfilters-filter-userExpLevel-newcomer-description": "Autores multo nove: minus de 10 modificationes e 4 dies de activitate.", + "rcfilters-filter-userExpLevel-newcomer-description": "Minus de 10 modificationes e 4 dies de activitate.", "rcfilters-filter-userExpLevel-learner-label": "Apprentisses", - "rcfilters-filter-userExpLevel-learner-description": "Plus dies de activitate e modificationes que 'Novicios' ma minus que \"Usatores con experientia'.", + "rcfilters-filter-userExpLevel-learner-description": "Plus dies de activitate e modificationes que \"Novicios\" ma minus que \"Usatores con experientia\".", "rcfilters-filter-userExpLevel-experienced-label": "Usatores con experientia", "rcfilters-filter-userExpLevel-experienced-description": "Plus de 30 dies de activitate e 500 modificationes.", + "rcfilters-filtergroup-automated": "Contributiones automatisate", + "rcfilters-filter-bots-label": "Robot", + "rcfilters-filter-bots-description": "Modificationes facite per instrumentos automatisate.", + "rcfilters-filter-humans-label": "Persona (non robot)", + "rcfilters-filter-humans-description": "Modificationes facite per esseres human.", + "rcfilters-filtergroup-significance": "Importantia", + "rcfilters-filter-minor-label": "Modificationes minor", + "rcfilters-filter-minor-description": "Modificationes que le autor ha marcate como minor.", + "rcfilters-filter-major-label": "Modificationes non minor", + "rcfilters-filter-major-description": "Modificationes non marcate como minor.", + "rcfilters-filtergroup-changetype": "Typo de cambiamento", + "rcfilters-filter-pageedits-label": "Modificationes de paginas", + "rcfilters-filter-pageedits-description": "Modificationes de contento wiki, discussiones, descriptiones de categorias…", + "rcfilters-filter-newpages-label": "Creationes de paginas", + "rcfilters-filter-newpages-description": "Modificationes que face nove paginas.", + "rcfilters-filter-categorization-label": "Cambios de categoria", + "rcfilters-filter-categorization-description": "Registros del addition o remotion de paginas a/de categorias.", + "rcfilters-filter-logactions-label": "Actiones traciate", + "rcfilters-filter-logactions-description": "Actiones administrative, creation de contos, deletion de paginas, incargamentos…", "rcnotefrom": "Ecce le {{PLURAL:$5|modification|modificationes}} a partir del <strong>$3 a $4</strong> (usque a <strong>$1</strong> entratas monstrate).", "rclistfrom": "Monstrar nove modificationes a partir del $3 a $2", "rcshowhideminor": "$1 modificationes minor", @@ -1448,7 +1486,7 @@ "uploaded-setting-handler-svg": "Le SVG que fixa le attributo \"handler\" con un objectivo remote, de datos o de script es blocate, ma le codice <code>$1=\"$2\"</code> se trova in le file SVG incargate.", "uploaded-remote-url-svg": "Le SVG que contine un URL remote in un attributo de stilo es blocate, ma le codice <code>$1=\"$2\"</code> se trova in le file SVG incargate.", "uploaded-image-filter-svg": "Se trova un filtro de imagine con URL: <code><$1 $2=\"$3\"></code> in le file SVG incargate.", - "uploadscriptednamespace": "Iste file SVG contine un spatio de nomines invalide: \"$1\"", + "uploadscriptednamespace": "Iste file SVG contine un spatio de nomines invalide: \"<nowiki>$1</nowiki>\"", "uploadinvalidxml": "Le codice XML in le file incargate non pote esser interpretate.", "uploadvirus": "Le file contine un virus! Detalios: $1", "uploadjava": "Iste file es un archivo ZIP que contine un file .class de Java.\nNon es permittite incargar files Java, proque istes pote contornar le restrictiones de securitate.", @@ -1725,6 +1763,7 @@ "uncategorizedcategories": "Categorias sin categoria", "uncategorizedimages": "Files non categorisate", "uncategorizedtemplates": "Patronos sin categoria", + "uncategorized-categories-exceptionlist": " # Contine un lista de categorias que non debe esser mentionate sur Special:UncategorizedCategories. Un per linea, comenciante con \"*\". Lineas que comencia con un altere character (incluse spatios) es ignorate. Usa \"#\" for commentos.", "unusedcategories": "Categorias non usate", "unusedimages": "Imagines non usate", "wantedcategories": "Categorias plus demandate", @@ -1823,8 +1862,10 @@ "apisandbox-sending-request": "Invia requesta API...", "apisandbox-loading-results": "Recipe resultatos API...", "apisandbox-results-error": "Un error ha occurrite durante le cargamento del responsa al consulta API: $1.", - "apisandbox-request-params-json": "Parametros JSON:", + "apisandbox-request-selectformat-label": "Monstrar datos del requesta como:", + "apisandbox-request-format-url-label": "Catena de requesta del URL", "apisandbox-request-url-label": "URL de requesta:", + "apisandbox-request-json-label": "JSON del requesta:", "apisandbox-request-time": "Duration del requesta: {{PLURAL:$1|$1 ms}}", "apisandbox-results-fixtoken": "Corrige le indicio e reinvia", "apisandbox-results-fixtoken-fail": "Impossibile recuperar indicio \"$1\".", @@ -1966,7 +2007,7 @@ "emailccsubject": "Copia de tu message a $1: $2", "emailsent": "E-mail inviate", "emailsenttext": "Tu message de e-mail ha essite inviate.", - "emailuserfooter": "Iste e-mail ha essite {{GENDER:$1|inviate}} per $1 a {{GENDER:$2|$2}} con le function \"{{int:emailuser}}\" in {{SITENAME}}.\n{{GENDER:$2|Le}} message ha essite inviate directemente al {{GENDER:$1|expeditor|expeditrice}} original, revelante {{GENDER:$2|tu}} adresse de e-mail a {{GENDER:$1|ille|illa}}.", + "emailuserfooter": "Iste e-mail ha essite {{GENDER:$1|inviate}} per $1 a {{GENDER:$2|$2}} con le function \"{{int:emailuser}}\" in {{SITENAME}}.\nSi {{GENDER:$2|tu}} responde a iste message, {{GENDER:$2|tu}} responsa essera inviate directemente al {{GENDER:$1|expeditor|expeditrice}} original, revelante {{GENDER:$2|tu}} adresse de e-mail a {{GENDER:$1|ille|illa}}.", "usermessage-summary": "Lassante un message de systema.", "usermessage-editor": "Messagero del systema", "watchlist": "Observatorio", @@ -3481,6 +3522,7 @@ "logentry-tag-update-logentry": "$1 {{GENDER:$2|actualisava}} etiquettas sur le entrata de registro $5 del pagina $3 ({{PLURAL:$7|addeva}} $6; {{PLURAL:$9|removeva}} $8)", "rightsnone": "(nulle)", "revdelete-summary": "summario del modification", + "rightslogentry-temporary-group": "$1 (temporari, usque a $2)", "feedback-adding": "Le responsa es addite al pagina...", "feedback-back": "Retornar", "feedback-bugcheck": "Bon! Ma per favor verifica que iste falta non es [$1 jam cognoscite].", @@ -3505,56 +3547,12 @@ "feedback-useragent": "Agente usator:", "searchsuggest-search": "Cercar in {{SITENAME}}", "searchsuggest-containing": "continente...", - "api-error-autoblocked": "Tu adresse IP ha essite blocate automaticamente, perque illo ha essite usate per un usator blocate.", - "api-error-badaccess-groups": "Tu non ha le permission de incargar files in iste wiki.", "api-error-badtoken": "Error interne: indicio invalide.", - "api-error-blocked": "Le modification ha essite blocate pro te.", - "api-error-copyuploaddisabled": "Le incargamentos per URL es disactivate in iste servitor.", - "api-error-duplicate": "Existe jam {{PLURAL:$1|un altere file|altere files}} in le sito con le mesme contento.", - "api-error-duplicate-archive": "Il habeva jam {{PLURAL:$1|un altere file|altere files}} in le sito con le mesme contento, ma {{PLURAL:$1|illo|illos}} ha essite delite.", - "api-error-empty-file": "Le file que tu submitteva es vacue.", "api-error-emptypage": "Le creation de nove paginas vacue non es permittite.", - "api-error-fetchfileerror": "Error interne: qualcosa errava durante le obtention del file.", - "api-error-fileexists-forbidden": "Un file con le nomine \"$1\" jam existe, e non pote esser superscribite.", - "api-error-fileexists-shared-forbidden": "Un file con le nomine \"$1\" jam existe in le repositorio commun de files, e non pote esser superscribite.", - "api-error-file-too-large": "Le file que tu submitteva es troppo grande.", - "api-error-filename-tooshort": "Le nomine del file es troppo curte.", - "api-error-filetype-banned": "Iste typo de file es prohibite.", - "api-error-filetype-banned-type": "$1 non es {{PLURAL:$4|un typo|typos}} de file permittite. Le {{PLURAL:$3|typo|typos}} de file permittite es $2.", - "api-error-filetype-missing": "Le nomine del file non ha un extension.", - "api-error-hookaborted": "Le modification que tu ha tentate facer ha essite abortate per un extension.", - "api-error-http": "Error interne: impossibile connecter al servitor.", - "api-error-illegal-filename": "Iste nomine de file non es permittite.", - "api-error-internal-error": "Error interne: qualcosa errava durante le processamento de tu file incargate in le wiki.", - "api-error-invalid-file-key": "Error interne: file non trovate in le spatio de immagazinage temporari.", - "api-error-missingparam": "Error interne: certe parametros mancava al requesta.", - "api-error-missingresult": "Error interne: non poteva determinar si le copia succedeva.", - "api-error-mustbeloggedin": "Es necessari aperir session pro incargar files.", - "api-error-mustbeposted": "Error interne: le requesta require HTTP POST.", - "api-error-noimageinfo": "Le incargamento ha succedite, ma le servitor non ha fornite alcun information sur le file.", - "api-error-nomodule": "Error interne: nulle modulo de incargamento definite.", - "api-error-ok-but-empty": "Error interne: nulle responsa del servitor.", - "api-error-overwrite": "Superscriber un file existente non es permittite.", - "api-error-ratelimited": "Tu tenta incargar plus files in curte tempore que iste wiki permitte.\nPer favor, reproba in alcun minutas.", - "api-error-stashfailed": "Error interne: le servitor non poteva immagazinar le file temporari.", "api-error-publishfailed": "Error interne: le servitor non poteva publicar le file temporari.", - "api-error-stasherror": "Un error ha occurrite durante le incargamento del file in \"stash\".", - "api-error-stashedfilenotfound": "Le file in reserva non ha essite trovate durante le tentativa de incargar lo ab le reserva.", - "api-error-stashpathinvalid": "Le cammino ubi le file in reserva deberea haber essite trovate non es valide.", - "api-error-stashfilestorage": "Un error ha occurrite durante le immagazinage del file in reserva.", - "api-error-stashzerolength": "Le servitor non ha potite mitter le file in reserva perque illo ha un longitude de zero.", - "api-error-stashnotloggedin": "Tu debe aperir session pro poter salveguardar files in le reserva de incargamento.", - "api-error-stashwrongowner": "Le file al qual tu tentava acceder in le reserva non pertine a te.", - "api-error-stashnosuchfilekey": "Le clave de file al qual tu tentava acceder in le reserva non existe.", - "api-error-timeout": "Le servitor non ha respondite intra le tempore expectate.", - "api-error-unclassified": "Un error incognite ha occurrite.", - "api-error-unknown-code": "Error incognite: \"$1\"", - "api-error-unknown-error": "Error interne: qualcosa errava durante le tentativa de incargar le file.", + "api-error-stashfailed": "Error interne: le servitor non poteva immagazinar le file temporari.", "api-error-unknown-warning": "Advertimento incognite: \"$1\".", "api-error-unknownerror": "Error incognite: \"$1\".", - "api-error-uploaddisabled": "Le incargamento es disactivate in iste wiki.", - "api-error-verification-error": "Le file pote esser corrumpite o su nomine pote haber un extension errate.", - "api-error-was-deleted": "Un file con iste nomine ha jam essite incargate e postea delite.", "duration-seconds": "$1 {{PLURAL:$1|secunda|secundas}}", "duration-minutes": "$1 {{PLURAL:$1|minuta|minutas}}", "duration-hours": "$1 {{PLURAL:$1|hora|horas}}", @@ -3676,6 +3674,7 @@ "mw-widgets-titleinput-description-new-page": "pagina non existe ancora", "mw-widgets-titleinput-description-redirect": "redirection a $1", "mw-widgets-categoryselector-add-category-placeholder": "Adder un categoria…", + "mw-widgets-usersmultiselect-placeholder": "Adder plus...", "sessionmanager-tie": "Impossibile combinar plure typos de authentication de requesta: $1.", "sessionprovider-generic": "sessiones $1", "sessionprovider-mediawiki-session-cookiesessionprovider": "sessiones basate sur cookies", @@ -3807,7 +3806,7 @@ "usercssispublic": "Nota ben: Subpaginas CSS non debe continer datos confidential perque altere usatores pote vider los.", "restrictionsfield-badip": "Adresse o intervallo IP non valide: $1", "restrictionsfield-label": "Intervallos IP permittite:", - "restrictionsfield-help": "Un adresse IP o intervallo CIDR per linea. Pro activar toto, usa<br><code>0.0.0.0/0</code><br><code>::/0</code>", + "restrictionsfield-help": "Un adresse IP o intervallo CIDR per linea. Pro activar toto, usa:<pre>0.0.0.0/0\n::/0</pre>", "revid": "version $1", "pageid": "ID de pagina $1" } diff --git a/languages/i18n/id.json b/languages/i18n/id.json index 45be55cc93..9ba13ebea4 100644 --- a/languages/i18n/id.json +++ b/languages/i18n/id.json @@ -50,7 +50,8 @@ "Beeyan", "Bonaditya", "Irus", - "Presidenvolksraad" + "Presidenvolksraad", + "Hidayatsrf" ] }, "tog-underline": "Garis bawahi pranala:", @@ -219,6 +220,7 @@ "searcharticle": "Lanjut", "history": "Riwayat halaman", "history_short": "Versi terdahulu", + "history_small": "riwayat", "updatedmarker": "diubah sejak kunjungan terakhir saya", "printableversion": "Versi cetak", "permalink": "Pranala permanen", @@ -462,19 +464,12 @@ "login": "Masuk log", "login-security": "Buktikan identitas Anda", "nav-login-createaccount": "Masuk log / buat akun", - "userlogin": "Masuk log / buat akun", - "userloginnocreate": "Masuk log", "logout": "Keluar log", "userlogout": "Keluar log", "notloggedin": "Belum masuk log", "userlogin-noaccount": "Belum punya akun?", "userlogin-joinproject": "Gabung {{SITENAME}}", - "nologin": "Belum mempunyai akun? $1.", - "nologinlink": "Daftarkan akun baru", "createaccount": "Buat akun baru", - "gotaccount": "Sudah terdaftar sebagai pengguna? '''$1'''.", - "gotaccountlink": "Masuk log", - "userlogin-resetlink": "Lupa detail info masuk Anda?", "userlogin-resetpassword-link": "Lupa kata sandi?", "userlogin-helplink2": "Bantuan masuk log", "userlogin-loggedin": "Anda telah masuk log sebagai $1.\nGunakan formulir di bawah untuk masuk log sebagai pengguna lain.", @@ -487,7 +482,6 @@ "createaccountmail": "Gunakan kata sandi acak sementara dan kirimkan ke surel yang diinginkan", "createaccountmail-help": "Dapat digunakan untuk membuat akun untuk orang lain tanpa mengetahui kata sandinya.", "createacct-realname": "Nama asli (opsional)", - "createaccountreason": "Alasan:", "createacct-reason": "Alasan", "createacct-reason-ph": "Mengapa Anda membuat akun lain", "createacct-reason-help": "Pesan yang ditunjukkan dalam log pembuatan akun", @@ -687,7 +681,7 @@ "selfredirect": "<strong>Peringatan:</strong> Anda mengalihkan halaman ini kembali ke halaman semula.\nAnda bisa jadi telah memberikan tujuan pengalihan yang salah, atau telah menyunting halaman yang salah.\nJika Anda mengeklik \"{{int:savearticle}}\" sekali lagi, halaman pengalihan akan dibuat.", "missingcommenttext": "Harap masukkan komentar di bawah ini.", "missingcommentheader": "'''Peringatan:''' Anda belum memberikan subjek atau judul untuk komentar Anda. Jika Anda kembali menekan \"{{int:savearticle}}\", suntingan Anda akan disimpan tanpa komentar tersebut.", - "summary-preview": "Pratayang ringkasan:", + "summary-preview": "Pratayang ringkasan suntingan:", "subject-preview": "Pratayang subjek:", "previewerrortext": "Kesalahan terjadi saat mencoba memperlihatkan pratayang perubahan Anda.", "blockedtitle": "Pengguna diblokir", @@ -997,6 +991,7 @@ "search-interwiki-caption": "Proyek lain", "search-interwiki-default": "Hasil dari $1:", "search-interwiki-more": "(selanjutnya)", + "search-interwiki-more-results": "Hasil lainnya", "search-relatedarticle": "Berkaitan", "searchrelated": "berkaitan", "searchall": "semua", @@ -1046,8 +1041,6 @@ "saveprefs": "Simpan", "restoreprefs": "Kembalikan semua setelan bawaan", "prefs-editing": "Penyuntingan", - "rows": "Baris:", - "columns": "Kolom:", "searchresultshead": "Cari", "stub-threshold": "Ambang batas untuk format pranala rintisan ($1):", "stub-threshold-sample-link": "contoh", @@ -1089,6 +1082,7 @@ "username": "{{GENDER:$1|Nama pengguna}}:", "prefs-memberingroups": "{{GENDER:$2|Anggota}} {{PLURAL:$1|kelompok|kelompok}}:", "prefs-memberingroups-type": "$1", + "group-membership-link-with-expiry": "$1 (sampai $2)", "prefs-registration": "Waktu pendaftaran:", "prefs-registration-date-time": "$1", "yourrealname": "Nama asli:", @@ -1134,8 +1128,8 @@ "editusergroup": "Muat kelompok pengguna", "editinguser": "Mengubah hak pengguna untuk {{GENDER:$1|pengguna}} <strong>[[User:$1|$1]]</strong> $2", "viewinguserrights": "Melihat hak pengguna dari {{GENDER:$1|pengguna}} <strong>[[User:$1|$1]]</strong> $2", - "userrights-editusergroup": "Sunting kelompok pengguna", - "userrights-viewusergroup": "Lihat kelompok pengguna", + "userrights-editusergroup": "Sunting kelompok {{GENDER:$1|pengguna}}", + "userrights-viewusergroup": "Lihat kelompok {{GENDER:$1|pengguna}}", "saveusergroups": "Simpan kelompok {{GENDER:$1|pengguna}}", "userrights-groupsmember": "Anggota dari:", "userrights-groupsmember-auto": "Anggota implisit dari:", @@ -1147,6 +1141,10 @@ "userrights-changeable-col": "Kelompok yang dapat Anda ubah", "userrights-unchangeable-col": "Kelompok yang tidak dapat Anda ubah", "userrights-irreversible-marker": "$1*", + "userrights-expiry-current": "Udang $1", + "userrights-expiry-none": "Tidak usang", + "userrights-expiry": "Usang:", + "userrights-expiry-othertime": "Waktu lain:", "userrights-conflict": "Konflik perubahan hak pengguna! Silakan tinjau ulang dan konfirmasi perubahan Anda.", "group": "Kelompok:", "group-user": "Pengguna", @@ -1346,6 +1344,49 @@ "recentchanges-legend-heading": "<strong>Keterangan:</strong>", "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (lihat pula [[Special:NewPages|daftar halaman baru]])", "recentchanges-submit": "Tampilkan", + "rcfilters-activefilters": "Filter aktif", + "rcfilters-restore-default-filters": "Kembalikan filter bawaan", + "rcfilters-clear-all-filters": "Hapus semua penyaringan", + "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-feedbacklink": "Berikan umpan balik untuk filter uji coba baru", + "rcfilters-highlightmenu-title": "Pilih warna", + "rcfilters-filterlist-noresults": "Tidak ada penyaring ditemukan", + "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-filtergroup-authorship": "Sunting kepengarangan", + "rcfilters-filter-editsbyself-label": "Suntingan Anda", + "rcfilters-filter-editsbyself-description": "Suntingan oleh Anda", + "rcfilters-filter-editsbyother-label": "Suntingan orang lain", + "rcfilters-filter-editsbyother-description": "Suntingan dibuat oleh orang lain (bukan Anda)", + "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-learner-label": "Pelajar", + "rcfilters-filter-user-experience-level-experienced-label": "Pengguna berpengalaman", + "rcfilters-filtergroup-automated": "Kontribusi otomatis", + "rcfilters-filter-bots-label": "Bot", + "rcfilters-filter-bots-description": "Suntingan yang dibuat dengan perkakas terotomatisasi.", + "rcfilters-filter-humans-label": "Manusia (bukan bot)", + "rcfilters-filter-humans-description": "Suntingan yang dibuat oleh penyunting manusia.", + "rcfilters-filtergroup-significance": "Kepentingan", + "rcfilters-filter-minor-label": "Suntingan kecil", + "rcfilters-filter-minor-description": "Suntingan yang ditandai penyunting sebagai suntingan kecil", + "rcfilters-filter-major-label": "Suntingan yang bukan suntingan kecil", + "rcfilters-filter-major-description": "Suntingan yang ditandai sebagai suntingan kecil", + "rcfilters-filtergroup-changetype": "Jenis perubahan", + "rcfilters-filter-pageedits-label": "Suntingan halaman", + "rcfilters-filter-pageedits-description": "Suntingan pada konten wiki, diskusi, deskripsi kategori....", + "rcfilters-filter-newpages-label": "Pembuatan halaman", + "rcfilters-filter-newpages-description": "Suntingan yang membuat halaman baru", + "rcfilters-filter-categorization-label": "Perubahan kategori", + "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....", "rcnotefrom": "Di bawah ini adalah {{PLURAL:$5|perubahan}} sejak <strong>$3, $4</strong> (ditampilkan sampai <strong>$1</strong> perubahan).", "rclistfrom": "Perlihatkan perubahan terbaru sejak $3 $2", "rcshowhideminor": "$1 suntingan kecil", @@ -1478,7 +1519,7 @@ "uploaded-setting-event-handler-svg": "Penyetelan atribut event-handler diblokir, menemukan <code><$1 $2=\"$3\"></code> dalam berkas SVG yang diunggah.", "uploaded-setting-href-svg": "Menggunakan tag \"set\" untuk menambahkan atribut \"href\" ke elemen utama diblokir.", "uploaded-remote-url-svg": "SVG yang mengatur setiap atribut style dengan URL luar diblokir. $1=\"$2\" ditemui di dalam berkas SVG yang diunggah.", - "uploadscriptednamespace": "Berkas SVG ini memuat ruang nama ilegal \"$1\"", + "uploadscriptednamespace": "Berkas SVG ini memuat ruang nama ilegal \"<nowiki>$1</nowiki>\"", "uploadinvalidxml": "XML dalam berkas yang diunggah tidak bisa diuraikan.", "uploadvirus": "Berkas tersebut mengandung virus! Rincian: $1", "uploadjava": "Berkas ini adalah berkas ZIP yang mengnadung berkas .class Java.\nPenggunggahan berkas Java tidak diperbolehkan karena dapat menyebabkan pengabaian batasan keamanan.", @@ -1852,7 +1893,9 @@ "apisandbox-sending-request": "Mengirim permintaan API...", "apisandbox-loading-results": "Menerima hasil API...", "apisandbox-results-error": "Sebuah galat terjadi ketika memuat permintaan respon API: $1.", + "apisandbox-request-selectformat-label": "Tampilkan permintaan data sebagai:", "apisandbox-request-url-label": "URL Permintaan:", + "apisandbox-request-json-label": "Meminta JSON:", "apisandbox-request-time": "Lama permintaan: {{PLURAL:$1|$1 ms}}", "apisandbox-results-fixtoken": "Perbaiki token dan kirim kembali", "apisandbox-results-fixtoken-fail": "Gagal mendapatkan token \"$1\".", @@ -1860,12 +1903,18 @@ "apisandbox-alert-field": "Nilai dalam kolom ini tidak valid.", "apisandbox-continue": "Lanjutkan", "apisandbox-continue-clear": "Kosongkan", + "apisandbox-param-limit": "Masukan <kbd>max</kbd> untuk menggunakan batas maksimum.", + "apisandbox-multivalue-all-namespaces": "$1 (Semua ruang nama)", + "apisandbox-multivalue-all-values": "$1 (Semua nilai)", "booksources": "Sumber buku", "booksources-search-legend": "Cari di sumber buku", "booksources-isbn": "ISBN:", "booksources-search": "Cari", "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-pmid": "Halaman menggunakan pranala magis PMID", + "magiclink-tracking-isbn": "Halaman yang menggunakan pranala magis ISBN", "specialloguserlabel": "Pengguna:", "speciallogtitlelabel": "Target (judul atau{{ns:pengguna}}:nama pengguna untuk pengguna)", "log": "Catatan (Log)", @@ -1917,6 +1966,8 @@ "activeusers-intro": "Berikut adalah daftar pengguna yang memiliki suatu bentuk aktivitas selama paling tidak $1 {{PLURAL:$1|hari|hari}} terakhir.", "activeusers-count": "$1 {{PLURAL:$1|aktivitas|aktivitas}} dalam {{PLURAL:$3|1 hari|$3 hari}} terakhir", "activeusers-from": "Tampilkan pengguna mulai dari:", + "activeusers-groups": "Tampilkan pengguna yang termasuk kelompok:", + "activeusers-excludegroups": "Sembunyikan pengguna yang termasuk kelompok:", "activeusers-noresult": "Pengguna tidak ditemukan.", "activeusers-submit": "Tampilkan pengguna aktif", "listgrouprights": "Daftar hak kelompok", @@ -2076,12 +2127,13 @@ "rollbacklinkcount-morethan": "kembalikan lebih dari $1 {{PLURAL:$1|suntingan|suntingan}}", "rollbackfailed": "Pengembalian gagal dilakukan", "rollback-missingparam": "Parameter dibutuhkan ketika diminta tidak tersedia.", + "rollback-missingrevision": "Tidak mampu memuat data revisi.", "cantrollback": "Tidak dapat membatalkan suntingan;\nkontributor terakhir adalah satu-satunya penulis halaman ini.", "alreadyrolled": "Tidak dapat melakukan pengembalian ke revisi terakhir [[:$1]] oleh [[User:$2|$2]] ([[User talk:$2|bicara]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]]);\npengguna lain telah menyunting atau melakukan pengembalian terhadap halaman ini.\n\nSuntingan terakhir dilakukan oleh [[User:$3|$3]] ([[User talk:$3|bicara]]{{int:pipe-separator}}[[Special:Contributions/$3|{{int:contribslink}}]]).", "editcomment": "Komentar penyuntingan adalah: <em>$1</em>.", "revertpage": "←Suntingan [[Special:Contributions/$2|$2]] ([[User talk:$2|bicara]]) dibatalkan ke versi terakhir oleh [[User:$1|$1]]", "revertpage-nouser": "Mengembalikan suntingan oleh (nama pengguna dihapus) ke suntingan terakhir oleh [[User:$1|$1]]", - "rollback-success": "Pembatalan suntingan oleh $1; dibatalkan ke versi terakhir oleh $2.", + "rollback-success": "Pembatalan suntingan oleh {{GENDER:$3|$1}}; dibatalkan ke versi terakhir oleh {{GENDER:$4|$2}}.", "rollback-success-notify": "Mengembalikan suntingan oleh $1; rubah kembali untuk revisi terakhir oleh $2. [$3 Lihat perubahan]", "sessionfailure-title": "Kegagalan sesi", "sessionfailure": "Sepertinya ada masalah dengan sesi log Anda; log Anda telah dibatalkan untuk mencegah pembajakan. Silakan tekan tombol \"kembali\" dan muat kembali halaman sebelum Anda masuk, lalu coba lagi.", @@ -2359,6 +2411,7 @@ "sorbs": "DNSBL", "sorbsreason": "Alamat IP anda terdaftar sebagai proxy terbuka di DNSBL.", "sorbs_create_account_reason": "Alamat IP anda terdaftar sebagai proxy terbuka di DNSBL. Anda tidak dapat membuat akun.", + "softblockrangesreason": "Kontribusi anonim tidak diizinkan dari alamat IP Anda ($1). Silakan masuk log.", "xffblockreason": "Sebuah alamat IP terdapat di kepala X-Forwarded-For, entah milik Anda atau peladen ''proxy'' yang Anda gunakan, telah diblokir. Alasan pemblokirannya adalah: $1", "cant-see-hidden-user": "Pengguna yang Anda coba blokir telah diblokir dan disembunyikan. Selama Anda tidak memiliki hak sembunyikan pengguna, Anda tidak dapat melihat atau menyunting pemblokiran pengguna ini.", "ipbblocked": "Anda tidak dapat memblokir atau membuka blokir pengguna lain, karena Anda sendiri diblokir.", @@ -2394,6 +2447,8 @@ "cant-move-to-user-page": "Anda tidak memiliki hak akses untuk memindahkan halaman ke suatu halaman pengguna (kecuali ke subhalaman pengguna).", "cant-move-category-page": "Anda tidak memiliki izin untuk memindahkan halaman kategori.", "cant-move-to-category-page": "Anda tidak memiliki izin untuk memindahkan halaman ke halaman kategori.", + "cant-move-subpages": "Anda tidak memiliki izin untuk memindahkan subhalaman", + "namespace-nosubpages": "Ruang nama \"$1\" tidak mengizinkan subhalaman.", "newtitle": "Judul baru:", "move-watch": "Pantau halaman ini", "movepagebtn": "Pindahkan halaman", @@ -2745,6 +2800,7 @@ "newimages-showbots": "Tampilkan unggahan oleh bot", "newimages-hidepatrolled": "Sembunyikan unggahan yang telah dipatroli", "noimages": "Tidak ada yang dilihat.", + "gallery-slideshow-toggle": "Beralih ''thumbnails''", "ilsubmit": "Cari", "bydate": "berdasarkan tanggal", "sp-newimages-showfrom": "Tampilkan berkas baru dimulai dari $2, $1", @@ -3397,6 +3453,8 @@ "tag-filter": "Filter [[Special:Tags|tag]]:", "tag-filter-submit": "Penyaring", "tag-list-wrapper": "([[Special:Tags|{{PLURAL:$1|Tag}}]]: $2)", + "tag-mw-contentmodelchange": "Perubahan model konten", + "tag-mw-contentmodelchange-description": "Perubahan yang [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:ChangeContentModel mengubah model konten] suatu halaman", "tags-title": "Tanda", "tags-intro": "Halaman ini berisi daftar tag yang dapat ditandai oleh perangkat lunak terhadap suatu suntingan berikut artinya.", "tags-tag": "Nama tag", @@ -3456,6 +3514,9 @@ "tags-apply-not-allowed-multi": "{{PLURAL:$2|Tag|Tag}} berikut tidak diizinkan untuk diterapkan secara manual: $1", "tags-update-no-permission": "Anda tidak memiliki izin untuk menambah atau menghapus perubahan tag dari revisi atau entri log individu.", "tags-update-blocked": "Anda tidak dapat menambahkan atau menghapus perubahan tag ketika {{GENDER:$1|Anda}} sedang diblokir.", + "tags-update-add-not-allowed-one": "Tag \"$1\"tidak diizinkan untuk ditambahkan secara manual.", + "tags-update-add-not-allowed-multi": "{{PLURAL:$2|tag is|Tag ini}} tidak diizinkan untuk ditambahkan secara manual: $1", + "tags-update-remove-not-allowed-one": "Tag \"$1\" tidak diizinkan untuk dihapus.", "tags-edit-title": "Sunting tag", "tags-edit-manage-link": "Kelola tag", "tags-edit-revision-selected": "{{PLURAL:$1|Revisi terpilih|Revisi terpilih}} dari [[:$2]]:", @@ -3514,11 +3575,14 @@ "htmlform-time-placeholder": "JJ:MM:DD", "htmlform-datetime-placeholder": "TTTT-BB-HH JJ:MM:DD", "htmlform-date-invalid": "Nilai yang diberikan tidak dikenali sebagai tanggal. Coba lagi menggunakan format TTTT-BB-HH.", + "htmlform-time-invalid": "Nilai yang Anda tentukan bukan waktu yang dikenali. Cobalah menggunakan format HH:MM:SS", "htmlform-datetime-invalid": "Nilai yang Anda masukkan tidak dikenali sebagai tanggal dan waktu. Coba gunakan format YYYY-MM-DD HH:MM:SS", "htmlform-date-toolow": "Nilai yang Anda masukkan adalah sebelum tanggal paling dini yang dibolehkan $1", "htmlform-date-toohigh": "Nilai yang Anda masukkan adalah setelah tanggal paling akhir yang dibolehkan $1", "htmlform-time-toolow": "Nilai yang Anda tentukan adalah sebelum waktu paling dini yang dibolehkan $1", "htmlform-time-toohigh": "Nilai yang Anda tentukan adalah setelah waktu paling baru yang dibolehkan $1", + "htmlform-datetime-toolow": "Nilai yang Anda tentukan berada sebelum tanggal dan waktu paling awal yang diperbolehkan $1", + "htmlform-datetime-toohigh": "Nilai yang Anda masukan telah terlewati setelah tanggal dan waktu terakhir yang diperbolehkan $1.", "htmlform-title-badnamespace": "[[:$1]] tidak berada dalam ruang nama \"{{ns:$2}}\".", "htmlform-title-not-creatable": "\"$1\" bukan merupakan judul halaman yang dapat dibuat", "htmlform-title-not-exists": "$1 tidak ada.", @@ -3592,7 +3656,7 @@ "logentry-tag-update-revision": "$1 {{GENDER:$2|memperbarui}} tag pada revisi $4 dari halaman $3 ({{PLURAL:$7|menambahkan}} $6; {{PLURAL:$9|menghapus}} $8)", "logentry-tag-update-logentry": "$1 {{GENDER:$2|memperbarui}} tag pada entri log $5 dari halaman $3 ({{PLURAL:$7|menambahkan}} $6; {{PLURAL:$9|menghapus}} $8)", "rightsnone": "(tidak ada)", - "revdelete-summary": "ringkasan", + "rightslogentry-temporary-group": "$1 (sementara, hingga $2)", "feedback-adding": "Menambahkan umpan balik ke halaman...", "feedback-back": "Kembali", "feedback-bugcheck": "Hebat! Hanya periksa bahwa itu bukan satu di antara [$1 bug yang telah dikenal].", @@ -3617,56 +3681,12 @@ "feedback-useragent": "Agen pengguna:", "searchsuggest-search": "Cari {{SITENAME}}", "searchsuggest-containing": "berisi...", - "api-error-autoblocked": "Alamat IP Anda telah diblokir secara otomatis, karena sebelumnya digunakan oleh pengguna yang diblokir.", - "api-error-badaccess-groups": "Anda tidak diizinkan mengunggah berkas ke wiki ini.", "api-error-badtoken": "Kesalahan internal: token buruk.", - "api-error-blocked": "Anda telah diblokir dari penyuntingan.", - "api-error-copyuploaddisabled": "Mengunggah melalui URL dilarang pada peladen ini.", - "api-error-duplicate": "Sudah ada {{PLURAL:$1|berkas lain|berkas lain}} dengan isi yang sama di situs ini.", - "api-error-duplicate-archive": "Ada {{PLURAL:$1|berkas lain|berkas lain}} di situs dengan konten yang sama, namun {{PLURAL:$1|berkas|berkas-berkas}} itu telah dihapus.", - "api-error-empty-file": "Berkas yang Anda kirim kosong.", "api-error-emptypage": "Pembuatan halaman baru yang kosong tidak diizinkan.", - "api-error-fetchfileerror": "Kesalahan internal: terjadi kesalahan saat memperoleh berkas ini.", - "api-error-fileexists-forbidden": "Berkas dengan nama \"$1\" sudah ada dan tidak bisa ditimpa.", - "api-error-fileexists-shared-forbidden": "Berkas dengan nama \"$1\" sudah ada di penyimpanan file berbagi dan tidak bisa ditimpa.", - "api-error-file-too-large": "Berkas yang Anda kirim terlalu besar.", - "api-error-filename-tooshort": "Nama berkas terlalu pendek.", - "api-error-filetype-banned": "Jenis berkas ini dilarang.", - "api-error-filetype-banned-type": "$1 {{PLURAL:$4|bukan ekstensi berkas yang diizinkan|bukan ekstensi berkas yang diizinkan}}. {{PLURAL:$3|Jenis berkas yang diizinkan adalah|Jenis berkas yang diizinkan adalah}} $2.", - "api-error-filetype-missing": "Berkas tidak memiliki ekstensi.", - "api-error-hookaborted": "Modifikasi yang Anda coba lakukan dibatalkan oleh suatu kaitan ekstensi.", - "api-error-http": "Kesalahan internal: tidak dapat menghubungkan ke peladen.", - "api-error-illegal-filename": "Nama berkas tidak diperbolehkan.", - "api-error-internal-error": "Kesalahan internal: terjadi masalah saat memproses unggahan Anda ke wiki ini.", - "api-error-invalid-file-key": "Kesalahan internal: berkas tidak ditemukan di penyimpanan sementara.", - "api-error-missingparam": "Kesalahan internal: parameter permintaan hilang.", - "api-error-missingresult": "Kesalahan internal: tidak dapat menentukan apakah penyalinan berhasil.", - "api-error-mustbeloggedin": "Anda harus masuk log untuk mengunggah berkas.", - "api-error-mustbeposted": "Ada bug dalam perangkat lunak ini; tidak menggunakan metode HTTP yang tepat.", - "api-error-noimageinfo": "Pengunggahan berhasil, tetapi peladen tidak memberikan informasi apa pun tentang berkas.", - "api-error-nomodule": "Kesalahan internal: tidak ada modul unggahan yang ditetapkan.", - "api-error-ok-but-empty": "Kesalahan internal: tidak ada tanggapan dari peladen.", - "api-error-overwrite": "Tidak diizinkan untuk menimpa berkas yang sudah ada.", - "api-error-ratelimited": "Anda mencoba untuk mengunggah berkas dalam jeda waktu yang lebih singkat yang diperbolehkan oleh wiki ini. Silakan ulangi kembali dalam beberapa menit.", - "api-error-stashfailed": "Kesalahan internal: server gagal menyimpan berkas sementara.", "api-error-publishfailed": "Kesalahan internal: server gagal menyimpan berkas sementara.", - "api-error-stasherror": "Terjadi kesalahan saat mengunggah berkas ke penyimpanan.", - "api-error-stashedfilenotfound": "Berkas yang disimpan tidak ditemukan ketika mencoba untuk mengunggahnya dari penyimpanan.", - "api-error-stashpathinvalid": "Lokasi tempat berkas disimpan yang seharusnya ditemukan tidak sah.", - "api-error-stashfilestorage": "Terjadi galat ketika menyimpan berkas ke dalam penyimpanan.", - "api-error-stashzerolength": "Peladen tidak dapat menyimpan berkas ini, karena ukuran berkas itu adalah nihil.", - "api-error-stashnotloggedin": "Anda harus masuk log untuk menyimpan berkas ke dalam penyimpanan unggahan.", - "api-error-stashwrongowner": "Berkas yang Anda coba untuk akses dalam penyimpanan itu bukan milik Anda.", - "api-error-stashnosuchfilekey": "Berkas yang Anda coba akses dalam penyimpanan itu tidak ada.", - "api-error-timeout": "Peladen tidak merespons dalam waktu yang diharapkan.", - "api-error-unclassified": "Terjadi galat yang tidak diketahui", - "api-error-unknown-code": "Kesalahan tidak dikenal: \"$1\"", - "api-error-unknown-error": "Kesalahan internal: terjadi kesalahan saat mencoba mengunggah berkas Anda.", + "api-error-stashfailed": "Kesalahan internal: server gagal menyimpan berkas sementara.", "api-error-unknown-warning": "Peringatan tidak dikenal: $1", "api-error-unknownerror": "Kesalahan tidak dikenal: \"$1\"", - "api-error-uploaddisabled": "Pengunggahan dinonaktifkan di wiki ini.", - "api-error-verification-error": "Berkas ini mungkin rusak atau memiliki ekstensi yang salah.", - "api-error-was-deleted": "Sebuah berkas dengan nama ini sudah diunggah sebelumnya lalu dihapus.", "duration-seconds": "$1 {{PLURAL:$1|detik}}", "duration-minutes": "$1 {{PLURAL:$1|menit}}", "duration-hours": "$1 {{PLURAL:$1|jam}}", @@ -3710,7 +3730,12 @@ "pagelang-language": "Bahasa", "pagelang-use-default": "Gunakan bahasa baku", "pagelang-select-lang": "Pilih bahasa", + "pagelang-reason": "Alasan", "pagelang-submit": "Kirim", + "pagelang-nonexistent-page": "Halaman $1 tidak tersedia", + "pagelang-unchanged-language": "Halaman $1 telah di atur ke bahasa $2", + "pagelang-unchanged-language-default": "Halaman $1 Telah diatur ke bahasa konten bawaan.", + "pagelang-db-failed": "Basis data gagal mengubah bahasa halaman", "right-pagelang": "Ubah bahasa halaman", "action-pagelang": "mengubah bahasa halaman", "log-name-pagelang": "Log perubahan bahasa", @@ -3780,13 +3805,14 @@ "mw-widgets-titleinput-description-new-page": "halaman belum ada", "mw-widgets-titleinput-description-redirect": "mengalihkan ke $1", "mw-widgets-categoryselector-add-category-placeholder": "Tambah sebuah kategori...", + "mw-widgets-usersmultiselect-placeholder": "Tambahkan lebih banyak...", "sessionmanager-tie": "Tidak dapat menggabungkan banyak jenis otentikasi permintaan: $1.", "sessionprovider-generic": "sesi $1", "sessionprovider-mediawiki-session-cookiesessionprovider": "sesi berdasarkan kuki", "sessionprovider-nocookies": "Kuki mungkin dimatikan. Pastikan Anda telah mengaktifkan kuki dan coba mulai kembali.", "randomrootpage": "Halaman dasar sembarang", "log-action-filter-block": "Jenis pemblokiran:", - "log-action-filter-contentmodel": "Jenis modifikasi modelkonten:", + "log-action-filter-contentmodel": "Jenis perubahan modelkonten:", "log-action-filter-delete": "Jenis penghapusan:", "log-action-filter-import": "Jenis impor:", "log-action-filter-managetags": "Jenis tindakan manajemen tag:", @@ -3848,6 +3874,9 @@ "authmanager-link-no-primary": "Kredensial yang diberikan tidak dapat digunakan untuk menautkan akun.", "authmanager-link-not-in-progress": "Penautan akun tidak dilanjutkan atau data sesi telah hilang. Ulang kembali dari awal.", "authmanager-authplugin-setpass-failed-title": "Penggantian kata sandi gagal", + "authmanager-authplugin-setpass-failed-message": "Plugin autentikasi mencegah pengubahan pasword.", + "authmanager-authplugin-create-fail": "Plugin autentikasi mencegah pembuatan akun.", + "authmanager-authplugin-setpass-denied": "Plugin autentikasi tidak memperbolehkan mengubah kata kunci.", "authmanager-authplugin-setpass-bad-domain": "Domain tidak sah.", "authmanager-autocreate-noperm": "Pembuatan akun otomatis tidak diizinkan.", "authmanager-autocreate-exception": "Pembuatan akun otomatis dimatikan sementara karena galat sebelumnya.", diff --git a/languages/i18n/ie.json b/languages/i18n/ie.json index 62abac034c..476af2b017 100644 --- a/languages/i18n/ie.json +++ b/languages/i18n/ie.json @@ -13,13 +13,15 @@ "לערי ריינהארט", "아라", "Srdjan m", - "Macofe" + "Macofe", + "Stavanger7" ] }, "tog-underline": "Ultracatenun:", "tog-hideminor": "Ocultar redactiones minori in nov changes", "tog-hidepatrolled": "Ocultar redactiones vigilat in nov changes", "tog-newpageshidepatrolled": "Ocultar págines vigilat de liste de nov págines", + "tog-hidecategorization": "Ocultar li categorisation de págines", "tog-extendwatchlist": "Expander li liste de vigilantie a omni changes, ne solmen li max nov", "tog-usenewrc": "Ordinar changes in «Recent changes» e li liste de vigila secun págines", "tog-numberheadings": "Auto-numerar rublicas", @@ -40,7 +42,7 @@ "tog-shownumberswatching": "Monstrar li númere de usatores vigilant", "tog-oldsig": "Existent subscrition:", "tog-fancysig": "Tractar signature quam textu wiki (sin un catenun auto-crate)", - "tog-uselivepreview": "Strax monstrar prevision (experimental)", + "tog-uselivepreview": "Strax monstrar prevision", "tog-forceeditsummary": "Suggester me quande intrar un redaction che summarium in blanc", "tog-watchlisthideown": "Ocultar mi redactiones del liste de págines vigilat", "tog-watchlisthidebots": "Ocultar redactiones de machine del liste de págines vigilat", @@ -149,7 +151,7 @@ "morenotlisted": "Ti liste ne es complet.", "mypage": "Págine", "mytalk": "Conversation", - "anontalk": "Discussion por ti ci IP", + "anontalk": "Discussion", "navigation": "Navigation", "and": " e", "qbfind": "Constatar", @@ -172,11 +174,13 @@ "searcharticle": "Ear", "history": "Historie", "history_short": "Historie de versiones", + "history_small": "diarium", "updatedmarker": "modernisat desde mi ultim visitation", "printableversion": "Version a printar", "permalink": "Permanent referentie", "print": "Printar", "view": "Leer", + "view-foreign": "Vider sur $1", "edit": "Redacter", "create": "Crear", "editthispage": "Redacter", @@ -211,6 +215,7 @@ "otherlanguages": "Altri lingues", "redirectedfrom": "(Redirectet de $1)", "redirectpagesub": "Págine de redirecterion", + "redirectto": "Redirection a:", "lastmodifiedat": "Ti-ci págine esset redactet in ultim li $1, clocca $2.", "viewcount": "Ti págine ha esset accesset {{PLURAL:$1|un vez|$1 vezes}}.", "protectedpage": "Un protectet págine", @@ -230,6 +235,7 @@ "disclaimers": "Advertimentes", "disclaimerpage": "Project:Advertimentes", "edithelp": "Redactori auxilie", + "helppage-top-gethelp": "Auxilie", "mainpage": "Principal págine", "mainpage-description": "Principal págine", "policy-url": "Project:Regulariumes", @@ -260,6 +266,8 @@ "hidetoc": "ocultar", "collapsible-collapse": "Celar", "collapsible-expand": "Monstrar", + "confirmable-yes": "Yes", + "confirmable-no": "No", "thisisdeleted": "Vider o restaurar $1?", "viewdeleted": "Vider $1?", "restorelink": "{{PLURAL:$1|un deleet version|$1 deleet versiones}}", @@ -289,53 +297,84 @@ "error": "Erra", "databaseerror": "Erra del data-base", "databaseerror-text": "Un erra in li questionada del database ha evenit. To posse indicar un erra in li software.", + "databaseerror-function": "Function: $1", + "databaseerror-error": "Errore: $1", "missing-article": "Li textu de «$1» $2 ne ha esset trovat in li data-base.\n\nIt es possibil, que ti págine ha esset deleet o movet.\n\n\nSi to ne es just, tu ha forsan trovat un erra in li programma.\nPles raporta it a un [[Special:ListUsers/sysop|administrator]], notante li URL.", "missingarticle-rev": "(revision#: $1)", + "missingarticle-diff": "(Diff: $1, $2)", + "internalerror": "Errore intern", + "internalerror_info": "Errore intern: $1", "unexpected": "Valor ínexpectat: \"$1\"=\"$2\".", "badtitle": "Titul mal", "badtitletext": "Li titul de págine solicitat esset ínvalid, vacui, o íncorectmen ligat inter-lingue o un titul inter-wiki.\nIt posse contene un o plu carácteres quel ne posse esser usat in titules.", "viewsource": "Vider fonte", - "viewsourcetext": "Vu posse vider e copiar li contenete de ti págine:", + "viewsource-title": "Vider li fonte de «$1»", + "viewsourcetext": "Vu posse vider e copiar li contenete de ti págine.", + "ns-specialprotected": "Li special págines on ne posse redacter.", "titleprotected": "Ti titul ha esset gardat de creation per [[User:$1|$1]]. \nLi motive dat es <em>$2</em>.", "virus-badscanner": "Configuration maliciosi: virus desconosset examinat: ''$1''", "virus-scanfailed": "scandesion fallit (code $1)", "virus-unknownscanner": "antivírus desconosset:", "logouttext": "'''Tu ha terminat tui session.'''\n\nNota, que alcun págines posse continualmen esser monstrat quasi tu vell ancor esser inregistrat, til que tu vacua li cache de tui navigator.", + "welcomeuser": "Benevenit, $1!", "yourname": "Nómine de usator:", + "userlogin-yourname": "Nómine de usator", + "userlogin-yourname-ph": "Vor nómine de usator", + "createacct-another-username-ph": "Nómine del usator", "yourpassword": "Parol-clave:", "yourpasswordagain": "Parol-clave denov:", + "userlogin-signwithsecure": "Usar un secur conexion", "yourdomainname": "Tui dominia:", "login": "Aperter session", + "login-security": "Verifica vor identitá", "nav-login-createaccount": "Crear un conto o intrar", "userlogin": "Crear un conto o intrar", "userloginnocreate": "Intrar", "logout": "Surtida", "userlogout": "Surtir", "notloggedin": "Vu ne ha intrat", + "userlogin-noaccount": "Ne have un conto?", + "userlogin-joinproject": "Adherer a {{SITENAME}}", "nologin": "Ne have un conto? $1.", "nologinlink": "Crear un conto", "createaccount": "Crear un conto", "gotaccount": "Ja have un conto? $1.", "gotaccountlink": "Intrar", "userlogin-resetlink": "Obliviat tui detallies de registre?", + "createacct-reason": "Motive", + "createacct-benefit-body1": "{{PLURAL:$1|redaction|redactiones}}", + "createacct-benefit-body2": "{{PLURAL:$1|págine|págines}}", + "createacct-benefit-body3": "recent {{PLURAL:$1|contributor|contributores}}", "badretype": "Li passa-paroles queles vu tippat ne es identic.", "userexists": "Nómine de usator ja in usu.\nPleser opta por un nómine diferent.", "loginerror": "Erra in initiation del session", "nocookieslogin": "{{SITENAME}} utilisa cookies por far intrar usatores. Vu nu ne permisse cookies. Ples permisser les e provar denov.", - "loginsuccesstitle": "Apertion de session successosi", + "loginsuccesstitle": "Session es apertet", "loginsuccess": "Vu ha apertet vor session in {{SITENAME}} quam \"$1\".", + "nosuchuser": "Li usator con nómine «$1» ne existe.\nLi nómines de usator distinte minuscules e majuscules.\nControla li ortografia o [[Special:CreateAccount|crea un nov conto]].", + "login-userblocked": "Li usator es blocat. Es impossibil aperter un session.", "wrongpassword": "Parol-clave íncorect inscrit.\nPleser prova denov.", "wrongpasswordempty": "Parol-clave inscrit esset nud.\nPleser prova denov.", "mailmypassword": "Re-initialisar li passaparol", "throttled-mailpassword": "Un parol-clave amemora ha ja esset inviat, intra li ultim {{PLURAL:$1|hor|$1 hores}}.\nPor preventer misusa, solmen un parol-clave amemora va esser inviat per {{PLURAL:$1|hor|$1 hores}}.", "acct_creation_throttle_hit": "Vu ja ha creat $1 contos. Vu ne posse crear pli mult quam to.", + "createaccount-title": "Creation de conto por {{SITENAME}}", "loginlanguagelabel": "Lingue: $1", "suspicious-userlogout": "Tui petition por surtir esset desaprobat pro que probabilmen esset inviat per un navigator ruptet o servitor de autorisation che caching.", + "pt-login-button": "Aperter session", + "pt-createaccount": "Crear un conto", "changepassword": "Modificar passa-parol", "oldpassword": "Anteyan passa-parol:", "newpassword": "Nov passa-parol:", "retypenew": "Confirmar nov passa-parol", - "passwordreset-username": "Vor nómine usatori", + "botpasswords-label-create": "Crear", + "botpasswords-label-update": "Actualisar", + "botpasswords-label-cancel": "Anullar", + "botpasswords-label-delete": "Deleter", + "resetpass-submit-cancel": "Anullar", + "passwordreset-username": "Nómine de usator:", + "changeemail-none": "(null)", + "resettokens-token-label": "$1 (valor actual: $2)", "bold_sample": "Nigri textu", "bold_tip": "Nigri textu", "italic_sample": "Cursiv textu", @@ -353,7 +392,7 @@ "sig_tip": "Tui subscrit con hor e date", "hr_tip": "Horizontal linea (ples usar sin excess)", "summary": "Resummation:", - "subject": "Tema/Division:", + "subject": "Tema:", "minoredit": "To es un bagatellic change", "watchthis": "Vigilar ti págine", "savearticle": "Conservar págine", @@ -361,10 +400,12 @@ "showpreview": "Monstrar prevision", "showdiff": "Monstrar changes", "anoneditwarning": "'''Advertiment:''' Vu ne esser registrat.\nTui adresse de IP va esser registrat in historico de redactiones de ti págine.", + "missingcommenttext": "Ples intrar un comenta in infra.", "summary-preview": "Prevision de summarium:", "subject-preview": "Prevision de Tema/Division:", "whitelistedittext": "Vu have que $1 por redacter págines.", "loginreqtitle": "Apertion de session obligatori", + "loginreqlink": "aperter session", "accmailtitle": "Li passa-parol es inviat.", "accmailtext": "Li passa-parol por '$1' ha esset inviat a $2.", "newarticle": "(Nov)", @@ -379,11 +420,14 @@ "userjspreview": "'''Memora que vu es solmen provant/monstrant tui JavaScript de usator.'''\n'''It ne ha esset conservat ancor!'''", "userinvalidcssjstitle": "'''Advertiment:''' Ne vi pelle \"$1\".\nMemora que hábitu .css e págines .js usa un titul plu bass, e.g. {{ns:user}}:Foo/vector.css quam oposit por {{ns:user}}:Foo/Vector.css.", "updated": "(Modernisat)", + "note": "<strong>Note:</strong>", "previewnote": "'''Memora se que ti es solmen un prevision.'''\nTui changes ancor ne ha esset conservat!", "token_suffix_mismatch": "'''Tui redaction ha esset rejectet pro que tui software de navigation multilat li carácteres de punctuation in li simbol de redaction.'''\nLi redaction ha esset rejectet por impedir corruption del textu de págine.\nTi quelcvez ocurre quande vu es usant un service de autorisation anonim mal executet in Internet.", "editing": "Redactent $1", + "creating": "Creation de «$1»", "editingsection": "Redactent $1 (division)", "editingcomment": "Redactent $1 (nov division)", + "editconflict": "Conflicte de redaction: $1", "yourtext": "Tui textu", "storedversion": "Version acumulat", "yourdiff": "Diferenties", @@ -398,6 +442,9 @@ "permissionserrorstext-withaction": "Vu ne have permission por $2, por li sequent {{PLURAL:$1|motive|motives}}:", "recreate-moveddeleted-warn": "'''Advertiment: Vu es recreant un págine que esset anteriorimen deletet.'''\n\nVu deve considerar ca it es convenent por continuar redactant ti págine.\nLi deletion e diarium de movement por li págine es sub li condition ci por convenience:", "moveddeleted-notice": "Ti págine ha esset deletet.\nLi deletion e diarium de movement por li págine es sub li condition in infra por referentie.", + "postedit-confirmation-created": "Li págine ha esset creat.", + "content-model-javascript": "JavaScript", + "content-json-empty-object": "Vacui objecte", "post-expand-template-inclusion-warning": "'''Advertiment:''' Li grandore del includet shablones es tro grand. Alcun shablones ne posse esser includet.", "post-expand-template-inclusion-category": "Págines, in queles li maximal grandore del includet shablones es excedet", "post-expand-template-argument-warning": "'''Advertiment:''' Ti págine contene in un minim argumente de avise quel ha un anc mensura de expansion grand.\nTis argumentes have esset omisset.", @@ -410,7 +457,7 @@ "currentrev": "Ultim revision", "currentrev-asof": "Actual version de $2, clocca $3", "revisionasof": "Revision de $1", - "revision-info": "Revision de $1 e il ha fabricat de $2", + "revision-info": "Revision de $1, fat de $2:$7", "previousrevision": "← Anteyan version", "nextrevision": "Revision sequent →", "currentrevisionlink": "Ultim revision", @@ -422,18 +469,29 @@ "histlegend": "Diferenties de selection: marca li buxes de radio de li revisiones por comparar e batte \"intrar\" o li buton in li funde.<br />\nLegende: '''({{int:cur}})''' = diferenties che ultim revision, '''({{int:last}})''' = diferenties que antecede li revision, '''{{int:minoreditletter}}''' = redaction minori.", "history-fieldset-title": "Historie de navigation", "history-show-deleted": "Deletet solmen", - "histfirst": "max veľi", + "histfirst": "max antiqui", "histlast": "max nov", "history-feed-item-nocomment": "$1 in $2", "rev-delundel": "monstrar/ocultar", + "rev-showdeleted": "monstrar", + "revdelete-show-file-submit": "Yes", "revdel-restore": "changer visibilitá", + "revdelete-offender": "Autor del version:", "suppressionlog": "Diarium de supression", - "suppressionlogtext": "Infra es un liste de deletiones e bloces involuent contenete ocultant de administratores. \nVider li [[Special:IPBlockList|liste de bloc de IP]] por li liste de bloces e bannimentes operational currentmen.", + "suppressionlogtext": "Infra es un liste de deletiones e blocs involuent contenete ocultat fro administratores. \nVider li [[Special:BlockList|liste de bloc de IP]] por li liste de blocs e bannimentes operational currentmen.", + "mergehistory-go": "Monstrar li coalescibil redactiones", + "mergehistory-submit": "Coalescer li redactiones", + "mergehistory-done": "$3 {{PLURAL:$3|revision|revisiones}} de $1 ha esset coalescet in [[:$2]].", + "mergehistory-reason": "Motive:", "revertmerge": "Desfar fusion", "history-title": "Historic del revision de \"$1\"", + "difference-title": "Differentie inter li versiones de «$1»", "lineno": "Linea $1:", "compareselectedversions": "Comparar revisiones selectet", "editundo": "anullar", + "diff-empty": "(Null differentie)", + "diff-multi-sameuser": "({{PLURAL:$1|Un intermediari version|$1 intermediari versiones}} del sam usator non es monstrat)", + "diff-multi-otherusers": "({{PLURAL:$1|Un intermediari version|$1 intermediari versiones}} de {{PLURAL:$2|un altri usator|$2 usatores}} non es monstrat)", "searchresults": "Serch-resultates", "searchresults-title": "Serch-resultates por «$1»", "titlematches": "Resultates in li titules de págines", @@ -458,22 +516,31 @@ "search-result-category-size": "{{PLURAL:$1|1 membre|$1 membres}} ({{PLURAL:$2|1 subcategory|$2 subcategories}}, {{PLURAL:$3|1 file|$3 files}})", "search-redirect": "(redirection de «$1»)", "search-section": "(section $1)", + "search-category": "(categorie $1)", "search-suggest": "Esque tu ha intentet: «$1»?", + "search-interwiki-more": "(plu)", "searchrelated": "relatet", "searchall": "omni", + "search-showingresults": "{{PLURAL:$4|Resultate <strong>$1</strong> de <strong>$3</strong>|Resultates <strong>$1 – $2</strong> de <strong>$3</strong>}}", "search-nonefound": "Tu sercha ne ha trovat un resultate.", "preferences": "Preferenties", "mypreferences": "Preferenties", + "prefs-skin": "Tema visual", "skin-preview": "Prevision", + "prefs-watchlist": "Vigilat págines", + "prefs-watchlist-days-max": "Maximum $1 {{PLURAL:$1|die|dies}}", "saveprefs": "Conservar", "searchresultshead": "Serchar", "stub-threshold": "Catenunes por págines de contenete va aparir <a href=''#'' class=''stub''>de ti forme</a> si ili have minu de (bytes):", "timezonelegend": "Zone de témpor:", + "localtime": "Hora local:", "timezoneuseserverdefault": "Usar wiki de contumacie ($1)", "timezoneuseoffset": "Altri (specificar compensation)", + "servertime": "Hora del servitor:", "timezoneregion-africa": "Africa", "timezoneregion-america": "America", "timezoneregion-antarctica": "Antarctica", + "timezoneregion-arctic": "Arctica", "timezoneregion-asia": "Asia", "timezoneregion-atlantic": "Ocean Atlantic", "timezoneregion-australia": "Australia", @@ -482,13 +549,20 @@ "timezoneregion-pacific": "Ocean Pacific", "youremail": "Adresa e-poÅ¡te:", "username": "Nómine de usator:", + "group-membership-link-with-expiry": "$1 (til $2)", "yourrealname": "Nómine real:", "yourlanguage": "Lingue:", "yourvariant": "Variante:", "yournick": "Nov signature:", "yourgender": "Génere:", + "gender-male": "Il redacte págines de wiki", + "gender-female": "Ella redacte págines de wiki", "prefs-help-email": "Adresse de e-mail es optional, ma es necessitá por recomensar parol-clave, deve vu obliviar tui parol-clave.", "prefs-help-email-others": "Vu posse anc optar por permisser altri contacter vu per e-mail complet che un catenun in tui págine de usator o págine de discussion.\nTui adresse de e-mail ne es revelat quande altri usatores contacter vu.", + "prefs-i18n": "Internationalisation", + "prefs-signature": "Signature", + "prefs-dateformat": "Formato del date", + "prefs-editor": "Redactor", "userrights": "Gerement de jures de usator", "userrights-lookup-user": "Gerer gruppes de usator", "userrights-user-editname": "Intrar un nómine de usator:", @@ -499,21 +573,30 @@ "userrights-reason": "Motive:", "userrights-no-interwiki": "Vu ne have permission por redacter jures de usator in altri wikis.", "userrights-nodatabase": "Funde de data $1 ne existe o ne es local.", - "userrights-nologin": "Vu deve [[Special:UserLogin|registrar]] che un conto de administrator por atribuer jures de usator.", - "userrights-notallowed": "Tui conto ne have permission por atribuer jures de usator.", "userrights-changeable-col": "Gruppes que vu posse changear", "userrights-unchangeable-col": "Gruppes que vu ne posse changear", + "userrights-expiry-options": "1 die:1 day,1 semane:1 week,1 mensu:1 month,3 mensus:3 months,6 mensus:6 months,1 annu:1 year", + "group": "Gruppe:", "group-user": "Usatores", "group-sysop": "Administratores", - "group-user-member": "Usator", + "group-bureaucrat": "Burocrates", + "group-all": "(omni)", + "group-user-member": "{{GENDER:$1|usator}}", + "group-bot-member": "{{GENDER:$1|bot}}", + "group-sysop-member": "{{GENDER:$1|administrator}}", + "group-bureaucrat-member": "{{GENDER:$1|burocrate}}", + "group-suppress-member": "{{GENDER:$1|supressor}}", "grouppage-user": "{{ns:project}}:Usatores", "grouppage-sysop": "{{ns:project}}:Administratores", "grouppage-bureaucrat": "{{ns:project}}:Burócrates", "grouppage-suppress": "{{ns:project}}:Vigilatores", + "right-writeapi": "Usage del API de scrition", + "grant-basic": "Basic jures", "newuserlogpage": "Diarium de creation de usator", "rightslog": "Diarium de jures de usator", "action-edit": "redacter ti págine", "nchanges": "$1 {{PLURAL:$1|change|changes}}", + "enhancedrc-history": "diarium", "recentchanges": "Nov changes", "recentchanges-legend": "Optiones de nov changes", "recentchanges-summary": "Seque sur ti-ci págine li ultim modificationes al wiki.", @@ -522,14 +605,24 @@ "recentchanges-label-minor": "Ti es un redaction minori", "recentchanges-label-bot": "Ti redaction esset efectuat per un machine", "recentchanges-label-unpatrolled": "Ti redaction ne have ancor esset protectet", - "rcnotefrom": "In infra es li changes desde '''$2''' (ad-supra por '''$1''' monstrat).", + "recentchanges-legend-heading": "<strong>Legende:</strong>", + "rcfilters-filterlist-title": "Filtres", + "rcfilters-filtergroup-registration": "Registration de usatores", + "rcfilters-filter-registered-label": "Registrat", + "rcnotefrom": "In infra es li {{PLURAL:$5|modification|modificationes}} desde <strong>$4 $3</strong> (til <strong>$1</strong> es monstrat).", "rclistfrom": "Monstrar li nov modificationes desde $3 $2", "rcshowhideminor": "$1 redactiones minori", + "rcshowhideminor-show": "Monstrar", "rcshowhidebots": "$1 machines", + "rcshowhidebots-hide": "Ocultar", "rcshowhideliu": "$1 usatores registrat", + "rcshowhideliu-hide": "Ocultar", "rcshowhideanons": "$1 usatores anonim", + "rcshowhideanons-show": "Monstrar", "rcshowhidepatr": "$1 redactiones vigilat", + "rcshowhidepatr-hide": "Ocultar", "rcshowhidemine": "$1 mi redactiones", + "rcshowhidemine-show": "Monstrar", "rclinks": "Monstrar li $1 ultim modificationes fat durante li $2 ultim dies<br />$3.", "diff": "dif", "hist": "hist", @@ -538,6 +631,7 @@ "minoreditletter": "m", "newpageletter": "N", "boteditletter": "b", + "newsectionsummary": "/* $1 */ nov section", "rc-enhanced-expand": "Monstrar detaľes (per JavaScript)", "rc-enhanced-hide": "Ocultar detallies", "recentchangeslinked": "Changes referet", @@ -550,7 +644,7 @@ "upload": "Cargar file", "uploadbtn": "Cargar file", "uploadnologin": "Vu ne ha intrat", - "uploadnologintext": "Vu deve esser [[Special:UserLogin|registrat]] por cargar files.", + "uploadnologintext": "Ples $1 por cargar files.", "uploaderror": "Errore de cargament", "uploadtext": "Usa li forme infra por cargar files.\nPor vider o serchar files cargat anteriorimen ear por li [[Special:FileList|liste de files cargat]], (re)cargamentes es anc registrat in li [[Special:Log/upload|diarium de cargament]], deletiones in li [[Special:Log/delete|diarium de deletion]].\n\nPor includer un file in un págine, usa un catenun in un de sequent formes:\n* '''<code><nowiki>[[</nowiki>{{ns:file}}<nowiki>:File.jpg]]</nowiki></code>''' por usar li version complet de li file\n* '''<code><nowiki>[[</nowiki>{{ns:file}}<nowiki>:File.png|200px|thumb|left|alt text]]</nowiki></code>''' por usar un rendition larg de 200 pixel in un buxe in li márgine levul che 'alt text' quam descrition\n* '''<code><nowiki>[[</nowiki>{{ns:media}}<nowiki>:File.ogg]]</nowiki></code>''' por ligar inmediatmen por li file sin monstrar li file", "upload-permitted": "Tipes de file permisset: $1.", @@ -558,7 +652,9 @@ "upload-prohibited": "Tipes de file prohibit: $1.", "uploadlogpage": "Diarium de cargament", "uploadlogpagetext": "Infra es un liste de cargamentes de file max recent.\nVider li [[Special:NewFiles|galerie de nov files]] por posser vider it.", + "filename": "File-nómine", "filedesc": "Descrition", + "filesource": "Orígine:", "verification-error": "Ti file ne passat per li verification de file.", "unknown-error": "Un errore desconosset ocurret.", "tmp-create-error": "Ne posset crear file temporari.", @@ -579,6 +675,11 @@ "upload-misc-error": "Errore desconosset de cargament", "upload-misc-error-text": "Un errore desconosset ocurret durante li cargament.\nPleser verificar que li URL es valid e accessibil e prova denov.\nSi li problema persister, parla che un [[Special:ListUsers/sysop|administrator]].", "upload-http-error": "Un errore HTTP ocurret: $1", + "upload-dialog-title": "Cargar un file", + "upload-dialog-button-cancel": "Anullar", + "upload-form-label-infoform-name": "Nómine", + "upload-form-label-infoform-date": "Date", + "http-invalid-url": "Ínvalid URL: $1", "upload-curl-error6": "Ne esset possibil ear in li URL", "upload-curl-error6-text": "Li URL preferet ne esset visitat.\nPleser vide denov que li URL es corect e si li loc es disponibil.", "upload-curl-error28": "For de témpor por cargament de files", @@ -668,6 +769,7 @@ "suppress": "Perspective comun", "booksources": "Librari fontes", "booksources-search-legend": "Serchar por fontes de libre", + "booksources-search": "Serchar", "specialloguserlabel": "Executor:", "speciallogtitlelabel": "Cible (titul o usator):", "log": "Diariumes", @@ -702,6 +804,7 @@ "wlheader-showupdated": "Págines quel hat esset mutat desde tui ultim visitation es monstrat in '''nigri'''", "wlnote": "Infra {{PLURAL:$1|es li ultim change|es li ultim '''$1''' changes}} in li ultim {{PLURAL:$2|hor|'''$2''' hores}}.", "wlshowlast": "Monstra ultim $1 hores $2 dies", + "wlshowhidecategorization": "categorisation de págines", "watchlist-options": "Optiones de liste de págines vigilat", "watching": "Vigilant...", "unwatching": "Desvigilant...", @@ -715,6 +818,7 @@ "deleteotherreason": "Altri motive:", "deletereasonotherlist": "Altri motive", "rollbacklink": "desfar", + "rollbacklinkcount": "revocar $1 {{PLURAL:$1|redaction|redactiones}}", "protectlogpage": "Diarium de protection", "protectedarticle": "gardat \"[[$1]]\"", "prot_1movedto2": "[[$1]] hat movet por [[$2]]", @@ -766,6 +870,7 @@ "contributions": "Contributiones de {{GENDER:$1|usator|usatoressa}}", "contributions-title": "Contributiones de usator por $1", "mycontris": "Contributiones", + "anoncontribs": "Contributiones", "contribsub2": "De {{GENDER:$3|$1}} ($2)", "uctop": "(actual)", "month": "De mensu (e anterioris):", @@ -872,7 +977,7 @@ "tooltip-ca-nstab-main": "Vider li articul", "tooltip-ca-nstab-user": "Vider li págine de usator", "tooltip-ca-nstab-media": "Vider li págine de media", - "tooltip-ca-nstab-special": "Ti es un págine special, vu ne posse redacter it", + "tooltip-ca-nstab-special": "To es un págine special, on ne posse redacter it", "tooltip-ca-nstab-project": "Vider li págine de projecte", "tooltip-ca-nstab-image": "Vider li págine de figura", "tooltip-ca-nstab-mediawiki": "Vider li missage de sistema", @@ -891,6 +996,8 @@ "tooltip-undo": "«Desfar» reverte solmen ti-ci redaction e monstra li resultate in prevision, porque tu posse indicar un rason in li linea de resumé.", "tooltip-preferences-save": "Conservar preferenties", "tooltip-summary": "Ples intrar un curt resummation.", + "simpleantispam-label": "Control anti-spam.\n<strong>Ne</strong> plena to ci!", + "pageinfo-toolboxlink": "Information pri li págine", "previousdiff": "← Redaction anteriori", "nextdiff": "Proxim redaction →", "thumbsize": "Mesura de miniatura:", @@ -899,6 +1006,8 @@ "file-nohires": "Nequant resolution max alt disponibil.", "svg-long-desc": "(file SVG, nominalmen $1 × $2 pixeles, mesura de file: $3)", "show-big-image": "Original file", + "show-big-image-preview": "Dimension de ci prevision: $1.", + "show-big-image-other": "Altri {{PLURAL:$2|resolution|resolutiones}}: $1.", "newimages": "Galerie de nov images", "ilsubmit": "Serchar", "video-dims": "$1, $2×$3", @@ -906,6 +1015,16 @@ "metadata": "Metadata", "metadata-help": "Ti file contene information additional, probabilmen adjuntet de li cámera digitale o scandetor usat por crear o digitalizar it. Si li file ha esset redactet de tui statu original, alcun detallies posse ne reflecter completmen li file redactet.", "metadata-fields": "Campes metadata de figura listat in ti missage va esser includet in págine de figura monstra quande li tabelle metadata es crulat.\nAltri va esser ocultat per contumacie.\n* fabrication\n* modelle\n* origine de figura\n* témpor de exposition\n* númere\n* percentages de velocitá\n* longore focal\n* artist\n* jure editorial\n* descrition de figura\n* latitúdine\n* longitúdine\n* altitudine", + "exif-orientation": "Orientation", + "exif-xresolution": "Resolution horizontal", + "exif-yresolution": "Resolution vertical", + "exif-datetime": "Date e hora de modification del file", + "exif-make": "Fabricante del cámera", + "exif-model": "Modelle del cámera", + "exif-exifversion": "Version de Exif", + "exif-colorspace": "Spacie del colores", + "exif-iimcategory": "Categorie", + "exif-orientation-1": "Normal", "namespacesall": "omni", "monthsall": "omni", "imgmultigo": "Ear!", @@ -917,6 +1036,7 @@ "table_pager_limit_label": "Detallies por págine", "table_pager_limit_submit": "Ear", "table_pager_empty": "Nequant resultates", + "autosumm-new": "Creat págine contenente «$1»", "watchlistedit-normal-title": "Redacter liste de págines vigilat", "watchlistedit-normal-legend": "Remove titules del liste de págines vigilat", "watchlistedit-normal-explain": "Titules in tui liste de págines vigilat es monstrat infra.\nPor remover un titul, controla li buxe proxim por it, e clacca \"{{int:Watchlistedit-normal-submit}}\".\nVu posse anc [[Special:EditWatchlist/raw|redacter li liste vulnerosi]].", @@ -948,7 +1068,7 @@ "version-hook-name": "Nómine de croc", "version-hook-subscribedby": "Subscrit per", "version-version": "($1)", - "version-license": "Licentie", + "version-license": "Licentie MediaWiki", "version-software": "Software installat", "version-software-product": "Producte", "version-software-version": "Version", @@ -962,7 +1082,7 @@ "specialpages-group-highuse": "Págines de alt usu", "specialpages-group-pages": "Listes de págines", "specialpages-group-pagetools": "Utensiles de págine", - "specialpages-group-wiki": "Data wiki e utensiles", + "specialpages-group-wiki": "Data e utensiles", "specialpages-group-redirects": "Redirectionant págines special", "specialpages-group-spam": "Utensiles de spam", "external_image_whitelist": "#Abandonar ti linea exactmen quam it es<pre>\n#Colocar fragmentes de expression regulari (precismen li parte que ea inter li //) in infra\n#Tis va esser egalat che li URLes de figuras extern (hotlinked)\n#Tis que egala va esser monstrat quam figuras, altrimen solmen un catenun por li figura va esser monstrat\n#Lineas comensant che # es tractat quam comentaries\n#Ti es casu-ínsensitiv\n\n#Colocar omni fragmentes regulari súper ti linea. Abandonar ti linea exactmen quam it es</pre>", @@ -977,5 +1097,10 @@ "tags-hitcount-header": "Changes nómiat", "tags-edit": "redacter", "tags-hitcount": "$1 {{PLURAL:$1|change|changes}}", - "rightsnone": "(null)" + "logentry-delete-delete": "$1 ha removet li págine $3", + "logentry-move-move": "$1 ha movet li págine $3 a $4", + "logentry-newusers-create": "Conto de usator $1 ha esset creat", + "logentry-upload-upload": "$1 ha {{GENDER:$2|cargat}} $3", + "rightsnone": "(null)", + "searchsuggest-search": "Serchar {{SITENAME}}" } diff --git a/languages/i18n/ilo.json b/languages/i18n/ilo.json index 904956e3fa..e8f90afd32 100644 --- a/languages/i18n/ilo.json +++ b/languages/i18n/ilo.json @@ -566,8 +566,6 @@ "passwordreset-emaildisabled": "Dagiti langa ti esurat ket nabaldado iti daytoy a wiki.", "passwordreset-username": "Nagan ti agar-aramat:", "passwordreset-domain": "Dominio:", - "passwordreset-capture": "Kitaen ti nagbanagan nga esurat?", - "passwordreset-capture-help": "No markaam daytoy a kahon, ti esurat (nga adda ti temporario a kontrasenias) ket maipakitanto kenka ken maipatulodto iti agar-aramat.", "passwordreset-email": "Esurat a pagtaengan:", "passwordreset-emailtitle": "Dagiti salaysay ti pakabilangan iti {{SITENAME}}", "passwordreset-emailtext-ip": "Adda (baka sika, ti naggapuan ti IP a pagtaengan $1) a nagkiddaw ti maysa a panangisaad manen ti kontrasenias para iti {{SITNAME}} ($4) . {{PLURAL:$3|Ti |Dagiti}} sumaganad a pakabilangan ti agar-aramat ket\nmainaig iti daytoy nga esurat a pagtaengan:\n\n$2\n\n{{PLURAL:$3|Daytoy temporario a kontrasenias|Dagitoy temporario a kontrasenias}} ket agpaso {{PLURAL:$5|iti maysa nga aldaw|kadagiti $5 nga aldaw}}.\nSumrekka koman tapno agpilika ti baro a kontraseniasmo tattan. No adda met sabali a nagaramid daytoy a \npanagkiddaw, wenno malagipmo ti dati a kontraseniasmo, ket saanmo a kayaten a sukatan, saanmo nga ikaskaso daytoy a mensahe ken \nagtuloyka nga agusar ti daan a kontrasenias.", @@ -575,8 +573,6 @@ "passwordreset-emailelement": "Nagan ti agar-aramat: \n$1\n\nTemporario a kontrasenias: \n$2", "passwordreset-emailsentemail": "No daytoy nga adres ti esurat ket mainaig iti pakabilangam, maipatulodto ti maysa nga esurat iti panangisaad manen ti kontrasenias.", "passwordreset-emailsentusername": "No adda adres ti esurat a mainaig iti daytoy a nagan ti agar-aramat, addanto maipatulod nga esurat iti panangisaad manen ti kontrasenia.", - "passwordreset-emailsent-capture2": "Naipatulodan {{PLURAL:$1|ti esurat|dagiti esurat}} ti panangisaad manen ti kontrasenias. Ti {{PLURAL:$1|nagan ti agar-aramat ken kontrasenias|listaan dagiti nagan ti agar-aramat ken dagiti kontrasenias}} ket naipakita dita baba.", - "passwordreset-emailerror-capture2": "Napaay ti panangitulod ti usurat iti {{GENDER:$2|agar-aramat}}: $1 Ti {{PLURAL:$3|nagan ti agar-aramat ken kontrasenias|listaan dagiti agar-aramat ken dagiti kontrasenias}} ket naipakita dita baba.", "passwordreset-nocaller": "Nasken a maited ti maysa nga agtawtawag", "passwordreset-nosuchcaller": "Awan ti agtawtawag: $1", "passwordreset-ignored": "Saan a natengngel ti panangisaad manen ti kontrasenias. Mabalin a saan a nakompigura ti mangited?", @@ -989,8 +985,6 @@ "saveprefs": "Idulin", "restoreprefs": "Isubli amin dagiti kasisigud a pannakaisaad (kadagiti amin a seksion)", "prefs-editing": "Ur-urnosen", - "rows": "Ar-aray:", - "columns": "Dagiti batong:", "searchresultshead": "Biruken", "stub-threshold": "Pagpatinggaan para iti panagpormat iti silpo ti pungol ($1):", "stub-threshold-sample-link": "wadan", @@ -1082,12 +1076,9 @@ "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.", - "userrights-nologin": "Masapul a [[Special:UserLogin|sumrekka]] nga addaan iti pakabilangan ti administrador tapno makaited kadagiti karbengan ti agar-aramat.", - "userrights-notallowed": "Awan ti pammalubos nga agnayon wenno agikkat kadagiti karbengan ti agar-aramat.", "userrights-changeable-col": "Dagiti grupo a mabalinmo a baliwan", "userrights-unchangeable-col": "Dagiti grupo a dimo mabalin a baliwan", "userrights-conflict": "Suppiat dagiti panagbaliw kadagiti karbengan ti agar-aramat! Pangngaasi nga irepasom ken pasingkedam dagiti sinuksukatam.", - "userrights-removed-self": "Inikkatmo kadagiti bukodmo a karbengan. Iti kastoyen, saankan a mabalin a mangserrek iti daytoy a panid.", "group": "Grupo:", "group-user": "Dagiti agar-aramat", "group-autoconfirmed": "Dagiti automatiko a napasingkedan nga agar-aramat", @@ -1178,7 +1169,6 @@ "right-siteadmin": "Mangikandado ken manglukat iti database", "right-override-export-depth": "Agipan kadagiti panid a mairaman dagiti naisilpo a panid agingana iti kauneg ti 5", "right-sendemail": "Agipatulod iti esurat kadagiti sabali nga agar-aramat", - "right-passwordreset": "Agkita kadagiti esurat ti panangisaad manen ti kontrasenias", "right-managechangetags": "Agpartuat ken (de)aktibuen [[Special:Tags|etiketa]]", "right-applychangetags": "Ipakat dagiti [[Special:Tags|etiketa]] a mairaman dagiti nabaliwan", "right-changetags": "Agnayon ken agikkat kadagiti arbitario nga [[Special:Tags|etiketa]] kadagiti agmaymaysa a rebision ken dagiti naikabkabil iti listaan", @@ -1416,7 +1406,7 @@ "uploaded-setting-handler-svg": "Naserraan ti SVG a nangisaad ti gupit ti \"handler\" nga addaan iti remote/data/script. Nabirukan ti <code>$1=\"$2\"</code> iti naikarga a papeles ti SVG.", "uploaded-remote-url-svg": "Naserraan ti SVG a nangisaad ti gupit iti ania man nga estilo nga addaan iti remote nga URL. Nabirukan ti <code>$1=\"$2\"</code> iti naikarga a papeles ti SVG.", "uploaded-image-filter-svg": "Nakabiruk ti sagat ti ladawan nga addaan iti URL: <code><$1 $2=\"$3\"></code> iti naikarga a papeles ti SVG.", - "uploadscriptednamespace": "Daytoy a papeles ti SVG ket aglaon iti maysa a saan a mabalin a nagan ti espasio ti \"$1\".", + "uploadscriptednamespace": "Daytoy a papeles ti SVG ket aglaon iti maysa a saan a mabalin a nagan ti espasio ti \"<nowiki>$1</nowiki>\".", "uploadinvalidxml": "Ti XML iti naikarga a papeles ket saan a maiwaswas.", "uploadvirus": "Ti papeles ket aglaon ti birus! \nDagiti salaysay: $1", "uploadjava": "Daytoy a papeles ket papeles ti ZIP nga aglaon ti Java .a klase ti papeles.\nTi panangikarga ti papales ti Java ket saan a maipalubos gapu ta makapataudda a manglabas kadagiti panangigawid ti seguridad.", @@ -3403,47 +3393,12 @@ "feedback-useragent": "Ahente ti agar-aramat:", "searchsuggest-search": "Biruken", "searchsuggest-containing": "naglaon ti...", - "api-error-autoblocked": "Automatiko a naserraan ti IP nga adresmo, gapu ta inusar babaen ti naseraan nga agar-aramat.", - "api-error-badaccess-groups": "Saanka mapalubosan nga agikarga kadagiti papeles iti daytoy a wiki.", "api-error-badtoken": "Akin-uneg a biddut: Dakes a tandaan.", - "api-error-blocked": "Naserraankan manipud iti panagurnos.", - "api-error-copyuploaddisabled": "Ti panagikarga babaen ti URL ket nabaldado iti daytoy server.", - "api-error-duplicate": "Adda {{PLURAL:$1|sabali a papeles|dagiti sabali a papeles}} nga addan iti daytoy a sitio nga agraman iti agpada a linaon.", - "api-error-duplicate-archive": "Adda {{PLURAL:$1|idi sabali a papeles|dagidi sabali a papeles}} nga addaan ditoy a sitio nga agpada ti linaonda, ngem {{PLURAL:$1|daytoy|dagitoy}} ket naikkat.", - "api-error-empty-file": "Ti papeles nga intedmo ket awan linaon.", "api-error-emptypage": "Agparprtuat ti baro, dagiti awan ti linaon a panid ket saan a maipalubos.", - "api-error-fetchfileerror": "Akin-uneg a biddut: Addaan ti dakes a napasamak bayat nga agal-ala ti papeles.", - "api-error-fileexists-forbidden": "Ti papeles nga agnagan ti \"$1\" ket addan, ken saan a mabalin a masuratan manen.", - "api-error-fileexists-shared-forbidden": "Ti papeles nga agnagan ti \"$1\" ket adda idiay pagbibingayan a repositorio ti papeles, ken saan a mabalin a masuratan manen.", - "api-error-file-too-large": "Ti papeles nga intedmo ket dakkel unay.", - "api-error-filename-tooshort": "Ti nagan daytoy a papeles ket bassit unay.", - "api-error-filetype-banned": "Ti kita daytoy a papeles ket maiparit.", - "api-error-filetype-banned-type": "Ti $1 {{PLURAL:$4|ket saan a mapalubosan a kita ti papeles|ket dagiti saan a mapalubusan a kita ti papeles}}. Ti mapalubosan {{PLURAL:$3|a kita ti papeles ket|kadagiti kita ti papeles ket}} $2.", - "api-error-filetype-missing": "Ti papeles ket awan ti maysa a pagpaatiddog.", - "api-error-hookaborted": "Ti panagbabaro a pinadasmo ket pinasardeng babaen ti maysa a pagpaatiddog.", - "api-error-http": "Akin-uneg a biddut: Saan a makaikabit iti server.", - "api-error-illegal-filename": "Ti nagan daytoy a papeles ket saan a maipalubos.", - "api-error-internal-error": "Akin-uneg a biddut: Addaan ti dakes a napasamak iti panagproseso ti inkargam iti daytoy a wiki.", - "api-error-invalid-file-key": "Akin-uneg a biddut: Saan a nabirukan ti papeles idiay temporario a nagidulinan.", - "api-error-missingparam": "Akin-uneg a biddut: Awan dagiti parametro iti kiddaw.", - "api-error-missingresult": "Akin-uneg a biddut: Saan a naikeddeng no ti kopia ket nagballigi.", - "api-error-mustbeloggedin": "Masapul a nakastrekka tapno makaikarga kadagiti papeles.", - "api-error-mustbeposted": "Akin-uneg a biddut: Ti kiddaw ket masapul ti HTTP POST.", - "api-error-noimageinfo": "Balligi ti panagikarga, ngem ti server ket saan a nagited kadakami ti aniaman a pakaammo a maipanggep iti daytoy a papeles.", - "api-error-nomodule": "Akin-uneg a biddut: Awan ti naisad a modulo ti panagikarga.", - "api-error-ok-but-empty": "Akin-uneg a biddut: Awan ti sungbat manipud iti server.", - "api-error-overwrite": "Saan a maipalubos a suratan manen iti papeles nga addan.", - "api-error-stashfailed": "Akin-uneg a biddut: Napaay ti server nga agidulin ti temporario a papeles.", "api-error-publishfailed": "Akin-uneg a biddut: Napaay ti server nga agipablaak ti temporario a papeles.", - "api-error-stasherror": "Adda maysa a biddut bayat nga agikarkarga ti papeles iti stash.", - "api-error-timeout": "Saan a simmungbat ti server iti nanamnama nga oras.", - "api-error-unclassified": "Adda rimsua a di ammo a biddut.", - "api-error-unknown-code": "Di ammo a biddut: \"$1\".", - "api-error-unknown-error": "Akin-uneg a biddut: Addaan ti dakes a napasamak bayat idi nagipadaska nga agikarga iti papelesmo.", + "api-error-stashfailed": "Akin-uneg a biddut: Napaay ti server nga agidulin ti temporario a papeles.", "api-error-unknown-warning": "Di ammo a ballaag: \"$1\".", "api-error-unknownerror": "Di ammo a biddut: \"$1\".", - "api-error-uploaddisabled": "Nabaldado ti panagikarga iti daytoy a wiki.", - "api-error-verification-error": "Mabalin a dakes daytoy a papeles, wenno addaan iti madi a pagpaatiddog.", "duration-seconds": "$1 a {{PLURAL:$1|segundo|segsegundo}}", "duration-minutes": "$1 a {{PLURAL:$1|minuto|minminuto}}", "duration-hours": "$1 nga {{PLURAL:$1|oras|or-oras}}", diff --git a/languages/i18n/inh.json b/languages/i18n/inh.json index 6990ca0110..7c5bc69acd 100644 --- a/languages/i18n/inh.json +++ b/languages/i18n/inh.json @@ -38,7 +38,7 @@ "tog-enotifminoredits": "ОагIонашта а файлашта даь хувцамаш геттара зIамига дале а хоам бе сога", "tog-enotifrevealaddr": "ДIахайта хоамбараш чу бIаргадейта са почта адрес", "tog-shownumberswatching": "Шоаш зем бу оагIонашта юкъе ер оагIув чуяьккха доакьошхоша таьрахь гойта", - "tog-oldsig": "Ð¥Iанзара яздаь кулг:", + "tog-oldsig": "Хьа карара кулг яздар:", "tog-fancysig": "Кулг яздара ший йола вики-разметка (автоматически тIахьожаярг йоацаш)", "tog-uselivepreview": "Пайда эца сиха дола хьалххе бIаргтохар", "tog-forceeditsummary": "ДIахьалхадаккха, нагахьа санна хувцама йоазонца сурт оттадара моттиг хьалъйизанза яле", @@ -140,14 +140,14 @@ "category-file-count-limited": "Укх категори чу {{PLURAL:$1|$1 файл|$1 файлаш|1=цаI мара файл яц}}.", "listingcontinuesabbrev": "(дIахо)", "index-category": "Индекс оттаеш оагIонаш", - "noindex-category": "Индекс ца оттаеш оагIонаш", + "noindex-category": "Индекс оттайинза оагIонаш", "broken-file-category": "Файла тIахьожаяргаш болхбеш йоаца оагIонаш", "about": "Сурт оттадар", "article": "Статья", "newwindow": " (керда кора чу)", "cancel": "Юхадаккха", "moredotdotdot": "ДIахо...", - "morenotlisted": "Ер список хьалйиза яц.", + "morenotlisted": "Ер хьаязяьр хьалйизанза хила мегаш я.", "mypage": "ОагIув", "mytalk": "Дувца оттадар", "anontalk": "Дувца оттадар", @@ -399,8 +399,8 @@ "showpreview": "Хьалххе бIаргтохар", "showdiff": "Даь дола хувцамаш", "anoneditwarning": "<strong>Теркам бе!</strong> Хьо автор хинна система чуваьннавац. Нагахьа санна Iа моллагIа хувцам бой, Хьа IP-адрес дийла массанен бIаргагуш хургда. Нагахьа санна Хьо <strong>[$1 хьачувоале]</strong> е <strong>[$2 дагара йоазув хьакхолле]</strong>, нийсдараш (хувцамаш) бувзам болаш хургда Хьа доакъашхой цIерца, иштта кхыдола толажагIи гIойленагIи дола дикаьш хургда Хьона.", - "summary-preview": "Сурт оттадар хургда:", - "subject-preview": "Даькъа цIи хургья иштта:", + "summary-preview": "Хувцама сурт оттадара хьалхе бIаргтохар:", + "subject-preview": "Теман/кортбара хьалххе бIаргтохар:", "blockedtitle": "Доакъашхочун чIега техаб", "blockednoreason": "бахьан белгалдаьккха дац", "loginreqlink": "довзийта", @@ -481,11 +481,11 @@ "notextmatches": "ОагIонай тексташта юкъе цхьатара хилар дац", "prevn": "{{PLURAL:$1|1=хьалхайогIар|хьалхайогIараш}} $1", "nextn": "{{PLURAL:$1|1=тIехьайоагIар|тIехьайоагIараш}} $1", - "prevn-title": "{{PLURAL:$1|1=$1 хьалхара йоазув|$1 хьалхара йоазувнаш}}", + "prevn-title": "{{PLURAL:$1|ХьалхадоагIа $1 дIаяздар}}", "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": "<strong>Хьакхолла оагIув «[[:$1]]» укх вики-проекте!</strong>\n{{PLURAL:$2|0=|Иштта хьажа Iайха лийха оагIонга.|Иштта хьажа хьай лахара хьахиннарашка.}}", "searchprofile-articles": "Кертера оагIонаш", "searchprofile-images": "Мультимедиа", @@ -496,7 +496,7 @@ "searchprofile-everything-tooltip": "Массайола оагIонаш тIа лахар (дувцар оттадара оагIонаш чулоацаш)", "searchprofile-advanced-tooltip": "Iочуязаяь цIерий аренашка лаха", "search-result-size": "$1 ({{PLURAL:$2|$2 дош|$2 дешаш}})", - "search-result-category-size": "{{PLURAL:$1|1=$1 дакъа|$1 дакъаш}} ({{PLURAL:$2|1=$2 кIалцатег|$2 кIалцатегаш}}, {{PLURAL:$3|1=$3 паьла|$3 паьлий}})", + "search-result-category-size": "$1 {{PLURAL:$1|юкъедахар}} ($2 {{PLURAL:$2|кIалкатегори}}, $3 {{PLURAL:$3|файл}})", "search-redirect": "(дIа-хьахьожадар $1 тIара)", "search-section": "(дáкъа «$1»)", "search-suggest": "Хьона эшар ер хила мега: $1", @@ -552,7 +552,7 @@ "prefs-signature": "Кулг яздар", "prefs-preview": "Хьалххе бIаргтохар", "userrights-user-editname": "Iочуязъе доакъашхочун цӀи:", - "editusergroup": "Хувца {{GENDER:$1|доакъашхочун}} тоабаш", + "editusergroup": "Йотта доакъашхой тоабаш", "saveusergroups": "ДIаязъе {{GENDER:$1|доакъашхочун}} тоабаш", "userrights-groupsmember": "Дакъа лоаца тоабаш чу:", "userrights-reason": "Бахьан:", @@ -592,7 +592,7 @@ "recentchanges-label-plusminus": "байташкахь боарам хувцар", "recentchanges-legend-heading": "<strong>Легенда: </strong>", "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (хьажа иштта [[Special:NewPages|керда оагIонашка]])", - "rcnotefrom": "КIалхагIа хувцамаш хьахьекха я <strong>$2</strong> денза (<strong>$1</strong> кхачалца).", + "rcnotefrom": "КIалхагIа {{PLURAL:$5|хувцам белгалбаьккхаб}} <strong>$3, $4</strong> тIера (хьахьекхабац <strong>$1</strong>-л дукхагIа).", "rclistfrom": "$3 $2 денза даь хувцамаш хьахьокха", "rcshowhideminor": "$1 зIамига нийсдараш", "rcshowhideminor-show": "Хьахьокха", @@ -687,7 +687,7 @@ "newpages": "Керда оагIонаш", "move": "ЦIи хувца", "movethispage": "ЦIи хувца укх оагIон", - "pager-newer-n": "{{PLURAL:$1|кердагIа дара|кердагIа дараш|кердагIа долачаьрахь}} $1", + "pager-newer-n": "$1 дукхагIа {{PLURAL:$1|керда}}", "pager-older-n": "{{PLURAL:$1|къаьнара дара|къаьнара дараш|къаьнара долaчарех}} $1", "booksources": "Джейнай хьасташ (источники)", "booksources-search-legend": "Джейнах лаьца хоам лахар", @@ -741,7 +741,7 @@ "protect_expiry_old": "Чакхадалара ха — дахáр да.", "protect-text": "Хьа йиш я оагIон '''$1''' лорадара лагIа бIаргтоха a, хувца a .", "protect-locked-access": "Хьа дагара йоазонга тоъал бокъо яц оагIон лорадара лагIа хувца. '''$1''' оагIон карара оттадараш:", - "protect-cascadeon": "{{PLURAL:$1|1=КIалхахь хьагойташ йола оагIувчу|КIалхахь хьагойташ йола оагIувнашчу}} ер оагIув чуяккха халарахь, лорам Iоттая я, хурхала лорам Iоттая я. Укх оагIувни лорама лагIа хувца йийш йолаш я, амма хурхала лорам хувцлургдац.", + "protect-cascadeon": "Каскадни лорадар оттадаь йолча {{PLURAL:$1|1=кIалхагIа белгалъяь оагIон чу|кIалхагIа белгалъяь оагIонаш чу}} юкъеяьккха хилара бахьане ер оагIув хIанза лораяь я. Укх оагIон лорадара дарж хувцаро каскадни лорадар меттахдоаккхадац.", "protect-default": "Лорадар доацаш", "protect-fallback": "Могадаьд алхха ше «$1» волача доакъашхошта", "protect-level-autoconfirmed": "Могадаьд алхха ше-ше къоабалбаь хинна доакъашхошта", @@ -811,8 +811,8 @@ "unblocklogentry": "чIега баьстаб $1", "block-log-flags-nocreate": "дагара йоазонаш кхоллар пурам деннадац", "move-page-legend": "ОагIон цIи хувцар", - "movepagetext": "КIалхара кепаца болхабеча, оаш оагIувни цIи хувцаргья, цунна хувцамий тептар кхыйола меттиге дIачудоаккхаш.\nКIаьнара цIерахь керда цIерий дIачудаккхам хургда.\nКIаьнара цIера тIа даь дола дIачудаккхамаш, шун ший лоIамахь кердадаккха йийш хургья.\nИз оаш ца дой, дехар да, [[Special:DoubleRedirects|шолха]] кхы [[Special:BrokenRedirects|вIашагIаяккха дIачудаккхамий]] кардоламахь хьажа.\nОаш жоп лу, шоай чуяккха йола Iинкаш, даим болхбеш хургдолга.\n\nЗем бахка, оагIувни цIи хувцалургьяц, изза мо цIи йолаш оагIув хилача. \nЙолаш йола оагIув хувца йийш яц, амма хийца йола оагIув юха хьахувца йийш я. \n\n'''Хоамхайтар'''\n\nЦIи хувцар, йовзаш йола оагIувнаший, доккха а цаьхха а хувцамшка дIатIадала мегаш да.\nДехар да, оаш дIахо болх белаьхь, хургдола хIама кхеташ долга, кхеталаш.", - "movepagetalktext": "ТIатеха дувцама оагIув, ший лоIамахь цIи хувлургья, '''ер дага а доацар, доаца:'''\n\n*Изза мо цIи йолаш яьсса дувцама оагIув я е\n*Оаш кIалхахь белгало даьдац.\n\nИз иштта дале, кулги новкъосталца оагIувнаш вIашагIатоха е дIадехьаяккха деза шун.", + "movepagetext": "КIалха белгаляьча формах пайда ийца Iа оагIон цIи хувцаргья, цун хувцамий тептар кхыйола моттиге оттаярца цхьанна.\nКъаьнарча цIерах хургья кердача цIера дIа-сахьожадар.\nХьа аьттув ба къаьнарча цIера хинна дIа-сахьожадараш ше-ше кердадаккха.\nНагахьа санна Iа из ца дой, дехар ду, [[Special:DoubleRedirects|шолха]] а [[Special:BrokenRedirects|хеттанза дIа-сахьожадараш]] долаш дий тахка.\nХьо бехктокхаме ва тIахьожаяргаш шоаш тIахьожаде дезача нийса хилар.\n\nТеркам бе, оагIон цIи <strong>хувцалургьйоацалга</strong> нагахьа санна изза мо цIи йола оагIув йолаш яле. Чу хIама доацача оагIонашта е дIа-сахьожадарашта, кхы а цар хувцамий истори йице, из новкъа дац. Из яхилга да, нагахьа Iа харца цIи хувцар даь дале, ше хинна цIи юхадIахувца йиш я, амма бакъда йолаш йола оагIув ца ховш дIаяккха аьттув бац. \n\n<strong>Белгалдоахар:</strong>\nГIоряьннача оагIонай цIи хувцаро тIехдоккхеи цIаьххеи хувцамаш доаладе мега.\nБоккъала, дIахо хье дIавахалехьа, кхета, хила мегаш дар хургдолга.", + "movepagetalktext": "Нагахьа санна Iа ер пункт белгалъйой, цунца бувзам бола дувца оттадара оагIув иштта ше-ше цIи хийца хургья, нагахьа санна изза мо цIи йола яьсса йоаца дувца оттадара оагIув йолаш йице.\n\nИз иштта дале, нагахьа из эшаш дале, Iайха оагIон цIи дIахувца.", "newtitle": "Керда цIи:", "move-watch": "Ер оагIув зем бара хьаязъяьра юкъеяьккха", "movepagebtn": "ОагIон цIи хувца", diff --git a/languages/i18n/io.json b/languages/i18n/io.json index 065b79a768..1814b4693d 100644 --- a/languages/i18n/io.json +++ b/languages/i18n/io.json @@ -24,11 +24,11 @@ "tog-newpageshidepatrolled": "Celez patroliita pagini en la listo di nova pagino", "tog-hidecategorization": "Celar kategorizeso di la pagini", "tog-extendwatchlist": "Expansez surveyo-listo por montrar omna chanji, vice nur la maxim recenta", - "tog-usenewrc": "Usez augmentita Recenta chanji (JavaScript bezonesas)", + "tog-usenewrc": "Chanji al grupo po pagino en recenta chanji e \"watchlist\"", "tog-numberheadings": "Autonumerez tituli", "tog-showtoolbar": "Montrez redaktilo (JavaScript bezonesas)", "tog-editondblclick": "Redaktez pagini kande on klikus dufoye (JavaScript bezonesas)", - "tog-editsectiononrightclick": "Kapabligez redakto di secioni kande on dextra-klikus tituli di secioni (JavaScript bezonesas)", + "tog-editsectiononrightclick": "Kapabligez redakto di secioni per dextre-klikar tituli di secioni", "tog-watchcreations": "Adjuntez la pagini qui me kreos a mea surveyaji", "tog-watchdefault": "Adjuntez pagini qui me redaktos a mea surveyaji", "tog-watchmoves": "Adjuntez pagini qui me movos a mea surveyaji", @@ -63,7 +63,9 @@ "tog-prefershttps": "Sempre uzar sekura konekto kande facar log in", "underline-always": "Sempre", "underline-never": "Nulatempe", + "underline-default": "Pre-ajustaji pri sub-strekizar ligili", "editfont-style": "Stilo di fonto uzata por editar la texto:", + "editfont-default": "Preajustaji di navigilo", "editfont-monospace": "Tipo por redaktar kun singla spaco", "editfont-sansserif": "tipo Sans-serif", "editfont-serif": "tipo di fonto Serif", @@ -152,8 +154,8 @@ "article": "artiklo", "newwindow": "(aparos en nova panelo)", "cancel": "Anular", - "moredotdotdot": "Plua...", - "morenotlisted": "Ca listo povas esar nekompleta", + "moredotdotdot": "Plusa...", + "morenotlisted": "Ca listo povas esar nekompleta.", "mypage": "Mea pagino", "mytalk": "Diskuti", "anontalk": "Diskuto relatant ad ica IP", @@ -181,6 +183,7 @@ "searcharticle": "Irez", "history": "Paginala historio", "history_short": "Versionaro", + "history_small": "historio", "updatedmarker": "aktualigita pos mea lasta vizito", "printableversion": "Imprimebla versiono", "permalink": "Permananta ligilo", @@ -212,10 +215,10 @@ "talk": "Diskuto", "views": "Apari", "toolbox": "Utensili", - "tool-link-userrights": "Chanjar la grupi di {{GENDER:$1|uzanto}}", - "tool-link-userrights-readonly": "Vidar lua grupi", + "tool-link-userrights": "Chanjar la grupi di {{GENDER:$1|uzero}}", + "tool-link-userrights-readonly": "Vidar grupi {{GENDER:$1|user}}", "tool-link-emailuser": "Sendar e-posto a {{GENDER:$1|}}", - "userpage": "Vidar uzanto-pagino", + "userpage": "Vidar uzeropagino", "projectpage": "Vidar projeto-pagino", "imagepage": "Vidar arkivo-pagino", "mediawikipage": "Vidar mesajo-pagino", @@ -234,6 +237,7 @@ "jumptonavigation": "pilotado", "jumptosearch": "serchez", "view-pool-error": "Pardonez, la sistemo esas okupata nun.\nMulta uzanti deziras vidar ca pagino.\nVoluntez vartar kelka instanti ante itere probar vidar ol.\n\n$1", + "generic-pool-error": "Pardonez, la servo-komputeri esas okupata nun.\nMulta uzanti probas vidar ta pagino.\nVoluntez vartar kelka instanti ante itere probar vidar ol.", "pool-timeout": "Limito di tempo vartante la klozado", "pool-queuefull": "La serio di taski esas plena", "pool-errorunknown": "nekonocata eroro", @@ -264,7 +268,7 @@ "ok": "O.K.", "retrievedfrom": "Obtenita de \"$1\"", "youhavenewmessages": "Vu havas $1 ($2).", - "youhavenewmessagesfromusers": "{{PLURAL:$4|Vu havas}} $1 dal {{PLURAL:$3|altra uzanto|$3 uzanti}} ($2).", + "youhavenewmessagesfromusers": "{{PLURAL:$4|Vu havas}} $1 dal {{PLURAL:$3|altra uzero|$3 uzeri}} ($2).", "youhavenewmessagesmanyusers": "Tu havas $1 da multa uzanti ($2).", "newmessageslinkplural": "{{PLURAL:$1| nova mesajo|999= nova mesaji}}", "newmessagesdifflinkplural": "Lasta {{PLURAL:$1|chanjo|chanji}}", @@ -288,6 +292,7 @@ "restorelink": "{{PLURAL:$1|1 redakto efacita|$1 redakti efacita}}", "feedlinks": "Fonto RSS:", "feed-invalid": "Tipo di fonto RSS nevalida", + "feed-unavailable": "Abonata publikaji ne esas disponebla", "site-rss-feed": "$1 RSS Provizajo", "site-atom-feed": "$1 Atom Provizajo", "page-rss-feed": "\"$1\" RSS Provizajo", @@ -296,7 +301,8 @@ "sort-descending": "En ordino dekreskanta", "sort-ascending": "En ordino kreskanta", "nstab-main": "Pagino", - "nstab-user": "Uzanto-pagino", + "nstab-user": "Uzeropagino", + "nstab-media": "Media pagino", "nstab-special": "Specala pagino", "nstab-project": "Projeto pagino", "nstab-image": "Failo", @@ -311,6 +317,10 @@ "nospecialpagetext": "<strong>Vu demandis specala pagino qua ne existas.</strong>\n\nOn povas trovar listo di valida specala pagini en [[Special:SpecialPages|{{int:specialpages}}]].", "error": "Eroro", "databaseerror": "Datumarala eroro", + "databaseerror-text": "Eventis eroro en datum-bazal demando.\nTo indikus eror en la programaro.", + "databaseerror-textcl": "Eventis eroro en datumbazal demando.", + "databaseerror-query": "Demando:$1", + "databaseerror-function": "Funciono: $1", "databaseerror-error": "Eroro:$1", "laggedslavemode": "<strong>Averto:</strong> La pagino povas ne kontenar la maxim recenta modifiki.", "readonly": "Datumaro esas blokusita", @@ -320,23 +330,54 @@ "missingarticle-diff": "(Difero: $1, $2)", "internalerror": "Interna eroro", "internalerror_info": "Interna eroro: $1", + "internalerror-fatal-exception": "Ne-reparebla ecepto \"$1\"", "filecopyerror": "Ne povis kopiar l'arkivo \"$1\" a \"$2\".", "filerenameerror": "Ne povas rinomizar l'arkivo \"$1\" ad \"$2\".", "filedeleteerror": "Onu ne povis efacar l'arkivo \"$1\".", + "directorycreateerror": "Ne sucesis krear dosieruyo \"$1\".", + "directoryreadonlyerror": "Dosieruyo \"$1\" esas nur-lektebla.", + "directorynotreadableerror": "Dosieruyo \"$1\" esas ne-lektebla.", "filenotfound": "Onu ne povas trovar la arkivo \"$1\".", "unexpected": "Nevartita valoro: \"$1\"=\"$2\".", "formerror": "Eroro: Onu ne povis sendar la kontenajo di la formularo", "badarticleerror": "Ica ago ne povas facesar en ca pagino.", "cannotdelete": "Ne es posibla efacar la pagino od arkivo \"$1\".\nForsan, ulu ja efacis ol.", + "cannotdelete-title": "Ne povas efacar pagino \"$1\"", + "no-null-revision": "Ne povis krear nova nula-revizo por pagino \"$1\"", "badtitle": "Nekorekta titulo", "badtitletext": "La solicitita pagino esas nevalida, vakua od esas\nnekorekta interlinguale od interwikale ligilo.", + "title-invalid-empty": "La demandita pagino-titulo es vakua o kontenas nur la nome di \"namespace\".", + "title-invalid-utf8": "La demandita pagino-titulo kontenas ne-valida sequo UTF-8.", + "title-invalid-interwiki": "La demandita pagino-titulo kontenas inter-wiki-ala ligilo, olqua ne povas uzesar en tituli.", + "title-invalid-talk-namespace": "La demandita pagino-titulo referas a diskuto-pagino, qua ne existas.", + "title-invalid-characters": "La demandita pagino-titulo kontenas ne-valida literi: \"$1\".", "perfcached": "La sequanta datumi esas kashizita* e li povus ne aktualigesar nuntempe. A maximum of {{PLURAL:$1|one result is|$1 results are}} available in the cache.", "viewsource": "Vidar font-kodo", - "protectedpagetext": "Ica pagino esis protektita por preventar redaktar.", - "viewsourcetext": "Vu povas vidar ed kopiar la fonto-kodexo di ta pagino:", + "actionthrottled": "Agado limitizita", + "protectedpagetext": "Ta pagino protektesis por preventar redaktadi od altra agi.", + "viewsourcetext": "Vu povas vidar ed kopiar la fonto-kodexo di ta pagino.", + "viewyourtext": "Vu darfas vidar e kopiar la fonto di <strong>vua redakti</strong> ad ita pagino.", + "protectedinterface": "Ita pagino provizas 'interface' texto por la programaro en ita wiki, ed esas protektita por preventar mis-uzo.\nPor introduktar o chanjar tradukaji di la wiki-i, voluntez vizitar [https://translatewiki.net/ translatewiki.net], la projeto qua provizas tradukaji a MediaWiki.", + "editinginterface": "<strong>Averto:</strong> Vu redaktas pagino qua uzesas por provizar 'interface' texto di la programaro.\nChanji a ta pagino chanjos la aspekto di pagini por altra uzeri di ta wiki.", + "translateinterface": "Por introduktar o chanjar tradukaji en omna wiki-i, voluntez uzar [https://translatewiki.net/ translatewiki.net], la komuna projeto MediaWiki.", + "namespaceprotected": "Vu ne es permisita redaktar pagini en la nomaro <strong>$1</strong>.", + "customcssprotected": "Vu ne es permisita redaktar ita CSS pagino nam ol kontenas personal ajustaji di altra uzero.", + "customjsprotected": "Vu ne es permisita redaktar ita JavaScript pagino nam ol kontenas personal ajustaji di altra uzero.", + "mycustomcssprotected": "Vu ne es permisita redaktar ita CSS pagino.", + "mycustomjsprotected": "Vu ne es permisita redaktar ita JavaScript pagino.", + "myprivateinfoprotected": "Vu ne es permisita redaktar vua privata informajo.", + "mypreferencesprotected": "Vu ne es permisita redaktar vua preferaji.", "ns-specialprotected": "On ne povas redaktar speciala pagini.", + "titleprotected": "Ita titulo es protektita de kreado da [[User:$1|$1]].\nLa motivo es <em>$2</em>.", + "filereadonlyerror": "La dosiero \"$1\" ne es modifikebla nam la depozeyo di dosieri \"$2\" esas nur lektebla.\n\nLa sistem-administrero qua klozis ol ofris ita klarigo: \"$3\".", + "invalidtitle-knownnamespace": "Ne-valida titulo kun nomaro \"$2\" e texto \"$3\"", + "exception-nologin": "Vu ne eniris", + "exception-nologin-text": "Voluntez enirar konto por acesar la pagino od ago.", + "exception-nologin-text-manual": "Voluntez $1 por acesar ta pagino od ago.", + "virus-badscanner": "Mala selektajo: Nekonocata skanilo di virusi: <em>$1</em>", + "virus-scanfailed": "skano ne sucesis (kodexo $1)", "virus-unknownscanner": "antiviruso nekonocata:", - "logouttext": "<strong>'''Vu nun esas nun ek {{SITENAME}}.'''</strong>\n\nVu povas durar uzante {{SITENAME}} anonimale, o vu povas <span class='plainlinks'>[$1 enirar itere]</span> kom la sama o diferenta uzanto.\nAtencez ke kelka pagini posible duras montresar semblante ke vu ne ekirus, til vu vakuigas la tempala-magazino di vua navigilo.", + "logouttext": "<strong>Vu ekirabas.</strong>\n\nAtencez ke kelka pagini posible duras montresar quaze vu ne ekiris, til ke vu vakuigos la tempala-magazino di la navigilo.", "cannotlogoutnow-title": "Ne povas ekirar nun", "cannotlogoutnow-text": "Ekirar ne esas posibla kande vu uzas $1.", "welcomeuser": "Esez bonvenanta, $1!", @@ -359,14 +400,18 @@ "cannotloginnow-title": "Ne povas enirar nun", "cannotloginnow-text": "Enirar ne esas posibla kande vu usas $1", "cannotcreateaccount-title": "Ne povas krear la konti", + "cannotcreateaccount-text": "Krear uzerokonto ne posibligas en ita wiki.", "yourdomainname": "Vua domano:", + "password-change-forbidden": "Vu ne darfas chanjar pasovorti en ita wiki.", "login": "Enirar", + "login-security": "Kontrolez vua identeso.", "nav-login-createaccount": "Enirar / Krear konto", "userlogin": "Enirar / krear konto", "userloginnocreate": "Enirar", "logout": "Ekirar", "userlogout": "Ekirar", "notloggedin": "Sesiono ne esas iniciata", + "userlogin-noaccount": "Ka vu ne havas konto?", "userlogin-joinproject": "Enirez la {{SITENAME}}", "nologin": "Ka vu ne havas konto? $1.", "nologinlink": "Kreez konto", @@ -376,29 +421,53 @@ "userlogin-resetlink": "Ka tu obliviis la detalii pri tua konekto?", "userlogin-resetpassword-link": "Ka tu obliviis tua pasovorto?", "userlogin-helplink2": "Helpo pri quale enirar", - "userlogin-loggedin": "Tu ja eniris, kun la nomo {{GENDER:$1|$1}}\n\nUsez la formulario infre por enirar quale altra uzanto.", + "userlogin-loggedin": "Tu ja eniris, kun la nomo {{GENDER:$1|$1}}\n\nUsez la formulario infre por enirar quale altra uzero.", + "userlogin-reauth": "Vu mustas ri-enirar por kontrolar ke vu esas {{GENDER:$1|$1}}.", + "userlogin-createanother": "Kreez plusa konto.", + "createacct-emailrequired": "E-postal adreso", + "createacct-emailoptional": "E-postal adreso (ne-obligita)", + "createacct-email-ph": "Prizentez vua e-postal adreso", + "createacct-another-email-ph": "Prizentez vua e-postal adreso", "createaccountmail": "Uzez provizora pasovorto, ed ad adresizez ol a la korespondanta e-posto", "createacct-realname": "Vera nomo (fakultativa)", "createaccountreason": "Motivo:", "createacct-reason": "Motivo", "createacct-reason-ph": "Pro quo tu kreas nova konto", + "createacct-submit": "Kreez konto", + "createacct-another-submit": "Krear konto", + "createacct-continue-submit": "Durez krear konto", + "createacct-another-continue-submit": "Durez krear konto", + "createacct-benefit-heading": "{{SITENAME}} facesas da homi simile a vu.", + "createacct-benefit-body1": "{{PLURAL:$1|redakto|redakti}}", + "createacct-benefit-body2": "{{PLURAL:$1|pagino|pagini}}", + "createacct-benefit-body3": "recenta {{PLURAL:$1|kontributero|kontributeri}}", "badretype": "La pasovorti vu donis ne esas sama.", - "userexists": "La uzantonomo, quan vu skribis, ja selektesis antee.\nVoluntez, elektez ula diferanta uzantonomo.", + "usernameinprogress": "Kontokreado por ita uzero duras. Voluntez vartar.", + "userexists": "La uzeronomo ja selektesis antee.\nVoluntez elektar diferanta uzeronomo.", "loginerror": "Eroro enirante", + "createacct-error": "Eroro pri kontokreado", + "createaccounterror": "Ne povis krear konto: $1", "nocookiesnew": "L'uzero-konto esis kreita, ma vu ne esas eniranta.\n{{SITENAME}} uzas ''bisquiti'' por eniras uzeri.\n''Bisquiti'' esas desacendita.\nVoluntez acendar li, lore enirez per vua nova uzero e pasovorto.", "nocookieslogin": "{{SITENAME}} uzas ''cookies'' por la registrago dil uzanti. Vu havas la ''cookies'' desaktivigita. Voluntez aktivigar oli e probez altrafoye.", + "nocookiesfornew": "La uzerokonto ne kreesis, nam ni ne povis konfirmar lua fonto.\nEsez certa ke navigilo aceptas 'cookies', ri-apertez ita pagino, e riprobez.", + "createacct-loginerror": "Konto kreesis sucesoze ma vu ne eniris la reto. Voluntez vizitar [[Special:UserLogin|manual login]].", "noname": "Vu ne donis valida uzantonomo.", - "loginsuccesstitle": "Eniro sucesoza", + "loginsuccesstitle": "Eniris sucesoze", "loginsuccess": "'''Vu eniris a {{SITENAME}} kom \"$1\".'''", - "nosuchuser": "Ne existas uzanto \"$1\".\nUzanto-nomi esas mayu/minuskulo-distingenda.\nKontrolez vua espelado, o [[Special:CreateAccount|krear nova konto]].", - "nosuchusershort": "Esas nula uzanto \"$1\".\nKontrolez la espelado.", + "nosuchuser": "Ne existas uzero \"$1\".\nUzeronomi esas mayu/minuskulo-distingenda.\nKontrolez la espelado, o [[Special:CreateAccount|krear nova konto]].", + "nosuchusershort": "Esas nula uzero \"$1\".\nKontrolez la espelado.", "nouserspecified": "Vu mustas specigar uzantonomo.", + "login-userblocked": "Ta uzero es interdiktita. Enirado ne permisesas.", "wrongpassword": "La skribita pasovorto esis nekorekta. Voluntez probar itere.", "wrongpasswordempty": "Vu ne skribis pasovorto. Probez nove.", "passwordtooshort": "Pasovorti mustas kontenar adminime {{PLURAL:$1|1 signo|$1 signi}}.", + "passwordtoolong": "Pasovorti ne mustas esar plu longa kam {{PLURAL:$1|1 litero|$1 literi}}.", + "passwordtoopopular": "Voluntez selektar plu unika pasovorto.", + "password-name-match": "Pasovorto mustas diferar de vua uzeronomo.", + "password-login-forbidden": "La uzo di ita uzeronomo e pasovorto es interdiktita.", "mailmypassword": "Sendez nova pasovorto per e-posto", "passwordremindertitle": "Nova provizora pasovorto por {{SITENAME}}", - "noemail": "Ne esas e-adreso konservita por la uzanto \"$1\".", + "noemail": "Ne esas e-adreso konservita por la uzero \"$1\".", "noemailcreate": "Tu mustas informar valida e-posto", "passwordsent": "Nova pasovorto sendesis a la e-adreso registragita por \"$1\".\nVoluntez enirar altrafoye pos recevar ol.", "blocked-mailpassword": "Vua adreso di IP blokuzesis por redaktado. Por preventar misuzo, ne permisesas rekuperar pasovorti de ca adreso di IP.", @@ -406,23 +475,70 @@ "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": "Eroro sendante posto: $1", "acct_creation_throttle_hit": "Vizitanti ad ica wiki uzante vua IP adreso kreis {{PLURAL:$1|1 konto|$1 konti}} ye la antea dio (24 hori), qua esas la maximo permisata. Konseque, vizitanti uzante ca IP adreso ne pluse povas krear konti prezente.", - "emailauthenticated": "Vua e-postala adreso autentikigesis ye $2, ye $3.", + "emailauthenticated": "Vua e-postal adreso autentikigesis ye $2, ye $3.", + "emailnotauthenticated": "Vua e-postal adreso ne ja autentikigesas.\nNula mesaji sendesos por irga di la sequanta funcioni.", + "noemailprefs": "Prizentez e-postal adreso en vua preferaji por disponar ita funcioni.", "emailconfirmlink": "Konfirmez vua adreso di e-posto", + "cannotchangeemail": "E-posto-adreso dil konto ne povas chanjesar ye ta wikio.", + "emaildisabled": "Ita ret-sito ne povas sendar e-mesaji.", "accountcreated": "Konto kreesis", - "accountcreatedtext": "La uzantokonto por $1 kreatesis.", + "accountcreatedtext": "La uzerokonto por [[{{ns:User}}:$1|$1]] ([[{{ns:User talk}}:$1|diskuto]]) kreesis.", "createaccount-title": "Kreo di konto en {{SITENAME}}", + "createaccount-text": "Ulu kreis konto por vua e-posto adreso ye {{SITENAME}} ($4) nomita \"$2\", kun pasovorto \"$3\".\nVu devas enirar la konto e chanjar vua pasovorto nun.\n\nVu darfas ignorar ita mesajo, se ita konto kreesis en eroro.", + "login-throttled": "Vu probis enirar tro multafoye.\nVoluntez vartar $1 ante riprobar.", + "login-abort-generic": "Vua eniro-probo faliis - Cesigita", + "login-migrated-generic": "Vua konto esas migrata, e vua uzeronomo ne plus existas che ita wikio.", "loginlanguagelabel": "Linguo: $1", + "pt-login": "Enirar", + "pt-login-button": "Enirar", + "pt-login-continue-button": "Durez enirar", + "pt-createaccount": "Krear konto", + "pt-userlogout": "Ekirar", + "php-mail-error-unknown": "Nekonocata eroro en la funciono mail() de PHP", + "user-mail-no-addy": "Probis sendar e-posto sen e-post-adreso.", + "user-mail-no-body": "Probis sendar e-posto kun vakua o tre kurta mesajo.", "changepassword": "Chanjar pasovorto", + "resetpass_announce": "Por kompletigar l'enirado, vu mustas krear nova pasvorto.", "resetpass_header": "Chanjar pasovorto di konto", "oldpassword": "Anciena pasovorto:", "newpassword": "Nova pasovorto:", "retypenew": "Riskribez la nova pasovorto:", "resetpass_submit": "Establisez pasovoro ed enirez", - "changepassword-success": "Vua chanjo di pasovorto sucesis! Nun, vu eniras...", + "changepassword-success": "Vua chanjo di pasovorto sucesis!", + "changepassword-throttled": "Vu probis enirar tro multafoye.\nVoluntez vartar $1 ante riprobar.", + "botpasswords": "Robotala pasovorti", + "botpasswords-label-create": "Krear", + "botpasswords-label-update": "Aktualigar", + "botpasswords-label-cancel": "Anular", + "botpasswords-label-delete": "Efacar", + "botpasswords-label-resetpassword": "Sendez nova pasovorto per e-posto", + "botpasswords-label-grants": "Uzebla grantaji:", "resetpass-submit-loggedin": "Chanjar pasovorto", + "resetpass-submit-cancel": "Anular", + "resetpass-wrong-oldpass": "Nevalida provizora od aktuala pasovorto.\nForsan vu ja chanjis vua pasovorto o demandis nova provizora pasovorto.", + "resetpass-recycled": "Voluntez chanjar vua pasovorto ad ulo diferanta de vua aktuala pasovorto.", + "resetpass-temp-emailed": "Vu eniris uzante provizora pasovorto.\nPor parkompletigar enirado, vu mustas krear nova pasovorto hike:", "resetpass-temp-password": "Provizora pasovorto:", + "passwordreset": "Sendez nova pasovorto per e-posto", "passwordreset-username": "Uzantonomo:", - "changeemail": "Chanjar e-adreso*", + "passwordreset-invalidemail": "Ne-valida e-posto-adreso", + "passwordreset-nodata": "Nek uzeronomo nek e-posto-adreso esis provizita", + "changeemail": "Chanjar od efacar e-postal adreso", + "changeemail-header": "Plenigez ita formulario por chanjar vua e-posto-adreso. Se vu volas forigar irga e-posto-adreso de vua konto, lasez la nova e-posto-adreso vakua en la formulario.", + "changeemail-no-info": "Vu mustas enirar la konto por acesar ita pagino direte.", + "changeemail-oldemail": "Aktuala e-posto-adreso:", + "changeemail-newemail": "Nova e-posto-adreso:", + "changeemail-none": "(nula)", + "changeemail-password": "Vua {{SITENAME}} pasovorto:", + "changeemail-submit": "Chanjar e-posto-adreso", + "changeemail-throttled": "Vu probis enirar tro multafoye.\nVoluntez vartar $1 ante riprobar.", + "changeemail-nochange": "Voluntez skribar diferanta nova e-posto-adreso.", + "resettokens": "Rinovigar klefi", + "resettokens-no-tokens": "Esas nula klefi rinovigebla.", + "resettokens-tokens": "Klefi:", + "resettokens-token-label": "$1 (nuna valoro: $2)", + "resettokens-done": "Klefi rinovigita.", + "resettokens-resetbutton": "Rinovigar selektita klefi", "bold_sample": "Dika literi", "bold_tip": "Dika literi", "italic_sample": "Kursiva literi", @@ -442,19 +558,22 @@ "sig_tip": "Vua signaturo kun 'timestamp'", "hr_tip": "Horizontala lineo (ne trouzez ol)", "summary": "Rezumo:", - "subject": "Temo / Titulo:", + "subject": "Temo:", "minoredit": "Ico esas mikra redaktajo", "watchthis": "Surveyar ica pagino", "savearticle": "Registragar pagino", + "savechanges": "Konservez la chanji", "publishpage": "Publikigar pagino", "publishchanges": "Publikigar chanji", "preview": "Previdar", "showpreview": "Previdar", "showdiff": "Montrez chanji", - "anoneditwarning": "'''Averto:''' Vu ne eniris.\nVua IP-adreso registragesos en la versionaro di ca pagino.", + "blankarticle": "<strong>Averto:</strong> La pagino vu kreas es vakua.\nSe vu ri-selektos \"{{int:savearticle}}\", la pagino kreesos sen irga kontenajo.", + "anoneditwarning": "<strong>Averto:</strong> Vu ne eniris.\nVua IP-adreso esos videbla publike se vu redaktos. Se vu <strong>[$1 enirus]</strong> od <strong>[$2 kreus konto]</strong>, vua redakti atribuesos a vua uzeronomo, kune kun altra bonaji.", + "anonpreviewwarning": "<em>Vu ne eniris. Konservar chanji registragos vua IP-adreso en la redakto-historio di ta pagino.</em>", "missingcommenttext": "Voluntez, skribez komento sube.", "summary-preview": "Prevido di la rezumo:", - "blockedtitle": "La uzanto esas blokusita", + "blockedtitle": "La uzero esas blokusita", "blockednoreason": "nula motivo donesis", "whitelistedittext": "Vu mustas $1 por redaktar pagini.", "nosuchsectiontitle": "On ne povis trovar la seciono", @@ -465,12 +584,12 @@ "accmailtext": "Hazarde genitita pasovorto por [[User talk:$1|$1]] sendesis ad $2.\n\nLa pasovorto por ica nova konto povas chanjesar che la ''[[Special:ChangePassword|chanjar pasovorto]]'' pagino pos on eniras.", "newarticle": "(nova)", "newarticletext": "Vu sequis ligilo a pagino qua ne existas ankore.\nPor krear ica pagino, voluntez startar skribar en la infra buxo.\n(regardez la [$1 helpo] por plusa informo).\nSe vu esas hike erore, kliktez sur la butono por retrovenar en vua navigilo.", - "noarticletext": "Prezente, ne esas texto en ica pagino.\nVu povas [[Special:Search/{{PAGENAME}}|serchar ica titulo]] en altra pagini,\n<span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} serchar en la relata registri],\no [{{fullurl:{{FULLPAGENAME}}|action=edit}} redaktar ica pagino]</span>.", - "userpage-userdoesnotexist": "Uzanto-nomo \"<nowiki>$1</nowiki>\" no registragesis.\nVoluntez konfirmez se vu volas krear/redaktar ica pagino.", - "userpage-userdoesnotexist-view": "Uzanto-nomo \"$1\" no registragesis.", + "noarticletext": "Til nun ne existas texto en ica pagino.\nVu povas [[Specala:Search/{{PAGENAME}}|serchar ica titulo]] en altra pagini,\n<span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} serchar en la relata registri],\no [{{fullurl:{{FULLPAGENAME}}|action=edit}} redaktar ica pagino]</span>.", + "userpage-userdoesnotexist": "Uzeronomo \"$1\" no registragesis.\nVoluntez konfirmez se vu volas krear/redaktar ica pagino.", + "userpage-userdoesnotexist-view": "Uzeronomo \"$1\" no registragesis.", "clearyourcache": "'''Atencez: Pos registragar, vu probable mustas renovigar la tempala-magazino di vua navigilo por vidar la chanji.'''\n'''Mozilla / Firefox / Safari:''' tenez ''Shift'' kliktante ''Reload'', o presez sive ''Ctrl-F5'' sive ''Ctrl-R'' (''Command-R'' ye Mac);\n'''Konqueror''': kliktez ''Reload'' o presez ''F5'';\n'''Opera:''' vakuigez la tempala-magazino en ''Tools → Preferences'';\n'''Internet Explorer:''' tenez ''Ctrl'' kliktante ''Refresh,'' o presez ''Ctrl-F5''.", - "usercsspreview": "'''Memorez ke vu nur previdas vua uzanto-CSS.'''\n'''Ol ne registragesis ankore!'''", - "userjspreview": "'''Memorez ke vu nur previdas vua javascript di uzanto. Ol ne registragesis ankore!'''", + "usercsspreview": "'''Memorez ke vu nur previdas vua uzero-CSS.'''\n'''Ol ne registragesis ankore!'''", + "userjspreview": "'''Memorez ke vu nur previdas vua JavaScript di uzero. Ol ne registragesis ankore!'''", "updated": "(Aktualigita)", "note": "'''Noto:'''", "previewnote": "'''Atencez ke ico esas nur prevido ed ol ne registragesis ankore!'''", @@ -487,7 +606,7 @@ "editingold": "'''EGARDEZ: Vu redaktas anciena versiono di ca pagino.\nSe vu gardus ol, la chanji facita pos ita revizo perdesos.'''", "yourdiff": "Diferi", "copyrightwarning": "Voluntez memorar ke omna kontributi a {{SITENAME}} esas sub la $2 (Videz $1 por detali).\nSe vu ne deziras ke altri modifikez vua artikli od oli distributesez libere, lore voluntez ne skribar oli hike.<br />\nPublikigante vua skribajo hike, vu asertas ke olu skribesis da vu ipsa o kopiesis de libera fonto.\n'''NE SENDEZ ARTIKLI KUN ''COPYRIGHT'' SEN PERMISO!'''", - "protectedpagewarning": "'''AVERTO: Ica pagino esas blokusita, do nur ''sysop''-i povas redaktar olu.'''", + "protectedpagewarning": "<strong>Averto: Ica pagino esas protektita por ke nur uzeri kun administero-yuri povas redaktar ol.</strong>\nLa maxim recenta en-registrago provizesas:", "templatesused": "{{PLURAL:$1|Shablono|Shabloni}} uzata en ica pagino:", "templatesusedpreview": "{{PLURAL:$1|Shablono|Shabloni}} uzata en ica prevido:", "templatesusedsection": "{{PLURAL:$1|Shablono|Shabloni}} uzata en ica seciono:", @@ -521,17 +640,20 @@ "histlast": "Maxim nova", "historysize": "({{PLURAL:$1|1 bicoko|$1 bicoki}})", "historyempty": "(vakua)", + "history-feed-title": "Historio di redakti", + "history-feed-description": "Historio di redakti por ta pagino en la wikio", "history-feed-item-nocomment": "$1 ye $2", - "rev-deleted-comment": "(komento forigita)", + "rev-deleted-comment": "(rezumo di redakti forigesis)", "rev-deleted-user": "(uzantonomo forigita)", + "rev-deleted-event": "(detali dil registro forigesis)", "rev-delundel": "montrar/celar", "rev-showdeleted": "montrar", "revdelete-show-file-submit": "Yes", "revdelete-hide-image": "Celar kontenajo dil arkivo", - "revdelete-hide-comment": "Celar komento pri redakto", - "revdelete-hide-user": "Celar uzantonomo od IP di redaktanto", - "revdelete-radio-set": "Yes", - "revdelete-radio-unset": "No", + "revdelete-hide-comment": "Rezumo di redakto", + "revdelete-hide-user": "uzeronomo di redaktanto/IP-adreso", + "revdelete-radio-set": "Celita", + "revdelete-radio-unset": "Videbla", "revdelete-log": "Motivo:", "revdel-restore": "chanjar videbleso", "pagehist": "Pagino-versionaro", @@ -540,10 +662,12 @@ "revdelete-reasonotherlist": "Altra motivo", "mergehistory-reason": "Motivo:", "revertmerge": "Desmixar", - "history-title": "Versionaro di \"$1\"", + "history-title": "Version-historio di \"$1\"", + "difference-title": "Diferi inter la revizi di $1", "lineno": "Lineo $1:", "compareselectedversions": "Komparar selektita versioni", "editundo": "des-facez", + "diff-multi-sameuser": "(ne montresas {{PLURAL:$1|1 meza revizo|$1 meza revizi}} facita da la sama uzero)", "searchresults": "Rezultaji dil sercho", "searchresults-title": "Sercho-rezultaji por \"$1\"", "titlematches": "Koincidi de titulo di artiklo", @@ -561,14 +685,15 @@ "searchprofile-articles-tooltip": "Serchez en $1", "searchprofile-images-tooltip": "Serchez arkivi", "search-result-size": "$1 ({{PLURAL:$2|1 vorto|$2 vorti}})", - "search-redirect": "(ridirektilo $1)", + "search-redirect": "(Ridirektita de $1)", "search-section": "(seciono $1)", "search-suggest": "Ka vu volis dicar: $1", "search-interwiki-caption": "Altra projekti", - "search-interwiki-default": "Rezultaji di $1:", + "search-interwiki-default": "Rezultaji de $1:", "search-interwiki-more": "(plusa)", "searchall": "omna", "showingresults": "Montrante infre {{PLURAL:$1|'''1''' rezulto|'''$1''' rezulti}}, qui komencas kun numero #'''$2'''.", + "search-nonefound": "Nula rezulto trovesis por lua serchado.", "powersearch-legend": "Avancita sercho", "powersearch-ns": "Serchez en nomari:", "powersearch-toggleall": "Omna", @@ -586,7 +711,7 @@ "prefs-rc": "Recenta chanji", "prefs-watchlist": "Surveyo-listo", "prefs-watchlist-days": "Dii montrata en surveyaji:", - "prefs-watchlist-days-max": "Maximum $1 {{PLURAL:$1|day|days}}", + "prefs-watchlist-days-max": "Maxime $1 {{PLURAL:$1|dio|dii}}", "prefs-watchlist-edits-max": "Maxima nombro: 1000", "prefs-misc": "Mixaji", "prefs-resetpass": "Chanjar pasovorto", @@ -616,20 +741,22 @@ "prefs-namespaces": "Nomari", "prefs-files": "Arkivi", "youremail": "Vua e-adreso:", - "username": "Uzantonomo:", - "prefs-memberingroups": "Membro di la {{PLURAL:$1|grupo|grupi}}:", + "username": "{{GENDER:$1|Uzeronomo}}:", + "prefs-memberingroups": "{{GENDER:$2|Membro}} di {{PLURAL:$1|grupo|grupi}}:", "yourrealname": "Reala nomo:", "yourlanguage": "Linguo:", "yournick": "Signaturo:", "badsiglength": "Vua signaturo es tro longa.\nOl mustas ne havar plu kam $1 {{PLURAL:$1|litero|literi}}.", - "yourgender": "Genro:", - "gender-unknown": "Nespecigita", - "gender-male": "Maskula", - "gender-female": "Femina", + "yourgender": "Quale vu preferas esar priskribata?", + "gender-unknown": "Lor mencionar vu, la programaro uzos sexuo-neutrala vorti tam ofte kam posibla", + "gender-male": "Ilu redaktas wikiopagini", + "gender-female": "Elu redaktas wikiopagini", "email": "Elek-posto", "prefs-help-email-required": "E-postala adreso es bezonata.", "prefs-info": "Bazala informeso", "prefs-signature": "Signaturo", + "prefs-editor": "Redaktilo", + "prefs-preview": "Previdar", "prefs-diffs": "Diferi", "userrights-user-editname": "Skribez uzantonomo:", "userrights-groupsmember": "Membro di:", @@ -639,10 +766,10 @@ "group-sysop": "Administranti", "group-bureaucrat": "Burokrati", "group-all": "(omna)", - "group-user-member": "Uzanto", - "group-bot-member": "Roboto", - "group-sysop-member": "Administranto", - "group-bureaucrat-member": "Burokrato", + "group-user-member": "{{GENDER:$1|uzero}}", + "group-bot-member": "{{GENDER:$1|roboto}}", + "group-sysop-member": "{{GENDER:$1|administrero}}", + "group-bureaucrat-member": "{{GENDER:$1|burokrato}}", "grouppage-user": "{{ns:project}}:Uzanti", "grouppage-bot": "{{ns:project}}:Roboti", "grouppage-sysop": "{{ns:project}}:Administranti", @@ -654,32 +781,44 @@ "right-upload": "Adkargar arkivi", "right-delete": "Efacar pagini", "right-browsearchive": "Serchar pagini efacita", - "right-rollback": "Rapide retrorular la redakti da la lasta uzanto qua redaktis specigita pagino", - "newuserlogpage": "Uzanto-kreo-registro", - "rightslog": "Uzanto-yuri-registraro", + "right-rollback": "Rapide retrorular la redakti da la lasta uzero qua redaktis specigita pagino", + "newuserlogpage": "Uzero-kreo-registro", + "rightslog": "Uzero-yuri-registraro", "action-read": "lektar ca pagino", "action-edit": "redaktar ca pagino", - "action-createpage": "krear pagini", + "action-createpage": "kreez ita pagino", "action-move": "movar ca pagino", "action-movefile": "movar ca arkivo", "action-upload": "adkargar ca arkivo", "action-browsearchive": "serchar pagini efacita", "nchanges": "$1 {{PLURAL:$1|chanjo|chanji}}", + "enhancedrc-history": "Versionaro", "recentchanges": "Recenta chanji", "recentchanges-legend": "Recenta chanji preferaji", "recentchanges-summary": "Regardez la maxim recenta chanji en Wiki per ica pagino.", "recentchanges-label-newpage": "Ca redaktajo kreis nova pagino", "recentchanges-label-minor": "Ica es mikra redaktajo", "recentchanges-label-bot": "Ta chanjo facita da bot", + "recentchanges-label-unpatrolled": "Ica modifiko ne patroliesas ankore.", + "recentchanges-label-plusminus": "La pagino modifikesis segun ica quanto di *bicoki", "recentchanges-legend-newpage": "$1 - nova pagino", "rcfilters-filter-userExpLevel-experienced-description": "Plu kam 30 dii di agemeso e 500 redakti.", "rcnotefrom": "Infre esas la lasta chanji depos '''$2''' (montrita til '''$1''').", "rclistfrom": "Montrar nova chanji startante de $3 $2", "rcshowhideminor": "$1 mikra redakti", + "rcshowhideminor-show": "Montrar", + "rcshowhideminor-hide": "Celar", "rcshowhidebots": "$1 roboti", - "rcshowhideliu": "$1 enirinta uzanti", + "rcshowhidebots-show": "Montrar", + "rcshowhidebots-hide": "Celar", + "rcshowhideliu": "$1 enrejistrita uzeri", + "rcshowhideliu-hide": "Celar", "rcshowhideanons": "$1 anonima uzanti", + "rcshowhideanons-show": "Montrar", + "rcshowhideanons-hide": "Celar", "rcshowhidemine": "$1 mea redakti", + "rcshowhidemine-show": "Montrar", + "rcshowhidemine-hide": "Celar", "rclinks": "Montrar la lasta $1 chanji dum la lasta $2 dii<br />$3", "diff": "dif", "hist": "vers", @@ -688,9 +827,10 @@ "minoreditletter": "m", "newpageletter": "N", "boteditletter": "r", - "rc_categories_any": "Ula", + "rc_categories_any": "Irga selektita", + "rc-change-size-new": "$1 {{PLURAL:$1|bicoko|bicoki}} pos la modifiki", "newsectionsummary": "/* $1 */ nova seciono", - "rc-enhanced-expand": "Montrar detali (JavaScript bezonesas)", + "rc-enhanced-expand": "Montrez detali", "rc-enhanced-hide": "Celar detali", "recentchangeslinked": "Relatanta chanji", "recentchangeslinked-feed": "Relatanta chanji", @@ -703,7 +843,7 @@ "uploadbtn": "Adkargar arkivo", "reuploaddesc": "Retrovenar al adkargo-formularo.", "uploadnologin": "Vu ne eniris", - "uploadnologintext": "Vu mustas [[Special:UserLogin|enirir]] por adkargar arkivi.", + "uploadnologintext": "Voluntez $1 por adkargar arkivi.", "uploaderror": "Eroro dum adkargo", "uploadlogpage": "Adkargo-registraro", "uploadlogpagetext": "Infre esas listo di la plu recenta adkargaji.\nVidez rezumo plu vidala en la [[Special:NewFiles|galerio di nova arkivi]].", @@ -714,7 +854,7 @@ "filesource": "Fonto:", "ignorewarning": "Ignorar la averto e gardar la arkivo irgakaze.", "badfilename": "La imajo-nomo chanjesis a \"$1\".", - "fileexists": "Arkivo kun ica nomo ja existas.\nVolutez kontrolar <strong>[[:$1]]</strong> se vu ne esas certa pri chanjar olu.\n[[$1|thumb]]", + "fileexists": "Arkivo kun ta nomo ja existas.\nVolutez kontrolar <strong>[[:$1]]</strong> se {{GENDER:|vu}} ne esas certa pri chanjar olu.\n[[$1|thumb]]", "uploadwarning": "Averto pri la adkargo di arkivo", "savefile": "Registragar arkivo", "uploaddisabled": "Pardonez, la adkargo esas desaktiva.", @@ -724,7 +864,7 @@ "listfiles": "Listo di imaji", "listfiles_date": "Dato", "listfiles_name": "Nomo", - "listfiles_user": "Uzanto", + "listfiles_user": "Uzero", "listfiles_count": "Versioni", "file-anchor-link": "Failo", "filehist": "Historio dil arkivo", @@ -735,7 +875,7 @@ "filehist-datetime": "Dato/Horo", "filehist-thumb": "Imajeto", "filehist-thumbtext": "Imajeto di versiono ye $1", - "filehist-user": "Uzanto", + "filehist-user": "Uzero", "filehist-dimensions": "Dimensioni", "filehist-filesize": "Grandeso dil arkivo", "filehist-comment": "Komento", @@ -743,8 +883,10 @@ "linkstoimage": "La {{PLURAL:$1|pagino|$1 pagini}} infre ligas a ca arkivo:", "nolinkstoimage": "Nula pagino ligas a ca pagino.", "sharedupload": "Ca arkivo esas de $1 e posible esas uzata da altra projekti.", + "sharedupload-desc-here": "Ca arkivo jacas en $1, e povas uzesar en altra projeti.\nLa deskriptado en lua [$2 pagino di deskriptado] montresas infre.", "uploadnewversion-linktext": "Adkargez nova versiono dil arkivo", "shared-repo-from": "ek $1", + "upload-disallowed-here": "Vu ne povas modifikar ica arkivo.", "filerevert-comment": "Motivo:", "filedelete": "Efacar $1", "filedelete-legend": "Efacar arkivo", @@ -760,7 +902,7 @@ "randompage": "Hazarda pagino", "randomredirect": "Hazarda ridirektilo", "statistics": "Statistiko", - "statistics-header-users": "Statistiki di uzanto", + "statistics-header-users": "Statistiki di uzero", "statistics-header-hooks": "Altra statistiki", "statistics-pages": "Pagini", "doubleredirects": "Duopla ridirektili", @@ -792,7 +934,7 @@ "deadendpages": "Pagini sen ekiraji", "protectedpages": "Protektita pagini", "protectedtitles": "Protektita tituli", - "listusers": "Uzanto-listo", + "listusers": "Uzerolisto", "usereditcount": "$1 {{PLURAL:$1|redakto|redakti}}", "usercreated": "{{GENDER:$3|Kreita}} ye $1 $2", "newpages": "Nova pagini", @@ -800,7 +942,7 @@ "ancientpages": "Maxim anciena artikli", "move": "Movar", "movethispage": "Rinomizar ica pagino", - "unusedimagestext": "Voluntez egardez ke altra ret-situi povus ligar a arkivo per direta URL, e do ol povus esar enlistizita hike malgre olu havas aktiva uzo.", + "unusedimagestext": "La sequanta arkivi existas ma ne enterigita en irga pagino.\nVoluntez remarkar ke altra ret-siti povus ligar ad arkivo per direta URL, e do ol povus esar listizita hike malgre ke on aktive uzas lo.", "notargettitle": "Ne esas vakua pagino", "notargettext": "Vu ne definis en qua pagino agar ica funciono.", "pager-newer-n": "{{PLURAL:$1|plu nova 1|plu nova $1}}", @@ -809,8 +951,9 @@ "apisandbox-loading": "Charjas informo pri modulo « $1 » di API...", "booksources": "Fonti di libri", "booksources-search-legend": "Serchez librala fonti", - "specialloguserlabel": "Uzanto:", - "speciallogtitlelabel": "Titulo:", + "booksources-search": "Serchar", + "specialloguserlabel": "Agero:", + "speciallogtitlelabel": "Skopo (titulo od {{ns:user}}:uzernomo por uzero):", "log": "Registrari", "all-logs-page": "Omna publika registrari", "allpages": "Omna pagini", @@ -823,19 +966,19 @@ "allpagessubmit": "Irez", "allpages-bad-ns": "{{SITENAME}} ne havas nomaro \"$1\".", "categories": "Kategorii", - "deletedcontributions": "Efacita uzanto-kontributadi", - "deletedcontributions-title": "Efacita uzanto-kontributadi", - "linksearch": "Extera ligili", + "deletedcontributions": "Efacita uzero-kontributadi", + "deletedcontributions-title": "Efacita uzero-kontributadi", + "linksearch": "Sercho di extera ligili", "linksearch-ns": "Nomaro:", "linksearch-ok": "Serchez", "listusers-submit": "Montrez", - "activeusers-noresult": "Nula uzanto trovesis.", + "activeusers-noresult": "Nula uzero trovesis.", "listgrouprights-group": "Grupo", "listgrouprights-members": "(listo di membri)", "mailnologin": "Ne sendar adreso", "mailnologintext": "Vu mustas [[Special:UserLogin|enirir]] e havar valida e-adreso en vua [[Special:Preferences|preferaji]] por sendar e-posto ad altra uzanti.", - "emailuser": "Sendar e-posto a ca uzanto", - "defemailsubject": "E-posto di {{SITENAME}}", + "emailuser": "Sendar e-posto a ca uzero", + "defemailsubject": "{{SITENAME}} e-mesaji de uzero \"$1\"", "noemailtitle": "Ne esas e-adreso", "emailfrom": "De:", "emailto": "Ad:", @@ -848,27 +991,27 @@ "mywatchlist": "Surveyaji", "nowatchlist": "Vu ne havas objekti en vua listo di surveyaji.", "watchnologin": "Vu ne startis sesiono", - "addedwatchtext": "La pagino \"<nowiki>$1</nowiki>\" atachesis a vua [[Special:Watchlist|listo de surveyaji]]. Futura chanji di ica pagino ed olua relatanta debato-pagini montresos ibe, ed la pagino aparos per '''dika literi''' en la [[Special:RecentChanges|listo de recenta chanji]] por faciligar sua trovebleso.\n\n<p> Se vu volas efacar la pagino de vua listo de surveyaji pose, presez \"Ne plus surveyar\" en la selektaro.", - "removedwatchtext": "La pagino \"[[:$1]]\" forigesis de [[Special:Watchlist|vua surveyado]].", + "addedwatchtext": "\"[[:$1]]\" atachesis a vua [[Special:Watchlist|listo di surveyaji]].", + "removedwatchtext": "\"[[:$1]]\" ed relatanta diskutado forigesis de [[Special:Watchlist|vua surveyado]].", "watch": "Surveyar", "watchthispage": "Surveyar ica pagino", "unwatch": "Ne plus surveyar", "unwatchthispage": "Ne plus surveyar", "notanarticle": "Ne esas artiklo", - "wlnote": "Infre esas la lasta {{PLURAL:$1|chanjo|'''$1''' chanji}} dum la lasta {{PLURAL:$2|horo|'''$2''' hori}}.", - "wlshowlast": "Montrar la lasta $1 hori $2 dii", + "wlnote": "Yen la maxim recenta {{PLURAL:$1|chanjo|<strong>$1</strong> chanji}} dum la lasta {{PLURAL:$2|horo|<strong>$2</strong> hori}}, desde $3,$4.", + "wlshowlast": "Montrez la lasta $1 hori $2 dii", "watchlist-options": "Surveryo-listo selekti", "watching": "Surveyanta…", "unwatching": "Cesanta surveyar…", - "enotif_impersonal_salutation": "Uzanto di {{SITENAME}}", - "enotif_anon_editor": "anonima uzanto $1", + "enotif_impersonal_salutation": "Uzero di {{SITENAME}}", + "enotif_anon_editor": "anonima uzero $1", "deletepage": "Efacar pagino", "confirm": "Konfirmar", "excontent": "La kontenajo esis: '$1'", "exbeforeblank": "La kontenajo ante efaco esis: '$1'", "delete-confirm": "Efacar \"$1\"", "delete-legend": "Efacar", - "historywarning": "Egardez: La pagino, quan vu efaceskas, havas versionaro:", + "historywarning": "<strong>Averto:</strong> La pagino quan vu efaceskas havas historio kun $1 {{PLURAL:$1|revizo|revizi}}:", "actioncomplete": "Ago kompletigita", "deletedtext": "\"$1\" efacesis.\nVidez $2 por obtenar registro di recenta efaci.", "dellogpage": "Efaco-registraro", @@ -878,9 +1021,10 @@ "deletecomment": "Motivo:", "deleteotherreason": "Altra/suplementala motivo:", "deletereasonotherlist": "Altra motivo", - "deletereason-dropdown": "*Ordinara motivi por efaco\n** Demandita da autoro\n** Kopiyuro Violaco\n** Korupto", + "deletereason-dropdown": "*Ordinara motivi por efacado\n** \"Spam\" nedezirata mesaji\n** Vandalismo\n** Kopiyuro Violaco\n** Demandita da autoro\n** Nefuncionanta ligilo", "rollback": "Retrorulez redakti", "rollbacklink": "retrorulez", + "rollbacklinkcount": "nuligar $1 {{PLURAL:$1|modifiko|modifiki}}", "rollbackfailed": "Retrorular ne sucesis", "cantrollback": "Ne esas posibla retrorular. La lasta kontributanto esas la nura autoro di ica pagino.", "alreadyrolled": "Vu ne povas retrorular la lasta chanjo di [[:$1]] da [[User:$2|$2]] ([[User talk:$2|Diskutez]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]]);\nulu pluse ja redaktis o retrorulis ica pagino.\n\nLa lasta chanjo a la pagino esis da [[User:$3|$3]] ([[User talk:$3|Diskutez]]{{int:pipe-separator}}[[Special:Contributions/$3|{{int:contribslink}}]]).", @@ -889,7 +1033,7 @@ "rollback-success": "Desfacis redakti da $1;\nrestauris ad lasta versiono da $2.", "protectlogpage": "Protekto-registraro", "protectedarticle": "protektita \"[[$1]]\"", - "unprotectedarticle": "desprotektita [[$1]]", + "unprotectedarticle": "desprotektita de \"[[$1]]\"", "protect-title": "Protektante \"$1\"", "prot_1movedto2": "[[$1]] movita a [[$2]]", "protect-legend": "Konfirmar protekto", @@ -898,8 +1042,8 @@ "protect_expiry_invalid": "Expirotempo es ne-valida.", "protect_expiry_old": "Expirotempo es in pasinta.", "protect-default": "Permisar omna uzanti", - "protect-fallback": "Bezonar permiso \"$1\"", - "protect-level-sysop": "Nur administranti", + "protect-fallback": "Permisez nur uzeri kun permiso \"$1\"", + "protect-level-sysop": "Permisez nur administreri", "protect-summary-cascade": "kaskade", "protect-expiring": "expiras ye $1 (UTC)", "protect-expiry-indefinite": "nefinita", @@ -917,20 +1061,21 @@ "undelete": "Vidar efacita pagini", "undeletepage": "Vidar e restaurar efacita pagini", "undeletepagetext": "La sequanta {{PLURAL:$1|pagino|pagini}} efacesis ma {{PLURAL:$1|ol|li}} ankore esas en la arkivo ed esas restaurebla. La arkivo povas netigesar periodale.", - "undeleterevisions": "$1 {{PLURAL:$1|revizo|revizi}} konservita", + "undeleterevisions": "$1 {{PLURAL:$1|revizo|revizi}} efacita", "undeletebtn": "Restaurar", "undeletelink": "vidar/restaurar", "undeleteviewlink": "videz", - "undeletecomment": "Komento:", + "undeletecomment": "Motivo:", "undelete-search-box": "Serchez efacita pagini", "undelete-search-submit": "Serchar", "undelete-show-file-submit": "Yes", "namespace": "Nomaro:", "invert": "Inversigar selektajo", "blanknamespace": "(Chefa)", - "contributions": "Kontributadi dil {{GENDER:$1|uzanto}}", - "contributions-title": "Uzanto-kontributadi di $1", + "contributions": "Kontributadi dil {{GENDER:$1|uzero}}", + "contributions-title": "Uzero-kontributadi di $1", "mycontris": "Kontributadi", + "anoncontribs": "Kontributadi", "contribsub2": "Pro $1 ($2)", "nocontribs": "Ne trovesis chanji qui fitez ita kriterii.", "uctop": "(aktuala)", @@ -939,7 +1084,7 @@ "sp-contributions-newbies": "Montrez nur kontributadi di nova konti", "sp-contributions-newbies-sub": "Di nova konti", "sp-contributions-blocklog": "blokusar-registraro", - "sp-contributions-deleted": "efacita uzanto-kontributadi", + "sp-contributions-deleted": "efacita {{GENDER:$1|uzero}}-kontributadi", "sp-contributions-logs": "registrari", "sp-contributions-talk": "diskutez", "sp-contributions-search": "Serchar kontributadi", @@ -962,20 +1107,20 @@ "whatlinkshere-hideimages": "$1 ligili di arkivi", "whatlinkshere-filters": "Filtrili", "blockip": "Blokusado di IP-adresi", - "blockip-legend": "Blokusar uzanto", + "blockip-legend": "Blokusar uzero", "ipaddressorusername": "IP-adreso od uzantonomo:", "ipbexpiry": "Expiro:", "ipbreason": "Motivo:", - "ipbreason-dropdown": "*Ordinara motivi por blokuso\n** Insertar nevera informi\n** Efacar kontenajo de pagini\n** Insertadar ligili ad extera reti\n** Insertar radoto aden pagini\n** Timidiganta ago\n** Trouzar multa konti\n** Neaceptebla uzanto-nomo", + "ipbreason-dropdown": "*Ordinara motivi por blokuso\n** Insertar nevera informi\n** Efacar kontenajo de pagini\n** Insertadar ligili ad extera reti\n** Insertar radoto aden pagini\n** Timidiganta ago\n** Trouzar multa konti\n** Neaceptebla uzeronomo", "ipbcreateaccount": "Preventez kreo di konti", - "ipbsubmit": "Blokusar ica uzanto", + "ipbsubmit": "Blokusar ica uzero", "ipbother": "Altra tempo:", "ipboptions": "2 horo:2 hours,1 dio:1 day,3 dii:3 days,1 semano:1 week,2 semani:2 weeks,1 monato:1 month,3 monati:3 months,6 monati:6 months,1 yaro:1 year,infinita:infinite", "badipaddress": "IP-adreso ne esas valida", "blockipsuccesssub": "Blokusado sucesis", "blockipsuccesstext": "[[Special:Contributions/$1|$1]] blokusesis.<br />\nVidez [[Special:BlockList|IP-blokuslisto]] por revizor blokusadi.", "ipb-edit-dropdown": "Redaktar blokuso-motivi", - "unblockip": "Desblokusar uzanto", + "unblockip": "Desblokusar uzero", "unblockiptext": "Uzez la sequanta formularo por restaurar la skribo-aceso ad IP-adreso qua blokusesis antee.", "ipusubmit": "Desblokusar", "ipblocklist": "Blokusita uzanti", @@ -1004,8 +1149,8 @@ "move-page": "Movar $1", "move-page-legend": "Rinomizar pagino", "movepagetext": "Uzante ica formularo onu povas rinomizar pagino, movante olua omna versionaro ad la nova titulo.\nLa antea titulo konvertesos a ridirektilo a la nova titulo.\nLa ligili a la antea titulo dil pagino ne chanjesos.\nVoluntez certigar ke ne esas [[Special:DoubleRedirects|duopla]] o [[Special:BrokenRedirects|ruptota ridirektili]].\nVu responsas ke la ligili duros direktante a la pagino korespondanta.\n\nMemorez ke la pagino '''ne''' rinomizesos se ja existus pagino kun la nova titulo, eceptuante ke la pagino esas vakua o ridirektilo sen versionaro.\nIco signifikas ke vu povos rinomizar pagino a olua originala titulo se eroras skribante la nova titulo, ma ne povos riskribar existanta pagino.\n\n'''EGARDEZ!'''\nIca povas esar drastika chanjo e ne-esperinda por populara pagino;\nvoluntez certigar ke vu komprenas la konsequi qui eventos ante durar adavane.", - "movenologintext": "Vu mustas esar registragita uzanto ed [[Special:UserLogin|enirir]] por rinomizar pagino.", - "newtitle": "A nova titulo:", + "movenologintext": "Vu mustas esar registragita uzero ed [[Special:UserLogin|enirir]] por rinomizar pagino.", + "newtitle": "Nova titulo:", "move-watch": "Surveyar ca pagino", "movepagebtn": "Movar pagino", "pagemovedsub": "Rinomizita sucese", @@ -1028,18 +1173,19 @@ "thumbnail_error": "Ne sucesas krear imajeto: $1", "import": "Importacar pagini", "import-comment": "Komento:", - "importtext": "Voluntez exportacar l' arkivo de la fonto-wiki uzante la utensilo \"Special:Export\", registragar ol a vua disko ed adkargar ol hike.", + "importtext": "Voluntez exportacar l' arkivo de la fonto-wikio per [[Special:Export|exportacilo]]. Registragar ol a vua komputero ed adkargar ol hike.", "importfailed": "La importaco faliis: $1", "importsuccess": "Importaco sucesoza!", - "tooltip-pt-userpage": "Vua uzanto-pagino", - "tooltip-pt-mytalk": "Vua diskuto-pagino", - "tooltip-pt-preferences": "Mea preferaji", + "tooltip-pt-userpage": "{{GENDER:|Vua uzero}} pagino", + "tooltip-pt-mytalk": "{{GENDER:|Vua}} diskuto-pagino", + "tooltip-pt-preferences": "{{GENDER:|Vua}} preferaji", "tooltip-pt-watchlist": "Listo di pagini quin vu kontrolas", - "tooltip-pt-mycontris": "Listo di vua kontributaji", + "tooltip-pt-mycontris": "Listo di {{GENDER:|vua}} kontributaji", "tooltip-pt-login": "Vu darfas enirar uzante vua pas-vorto, ma lo ne esas preskriptata.", "tooltip-pt-logout": "Ekirar", + "tooltip-pt-createaccount": "Vu stimulesas a krear konto e facar \"log in\". Tamen, to ne esas obliganta", "tooltip-ca-talk": "Diskuto pri la pagino di kontenajo", - "tooltip-ca-edit": "Vu darfas chanjar ta pagino. Voluntez pre-vidar chanji ante registragar oli.", + "tooltip-ca-edit": "Redaktar ita pagino", "tooltip-ca-addsection": "Komencar nova seciono", "tooltip-ca-viewsource": "Ca pagino esas protektita. Vu povas vidar olua fonto-kodo", "tooltip-ca-history": "Pasinta versioni di ca pagino", @@ -1063,16 +1209,16 @@ "tooltip-t-recentchangeslinked": "Recenta chanji di pagini ligita de ca pagino", "tooltip-feed-rss": "RSS provizero por ica pagino", "tooltip-feed-atom": "Atom provizero por ica pagino", - "tooltip-t-contributions": "Videz kontributaji di ta uzanto", - "tooltip-t-emailuser": "Sendez mesajo al uzanto", + "tooltip-t-contributions": "Videz kontributaji di {{GENDER:$1|ta uzanto}}", + "tooltip-t-emailuser": "Sendez mesajo al {{GENDER:$1|uzanto}}", "tooltip-t-info": "Plua informo pri ca pagino", "tooltip-t-upload": "Adkargez arkivi", "tooltip-t-specialpages": "Montrez listo di omna specala pagini", "tooltip-t-print": "Imprimebla versiono di ca pagino", "tooltip-t-permalink": "Permananta ligilo vers ita versiono di ta pagino", "tooltip-ca-nstab-main": "Vidar la kontenajo di ca pagino", - "tooltip-ca-nstab-user": "Videz la pagino dil uzanto", - "tooltip-ca-nstab-special": "Ito esas specala pagino, vu ne povas redaktar la pagino ipsa", + "tooltip-ca-nstab-user": "Vidar la pagino dil uzero", + "tooltip-ca-nstab-special": "Ito esas specala pagino, ed es ne-redaktebla", "tooltip-ca-nstab-project": "Vidar la projekto-pagino", "tooltip-ca-nstab-image": "Videz la pagino dil arkivo", "tooltip-ca-nstab-template": "Vidar la shablono", @@ -1089,28 +1235,43 @@ "tooltip-rollback": "\"Retrorular\" desfacas omna chanji ad ca pagino da la lasta kontributanto per un kliko", "tooltip-undo": "\"Desfacez\" nuligas ca versiono e apertas la redakto-pagino en prevido-modo.\nVu darfos adjuntar kauso en la rezumo.", "tooltip-summary": "Skribez kurta rezumo", - "anonymous": "Anonima {{PLURAL:$1|uzanto|uzanti}} di {{SITENAME}}", - "siteuser": "Uzanto che {{SITENAME}} $1", + "anonymous": "Anonima {{PLURAL:$1|uzero|uzeri}} di {{SITENAME}}", + "siteuser": "Uzero che {{SITENAME}} $1", "lastmodifiedatby": "Ica pagino modifikesis ye $2, $1 da $3.", "othercontribs": "Bazizita en la laboro da $1.", "others": "altra", - "siteusers": "{{PLURAL:$2|Uzanto|Uzanti}} che {{SITENAME}} $1", + "siteusers": "{{PLURAL:$2|{{GENDER:$1|uzero}}|uzeri}} $1 di {{SITENAME}}", "spamprotectiontitle": "Filtrilo kontre spamo", + "simpleantispam-label": "Surveyo kontre \"spam\".\n<strong>NE SKRIBEZ</strong> hike!", "pageinfo-toolboxlink": "Informo di ca pagino", "previousdiff": "← Plu anciena versiono", "nextdiff": "Plu recenta versiono →", "widthheightpage": "$1 × $2, $3 {{PLURAL:$3|pagino|pagini}}", "file-nohires": "Ne existas grandeso plu granda.", - "show-big-image": "Grandeso kompleta", + "svg-long-desc": "arkivo SVG, nominale $1 x $2 \"pixels\", kun $3", + "show-big-image": "Arkivo originala", + "show-big-image-size": "$1 x $2 pixels", "newimages": "Galerio di nova arkivi", "imagelisttext": "Infre esas listo di '''$1''' {{PLURAL:$1|arkivo|arkivi}} rangizita $2.", "newimages-legend": "Filtrilo", "ilsubmit": "Serchar", "bydate": "per dato", "metadata": "Metadonaji", + "metadata-help": "Ca arkivo kontenas plusa informo, probable furnisita per la kamero elektronikala o per la \"scanner\" uzata por krear o kopiar l'imajo.\nSe l'arkivo modifikesos de lua originala stando, kelka detali povos ne reprezentar exakte l'arkivo modifikata.", + "metadata-fields": "Image metadata fields listed in this message will be included on image page display when the metadata table is collapsed.\nOthers will be hidden by default.\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": "Larjeso", "exif-imagelength": "Alteso", + "exif-orientation": "Orientizo", + "exif-xresolution": "Horizontala distingivo", + "exif-yresolution": "Vertikala distingivo", + "exif-datetime": "Dio e horo di la modifiko dil arkivo", + "exif-make": "Fabrikanto di la fotografilo", + "exif-model": "Fotografilo uzita", + "exif-software": "*Komputeroprogramo uzata", "exif-artist": "Autoro", + "exif-exifversion": "versiono Exif", + "exif-datetimeoriginal": "Dio e horo di produktado di la datumaro", + "exif-datetimedigitized": "Dio e horo di la kopio kun \"scanner\"", "exif-exposuretime-format": "$1 sek ($2)", "exif-gpslatitude": "Latitudo", "exif-gpslongitude": "Longitudo", @@ -1158,11 +1319,12 @@ "watchlisttools-view": "Vidar relatanta chanji", "watchlisttools-edit": "Vidar e redaktar surveyo-listo", "watchlisttools-raw": "Redaktar texto di surveyo-listo", + "signature": "[[{{ns:user}}:$1|$2]] ([[{{ns:user_talk}}:$1|diskuto]])", "version": "Versiono", "version-specialpages": "Specala pagini", "version-other": "Altra", "version-version": "($1)", - "version-license": "Licenco", + "version-license": "MediaWiki Licenco", "version-software-product": "Produkturo", "version-software-version": "Versiono", "fileduplicatesearch-submit": "Serchar", @@ -1176,14 +1338,18 @@ "specialpages-group-redirects": "Specala pagini di ridirektili", "blankpage": "Pagino sen-skribura", "tag-filter-submit": "Filtrez", + "tag-list-wrapper": "([[Special:Tags|{{PLURAL:$1|Etikedo|Etikedi}}]]: $2)", "tags-edit": "redaktar", "tags-hitcount": "$1 {{PLURAL:$1|chanjo|chanji}}", "htmlform-reset": "Desfacar chanji", "htmlform-selectorother-other": "Altra", "htmlform-cloner-create": "Adjuntar plue", + "logentry-move-move": "$1 {{GENDER:$2|movis}} la pagino $3 a $4", + "logentry-newusers-create": "La konto dil uzero $1 kreesis.", + "logentry-upload-upload": "$1 {{GENDER:$2|uploaded}} $3", "rightsnone": "(nula)", "revdelete-summary": "redakto-rezumo", - "searchsuggest-search": "Serchez", + "searchsuggest-search": "Serchez en {{SITENAME}}", "searchsuggest-containing": "quan kontenas...", "expand_templates_output": "Rezulto", "expand_templates_ok": "O.K.", diff --git a/languages/i18n/is.json b/languages/i18n/is.json index a6344cc52e..fcec7be4df 100644 --- a/languages/i18n/is.json +++ b/languages/i18n/is.json @@ -192,6 +192,7 @@ "searcharticle": "Áfram", "history": "Breytingaskrá", "history_short": "Breytingaskrá", + "history_small": "skrá", "updatedmarker": "uppfært frá síðustu heimsókn minni", "printableversion": "Prentvæn útgáfa", "permalink": "Varanlegur tengill", @@ -223,6 +224,9 @@ "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", @@ -543,8 +547,6 @@ "passwordreset-emaildisabled": "Tölvupósteiginleikar hafa verið gerðir óvirkir á þessum wiki.", "passwordreset-username": "Notandanafn:", "passwordreset-domain": "Lén:", - "passwordreset-capture": "Sjá áminninguna sem var send í tölvupósti?", - "passwordreset-capture-help": "Ef þú hakar við þennan reit verður tölvupósturinn (með bráðabirgðalykilorðinu) sýndur þér og einnig sendur notandanum.", "passwordreset-email": "Netfang:", "passwordreset-emailtitle": "Notendaupplýsingar á {{SITENAME}}", "passwordreset-emailtext-ip": "Einhver (líklegast þú, á vistfanginu $1) hefur beðið um \nendursetningu lykilorðsins þíns fyrir {{SITENAME}} ($4). Aðgangur eftirfarandi {{PLURAL:$3|notanda er|notenda er}} tengd þessu netfangi:\n\n$2\n\nEf þetta er það sem þú vildir, þarftu að skrá þig inn og velja nýtt lykilorð. {{PLURAL:$3|Tímabundna lykilorðið rennur|Tímabundnu lykilorðin renna}} út eftir $5 {{PLURAL:$5|dag|daga}}.\n\nEf það varst ekki þú sem fórst fram á þetta, eða ef þú manst lykilorðið þitt, og vilt ekki lengur breyta því, skaltu hunsa þessi skilaboð og halda áfram að nota gamla lykilorðið.", @@ -938,8 +940,6 @@ "saveprefs": "Vista", "restoreprefs": "Endurstilla allar sjálfgefnar stillingar (í öllum hlutum)", "prefs-editing": "Breytingarflipinn", - "rows": "Raðir", - "columns": "Dálkar", "searchresultshead": "Leit", "stub-threshold": "Þröskuldur fyrir stílsnið stubbatengla ($1):", "stub-threshold-sample-link": "dæmi", @@ -949,7 +949,7 @@ "recentchangescount": "Fjöldi síðna:", "prefs-help-recentchangescount": "Taldar eru með nýlegar breytingar, breytingaskrár og aðgerðaskrár.", "savedprefs": "Kjörstillingarnar þínar hafa verið vistaðar.", - "savedrights": "Notandaréttindi {{GENDER:$1|$1}} hafa verið vistuð.", + "savedrights": "Notanda hópur {{GENDER:$1|$1}} hefur verið vistaður.", "timezonelegend": "Tímabelti:", "localtime": "Staðartími:", "timezoneuseserverdefault": "Nota sjálfgefið tímabelti ($1)", @@ -1019,9 +1019,9 @@ "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-lookup-user": "Yfirlit notandahópa", + "userrights-lookup-user": "Velja notanda", "userrights-user-editname": "Skráðu notandanafn:", - "editusergroup": "Breyta {{GENDER:$1|notanda}} hópum", + "editusergroup": "Hlaða inn notanda hópum", "editinguser": "Breyti réttindum {{GENDER:$1|notandans}} <strong>[[User:$1|$1]]</strong> $2", "userrights-editusergroup": "Breyta notandahópum", "saveusergroups": "Vista {{GENDER:$1|notanda}} hópa", @@ -1032,13 +1032,10 @@ "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-nologin": "Þú verður að [[Special:UserLogin|innskrá]] þig á möppudýraaðgang til að geta útdeilt notandaréttindum.", - "userrights-notallowed": "Þú hefur ekki réttindi til að útdeila eða draga til baka notandaréttindi.", "userrights-changeable-col": "Hópar sem þú getur breytt", "userrights-unchangeable-col": "Hópar sem þú getur ekki breytt", "userrights-irreversible-marker": "$1*", "userrights-conflict": "Árekstur í að breyta notandaréttindum! Skoðaðu þetta aftur og staðfestu breytingar þínar.", - "userrights-removed-self": "Þér hefur tekist að fjarlægja þín eigin réttindi. Vegna þess mátt þú ekki lengur skoða þessa síðu.", "group": "Hópur:", "group-user": "Notendur", "group-autoconfirmed": "Sjálfvirkt staðfestir notendur", @@ -1127,7 +1124,6 @@ "right-siteadmin": "Læsa og aflæsa gagnagrunninum", "right-override-export-depth": "Flytja út síður með greinum þar sem allt að 5 greinar tengja þær saman.", "right-sendemail": "Senda tölvupóst til annara notenda", - "right-passwordreset": "Skoða tölvupósta um endurstillingu lykilorðs", "right-managechangetags": "Búa til og (af)virkja [[Special:Tags|merki]] úr gagnagrunni", "right-applychangetags": "Virkja [[Special:Tags|merki]] ásamt öðrum breytingum", "grant-group-email": "Senda tölvupóst", @@ -1177,11 +1173,11 @@ "action-upload_by_url": "hlaða inn þessari skrá af vefslóð", "action-writeapi": "Nota API skrifun", "action-delete": "eyða þessari síðu", - "action-deleterevision": "eyða þessari breytingu", - "action-deletedhistory": "skoða breytingaskrá þessarar síðu", + "action-deleterevision": "eyða breytingar", + "action-deletedhistory": "skoða breytingaskrá síðu", "action-browsearchive": "leita í eyddum síðum", - "action-undelete": "endurvekja þessa síðu", - "action-suppressrevision": "Skoða og endurvekja þessa falda breytingu", + "action-undelete": "endurvekja síður", + "action-suppressrevision": "Skoða og endurvekja faldar breytingar", "action-suppressionlog": "skoða þessa einka-aðgerðaskrá", "action-block": "Banna notandanum að gera breytingar", "action-protect": "breyta verndunarstigum fyrir þessa síðu", @@ -1339,7 +1335,7 @@ "uploaddisabledtext": "Lokað er fyrir að hlaða inn skrám.", "php-uploaddisabledtext": "Innhleðsla skráa er óvirk í PHP.\nAthugaðu file_uploads stillinguna.", "uploadscripted": "Þetta skjal inniheldur (X)HTML eða forskriftu sem gæti valdið villum í vöfrum.", - "uploadscriptednamespace": "Þessi SVG-skrá inniheldur ógilt nafnrými \"$1\".", + "uploadscriptednamespace": "Þessi SVG-skrá inniheldur ógilt nafnrými \"<nowiki>$1</nowiki>\".", "uploadvirus": "Skráin inniheldur veiru! Nánari upplýsingar: $1", "uploadjava": "Þessi skrá er ZIP skrá sem inniheldur Java .class skráasnið.\nInnhleðsla Java skráa er óheimil, því þær geta farið framhjá öryggiskröfum.", "upload-source": "Upprunaleg skrá", @@ -1808,7 +1804,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}}.", + "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.", "usermessage-summary": "Skil eftir kerfismeldingu.", "usermessage-editor": "Skilaboðakerfi", "watchlist": "Vaktlistinn", @@ -3183,7 +3179,7 @@ "fileduplicatesearch-noresults": "Mistókst að finna skrána \"$1\"", "specialpages": "Kerfissíður", "specialpages-note-top": "Fyrirsögn", - "specialpages-note": "* Venjulegar kerfisíður.\n* <span class=\"mw-specialpagerestricted\">Kerfisíður með takmörkuðum aðgangi.</span>", + "specialpages-note": "* Venjulegar kerfissíður.\n* <span class=\"mw-specialpagerestricted\">Kerfissíður með takmörkuðum aðgangi.</span>", "specialpages-group-maintenance": "Viðhaldsskýrslur", "specialpages-group-other": "Aðrar kerfissíður", "specialpages-group-login": "Innskrá / Búa til aðgang", @@ -3194,7 +3190,7 @@ "specialpages-group-pages": "Listar yfir síður", "specialpages-group-pagetools": "Síðuverkfæri", "specialpages-group-wiki": "Gögn og tól", - "specialpages-group-redirects": "Tilvísaðar kerfisíður", + "specialpages-group-redirects": "Tilvísaðar kerfissíður", "specialpages-group-spam": "Amasendingasíur", "specialpages-group-developer": "Forritaratól", "blankpage": "Tóm síða", @@ -3224,7 +3220,7 @@ "tags-deactivate": "gera óvirkt", "tags-hitcount": "$1 {{PLURAL:$1|breyting|breytingar}}", "tags-manage-no-permission": "Þú hefur ekki leyfi til að stjórna breytingamerkjum.", - "tags-manage-blocked": "Þú hefur ekki leyfi til að breyta merkjum á meðan þú ert bannaður.", + "tags-manage-blocked": "Þú hefur ekki leyfi til að breyta merkjum á meðan {{GENDER:$1|þú}} ert bannaður.", "tags-create-heading": "Búa til nýtt merki", "tags-create-explanation": "Sjálfgefið eru ný merki tiltæk notendum og vélmennum.", "tags-create-tag-name": "Heiti merkis", @@ -3377,44 +3373,12 @@ "feedback-useragent": "Aðgangsforrit:", "searchsuggest-search": "Leita á {{SITENAME}}", "searchsuggest-containing": "sem innihalda ...", - "api-error-badaccess-groups": "Þú hefur ekki leyfi til að hlaða inn skrám.", "api-error-badtoken": "Innri villa: Skemmdur tóki.", - "api-error-copyuploaddisabled": "Ekki er hægt að hlaða inn með vefslóð á þessum vefþjóni.", - "api-error-duplicate": "Það {{PLURAL:$1|er önnur skrá|eru aðrar skrár}} þegar til á vefsvæðinu sem hafa sama innihald.", - "api-error-duplicate-archive": "Það {{PLURAL:$1|var önnur skrá|voru aðrar skrár}} þegar á síðunni með sama innihald, en {{PLURAL:$1|henni|þeim}} var eytt.", - "api-error-empty-file": "Skráin sem þú valdir er tóm.", "api-error-emptypage": "Stofnun nýrra, tómra síðna er óheimil.", - "api-error-fetchfileerror": "Innri villa: Mistókst að sækja skrána.", - "api-error-fileexists-forbidden": "Skrá með nafninu \"$1\" er þegar til og ekki er hægt að yfirskrifa hana.", - "api-error-fileexists-shared-forbidden": "Skrá með nafninu \"$1\" er þegar til á miðlæga gagnaþjóninum og ekki er hægt að yfirskrifa hana.", - "api-error-file-too-large": "Skráin sem þú valdir er of stór.", - "api-error-filename-tooshort": "Skráarheitið er of stutt", - "api-error-filetype-banned": "Þessi gerð skráar er bönnuð.", - "api-error-filetype-banned-type": "$1 {{PLURAL:$4|er óleyfileg skráargerð|eru óleyfilegar skráargerðir}}. {{PLURAL:$3|Leyfð skráargerð er|Leyfðar skráargerðir eru}} $2.", - "api-error-filetype-missing": "Skráin hefur enga skráarendingu.", - "api-error-hookaborted": "Hætt var við breytinguna sem þú reyndir að gera með viðbót.", - "api-error-http": "Innri villa: Get ekki tengst vefþjón.", - "api-error-illegal-filename": "Þetta skráarheiti er ekki leyft.", - "api-error-internal-error": "Innri villa: Mistókst að vinna úr innsendingunni þinni.", - "api-error-invalid-file-key": "Innri villa: Skrá fannst ekki í bráðabirgðageymslu.", - "api-error-missingparam": "Innri villa: Breytur vantar í beiðni.", - "api-error-missingresult": "Innri villa: Gat ekki ákvarðað hvort tókst að afrita.", - "api-error-mustbeloggedin": "Þú verður að vera skráður inn til að hlaða inn skrám.", - "api-error-mustbeposted": "Innri villa: Beiðnin þarfnast HTTP POST.", - "api-error-noimageinfo": "Innsending skrárinnar tókst, en vefþjónninn gaf okkur engar upplýsingar um skrána.", - "api-error-nomodule": "Innri villa: Engin innsendingareining valin.", - "api-error-ok-but-empty": "Innri villa: ekkert svar frá vefþjón.", - "api-error-overwrite": "Óheimilt er að skrifa yfir skrá sem er þegar til.", - "api-error-stashfailed": "Innri villa: Vefþjónninn gat ekki geymt bráðabirgðaskrá.", "api-error-publishfailed": "Innri villa: Vefþjónninn gat ekki gefið út bráðabirgðaskrá.", - "api-error-timeout": "Vefþjónninn svaraði ekki á tilætluðum tíma.", - "api-error-unclassified": "Óþekkt villa kom upp.", - "api-error-unknown-code": "Óþekkt villa: \"$1\"", - "api-error-unknown-error": "Innri villa: Eitthvað fór úrskeiðis þegar að skráinni þinni var hlaðið inn.", + "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-unknownerror": "Óþekkt villa: \"$1\".", - "api-error-uploaddisabled": "Ekki er leyft að hlaða inn á þessum wiki.", - "api-error-verification-error": "Þessi skrá gæti verið skemmd, eða með vitlausa skráarendingu.", "duration-seconds": "$1 {{PLURAL:$1|sekúnda|sekúndur}}", "duration-minutes": "$1 {{PLURAL:$1|mínúta|mínútur}}", "duration-hours": "$1 {{PLURAL:$1|klukkustund|klukkustundir}}", diff --git a/languages/i18n/it.json b/languages/i18n/it.json index d6fd35cc3d..9c70b14a4b 100644 --- a/languages/i18n/it.json +++ b/languages/i18n/it.json @@ -103,7 +103,9 @@ "Anto", "Saracrovetto", "Tosky", - "Selven" + "Selven", + "Margherita.mignanelli", + "Redredsonia" ] }, "tog-underline": "Sottolinea i collegamenti:", @@ -271,6 +273,7 @@ "searcharticle": "Vai", "history": "Versioni precedenti", "history_short": "Cronologia", + "history_small": "cronologia", "updatedmarker": "modificata dalla mia ultima visita", "printableversion": "Versione stampabile", "permalink": "Link permanente", @@ -345,7 +348,7 @@ "policy-url": "Project:Policy", "portal": "Portale comunità", "portal-url": "Project:Portale comunità", - "privacy": "Informazioni sulla privacy", + "privacy": "Informativa sulla privacy", "privacypage": "Project:Informazioni sulla privacy", "badaccess": "Permessi non sufficienti", "badaccess-group0": "Non si dispone dei permessi necessari per eseguire l'azione richiesta.", @@ -509,19 +512,12 @@ "login": "Entra", "login-security": "Verifica la tua identità", "nav-login-createaccount": "Entra / registrati", - "userlogin": "Entra / registrati", - "userloginnocreate": "Entra", "logout": "Esci", "userlogout": "Esci", "notloggedin": "Accesso non effettuato", "userlogin-noaccount": "Non hai ancora effettuato la registrazione?", "userlogin-joinproject": "Registrati su {{SITENAME}}", - "nologin": "Non hai ancora un accesso? $1.", - "nologinlink": "Registrati", "createaccount": "Registrati", - "gotaccount": "Hai già un accesso? $1.", - "gotaccountlink": "Entra", - "userlogin-resetlink": "Hai dimenticato i tuoi dati di accesso?", "userlogin-resetpassword-link": "Hai dimenticato la password?", "userlogin-helplink2": "Aiuto con l'accesso", "userlogin-loggedin": "Sei già connesso come {{GENDER:$1|$1}}.\nUsa il modulo sottostante per accedere come altro utente.", @@ -534,7 +530,6 @@ "createaccountmail": "Usa una password casuale temporanea e inviala all'indirizzo di posta elettronica specificato", "createaccountmail-help": "Può essere utilizzato per creare un'utenza per un'altra persona senza doverne conoscere la password.", "createacct-realname": "Nome reale (opzionale)", - "createaccountreason": "Motivo:", "createacct-reason": "Motivo", "createacct-reason-ph": "Perché stai creando un'altra utenza", "createacct-reason-help": "Messaggio visualizzato nel registro della creazione dell'utenza", @@ -733,12 +728,13 @@ "selfredirect": "<strong>Attenzione:</strong> stai reindirizzando questa pagina a se stessa.\nPotresti aver indicato la destinazione errata per il redirect, o stai modificando la pagina sbagliata.\nSe fai clic nuovamente su \"{{int:savearticle}}\", il redirect sarà creato comunque.", "missingcommenttext": "Inserire un commento qui sotto.", "missingcommentheader": "<strong>Attenzione:</strong> non è stato specificato l'oggetto di questo commento. Premendo di nuovo \"{{int:savearticle}}\" la modifica verrà salvata senza.", - "summary-preview": "Anteprima dell'oggetto:", - "subject-preview": "Anteprima oggetto:", + "summary-preview": "Anteprima dell'oggetto della modifica:", + "subject-preview": "Anteprima dell'oggetto:", "previewerrortext": "Si è verificato un errore durante il tentativo di mostrare l'anteprima delle tue modifiche.", "blockedtitle": "Utente bloccato.", "blockedtext": "'''Il tuo nome utente o indirizzo IP è stato bloccato.'''\n\nIl blocco è stato imposto da $1. La motivazione del blocco è la seguente: ''$2''\n\n* Inizio del blocco: $8\n* Scadenza del blocco: $6\n* Intervallo di blocco: $7\n\nSe lo si desidera, è possibile contattare $1 o un altro [[{{MediaWiki:Grouppage-sysop}}|amministratore]] per discutere del blocco.\n\nSi noti che la funzione 'Scrivi all'utente' non è attiva se non è stato registrato un indirizzo e-mail valido nelle proprie [[Special:Preferences|preferenze]] o se l'utilizzo di tale funzione è stato bloccato.\n\nL'indirizzo IP attuale è $3, il numero ID del blocco è #$5.\nSi prega di specificare tutti i dettagli precedenti in qualsiasi richiesta di chiarimenti.", "autoblockedtext": "Questo indirizzo IP è stato bloccato automaticamente perché condiviso con un altro utente, a sua volta bloccato da $1.\nLa motivazione del blocco è la seguente:\n\n:''$2''\n\n* Inizio del blocco: $8\n* Scadenza del blocco: $6\n* Intervallo di blocco: $7\n\nÈ possibile contattare $1 o un altro [[{{MediaWiki:Grouppage-sysop}}|amministratore]] per richiedere eventuali chiarimenti circa il blocco.\n\nSi noti che la funzione 'Scrivi all'utente' non è attiva se non è stato registrato un indirizzo e-mail valido nelle proprie [[Special:Preferences|preferenze]] e, comunque, se nell'applicare il blocco, tale funzione è stata disabilitata (per la durata del blocco).\n\nL'indirizzo IP attuale è $3, il numero ID del blocco è #$5\nSi prega di specificare tutti i dettagli qui inclusi nel compilare qualsiasi richiesta di chiarimenti.", + "systemblockedtext": "Il tuo nome utente o l'indirizzo IP è stato bloccato automaticamente da MediaWiki.\nLa motivazione del blocco è la seguente:\n\n:''$2''\n\n* Inizio del blocco: $8\n* Scadenza del blocco: $6\n* Intervallo di blocco: $7\n\nL'indirizzo IP attuale è $3.\nSi prega di specificare tutti i dettagli qui inclusi nel compilare qualsiasi richiesta di chiarimenti.", "blockednoreason": "nessuna motivazione indicata", "whitelistedittext": "Per modificare le pagine è necessario $1.", "confirmedittext": "Per essere abilitati alla modifica delle pagine è necessario confermare il proprio indirizzo e-mail. Per impostare e confermare l'indirizzo servirsi delle [[Special:Preferences|preferenze]].", @@ -847,7 +843,7 @@ "post-expand-template-inclusion-warning": "<strong>Attenzione:</strong> la dimensione dei template inclusi è troppo grande.\nAlcuni template non verranno inclusi.", "post-expand-template-inclusion-category": "Pagine per le quali la dimensione dei template inclusi supera il limite consentito", "post-expand-template-argument-warning": "'''Attenzione:''' questa pagina contiene uno o più argomenti di template troppo grandi per essere espansi. Tali argomenti verranno omessi.", - "post-expand-template-argument-category": "Pagine contenenti template con argomenti mancanti", + "post-expand-template-argument-category": "Pagine contenenti template con parametri omessi", "parser-template-loop-warning": "Rilevato loop del template: [[$1]]", "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)", @@ -1019,7 +1015,7 @@ "nextn-title": "{{PLURAL:$1|Risultato successivo|$1 risultati successivi}}", "shown-title": "Mostra {{PLURAL:$1|un risultato|$1 risultati}} per pagina", "viewprevnext": "Vedi ($1 {{int:pipe-separator}} $2) ($3).", - "searchmenu-exists": "'''Sul sito esiste una pagina il cui nome è \"[[:$1]]\"'''", + "searchmenu-exists": "<strong>Su questo wiki esiste una pagina il cui nome è \"[[:$1]]\".</strong> {{PLURAL:$2|0=|Vedi anche gli altri risultati trovati.}}", "searchmenu-new": "<strong>Crea la pagina \"[[:$1]]\" su questo wiki!</strong> {{PLURAL:$2|0=|Vedi anche la pagina trovata con la tua ricerca|Vedi anche i risultati della ricerca}}", "searchprofile-articles": "Pagine di contenuti", "searchprofile-images": "Multimedia", @@ -1040,6 +1036,7 @@ "search-interwiki-caption": "Progetti fratelli", "search-interwiki-default": "Risultati da $1:", "search-interwiki-more": "(altro)", + "search-interwiki-more-results": "altri risultati", "search-relatedarticle": "Risultati correlati", "searchrelated": "correlati", "searchall": "tutti", @@ -1129,6 +1126,7 @@ "youremail": "Indirizzo email:", "username": "{{GENDER:$1|Nome utente}}:", "prefs-memberingroups": "{{GENDER:$2|Membro}} {{PLURAL:$1|del gruppo|dei gruppi}}:", + "group-membership-link-with-expiry": "$1 (fino a $2)", "prefs-registration": "Data di registrazione:", "yourrealname": "Nome vero:", "yourlanguage": "Lingua dell'interfaccia:", @@ -1173,17 +1171,23 @@ "editusergroup": "Modifica gruppi utente", "editinguser": "Modifica in corso dei diritti dell'{{GENDER:$1|utente}} <strong>[[User:$1|$1]]</strong> $2", "viewinguserrights": "Visualizzazione dei diritti dell'{{GENDER:$1|utente}} <strong>[[User:$1|$1]]</strong> $2", - "userrights-editusergroup": "Modifica gruppi utente", - "userrights-viewusergroup": "Visualizza gruppi utente", + "userrights-editusergroup": "Modifica gruppi {{GENDER:$1|utente}}", + "userrights-viewusergroup": "Visualizza gruppi {{GENDER:$1|utente}}", "saveusergroups": "Salva gruppi {{GENDER:$1|utente}}", "userrights-groupsmember": "Appartiene {{PLURAL:$1|al gruppo|ai gruppi}}:", "userrights-groupsmember-auto": "Membro implicito di:", - "userrights-groups-help": "È possibile modificare i gruppi cui è assegnato l'utente.\n* Una casella di spunta selezionata indica l'appartenenza dell'utente al gruppo\n* Una casella di spunta deselezionata indica la sua mancata appartenenza al gruppo.\n* Il simbolo * indica che non è possibile eliminare l'appartenenza al gruppo dopo averla aggiunta (o viceversa).", + "userrights-groups-help": "È possibile modificare i gruppi cui è assegnato l'utente.\n* Una casella di spunta selezionata indica l'appartenenza dell'utente al gruppo\n* Una casella di spunta deselezionata indica la sua mancata appartenenza al gruppo.\n* Il simbolo * indica che non è possibile eliminare l'appartenenza al gruppo dopo averla aggiunta (o viceversa).\n* Il simbolo # indica che puoi solo mettere indietro la data di scadenza di questo gruppo; non è possibile portare avanti.", "userrights-reason": "Motivo:", "userrights-no-interwiki": "Non si dispone dei permessi necessari per modificare i diritti degli utenti su altri siti.", "userrights-nodatabase": "Il database $1 non esiste o non è un database locale.", "userrights-changeable-col": "Gruppi modificabili", "userrights-unchangeable-col": "Gruppi non modificabili", + "userrights-expiry-current": "Scade il $1", + "userrights-expiry-none": "Non ha scadenza", + "userrights-expiry": "Scadenza:", + "userrights-expiry-existing": "Scadenza attuale: $2, $3", + "userrights-expiry-othertime": "Altra durata:", + "userrights-expiry-options": "1 giorno:1 day,1 settimana:1 week,1 mese:1 month,3 mesi:3 months,6 mesi:6 months,1 anno:1 year", "userrights-conflict": "Conflitto di modifica dei diritti utente! Controlla e conferma le tue modifiche.", "group": "Gruppo:", "group-user": "Utenti", @@ -1385,9 +1389,26 @@ "recentchanges-legend-plusminus": "(''±123'')", "recentchanges-submit": "Mostra", "rcfilters-activefilters": "Filtri attivi", + "rcfilters-restore-default-filters": "Ripristina i filtri predefiniti", + "rcfilters-clear-all-filters": "Pulisci tutti i filtri", + "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-highlightmenu-title": "Seleziona un colore", + "rcfilters-highlightmenu-help": "Seleziona un colore per evidenziare questa proprietà", "rcfilters-filterlist-noresults": "Nessun filtro trovato", + "rcfilters-filtergroup-registration": "Registrazione utente", + "rcfilters-filter-registered-label": "Registrato", + "rcfilters-filtergroup-authorship": "Modifica paternità", + "rcfilters-filter-bots-label": "Bot", + "rcfilters-filtergroup-significance": "Significato", + "rcfilters-filter-minor-label": "Modifiche minori", + "rcfilters-filter-major-label": "Modifiche non minori", + "rcfilters-filtergroup-changetype": "Tipo di modifica", + "rcfilters-filter-pageedits-label": "Modifiche alle pagine", + "rcfilters-filter-newpages-label": "Creazioni pagine", + "rcfilters-filter-logactions-description": "Azioni amministrative, creazione utenze, cancellazioni pagine, caricamenti....", "rcnotefrom": "Di seguito {{PLURAL:$5|è elencata la modifica apportata|sono elencate le modifiche apportate}} a partire da <strong>$3, $4</strong> (mostrate fino a <strong>$1</strong>).", "rclistfrom": "Mostra le modifiche apportate a partire da $3 $2", "rcshowhideminor": "$1 le modifiche minori", @@ -1488,7 +1509,7 @@ "largefileserver": "Il file supera le dimensioni consentite dalla configurazione del server.", "emptyfile": "Il file appena caricato sembra essere vuoto. Ciò potrebbe essere dovuto ad un errore nel nome del file. Verificare che si intenda realmente caricare questo file.", "windows-nonascii-filename": "Questo wiki non supporta nomi di file con caratteri speciali.", - "fileexists": "Un file con questo nome esiste già.\nVerificare prima <strong>[[:$1]]</strong> se non si è sicuri di volerlo sovrascrivere.\n[[$1|thumb]]", + "fileexists": "Un file con questo nome esiste già, verifica prima <strong>[[:$1]]</strong> se non si è sicuri di volerlo sovrascrivere.\n[[$1|thumb]]", "filepageexists": "La pagina di descrizione di questo file è già stata creata all'indirizzo <strong>[[:$1]]</strong>, anche se non esiste ancora un file con questo nome. La descrizione dell'oggetto inserita in fase di caricamento non apparirà sulla pagina di descrizione. Per far sì che l'oggetto compaia sulla pagina di descrizione, sarà necessario modificarla manualmente.\n[[$1|thumb]]", "fileexists-extension": "Un file con nome simile a questo esiste già: [[$2|thumb]]\n* Nome del file caricato: <strong>[[:$1]]</strong>\n* Nome del file esistente: <strong>[[:$2]]</strong>\nForse vuoi scegliere un nome più caratteristico?.", "fileexists-thumbnail-yes": "Il file caricato sembra essere una miniatura ''(thumbnail)''. [[$1|thumb]]\nVerificare, per confronto, il file <strong>[[:$1]]</strong>.\nSe si tratta della stessa immagine, nelle dimensioni originali, non è necessario caricarne altre miniature.", @@ -1521,7 +1542,7 @@ "uploaded-setting-handler-svg": "SVG che imposta l'attributo \"handler\" con remote/data/script è bloccato. Trovato <code>$1=\"$2\"</code> nel file SVG caricato.", "uploaded-remote-url-svg": "SVG che imposta qualsiasi attributo di stile con URL remoti è bloccato. Trovato <code>$1=\"$2\"</code> nel file SVG caricato.", "uploaded-image-filter-svg": "Trovato filtro immagine con URL: <code><$1 $2=\"$3\"></code> nel file in formato SVG caricato.", - "uploadscriptednamespace": "Questo file SVG contiene un namespace '$1' non consentito", + "uploadscriptednamespace": "Questo file SVG contiene un namespace '<nowiki>$1</nowiki>' non consentito", "uploadinvalidxml": "Il codice XML nel file caricato non può essere elaborato.", "uploadvirus": "Questo file contiene un virus! Dettagli: $1", "uploadjava": "Questo file è un file ZIP che contiene un file .class Java.\nCaricare i file Java non è consentito, perché possono causare l'aggiramento delle restrizioni di sicurezza.", @@ -1897,7 +1918,7 @@ "apisandbox-sending-request": "Invio richiesta di API...", "apisandbox-loading-results": "Ricezione dei risultati di API in corso...", "apisandbox-results-error": "Si è verificato un errore durante il caricamento della risposta all'interrogazione API: $1", - "apisandbox-request-params-json": "Parametri JSON:", + "apisandbox-request-selectformat-label": "Mostra i dati richiesti come:", "apisandbox-request-url-label": "URL di richiesta:", "apisandbox-request-time": "Tempo richiesto: {{PLURAL:$1|$1 ms}}", "apisandbox-results-fixtoken": "Correggi token e reinvia", @@ -2040,7 +2061,7 @@ "emailccsubject": "Copia del messaggio inviato a $1: $2", "emailsent": "Messaggio inviato", "emailsenttext": "Il messaggio e-mail è stato inviato.", - "emailuserfooter": "Questa email è stata {{GENDER:$1|inviata}} da $1 a {{GENDER:$2|$2}} attraverso la funzione \"{{int:emailuser}}\" su {{SITENAME}}. La {{GENDER:$2|tua}} eventuale email di risposta sarà inviata direttamente al {{GENDER:$1|mittente originale}}, rivelando il {{GENDER:$2|tuo}} indirizzo di posta elettronica a {{GENDER:$1|lui|lei}}.", + "emailuserfooter": "Questa email è stata inviata da $1 a $2 attraverso la funzione \"{{int:emailuser}}\" su {{SITENAME}}. Se {{GENDER:$2|risponderai}}, la tua email di risposta sarà inviata direttamente {{GENDER:$1|al|alla}} mittente originale, rivelando{{GENDER:$1|gli|le}} il {{GENDER:$2|tuo}} indirizzo di posta elettronica.", "usermessage-summary": "Messaggio di sistema", "usermessage-editor": "Messaggero di sistema", "usermessage-template": "MediaWiki:MessaggioUtente", @@ -2139,7 +2160,7 @@ "editcomment": "L'oggetto della modifica era: <em>$1</em>.", "revertpage": "Annullate le modifiche di [[Special:Contributions/$2|$2]] ([[User talk:$2|discussione]]), riportata alla versione precedente di [[User:$1|$1]]", "revertpage-nouser": "Annullate le modifiche di un utente nascosto, riportata alla versione precedente di {{GENDER:$1|[[User:$1|$1]]}}", - "rollback-success": "Annullate le modifiche di $1; pagina riportata all'ultima versione di $2.", + "rollback-success": "Annullate le modifiche di {{GENDER:$3|$1}}; pagina riportata all'ultima versione di {{GENDER:$4|$2}}.", "rollback-success-notify": "Annullate le modifiche di $1;\npagina riportata all'ultima revisione di $2. [$3 Mostra le modifiche]", "sessionfailure-title": "Sessione fallita", "sessionfailure": "Si è verificato un problema nella sessione che identifica l'accesso; il sistema non ha eseguito il comando impartito per precauzione. Tornare alla pagina precedente con il tasto 'Indietro' del proprio browser, ricaricare la pagina e riprovare.", @@ -2198,8 +2219,8 @@ "protect-expiry-indefinite": "infinito", "protect-cascade": "Protezione ricorsiva (estende la protezione a tutte le pagine incluse in questa).", "protect-cantedit": "Non è possibile modificare i livelli di protezione per la pagina in quanto non si dispone dei permessi necessari per modificare la pagina stessa.", - "protect-othertime": "Durata non in elenco:", - "protect-othertime-op": "durata non in elenco", + "protect-othertime": "Altra durata:", + "protect-othertime-op": "altra durata", "protect-existing-expiry": "Scadenza attuale: $2, $3", "protect-existing-expiry-infinity": "Scadenza attuale: infinito", "protect-otherreason": "Altri motivi/dettagli:", @@ -2327,7 +2348,7 @@ "ipbemailban": "Impedisci all'utente l'invio di email", "ipbenableautoblock": "Blocca automaticamente l'ultimo indirizzo IP usato dall'utente e i successivi con cui vengono tentate modifiche", "ipbsubmit": "Blocca l'utente", - "ipbother": "Durata non in elenco:", + "ipbother": "Altra durata:", "ipboptions": "2 ore:2 hours,1 giorno:1 day,3 giorni:3 days,1 settimana:1 week,2 settimane:2 weeks,1 mese:1 month,3 mesi:3 months,6 mesi:6 months,1 anno:1 year,infinito:infinite", "ipbhidename": "Nascondi il nome utente dalle modifiche e dagli elenchi.", "ipbwatchuser": "Segui le pagine e le discussioni utente di questo utente", @@ -3579,7 +3600,6 @@ "logentry-tag-update-revision": "$1 {{GENDER:$2|ha aggiornato}} le etichette della versione $4 della pagina $3 ({{PLURAL:$7|aggiunta|aggiunte}} $6; {{PLURAL:$9|rimossa|rimosse}} $8)", "logentry-tag-update-logentry": "$1 {{GENDER:$2|ha aggiornato}} le etichette della voce di registro $5 di pagina $3 ({{PLURAL:$7|aggiunta|aggiunte}} $6; {{PLURAL:$9|rimossa|rimosse}} $8)", "rightsnone": "(nessuno)", - "revdelete-summary": "oggetto della modifica", "feedback-adding": "Inserimento del feedback nella pagina...", "feedback-back": "Indietro", "feedback-bugcheck": "Ottimo! Verifica che non sia già fra i [$1 bug conosciuti].", @@ -3604,56 +3624,12 @@ "feedback-useragent": "Agente utente:", "searchsuggest-search": "Cerca all'interno di {{SITENAME}}", "searchsuggest-containing": "contenente...", - "api-error-autoblocked": "Il tuo indirizzo IP è stato bloccato automaticamente, perché è stato utilizzato da un utente bloccato.", - "api-error-badaccess-groups": "Non sei autorizzato a caricare documenti su questa wiki.", "api-error-badtoken": "Errore interno: token errato.", - "api-error-blocked": "Sei stato bloccato, non puoi fare modifiche.", - "api-error-copyuploaddisabled": "Il caricamento tramite URL è disabilitato su questo server.", - "api-error-duplicate": "{{PLURAL:$1|Esiste già un altro file|Esistono già altri file}} sul sito con lo stesso contenuto.", - "api-error-duplicate-archive": "{{PLURAL:$1|Esiste già un altro file|Esistono già altri file}} sul sito con lo stesso contenuto, ma {{PLURAL:$1|è stato cancellato|sono stati cancellati}}.", - "api-error-empty-file": "Il file selezionato era vuoto.", "api-error-emptypage": "La creazione di nuove pagine vuote non è consentita.", - "api-error-fetchfileerror": "Errore interno: si è verificato un problema durante il recupero del file.", - "api-error-fileexists-forbidden": "Un file di nome \"$1\" già esiste e non può essere sovrascritto.", - "api-error-fileexists-shared-forbidden": "Un file di nome \"$1\" già esiste nel repository condiviso e non può essere sovrascritto.", - "api-error-file-too-large": "Il file selezionato era troppo grande.", - "api-error-filename-tooshort": "Il nome del file è troppo breve.", - "api-error-filetype-banned": "Questo tipo di file non è accettato.", - "api-error-filetype-banned-type": "$1 {{PLURAL:$4|non è un tipo di file consentito|non sono tipi di file consentiti}}. {{PLURAL:$3|Il tipo di file consentito è|I tipi di file consentiti sono}} $2.", - "api-error-filetype-missing": "Al file manca l'estensione.", - "api-error-hookaborted": "La modifica hai tentato di fare è stata interrotta da un passaggio dell'estensione.", - "api-error-http": "Errore interno: impossibile connettersi al server.", - "api-error-illegal-filename": "Il nome del file non è ammesso.", - "api-error-internal-error": "Errore interno: qualcosa è andato storto con l'elaborazione del tuo caricamento sulla wiki.", - "api-error-invalid-file-key": "Errore interno: file non presente nella cartella dei file temporanei.", - "api-error-missingparam": "Errore interno: parametri della richiesta mancanti.", - "api-error-missingresult": "Errore interno: impossibile determinare se la copia è riuscita.", - "api-error-mustbeloggedin": "Devi aver effettuato l'accesso per caricare i file.", - "api-error-mustbeposted": "Errore interno: la richiesta richiede HTTP POST.", - "api-error-noimageinfo": "Il caricamento è riuscito, ma il server non ci ha restituito alcuna informazione sul file.", - "api-error-nomodule": "Errore interno: non è stato impostato il modulo di caricamento.", - "api-error-ok-but-empty": "Errore interno: nessuna risposta dal server.", - "api-error-overwrite": "Sovrascrivere un file esistente non è consentito.", - "api-error-ratelimited": "Stai cercando di caricare più file in meno tempo di quanto questo wiki permette.\nRiprova tra pochi minuti.", - "api-error-stashfailed": "Errore interno: il server non è riuscito a memorizzare il documento temporaneo.", "api-error-publishfailed": "Errore interno: il server non è riuscito a pubblicare il documento temporaneo.", - "api-error-stasherror": "Si è verificato un errore durante il caricamento del file in stash.", - "api-error-stashedfilenotfound": "Il file in stash non è stato trovato durante il tentativo di caricamento dallo stash.", - "api-error-stashpathinvalid": "Il percorso in cui il file in stash dovrebbe trovarsi non è valido.", - "api-error-stashfilestorage": "Si è verificato un errore durante la memorizzazione del file in stash.", - "api-error-stashzerolength": "Il server non può inserire il file in stash, poiché ha lunghezza zero.", - "api-error-stashnotloggedin": "Devi aver effettuato l'accesso per poter salvare il file nel caricamento in stash.", - "api-error-stashwrongowner": "Il file a cui stai tentando di accedere nello stash non appartiene a te.", - "api-error-stashnosuchfilekey": "La chiave del file a cui stai tentando di accedere nello stash non esiste.", - "api-error-timeout": "Il server non ha risposto entro il tempo previsto.", - "api-error-unclassified": "Si è verificato un errore sconosciuto.", - "api-error-unknown-code": "Errore sconosciuto: \"$1\"", - "api-error-unknown-error": "Errore interno: qualcosa è andato storto provando a caricare il file.", + "api-error-stashfailed": "Errore interno: il server non è riuscito a memorizzare il documento temporaneo.", "api-error-unknown-warning": "Avvertimento sconosciuto: \"$1\".", "api-error-unknownerror": "Errore sconosciuto: \"$1\".", - "api-error-uploaddisabled": "Il caricamento è disabilitato su questa wiki.", - "api-error-verification-error": "Questo file potrebbe essere danneggiato, o avere l'estensione sbagliata.", - "api-error-was-deleted": "Un file con lo stesso nome è stato precedentemente caricato e successivamente eliminato.", "duration-seconds": "$1 {{PLURAL:$1|secondo|secondi}}", "duration-minutes": "$1 {{PLURAL:$1|minuto|minuti}}", "duration-hours": "$1 {{PLURAL:$1|ora|ore}}", @@ -3902,7 +3878,7 @@ "usercssispublic": "Ricorda: le sottopagine CSS non devono contenere dati riservati poichè sono visualizzabili da altri utenti.", "restrictionsfield-badip": "Indirizzo IP o intervallo non valido: $1", "restrictionsfield-label": "Intervalli IP consentiti:", - "restrictionsfield-help": "Un indirizzo IP o intervallo CIDR per linea. Per consentire tutto, utilizza<br><code>0.0.0.0/0</code><br><code>::/0</code>", + "restrictionsfield-help": "Un indirizzo IP o intervallo CIDR per linea. Per consentire tutto, utilizza:<pre>0.0.0.0/0\n::/0</pre>", "revid": "versione $1", "pageid": "ID della pagina $1" } diff --git a/languages/i18n/ja.json b/languages/i18n/ja.json index 7280e51bcc..2c4c3ba46b 100644 --- a/languages/i18n/ja.json +++ b/languages/i18n/ja.json @@ -77,7 +77,9 @@ "ネイ", "Mirinano", "Suchichi02", - "にょきにょき" + "にょきにょき", + "おはぐろ蜻蛉", + "Aefgh39622" ] }, "tog-underline": "リンクの下線:", @@ -245,6 +247,7 @@ "searcharticle": "表示", "history": "ページの履歴", "history_short": "履歴", + "history_small": "履歴", "updatedmarker": "前回の閲覧以降に更新されました", "printableversion": "印刷用バージョン", "permalink": "この版への固定リンク", @@ -799,6 +802,7 @@ "invalid-content-data": "本文データが無効です", "content-not-allowed-here": "ページ [[$2]] では、「$1」コンテンツは許可されていません", "editwarning-warning": "このページを離れると、あなたが行なった変更がすべて失われてしまうかもしれません。\nログインしている場合、個人設定の「{{int:prefs-editing}}」タブでこの警告を表示しないようにすることができます。", + "editpage-invalidcontentmodel-title": "対応していないコンテンツ形式", "editpage-notsupportedcontentformat-title": "対応していないコンテンツ形式", "editpage-notsupportedcontentformat-text": "コンテンツ モデル $2 は、コンテンツ形式 $1 に対応していません。", "content-model-wikitext": "ウィキテキスト", @@ -1155,6 +1159,10 @@ "userrights-changeable-col": "変更できるグループ", "userrights-unchangeable-col": "変更できないグループ", "userrights-irreversible-marker": "$1*", + "userrights-expiry-current": "期限 $1", + "userrights-expiry-none": "有効期限切れではありません", + "userrights-expiry": "有効期限:", + "userrights-expiry-othertime": "その他の期間:", "userrights-conflict": "利用者権限の変更が競合しています! 変更内容を確認してください。", "group": "グループ:", "group-user": "登録利用者", @@ -1319,6 +1327,7 @@ "action-userrights-interwiki": "他のウィキの利用者の利用者権限変更", "action-siteadmin": "データベースのロックまたはロック解除", "action-sendemail": "メールの送信", + "action-editmyoptions": "あなたの個人設定を編集", "action-editmywatchlist": "自身のウォッチリストの編集", "action-viewmywatchlist": "自身のウォッチリストの閲覧", "action-viewmyprivateinfo": "自分の非公開情報の閲覧", @@ -1345,6 +1354,16 @@ "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} ([[Special:NewPages|新しいページ一覧]]も参照)", "recentchanges-legend-plusminus": "(<em>±123</em>)", "recentchanges-submit": "表示", + "rcfilters-clear-all-filters": "すべてのフィルターをクリア", + "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-bots-label": "ボット", + "rcfilters-filter-humans-label": "人間(ボットではない)", "rcnotefrom": "以下は<strong>$3 $4</strong>以降の{{PLURAL:$5|更新です}} (最大 <strong>$1</strong> 件)。", "rclistfrom": "$3の$2以降の更新を表示する", "rcshowhideminor": "細部の編集を$1", @@ -1419,7 +1438,7 @@ "fileuploadsummary": "概要:", "filereuploadsummary": "ファイルの変更:", "filestatus": "著作権情報:", - "filesource": "出典:", + "filesource": "情報源:", "ignorewarning": "警告を無視してファイルを保存", "ignorewarnings": "警告を無視", "minlength1": "ファイル名には少なくとも1文字必要です。", @@ -1478,7 +1497,7 @@ "uploaded-setting-handler-svg": "リモート/データ/スクリプトの「handler」属性を設定するSVGがブロックされています。アップロードされたSVGファイルに <code>$1=\"$2\"</code> が見つかりました。", "uploaded-remote-url-svg": "リモート URL の任意のスタイルを設定するSVGがブロックされています。アップロードされたSVGファイルに <code>$1=\"$2\"</code> が見つかりました。", "uploaded-image-filter-svg": "URL に画像フィルターが見つかりました: アップロードされたSVGファイルの <code><$1 $2=\"$3\"></code>。", - "uploadscriptednamespace": "この SVG ファイルは無効な名前空間「$1」を含んでいます。", + "uploadscriptednamespace": "この SVG ファイルは無効な名前空間「<nowiki>$1</nowiki>」を含んでいます。", "uploadinvalidxml": "アップロードされたファイルに含まれる XML が構文解析できませんでした。", "uploadvirus": "このファイルはウイルスを含んでいます!\n詳細: $1", "uploadjava": "このファイルは、Javaの.classファイルを含むZIPファイルです。\nセキュリティ上の制限を回避されるおそれがあるため、Javaファイルのアップロードは許可されていません。", @@ -3656,56 +3675,12 @@ "feedback-useragent": "ユーザーエージェント:", "searchsuggest-search": "{{SITENAME}}内を検索", "searchsuggest-containing": "この語句を全文検索", - "api-error-autoblocked": "あなたの IP アドレスは、過去にブロックされた利用者によって使用されていたため、自動的にブロックされました。", - "api-error-badaccess-groups": "このウィキへのファイルのアップロードが許可されていません。", "api-error-badtoken": "内部エラー: トークンが正しくありません。", - "api-error-blocked": "あなたは編集ブロックされています。", - "api-error-copyuploaddisabled": "URLによるアップロードはこのサーバーでは無効になっています。", - "api-error-duplicate": "当ウェブサイト上には、既に同じ内容の{{PLURAL:$1|他のファイルが|他のファイルがいくつか}}存在しています。", - "api-error-duplicate-archive": "サイト上に同じ内容の{{PLURAL:$1|別のファイルが|他のファイルがいくつか}}既にありましたが、{{PLURAL:$1|それは|それらは}}削除されました。", - "api-error-empty-file": "送信されたファイルは空でした。", "api-error-emptypage": "内容がないページの新規作成は許可されていません。", - "api-error-fetchfileerror": "内部エラー: ファイルを取得する際に問題が発生しました。", - "api-error-fileexists-forbidden": "「$1」という名前のファイルは存在しており、上書きはできません。", - "api-error-fileexists-shared-forbidden": "「$1」という名前のファイルは共有ファイルリポジトリに存在しており、上書きはできません。", - "api-error-file-too-large": "送信されたファイルは大きすぎます。", - "api-error-filename-tooshort": "ファイル名が短すぎます。", - "api-error-filetype-banned": "この形式のファイルは禁止されています。", - "api-error-filetype-banned-type": "$1{{PLURAL:$4|は許可されていないファイル形式です}}。許可されている{{PLURAL:$3|ファイル形式}}は$2です。", - "api-error-filetype-missing": "ファイルに拡張子がありません。", - "api-error-hookaborted": "拡張機能のフックによって、修正が中断されました。", - "api-error-http": "内部エラー: サーバーに接続できませんでした。", - "api-error-illegal-filename": "ファイル名が許可されていません。", - "api-error-internal-error": "内部エラー: ウィキ上でアップロードを処理する際に問題が発生しました。", - "api-error-invalid-file-key": "内部エラー: 一時格納場所にファイルが見つかりませんでした。", - "api-error-missingparam": "内部エラー: リクエストのパラメーターが足りません。", - "api-error-missingresult": "内部エラー: 複製に成功したかどうか判断できませんでした。", - "api-error-mustbeloggedin": "ファイルをアップロードするにはログインする必要があります。", - "api-error-mustbeposted": "内部エラー: リクエストは HTTP の POST メソッドである必要があります。", - "api-error-noimageinfo": "アップロードには成功しましたが、サーバーはファイルに関する情報を返しませんでした。", - "api-error-nomodule": "内部エラー: アップロードを処理するモジュールが設定されていません。", - "api-error-ok-but-empty": "内部エラー: サーバーからの応答がありません。", - "api-error-overwrite": "既存のファイルへの上書きは許可されていません。", - "api-error-ratelimited": "あなたは短時間の間に、このウィキで許容されている数より多くのファイルをアップロードしようとしています。\n数分後にもう一度お試しください。", - "api-error-stashfailed": "内部エラー: サーバーは一時ファイルを格納できませんでした。", "api-error-publishfailed": "内部エラー: サーバーは一時ファイルを発行できませんでした。", - "api-error-stasherror": "ファイルを未公開アップロードする際にエラーが発生しました。", - "api-error-stashedfilenotfound": "未公開場所からアップロードしようとしましたが、隠しファイルが見つかりませんでした。", - "api-error-stashpathinvalid": "隠しファイルのパスが無効です。", - "api-error-stashfilestorage": "未公開ファイルを格納する際にエラーが発生しました。", - "api-error-stashzerolength": "長さが0であるため、サーバーはファイルを隠しておくことができませんでした。", - "api-error-stashnotloggedin": "未公開ファイルを保存するにはログインが必要です。", - "api-error-stashwrongowner": "未公開場所にアクセスしようとしていたファイルは、あなたに属していません。", - "api-error-stashnosuchfilekey": "未公開場所にアクセスしようとしていたファイルのキーが存在しません。", - "api-error-timeout": "サーバーが決められた時間内に応答しませんでした。", - "api-error-unclassified": "不明なエラーが発生しました。", - "api-error-unknown-code": "不明なエラー:「$1」", - "api-error-unknown-error": "内部エラー: ファイルをアップロードする際に問題が発生しました。", + "api-error-stashfailed": "内部エラー: サーバーは一時ファイルを格納できませんでした。", "api-error-unknown-warning": "不明な警告:「$1」", "api-error-unknownerror": "不明なエラー:「$1」", - "api-error-uploaddisabled": "このウィキではアップロードは無効になっています。", - "api-error-verification-error": "このファイルは壊れているか、間違った拡張子になっています。", - "api-error-was-deleted": "この名前のファイルは、以前にアップロードされており、その後削除されています。", "duration-seconds": "$1 {{PLURAL:$1|秒}}", "duration-minutes": "$1 {{PLURAL:$1|分}}", "duration-hours": "$1 {{PLURAL:$1|時間}}", @@ -3883,7 +3858,7 @@ "authmanager-create-not-in-progress": "アカウントの作成が行われていない、またはセッションデータが失われました。最初からやり直してください。", "authmanager-create-no-primary": "指定された証明情報は、アカウントの作成に使用できませんでした。", "authmanager-link-no-primary": "指定された証明情報は、アカウントの関連付けに使用できませんでした。", - "authmanager-link-not-in-progress": "アカウントの関連付けが行われていない、またはセッションデータが失われました。最初からやり直してください。", + "authmanager-link-not-in-progress": "アカウントの関連付けが処理されていないか、セッションデータが失われています。最初からやり直してください。", "authmanager-authplugin-setpass-failed-title": "パスワードの変更に失敗しました", "authmanager-authplugin-setpass-failed-message": "パスワードの変更は、認証プラグインによって拒否されました。", "authmanager-authplugin-create-fail": "アカウントの作成は、認証プラグインによって拒否されました。", diff --git a/languages/i18n/jv.json b/languages/i18n/jv.json index aedb81178b..89c777e4b8 100644 --- a/languages/i18n/jv.json +++ b/languages/i18n/jv.json @@ -569,7 +569,7 @@ "media_tip": "Pranala barkas", "sig_tip": "Tandha tangan sampéyan mawa tandha wayah", "hr_tip": "Garis horisontal", - "summary": "Tingkesan:", + "summary": "Ringkesan:", "subject": "Jejer:", "minoredit": "Iki besutan cilik", "watchthis": "Awasi kaca iki", @@ -634,7 +634,7 @@ "editingcomment": "Mbesut $1 (pérangan anyar)", "editconflict": "Cengkah besutan: $1", "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 \"{{int:savearticle}}\".", - "yourtext": "Tulisan sampéyan", + "yourtext": "Tulisan 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.", @@ -905,8 +905,6 @@ "saveprefs": "Simpen", "restoreprefs": "Balèkna kabèh setèlan baku", "prefs-editing": "Pambesut", - "rows": "Larikan:", - "columns": "Kolom:", "searchresultshead": "Panggolèkan", "stub-threshold": "Ambang wates kanggo format <a href=\"#\" class=\"stub\">pranala rintisan</a>:", "stub-threshold-sample-link": "pralampita", @@ -956,7 +954,7 @@ "prefs-help-signature": "Tanggapan ing kaca parembugan kudu ditandhatangani mawa \"<nowiki>~~~~</nowiki>\", sing bakal salin dadi tandha tangan lan cap wektumu.", "badsig": "Tapak astanipun klèntu; cèk rambu HTML.", "badsiglength": "Tapak asta panjenengan kedawan.\nAja luwih saka {{PLURAL:$1|karakter|karakter}}.", - "yourgender": "Kepiyé sampéyan medhar priangganing sampéyan?", + "yourgender": "Kepiyé sampéyan medhar priangganing panjenengan?", "gender-unknown": "Nalika nyebut sampéyan, piranti alus iku bakal nganggo tembung sing nétral jèndher sabisané", "gender-male": "Dhèwèké mbesut kaca wiki", "gender-female": "Dhèwèké mbesut kaca wiki", @@ -1217,7 +1215,7 @@ "uploadlogpage": "Log unggah", "uploadlogpagetext": "Ing ngisor iki kapacak log pangunggahan berkas sing anyar dhéwé.\nMangga mirsani [[Special:NewFiles|galeri berkas-berkas anyar]] kanggo pratélan visual.", "filename": "Jeneng barkas", - "filedesc": "Tingkesan", + "filedesc": "Ringkesan", "fileuploadsummary": "Ringkesan:", "filereuploadsummary": "Owah-owahan berkas:", "filestatus": "Status hak cipta", @@ -1919,7 +1917,7 @@ "badipaddress": "Alamat IP klèntu", "blockipsuccesssub": "Pemblokiran suksès", "blockipsuccesstext": "[[Special:Contributions/$1|$1]] wis diblokir.<br />\nDelok [[Special:BlockList|daptar blokir]] kanggo ninjo blokiran.", - "ipb-blockingself": "Sampéyan arep mblokir Sampéyan dhéwé! Sampéyan yakin arep nglakoni kuwi?", + "ipb-blockingself": "Panjenengan arep mblokir panjenengan dhéwé! Panjenengan yakin arep nglakoni kuwi?", "ipb-confirmhideuser": "Sampéyan arep mblokir panganggo mawa piranti \"dhelikaké panganggo\" isih murub. Iki bakal nyegah jeneng panganggo ana ing kabèh daptar lan èntri log. Sampéyan yakin arep nglakoni kuwi?", "ipb-edit-dropdown": "Besut jalaraning pamalang", "ipb-unblock-addr": "Ilangna blokir $1", @@ -2164,7 +2162,7 @@ "tooltip-pt-login": "Sampéyan prayogané mlebu masiya ora kudu", "tooltip-pt-logout": "Metu", "tooltip-pt-createaccount": "Sampéyan prayogané gawé akun lan mlebu masiya ora kudu", - "tooltip-ca-talk": "Rerembuganing kaca isi", + "tooltip-ca-talk": "Pirembug ngenani kaca isi", "tooltip-ca-edit": "Besut kaca iki", "tooltip-ca-addsection": "Miwiti pérangan anyar", "tooltip-ca-viewsource": "Kaca iki direksa. \nSampéyan bisa ndeleng sumberé", @@ -2220,7 +2218,7 @@ "tooltip-rollback": "Balèkaké besutan-besutan kaca iki déning sing pungkasan nyumbang sarana saklikan.", "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": "Isi tingkesan cendhak", + "tooltip-summary": "Isènana ringkesan cekak", "anonymous": "{{PLURAL:$1|Panganggo|panganggo}} anon ing {{SITENAME}}.", "siteuser": "Panganggo {{SITENAME}} $1", "anonuser": "Panganggo anonim {{SITENAME}} $1", @@ -2930,7 +2928,7 @@ "logentry-newusers-create2": "Akun panganggo $3 {{GENDER:$2|digawé}} déning $1", "logentry-newusers-byemail": "Akun panganggo $3 {{GENDER:$2|digawé}} déning $1 lan tembung sandhine dikirim lewat layang elektronik", "logentry-newusers-autocreate": "Akun $1 {{GENDER:$2|digawé}} otomatis", - "logentry-protect-unprotect": "$1 {{GENDER:$2|ngilangi}} rereksan saka $3", + "logentry-protect-unprotect": "$1 {{GENDER:$2|njabud}} payomané $3", "logentry-rights-rights": "$1 {{GENDER:$2|ngganti}} golongané {{GENDER:$6|$3}} saka $4 dadi $5", "logentry-rights-rights-legacy": "$1 {{GENDER:$2|ngganti}} golongané $3", "logentry-rights-autopromote": "$1 otomatis {{GENDER:$2|dipromosikne}} saka $4 nèng $5", @@ -2952,45 +2950,12 @@ "feedback-thanks": "Nuwun! Lebon saran Sampéyan wis dipasang nèng kacané \"[$2 $1]\".", "searchsuggest-search": "Golèk {{SITENAME}}", "searchsuggest-containing": "ngemu...", - "api-error-badaccess-groups": "Sampéyan ora dililakaké ngunggah berkas nèng wiki iki.", "api-error-badtoken": "Kasalahan njero: Token èlèk.", - "api-error-copyuploaddisabled": "Ngunggah saka URL dipatèni nèng sasana iki.", - "api-error-duplicate": "Wis ana {{PLURAL:$1|barkas liya|barkas-barkas liya}} mawa isi sing padha sajeroning sana jaringan iki.", - "api-error-duplicate-archive": "Ana {{PLURAL:$1|berkas liya|pirang-pirang berkas liya}} sing wis ana nèng situsé saha isiné padha, nanging {{PLURAL:$1|kuwi|kuwi kabèh}} wis dibusak.", - "api-error-empty-file": "Berkas sing Sampéyan kirim kosong.", "api-error-emptypage": "Nggawé kaca kosong anyar ora dilikaké.", - "api-error-fetchfileerror": "Kasalahan njero: Ana sing salah nalika ngètukaké berkas iki.", - "api-error-fileexists-forbidden": "Berkas mawa jeneng \"$1\" wis ana, lan ora bisa diganti.", - "api-error-fileexists-shared-forbidden": "Berkas mawa jeneng \"$1\" wis ana nèng gudhang berkas bebarengan, lan ora bisa diganti.", - "api-error-file-too-large": "Berkas sing Sampéyan kirim kagedhèn.", - "api-error-filename-tooshort": "Jeneng berkas kacendhèken.", - "api-error-filetype-banned": "Jinis berkas iki dilarang.", - "api-error-filetype-banned-type": "$1 {{PLURAL:$4|dudu jinis berkas sing dililakaké|dudu jinis berkas sing dililakaké}}. {{PLURAL:$3|Jinis berkas|Jinis berkas}} sing dililakaké $2.", - "api-error-filetype-missing": "Jeneng berkas ora nduwèni èkstènsi.", - "api-error-hookaborted": "Pangowahan sing Sampéyan coba dibatalaké déning èkstènsi.", - "api-error-http": "Kasalahan njero: Ora bisa ngubungi sasana.", - "api-error-illegal-filename": "Jeneng berkas ora dililakaké.", - "api-error-internal-error": "Kasalahan njero: Ana sing salah saka pamrosèsan unggahan Sampéyan nèng wiki.", - "api-error-invalid-file-key": "Kasalahan njero: Berkas ora ditemokaké nèng panyimpenan sawetara.", - "api-error-missingparam": "Kasalahan njero: Paramètèr panjalukan ilang.", - "api-error-missingresult": "Kasalahan njero: Ora bisa mesthèkaké yèn nyaliné suksès.", - "api-error-mustbeloggedin": "Sampéyan kudu mlebu log kanggo ngunggah berkas.", - "api-error-mustbeposted": "Kasalahan njero: Panjalukan mbutuhaké HTTP POST.", - "api-error-noimageinfo": "Ngunggah suksès. nanging sasana ora ngawèhi awak dhéwé katrangan bab berkas kuwi.", - "api-error-nomodule": "Kasalahan njero: Ora ana modul ngunggah sing dipatrapaké.", - "api-error-ok-but-empty": "Kasalahan njero: Ora ana tanggepan saka sasana.", - "api-error-overwrite": "Nibani berkas sing wis ana ora dililakaké.", - "api-error-stashfailed": "Kasalahan njero: Sasana gagal nyèlèhaké berkas sawetara.", "api-error-publishfailed": "Kasalahan njero: Sasana gagal nyèlèhaké berkas sawetara.", - "api-error-stasherror": "Ana kasalahan wektu ngunggah berkas.", - "api-error-timeout": "Sasana ora nanggepi nèng wektu sing karepaké.", - "api-error-unclassified": "Ana masalah sing ora dingertèni.", - "api-error-unknown-code": "Kasalahan ora dingertèni: \"$1\".", - "api-error-unknown-error": "Kasalahan njero: Ana sing salah nalika njajal ngunggah berkas Sampéyan.", + "api-error-stashfailed": "Kasalahan njero: Sasana gagal nyèlèhaké berkas sawetara.", "api-error-unknown-warning": "Pèngetan ora dingertèni: \"$1\".", "api-error-unknownerror": "Kasalahan ora dingertèni: \"$1\".", - "api-error-uploaddisabled": "Piranti ngunggah dipatèni nèng wiki iki.", - "api-error-verification-error": "Berkas iki mungkin rusak, utawa nduwéni èkstènsi salah.", "duration-seconds": "$1 {{PLURAL:$1|detik|detik}}", "duration-minutes": "$1 {{PLURAL:$1|menit|menit}}", "duration-hours": "$1 {{PLURAL:$1|jam|jam}}", diff --git a/languages/i18n/ka.json b/languages/i18n/ka.json index 96d3ddf8a9..a0abf1f66b 100644 --- a/languages/i18n/ka.json +++ b/languages/i18n/ka.json @@ -27,7 +27,8 @@ "Gi777ga", "Matma Rex", "Sopopruidze", - "Dixtosa" + "Dixtosa", + "OpusDEI" ] }, "tog-underline": "ბმულების ხაზგასმა:", @@ -72,7 +73,7 @@ "tog-showhiddencats": "დამალული კატეგორიების ჩვენება", "tog-norollbackdiff": "ცვლილების გაუქმებისას არ მანახო ცვლილებათა განსხვავება", "tog-useeditwarning": "გამაფრთხილე, როდესაც დავტოვებ რედაქტირებად გვერდს, დაუმახსოვრებელი ცვლილებებით", - "tog-prefershttps": "უსაფრთხო კავშირის მუდამ გამოყენება ავტორიზაციის შემდეგ", + "tog-prefershttps": "მუდამ უსაფრთხო კავშირის გამოყენება ავტორიზაციის შემდეგ", "underline-always": "მუდამ", "underline-never": "არასდროს", "underline-default": "დამოკიდებული მომხმარებელზე ან ბრაუზერის არჩევანზე", @@ -160,7 +161,7 @@ "category-file-count-limited": "შემდეგი {{PLURAL:$1|ფაილი|$1 ფაილები}} ამ კატეგორიაშია.", "listingcontinuesabbrev": "გაგრძ.", "index-category": "გვერდების ინდექსაცია", - "noindex-category": "არ არსებობს ინდექსირებული გვერდები", + "noindex-category": "არაინდექსირებული გვერდები", "broken-file-category": "გვერდები ფაილების არასწორი ბმულებით", "categoryviewer-pagedlinks": "($1) ($2)", "category-header-numerals": "$1–$2", @@ -169,7 +170,7 @@ "newwindow": "(ახალ ფანჯარაში)", "cancel": "გაუქმება", "moredotdotdot": "ვრცლად...", - "morenotlisted": "ეს არასრული სიაა.", + "morenotlisted": "ეს სია შეიძლება იყოს არასრული.", "mypage": "გვერდი", "mytalk": "განხილვა", "anontalk": "განხილვა", @@ -197,6 +198,7 @@ "searcharticle": "გვერდი", "history": "გვერდის ისტორია", "history_short": "ისტორია", + "history_small": "ისტორია", "updatedmarker": "განახლდა ჩემი ბოლო შემოსვლის შემდეგ", "printableversion": "დასაბეჭდი ვერსია", "permalink": "მუდმივი ბმული", @@ -228,6 +230,9 @@ "talk": "განხილვა", "views": "გადახედვა", "toolbox": "ხელსაწყოები", + "tool-link-userrights": "{{GENDER:$1|მომხმარებლის}} ჯგუფების შეცვლა", + "tool-link-userrights-readonly": "{{GENDER:$1|მომხმარებლის}} ჯგუფების ხილვა", + "tool-link-emailuser": "{{GENDER:$1|მომხმარებლისთვის}} ი-მეილის მიწერა", "userpage": "გადახედე მომხმარებლის გვერდს", "projectpage": "დაათვალიერე პროექტის გვერდი", "imagepage": "ფაილის გვერდის ნახვა", @@ -387,7 +392,7 @@ "viewyourtext": "თქვენ შეგიძლიათ იხილოთ და დააკოპიროთ <strong>თქვენი რედაქტირებების</strong> საწყისი ტექსტი ამ გვერდზე:", "protectedinterface": "ეს გვერდი წარმოადგენს ტექსტურ ინტერფეისს პროგრამული უზრუნველყოფისათვის და დაცულია ვანდალიზმის აღკვეთის მიზნით.", "editinginterface": "'''ყურადღება:''' თქვენ არედაქტირებთ გვერდს, რომელიც პროგრამის ინტერფეისის ტექსტს შეიცავს. \nამ გვერდზე განხორციელებული რედაქტირება გამოიწვევს ამ ვიკის სხვა მომხმარებელთა სამუშაო ინტერფეისის შეცვლასაც. \nიმისათვის, რომ დაამატოთ ან შეცვალოთ თარგმანები ყველა ვიკიში, გთხოვთ, გამოიყენოთ მედიავიკის ლოკალიზაციის პროექტი [https://translatewiki.net/ translatewiki.net].", - "translateinterface": "თარგმანების ყველა ვიკიში დასამატებლად ან შესაცვლელად, გთხოვთ გამოიყენოთ მედიავიკებისლოკალიზაციის პროექტი [https://translatewiki.net/ translatewiki.net].", + "translateinterface": "თარგმანების ყველა ვიკიში დასამატებლად ან შესაცვლელად, გთხოვთ გამოიყენოთ მედიავიკების ლოკალიზაციის პროექტი [https://translatewiki.net/ translatewiki.net].", "cascadeprotected": "ეს გვერდი რედაქტირებისგან დაცულია, რადგან იგი ჩართულია შემდეგ {{PLURAL:$1|გვერდში, რომლის|გვერდებში, რომელთა}} დასაცავადაც ჩართულია პარამეტრი \"იერარქიული\":\n$2", "namespaceprotected": "თქვენ არ გაქვთ '''$1''' სახელთა სივრცეში გვერდების რედაქტირების უფლება.", "customcssprotected": "თქვენ არ გაქვთ ამ CSS გვერდის რედაქტირების უფლება, ვინაიდან ის სხვა მომხმარებლის პირად კონფიგურაციას შეიცავს.", @@ -433,19 +438,12 @@ "login": "შესვლა", "login-security": "დაადასტურეთ იდენტიფიკაცია", "nav-login-createaccount": "შესვლა / რეგისტრაცია", - "userlogin": "შესვლა/ანგარიშის შექმნა", - "userloginnocreate": "შესვლა", "logout": "გასვლა", "userlogout": "გასვლა", "notloggedin": "შესული არ ხართ", "userlogin-noaccount": "არ გაქვთ ანგარიში?", "userlogin-joinproject": "შეუერთდით პროექტს {{SITENAME}}", - "nologin": "ჯერ არ ხართ რეგისტრირებული? '''$1'''.", - "nologinlink": "გახსენით ანგარიში", "createaccount": "გახსენი ანგარიში", - "gotaccount": "უკვე რეგისტრირებული ხართ? '''$1'''", - "gotaccountlink": "შესვლა", - "userlogin-resetlink": "ავტორიზაციის მონაცემები დაგავიწყდათ?", "userlogin-resetpassword-link": "დაგავიწყდათ პაროლი?", "userlogin-helplink2": "დახმარება:შესვლა", "userlogin-loggedin": "თქვენ უკვე შეხვედით როგორც {{GENDER:$1|$1}}.\nგამოიყენეთ ფორმა ქვემოთ, რათა შეხვიდეთ სხვა ანგარიშიდან.", @@ -458,7 +456,6 @@ "createaccountmail": "გამოიყენეთ შემთხვევითობის მეთოდით შერჩეული დროებითი პაროლი და გააგზავნეთ მითითებულ ელ.ფოსტის მისამართზე", "createaccountmail-help": "შეიძლება იქნას გამოყენებული სხვისი პირონების ანგარიშის შექმნისთვის მისი პაროლის ცოდნის გარეშე", "createacct-realname": "ნამდვილი სახელი (არააუცილებელი)", - "createaccountreason": "მიზეზი:", "createacct-reason": "მიზეზი", "createacct-reason-ph": "რატომ ქმნით ახალ ანგარიშს?", "createacct-reason-help": "მესიჯი რომელიც გამოჩნდება ანგარიშის შექმის აღრიცხვის ჟურნალში", @@ -738,7 +735,7 @@ "contentmodelediterror": "არ შეგიძლიათ ამ ვერსიის რედაქტირება, რადგან მისი კონტენტის მოდელი არის <code>$1</code>, რაც განსხვავდება გვერდის მიმდინარე კონტენტის მოედლისაგან <code>$2</code>.", "recreate-moveddeleted-warn": "'''გაფრთხილება: თქვენ ხელახლა ქმნით გვერდს, რომელიც ადრე წაიშალა.'''\n\nგთხოვთ დაფიქრდეთ, მისაღები არის თუ არა ამ გვერდის რედაქტირების გაგრძელება.\nინფორმაციისთვის ქვემოთ მოყვანილია ამ გვერდის წაშლის ისტორია:", "moveddeleted-notice": "ეს გვერდი წაიშალა. ინფორმაციის მისაღებად ქვემოთ წარმოდგენილია შესაბამისი ჩანაწერები წაშლისა და გადარქმევის ჟურნალებიდან.", - "moveddeleted-notice-recent": "ბოდიში, ეს გვერდი წაშლილია (ბოლო 24 საათის განმავლობაში).\nწაშლისა და გადატანის ჟურნალი ქმენოთ არის მოცემული.", + "moveddeleted-notice-recent": "სამწუხაროდ, ეს გვერდი წაშლილია (ბოლო 24 საათის განმავლობაში).\nწაშლისა და გადატანის ჟურნალი ქვემოთ არის მოცემული.", "log-fulllog": "ყველა ჟურნალის ხილვა", "edit-hook-aborted": "შესწორება გაუქმებულია გადამჭერით.\nდამატებითი ახსნა არ ჩაწერილა.", "edit-gone-missing": "გვერდის განახლეა შეუძლებელია.\nშესაძლოა, იგი წაიშალა.", @@ -1094,10 +1091,12 @@ "prefs-tabs-navigation-hint": "რჩევა: თქვენ შეგიძლიათ გამოიყენოთ ისრის კლავიშები მარცხნივ ან მარჯვნივ ჩანართებსა და ჩანართბის სიას შორის არსებული გადასვლებისათვის", "userrights": "მომხმარებელთა უფლებების მართვა", "userrights-lookup-user": "მომხმარებელთა ჯგუფების მართვა", - "userrights-user-editname": "შეიტანეთ მომხმარებლის სახელი:", + "userrights-user-editname": "შეიყვანეთ მომხმარებლის სახელი:", "editusergroup": "{{GENDER:$1|მომხმარებელთა}} ჯგუფების რედაქტირება", "editinguser": "უფლებების შეცვლა {{GENDER:$1|მომხმარებლისთვის}} <strong>[[User:$1|$1]]</strong> $2", + "viewinguserrights": "{{GENDER:$1|მომხმარებლის}} უფლებების ხილვა <strong>[[User:$1|$1]]</strong> $2", "userrights-editusergroup": "დაარედაქტირეთ მომხმარებელთა ჯგუფები", + "userrights-viewusergroup": "{{GENDER:$1|მომხმარებლის}} ჯგუფების ხილვა", "saveusergroups": "{{GENDER:$1|მომხმარებელთა}} ჯგუფების შენახვა", "userrights-groupsmember": "ჯგუფის წევრი:", "userrights-groupsmember-auto": "ნაგულისხმევი წევრი:", @@ -1304,6 +1303,7 @@ "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (იხ. აგრეთვე [[Special:NewPages|ახალი გვერდების სია]])", "recentchanges-legend-plusminus": "(<em>±123</em>)", "recentchanges-submit": "ჩვენება", + "rcfilters-highlightmenu-title": "ფერის არჩევა", "rcnotefrom": "ქვემოთ {{PLURAL:$5|ნაჩვენებია ცვლილება|ნაჩვენებია ცვლილებები}} <strong>$3, $4</strong>-დან (ნაჩვენებია არაუმეტეს <strong>$1</strong>).", "rclistfrom": "ახალი ცვლილებების ჩვენება დაწყებული $3 $2-დან", "rcshowhideminor": "მცირე რედაქტირების $1", @@ -1437,7 +1437,7 @@ "uploaded-setting-handler-svg": "SVG, რომელიც სვავს \"handler\" ატრიბუტს remote/data/script-ით, დაბლკილია. ნაპოვნია <code>$1=\"$2\"</code> ატვირთულ SVG ფაილში.", "uploaded-remote-url-svg": "SVG, რომელიც სვავს რომელიმე სტილის ატრიბუტს დაშორებული URL-თი, დაბლოკილია. ნაპოვნია <code>$1=\"$2\"</code> ატვირთულ SVG ფაილში.", "uploaded-image-filter-svg": "ნაპოვნია სურათის ფილტრი URL-ით: <code><$1 $2=\"$3\"></code> ატვირთულ SVG ფაილში.", - "uploadscriptednamespace": "ეს SVG ფაილი შეიცავს სახელთა არაკორექტულ სივრცეს \"$1\".", + "uploadscriptednamespace": "ეს SVG ფაილი შეიცავს სახელთა არაკორექტულ სივრცეს \"<nowiki>$1</nowiki>\".", "uploadinvalidxml": "XML ჩატვირთულ ფაილში არ შეიძლება იყოს ანალიზირებული", "uploadvirus": "ფაილი ვირუსს შეიცავს! დეტალები: $1", "uploadjava": "ეს არის ZIP-ფაილი, რომელიც ჯავას CLASS-ფაილს შეიცავს.\nჯავა-ფაილების ატვირთვა დაუშვებელია, ვინაიდან მათ შესაძლოა შეზღუდონ უსაფრთხოება.", @@ -1781,7 +1781,7 @@ "querypage-disabled": "ეს სპეცგვერდი გამორთულია წარმადობის გასაზრდელად.", "apihelp": "API დახმარება", "apihelp-no-such-module": "მოდული „$1“ ვერ მოიძებნა.", - "apisandbox": "API-ს სავარჯიშო", + "apisandbox": "API-ის სავარჯიშო", "apisandbox-jsonly": "API-ის სავარჯიშოს გამოსაყენებლად საჭიროა JavaScript.", "apisandbox-api-disabled": "API ამ საიტზე გამორთულია.", "apisandbox-intro": "გამოიყენეთ ეს გვერდი, თუ გსურთ მოსინჯოთ <strong>MediaWiki web service API</strong>.\nიხილეთ [[mw:API:Main page|API დოკუმენტაცია]] სხვა დეტალებისათვის.\nმაგალითი: [https://www.mediawiki.org/wiki/API#A_simple_example მიიღეთ მთავარი გვერდის შინაარსი]. შეგიძლიათ ნახოთ სხვა მაგალითებიც.\n\nგაითვალისწინეთ, რომ თუმცა ეს სავარჯიშოა, თქვენმა მოქმედებამ შესაძლოა შეცვალოს ვიკის გვერდი.", @@ -1915,8 +1915,8 @@ "trackingcategories-disabled": "კატეგორია გამორთულია", "mailnologin": "გამგზავნი მისამართი არ არის მითითებული.", "mailnologintext": "თქვენ უნდა [[Special:UserLogin|წარადგენილი იყოთ სისტემისადმი]] და გქონდეთ წესიერი ელექტრონული ფოსტის მისამართი თქვენს [[Special:Preferences|კონფიგურაციაში]] იმისთვის, რომ გაუგზავნოთ წერილების სხვა მომხმარებლებს.", - "emailuser": "გაუგზავნეთ იმეილი ამ მომხმარებელს", - "emailuser-title-target": "ელ. ფოსტის მიწერა {{GENDER:$1|მომხმარებელთან}}", + "emailuser": "მომხმარებლისთვის ი-მეილის მიწერა", + "emailuser-title-target": "{{GENDER:$1|მომხმარებლისთვის}} ელ.ფოსტის მიწერა", "emailuser-title-notarget": "ელ. ფოსტის გაგზავნა მომხმარებელთან", "emailpagetext": "თუ ამ მომხმარებელმა თავის პარამეტრებში ელ. ფოსტის მოქმედი მისამართი მიუთითა, ქვემოთ მოყვანილი ფორმის შევსებისას შეგიძლიათ {{GENDER:$1|მისთვის}} შეტყობინების გაგზავნა. ელ. ფოსტის მისამართი, რომელიც [[Special:Preferences|თქვენს პარამეტრებში]] მიუთითეთ, დაფიქსირდება „გამომგზავნის“ ველში, რათა ადრესატმა პასუხის გაცემა შეძლოს.", "defemailsubject": "ელ-ფოსტა საიტის {{SITENAME}} მომხმარებლისგან „$1“", @@ -3506,7 +3506,6 @@ "logentry-tag-update-revision": "$1 {{GENDER:$2|განაახლა}} დასათაურება $4 ვერსიასთან $3 გვერდთან ({{PLURAL:$7|დამატებული}} $6; {{PLURAL:$9|წაშლილი}} $8)", "logentry-tag-update-logentry": "$1 {{GENDER:$2|განაახლა}} დასათაურება $5 ჟურნალის ჩანაწერთან $3 გვერდთან ({{PLURAL:$7|დამატებული}} $6; {{PLURAL:$9|წაშლილი}} $8)", "rightsnone": "(არცერთი)", - "revdelete-summary": "ცვლილებების აღწერა", "feedback-adding": "თქვენი შეფასების შენახვა...", "feedback-back": "უკან", "feedback-bugcheck": "კარგია! გთხოვთ, კიდევ ერთხელ შეამოწმეთ, ხომ არ არის აქ რომელიმე უკვე [$1 ნაცნობი შეცდომა].", @@ -3529,57 +3528,14 @@ "feedback-thanks": "გმადლობთ! თქვენი შეფასება განთავსებულია „[$2 $1]“ გვერდზე.", "feedback-thanks-title": "გმადლობთ!", "feedback-useragent": "მომხმარებლის აგენტი:", - "searchsuggest-search": "ძიება", + "searchsuggest-search": "ძიება პროექტში {{grammar:prepositional|{{SITENAME}}}}", "searchsuggest-containing": "შეიცავს...", - "api-error-autoblocked": "თქვენი IP მისამართი ავტომატურად დაიბლოკა, რადგან ის გამოიყენა დაბლოკილმა მომხმარებელმა.", - "api-error-badaccess-groups": "თქვენ არ გაქვთ ამ ვიკიში ფაილების ატვირთვის უფლება.", "api-error-badtoken": "შიდა შეცდომა: ცუდი ტოკენი.", - "api-error-blocked": "თქვენთვის რედაქტირება დაბლოკილია.", - "api-error-copyuploaddisabled": "ამ სერვერზე URL-მისამართის საშუალებით ატვირთვა გამორთულია.", - "api-error-duplicate": "საიტზე უკვე {{PLURAL:$1|არსებობს სხვა ფაილი|არსებობს სხვა ფაილები}} ანალოგიური შინაარსით.", - "api-error-duplicate-archive": "საიტზე ადრე {{PLURAL:$1|უკვე იყო ფაილი}} ანალოგიური შინაარსით, მაგრამ {{PLURAL:$1|ის წაიშალა|ისინი წაიშალა}}.", - "api-error-empty-file": "არჩეული ფაილი ცარიელია.", "api-error-emptypage": "ახალი, ცარიელი გვერდების შექმნა აკრძალულია.", - "api-error-fetchfileerror": "შიდა შეცდომა: ფაილის მიღებისას მოხდა რაღაც შეცდომა.", - "api-error-fileexists-forbidden": "ფაილი სახელით „$1“ უკვე არსებობს და მისი გადაწერა შეუძლებელია.", - "api-error-fileexists-shared-forbidden": "ფაილი სახელით „$1“ უკვე არსებობს საერთო ფაილების საცავში და გადაწერა შეუძლებელია.", - "api-error-file-too-large": "არჩეული ფაილი ძალიან დიდია.", - "api-error-filename-tooshort": "ფაილის სახელი ზედმეტად მოკლეა", - "api-error-filetype-banned": "ფაილის ეს ტიპი აკრძალულია", - "api-error-filetype-banned-type": "$1 {{PLURAL:$4|მიუღებელი ფაილის ტიპია|მიუღებელი ფაილის ტიპებია}}. მისაღებიი ფაილის {{PLURAL:$3|ტიპია|ტიპებია}} $2.", - "api-error-filetype-missing": "ფაილს აკლია გაფართოვება.", - "api-error-hookaborted": "თქვენ მიერ შემოთავაზებული ცვლილება მოინიშნა გაფართოების დოკუმენტაციაში.", - "api-error-http": "აღმოჩენილია შეცდომა სერვერთან დაკავშირებისას.", - "api-error-illegal-filename": "ფაილის ეს სახელი აკრძალულია.", - "api-error-internal-error": "შიდა შეცდომა: ვიკიში თქვენი ატვირთვის დამუშავებისას მოხდა შეცდომა.", - "api-error-invalid-file-key": "სერვერმა ვერ იპოვა თქვენ მიერ მითითებული ფაილი", - "api-error-missingparam": "შიდა შეცდომა: მოთხოვნილი პარამეტრები დაიკარგა.", - "api-error-missingresult": "შიდა შეცდომა. ვერ მოხერხდა იმის დადგენა, იყო თუ არა კოპირება წარმატებული.", - "api-error-mustbeloggedin": "ფაილების ასატვირთად თქვენ უნდა შეხვიდეთ სისტემაში.", - "api-error-mustbeposted": "პროგრამული შეცდომა; გამოყენებულია არასწორი HTTP-მეთოდი.", - "api-error-noimageinfo": "ატვირთვა წარმატებით განხორციელდა, მაგრამ სერვერმა არ აჩვენა ფაილის შესახებ არანაირი ინფორმაცია.", - "api-error-nomodule": "შიდა შეცდომა. ატვირთვის მოდული არ არის კონფიგურირებული.", - "api-error-ok-but-empty": "შიდა შეცდომა. სერვერს არ დაუბრუნებია ინფორმაცია ატვირთვადი ფაილის შესახებ.", - "api-error-overwrite": "არსებული ფაილის შეცვლა მიუღებელია.", - "api-error-stashfailed": "შიდა შეცდომა: სერვერმა ვერ შეძლო დროებითი ფაილის შენახვა.", "api-error-publishfailed": "შიდა შეცდომა: სერვერმა ვერ შეძლო დროებითი ფაილის შენახვა.", - "api-error-stasherror": "ფაილის ჩატვირთვისას საცავში მოხდა შეცდომა", - "api-error-stashedfilenotfound": "დროებითი საცავიდან ფაილის ჩატვირთვისას საწყისი ფაილი არ იქნა ნაპოვნი", - "api-error-stashpathinvalid": "გზა, რომელზედაც უნდა იყოს განლაგებული ფაილი, ჩატვირთული დროებით საცავში, არაკორექტულია", - "api-error-stashfilestorage": "ფაილის ჩატვირთვისას დროებით საცავში მოხდა შეცდომა.", - "api-error-stashzerolength": "სერვერს არ შეუძლია შეინახოს ფაილი დროებით საცავში, რამეთუ მას აქვს ნულოვანი სიგრძე", - "api-error-stashnotloggedin": "თქვენ უნდა შეხვიდეთ სისტემაში, რათა გქონდეთ შესაძლებლობა ფაილის შეინახვისა დროებით საცავში", - "api-error-stashwrongowner": "ფაილი, რომლის გახსნასაც ცდილობდით დროებით საცავში, თქვენ არ გეკუთვნით", - "api-error-stashnosuchfilekey": "ფაილის გასაღები, რომელთანაც ცდილობდით წვდომას დროებით საცავში, არ არსებობს", - "api-error-timeout": "სერვერმა არ მოახდინა რეაგირება მოსალოდნელ დროში.", - "api-error-unclassified": "აღმოჩენილია უცნობი შეცდომა.", - "api-error-unknown-code": "უცნობი შეცდომა : „$1“", - "api-error-unknown-error": "შიდა შეცდომა: ფაილის ატვირთვისას აღმოჩენილია უცნობი შეცდომა.", + "api-error-stashfailed": "შიდა შეცდომა: სერვერმა ვერ შეძლო დროებითი ფაილის შენახვა.", "api-error-unknown-warning": "უცნობი გაფრთხილება: „$1“.", "api-error-unknownerror": "უცნობი შეცდომა: „$1“.", - "api-error-uploaddisabled": "ატვირთვის მექანიზმი ამ ვიკიზე გამორთულია", - "api-error-verification-error": "ეს ფაილი ან რაიმე შეცდომას შეიცავს, ან არ აქვს სახელის გაფართოება.", - "api-error-was-deleted": "ფაილი ამ სახელწოდებით ადრე აიტვირთა და შემდეგ წაიშალა.", "duration-seconds": "$1 {{PLURAL:$1|წამი|წამი}}", "duration-minutes": "$1 {{PLURAL:$1|წუთი|წუთი}}", "duration-hours": "$1 {{PLURAL:$1|საათი|საათი}}", diff --git a/languages/i18n/khw.json b/languages/i18n/khw.json index 5ff8194445..2f4c06a956 100644 --- a/languages/i18n/khw.json +++ b/languages/i18n/khw.json @@ -606,8 +606,6 @@ "saveprefs": "محفوظ", "restoreprefs": "تمام بےنقص ترتیباتن بحال کورے", "prefs-editing": "تدوین", - "rows": "صف:", - "columns": "قطار:", "searchresultshead": "Search/تلاش", "stub-threshold-disabled": "غیر فعال", "timezonelegend": "وختو زون", diff --git a/languages/i18n/kiu.json b/languages/i18n/kiu.json index 1580a47918..1b03b32668 100644 --- a/languages/i18n/kiu.json +++ b/languages/i18n/kiu.json @@ -8,7 +8,8 @@ "아라", "Macofe", "Kumkumuk", - "Asmen" + "Asmen", + "Gırd" ] }, "tog-underline": "Bınê gırey de xete bonce:", @@ -426,7 +427,7 @@ "hiddencategories": "Na pele mensuba {{PLURAL:$1|1 kategoriya nımıtiya|$1 kategoriunê nımıtuna}}:", "permissionserrors": "Xetê desturi", "permissionserrorstext-withaction": "Desturê to be $2 çino, serba {{PLURAL:$1|na sebebi|nê sebebu}} ra:", - "recreate-moveddeleted-warn": "'''Hişyari: no pel o ke şıma vırazeni vere cû vırazyayo.'''\n\nDiqet bıkeri no vurnayişê şıma re gerek esto:", + "recreate-moveddeleted-warn": "'''Hişyari: na perra ke şıma vırazenê verê cı vıraziyayo.'''\n\nŞıma diqat bıkerê no vırnayışê şıma gani bêro akerdış:", "moveddeleted-notice": "Ma ena pele wederna.\nQe referansi logê wedernayışi bın de mocnayiya.", "edit-conflict": "Têverabiyayena vurnayişi.", "post-expand-template-inclusion-warning": "'''Teme''': Zerrekê şabloni zaf gırso.\nTaê şabloni ilawe nêbenê.", @@ -557,8 +558,6 @@ "prefs-rendering": "Asais", "saveprefs": "Qeyd ke", "prefs-editing": "Vurnais", - "rows": "Rêji:", - "columns": "Ustıni:", "searchresultshead": "Cıcêre", "stub-threshold": "Tertibê şêmıga <a href=\"#\" class=\"stub\">stub link</a> (''bytes''):", "recentchangesdays": "Rozê ke vurnaisunê peyênun de asenê:", @@ -662,7 +661,7 @@ "rcshowhidebots": "Botu $1", "rcshowhideliu": "karberê qeydbiyayeyi $1", "rcshowhideanons": "$1 karberê anonimi", - "rcshowhidepatr": "Vurnayışê cıyê vênıtey $1", + "rcshowhidepatr": "Vırnayışê cıyê vênıtey $1", "rcshowhidemine": "Vurnayisanê mı $1", "rclinks": "Peyniya $2 rozu de $1 vurnayisu bıasne <br />$3", "diff": "ferq", diff --git a/languages/i18n/kk-cyrl.json b/languages/i18n/kk-cyrl.json index f7ad3d9f6a..5829ad700b 100644 --- a/languages/i18n/kk-cyrl.json +++ b/languages/i18n/kk-cyrl.json @@ -949,8 +949,6 @@ "saveprefs": "Сақтау", "restoreprefs": "Барлығын бастапқы баптауларға қайтару (барлық бөлімдердегі)", "prefs-editing": "Өңдеу", - "rows": "Жолдар:", - "columns": "Бағандар:", "searchresultshead": "Іздеу", "stub-threshold": "Бастама сілтемесін пішімдеу табалдырығы ($1):", "stub-threshold-sample-link": "қарапайым", @@ -1320,7 +1318,7 @@ "uploaddisabledtext": "Файл жүктеу өшірілген.", "php-uploaddisabledtext": "PHP-де файл жүктеулері өшірілген.\nfile_uploads баптауын тексеріңіз.", "uploadscripted": "Бұл файлда веб шолғышты қателікпен талдатқызатын HTML не әмір коды бар.", - "uploadscriptednamespace": "Бұл SVG файл дұрыс емес «$1» есім кеңістігінен тұрады.", + "uploadscriptednamespace": "Бұл SVG файл дұрыс емес «<nowiki>$1</nowiki>» есім кеңістігінен тұрады.", "uploadinvalidxml": "Жүктелген файлдағы XML талданбайды.", "uploadvirus": "Бұл файлда вирус бар! Егжей-тегжейлері: $1", "uploadjava": "ZIP файл Java . түріндегі файлдан тұрады.\nJava файлдарды жүктеу рұқсат етілмейді, себебі құпиялық шектеулерге айналуына себеп болады.", @@ -3285,51 +3283,12 @@ "feedback-useragent": "Қатысушы агент:", "searchsuggest-search": "{{SITENAME}} жобасынан іздеу", "searchsuggest-containing": "қамтылуда...", - "api-error-badaccess-groups": "Сізге бұл уикиге файл жүктеуге рұқсат етілмеген.", "api-error-badtoken": "Ішкі қате: Жаман байрақша", - "api-error-copyuploaddisabled": "URL бойынша жүктеу бұл серверде өшірілген", - "api-error-duplicate": "{{PLURAL:$1|басқа [$2 файл]|кейбір [$2 басқа файл]}} әлеқашан сайтта ,бірдей мазмұнда бар.", - "api-error-empty-file": "Сіз жіберген файл бос.", "api-error-emptypage": "Бос бетті жаңадан бастау рұқсат етілмейді.", - "api-error-fetchfileerror": "Ішкі қателік: Файлды алу барысында қате кетті.", - "api-error-fileexists-forbidden": "\"$1\" атауымен файл әлдеқашан бар және үстінен жазылмайды.", - "api-error-fileexists-shared-forbidden": "\"$1\" атауымен файл ортаққорда әлдеқашан бар және үстінен жазылмайды.", - "api-error-file-too-large": "Сіз жіберген файл тым үлкен.", - "api-error-filename-tooshort": "Файл атауы тым қысқа", - "api-error-filetype-banned": "Бұл файл түрі тыйым салынған.", - "api-error-filetype-banned-type": "$1 {{PLURAL:$4|рұқсат етілмеген файл түрі|рұқсат етілмеген файл түрі}}. Рұқсат етілген {{PLURAL:$3|файл түрі|файл түрлері}}: $2.", - "api-error-filetype-missing": "Файл атауы кеңейтілім қажет етеді.", - "api-error-hookaborted": "Сіз жасамақ болған түрлендірім кеңейтілім арқылы тоқтатылды.", - "api-error-http": "Ішкі қате: Серверге қосылу қолайсыз.", - "api-error-illegal-filename": "Файл атауы рұқсат етілмеген.", - "api-error-internal-error": "Ішкі қателік: Уикидегі жүктеу барысында қате кетті", - "api-error-invalid-file-key": "Ішкі қате: Файл уақытша сақтағыштан табылмады.", - "api-error-missingparam": "Ішкі қате: Ұсынылған параметрлерді қажет етеді", - "api-error-missingresult": "Ішкі қателік: Есе сәтті болғанын анықтамады.", - "api-error-mustbeloggedin": "Файлдар жүктеу үшін кіруіңіз қажет", - "api-error-mustbeposted": "Ішкі қателік: Сұраныс HTTP POST қажет етеді.", - "api-error-noimageinfo": "Жүктеу сәтті болды, бірақ бізге файл туралы қандай да бір мәліметті сервер бере алмады.", - "api-error-nomodule": "Ішкі қателік: Жүктеу модуль жиынтығы жоқ.", - "api-error-ok-but-empty": "Ішкі қателік: Серверден жауап жоқ.", - "api-error-overwrite": "Бар файлды ауыстыру рұқсат етілмейді.", - "api-error-stashfailed": "Ішкі қателік: Сервер уақытша файлды сақтамады.", "api-error-publishfailed": "Ішкі қателік: Сервер уақытша файлды жарияламады.", - "api-error-stasherror": "Сақтау орнына файлды жүктеу кезінде қате болды.", - "api-error-stashedfilenotfound": "Уақытша қоймадағы файлды жүктемекші болған кезде бастапқы файл табылмады.", - "api-error-stashpathinvalid": "Уақытша қоймада жүктелген файл табылуға тиіс болған жол жарамсыз.", - "api-error-stashfilestorage": "Файлды уақытша қоймаға жүктеу барысында қате болды.", - "api-error-stashzerolength": "Сервер файлды уақытша қорға сақтай алмайды, себебі ұзындығы нөдге тең.", - "api-error-stashnotloggedin": "Жүктеу қоймасына сақтау үшін сіздің кіруіңіз керек.", - "api-error-stashwrongowner": "Сіз қатынамақшы болған қордағы файл сізге қарасты емес.", - "api-error-stashnosuchfilekey": "Сіз қатынамақшы болған қордағы файл құпия сөзі жоқ.", - "api-error-timeout": "Сервер межелеген мерзімде жауап бермеді.", - "api-error-unclassified": "Белгісіз қателік орын алды.", - "api-error-unknown-code": "Белгісіз қате: \"$1\".", - "api-error-unknown-error": "Ішкі қателік: Сіздің файлыңызды жүктеу барысында қате кетті.", + "api-error-stashfailed": "Ішкі қателік: Сервер уақытша файлды сақтамады.", "api-error-unknown-warning": "Белгісіз ескерту: \"$1\".", "api-error-unknownerror": "Белгісіз қате: \"$1\".", - "api-error-uploaddisabled": "Бұл уикиде жүктеп беру өшірілген.", - "api-error-verification-error": "Бұл файл бүлінген болуы мүмкін немесе теріс кеңейтуі бар.", "duration-seconds": "$1 {{PLURAL:$1|секунд|секунд}}", "duration-minutes": "$1 {{PLURAL:$1|минут|минут}}", "duration-hours": "$1 {{PLURAL:$1|сағат|сағат}}", diff --git a/languages/i18n/km.json b/languages/i18n/km.json index 89564eb011..9724c72f74 100644 --- a/languages/i18n/km.json +++ b/languages/i18n/km.json @@ -16,7 +16,8 @@ "វ័ណថារិទ្ធ", "아라", "Macofe", - "Dcljr" + "Dcljr", + "Aefgh39622" ] }, "tog-underline": "គូសបន្ទាត់ក្រោម​តំណភ្ជាប់៖", @@ -43,7 +44,7 @@ "tog-enotifminoredits": "ផ្ញើអ៊ីមែល​មកខ្ញុំពេលមានបន្លាស់ប្ដូរតិចតួច​លើទំព័រឬឯកសារផងដែរ​", "tog-enotifrevealaddr": "បង្ហាញ​អាសយដ្ឋានអ៊ីមែល​របស់ខ្ញុំ​ក្នុង​​អ៊ីមែល​ក្រើនរំលឹក​", "tog-shownumberswatching": "បង្ហាញ​ចំនួនអ្នកប្រើប្រាស់​ដែលតាមដាន​ទំព័រនេះ", - "tog-oldsig": "ហត្ថលេខាមានហើយ៖", + "tog-oldsig": "ហត្ថលេខាដែលអ្នកមានហើយ៖", "tog-fancysig": "ចុះហត្ថលេខា​ជា​អត្ថបទវិគី​ (ដោយ​គ្មានតំណភ្ជាប់​ស្វ័យប្រវត្តិ)", "tog-uselivepreview": "ប្រើប្រាស់​ការមើលមុនរហ័ស", "tog-forceeditsummary": "សូមរំលឹកខ្ញុំ​កាលបើខ្ញុំទុកប្រអប់ចំណារពន្យល់ឱ្យនៅទំនេរ", @@ -59,7 +60,7 @@ "tog-showhiddencats": "បង្ហាញចំណាត់ថ្នាក់ក្រុមដែលត្រូវបានលាក់", "tog-norollbackdiff": "បំភ្លេច​ភាព​ខុស​គ្នា​បន្ទាប់​ពី​អនុវត្តការ​ស្ដារវិញ", "tog-useeditwarning": "សូមព្រមាន​ខ្ញុំ​ ពេលដែលខ្ញុំ​ចាកចេញ​ពី​ទំព័រ​កែប្រែដោយមិន​បានរក្សា​ទុកបន្លាស់ប្ដូរ​នានា​", - "tog-prefershttps": "ប្រើប្រាស់ការតភ្ជាប់មានសុវត្ថិភាពជានិច្ចពេលកត់ឈ្មោះចូល", + "tog-prefershttps": "ប្រើប្រាស់ការតភ្ជាប់ដែលមានសុវត្ថិភាពជានិច្ចពេលកត់ឈ្មោះចូល", "underline-always": "ជានិច្ច", "underline-never": "កុំឲ្យសោះ", "underline-default": "តាមលំនាំដើមនៃ​កម្មវិធី​រុករក​", @@ -156,7 +157,7 @@ "morenotlisted": "បញ្ជីនេះមិនទាន់ពេញលេញទេ។", "mypage": "ទំព័រ​", "mytalk": "ការពិភាក្សា​", - "anontalk": "ទំព័រពិភាក្សាសំរាប់ IP នេះ", + "anontalk": "ការ​ពិភាក្សា", "navigation": "ការណែនាំ", "and": " និង", "qbfind": "ស្វែងរក", @@ -389,19 +390,12 @@ "externaldberror": "មាន​​បញ្ហាក្នុងការ​បញ្ជាក់​ផ្ទៀង​ផ្ទាត់​​មូលដ្ឋាន​ទិន្នន័យ​ ឬ​អ្នក​មិន​ត្រូវ​បាន​អនុញ្ញាត​ឲ្យ​បន្ទាន់​សម័យ​គណនី​ខាង​ក្រៅ​របស់​អ្នក​។​\n​", "login": "កត់ឈ្មោះចូល", "nav-login-createaccount": "កត់ឈ្មោះចូលឬបង្កើតគណនី", - "userlogin": "កត់ឈ្មោះចូលឬបង្កើតគណនី", - "userloginnocreate": "កត់ឈ្មោះចូល", "logout": "កត់ឈ្មោះចេញ", "userlogout": "កត់ឈ្មោះចេញ", "notloggedin": "មិនទាន់កត់ឈ្មោះចូល", "userlogin-noaccount": "តើលោកអ្នក​មិនទាន់មាន​គណនី​សម្រាប់​ប្រើ​ទេ​ឬ?", "userlogin-joinproject": "សូមចូលជាសមាជិក {{SITENAME}}", - "nologin": "​បើលោកអ្នក​មិនទាន់មាន​គណនី​សម្រាប់​ប្រើ​ទេ​ សូម'''$1''' ។", - "nologinlink": "បង្កើតគណនី", "createaccount": "បង្កើតគណនី", - "gotaccount": "បើលោកអ្នកមានគណនីសម្រាប់ប្រើហើយ សូម'''$1'''។", - "gotaccountlink": "កត់ឈ្មោះចូល", - "userlogin-resetlink": "តើអ្នកភ្លេចព័ត៌មានលម្អិតសម្រាប់កត់ឈ្មោះចូលហើយ?", "userlogin-resetpassword-link": "អ្នកភ្លេចពាក្យសម្ងាត់ហើយ?", "userlogin-helplink2": "ជំនួយលើការកត់ឈ្មោះចូល", "userlogin-loggedin": "អ្នកបានកត់ឈ្មោះចូលជា {{GENDER:$1|$1}} ហើយ។\nប្រើសំណុំបែបបទខាងក្រោមដើម្បីកត់ឈ្មោះចូលជាអ្នកប្រើប្រាស់ផ្សេងម្នាក់ទៀត។", @@ -412,7 +406,6 @@ "createacct-another-email-ph": "បញ្ចូលអាសយដ្ឋានអ៊ីមែល", "createaccountmail": "ប្រើប្រាស់ពាក្យសម្ងាត់ចៃដន្យបណ្ដោះអាសនុ្ន រួចផ្ញើវាទៅកាន់អាសយដ្ឋានអ៊ីមែលខាងក្រោម", "createacct-realname": "ឈ្មោះពិត (ដាក់ក៏បានមិនដាក់ក៏បាន)", - "createaccountreason": "មូលហេតុ៖", "createacct-reason": "មូលហេតុ", "createacct-reason-ph": "មូលហេតុដែលអ្នកចង់បង្កើតគណនីមួយទៀត", "createacct-submit": "បង្កើតគណនីរបស់អ្នក", @@ -431,7 +424,7 @@ "nocookieslogin": "{{SITENAME}}ប្រើខូឃីដើម្បីកត់ឈ្មោះចូល។\n\nអ្នកបានជ្រើសមិនប្រើខូឃី។​\n\nសូមជ្រើសប្រើខូឃីវិញ រួចព្យាយាមម្តងទៀត។", "nocookiesforlogin": "{{int:nocookieslogin}}", "noname": "អ្នកមិនបានផ្ដល់អត្តនាមត្រឹមត្រូវទេ។", - "loginsuccesstitle": "កត់ឈ្មោះចូលបានសម្រេច", + "loginsuccesstitle": "បានកត់ឈ្មោះចូលហើយ", "loginsuccess": "'''ពេលនេះអ្នកបានកត់ឈ្មោះចូល{{SITENAME}}ដោយប្រើឈ្មោះ \"$1\"ហើយ។'''", "nosuchuser": "មិនមានអ្នកប្រើដែលមានឈ្មោះ \"$1\" ទេ។\n\nសូម​ពិនិត្យ​ក្រែង​លោ​មានកំហុស​អក្ខរាវិរុទ្ធឬ [[Special:CreateAccount|បង្កើត​គណនី​ថ្មី]]។", "nosuchusershort": "គ្មានអ្នកប្រើដែលមានឈ្មោះ $1\" ទេ។\n\nសូម​ពិនិត្យ​​អក្ខរាវិរុទ្ធ​របស់អ្នក ។", @@ -485,7 +478,7 @@ "newpassword": "ពាក្យសម្ងាត់ថ្មី៖", "retypenew": "សូមវាយពាក្យសម្ងាត់ថ្មី​ម្តងទៀត៖", "resetpass_submit": "ដាក់ប្រើពាក្យសម្ងាត់និង​កត់ឈ្មោះចូល", - "changepassword-success": "ពាក្យសម្ងាត់របស់អ្នកត្រូវបានផ្លាស់ប្តូរបានសំរេចហើយ!", + "changepassword-success": "ពាក្យសម្ងាត់របស់អ្នកត្រូវបានផ្លាស់ប្តូរហើយ!", "changepassword-throttled": "អ្នកបានព្យាយាមកត់ឈ្មោះចូលជាប់ៗគ្នាច្រើនដងពេកហើយ។​\nសូមរង់ចាំរយៈពេល$1 មុនពេលសាកល្បងម្ដងទៀត។", "resetpass_forbidden": "ពាក្យសម្ងាត់មិនអាចផ្លាស់ប្តូរបានទេ", "resetpass-no-info": "អ្នក​ចាំបាច់​ត្រូវតែ​កត់ឈ្មោះចូល ដើម្បី​ចូលទៅកាន់​ទំព័រ​នេះ​ដោយផ្ទាល់​។", @@ -505,8 +498,6 @@ "passwordreset-emaildisabled": "មុខងារអ៊ីមែលត្រូវបានបិទមិនអោយប្រើនៅលើវិគីនេះ។", "passwordreset-username": "អត្តនាម៖", "passwordreset-domain": "ដូម៉ែន៖", - "passwordreset-capture": "មើលអ៊ីមែលលទ្ធផល?", - "passwordreset-capture-help": "ប្រសិនបើអ្នកគូសធីកប្រអប់នេះ អ៊ីមែល (ដែលមានពាក្យសម្ងាត់បណ្ដោះអាសន្ន) មិនត្រូវបានបង្ហាញដូចគ្នានឹងអ៊ីមែលដែលនឹងត្រូវផ្ញើទៅទៅកាន់អ្នកប្រើប្រាស់ដែរ។", "passwordreset-email": "អាសយដ្ឋានអ៊ីមែល៖", "passwordreset-emailtitle": "ព័ត៌មានលំអិតពីគណនីនៅលើ {{SITENAME}}", "passwordreset-emailtext-ip": "មាននរណាម្នាក់ (ប្រហែលជាខ្លួនអ្នកផ្ទាល់, មកពីអាស័យដ្ឋាន IP $1) បានស្នើសុំស្ដារពាក្យសម្ងាត់របស់អ្នកសម្រាប់ {{SITENAME}} ($4)។ {{PLURAL:$3|គណនី|គណនី}}អ្នកប្រើប្រាស់ដូចតទៅនេះ\nមានជាប់ទាក់ទិននឹងអាសយដ្ឋានអ៊ីមែលនេះ៖\n\n$2\n\n{{PLURAL:$3|ពាក្យសម្ងាត់បណ្ដោះអាសន្ននេះ|ពាក្យសម្ងាត់បណ្ដោះអាសន្នទាំងនេះ}} និងហួសសុពលភាពក្នុងរយៈពេល {{PLURAL:$5|មួយថ្ងៃ|$5 ថ្ងៃ}}។\nយកល្អអ្នកគួរតែកត់ឈ្មោះចូលរួចជ្រើសរើសពាក្យសម្ងាត់ថ្មីមួយ។ ប្រសិនបើមាននរណាម្នាក់ផ្សេងធ្វើការស្នើសុំនេះ \nឬប្រសិនបើអ្នកនឹកឃើញពាក្យសម្ងាត់ដើមរបស់អ្នក ហើយអ្នកមិនប្រាថ្នាផ្លាស់ប្ដូរវាទៀតទេនោះ អ្នកគ្រាន់តែ\nបំភ្លេចអំពីសារមួយនេះ ហើយបន្តប្រើប្រាស់ពាក្យសម្ងាត់ចាស់របស់អ្នកទៅបានហើយ។", @@ -852,8 +843,6 @@ "saveprefs": "រក្សាទុក", "restoreprefs": "ស្ដារ​ការកំណត់​ទាំងអស់​ទៅ​លំនាំដើម (គ្រប់ផ្នែកទាំងអស់)", "prefs-editing": "កំណែប្រែ", - "rows": "ជួរដេក៖", - "columns": "ជួរឈរ៖", "searchresultshead": "ស្វែងរក", "stub-threshold": "ទំហំអប្បបរមាសម្រាប់ដាក់ជាទម្រង់ទំព័រកំប៉ិចកំប៉ុក($1)៖", "stub-threshold-sample-link": "គំរូ", @@ -943,12 +932,9 @@ "userrights-reason": "មូលហេតុ៖", "userrights-no-interwiki": "អ្នកគ្មានការអនុញ្ញាតកែប្រែសិទ្ធិរបស់អ្នកប្រើប្រាស់លើវិគីផ្សេងទេ។", "userrights-nodatabase": "មូលដ្ឋានទិន្នន័យ $1 មិនមាន ឬ ស្ថិតនៅខាងក្រៅ។", - "userrights-nologin": "អ្នកត្រូវតែ [[Special:UserLogin|កត់ឈ្មោះចូល]]ដោយប្រើគណនីអ្នកអភិបាលដើម្បីផ្ដល់សិទ្ធិឱ្យអ្នកប្រើប្រាស់​។", - "userrights-notallowed": "លោកអ្នកគ្មានការអនុញ្ញាតដើម្បីបន្ថែមឬដកសិទ្ធិរបស់អ្នកប្រើប្រាស់ដទៃទេ។", "userrights-changeable-col": "ក្រុមនានាដែលអ្នកអាចផ្លាស់ប្ដូរបាន", "userrights-unchangeable-col": "ក្រុមនានាដែលអ្នកមិនអាចផ្លាស់ប្ដូរបាន", "userrights-conflict": "មានទំនាស់អំពីការកែប្រែសិទ្ធិអ្នកប្រើប្រាស់! សូមត្រួតពិនិត្យឡើងវិញរួចអះអាងពីការកែប្រែរបស់អ្នក។", - "userrights-removed-self": "អ្នកបានដកសិទ្ធិខ្លួនឯងបានសម្រេចហើយ។ ហេតុនេះ អ្នកមិនអាចចូលមើលទំព័រនេះតទៅទៀតទេ។", "group": "ក្រុម៖", "group-user": "អ្នកប្រើប្រាស់", "group-autoconfirmed": "អ្នកប្រើប្រាស់ទទួលស្គាល់ដោយស្វ័យប្រវត្តិ", @@ -1034,15 +1020,14 @@ "right-siteadmin": "ចាក់សោនិងបើកសោមូលដ្ឋានទិន្នន័យ", "right-override-export-depth": "នាំចេញទំព័ររួមទាំងទំព័រដែលមានភ្ជាប់តំណភ្ជាប់​រហូតដល់លំដាប់ទី៥", "right-sendemail": "ផ្ញើអ៊ីមែលទៅកាន់អ្នកប្រើដទៃ", - "right-passwordreset": "មើលអ៊ីមែលសំរាប់កំណត់ពាក្យសម្ងាត់ឡើងវិញ", "newuserlogpage": "កំណត់ហេតុនៃការបង្កើតគណនី", "newuserlogpagetext": "នេះជាកំណត់ហេតុនៃការបង្កើតអ្នកប្រើប្រាស់។", "rightslog": "កំណត់ហេតុនៃការប្តូរសិទ្ធិអ្នកប្រើប្រាស់", "rightslogtext": "នេះ​ជា​កំណត់ហេតុនៃបំលាស់ប្ដូរចំពោះកាប្ដូរក្រុមសមាជិកភាព​របស់​អ្នកប្រើប្រាស់។", "action-read": "អានទំព័រនេះ", "action-edit": "កែប្រែទំព័រនេះ", - "action-createpage": "បង្កើតទំព័រនានា", - "action-createtalk": "បង្កើតទំព័រពិភាក្សានានា", + "action-createpage": "បង្កើតទំព័រនេះ", + "action-createtalk": "បង្កើតទំព័រពិភាក្សានេះ", "action-createaccount": "បង្កើតគណនីអ្នកប្រើប្រាស់នេះ", "action-history": "មើលប្រវត្តិទំព័រនេះ", "action-minoredit": "ចំណាំកំណែប្រែនេះថាជាកំណែប្រែតិចតួច", @@ -2645,7 +2630,6 @@ "logentry-rights-autopromote": "$1 {{GENDER:$2|ត្រូវបានតំឡើង}}សមាជិកភាពពី $4 ជា $5 ដោយស្វ័យប្រវត្តិ", "logentry-upload-upload": "$1 {{GENDER:$2|បានផ្ទុកឡើង}} $3", "rightsnone": "(ទទេ)", - "revdelete-summary": "កែប្រែចំណារពន្យល់", "feedback-adding": "កំពុងបន្ថែមមតិយោបល់ទៅលើទំព័រ...", "feedback-cancel": "បោះបង់​", "feedback-close": "រួចរាល់", @@ -2659,31 +2643,9 @@ "feedback-thanks-title": "សូមអរគុណ!", "searchsuggest-search": "ស្វែងរក​", "searchsuggest-containing": "ដែលមានពាក្យ...", - "api-error-badaccess-groups": "អ្នកគ្មានការអនុញ្ញាតអោយផ្ទុកឯកសារឡើងទៅក្នុងវិគីនេះទេ។", - "api-error-empty-file": "ឯកសារដែលអ្នកបានដាក់ស្នើគឺទទេ។", "api-error-emptypage": "ការអនុញ្ញាតអោយបង្កើតទំព័រថ្មីដែលគ្មានសរសេរអ្វីទេ", - "api-error-fileexists-forbidden": "ឯកសារដែលមានឈ្មោះ \"$1\" មានរួចហើយ ហើយមិនអាចសរសេរជាន់ពីលើបានទេ។", - "api-error-fileexists-shared-forbidden": "ឯកសារដែលមានឈ្មោះ \"$1\" មានរួចហើយនៅក្នុងថតឯកសាររួម ហើយមិនអាចសរសេរជាន់ពីលើបានទេ។", - "api-error-file-too-large": "ឯកសារដែលអ្នកបានដាក់ស្នើធំពេកហើយ។", - "api-error-filename-tooshort": "ឈ្មោះឯកសារខ្លីពេកហើយ។", - "api-error-filetype-banned": "ឯកសារប្រភេទនេះត្រូវបានហាមប្រាម។", - "api-error-filetype-banned-type": "$1 {{PLURAL:$4|មិនមែនជា​ប្រភេទ​ឯកសារ​ដែល​ត្រូវ​បាន​គេ​អនុញ្ញាត​ទេ|មិនមែនជា​ប្រភេទ​ឯកសារ​ដែល​ត្រូវ​បាន​គេ​អនុញ្ញាត​ទេ​}}។\n{{PLURAL:$3|ប្រភេទឯកសារ​|ប្រភេទឯកសារ​}}ដែល​ត្រូវ​បាន​គេ​អនុញ្ញាត​គឺ $2 ។", - "api-error-filetype-missing": "ឈ្មោះឯកសារបាត់កន្ទុយ។", - "api-error-http": "បញ្ហាខាងក្នុង៖ មិនអាចភ្ជាប់ទោកាន់ម៉ាស៊ីនបំរើការ។", - "api-error-illegal-filename": "មិនអនុញ្ញាតអោយប្រើឈ្មោះឯកសារនេះ។", - "api-error-internal-error": "បញ្ហាខាងក្នុង៖ មានបញ្ហាណាមួយកើតឡើងពេលកំពុងដំណើរការផ្ទុកឯកសារអ្នកឡើងទៅក្នុងវិគី។", - "api-error-missingresult": "បញ្ហាខាងក្នុង៖ មិនអាចកំណត់បានថាការថតចំលងបានសំរេចទេ។", - "api-error-mustbeloggedin": "អ្នកត្រូវតែកត់ឈ្មោះចូលដើម្បីផ្ទុកឯកសារឡើង។", - "api-error-ok-but-empty": "បញ្ហាខាងក្នុង៖ គ្មានចម្លើយពីម៉ាស៊ីនបម្រើការ។", - "api-error-overwrite": "មិនអនុញ្ញាតអោយសរសេរជាន់ពីលើឯកសារដែលមានស្រាប់ហើយ។", - "api-error-timeout": "ម៉ាស៊ីនបំរើការមិនបានឆ្លើយតបក្នុងរយៈពេលដែលយើងរំពឹងទុក។", - "api-error-unclassified": "បញ្ហាមិនស្គាល់មួយបានកើតឡើង។", - "api-error-unknown-code": "បញ្ហាមិនស្គាល់៖ \"$1\" ។", - "api-error-unknown-error": "បញ្ហាខាងក្នុង៖ មានបញ្ហាមិនស្រួលពេលកំពុងព្យាយាមផ្ទុកឯកសាររបស់អ្នកឡើង។", "api-error-unknown-warning": "ការព្រមានមិនស្គាល់៖ \"$1 ។", "api-error-unknownerror": "បញ្ហាមិនស្គាល់៖ \"$1\" ។", - "api-error-uploaddisabled": "ការផ្ទុកឡើងត្រូវបានបិទមិនអោយប្រើនៅលើវិគីនេះទេ។", - "api-error-verification-error": "ឯកសារនេះប្រហែលជាខូច ឯមានកន្ទុយមិនត្រឹមត្រូវ។", "duration-seconds": "$1 {{PLURAL:$1|វិនាទី|វិនាទី}}", "duration-minutes": "$1 {{PLURAL:$1|នាទី|នាទី}}", "duration-hours": "$1 {{PLURAL:$1|ម៉ោង|ម៉ោង}}", diff --git a/languages/i18n/ko.json b/languages/i18n/ko.json index 6fff8d94ec..b6a9ad99ec 100644 --- a/languages/i18n/ko.json +++ b/languages/i18n/ko.json @@ -64,7 +64,8 @@ "Ykhwong", "Matma Rex", "Tursetic", - "Jerrykim306" + "Jerrykim306", + "Sukjong0406" ] }, "tog-underline": "링크에 밑줄:", @@ -232,6 +233,7 @@ "searcharticle": "보기", "history": "문서 역사", "history_short": "역사", + "history_small": "역사", "updatedmarker": "마지막으로 방문한 뒤 바뀜", "printableversion": "인쇄용 판", "permalink": "고유 링크", @@ -470,19 +472,12 @@ "login": "로그인", "login-security": "사용자 정보 확인", "nav-login-createaccount": "로그인 / 계정 만들기", - "userlogin": "로그인 / 계정 만들기", - "userloginnocreate": "로그인", "logout": "로그아웃", "userlogout": "로그아웃", "notloggedin": "로그인하지 않음", "userlogin-noaccount": "계정이 없나요?", "userlogin-joinproject": "{{SITENAME}}에 가입하세요", - "nologin": "계정이 없나요? $1.", - "nologinlink": "계정을 만드세요", "createaccount": "계정 만들기", - "gotaccount": "계정이 이미 있습니까? $1.", - "gotaccountlink": "로그인하세요", - "userlogin-resetlink": "로그인 정보를 잊으셨나요?", "userlogin-resetpassword-link": "비밀번호를 잊으셨나요?", "userlogin-helplink2": "로그인에 대한 도움말", "userlogin-loggedin": "이미 {{GENDER:$1|$1}}님으로 로그인되어 있습니다.\n다른 사용자로 로그인하려면 아래의 양식을 사용하세요.", @@ -495,7 +490,6 @@ "createaccountmail": "임의의 임시 비밀번호를 이메일로 보내기", "createaccountmail-help": "비밀번호를 기억하지 않고도 다른 사용자를 위한 계정을 만들 수 있습니다.", "createacct-realname": "실명 (선택 사항)", - "createaccountreason": "이유:", "createacct-reason": "이유", "createacct-reason-ph": "왜 다른 계정을 만들어야 합니까", "createacct-reason-help": "계정 생성 로그에 표시되는 메시지", @@ -692,7 +686,7 @@ "selfredirect": "<strong>경고:</strong> 자기 자신으로 문서를 넘겨주고 있습니다.\n넘겨줄 대상을 잘못 입력했거나, 잘못된 문서를 편집하고 있을 수 있습니다.\n\"{{int:savearticle}}\"을 입력하면, 넘겨주기 문서가 생성될 것입니다.", "missingcommenttext": "아래에 내용을 채워 넣어 주세요.", "missingcommentheader": "<strong>알림:</strong> 글의 제목을 입력하지 않았습니다.\n다시 \"{{int:savearticle}}\" 버튼을 클릭하면 글이 제목 없이 저장됩니다.", - "summary-preview": "요약 미리 보기:", + "summary-preview": "편집 요약 미리 보기:", "subject-preview": "주제 미리 보기:", "previewerrortext": "변경사항을 미리보기하는 도중 오류가 발생했습니다.", "blockedtitle": "사용자가 차단됨", @@ -1000,6 +994,7 @@ "search-interwiki-caption": "자매 프로젝트", "search-interwiki-default": "$1로부터의 ê²°ê³¼:", "search-interwiki-more": "(더 보기)", + "search-interwiki-more-results": "더 많은 ê²°ê³¼", "search-relatedarticle": "관련", "searchrelated": "관련", "searchall": "모두", @@ -1089,6 +1084,7 @@ "youremail": "이메일:", "username": "{{GENDER:$1|사용자 이름}}:", "prefs-memberingroups": "{{GENDER:$2|소속}} {{PLURAL:$1|그룹}}:", + "group-membership-link-with-expiry": "$1 ($2 까지)", "prefs-registration": "등록 시간:", "yourrealname": "실명:", "yourlanguage": "언어:", @@ -1133,8 +1129,8 @@ "editusergroup": "사용자 그룹 불러오기", "editinguser": "<strong>[[User:$1|$1]]</strong> $2 {{GENDER:$1|사용자}}의 권한 바꾸기", "viewinguserrights": "<strong>[[User:$1|$1]]</strong> $2 {{GENDER:$1|사용자}}의 권한을 보는 중", - "userrights-editusergroup": "사용자 그룹 편집", - "userrights-viewusergroup": "사용자 그룹 보기", + "userrights-editusergroup": "{{GENDER:$1|사용자}} 그룹 편집", + "userrights-viewusergroup": "{{GENDER:$1|사용자}} 그룹을 보기", "saveusergroups": "{{GENDER:$1|사용자}} 권한 저장", "userrights-groupsmember": "현재 권한:", "userrights-groupsmember-auto": "자동으로 부여된 권한:", @@ -1144,6 +1140,14 @@ "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 month,3개월:3 months,6개월:6 months,1년:1 year", + "userrights-invalid-expiry": "그룹 \"$1\"의 만료 시간이 유효하지 않습니다.", + "userrights-expiry-in-past": "그룹 \"$1\"의 만료 시간이 과거입니다.", "userrights-conflict": "사용자 권한 바꾸기가 충돌합니다! 바뀜을 검토하고 확인하세요.", "group": "그룹:", "group-user": "사용자", @@ -1345,21 +1349,52 @@ "recentchanges-legend-plusminus": "(<em>±123</em>)", "recentchanges-submit": "보기", "rcfilters-activefilters": "사용 중인 필터", + "rcfilters-restore-default-filters": "기본 필터 복구", + "rcfilters-clear-all-filters": "필터 모두 지우기", "rcfilters-search-placeholder": "필터 최근 바뀜 (찾아보거나 입력을 시작하십시오)", "rcfilters-invalid-filter": "유효하지 않은 필터", + "rcfilters-empty-filter": "활성화된 필터가 없습니다. 모든 기여가 표시됩니다.", "rcfilters-filterlist-title": "필터", + "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-userExpLevel-newcomer-label": "신규 사용자", - "rcfilters-filter-userExpLevel-newcomer-description": "신규 편집자: 10개 미만의 편집 및 4일 미만의 활동.", - "rcfilters-filter-userExpLevel-learner-label": "학습자", - "rcfilters-filter-userExpLevel-learner-description": "'신규 사용자' 보다 활동일 및 편집 수가 더 많지만 '능숙한 사용자' 보다는 적습니다.", - "rcfilters-filter-userExpLevel-experienced-label": "능숙한 사용자", - "rcfilters-filter-userExpLevel-experienced-description": "30일 이상의 활동 및 500개 이상의 편집.", + "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-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": "30일 이상의 활동 및 500개 이상의 편집.", + "rcfilters-filtergroup-automated": "자동으로 된 기여", + "rcfilters-filter-bots-label": "봇", + "rcfilters-filter-bots-description": "자동 도구를 이용한 편집.", + "rcfilters-filter-humans-label": "사람 (봇이 아님)", + "rcfilters-filter-humans-description": "사람이 한 편집.", + "rcfilters-filtergroup-significance": "의미", + "rcfilters-filter-minor-label": "사소한 편집", + "rcfilters-filter-major-label": "사소하지 않은 편집", + "rcfilters-filter-major-description": "사소한 편집으로 표시되지 않은 편집.", + "rcfilters-filtergroup-changetype": "차이 종류", + "rcfilters-filter-pageedits-label": "문서 편집", + "rcfilters-filter-newpages-label": "문서 생성", + "rcfilters-filter-newpages-description": "새 문서를 만드는 편집.", + "rcfilters-filter-categorization-label": "분류 차이", + "rcfilters-filter-categorization-description": "분류에서 추가되거나 제거되는 페이지의 기록.", + "rcfilters-filter-logactions-description": "관리적 조치, 계정 만들기, 페이지 삭제, 업로드...", "rcnotefrom": "아래는 <strong>$3, $4</strong>부터 시작하는 {{PLURAL:$5|바뀜이 있습니다}}. (최대 <strong>$1</strong>개가 표시됨)", "rclistfrom": "$3 $2부터 시작하는 새로 바뀐 문서 보기", "rcshowhideminor": "사소한 편집 $1", @@ -1493,7 +1528,7 @@ "uploaded-setting-handler-svg": "원격/데이터/스크립트와 함께 \"handler\" 속성을 설정한 SVG는 이용이 금지됩니다. 업로드된 SVG 파일에서 <code>$1=\"$2\"</code>를 발견하였습니다.", "uploaded-remote-url-svg": "원격 URL로 style 속성이 설정된 SVG파일은 금지됩니다. 업로드된 SVG 파일에서 <code>$1=\"$2\"</code>를 발견하였습니다.", "uploaded-image-filter-svg": "URL에 이미지 필터를 발견했습니다: 업로드된 SVG 파일의 <code><$1 $2=\"$3\"></code>.", - "uploadscriptednamespace": "이 SVG 파일은 사용할 수 없는 이름공간 '$1'을 포함하고 있습니다.", + "uploadscriptednamespace": "이 SVG 파일은 사용할 수 없는 이름공간 '<nowiki>$1</nowiki>'을 포함하고 있습니다.", "uploadinvalidxml": "업로드된 파일의 XML의 구문을 분석할 수 없습니다.", "uploadvirus": "파일이 바이러스를 포함하고 있습니다!\n자세한 설명: $1", "uploadjava": "이 ZIP 파일은 자바의 .class 파일을 포함하고 있습니다.\n보안 규제를 우회할 수 있기 때문에 자바 파일을 올리는 것이 허용되지 않습니다.", @@ -1772,6 +1807,7 @@ "uncategorizedcategories": "분류되지 않은 분류 목록", "uncategorizedimages": "분류되지 않은 파일 목록", "uncategorizedtemplates": "분류되지 않은 틀 목록", + "uncategorized-categories-exceptionlist": "# \"특수:분류안된분류\"에 언급되지 않은 분류의 목록을 포함합니다. 한 줄에 하나씩 \"*\"로 시작합니다. 다른 문자(공백 포함)로 시작하는 줄들은 무시됩니다. 주석의 경우 \"#\"를 사용하십시오.", "unusedcategories": "사용하지 않는 분류 목록", "unusedimages": "사용하지 않는 파일 목록", "wantedcategories": "필요한 분류 목록", @@ -1870,8 +1906,10 @@ "apisandbox-sending-request": "API 요청을 보내는 중...", "apisandbox-loading-results": "API 결과를 받는 중...", "apisandbox-results-error": "API 질의 응답을 불러오는 도중 오류 발생: $1.", - "apisandbox-request-params-json": "JSON 변수:", + "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 ms}}", "apisandbox-results-fixtoken": "토큰 수정 후 다시 제출", "apisandbox-results-fixtoken-fail": "\"$1\" 토크을 가져오는데 실패했습니다.", @@ -1879,6 +1917,7 @@ "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": "최대 한계치를 사용하려면 <kbd>max</kbd>를 입력하십시오.", "apisandbox-multivalue-all-namespaces": "$1 (모든 이름공간)", "apisandbox-multivalue-all-values": "$1 (모든 값)", @@ -1911,12 +1950,12 @@ "allpages": "모든 문서 목록", "nextpage": "다음 문서 ($1)", "prevpage": "이전 문서 ($1)", - "allpagesfrom": "다음으로 시작하는 문서 보기:", - "allpagesto": "다음으로 끝나는 문서 보기:", + "allpagesfrom": "다음으로 시작하는 문서 표시:", + "allpagesto": "다음으로 끝나는 문서 표시:", "allarticles": "모든 문서", "allinnamespace": "$1 이름공간의 모든 문서", "allpagessubmit": "보기", - "allpagesprefix": "다음으로 시작하는 문서 보기:", + "allpagesprefix": "다음 접두어로 시작하는 문서 표시:", "allpagesbadtitle": "주어진 문서 제목이 잘못되었거나 다른 사이트로 연결되는 인터위키가 있습니다.\n문서 제목에 사용할 수 없는 문자를 사용했을 수 있습니다.", "allpages-bad-ns": "{{SITENAME}}에서는 \"$1\" 이름공간을 사용하지 않습니다.", "allpages-hide-redirects": "넘겨주기 숨기기", @@ -1926,7 +1965,7 @@ "categories": "분류 목록", "categories-submit": "보이기", "categoriespagetext": "문서나 자료를 {{PLURAL:$1|포함하고 있는 분류}} 목록입니다.\n[[Special:UnusedCategories|사용되지 않는 분류]]는 여기에 보이지 않습니다.\n[[Special:WantedCategories|필요한 분류]]도 참조하세요.", - "categoriesfrom": "다음으로 시작하는 분류를 보여주기:", + "categoriesfrom": "다음으로 시작하는 분류 표시:", "deletedcontributions": "삭제된 사용자 기여", "deletedcontributions-title": "삭제된 사용자 기여", "sp-deletedcontributions-contribs": "기여", @@ -1937,18 +1976,18 @@ "linksearch-text": "\"*.wikipedia.org\"와 같이 와일드 카드를 사용할 수 있습니다.\n적어도 \"*.org\"와 같이 최상위 도메인을 입력해야 합니다.<br />\n지원하는 {{PLURAL:$2|프로토콜}}: $1 (프로토콜을 지정하지 않을 때 기본값은 http://)", "linksearch-line": "$1가 $2에서 링크됩니다.", "linksearch-error": "와일드카드는 주소의 처음 부분에만 사용될 수 있습니다.", - "listusersfrom": "다음으로 시작하는 사용자 보기:", + "listusersfrom": "다음으로 시작하는 사용자 표시:", "listusers-submit": "보기", "listusers-noresult": "사용자를 찾을 수 없습니다.", "listusers-blocked": "(차단됨)", "activeusers": "활동하는 사용자 목록", "activeusers-intro": "다음은 최근 $1{{PLURAL:$1|일}} 동안 활동한 사용자의 목록입니다.", "activeusers-count": "마지막 {{PLURAL:$3|$3일}} 사이의 {{PLURAL:$1|활동}} $1회", - "activeusers-from": "다음으로 시작하는 사용자를 보기:", + "activeusers-from": "다음으로 시작하는 사용자 표시:", "activeusers-groups": "그룹에 속한 사용자 표시:", "activeusers-excludegroups": "그룹에 속한 사용자 제외:", "activeusers-noresult": "사용자를 찾을 수 없습니다.", - "activeusers-submit": "활동하고 있는 사용자 보이기", + "activeusers-submit": "활동하고 있는 사용자 표시", "listgrouprights": "사용자 권한 목록", "listgrouprights-summary": "다음은 이 위키에 있는 사용자 권한 그룹의 목록입니다.\n각각의 권한에 대해서는 [[{{MediaWiki:Listgrouprights-helppage}}|추가 정보]]를 참조하세요.", "listgrouprights-key": "범례:\n* <span class=\"listgrouprights-granted\">부여된 권한</span>\n* <span class=\"listgrouprights-revoked\">해제된 권한</span>", @@ -2013,7 +2052,7 @@ "emailccsubject": "$1에게 보낸 메시지의 복사본: $2", "emailsent": "이메일 보냄", "emailsenttext": "이메일을 보냈습니다.", - "emailuserfooter": "이 이메일은 {{SITENAME}}의 $1님이 $2에게 \"{{int:emailuser}}\" 기능을 통해 보냈습니다.", + "emailuserfooter": "이 이메일은 {{SITENAME}}의 $1님이 $2님에게 \"{{int:emailuser}}\" 기능을 통해 보냈습니다. 이 이메일에 답장을 보내게 되면 원래 이메일을 보낸 사용자에게 직접 답장을 보내게 되며, 따라서 귀하의 이메일 주소를 보낸 사용자에게 공개하게 됩니다.", "usermessage-summary": "시스템 메시지 남기기", "usermessage-editor": "시스템 메신저", "usermessage-template": "MediaWiki:UserMessage", @@ -2112,7 +2151,7 @@ "editcomment": "편집 요약: <em>$1</em>", "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}}의 편집을 되돌렸습니다.\n{{GENDER:$4|$2}}의 마지막 판으로 바뀌었습니다.", "rollback-success-notify": "$1의 편집을 되돌렸습니다.\n$2의 마지막 판으로 바뀌었습니다. [$3 차이 보기]", "sessionfailure-title": "세션 실패", "sessionfailure": "로그인 세션에 문제가 발생한 것 같습니다.\n세션 하이재킹을 막기 위해 동작이 취소되었습니다.\n브라우저의 뒤로 버튼을 누르고 문서를 새로 고침한 후에 다시 시도해 주세요.", @@ -2464,7 +2503,7 @@ "imagenocrossnamespace": "파일을 파일이 아닌 이름공간으로 이동할 수 없습니다.", "nonfile-cannot-move-to-file": "파일이 아닌 문서를 파일 이름공간으로 이동할 수 없습니다.", "imagetypemismatch": "새 파일의 확장자가 원래의 확장자와 일치하지 않습니다.", - "imageinvalidfilename": "새 파일 이름이 잘못되었습니다.", + "imageinvalidfilename": "대상 파일 이름이 잘못되었습니다.", "fix-double-redirects": "원래 제목을 가리키는 넘겨주기를 새로 고침", "move-leave-redirect": "이동한 뒤 넘겨주기를 남기기", "protectedpagemovewarning": "<strong>경고:</strong> 이 문서는 관리자만 이동할 수 있도록 보호되어 있습니다.\n최근 기록을 참조를 위해 아래에 제공합니다:", @@ -3229,7 +3268,7 @@ "size-bytes": "$1 {{PLURAL:$1|바이트}}", "size-pixel": "$1 {{PLURAL:$1|픽셀}}", "lag-warn-normal": "최근 $1{{PLURAL:$1|초}} 안에 바뀐 문서는 이 목록에서 빠졌을 수 있습니다.", - "lag-warn-high": "데이터베이스 서버의 과도한 부하 때문에 최근 $1{{PLURAL:$1|초}} 안에 바뀐 문서 목록은 보이지 않을 수 있습니다.", + "lag-warn-high": "데이터베이스 서버의 과도한 부하 때문에 최근 $1{{PLURAL:$1|초|초}} 안에 바뀐 문서 목록은 보이지 않을 수 있습니다.", "watchlistedit-normal-title": "주시문서 목록 편집하기", "watchlistedit-normal-legend": "주시문서 목록에서 문서 제거하기", "watchlistedit-normal-explain": "주시문서 목록에 있는 문서의 제목이 아래에 나와 있습니다.\n주시문서 목록에서 제거하려는 문서가 있으면 각 항목의 확인 상자를 선택한 다음 \"{{int:Watchlistedit-normal-submit}}\"를 클릭해주세요.\n또는 [[Special:EditWatchlist/raw|목록을 직접 편집]]할 수도 있습니다.", @@ -3258,7 +3297,7 @@ "signature": "[[{{ns:user}}:$1|$2]] ([[{{ns:user_talk}}:$1|토론]])", "timezone-local": "로컬", "duplicate-defaultsort": "<strong>경고:</strong> 기본 정렬 키 \"$2\"가 이전의 기본 정렬 키 \"$1\"를 덮어쓰고 있습니다.", - "duplicate-displaytitle": "<strong>경고:</strong> \"$2\" 제목 표시는 기존의 표시되는 제목 \"$1\"을 덮어씁니다.", + "duplicate-displaytitle": "<strong>경고:</strong> \"$2\" 표시 제목은 먼저번의 표시 제목 \"$1\"을 덮어씁니다.", "restricted-displaytitle": "<strong>경고:</strong> 표시하려는 제목 \"$1\"은(는) 문서의 실제 제목과 동일하지 않으므로 무시되었습니다.", "invalid-indicator-name": "<strong>오류:</strong> 문서 상태 표시기의 <code>name</code> 특성은 비어 있지 않아야 합니다.", "version": "버전", @@ -3476,6 +3515,12 @@ "htmlform-date-invalid": "지정한 값은 인식할 수 있는 날짜가 아닙니다. YYYY-MM-DD 형식을 사용하세요.", "htmlform-time-invalid": "지정한 값은 인식할 수 있는 시간이 아닙니다. HH:MM:SS 형식을 사용하세요.", "htmlform-datetime-invalid": "지정한 값은 인식할 수 있는 날짜 및 시간이 아닙니다. YYYY-MM-DD HH:MM:SS 형식을 사용하세요.", + "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 문서는 존재하지 않습니다.", @@ -3549,7 +3594,7 @@ "logentry-tag-update-revision": "$1님이 $3 문서의 $4판에서 태그를 {{GENDER:$2|업데이트했습니다}} ($6 {{PLURAL:$7|추가함}}; $8 {{PLURAL:$9|제거함}})", "logentry-tag-update-logentry": "$1님이 $3 문서의 기록 항목 $5에 있는 태그를 {{GENDER:$2|업데이트했습니다}} ($6 {{PLURAL:$7|추가함}}; $8 {{PLURAL:$9|제거함}})", "rightsnone": "(없음)", - "revdelete-summary": "편집 요약", + "rightslogentry-temporary-group": "$1 (일시적, $2까지)", "feedback-adding": "문서에 피드백을 올리는 중...", "feedback-back": "뒤로", "feedback-bugcheck": "감사합니다! 혹시 해당 사항이 [$1 기존의 버그 보고서]에 올라와 있는지 확인해주세요.", @@ -3574,56 +3619,12 @@ "feedback-useragent": "사용자 에이전트:", "searchsuggest-search": "{{SITENAME}} 검색", "searchsuggest-containing": "다음 문자열 포함...", - "api-error-autoblocked": "사용자의 IP 주소는 차단된 사용자에 의해 사용되었으므로 자동으로 차단된 상태입니다.", - "api-error-badaccess-groups": "이 위키에 파일을 올릴 권한이 없습니다.", "api-error-badtoken": "내부 오류: 토큰이 잘못되었습니다.", - "api-error-blocked": "편집에서 차단되어 있습니다.", - "api-error-copyuploaddisabled": "이 서버에서 URL을 통해 파일 올리기가 비활성화되어 있습니다.", - "api-error-duplicate": "이 위키에 내용이 똑같은 {{PLURAL:$1|다른 파일}}이 있습니다.", - "api-error-duplicate-archive": "같은 내용을 담고 있던 {{PLURAL:$1|다른 파일}}이 있었지만 이 {{PLURAL:$1|파일}}은 삭제되었습니다.", - "api-error-empty-file": "올리려는 파일이 비어 있습니다.", "api-error-emptypage": "새 문서로 빈 문서를 만들 수 없습니다.", - "api-error-fetchfileerror": "내부 오류: 파일을 불러오는 중 문제가 발생했습니다.", - "api-error-fileexists-forbidden": "\"$1\" 이름으로 된 파일은 이미 존재하고 덮어쓸 수 없습니다.", - "api-error-fileexists-shared-forbidden": "\"$1\" 이름으로 된 파일이 이미 공용 저장소에 존재하며 덮어쓸 수 없습니다.", - "api-error-file-too-large": "올리려는 파일이 너무 큽니다.", - "api-error-filename-tooshort": "파일 이름이 너무 짧습니다.", - "api-error-filetype-banned": "이 파일의 형식은 금지되어 있습니다.", - "api-error-filetype-banned-type": "$1 {{PLURAL:$4|파일 형식은 올릴 수 없습니다}}. $2 {{PLURAL:$3|파일 형식만 사용할 수 있습니다}}.", - "api-error-filetype-missing": "파일 이름에 확장자가 없습니다.", - "api-error-hookaborted": "수정하려고 한 것이 확장 기능에 의해 중지되었습니다.", - "api-error-http": "내부 오류: 서버에 연결할 수 없습니다.", - "api-error-illegal-filename": "이 파일 이름을 사용할 수 없습니다.", - "api-error-internal-error": "내부 오류: 올린 파일을 위키에서 처리하는 중 어떤 문제가 발생했습니다.", - "api-error-invalid-file-key": "내부 오류: 임시 저장소에서 파일을 찾지 못했습니다.", - "api-error-missingparam": "내부 오류: 요청에 변수가 없습니다.", - "api-error-missingresult": "내부 오류: 파일의 복제가 성공했는지 판단할 수 없습니다.", - "api-error-mustbeloggedin": "파일을 올리려면 로그인해야 합니다.", - "api-error-mustbeposted": "내부 오류: HTTP POST에 요청이 필요합니다.", - "api-error-noimageinfo": "업로드는 성공했지만 서버가 파일에 대해 어떠한 정보도 제공하지 않았습니다.", - "api-error-nomodule": "내부 오류: 올리기 모듈이 설정되지 않았습니다.", - "api-error-ok-but-empty": "내부 오류: 서버에서 응답이 없습니다.", - "api-error-overwrite": "이미 있는 파일을 덮어쓸 수 없습니다.", - "api-error-ratelimited": "짧은 시간 안에 위키가 허용하는 것 보다 더 많은 파일을 업로드하려고 합니다.\n몇 분 뒤에 다시 시도해 주십시오.", - "api-error-stashfailed": "내부 오류: 서버가 임시 파일을 저장하지 못했습니다.", "api-error-publishfailed": "내부 오류: 서버가 임시 파일을 게시하지 못했습니다.", - "api-error-stasherror": "파일을 미공개 위치로 업로드하는 동안 오류가 발생했습니다.", - "api-error-stashedfilenotfound": "임시 저장된 파일이 임시 저장소에서 올리려고 했을 때 찾을 수 없었습니다.", - "api-error-stashpathinvalid": "임시 저장된 파일이 존재해야 할 경로에 유효한 파일이 없습니다.", - "api-error-stashfilestorage": "파일을 임시 저장하는 동안 오류가 발생했습니다.", - "api-error-stashzerolength": "서버는 파일을 저장하지 못했는데, 파일의 용량이 0이기 때문입니다.", - "api-error-stashnotloggedin": "파일을 업로드하기 위해 로그인이 필요합니다.", - "api-error-stashwrongowner": "저장된 임시 저장소에 존재하는 파일에 접근할 권한이 없습니다.", - "api-error-stashnosuchfilekey": "미공개 위치에 접근을 시도한 파일 키는 존재하지 않습니다.", - "api-error-timeout": "서버가 예측된 시간 내에 응답하지 않았습니다.", - "api-error-unclassified": "알 수 없는 오류가 발생했습니다.", - "api-error-unknown-code": "알 수 없는 오류: \"$1\"", - "api-error-unknown-error": "내부 오류: 파일을 올리려 하는 도중에 무엇인가가 잘못되었습니다.", + "api-error-stashfailed": "내부 오류: 서버가 임시 파일을 저장하지 못했습니다.", "api-error-unknown-warning": "알 수 없는 경고: \"$1\".", "api-error-unknownerror": "알 수 없는 오류: \"$1\"", - "api-error-uploaddisabled": "이 위키에서 파일 올리기가 비활성화되어 있습니다.", - "api-error-verification-error": "파일이 손상되었거나 잘못된 확장자를 사용하고 있습니다.", - "api-error-was-deleted": "이 이름으로 된 파일은 과거에 업로드된 이후 삭제된 적이 있습니다.", "duration-seconds": "$1{{PLURAL:$1|초}}", "duration-minutes": "$1{{PLURAL:$1|분}}", "duration-hours": "$1{{PLURAL:$1|시간}}", @@ -3743,6 +3744,7 @@ "mw-widgets-titleinput-description-new-page": "문서가 존재하지 않습니다", "mw-widgets-titleinput-description-redirect": "$1 문서로 넘겨주기", "mw-widgets-categoryselector-add-category-placeholder": "분류 추가...", + "mw-widgets-usersmultiselect-placeholder": "더 추가하기...", "sessionmanager-tie": "여러 요청 인증 유형 결합할 수 없습니다: $1.", "sessionprovider-generic": "$1 세션", "sessionprovider-mediawiki-session-cookiesessionprovider": "쿠키 기반 세션", @@ -3874,7 +3876,7 @@ "usercssispublic": "주목해 주십시오: CSS의 하위 문서들은 다른 사용자들이 ë³¼ 수 있기 때문에 기밀 데이터를 포함해서는 안 됩니다.", "restrictionsfield-badip": "유효하지 않은 IP 주소나 대역: $1", "restrictionsfield-label": "허용된 IP 대역:", - "restrictionsfield-help": "줄 단위의 하나의 IP 주소 또는 CIDR 대역입니다. 모든 곳에 적용하려면, 다음을 사용하세요<br><code>0.0.0.0/0</code><br><code>::/0</code>", + "restrictionsfield-help": "줄 단위의 하나의 IP 주소 또는 CIDR 대역입니다. 모든 곳에 적용하려면, 다음을 사용하세요:<pre>0.0.0.0/0\n::/0</pre>", "revid": "$1 판", "pageid": "페이지 ID $1" } diff --git a/languages/i18n/ksh.json b/languages/i18n/ksh.json index 7d67c360dc..3d70dbbc04 100644 --- a/languages/i18n/ksh.json +++ b/languages/i18n/ksh.json @@ -571,8 +571,6 @@ "passwordreset-emaildisabled": "Heh dat Wiki määt nix met <i lang=\"en\">e-mail</i>!", "passwordreset-username": "Metmaacher_Nahme:", "passwordreset-domain": "Domähn:", - "passwordreset-capture": "Wells De di <i lang=\"en\">e-mail</i> beloore?", - "passwordreset-capture-help": "Wann De heh e Krüzje määß, kriß de di <i lang=\"en\">e-mail</i> met däm neue Paßwoot aanjezeish, ußer dat dä Metmaacher se och zohjescheck kritt.", "passwordreset-email": "De Adräß för de <i lang=\"en\">e-mail</i>:", "passwordreset-emailtitle": "Einzelheite för der Zohjang op {{GRAMMAR:Akkusativ|{{SITENAME}}}}", "passwordreset-emailtext-ip": "Do künns et sällver jewääse sin, öhnswää em Internet hät vun dä IP-Adräß $1 öm\ne neu Paßwoot jefrooch, för Dinge Zohjäng op {{GRAMMAR:Akkusativ|{{SITENAME}}}}\n$4\nHeh {{PLURAL:$3|dä Metmaacher hät|di Metmaacher han|hät keine Metmaacher}} Ding e-mail Addräß:\n\n$2\n\n{{PLURAL:$3|Dat Zweschepaßwoot leuf|Di Zweschepaßwööter loufe|Kein Zweschepaßwoot leuf}} en {{PLURAL:$5|enem Daach|$5 Dääsch|keinem Daach}} uß.\nDonn Desch jäz enlogge, un e neu Paßwoot faßlääje. Wann ene Andere wi\nDo dat heh aanjestüßße hät, udder wann De Desch widder aan Ding Paßwoot\nentsenne kanns, un et nimmih ändere wells, udder es suwwisu weiß, dann\nmoß De jäz jaa nix donn, un kanns Ding Paßwoot wigger bruche.", @@ -580,8 +578,6 @@ "passwordreset-emailelement": "Metmaacher Name: \n$1\n\nEijmohl-Paßwoot: \n$2", "passwordreset-emailsentemail": "Wann dat en <i lang=\"en\" xml:lang=\"en\" dir=\"ltr\" title=\"„de eläktrohnesche Poß“\">e-mail</i>-Adräß vun Der es, dann weed en <i lang=\"en\" xml:lang=\"en\" dir=\"ltr\" title=\"„de eläktrohnesche Poß“\">e-mail</i> för Dinge Zohjang verschek, öm e neu Paßwoot ze krijje.", "passwordreset-emailsentusername": "Wann heh dä Metmaacher en <i lang=\"en\" xml:lang=\"en\" dir=\"ltr\" title=\"„de eläktrohnesche Poß“\">e-mail</i>-Adräß hät, dann weed en <i lang=\"en\" xml:lang=\"en\" dir=\"ltr\" title=\"„de eläktrohnesche Poß“\">e-mail</i> verschek, öm e neu Paßwoot ze krijje.", - "passwordreset-emailsent-capture2": "{{PLURAL:$1|En <i lang=\"en\" xml:lang=\"en\" dir=\"ltr\" title=\"„de eläktrohnesche Poß“\">e-mail</i> es|De <i lang=\"en\" xml:lang=\"en\" dir=\"ltr\" title=\"„de eläktrohnesche Poß“\">e-mail</i>s sin|Nix es}} verschek woode, öm e neu Paßwoot ze krijje. {{PLURAL:$1|Dä Nahme vum Metmaacher un dat Paßwood|Di Leß met dä Nahme un Paßwööter|Nix weed}} heh noh aanjezeijsch.", - "passwordreset-emailerror-capture2": "{{GENDER:$2|Däm|Däm|Däm Metmaacher|Dä|Däm}} $1 en <i lang=\"en\" xml:lang=\"en\" dir=\"ltr\" title=\"„de eläktrohnesche Poß“\">e-mail</i> ze scheke hät nit jeflupp: {{PLURAL:$3|Dä Nahme vum Metmaacher un dat Paßwood|Di Leß met dä Nahme un Paßwööter|Nix weed}} heh noh aanjezeijsch.", "passwordreset-nocaller": "Entärne Fähler: Ene Oprohfer moß aanjejovve sin.", "passwordreset-nosuchcaller": "Entärne Fähler: Dä Oprohfer „$1“ känne mer nit.", "passwordreset-invalidemail": "Dat es en onjöltejje Addräß fö de <i lang=\"en\" xml:lang=\"en\" dir=\"ltr\" title=\"„de eläktrohnesche Poß“\">e-mail</i>", @@ -997,8 +993,6 @@ "saveprefs": "Faßhalde", "restoreprefs": "Donn en alle Afschnedde alles op der Schtandatt retuur schtälle", "prefs-editing": "Beim Beärbeijde", - "rows": "Reihe:", - "columns": "Spalte:", "searchresultshead": "Beim Söhke", "stub-threshold": "Lengks zopaß för klein Sigge ($1) fomatehre av esu vill <i lang=\"en\" xml:lang=\"en\" dir=\"ltr\">Bytes</i>:", "stub-threshold-sample-link": "Beijschpell_Lengk", @@ -1093,13 +1087,10 @@ "userrights-reason": "Aanlaß odder Jrund:", "userrights-no-interwiki": "Do häs nit dat Rääsch, Metmaacher ier Rääschte in ander Wikis ze ändere.", "userrights-nodatabase": "De Datebank „<strong>$1</strong>“ is nit doh, oder se litt op enem andere ẞööver.", - "userrights-nologin": "Do moss als ene Wiki-Köbes [[Special:UserLogin|enjelog sin]], för dat De Metmaacher ier Rääschte ändere kanns.", - "userrights-notallowed": "Do häs nit dat Rääsch, Rääschde aan Metmaacher ze verdeile udder se fott ze nämme.", "userrights-changeable-col": "{{PLURAL:$1:Di Jropp|Jroppe|kein Jropp doh}}, di De ändere kanns", "userrights-unchangeable-col": "{{PLURAL:$1:Di Jropp|Jroppe|kein Jropp doh}}, di De nit ändere kanns", "userrights-irreversible-marker": "$1 *", "userrights-conflict": "Ene Andere hät di Rääschde ald verändert. Loor, wad_eruß kohm un versöhg_et norr_ens, wann nüüdesch.", - "userrights-removed-self": "Do häs Ding Rääsch dohzoh jraad drannjejovve, dröm kanns De heh di Sigg nit mih oprohfe.", "group": "Jropp:", "group-user": "Metmaacher", "group-autoconfirmed": "Bestätichte Metmaacher", @@ -1190,7 +1181,6 @@ "right-siteadmin": "De Dahtebangk deeschmaache un opmaache för Änderonge", "right-override-export-depth": "Beim Sigge Expoteere de Sigge metnämme, woh Lingks drop jon — beß fönef Schredde wigk", "right-sendemail": "<i lang=\"en\">e-mail</i> aan ander Metmaacher schecke", - "right-passwordreset": "De <i lang=\"en\">e-mails</i> vum Paßwoot neu Säze aanloore", "right-managechangetags": "[[Special:Tags|Kännzeijsche]] aanlähje udder ußschallde", "right-applychangetags": "[[Special:Tags|Makehronge]] met de eije Änderonge zersamme verjävve", "right-changetags": "[[Special:Tags|Makehronge]] vun Väsjohne un Enndrähsche em Logbohch fott nämme un zohföhje", @@ -1426,7 +1416,7 @@ "uploaded-setting-handler-svg": "Mer han „<code lang=\"en\" xml:lang=\"en\" dir=\"ltr\">$1=\"$2\"</code>“ en dä huhjelahde <i lang=\"en\" xml:lang=\"en\" dir=\"ltr\" title=\"Scalable Vector Graphics\">SVG</i>_Dattei jefonge. Esu en Datteije, di de Eijeschaff „<code lang=\"en\" xml:lang=\"en\" dir=\"ltr\">handler</code>“ op ein vun „<code lang=\"en\" xml:lang=\"en\" dir=\"ltr\">remote/data/script</code>“ säz sin jeschpächt.", "uploaded-remote-url-svg": "\n<i lang=\"en\" xml:lang=\"en\" dir=\"ltr\" title=\"Scalable Vector Graphics\">SVG</i>_Datteije di öhnds_e „<code lang=\"en\" xml:lang=\"en\" dir=\"ltr\">style</code>“-Ellemänt obb_en <i lang=\"en\" xml:lang=\"en\" dir=\"ltr\" title=\"Uniform Ressource Locator\">URL</i> ußerhallef vum Wikki säze sin verbodde un jeschpächt. Mer han \n„<code lang=\"en\" xml:lang=\"en\" dir=\"ltr\">$1=\"$2\"</code>“ en dä huhjelahde <i lang=\"en\" xml:lang=\"en\" dir=\"ltr\" title=\"Scalable Vector Graphics\">SVG</i>_Dattei jefonge.", "uploaded-image-filter-svg": "Mer han ene Belder_Felter met däm <i lang=\"en\" xml:lang=\"en\" dir=\"ltr\" title=\"Uniform Ressource Locator\">URL</i> <code lang=\"en\" xml:lang=\"en\" dir=\"ltr\"><$1 $2=\"$3\"></code> en dä huhjelahde \n<i lang=\"en\" xml:lang=\"en\" dir=\"ltr\" title=\"Scalable Vector Graphics\">SVG</i>_Dattei jefonge.", - "uploadscriptednamespace": "De aanjejovve <i lang=\"en\" xml:lang=\"en\">SVG</i>-Dattei benöds dä verbodde Nahme-Roum „$1“", + "uploadscriptednamespace": "De aanjejovve <i lang=\"en\" xml:lang=\"en\">SVG</i>-Dattei benöds dä verbodde Nahme-Roum „<nowiki>$1</nowiki>“", "uploadinvalidxml": "Dat <i lang=\"en\" xml:lang=\"en\">XML</i> en dä huh jelaade Dattei kunnt wohr nit en Oodenong beim Ongersöhke.", "uploadvirus": "Esu ene Dress:\n<br />\nEn dä Datei stich e Kompjutervirus!\n<br />\nDe Einzelheite: $1", "uploadjava": "Dat es en Sammel_Dattei em ZIP-Fommaat, woh en Java-.class-Datei dren shtich.\nJava-Datteie huhlaade es nit zohjelohße, weil mer domet de Enshtellunge ömjonn kann, di der ẞörver schöze un däm sing Sescherheit jarranteere.", @@ -3497,53 +3487,12 @@ "feedback-useragent": "Dä Brauser:", "searchsuggest-search": "Söhke", "searchsuggest-containing": "dren änthallde…", - "api-error-badaccess-groups": "Do häs nit et Rääsch, Datteije en heh dat Wiki huhzelaade.", "api-error-badtoken": "Fähler: et Kännzeijsche (<i lang=\"en\">token</i>) es kappott.", - "api-error-blocked": "Do bes föh et Änndere jeschpächt.", - "api-error-copyuploaddisabled": "Et Huhlaade vun enem <i lang=\"en\">URL</i> es op däm ẞööver heh nit zohjelohße.", - "api-error-duplicate": "Mer han em Wiki ald {{PLURAL:$1|[en Dattei]|[$1 andere Datteije]|[kein Dattei]}} mem akeraat sellve Enhalldt.", - "api-error-duplicate-archive": "Mer hatte {{PLURAL:$1|[en ander Dattei]|[ander Datteije]|[kein ander Dattei]}} heh em Wiki mem sellve Enhalt, ävver se {{PLURAL:$1|es|sen|es}} ald fottjeschmeße woode.", - "api-error-empty-file": "En dä huhjelaade Dattei wohr jaa_nix dren.", "api-error-emptypage": "Neu läddijje Sigge aanzelääje es verbodde.", - "api-error-fetchfileerror": "Fähler: Beim eronger Lahde hät jät nit jeflupp.", - "api-error-fileexists-forbidden": "En Dattei mem Name „$1“ es ald doh un mer künne se nit övverschriive.", - "api-error-fileexists-shared-forbidden": "En Dattei mem Name „$1“ es ald en ene jemeinsamme Sammlong, un mer künne se nit övverschriive.", - "api-error-file-too-large": "De huhjelaade Dattei wohr ze jruß.", - "api-error-filename-tooshort": "Der Name för di Dattei es ze koot.", - "api-error-filetype-banned": "Di Zoot Dattei es nit zohjelohße.", - "api-error-filetype-banned-type": "{{PLURAL:$4|Dat Dateifommaat|De Dateifommaate|}} $1 wulle mer nit huhjelaade krijje. Älaup {{PLURAL:$3|es|sin_er|}}: $2", - "api-error-filetype-missing": "Dä Dattei iehre Nahme hät kein Ändong.", - "api-error-hookaborted": "Ding Änderong wood vun enem Zohsazprojramm nit zohjelohße.", - "api-error-http": "Fähler: Mer krijje kein Verbendung mem ẞööver.", - "api-error-illegal-filename": "Der Name för di Dattei es verbodde.", - "api-error-internal-error": "Fähler: Noh em Huhlaade en et Wiki es em Wiki jät scheif jeloufe.", - "api-error-invalid-file-key": "Fähler: En Dattei wohr nit em Zwescheschpeischer ze fenge.", - "api-error-missingparam": "Fähler: Doh fähle Parrameetere en däm, wat aan dä ẞööver övvermeddelt woode es.", - "api-error-missingresult": "Fähler: Mer kunnte nit eruß krijje, ob et Koppeere joht jejange wohr.", - "api-error-mustbeloggedin": "För Datteije huh_ze_laade moß de ald enjelogg sinn.", - "api-error-mustbeposted": "Fähler: Mer hätt dat mt <code lang=\"en\">HTTP POST</code> schecke mößße.", - "api-error-noimageinfo": "Et Huhlaade hät jeflupp, ävver der ẞööver hät ons övver di Dattei nix verzallt.", - "api-error-nomodule": "Fähler: Mer han kei Modul för et Huhlssde faßjelaat.", - "api-error-ok-but-empty": "Fähler: Mer krijje kein Antwoot vum ẞööver.", - "api-error-overwrite": "En Dattei ze övverschrieve es nit zohjelohße.", - "api-error-stashfailed": "Fähler: Dä ẞööver hät kein Datteije zweschejeschpeischert.", "api-error-publishfailed": "Ene Fähler es em ẞööver opjetrodde. En zweschejescheischerte Dattei kunnt nit öffentlesch jemaat wääde.", - "api-error-stasherror": "Ene Fähler es opjetrodde, wi mer di Dattei en der Bunker huh aam lahde wohre.", - "api-error-stashedfilenotfound": "Di Dattei wohd em Bunker nit jefonge, wi mer se vun doh huh lahde wullte.", - "api-error-stashpathinvalid": "Di Dattei wohd em Bunker nit jefonge, weil dä Pad do hen nit jeschtemmp hät.", - "api-error-stashfilestorage": "Ene Fähler es opjetrodd, wi mer di Dattei en der Bunker donn wullte.", - "api-error-stashzerolength": "Dä ẞööver kunnt di Dattei nit en der Bunker donn, weil en dä Dattei nix dren schtund.", - "api-error-stashnotloggedin": "Do moß enjelogg sin, öm huhjelahde Datteije en der Bunker ze donn.", - "api-error-stashwrongowner": "Di Dattei em Bunker woh De draan wells, di jehürt Der nit.", - "api-error-stashnosuchfilekey": "Dä Schlößel fö_di Dattei, woh De draan wells, em Bunker, di jidd_et nit.", - "api-error-timeout": "Dä ẞööver hät en dä jewennde Zick nit jeantwoot.", - "api-error-unclassified": "Ene Fähler es opjetrodde, der mer nit kenne.", - "api-error-unknown-code": "Nit bekannte Fähler: „$1“", - "api-error-unknown-error": "Fähler: Mer han et Huhlaade versöhk, ävver et es jät donävve jejange.", + "api-error-stashfailed": "Fähler: Dä ẞööver hät kein Datteije zweschejeschpeischert.", "api-error-unknown-warning": "En onbikannte Warnong: $1", "api-error-unknownerror": "Ene onbikannte Fähler: „$1“", - "api-error-uploaddisabled": "Et Huhlaade es en heh däm Wiki nit zohjelohße.", - "api-error-verification-error": "Di Dattei künnt kappott sin, udder en verkehte Endong em Nahme han.", "duration-seconds": "{{PLURAL:$1|ein Sekond|$1 Sekonde|kein Sekond}}", "duration-minutes": "{{PLURAL:$1|ein Menot|$1 Menotte|kein Menot}}", "duration-hours": "{{PLURAL:$1|en Schtond|$1 Schtonde|kein Schtond}}", diff --git a/languages/i18n/ku-latn.json b/languages/i18n/ku-latn.json index 20715ed524..21804025cd 100644 --- a/languages/i18n/ku-latn.json +++ b/languages/i18n/ku-latn.json @@ -176,7 +176,7 @@ "history": "Dîroka rûpelê", "history_short": "Dîrok", "updatedmarker": "ji serdana min a dawî ve hate rojanekirin", - "printableversion": "Guhertoya bo çapkirinê", + "printableversion": "Guhertoya çapkirinê", "permalink": "Girêdana daîmî", "print": "Çap", "view": "Bibîne", @@ -552,10 +552,10 @@ "note": "<strong>Nîşe:</strong>", "previewnote": "'''Ji bîr neke ku ev tenê pêşdîtinek e.'''\nGuhertinên te hê nehatine tomarkirin!", "continue-editing": "Here qada sazandinê", - "editing": "$1 tê guherandin", + "editing": "\"$1\" tê guherandin", "creating": "\"$1\" tê çêkirin", - "editingsection": "Tê guherandin: $1 (beş)", - "editingcomment": "$1 (beşek nû) tê guherandin.", + "editingsection": "\"$1\" (beş) tê guherandin", + "editingcomment": "\"$1\" (beşek nû) tê guherandin.", "editconflict": "Têkçûna guherandinan: $1", "explainconflict": "Ji dema te dest bi guherandinê kir heta niha kesekê/î din ev rûpel guherand.\nLi jor guhertoya heyî tê dîtîn.\nGuherandinên te li jêr tên nîşandan.\nDivê tu wan bikî yek.\nHeke niha tomar bikî, '''bi tenê''' nivîsara qutiya jor wê bê tomarkirin.", "yourtext": "Nivîsara te", @@ -894,8 +894,8 @@ "rcshowhideanons-show": "nîşan bide", "rcshowhideanons-hide": "veşêre", "rcshowhidepatr": "Guherandinên kontrolkirî $1", - "rcshowhidepatr-show": "Nîşan bide", - "rcshowhidepatr-hide": "Veşêre", + "rcshowhidepatr-show": "nîşan bide", + "rcshowhidepatr-hide": "veşêre", "rcshowhidemine": "Guherandinên min $1", "rcshowhidemine-show": "nîşan bide", "rcshowhidemine-hide": "veşêre", @@ -1292,7 +1292,7 @@ "protectedarticle": "parastî [[$1]]", "modifiedarticleprotection": "parastina \"[[$1]]\" guherand", "unprotectedarticle": "parastina \"[[$1]]\" rakir", - "protect-title": "parastina \"$1\" biguherîne", + "protect-title": "Parastina \"$1\" biguherîne", "prot_1movedto2": "Navê [[$1]] weke [[$2]] hate guhertin", "protect-norestrictiontypes-title": "Rûpela neparastbar", "protect-legend": "Parastinê bipesinîne", @@ -1371,7 +1371,7 @@ "sp-contributions-hideminor": "Guherandinên biçûk veşêre", "sp-contributions-submit": "Lêgerîn", "whatlinkshere": "Girêdanên li ser vê rûpelê", - "whatlinkshere-title": "Rûpelan, yê berve $1 tên", + "whatlinkshere-title": "Rûpelên ku yê berve \"$1\" tên", "whatlinkshere-page": "Rûpel:", "linkshere": "Ev rûpel tên ser vê rûpelê '''[[:$1]]''':", "nolinkshere": "Ne ji rûpelekê lînk tên ser '''[[:$1]]'''.", @@ -1656,6 +1656,12 @@ "ilsubmit": "Lêgerîn", "bydate": "li gor dîrokê", "sp-newimages-showfrom": "Daneyên nû ji dema $1, saet $2 ve bibîne", + "seconds-abbrev": "$1 s", + "hours-abbrev": "$1 st", + "days-abbrev": "$1 r", + "seconds": "{{PLURAL:$1|$1 saniye}}", + "hours": "{{PLURAL:$1|$1 saet|$1 saet}}", + "days": "{{PLURAL:$1|$1 roj}}", "weeks": "{{PLURAL:$1|$1 hefte}}", "months": "{{PLURAL:$1|$1 meh}}", "years": "{{PLURAL:$1|$1 sal}}", @@ -1663,7 +1669,7 @@ "hours-ago": "berî $1 {{PLURAL:$1|demjimêr|demjimêran}}", "variantname-ku-arab": "Tîpên erebî", "variantname-ku-latn": "Tîpên latînî", - "variantname-ku": "disable", + "variantname-ku": "Kurdî/کوردی", "metadata": "Daneyên meta", "metadata-expand": "Detayên dirêj nîşan bide", "metadata-collapse": "Detayên dirêj veşêre", @@ -1855,11 +1861,9 @@ "feedback-thanks-title": "Spas!", "searchsuggest-search": "Li ser {{SITENAME}} bigere", "searchsuggest-containing": "dihundirîne...", - "api-error-filename-tooshort": "Navê dosyeyê pir kurt e.", - "api-error-unclassified": "Çewtiyeke nenas pêk hat.", - "api-error-unknown-code": "Çewtiya nenas: \"$1\".", "api-error-unknownerror": "Çewtiya nenas: \"$1\".", "duration-years": "$1 {{PLURAL:$1|sal}}", + "duration-centuries": "$1 {{PLURAL:$1|sedsal}}", "expand_templates_output": "Encam", "expand_templates_ok": "Baş e", "expand_templates_preview": "Pêşdîtin", diff --git a/languages/i18n/lb.json b/languages/i18n/lb.json index bdc9cef3a9..08789aa4e8 100644 --- a/languages/i18n/lb.json +++ b/languages/i18n/lb.json @@ -185,6 +185,7 @@ "searcharticle": "Säit", "history": "Historique vun der Säit", "history_short": "Versiounen", + "history_small": "Versiounen", "updatedmarker": "geännert zanter ech d'Säit fir d'lescht gekuckt hunn", "printableversion": "Drockversioun", "permalink": "Zitéierfäege Link", @@ -421,19 +422,12 @@ "login": "Aloggen", "login-security": "Iwwerpréift Är Idnetitéit", "nav-login-createaccount": "Aloggen / Benotzerkont uleeën", - "userlogin": "Aloggen / Benotzerkont uleeën", - "userloginnocreate": "Umellen", "logout": "Ofmellen", "userlogout": "Ausloggen", "notloggedin": "Net ageloggt", "userlogin-noaccount": "Hutt Dir kee Benotzerkont?", "userlogin-joinproject": "Maacht mat bei {{SITENAME}}", - "nologin": "Hutt Dir kee Benotzerkont? $1.", - "nologinlink": "Neie Benotzerkont maachen", "createaccount": "Neie Kont opmaachen", - "gotaccount": "Dir hutt schonn e Benotzerkont? '''$1'''.", - "gotaccountlink": "Umellen", - "userlogin-resetlink": "Hutt Dir d'Detailer vun Ärem Login vergiess?", "userlogin-resetpassword-link": "Hutt Dir Äert Passwuert vergiess?", "userlogin-helplink2": "Hëllef beim Aloggen", "userlogin-loggedin": "Dir sidd schonn als {{GENDER:$1|$1}} ageloggt.\nBenotzt de Formulaire hei drënner fir Iech als een anere Benotzer anzeloggen.", @@ -446,7 +440,6 @@ "createaccountmail": "En temporäert zoufällegt Passwuert benotzen an et per E-Mail un déi spezifizéiert E-Mailadress schécken", "createaccountmail-help": "Ka benotzt gi fir e Benotzerkont fir eng aner Persoun unzeleeën ouni d'Passwuert gewuer ze ginn.", "createacct-realname": "Richtegen Numm (fakultativ)", - "createaccountreason": "Grond:", "createacct-reason": "Grond", "createacct-reason-ph": "Fir wat Dir een anere Benotzerkonnt uleet", "createacct-reason-help": "Message deen am Logbuch vun den ugeluechte Benotzerkonte gewise gëtt", @@ -639,8 +632,8 @@ "selfredirect": "<strong>Opgepasst:</strong> Dir maacht eng Viruleedung vun dëser Aäit op sech selwer.\n\nEt ka sinn datt Dir déi falsch Zilsäit fir d'Viruleedung aginn hutt oder datt Dir déi falsch Säit ännert.\n\nWann Dir nach eng Kéier op \"{{int:savearticle}}\" klickt, da gëtt d'Viruleedung trotzdem ugeluecht.", "missingcommenttext": "Gitt w.e.g. eng Bemierkung an.", "missingcommentheader": "<strong>Denkt drun:</strong> Dir hutt kee Sujet fir dës Bemierkung aginn.\nWann Dir nach en Kéier op \"{{int:savearticle}}\" klickt da gëtt Är Ännerung ouni Titel gespäichert.", - "summary-preview": "Resumé kucken ouni ofzespäicheren:", - "subject-preview": "Sujett kucken:", + "summary-preview": "Resumé vun der Ännerung kucken ouni ze späicheren:", + "subject-preview": "Sujet kucken ouni ze späicheren:", "previewerrortext": "Beim Versuch fir Är Ännerungen ze weisen, ass e Feeler geschitt.", "blockedtitle": "Benotzer ass gespaart", "blockedtext": "Äre Benotzernumm oder Är IP-Adress gouf gespaart.\n\nD'Spär gouf vum $1 gemaach. Als Grond gouf ''$2'' uginn.\n\n* Ufank vun der Spär: $8\n* Enn vun der Spär: $6\n* Spär betrëfft: $7\n\nDir kënnt den/d' $1 kontaktéieren oder ee vun den aneren [[{{MediaWiki:Grouppage-sysop}}|Administrateure]] fir iwwer d'Spär ze schwätzen.\n\nDëst sollt Der besonnesch maachen, wann Der d'Gefill hutt, datt de Grond fir d'Spären net bei Iech läit.\nD'Ursaach dofir ass an deem Fall, datt der eng dynamesch IP hutt, iwwer en Access-Provider, iwwer deen och aner Leit fueren.\nAus deem Grond ass et recommandéiert, sech e Benotzernumm zouzeleeën, fir all Mëssverständnes z'evitéieren.\n\nDir kënnt d'Funktioun \"Dësem Benotzer eng E-Mail schécken\" nëmme benotzen, wann Dir eng gëlteg E-Mail Adress bei Ären [[Special:Preferences|Astellungen]] aginn hutt.\nÄr aktuell IP-Adress ass $3 an d'Nummer vun der Spär ass #$5.\nSchreift all dës Informatioune w.e.g. bei all Ufro derbäi.", @@ -935,6 +928,7 @@ "search-interwiki-caption": "Schwësterprojeten", "search-interwiki-default": "Resultater vu(n) $1:", "search-interwiki-more": "(méi)", + "search-interwiki-more-results": "méi Resultater", "search-relatedarticle": "A Verbindung", "searchrelated": "a Verbindng", "searchall": "all", @@ -1023,6 +1017,7 @@ "youremail": "E-Mail-Adress:", "username": "{{GENDER:$1|Benotzernumm}}:", "prefs-memberingroups": "{{GENDER:$2|Member}} vun {{PLURAL:$1|der Benotzergrupp|de Benotzergruppen}}:", + "group-membership-link-with-expiry": "$1 (bis $2)", "prefs-registration": "Zäitpunkt vum Opmaache vum Benotzerkont:", "yourrealname": "Richtegen Numm:", "yourlanguage": "Sprooch:", @@ -1066,17 +1061,22 @@ "userrights-user-editname": "Benotzernumm uginn:", "editusergroup": "Benotzergruppe lueden", "editinguser": "Ännere vun de Rechter vum {{GENDER:$1|Benotzer}} <strong>[[User:$1|$1]]</strong> $2", - "userrights-editusergroup": "Benotzergruppen änneren", - "userrights-viewusergroup": "Benotzergruppe weisen", + "userrights-editusergroup": "{{GENDER:$1|Benotzer}}gruppen änneren", + "userrights-viewusergroup": "{{GENDER:$1|Benotzer}}gruppe weisen", "saveusergroups": "{{GENDER:$1|Benotzer}}gruppe späicheren", "userrights-groupsmember": "Member vun:", "userrights-groupsmember-auto": "Implizit Member vun:", - "userrights-groups-help": "Dir kënnt d'Gruppen zu deenen dëse Benotzer gehéiert änneren.\n* Een ugekräizt Haische bedeit, datt de Benotzer Member vun dëser Grupp ass.\n* Een net ugekräizt Haische bedeit, datt de Benotzer net Member vun dëser Grupp ass.\n* E Stäerchen (*) bedeit datt Dir d'Grupp net méi ewechhuele kënnt wann e bis eemol derbäigesat ass oder gouf.", + "userrights-groups-help": "Dir kënnt d'Gruppen zu deenen dëse Benotzer gehéiert änneren.\n* Een ugekräizt Haische bedeit, datt de Benotzer Member vun dëser Grupp ass.\n* Een net ugekräizt Haische bedeit, datt de Benotzer net Member vun dëser Grupp ass.\n* E Stäerchen (*) bedeit datt Dir d'Grupp net méi ewechhuele kënnt wann e bis eemol dobäigesat ass oder gouf.\n* Eng Raut (#) gëtt un Datt Dir d'Oflafzäit vun dëser Grupp just zrécksetze kënnt; Dir kënnt se net no vir setzen.", "userrights-reason": "Grond:", "userrights-no-interwiki": "Dir hutt net déi néideg Rechter, fir d'Rechter vu Benoutzer op anere Wikien z'änneren.", "userrights-nodatabase": "D'Datebank $1 gëtt et net oder se ass net lokal.", "userrights-changeable-col": "Gruppen déi Dir ännere kënnt", "userrights-unchangeable-col": "Gruppen déi Dir net ännere kënnt", + "userrights-expiry-current": "Bis $1", + "userrights-expiry-none": "Leeft net of", + "userrights-expiry": "Valabel bis:", + "userrights-expiry-othertime": "Aner Zäit:", + "userrights-expiry-options": "1 Dag:1 day,1 Woch:1 week,1 Mount:1 month,3 Méint:3 months,6 Méint:6 months,1 Joer:1 year", "userrights-conflict": "Konflikt bei de Benotzerrechter! Kuckt Är Ännerunge w.e.g. no a maacht se w.e.g. nach eng Kéier.", "group": "Grupp:", "group-user": "Benotzer", @@ -1267,21 +1267,31 @@ "recentchanges-legend-plusminus": "''(±123)''", "recentchanges-submit": "Weisen", "rcfilters-activefilters": "Aktiv Filteren", + "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-invalid-filter": "Net valabele Filter", "rcfilters-filterlist-title": "Filteren", + "rcfilters-highlightmenu-title": "Eng Faarf eraussichen", "rcfilters-filterlist-noresults": "Keng Filtere fonnt", "rcfilters-filter-editsbyself-label": "Är eegen Ännerungen", "rcfilters-filter-editsbyself-description": "Ännerunge vun Iech.", "rcfilters-filter-editsbyother-label": "Ännerunge vun Aneren", "rcfilters-filter-editsbyother-description": "Ännerunge vun anere Benotzer (net vun Iech).", - "rcfilters-filtergroup-userExpLevel": "Niveau vun der Erfahrung vum Benotzer", - "rcfilters-filter-userExpLevel-newcomer-label": "Neier", - "rcfilters-filter-userExpLevel-newcomer-description": "Ganz nei Auteuren: manner wéi 10 Ännerungen a manner wéi 4 Deeg Aktivitéit.", - "rcfilters-filter-userExpLevel-learner-label": "Ufänger", - "rcfilters-filter-userExpLevel-learner-description": "Aktivitéit vu méi Deeg a méi Ännerunge wéi 'Nei Benotzer' awer manner wéi 'Erfuere Benotzer'.", - "rcfilters-filter-userExpLevel-experienced-label": "Erfuere Benotzer.", - "rcfilters-filter-userExpLevel-experienced-description": "Méi wéi 30 Deeg Aktivitéit a méi wéi 500 Ännerungen.", + "rcfilters-filtergroup-userExpLevel": "Niveau vun der Erfahrung (just fir registréiert Benotzer)", + "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", + "rcfilters-filter-user-experience-level-learner-description": "Aktivitéit vu méi Deeg a méi Ännerunge wéi ''Nei Benotzer'' awer manner wéi ''Erfuere Benotzer''.", + "rcfilters-filter-user-experience-level-experienced-label": "Erfuere Benotzer.", + "rcfilters-filter-user-experience-level-experienced-description": "Méi wéi 30 Deeg Aktivitéit a méi wéi 500 Ännerungen.", + "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-filter-minor-label": "Kleng Ännerungen", + "rcfilters-filter-major-label": "Keng kleng Ännerungen", + "rcfilters-filter-pageedits-label": "Säitenännerungen", "rcnotefrom": "Hei drënner {{PLURAL:$5|gëtt d'Ännerung|ginn d'Ännerungen}} zanter <strong>$3, $4</strong> (maximal <strong>$1</strong> Ännerunge gi gewisen).", "rclistfrom": "Nei Ännerunge vum $3 $2 u weisen", "rcshowhideminor": "Kleng Ännerunge $1", @@ -1406,7 +1416,7 @@ "upload-scripted-pi-callback": "Et ass net méiglech XML-Fichieren eropzelueden an deenen XML-Stylesheet Instruktioune fir d'Verschaffen drastinn", "uploaded-hostile-svg": "Net sécheren CSS am Stilelement vum eropgeluedene SVG-Fichier fonnt.", "uploaded-image-filter-svg": "Bildfilter mat der URL: <code><$1 $2=\"$3\"></code> am eropgeluedenen SVG-Fichier fonnt.", - "uploadscriptednamespace": "An dësem SVG-Fichier ass en illegalen Nummraum \"$1\"", + "uploadscriptednamespace": "An dësem SVG-Fichier ass en illegalen Nummraum \"<nowiki>$1</nowiki>\"", "uploadinvalidxml": "Den XML am eropgelueden Fichier konnt net verschafft ginn.", "uploadvirus": "An dësem Fichier ass ee Virus! Detailer: $1", "uploadjava": "An dësem ZIP-Fichier ass e JAVA CLASS-Fichier dran.\nD'Eropluede vu JAVA-Fichieren ass net erlaabt, well si d'Ëmgoe vu Sécherheetsmoossnamen erméigleche kënnen.", @@ -1765,8 +1775,8 @@ "apisandbox-results": "Resultater", "apisandbox-sending-request": "Schécke vun der API-Ufro...", "apisandbox-loading-results": "Ofruffe vun den API-Resultater...", - "apisandbox-request-params-json": "JSON-Parameteren:", "apisandbox-request-url-label": "URL fir Ufroen:", + "apisandbox-request-json-label": "JSON-Ufro:", "apisandbox-request-time": "Dauer vun der Ufro: {{PLURAL:$1|$1 ms}}", "apisandbox-alert-page": "Felder op dëser Säit sinn net valabel.", "apisandbox-alert-field": "De wäert vun dësem Feld ass net valabel.", @@ -1899,7 +1909,7 @@ "emailccsubject": "Kopie vun denger Noriicht un $1: $2", "emailsent": "E-Mail geschéckt", "emailsenttext": "Är E-Mail gouf fortgeschéckt.", - "emailuserfooter": "Dës E-Mail gouf {{GENDER:$1|vum}} $1 {{GENDER:$2|dem}} $2 geschéckt dobäi gouf d'Funktioun \"{{int:emailuser}}\" op {{SITENAME}} benotzt. {{GENDER:$2|Är}} E-Mail gëtt direkt un den {{GENDER:$1|originalen Absender}} geschéckt do bäi gesäit {{GENDER:$1|deen}} {{GENDER:$2|Är}} E-Mail-Adress.", + "emailuserfooter": "Dës E-Mail gouf {{GENDER:$1|vum}} $1 {{GENDER:$2|dem}} $2 geschéckt dobäi gouf d'Funktioun \"{{int:emailuser}}\" op {{SITENAME}} benotzt.Wann {{GENDER:$2|Dir}} op dës E-Mail äntwert, gëtt {{GENDER:$2|Är}} E-Mail direkt un den {{GENDER:$1|originalen Absender}} geschéckt dobäi gesäit {{GENDER:$1|deen}} {{GENDER:$2|Är}} E-Mail-Adress.", "usermessage-summary": "Benoriichtegung hannerloossen.", "usermessage-editor": "Benoriichtegungs-System", "watchlist": "Iwwerwaachungslëscht", @@ -1996,7 +2006,7 @@ "editcomment": "De Resumé vun der Ännerung war: <em>$1</em>.", "revertpage": "Ännerunge vum [[Special:Contributions/$2|$2]] ([[User talk:$2|Diskussioun]]) zréckgesat op déi lescht Versioun vum [[User:$1|$1]]", "revertpage-nouser": "Zréckgesaten Ännerungen duerch e verstoppte Benotzer op déi lescht Versioun vum {{GENDER:$1|[[User:$1|$1]]}}", - "rollback-success": "D'Ännerunge vum $1 goufen zréckgesat op déi lescht Versioun vum $2.", + "rollback-success": "D'Ännerunge vum {{GENDER:$3|$1}} goufen zréckgesat op déi lescht Versioun vum {{GENDER:$4|$2}}.", "rollback-success-notify": "Zréckgesat Ännerunge vum $1:\nzréckgeännert op déi lescht Versioun vum $2. [$3 Ännerunge weisen]", "sessionfailure-title": "Setzungsfeeler", "sessionfailure": "Et schéngt e Problem mat Ärer Loginseance ze ginn;\nDës Aktioun gouf aus Sécherheetsgrënn ofgebrach, fir ze verhënneren datt Är Seance piratéiert ka ginn.\nKlickt w.e.g. op \"Zréck\" a luet déi Säit vun där Dir komm sidd nei, a versicht et dann nach eng Kéier.", @@ -3342,7 +3352,7 @@ "logentry-upload-revert": "$1 huet $3 {{GENDER:$2|eropgelueden}}", "logentry-tag-update-add-revision": "$1 {{GENDER:$2|huet}} d'{{PLURAL:$7|Markéierung|Markéierunge(n)}} $6 op d'Versioun $4 vun der Säit $3 dobäigesat", "rightsnone": "(keen)", - "revdelete-summary": "Resumé änneren", + "rightslogentry-temporary-group": "$1 (temporär, bis $2)", "feedback-adding": "Feedback gëtt bei d'Säit derbäigesat...", "feedback-back": "Zréck", "feedback-bugcheck": "Super! Kuckt just no ob et net ee vun de scho [$1 bekannte Feeler] ass.", @@ -3364,53 +3374,12 @@ "feedback-useragent": "User Agent:", "searchsuggest-search": "Op {{SITENAME}} sichen", "searchsuggest-containing": "mat ...", - "api-error-autoblocked": "Är IP-Adress gouf automatesch gespaart wëll se vun engem gespaarte Benotzer benotzt gouf", - "api-error-badaccess-groups": "Et ass Iech net erlaabt fir Fichieren op dës Wiki eropzelueden.", "api-error-badtoken": "Interne Feeler: falschen Token.", - "api-error-blocked": "Dir gouft gespaart a kënnt dofir keng Ännerunge maachen.", - "api-error-copyuploaddisabled": "D'Eroplueden iwwer eng URL ass op dësem Server desaktivéiert.", - "api-error-duplicate": "Et gëtt schonn {{PLURAL:$1|een anere Fichier|e puer aner Fichiere}} mam selwechten Inhalt um Site", - "api-error-duplicate-archive": "Et gouf schonn {{PLURAL:$1|een anere Fichier|e puer aner Fichieren}} um Site mam selwechten Inhalt, {{PLURAL:$1|e gouf|se goufen}} awer geläscht.", - "api-error-empty-file": "De Fichier deen Dir geschéckt hutt war eidel.", "api-error-emptypage": "Et ass net erlaabt nei, eidel Säiten unzeleeën.", - "api-error-fetchfileerror": "Interne Feeler: beim Opruffe vum Fichier huet eppes net funktionéiert.", - "api-error-fileexists-forbidden": "E Fichier mam Numm \"$1\" gëtt et schonn an e kann net iwwerschriwwe ginn.", - "api-error-fileexists-shared-forbidden": "E Fichier mam Numm \"$1\" gëtt et schonn am gedeelte Repertoire an e kann net iwwerschriwwe ginn.", - "api-error-file-too-large": "De Fichier deen Dir geschéckt hutt war ze grouss.", - "api-error-filename-tooshort": "Den Numm vum Fichier ass ze kuerz.", - "api-error-filetype-banned": "Dësen Typ vu Fichier ass net zougelooss.", - "api-error-filetype-banned-type": "$1 {{PLURAL:$4|ass e Fichiersformat deen net erlaabt ass|si Fichiersformater déi net erlaabt sinn}}. Erlaabt {{PLURAL:$3|ass de Fichiersformat|sinn d'Fichiersformater}}: $2.", - "api-error-filetype-missing": "D'Erweiderung vum Fichier feelt.", - "api-error-hookaborted": "D'Ännerung déi Dir versicht hutt ze maachen ass duerch en 'extension-hook' ofgebrach ginn.", - "api-error-http": "Interne Feeler: net méiglech sech op de Server ze connectéieren.", - "api-error-illegal-filename": "Den Numm vum Fichier ass net erlaabt.", - "api-error-internal-error": "Interne Feeler: Et ass eppes schif gaang beim Verschaffe vum eropgeluedene Fichier op der Wiki.", - "api-error-invalid-file-key": "Interne Feeler: de Fichier gouf op der temporärer Späicherplaz net fonnt.", - "api-error-missingparam": "Interne Feeler: E vun de Parameter feelt an der Ufro.", - "api-error-missingresult": "Interne Feeler: et konnt net festgestallt ginn ob d'Kopie eppes ginn ass.", - "api-error-mustbeloggedin": "Dir musst ageloggt si fir Fichieren eropzelueden.", - "api-error-mustbeposted": "An dëser Software ass e Feeler; se benotzt net déi richteg HTTP-Method.", - "api-error-noimageinfo": "D'Eroplueden huet funktionéiert, awer de Server huet eis keng Informatiounen iwwer de Fichier ginn.", - "api-error-nomodule": "Interne Feeler: de Modul fir d'Eroplueden ass net agestallt.", - "api-error-ok-but-empty": "Interne Feeler: keng Äntwert vum Server.", - "api-error-overwrite": "D'Iwwerschreiwe vun engem Fichier ass net erlaabt.", - "api-error-ratelimited": "Dir probéiert fir méi ££Fichieren a kuerzer Zäit eropzeluede wéi der op dëser Wiki erlaabt sinn. Probéiert w.e.g. an e puer Minutten nach eng Kéier.", - "api-error-stashfailed": "Interne Feeler: de Server konnt den temporäre Fichier net späicheren.", "api-error-publishfailed": "Interne Feeler: de Server konnt den temporäre Fichier net publizéieren.", - "api-error-stasherror": "Beim Eropluede vum Fichier ass e Feeler geschitt.", - "api-error-stashfilestorage": "Beim Späichere vum Fichier ass ee Feeler geschitt.", - "api-error-stashzerolength": "De Server konnt de Fichier net späicheren, well en eng Längt vun Null hat.", - "api-error-stashnotloggedin": "Dir musst ageloggt si fir Fichiere späicheren ze kënnen.", - "api-error-stashnosuchfilekey": "De Schlëssel vum Fichier op deen Dir am Späicher zréckgräife wëllt gëtt et net.", - "api-error-timeout": "De Server huet net bannen där Zäit geäntwert déi virgesinn ass.", - "api-error-unclassified": "En onbekannte Feeler ass geschitt", - "api-error-unknown-code": "Onbekannte Feeler: \"$1\"", - "api-error-unknown-error": "Interne Feeler: beim Versuch fir Äre Fichier eropzelueden ass eppes schif gaang", + "api-error-stashfailed": "Interne Feeler: de Server konnt den temporäre Fichier net späicheren.", "api-error-unknown-warning": "Onbekannte Warnung: \"$1\".", "api-error-unknownerror": "Onbekannte Feeler: \"$1\".", - "api-error-uploaddisabled": "D'Eroplueden ass op dëser Wiki ausgeschalt.", - "api-error-verification-error": "Dëse Fichier kéint korrupt sinn, oder en huet eng falsch Erweiderung.", - "api-error-was-deleted": "E Fichier mat dësem Numm gouf virdrun eropgelueden an duerno geläscht.", "duration-seconds": "$1 {{PLURAL:$1|Sekonn|Sekonnen}}", "duration-minutes": "$1 {{PLURAL:$1|Minutt|Minutten}}", "duration-hours": "$1 {{PLURAL:$1|Stonn|Stonnen}}", @@ -3513,6 +3482,7 @@ "mw-widgets-titleinput-description-new-page": "Säit gëtt et nach net", "mw-widgets-titleinput-description-redirect": "viruleeden op $1", "mw-widgets-categoryselector-add-category-placeholder": "Eng Kategorie derbäisetzen...", + "mw-widgets-usersmultiselect-placeholder": "Méi derbäisetzen...", "sessionprovider-generic": "$1-Sessiounen", "sessionprovider-mediawiki-session-cookiesessionprovider": "cookie-baséiert Sessiounen", "sessionprovider-nocookies": "Cookië sinn eventuell desaktivéiert. Vergewëssert Iech datt Dir d'Cookien aktivéiert hutt a probéiert nach eng Kéier.", diff --git a/languages/i18n/lfn.json b/languages/i18n/lfn.json index 3a8e61bc3c..1d786c20f6 100644 --- a/languages/i18n/lfn.json +++ b/languages/i18n/lfn.json @@ -6,38 +6,62 @@ "Malafaya", "Reedy", "Urhixidur", - "아라" + "아라", + "Katxis", + "Chabi" ] }, "tog-underline": "Sulinia lias:", "tog-hideminor": "Asconda 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 ce me ia creada a me lista de pajes oservada", - "tog-watchdefault": "Junta pajes ce me ia edita a me lista de pajes oservada", - "tog-watchmoves": "Junta pajes ce me ia moveda a me lista de pajes oservada", - "tog-watchdeletion": "Junta pajes ce me ia sutrae a me lista de pajes oservada", + "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-previewonfirst": "Mostra la previde a la edita prima", - "tog-enotifwatchlistpages": "Envia un eposta a me cuando un paje ce me oserva es cambiada", + "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 edita minor de pajes", + "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-fancysig": "Sinias simple (sin lia automatica)", + "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-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-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": "Surfador costumal", + "underline-default": "Inisial de pel o surfador", + "editfont-style": "Edita area de stilo de leteras", + "editfont-default": "Inisial de surfador", + "editfont-monospace": "Leteras monospasida", + "editfont-sansserif": "Leteras sin serifes", + "editfont-serif": "Leteras con serifes", "sunday": "soldi", "monday": "lundi", "tuesday": "martedi", @@ -88,6 +112,20 @@ "oct": "oto", "nov": "nov", "dec": "des", + "january-date": "$1 janero", + "february-date": "$1 febrero", + "march-date": "$1 marto", + "april-date": "$1 april", + "may-date": "$1 maio", + "june-date": "$1 junio", + "july-date": "$1 julio", + "august-date": "$1 agosto", + "september-date": "$1 setembre", + "october-date": "$1 otobre", + "november-date": "$1 novembre", + "december-date": "$1 desembre", + "period-am": "am", + "period-pm": "pm", "pagecategories": "{{PLURAL:$1|Categoria|Categorias}}", "category_header": "Articles en categoria \"$1\"", "subcategories": "Sucategorias", @@ -95,15 +133,25 @@ "category-empty": "''Aora, esta categoria no conteni pajes o medio.''", "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, entre $2 tota.}}", + "category-subcat-count-limited": "Esta categoria ave la {{PLURAL:$1|sucategoria|$1sucategorias}} seguente.", + "category-article-count": "{{PLURAL:$2|Esta categoria conteni sola la paje seguente.|La {{PLURAL:$1|paje es|$1 pajes es}} seguente en esta categoria, estra $2 tota.}}", + "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, estra $2 tota.}}", + "category-file-count-limited": "The {{PLURAL:$1|fix|$1 fixes}} seguente es en la categoria presente.", "listingcontinuesabbrev": "cont.", + "index-category": "Pajes indiseda", + "noindex-category": "Pajes nonindiseda", + "broken-file-category": "Pajes con lias rompeda de fixes", "about": "Supra", "article": "Paje de contenis", "newwindow": "(va abri en fenetra nova)", "cancel": "Cansela", "moredotdotdot": "Plu...", - "mypage": "Me paje", + "morenotlisted": "Esta lista es posible noncompleta.", + "mypage": "Paje", "mytalk": "Discutes", - "anontalk": "Discutes per esta IP", + "anontalk": "Discute", "navigation": "Naviga", "and": " e", "qbfind": "Trova", @@ -111,32 +159,46 @@ "qbedit": "Edita", "qbpageoptions": "Esta paje", "qbmyoptions": "Me pajes", + "faq": "Demandas comun", + "faqpage": "Project: Demandas comun", + "actions": "Atas", + "namespaces": "Locas de nom", + "variants": "Varias", + "navigation-heading": "Menu per naviga", "errorpagetitle": "Era", "returnto": "Restora a $1.", "tagline": "De {{SITENAME}}", "help": "Disionario", "search": "Xerca", + "search-ignored-headings": " #<!-- leave this line exactly as it is --> <pre>\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 #</pre> <!-- leave this line exactly as it is -->", "searchbutton": "Xerca", "go": "Vade", "searcharticle": "Vade", "history": "Istoria de paje", "history_short": "Istoria", + "history_small": "istoria", "updatedmarker": "renovida de me visita presedente", "printableversion": "Varia primable", "permalink": "Lia permanente", "print": "Primi", + "view": "Vide", + "view-foreign": "Vide a $1", "edit": "Cambia", + "edit-local": "Edita descrive local", "create": "Crea", + "create-local": "Ajunta descrive local", "editthispage": "Cambia esta paje", "create-this-page": "Crea esta paje", "delete": "Sutrae", "deletethispage": "Sutrae esta paje", + "undeletethispage": "Desutrae esta paje", "undelete_short": "Desutrae {{PLURAL:$1|edita|editas}}", + "viewdeleted_short": "Vide {{PLURAL:$1|un edit desutraeda|$1 editas desutraeda}}", "protect": "Proteje", "protect_change": "cambia", "protectthispage": "Proteje esta paje", - "unprotect": "desproteje", - "unprotectthispage": "Desproteje esta paje", + "unprotect": "Cambia la proteje", + "unprotectthispage": "Cambia la proteje de esta paje", "newpage": "Paje nova", "talkpage": "Discute esta paje", "talkpagelinktext": "Parla", @@ -146,6 +208,9 @@ "talk": "Discutes", "views": "Vides", "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}}", "userpage": "Vide paje de usor", "projectpage": "Vide la paje de projeta", "imagepage": "Vide paje de fix", @@ -157,11 +222,15 @@ "otherlanguages": "En otra linguas", "redirectedfrom": "(Redirijeda de $1)", "redirectpagesub": "Redireta la paje", + "redirectto": "Redirije a:", + "lastmodifiedat": "Esta paje ia es cambiada a $1, a $2", "viewcount": "Esta paje es asesada a $1 {{PLURAL:$1|ves|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.", "aboutsite": "Supra {{SITENAME}}", "aboutpage": "Project:Supra", "copyrightpage": "{{ns:project}}:Diretos de autor", @@ -170,6 +239,7 @@ "disclaimers": "Negas de respondablia", "disclaimerpage": "Project:Nega jeneral de respondablia", "edithelp": "Aida con edita", + "helppage-top-gethelp": "Aida", "mainpage": "Paje Prima", "mainpage-description": "Paje Prima", "policy-url": "Project:Politica", @@ -190,11 +260,17 @@ "toc": "Contenida", "showtoc": "mostra", "hidetoc": "asconde", + "collapsible-collapse": "Colasa", + "collapsible-expand": "Estende", + "confirmable-confirm": "Esce {{GENDER:$1|tu}} es serta?", + "confirmable-yes": "Si", + "confirmable-no": "No", "viewdeleted": "Vide $1?", "feedlinks": "Flue:", "site-rss-feed": "$1 RSS Flue", "site-atom-feed": "$1 Atom Flue", "page-rss-feed": "\"$1\" RSS Flue", + "page-atom-feed": "\"$1\" Enflue de atom", "red-link-title": "$1 (paje no esiste)", "nstab-main": "Paje", "nstab-user": "Paje de usor", @@ -206,6 +282,7 @@ "nstab-template": "Model", "nstab-help": "Paje de aida", "nstab-category": "Categoria", + "mainpage-nstab": "Paje Prima", "error": "Era", "databaseerror": "Era de base de datos", "missingarticle-diff": "(Difere: $1, $2)", @@ -215,42 +292,85 @@ "badtitletext": "La titulo de la paje tu ia desira ia es nonlegal, es vacua, o es un titulo intervici o interlingual no liada coreta. Es posable ce es un o plu simboles ce no pote es usada en titulos.", "viewsource": "Vide la orijin", "viewsourcetext": "Tu pote vide e copia la orijin 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.", + "welcomeuser": "Bonveni, $1!", "yourname": "Nom de usor:", + "userlogin-yourname": "Nom de usor", + "userlogin-yourname-ph": "Entra tua nom de usor", "yourpassword": "Sinia de entra:", + "userlogin-yourpassword": "Clave", + "userlogin-yourpassword-ph": "Entra tua sinia secreta", + "createacct-yourpassword-ph": "Entra un sinia secreta", "yourpasswordagain": "Retape la sinia:", + "createacct-yourpasswordagain": "Confirma la sinia secreta", + "createacct-yourpasswordagain-ph": "Entra un sinia secreta denova", + "userlogin-remembermypassword": "Reteni me como identifiada", "yourdomainname": "Tu domina:", "login": "Identifia", "nav-login-createaccount": "Sinia per entra", "userlogin": "Sinia per entra", "logout": "Retira", "userlogout": "Sinia per retira", + "userlogin-noaccount": "Tu no ave un conta?", + "userlogin-joinproject": "Crea un conta con {{SITENAME}}", "nologin": "Tu no ave un conta? '''$1'''.", "nologinlink": "Crea un conta", "createaccount": "Crea un conta", "gotaccount": "Tu ave ja un conta? '''$1'''.", "gotaccountlink": "Sinia per entra", + "userlogin-resetpassword-link": "Tu ia oblida tua sinia secreta?", + "userlogin-helplink2": "Aida me per identifia me", + "createacct-emailrequired": "Adirije de e-posta", + "createacct-emailoptional": "Adirije de e-posta (elejable)", + "createacct-email-ph": "Entra tua adirije de e-posta", + "createacct-another-email-ph": "Entra tua adirije de e-posta", + "createaccountreason": "Razona:", + "createacct-reason": "Razona:", + "createacct-submit": "Crea tua conta", + "createacct-another-submit": "Crea un conta", + "createacct-benefit-heading": "{{SITENAME}} es fabricada 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}}", "loginerror": "Era de entra", - "loginsuccesstitle": "Entra susedente", + "loginsuccesstitle": "Tu ia entra", "loginsuccess": "'''Tu ia entrada aora a {{SITENAME}} como \"$1\".'''", - "nosuchuser": "Es no usor con la nom \"$1\".\nEsamina la spele, o [[Special:CreateAccount|crea un conta nova]].", + "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": "Tu sinia secreta no es legal o es tro corta.\nEl debe ave a min {{PLURAL:$1|1 simbol|$1 simboles}} e debe difere de tu nom de usor.", - "mailmypassword": "Envia la sinia secreta nova par eposta", + "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 ce nos envia a tu un sinia secreta nova per {{SITENAME}} ($4).\nLa sinia secreta per usor \"$2\" es aora \"$3\".\nTu debe sinia per entra e cambia tu sinia secreta aora.\n\nSi algun otra ce tu ia envia esta demanda a nos, o si tu ia recorda tu sinia secreta e no vole cambia el aora, tu pote iniora esta mesaje e continua usa tu sinia secreta vea.", + "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 proposada.\nAnte alga otra eposta es enviada a la conta, tu va nesesa segue la instruis en la eposta, per serti ce la conta es vera de tu.", + "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", "loginlanguagelabel": "Lingua: $1", + "pt-login": "Identifia se", + "pt-login-button": "Identifia tua", + "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 sinia secreta", + "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 forte", "bold_tip": "Testo en leteras forte", "italic_sample": "Testo en leteras italica", @@ -268,22 +388,28 @@ "sig_tip": "Tu sinia con la primi de la ora", "hr_tip": "Linia orizonal (usa nonfrecuente)", "summary": "Soma:", - "subject": "Sujeto/titulo:", + "subject": "Sujeto:", "minoredit": "Esta es un cambia minor", "watchthis": "Oserva esta paje", "savearticle": "Fisa paje", + "publishpage": "Publici paje", + "publishchanges": "Publica la cambias", "preview": "Previde", "showpreview": "Mostra previde", "showdiff": "Mostra diferes", - "anoneditwarning": "'''Avisa:''' Tu no ia sinia per entra.\nTu adirije de IP va es memorada en la istoria de revisas de esta paje.", + "anoneditwarning": "'''Avisa:''' Tu no ia identifia se.\nTu adirije de IP va es memorada en la istoria de revisas de esta paje. Si tu <strong>[$1 identifia se]</strong> o <strong>[$2 crea un conta]</strong>, tua editas va es atribuida a tua nom de usor, con otra benefias.", "summary-preview": "Previde soma:", "blockedtitle": "Usor es impedida", "blockedtext": "'''Tu nom de usor o adirije de IP ia es impedida.'''\n\nLa impedi ia es fada par $1.\nLa razon donada es ''$2''.\n\n* Comensa de impedi: $8\n* Fini de impedi: $6\n* Ci algun intende impedi: $7\n\nTu pote contata $1 o un otra [[{{MediaWiki:Grouppage-sysop}}|dirijor]] per discute esta impedi.\nTu no pote usa la 'envia un eposta a esta usor' sin un adirije de eposta legal es indicada en tu\n[[Special:Preferences|preferis de conta]] e tu no es impedida de usa el.\nTu adirije de IP es aora $3, e la identia de la impedi es #$5.\nPer favore inclui tota esta detales en tu demandas.", + "loginreqtitle": "Entra de identia nesesada", + "loginreqlink": "Identifia se", "newarticle": "(Nova)", "newarticletext": "Tu ia segue un lia a un paje ce no esista ja.\nPer crea la paje, comensa scrive en la caxa a su\n(vide la [$1 paje de aida] per plu).\nSi tu es asi par era, clica a la boton '''retro''' de tu surfador.", - "noarticletext": "Es aora no testo a esta paje.\nTu pote [[Special:Search/{{PAGENAME}}|xerca per la titulo de esta paje]] en otra pajes,\n<span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} xerca la arcivos relatada],\no [{{fullurl:{{FULLPAGENAME}}|action=edit}} edita esta paje]</span>.", + "noarticletext": "On ave aora no testo a esta paje.\nTu pote [[Special:Search/{{PAGENAME}}|xerca per la titulo de esta paje]] en otra pajes,\n<span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} xerca la arcivos relatada],\no [{{fullurl:{{FULLPAGENAME}}|action=edit}} edita esta paje]</span>.", + "noarticletext-nopermission": "On ave presente no testo en esta paje.\nTu pote [[Special:Search/{{PAGENAME}}|xerca per esta titulo de paje]] en otra pajes, o <span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} xerca arcivos relatada]</span>, ma tu no es permeteda per crea esta paje.", "previewnote": "'''Esta sola un previde; cambias no es fisada ja'''", "editing": "En la prosede de edita $1", + "creating": "Creante $1", "editingsection": "Edita $1 (sesion)", "editingcomment": "Edita $1 (sesion nova)", "yourdiff": "Diferes", @@ -292,8 +418,11 @@ "templatesusedpreview": "{{PLURAL:$1|Modele|Modeles}} usada en esta previde:", "template-protected": "(protejeda)", "template-semiprotected": "(proteje en parte)", + "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]].", - "recreate-moveddeleted-warn": "'''Avisa: Tu es recrea un paje ce ia es sutraed en la pasada.'''\nTu debe pensa ce es bon continua edita esta paje.\nLa arcivo de sutraes per esta paje es asi per conveni:", + "permissionserrorstext-withaction": "Tua no es permeteda per $2, per la {{PLURAL:$1|razona|razonas}} seguente:", + "recreate-moveddeleted-warn": "<strong>Avisa: Tu es recreante un paje cual ia es sutraeda a ante.</strong>\nTu debe pensa si la continua de edita de esta paje conveni.\nLa arcivo de sutraes e moves per esta paje es asi per tua conveni:", + "moveddeleted-notice": "Esta paje ia es sutraeda.\nLa arcivo de sutraes e moves per la paje es furnida a su per refere.", "viewpagelogs": "Vide la arcivo de esta paje", "currentrev": "Cambia presente", "currentrev-asof": "Cambia presente a departi di $1", @@ -309,32 +438,56 @@ "page_last": "final", "histlegend": "Diferente eleje: Marca la caxas de radio de esta varias per compare e clica entra o la boton a la funda.<br />\n(presente) = difere de la varia presente,\n(presedente) = difere con varia presedente, M = edita minor.", "history-fieldset-title": "Surfa istoria", - "histfirst": "Prima", - "histlast": "Ultima", + "histfirst": "La plu vea", + "histlast": "La plu nova", "historysize": "({{PLURAL:$1|1 otuple|$1 otuples}})", "historyempty": "(vacua)", "history-feed-title": "Istoria de revises", "history-feed-item-nocomment": "$1 a $2", "rev-delundel": "mostra/asconde", + "rev-showdeleted": "mostra", + "revdelete-show-file-submit": "Si", + "revdelete-radio-set": "Ascondeda", + "revdelete-radio-unset": "Vidable", + "pagehist": "Istoria de paje", + "deletedhist": "Istoria sutraeda", "history-title": "Istoria de cambias de \"$1\"", + "difference-title": "Difere entre revisas de \"$1\"", "lineno": "Linia $1:", "compareselectedversions": "Compare varias elejeda", "editundo": "desfa", + "diff-multi-sameuser": "({{PLURAL:$1|Un revisa media|$1 revisas media}} par la mesma usor no mostrada)", "searchresults": "Resultas de xerca", + "searchresults-title": "Xerca la resultas per \"$1\"", "prevn": "{{PLURAL:$1|$1}} presedente", "nextn": "{{PLURAL:$1|$1}} seguente", + "nextn-title": "Seguente $1 {{PLURAL:$1|resulta|resultas}}", + "shown-title": "Mostra $1 {{PLURAL:$1|resulta|resultas}} per paje", "viewprevnext": "Vide ($1 {{int:pipe-separator}} $2) ($3)", + "searchmenu-new": "<strong>Crea la paje \"[[:$1]]\" a esta wiki!</strong> {{PLURAL:$2|0=|Vide ance la paje trovada con tua xerca.|Vide ance la resultas trovada par la xerca.}}", + "searchprofile-articles": "Pajes de contenis", + "searchprofile-images": "Multimedios", + "searchprofile-everything": "Tota", + "searchprofile-advanced": "Avansada", + "searchprofile-articles-tooltip": "Xerca en $1", + "searchprofile-images-tooltip": "Xerca per fixes", + "searchprofile-everything-tooltip": "Xerca tota contenidas (incluinte pajes de conversa)", + "searchprofile-advanced-tooltip": "Xerca en nomspasios unica", "search-result-size": "$1 ({{PLURAL:$2|1 parola|$2 parolas}})", + "search-redirect": "(redirije de $1)", "search-section": "(sesion $1)", + "search-suggest": "Tu ia intende: $1", "search-interwiki-default": "Resultas de $1:", "search-interwiki-more": "(plu)", "searchall": "tota", + "search-showingresults": "{{PLURAL:$4|Resulta <strong>$1</strong> de <strong>$3</strong>|Resultas <strong>$1 - $2</strong> de <strong>$3</strong>}}", + "search-nonefound": "On ave no resultas cual conforma con la demanda.", + "powersearch-toggleall": "Tota", + "powersearch-togglenone": "Zero", "preferences": "Preferis", "mypreferences": "Preferis", "skin-preview": "Previde", "saveprefs": "Fisa", - "rows": "Linias:", - "columns": "Colonas:", "searchresultshead": "Xerca", "savedprefs": "Tu preferis es fisada", "timezoneregion-africa": "Africa", @@ -349,16 +502,16 @@ "timezoneregion-pacific": "Mar Pasifica", "prefs-files": "Fixes", "youremail": "Eposta:", - "username": "Nom de usor:", - "prefs-memberingroups": "Membro de la {{PLURAL:$1|grupo|grupos}}:", + "username": "{{GENDER:$1|Nom de usor}}:", + "prefs-memberingroups": "{{GENDER:$2|Membro}} de {{PLURAL:$1|grupo|grupos}}:", "yourrealname": "Nom vera:", "yourlanguage": "Lingua:", "yournick": "Suscrive:", - "yourgender": "Seso:", - "gender-male": "Mas", - "gender-female": "Fema", + "yourgender": "Como tu prefere ce tu es descriveda?", + "gender-male": "El edita pajes de wiki", + "gender-female": "El edita pajes de wiki", "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.", + "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-signature": "Suscrive", "userrights": "Dirije de la diretos de usores", "saveusergroups": "Fisa la grupo de usores", @@ -366,23 +519,43 @@ "group-user": "Usores", "group-sysop": "Dirijores", "group-all": "(tota)", - "group-user-member": "Usor", + "group-user-member": "{{GENDER:$1|usor}}", "grouppage-user": "{{ns:project}}:Usores", "grouppage-sysop": "{{ns:project}}:Dirijores", + "right-writeapi": "Usa de la API de scrive", + "newuserlogpage": "Arcivo de creas de usor", "rightslog": "Catalogo de diretos de usor", "action-edit": "edita esta paje", "nchanges": "$1 {{PLURAL:$1|cambia|cambias}}", + "enhancedrc-history": "istoria", "recentchanges": "Cambias resente", + "recentchanges-legend": "Elejes per cambias resente", "recentchanges-summary": "Asi la lista de cambias resente en la vici.", "recentchanges-feed-description": "Seque la cambias plu resente a la vici en esta flue.", + "recentchanges-label-newpage": "Esta edita ia crea un paje nova", + "recentchanges-label-minor": "Esta es un edita minor", + "recentchanges-label-bot": "Esta edita ia es fada par un bot", + "recentchanges-label-unpatrolled": "Esta edita no ia es ja patruliada", + "recentchanges-label-plusminus": "La grandia de esta paje es cambiada par esta cuantia de baites", + "recentchanges-legend-heading": "<strong>Titulo:</strong>", + "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (vide ance [[Special:NewPages|la lista de pajes nova]])", "rcnotefrom": "A su es la cambias de '''$2''' (asta '''$1''' es mostrada).", "rclistfrom": "Mostra cambias nova, comensante de $3 $2", "rcshowhideminor": "$1 editas minor", + "rcshowhideminor-show": "Mostra", + "rcshowhideminor-hide": "Asconde", "rcshowhidebots": "$1 botes", - "rcshowhideliu": "$1 usores ativa aora", + "rcshowhidebots-show": "Mostra", + "rcshowhidebots-hide": "Asconde", + "rcshowhideliu": "$1 usores identifiada aora", + "rcshowhideliu-hide": "Asconde", "rcshowhideanons": "$1 usores sin nom", + "rcshowhideanons-show": "Mostra", + "rcshowhideanons-hide": "Asconde", "rcshowhidepatr": "$1 editas patroliada", "rcshowhidemine": "$1 me editas", + "rcshowhidemine-show": "Mostra", + "rcshowhidemine-hide": "Asconde", "rclinks": "Mostra la $1 cambias presedente en la $2 dias presedente<br />$3", "diff": "dife", "hist": "isto", @@ -391,7 +564,8 @@ "minoreditletter": "m", "newpageletter": "N", "boteditletter": "b", - "rc_categories_any": "Cualce", + "rc_categories_any": "Cualce de la elejeda", + "rc-change-size-new": "$1 {{PLURAL:$1|bait|baites}} pos cambia", "rc-enhanced-expand": "Mostra detalias", "rc-enhanced-hide": "Asconde detalias", "recentchangeslinked": "Cambias relateda", @@ -400,11 +574,14 @@ "recentchangeslinked-title": "Cambias relatada a \"$1\"", "recentchangeslinked-summary": "Esta lista conteni la cambias plu resente de la pajes liada a otra (o de la membros de un categoria).\nPajes a [[Special:Watchlist|tu lista de pajes oservada]] es en leteras '''forte'''.", "recentchangeslinked-page": "Nom de la paje:", + "recentchangeslinked-to": "En loca, mostra cambia a pajes liada a la paje presentada", "upload": "Envia fixes", "uploadbtn": "Envia la fix", "uploadlogpage": "Envia arcivo", + "filedesc": "Resoma", "savefile": "Fisa fix", "upload-file-error": "Era interna", + "license-header": "Lisensa", "imgfile": "fix", "listfiles": "Lista de imajes", "listfiles_name": "Nom", @@ -413,6 +590,8 @@ "filehist-help": "Clica a un data/tempo per vide la fix como el ia aperi alora.", "filehist-current": "aora", "filehist-datetime": "Date/Tempo", + "filehist-thumb": "Imajeta", + "filehist-thumbtext": "Imajeta per varia pos $1", "filehist-user": "Usor", "filehist-dimensions": "Mesuras", "filehist-filesize": "Grandia de fix", @@ -421,7 +600,9 @@ "linkstoimage": "Esta {{PLURAL:$1|paje|pajes}} lia a esta fix:", "nolinkstoimage": "Es no pajes ce lia a esta fix.", "sharedupload": "Esta fix es parte de $1 e pote es usada par otra projetas.", + "sharedupload-desc-here": "Esta fix es de $1 e pote es usada par otra projetas.\nLa descrive su sua [$2 paje de descrive de fix] ala es mostra a su.", "uploadnewversion-linktext": "Envia un varia nova de esta fix", + "upload-disallowed-here": "Tu no pote suprascrive esta arcivo.", "mimesearch": "Xerca de MIME", "listredirects": "Lista redirijes", "unusedtemplates": "modeles no usada", @@ -446,7 +627,7 @@ "wantedpages": "Pajes desirada", "mostlinked": "Pajes la plu liada", "mostlinkedcategories": "Categorias a ce es la plu lias", - "mostlinkedtemplates": "Modeles a ce es la plu lias", + "mostlinkedtemplates": "Pajes la plu liada", "mostcategories": "Pajes con la plu categorias", "mostimages": "Fixes a ce es la plu lias", "mostrevisions": "Pajes con la plu revisas", @@ -455,6 +636,8 @@ "longpages": "Pajes longa", "deadendpages": "Pajes sin sorti", "protectedpages": "Pajes protejeda", + "protectedpages-page": "Paje", + "protectedpages-expiry": "Desvalidi", "listusers": "Lista de usores", "newpages": "Pajes nova", "ancientpages": "Pajes la plu vea", @@ -465,6 +648,8 @@ "pager-newer-n": "{{PLURAL:$1|1 plu resente|$1 plu resentes}}", "pager-older-n": "{{PLURAL:$1|1 plu vea|$1 plu veas}}", "booksources": "Orijines de libros", + "booksources-search-legend": "Xerca per fontes de libros", + "booksources-search": "Xerca", "specialloguserlabel": "Usor:", "speciallogtitlelabel": "Titulo:", "log": "Lista de atas", @@ -482,10 +667,15 @@ "listgrouprights-group": "Grupo", "listgrouprights-members": "(lista de membros)", "emailuser": "Envia un eposta a esta usor", - "emailfrom": "De", - "emailto": "Per", - "watchlist": "Pajes oservada", + "emailfrom": "De:", + "emailto": "A:", + "emailsubject": "Sujeto:", + "emailmessage": "Mesaje:", + "emailsend": "Envia", + "emailsent": "E-posta ia es enviada", + "watchlist": "Lista de pajes oservada", "mywatchlist": "Lista de pajes oservada", + "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]].", @@ -508,6 +698,7 @@ "deleteotherreason": "Otra/plu razona:", "deletereasonotherlist": "Otra razona", "rollbacklink": "retro", + "rollbacklinkcount": "reversa $1 {{PLURAL:$1|edita|editas}}", "protectlogpage": "Catalogo de protejes", "protectedarticle": "\"[[$1]]\" protejeda", "unprotectedarticle": "''[[$1]]'' desprotejeda", @@ -537,9 +728,13 @@ "undelete-search-submit": "Xerca", "namespace": "Loca de nom:", "invert": "Reversa la eleje", + "tooltip-invert": "Marca esta caxa per asconde cambias a pajes en la nomspasio elejeda (e la nomspasio asosiada si marcada)", + "namespace_association": "Nomspasio asosiada", + "tooltip-namespace_association": "Marca esta caxa per inclui ance la nomspasio de discute o sujeto asosiada con la nomspasio elejeda", "blanknamespace": "(Prima)", - "contributions": "Contribuis de usor", - "mycontris": "Me contribuis", + "contributions": "Contribuis de {{GENDER:$1|usor}}", + "mycontris": "Mea contribuis", + "anoncontribs": "Contribuis", "contribsub2": "Per $1 ($2)", "uctop": "(culmine)", "month": "De mensa (e plu vea):", @@ -559,11 +754,12 @@ "nolinkshere": "No pajes lia a '''[[:$1]]'''.", "isredirect": "redirije paje", "istemplate": "inclui", - "isimage": "lia de imaje", + "isimage": "lia de fix", "whatlinkshere-prev": "{{PLURAL:$1|presesdente|$1 presedente}}", "whatlinkshere-next": "{{PLURAL:$1|seguente|$1 seguente}}", "whatlinkshere-links": "← lias", "whatlinkshere-hideredirs": "$1 redirijes", + "whatlinkshere-hidetrans": "$1 transcluis", "whatlinkshere-hidelinks": "$1 lias", "whatlinkshere-filters": "Filtros", "blockip": "Impedi usor", @@ -582,7 +778,7 @@ "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.", - "newtitle": "A titulo nova:", + "newtitle": "Titulo nova:", "move-watch": "Oserva esta paje", "movepagebtn": "Move paje", "pagemovedsub": "La move ia susede", @@ -599,23 +795,27 @@ "thumbnail_error": "Era en crea la imajeta: $1", "import": "Emporta pajes", "importlogpage": "Importa arcivo", - "tooltip-pt-userpage": "Tu paje de usor", - "tooltip-pt-mytalk": "Tu paje de discutes", - "tooltip-pt-preferences": "Me preferis", + "tooltip-pt-userpage": "{{GENDER:|Tua}} page de usor", + "tooltip-pt-mytalk": "{{GENDER:|Tua}} paje de discutes", + "tooltip-pt-preferences": "{{GENDER:|Tua}} preferes", "tooltip-pt-watchlist": "La lista de pajes ce tu oserva per cambias", - "tooltip-pt-mycontris": "Lista de tu contribuis", + "tooltip-pt-mycontris": "Lista de tua contribuis", "tooltip-pt-login": "Nos preferi si tu sinia per entra, ma tu es no obligada.", "tooltip-pt-logout": "Sinia per retira", + "tooltip-pt-createaccount": "Tu es corajida per crea un conta e identifia se; an si, esta no es obligante", "tooltip-ca-talk": "Discute de la paje de contenis", - "tooltip-ca-edit": "Tu pote edita esta paje. Per favore, usa la boton de previde ante fisa.", + "tooltip-ca-edit": "Edita esta paje", "tooltip-ca-addsection": "Inisia un sesion nova", "tooltip-ca-viewsource": "Esta paje es protejeda. Tu pote vide se orijin.", + "tooltip-ca-history": "Revisas pasada de esta paje", "tooltip-ca-protect": "Proteje esta paje", "tooltip-ca-delete": "Sutrae esta paje", "tooltip-ca-move": "Move esta paje", "tooltip-ca-watch": "Junta esta paje a tu lista de pajes oservada", "tooltip-ca-unwatch": "Sutrae esta paje de tu lista de pajes oservada", "tooltip-search": "Xerca {{SITENAME}}", + "tooltip-search-go": "Vade a un paje con esta nom esata, si lo esiste", + "tooltip-search-fulltext": "MediaWiki:Tooltip-xerca-testoplen/lfn", "tooltip-p-logo": "Visita la paje prima", "tooltip-n-mainpage": "Visita la paje prima", "tooltip-n-mainpage-description": "Visita la paje prima", @@ -625,11 +825,17 @@ "tooltip-n-randompage": "Carga un paje acaso", "tooltip-n-help": "La loca per descovre.", "tooltip-t-whatlinkshere": "Lista de tota pajes de vici ce lia a asi", - "tooltip-t-contributions": "Vide la lista de contribuis de esta usor", + "tooltip-t-recentchangeslinked": "Cambia resente en pajes liada de esta paje", + "tooltip-feed-atom": "Enflue de atom per esta paje", + "tooltip-t-contributions": "Vide la lista de contribuis de {{GENDER:$1|esta usor}}", "tooltip-t-emailuser": "Envia un eposta a esta usor", "tooltip-t-upload": "Envia fixes", "tooltip-t-specialpages": "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": "Vide la paje de contenis", "tooltip-ca-nstab-user": "Vide la paje de usor", + "tooltip-ca-nstab-special": "Esta es un paje special, e no pote es editada.", "tooltip-ca-nstab-project": "Vide la paje de la projeta", "tooltip-ca-nstab-image": "Vide la paje de fix", "tooltip-ca-nstab-template": "Mostra la model", @@ -641,14 +847,22 @@ "tooltip-diff": "Mostra tu cambias de la testo.", "tooltip-compareselectedversions": "Vide la diferes entre la du varias elejeda de esta paje.", "tooltip-watch": "Junta esta paje a tu lista de pajes oservada", + "tooltip-rollback": "\"Rollback\" reverts the last contributor's edit(s) to this page in one click\n\n\"Reversa\" reversa la edita o editas a esta paje par la contribuor presedente con un clica", + "tooltip-undo": "\"Desfa\" reversa esta edita e abri la forma de edita en la modo de previde. Lo permete la ajunta de un razona en la resoma.", + "tooltip-summary": "Entra un resoma corta", "others": "otras", + "simpleantispam-label": "Proba anti-spam.\n<strong>No</strong> completa esta!", + "pageinfo-toolboxlink": "Informa de paje", "previousdiff": "← Difere plu vea", "nextdiff": "Difere plu nova →", "widthheightpage": "$1 × $2, $3 {{PLURAL:$3|paje|pajes}}", "file-info-size": "$1 × $2 pixel, grandia de fix: $3, MIME tipo: $4", "file-nohires": "No plu densia posable.", "svg-long-desc": "SVG fix, per nom $1 × $2 pixeles, grandia de fix: $3", - "show-big-image": "Densia masima", + "show-big-image": "Arcivo orijinal", + "show-big-image-preview": "Grandia de esta previde: $1", + "show-big-image-other": "Otra {{PLURAL:$2|densia|densias}}: $1.", + "show-big-image-size": "$1 × $2 pixeles", "newimages": "Imajes nova", "ilsubmit": "Xerca", "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.", @@ -656,17 +870,37 @@ "metadata-help": "Esta fix conteni plu informa, posable juntada de un camera dijital o un scanador usada per crea o dijiti el.\nSi la fix ia es cambiada de se stato orijinal, alga detalias pote no es clara en la fix cambiada.", "metadata-expand": "Mostra detalias estendente", "metadata-collapse": "Asconde detalias estendeda", - "metadata-fields": "Campos de EXIF metadata listada en esta mesaje va es inclui cuando la table de metadata 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", + "metadata-fields": "Campos de EXIF metadata listada en esta mesaje va es incluida cuando la table de metadata 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-orientation": "Orienta", + "exif-xresolution": "Densia orizonal", + "exif-yresolution": "Densia vertical", + "exif-datetime": "Data e ora de cambia de fix", + "exif-make": "Fabricor de camera", + "exif-model": "Model de camera", + "exif-software": "Programas usada", + "exif-exifversion": "Varia de Exif", + "exif-colorspace": "Spasio de color", + "exif-datetimeoriginal": "Data e ora de jenera de datos", + "exif-datetimedigitized": "Data e ora de dijitali", "exif-exposuretime-format": "$1 sec. ($2)", + "exif-orientation-1": "Normal", "namespacesall": "tota", "monthsall": "tota", "confirm_purge_button": "Oce", "watchlisttools-view": "Vide cambias pertinente", "watchlisttools-edit": "Vide e edita la lista de pajes oservada", "watchlisttools-raw": "Edita la lista rua de pajes oservada", + "signature": "[[{{ns:user}}:$1|$2]] ([[{{ns:user_talk}}:$1|discute]])", "version": "Varia", "version-version": "($1)", "fileduplicatesearch-submit": "Xerca", "specialpages": "Pajes spesial", + "tag-filter": "Filtre de [[Special:Tags|eticeta]]:", + "tag-list-wrapper": "([[Special:Tags|{{PLURAL:$1|Tag|Tags}}]]: $2)", + "logentry-delete-delete": "$1 {{GENDER:$2|sutraeda}} paje $3", + "logentry-move-move": "$1 {{GENDER:$2|moveda}} paje $3 a $4", + "logentry-newusers-create": "Conta de usor $1 ia es {{GENDER:$2|creada}}", + "logentry-upload-upload": "$1 {{GENDER:$2|cargada}} $3", + "searchsuggest-search": "Xerca {{SITENAME}}", "expand_templates_ok": "Oce" } diff --git a/languages/i18n/lij.json b/languages/i18n/lij.json index 54bd07e94a..06998ae09b 100644 --- a/languages/i18n/lij.json +++ b/languages/i18n/lij.json @@ -180,6 +180,7 @@ "searcharticle": "Vanni", "history": "Stöia da pàgina", "history_short": "Stöia", + "history_small": "Stoia", "updatedmarker": "modificâ da-a mæ urtima vixita", "printableversion": "Verscion da stanpâ", "permalink": "Ingancio fisso", @@ -647,6 +648,7 @@ "blockedtitle": "L'utente o l'é bloccòu", "blockedtext": "''''O to nomme utente ò adresso IP o l'è stæto bloccòu.'''\n\nO blòcco o l'è stæto fæto da $1. A raxon dæta a l'è ''$2''.\n\n* Prinçippio do blocco: $8\n* Fin do blocco: $6\n* Utente blocou: $7\n\nL'è poscibbile contattâ $1 ò un atro [[{{MediaWiki:Grouppage-sysop}}|amministratô]] pe discûtte inscio blòcco.\nNo ti poeu doeuviâ o comando \"Manda un'e-mail a st'utente\" se no ti g'hæ 'n adreçço e-mail registròu inte to [[Special:Preferences|preferençe]] e se no t'ê stæto bloccòu ascì.\nO to adreçço IP o l'è $3, e o to blòcco ID o l'è #$5.\nPe piaxei, pe domandâ de informaçioin, speçifficali tutti doî.", "autoblockedtext": "O teu addresso IP o l'è stæto bloccòu outomaticamente perché o l'ea za usòu da 'n âtro utente, bloccòu da $1.\nA raxon dæta a l'è stæta:\n\n:''$2''\n\n* Prinsippio do blòcco: $8\n* Fin do blòcco: $6\n\nTi peu contattâ $1 ò un âtro\n[[{{MediaWiki:Grouppage-sysop}}|amministratô]] pe discutte o blòcco.\n\nDanni a mente a che no ti pêu ûsâ o comando \"manda 'na e-mail a sto utente\" se non ti g'hæ 'n addresso de posta elettronega registròu in te têu [[Special:Preferences|preferense]] e se ti no t'ê stæto bloccòu ascì.\n\nO to adresso IP o l'è $3, e o to blòcco ID o l'è #$5. Pe piaxei, pe domandâ informaçioin, speçifficali tutti doî.", + "systemblockedtext": "O to nomme utente ò l'adresso IP o l'è stæto blocou aotomaticamente da MediaWiki.\nA raxon do blocco a l'è:\n\n:''$2''\n\n* Començo do blocco: $8\n* Scadença do blocco: $6\n* Intervallo de blocco: $7\n\nL'adresso IP attoale o l'è $3.\nSe prega de specificâ tutti i dettalli chì incluxi into compilâ qualunque recesta de ciarimenti.", "blockednoreason": "nisciun-a motivaçion dæta", "whitelistedittext": "Pe modificâ e paggine l'è necessaio $1.", "confirmedittext": "Pe ese abilitæ a-a modiffica de paggine bezeugna confermâ o proppio addresso e-mail. Pe impostâ e confermâ l'adresso servîse de [[Special:Preferences|preferençe]].", @@ -995,8 +997,6 @@ "saveprefs": "Sarva", "restoreprefs": "Ripristina e impostaçioin predefinie (in tutte e seçioin)", "prefs-editing": "Cangia", - "rows": "Righe:", - "columns": "Colonne:", "searchresultshead": "Çerca", "stub-threshold": "Limmite pe-i collegamenti a-i sboççi ($1):", "stub-threshold-sample-link": "esempio", @@ -1080,7 +1080,9 @@ "userrights-user-editname": "Scrivi o teu nomme utente:", "editusergroup": "Carrega groppi utente", "editinguser": "Apreuvo a cangiâ i driti de l'{{GENDER:$1|utente}} <strong>[[User:$1|$1]]</strong> $2", + "viewinguserrights": "Vixualizaçion di driti de l'{{GENDER:$1|utente}} <strong>[[User:$1|$1]]</strong> $2", "userrights-editusergroup": "Modiffica i gruppi di utenti", + "userrights-viewusergroup": "Vixualizza groppi utente", "saveusergroups": "Sarva groppi {{GENDER:$1|utente}}", "userrights-groupsmember": "Membro de:", "userrights-groupsmember-auto": "Membro impliçito de:", @@ -1090,6 +1092,9 @@ "userrights-nodatabase": "O database $1 o no l'esiste ò o no l'è un database locale.", "userrights-changeable-col": "Gruppi che ti peu modificâ", "userrights-unchangeable-col": "Gruppi che no ti peu modificâ", + "userrights-expiry-current": "O descazze o $1", + "userrights-expiry-none": "O no descazze", + "userrights-expiry": "O descazze:", "userrights-conflict": "Conflito de modiffica di driti utente! Pe piaxei controlla e conferma e teu modiffiche.", "group": "Gruppo:", "group-user": "Ûtenti", @@ -1419,7 +1424,7 @@ "uploaded-setting-handler-svg": "o SVG ch'o l'imposta l'attributo \"handler\" con remote/data/script o l'è bloccou. Trovou <code>$1=\"$2\"</code>into file SVG caregou.", "uploaded-remote-url-svg": "o SVG ch'o l'imposta qua-se-sæ attributo de stile con di URL remoti o l'è bloccato. Trovou <code>$1=\"$2\"</code> into file SVG caregou.", "uploaded-image-filter-svg": "Trovou filtro immaggine con URL: <code><$1 $2=\"$3\"></code> into file in formato SVG caregou.", - "uploadscriptednamespace": "Questo file SVG o conten un namespace '$1' non consentio", + "uploadscriptednamespace": "Questo file SVG o conten un namespace '<nowiki>$1</nowiki>' non consentio", "uploadinvalidxml": "O codiçe XML into file caregou o no poeu ese elaboou.", "uploadvirus": "Questo file o conten un virus! Dettaggi: $1", "uploadjava": "Questo file o l'è un file ZIP ch'o conten un file .class Java.\nCaregâ i file Java no l'è consentio, perché poeuan caosâ l'aggiamento de restriçioin de segueçça.", @@ -1708,7 +1713,7 @@ "wantedfiletext-nocat-noforeign": "I seguenti file son in doeuvia, ma no existan.", "wantedtemplates": "Template domandæ", "mostlinked": "Paggine ciû collegæ", - "mostlinkedcategories": "Categorîe ciû collegæ", + "mostlinkedcategories": "Categorie ciu conligæ", "mostlinkedtemplates": "Paggine ciu incluse", "mostcategories": "Voxe con ciû categorîe", "mostimages": "Immaggini con ciû collegamenti", @@ -1741,7 +1746,7 @@ "protectedtitles-summary": "Questa pagina a l'elenca i titoli che son attualmente protetti da-a creaçion. Pe 'n elenco de pagine existente che son protette, amia [[{{#special:ProtectedPages}}|{{int:protectedpages}}]].", "protectedtitlesempty": "Tittoli protezui con sti parammetri pe-o momento no ghe n'è.", "protectedtitles-submit": "Mostra tittoli", - "listusers": "Lista d'ûtenti", + "listusers": "Lista di utenti", "listusers-editsonly": "Mostra solo i utenti con di contributi", "listusers-creationsort": "Ordina pe dæta de creaçion", "listusers-desc": "Ordina in senso decrescente", @@ -3450,56 +3455,12 @@ "feedback-useragent": "Agente utente:", "searchsuggest-search": "Çerca in {{SITENAME}}", "searchsuggest-containing": "ch'o conten...", - "api-error-autoblocked": "O to adreçço IP o l'è stæto bloccou aotomaticamente, perché o l'è stæto doeuviou da un utente bloccou.", - "api-error-badaccess-groups": "No t'ê aotorizzou a caregâ di file insce questa wiki.", "api-error-badtoken": "Errô interno: token errou.", - "api-error-blocked": "T'ê stæto bloccou, no ti poeu fâ modiffiche.", - "api-error-copyuploaddisabled": "O caregamento trammite URL o l'è disabilitou insce questo server.", - "api-error-duplicate": "Gh'è za {{PLURAL:$1|un atro file|di atri files}} into scito co-o mæximo contegnuo.", - "api-error-duplicate-archive": "Gh'ea za {{PLURAL:$1|un atro file|di ltri file}} into scito co-o mæximo contegnuo, ma {{PLURAL:$1|o l'è stæto scassou|son stæti scassæ}}.", - "api-error-empty-file": "O file che t'hæ inviou o l'è voeuo.", "api-error-emptypage": "A creaçion de noeuve pagine voeue a no l'è consentia.", - "api-error-fetchfileerror": "Errô interno: s'è verificou un problema durante o recuppero do file.", - "api-error-fileexists-forbidden": "Un file de nomme \"$1\" o l'existe za e o no poeu ese sorvescrito.", - "api-error-fileexists-shared-forbidden": "Un file de nomme \"$1\" o l'existe za into repository condiviso e o no poeu ese sorvescrito.", - "api-error-file-too-large": "O file che t'hæ inviou o l'ea troppo grande.", - "api-error-filename-tooshort": "O nomme do file o l'è troppo curto.", - "api-error-filetype-banned": "Questo tipo de file o l'è proibio.", - "api-error-filetype-banned-type": "\"$1\" {{PLURAL:$4|o no l'è un tipo de file consentio|no son di tipi de file consentii}}. {{PLURAL:$3|O tipo de file consentio o l'è|I tipi de file consentii son}} $2.", - "api-error-filetype-missing": "A-o file gh'amanca l'estenscion.", - "api-error-hookaborted": "A modiffica che t'hæ çercou de fâ a l'è stæta interrotta da un'estenscion.", - "api-error-http": "Errô interno: imposcibbile connettise a-o server.", - "api-error-illegal-filename": "O nomme do file o no l'è ammisso.", - "api-error-internal-error": "Errô interno: quarcosa o l'è anæto storto con l'elaboaçion do to caregamento in sciâ wiki.", - "api-error-invalid-file-key": "Errô interno: file non presente inta cartella di file temporannei.", - "api-error-missingparam": "Errô interno: parammetri da recesta mancanti.", - "api-error-missingresult": "Errô interno: imposcibbile determinâ se a coppia a l'è ariescîa.", - "api-error-mustbeloggedin": "Pe caregâ di file ti devi primma intrâ.", - "api-error-mustbeposted": "Errô interno: a recesta a richiede HTTP POST.", - "api-error-noimageinfo": "O caregamento o l'è ariescio, ma o server o no n'ha dæto arcun-a informaçion in sciô file.", - "api-error-nomodule": "Errô interno: no l'è stæto impostou o moddulo de caregamento.", - "api-error-ok-but-empty": "Errô interno: nisciun-a risposta da-o server.", - "api-error-overwrite": "No l'è permisso soviascrive un file existente.", - "api-error-ratelimited": "Ti çerchi de caregâ ciù file in meno tempo de quante questo wiki o permette.\nRiproeuva tra pochi menuti.", - "api-error-stashfailed": "Errô interno: o server o no l'è ariescio a memorizzâ o documento temporannio.", "api-error-publishfailed": "Errô interno: o server o no l'è ariescio a pubbricâ o documento temporannio.", - "api-error-stasherror": "S'è veificou un errô durante o caregamento do file inta stash.", - "api-error-stashedfilenotfound": "O file inta stash o no l'è stæto trovou durante o tentativo de caregâ da-a stash.", - "api-error-stashpathinvalid": "O percorso ch'o l'aviæ dovuo portâ a-o file inta stash o no l'ea vallido.", - "api-error-stashfilestorage": "S'è veificou un errô durante a memorizzaçion do file inta stash.", - "api-error-stashzerolength": "O server o no poeu insei o file inta stash, perché o g'ha longheçça zero.", - "api-error-stashnotloggedin": "Pe poei sarvâ di file inta stash de caregamento ti devi primma intrâ.", - "api-error-stashwrongowner": "O file a-o quæ ti çercavi d'accede inta stash o no t'apparten.", - "api-error-stashnosuchfilekey": "A ciave do file a-a quæ ti çercavi d'accede inta stash a no l'existe.", - "api-error-timeout": "O server o no l'ha risposto entro o tempo previsto.", - "api-error-unclassified": "Gh'è stæto un aro sconosciuo.", - "api-error-unknown-code": "Errô sconosciuo: \"$1\"", - "api-error-unknown-error": "Errô interno: quarcosa l'è anæto storto provando a caregâ o file.", + "api-error-stashfailed": "Errô interno: o server o no l'è ariescio a memorizzâ o documento temporannio.", "api-error-unknown-warning": "Avviso sconosciuo: $1", "api-error-unknownerror": "Errô sconosciuo: \"$1\"", - "api-error-uploaddisabled": "O caregamento o l'è disabilitou insce questa wiki.", - "api-error-verification-error": "Questo file o poriæ ese dannezou, o aveighe l'estenscion sbaliâ.", - "api-error-was-deleted": "Un file co-o mæximo nomme o l'è stæto precedentemente caregou e succescivamente eliminou.", "duration-seconds": "$1 {{PLURAL:$1|segondo|segondi}}", "duration-minutes": "$1 {{PLURAL:$1|menuto|menuti}}", "duration-hours": "$1 {{PLURAL:$1|oa|oe}}", diff --git a/languages/i18n/lki.json b/languages/i18n/lki.json index 369465c183..24a123d3c2 100644 --- a/languages/i18n/lki.json +++ b/languages/i18n/lki.json @@ -8,14 +8,15 @@ "Macofe", "Huji", "Miladrahimi", - "Ebraminio" + "Ebraminio", + "Process cq" ] }, - "tog-underline": "کڕ(خط)کیشائن ژێر پیوندەل:", + "tog-underline": "خط کیشائن ژێر پیوندەل:", "tog-hideminor": "آشاردن دەسکاریەل گؤجەر إژ گؤەڕیال(تغییرات) ایسە(اخیر)", "tog-hidepatrolled": "دسکاریۀل گه دیار بینۀ ئژ فئرست-رزگ تغییرات اخیر بشارا", "tog-newpageshidepatrolled": "وڵگۀل گه دیار بینۀ ئژ فئرست-رزگ ولگۀل تازۀ بشارا", - "tog-hidecategorization": "Hide categorization of pages", + "tog-hidecategorization": "فهرست بالا سی ئی صفحه", "tog-extendwatchlist": " کؤل رزگ-فئرست الؤن(آلشت)کریال-تغیرات نیشان دۀ،نۀ هر تنیا دؤمائنۀل", "tog-usenewrc": "تنیا آڵؤن(آلشتی)کریال تازۀ ؤ لیست پئگیریۀل رزگ بنی-گروه بندی کۀ", "tog-numberheadings": "شؤمارۀ نئ خودکار سروڵگۀل-عناوین", @@ -26,6 +27,7 @@ "tog-watchdefault": "ولگۀل ؤ پرؤندۀلئ گه دسکاری مۀکم بنه نؤم فئرست سئرکردن", "tog-watchmoves": "ولگۀل ؤ پرؤندۀلئ گه هئزۀ مۀم-جابجا مۀکم بنه نؤم فئرست سئرکردن", "tog-watchdeletion": "ولگۀل ؤ پرؤندۀلئ گه پاکۀ مۀکم بنه نؤم فئرست سئرکردن", + "tog-watchuploads": "بلگه‌های نو اضافه بکه که من به فهرست تماشام بار مه‌کم", "tog-watchrollback": "ولگۀل گه ماره ما-بازگردانی مۀکم بنه نؤم فئرست سئرکردن", "tog-minordefault": "کؤڵ دسکاری بیۀل به عنؤان پئش فرض عڵامت بۀرن", "tog-previewontop": "پیش نمایش وهِ رئ جعبۀ نمایش نیشؤن به", @@ -35,7 +37,7 @@ "tog-enotifminoredits": "ئۀر تغییرۀل-آڵؤنۀل(آلشتۀل)گؤجۀریجی ئۀر وڵگۀل ؤ پرؤندۀلم کریا نامه ئۀرا مه کِل کۀ", "tog-enotifrevealaddr": "نیشانی ایمیل مه ئۀر ایمیل‌ل حاوواڵ رۀسن نیشؤن دۀ", "tog-shownumberswatching": "گلۀ شؤماری-شؤمار کاربۀل پی‌گیر نیشان دۀ", - "tog-oldsig": ":امضاێ گإ ایسگە درینێ", + "tog-oldsig": ":امضاێ موجود ایوه", "tog-fancysig": "(امضا چؤی ویکی‌متن بوو(بدون پئؤن خودکار نیائن", "tog-uselivepreview": "استفاده از پیش‌نمایش زنده", "tog-forceeditsummary": "هۀنئ گه-وختئ که خؤلاصۀ دسکاریم نَنیؤیسائۀ خۀؤۀ رم کۀ", @@ -50,9 +52,9 @@ "tog-ccmeonemails": "کپی إژ ایمیلێ گإ أڕا کاربەرەل کِلە مەکەم أڕا ووژم کِل کە", "tog-diffonly": "نۆم جِک(محتوا)وەڵگە، Ø£ ژێر تفاوت دیار ناوو(نمایش ندهد)", "tog-showhiddencats": "دسۀل-رزگۀل آشاریآ نیشؤن دۀ", - "tog-norollbackdiff": "دؤما واگردانی تفاوت نیشؤن نه", + "tog-norollbackdiff": "ژ واگردانی پاش فرقه‌ل نشون نده", "tog-useeditwarning": "هەنێ(زمانی که)گِستم إژ وەڵگە دەسکاری ذخیره نؤي بِچمإ دەر.دەسگیرم کە", - "tog-prefershttps": "همؤیشۀ ئۀرا ئۀ نؤم سیستم هۀتن ئژ اتصالۀل امن بهرۀ بگر-استفادۀ کۀ", + "tog-prefershttps": "همیشه اتصاله‌ل امن استفاده بکه سی داخل بوون", "underline-always": "همؤیشۀ", "underline-never": "هؤیچ وخت", "underline-default": "پوسته یا مِنِی کەر پیش‌فرض", @@ -147,7 +149,7 @@ "newwindow": "(واز کردن ئۀر دۀروۀچۀ جدید)", "cancel": "ئآهووسانن/لغو", "moredotdotdot": "...ویشتر/فرةتر", - "morenotlisted": "لیست کامل نیۀ", + "morenotlisted": "بلکه ئی لیست کامل نییه", "mypage": "وةڵگە(پەڕە)", "mytalk": "گەپ(قسە)", "anontalk": "گەپ(قسە)", @@ -175,6 +177,7 @@ "searcharticle": "بِچۆ", "history": "تاریخ وةڵگة", "history_short": "تاریخچه", + "history_small": "تاریخ", "updatedmarker": "به‌روزشده از آخرین باری که سرزده‌ام", "printableversion": "نؤسخۀ قاوول چاپ", "permalink": "پیوۀند دائمی", @@ -206,6 +209,9 @@ "talk": "گەپ قسە", "views": "دیین/سئرکردن", "toolbox": "ابزارەل", + "tool-link-userrights": "گروهه‌ل {{GENDER:$1|کاربر}} تغییر بکه", + "tool-link-userrights-readonly": "گروه {{GENDER:$1|کاربر}} نشون بده", + "tool-link-emailuser": "ای-میل {{GENDER:$1|کاربر}}ئه", "userpage": "وةڵگة کاربۀر بؤین", "projectpage": "وةڵگة پروژۀ بوین", "imagepage": "وةڵگة پرونده بؤین", @@ -236,7 +242,7 @@ "copyright": " محتوایۀل هانإ ژئرنظر اجازه‌نامهٔ $1 مۀگۀر یۀگإ خلاف یۀ بوشرئ/ذکر بو", "copyrightpage": "{{ns:project}}:حق تکثیر", "currentevents": "پێش هەتێەل ایسگە", - "currentevents-url": "پێش هەتێەل ایسگە(ایسە)", + "currentevents-url": "Project:واقعهٔ نهایی", "disclaimers": "دروو نامه -تکذیب نامه", "disclaimerpage": "Project:تکذیب‌نامهٔ عمومی", "edithelp": "راهنمای دۀسکاری کردن", @@ -398,7 +404,12 @@ "createacct-yourpasswordagain-ph": "گذرواژه را وارد کنید برای بار دوم", "userlogin-remembermypassword": "مإ وارد بی بیل", "userlogin-signwithsecure": "إژ ورود امن استفاده کةن", + "cannotlogin-title": "نتونه داخل نبئت", + "cannotlogin-text": "داخل بوون ممکن نییه", "cannotloginnow-title": "ایسه نمه‌تونین باینه نوم", + "cannotloginnow-text": "د زمان $1 استفاده مه‌که‌ی، ورود ممکن نبیه", + "cannotcreateaccount-title": "حسابان نتونه ایجاد نه‌که", + "cannotcreateaccount-text": "د ئی ویکی، بلا واسطه ایجاد حساب فعال نییه", "yourdomainname": ":دامنهٔ شما", "password-change-forbidden": ".شما نمی‌توانید گذرواژه‌ها را در این ویکی تغییر دهید", "externaldberror": "خطایی در ارتباط با پایگاه داده رخ داده است یا اینکه شما اجازهٔ به‌روزرسانی حساب خارجی خود را ندارید.", @@ -421,18 +432,23 @@ "userlogin-resetpassword-link": "رۀمزۀتان ویر/ یاد چئۀ؟", "userlogin-helplink2": "کمک با ورود", "userlogin-loggedin": "شما در حال حاضر به عنوان {{GENDER:$1|$1}} وارد شده‌اید.\nاز فرم پایین برای ورود به عنوان یک کاربر دیگر استفاده کنید.", + "userlogin-reauth": "لازم تو دوباره داخل بئت سی حساب تو تأیید بکه {{GENDER:$1|$1}}", "userlogin-createanother": "حساووئ کاربةری تِر بِسازِن", "createacct-emailrequired": "نیشانی ایمیل", "createacct-emailoptional": ")نشانی ایمیل (اختیاری", "createacct-email-ph": "نیشانی ایمیل ووژت بنۆیس", "createacct-another-email-ph": "نیشانی ایمیل ووژتان بنؤیسِن", "createaccountmail": "استفاده از رمز عبور موقت تصادفی و ارسال آن به آدرس ایمیل مشخص شده", + "createaccountmail-help": "تو مه‌تونی یک حساب ایجاد مه‌که‌ی سی کسی دیگر بدون شیفره نه‌زانی", "createacct-realname": "*نام راسکانی/واقعی *دل بخواهی", "createaccountreason": ":دةلیل", "createacct-reason": "دةلیل", "createacct-reason-ph": "ئةرا حساووێ تر مةسازین؟", + "createacct-reason-help": "پیام د سیستم ایجاد خساب نمایش داده مه‌شوه", "createacct-submit": "حساووێ أڕا ووژت بِساز", "createacct-another-submit": "حساووئ أرا ووژتان بِسازِن", + "createacct-continue-submit": "ادامه سی ایحاد حساب", + "createacct-another-continue-submit": "ادامه سی ایجاد حساب", "createacct-benefit-heading": "{{SITENAME}} is made by people like you.", "createacct-benefit-body1": "{{PLURAL:$1|دۀسکاری|دۀسکاریۀل}}", "createacct-benefit-body2": "{{PLURAL:$1|وەڵگە|وەڵگەل}}", @@ -446,10 +462,11 @@ "nocookiesnew": "حساوو کاربةری سازیا، اما هؤمة Ø£ سیستم نهةتینة/نهاتینة.\n{{SITENAME}} برای ورود کاربران به سامانه از کوکی استفاده می‌کند.\nشما کوکی‌ها را از کار انداخته‌اید.\nلطفاً کوکی‌ها را به کار بیندازید، و سپس با نام کاربری و گذرواژهٔ جدیدتان به سامانه وارد شوید.", "nocookieslogin": "{{SITENAME}} برای ورود کاربران به سامانه از کوکی‌ها استفاده می‌کند.\nشما کوکی‌ها را از کار انداخته‌اید.\nلطفاً کوکی‌ها را به کار بیندازید و دوباره امتحان کنید.", "nocookiesfornew": "حساوو کاربةری نةسازریا، زیرا نتوانستیم منبع آن را تأیید کنیم.\nمطمئن شوید که کوکی‌ها فعال هستند، آن‌گاه صفحه را از نو بارگیری کنید و دوباره امتحان کنید.", + "createacct-loginerror": "حساب با موفقيت ايجاد بوو، ليکن امکان ورود خودکارتان موجود نییه. لطفاً با [[Special:UserLogin|manual login]] ادامه بده.", "noname": ".هؤمة نام کاربةری معتبری دیاری نکردئة", - "loginsuccesstitle": "إنۆم سیستم هەتن انجۆم گرت", + "loginsuccesstitle": "به سیستم داخل بئ", "loginsuccess": "هؤمة ایسة هةتیإ نؤم سیستم {{SITENAME}} وۀ نام\"$1\".'", - "nosuchuser": "کاربةری وۀ نام «$1» ئة ائرة نیة.\nنام کاربةری وة کةڵنگی و گؤجةری حروف حساسة .\nاملای نام را بررسی کنید، یا [[Special:CreateAccount|یک حساب کاربری تازه بسازید]].", + "nosuchuser": "کاربری با ناو \"$1\" نییه. \nناو کاربر به حروف حساسه. \nاملای ناوی کنترل بکه، یا\n[[Special:CreateAccount|یک حساب نو ایجاد بکه]].", "nosuchusershort": "هؤیچ کاربةری وة نام ''$1'' ئة ائرة نیة.\nاملایتان را وارسی کنید.", "nouserspecified": ".باید یإ گِلة نام کاربةری دیاری کئین", "login-userblocked": ".ئی کاربرە بەسیائە. إنؤم هەتِن سیستم ڕاووآ(مجاز)نیە", @@ -466,11 +483,11 @@ "noemail": ".هؤیچ نیشانی ایمیلی ئةرا کاربةر «$1» ثبت نؤیة", "noemailcreate": "شما باید یک آدرس ایمیل درست فراهم کنید", "passwordsent": "گذرواژه‌ای جدید به آدرس ایمیل ثبت شده برای «$1» ارسال شد.\nلطفاً پس از دریافت آن، دوباره به سیستم وارد شوید.", - "blocked-mailpassword": "نشانی آی‌پی شما از ویرایش بازداشته شده‌است و از این رو به منظور جلوگیری از سوءاستفاده اجازهٔ بهره‌گیری از قابلیت بازیابی گذرواژه را ندارد.", + "blocked-mailpassword": "نشانی آی‌پی‌تان اژ ویرایش بازداشته شده و اژ ای رو به منظور جلوگیری اژ سوءاستفاده اجازهٔ بهره‌گیری اژ قابلیت وازیابی شیفره را نداره.", "eauthentsent": "یک ایمیل تأیید برای آدرس ایمیل به نشانی مورد نظر ارسال شد.\nقبل از اینکه ایمیل دیگری قابل ارسال به این آدرس باشد، باید دستورهایی که در آن ایمیل آمده است را جهت تأیید این مساله که این آدرس متعلق به شماست، اجرا کنید.", "throttled-mailpassword": "یإ گِلة رمز عبور {{PLURAL:$1| وۀ ساعت |$1 وۀساعتةل}}کِل/ارسال بیة/.\nسی نئهاگئری د أذیأت بییئن، فأقأط یئ گئل رازینە گوڤاردئن د أنجومانامە د نۊ زئنە بییە د هأر {{PLURAL:$1|ساعأت|$1 ساعأتیا}} کئل بییە.", "mailerror": "خطا در ارسال ایمیل: $1", - "acct_creation_throttle_hit": "بازدیدکنندگان این ویکی که از نشانی آی‌پی شما استفاده می‌کنند در روز گذشته {{PLURAL:$1|یک حساب کاربری|$1 حساب کاربری}} ساخته‌اند، که بیشترین تعداد مجاز در آن بازهٔ زمانی است.\nبه همین خاطر، بازدیدکنندگانی که از این نشانی آی‌پی استفاده می‌کنند نمی‌توانند در حال حاضر حساب جدیدی بسازند.", + "acct_creation_throttle_hit": "زیارتچییه‌ل د ای ویکی اژ نشانی آی‌پی ایوه استفاده مه‌که‌ن د $2 گذشته {{PLURAL:$1|یک حساب کاربری|$1 حساب کاربری}} ساخته‌ان، که بیشترین تعداد مجاز د اون وازهٔ زمانییه.\nبه همین خاطر، زیارتچییه‌ل که اژ ای نشانی آی‌پی استفاده مه‌کهن نه‌تونن د حال حاضر حساب نو بسازن.", "emailauthenticated": "نشانی ایمیل شما در $2 ساعت $3 تأیید شده است.", "emailnotauthenticated": "آدرس ایمیل شما هنوز تأیید نشده است.\nبرای هیچ‌یک از ویژگی‌های زیر، ایمیل ارسال نخواهد شد.", "noemailprefs": "برای راه‌اندازی این قابلیت‌ها یک آدرس ایمیل در ترجیحات خود مشخص کنید.", @@ -483,13 +500,14 @@ "createaccount-title": "ایجاد حساب کاربری در {{SITENAME}}", "createaccount-text": "یک نفر برای ایمیل شما یک حساب کاربری در {{SITENAME}} با نام «$2» ایجاد کرده‌است ($4)، که گذرواژهٔ آن چنین است: $3\nشما باید به سیستم وارد شوید تا گذرواژهٔ خود را تغییر بدهید.\n\nاگر این حساب اشتباهی ساخته شده است، این پیغام را نادیده بگیرید.", "login-throttled": "شما به تازگی چندین‌بار برای ثبت ورود تلاش کرده‌اید.\nلطفاً پیش از آنکه دوباره تلاش کنید $1 صبر کنید.", - "login-abort-generic": "ورود شما ناموفق بود - خاتمهٔ ناگهانی داده شد", + "login-abort-generic": "ورود ایوه ناموفق بوو - ابدال بوو", "login-migrated-generic": "حساب کاربری شما منتقل شده‌است، و نام کاربری‌تان دیگر در این ویکی وجود ندارد.", "loginlanguagelabel": "$1:زوون", "suspicious-userlogout": "درخواست هؤمة ئةرا دةرچئن إژ سیستم رد بیة زیرا به نظر می‌رسد که این .درخواست توسط یک مرورگر معیوب یا پروکسی میانگیر کل/ارسال بیة", "createacct-another-realname-tip": "نام راسکانی/واقعی دڵ بخواهیة.\nاگر آن را وارد کنید هنگام ارجاع به آثارتان و انتساب آن‌ها به شما از نام واقعی‌تان استفاده خواهد شد.", "pt-login": "إنۆم هەتِن.", "pt-login-button": "Ø¥ نۆم هەتن سیستم", + "pt-login-continue-button": "ادامه سی ورود سیستم", "pt-createaccount": "حساووئ أرا ووژتان بِسازِن", "pt-userlogout": "دەرچێن|خروج", "php-mail-error-unknown": "خطای ناشناخته در تابع mail()‎ پی‌اچ‌پی", @@ -502,9 +520,37 @@ "newpassword": "گذرواژهٔ تازه:", "retypenew": "گذرواژهٔ تازه را دوباره وارد کنید", "resetpass_submit": "تنظیم گذرواژه و ورود به سامانه", - "changepassword-success": "گذرواژهٔ شما با موفقیت تغییر داده شد!", + "changepassword-success": "شیفرهٔ تو تغییر بوو", "changepassword-throttled": "شما به تازگی چندین‌بار برای ثبت ورود تلاش کرده‌اید.\nلطفاً پیش از آنکه دوباره تلاش کنید $1 صبر کنید.", + "botpasswords": "شیفرهٔ بؤت", + "botpasswords-summary": "<em>شیفره‌یه‌ل بؤت</em> اجازه دسترسی به یک حساب کاربری با ای‌پی‌آی بدون استفاده اژ رمز اصلی حسابه مه‌دهه. دسترسییه‌ل کاربری موجود هنگامی که با شیفرهٔ بؤتبک وارد مه‌شوین ممکن ئه محدود باشن.\n\nاگر نه‌زانین که ممکن ئه با ئی چه مه‌که‌ین، احتمالاً نباید هیچ کاری مه‌که‌ین. هیچ‌کس نباید اژ ایوه خواسته باشه که یکی اژ ئه‌مان درست مه‌کهین به اوان بدهین.", + "botpasswords-disabled": "شیفرهٔ بؤت غیر فعال بوو.", + "botpasswords-no-central-id": "سی استفاده ژ شیفرهٔ بؤت ایوه ابتدا مه‌بایست به یک حساب متمرکز وارد بوپ.", + "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": "یارمته‌ل مه‌تونه تطبیق مه‌که", + "botpasswords-help-grants": "هر اجازه به ربات اجازه دسترسی به اختیاراتی را که حساب ایوه داره مه‌دهه. فعال کردن یک اجازه د ایره/اینجا هیچ دسترسی نو که حساب ایوه همینک دارا نییه را به اون نه‌بخشه. [[Special:ListGrants|table of grants]] را سی اطلاعات بیشتر مشاهده مه‌که‌ین.", + "botpasswords-label-grants-column": "اعطا بوو", + "botpasswords-bad-appid": "ناو بؤت \"$1\" معتبر نییه.", + "botpasswords-insert-failed": "اضافهٔ ناو بؤت \"$1\" ناموفق بوو. اون ناو ذاتًا اضافه بوو.", + "botpasswords-update-failed": "به‌روژ ناو بؤت \"$1\" ناموفق بوو. آیا اون حذف بوو؟", + "botpasswords-created-title": "شیفرهٔ بؤت ایجاد بوو", + "botpasswords-created-body": "سی کاربر \"$2\" و سی ناو بؤت ئی کاربر \"$1\" یک شیفرهٔ بؤت ایجاد بوو.", + "botpasswords-updated-title": "شیفرهٔ بؤت به‌روژ بوو", + "botpasswords-updated-body": "سی کاربر \"$2\" و سی ناو بؤت ئی کاربر \"$1\" یک شیفرهٔ بؤت به‌روژ بوو.", + "botpasswords-deleted-title": "شیفرهٔ بؤت پاک بوو", + "botpasswords-deleted-body": "سی کاربر \"$2\" و سی ناو بؤت ئی کاربر \"$1\" یک شیفرهٔ بؤت حذف بوو.", + "botpasswords-no-provider": "BotPasswordsSessionProvider موجود نییه.", + "botpasswords-restriction-failed": "محدودیته‌ل شیفره بؤت، به ئی ورود مانع مه‌بئت", "resetpass_forbidden": "نمی‌توان گذرواژه‌ها را تغییر داد", + "resetpass_forbidden-reason": "شیفره نتونه تغییر نه‌که: $1", "resetpass-no-info": "برای دسترسی مستقیم به این صفحه شما باید به سامانه وارد شده باشید.", "resetpass-submit-loggedin": "تغییردائن رمز", "resetpass-submit-cancel": "ئآهووسانن/لغو", @@ -530,6 +576,9 @@ "passwordreset-emailelement": "نام کاربری: \n$1\n\nگذرواژهٔ موقت: \n$2", "passwordreset-emailsentemail": "اگر نشانی پست الکترونیکی که وارد کردید برای حساب کاربریتان ثبت شده باشد، یک نامهٔ بازنشانی گذرواژه به آن فرستاده می‌شود.", "passwordreset-emailsentusername": "اگر نشانی پست الکترونیکی مرتبطی موجود باشد، یک نامه برای بازنشانی گذرواژه به آن ارسال خواهد شد.", + "passwordreset-nocaller": "زنگ مجبور نییه به تأمین کردن", + "passwordreset-nosuchcaller": "زنگ موجود نییه: $1", + "passwordreset-invalidemail": "آدرس ایمیل نامعتبره", "changeemail": "تغییر یا حذف نشانی ایمیل", "changeemail-header": "برای تغییر ایمیلتان این فرم را کامل کنید. برای حذف ایملیتان کافی است بخش ایمیل را خالی رها کنید و فرم را ارسال کنید.", "changeemail-no-info": ".برای دسترسی مستقیم به این صفحه شما باید به سیستم وارد شده باشید", @@ -570,6 +619,9 @@ "minoredit": "یۀ دۀسکاری جزئیکۀ", "watchthis": "پئ گیری اێ وەلگە", "savearticle": "وەڵگە بِیل(ذخیره کە)", + "savechanges": "تغییراتی قید بکه", + "publishpage": "صفحهٔ انتشار", + "publishchanges": "تغییرات انتشار", "preview": "پیش‌نمایش", "showpreview": "پیش‌نمایش", "showdiff": "گؤەڕیال(تغییرات) بۆین", @@ -673,6 +725,8 @@ "invalid-content-data": "داده محتوای نامعتبر", "content-not-allowed-here": "محتوای «$1» در صفحهٔ [[$2]] مجاز نیست", "editwarning-warning": "خروج از این برگه ممکن است باعث شود که شما هر شانسی که به وجود آورده‌اید را از دست بدهید.\nاگر شما وارد سامانه شده‌اید، می‌توانید این هشدار را در بخش «{{int:prefs-editing}}» ترجیحاتتان غیرفعال کنید.", + "editpage-invalidcontentmodel-title": "مودل محتوا دستک نبینه", + "editpage-invalidcontentmodel-text": "مودل محتوا \"$1\" دستک نبینه", "editpage-notsupportedcontentformat-title": "فرمت نۆم جِک(محتوا)پشتیبانی نشده", "editpage-notsupportedcontentformat-text": "فرمت محتوای $1 توسط مدل محتوای $2 پشتیبانی نشده‌است.", "content-model-wikitext": "ویکی‌متن", @@ -782,9 +836,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": "تاریخ وةڵگة", @@ -815,6 +869,9 @@ "mergehistory-empty": "هیچ‌یک از ورژن ها قابل ادغام نیستند.", "mergehistory-done": "$3 نسخه از $1 در {{PLURAL:$3|ادغام شد}}به [[:$2]].", "mergehistory-fail": "ادغام تاریخچه ممکن نیست، لطفاً گزینه‌های صفحه و زمان را بازبینی کنید.", + "mergehistory-fail-bad-timestamp": "برچسب زمانی معتبر نییه", + "mergehistory-fail-invalid-source": "صفحه منبع معتبر نییه", + "mergehistory-fail-invalid-dest": "صفحه مقصد معتبر نییه", "mergehistory-fail-toobig": "نمی‌توان ادغام تاریخچه را انجام داد که بیشتر از محدودیت $1 {{PLURAL:$1|نسخه}} انتقال داده خواهد شد.", "mergehistory-no-source": "صفحهٔ مبدأ $1 وجود ندارد.", "mergehistory-no-destination": "صفحهٔ مقصد $1 وجود ندارد.", @@ -865,7 +922,7 @@ "searchprofile-advanced-tooltip": "جستجو در فضاهای نام دلخواه", "search-result-size": "$1 ({{PLURAL:$2|1 واژۀ|$2 واژۀل}})", "search-result-category-size": "{{PLURAL:$1|یک عضو|$1 عضو}} ({{PLURAL:$2|یک زیررده|$2 زیررده}}، {{PLURAL:$3|یک پرونده|$3 پرونده}})", - "search-redirect": "(تغییرمسیر $1)", + "search-redirect": "(تغییرمسیر اژ $1)", "search-section": "(بۀخش $1)", "search-category": "(ڕِزگ $1)", "search-file-match": "(تشابه محتوی پرونده)", @@ -922,8 +979,6 @@ "saveprefs": "هیشتن(ذخیره)", "restoreprefs": "برگرداندن تمام تنظیمات پیش‌فرض (در تمامی قسمت‌ها)", "prefs-editing": "دەسکاری کردن", - "rows": "تعداد سطرها:", - "columns": "تعداد ستون‌ها:", "searchresultshead": "مِنِی کِردِن(گێردین)", "stub-threshold": "آستانهٔ ویرایش پیوندهای ناقص ($1):", "stub-threshold-sample-link": "نمونه", @@ -1003,12 +1058,13 @@ "prefswarning-warning": "تغییراتتان به ترجیحات هنوز ذحیره نشده است.\nاگر این صفحه بدون کلیک بر «$1» ترک کنید ترجیحاتتان ذخیره نخواهد شد.", "prefs-tabs-navigation-hint": "نکته: شما می توانید از کلیدهای جهت‌نمای چپ و راست برای حرکت بین زبانه‌ها در فهرست زبانه‌ها استفاده کنید.", "userrights": "مدیریت اختیارات کاربر", - "userrights-lookup-user": "مدیریت گروه‌های کاربری", + "userrights-lookup-user": "یک کاربر انتخاب بکه", "userrights-user-editname": "یک نام کاربری وارد کنید:", - "editusergroup": "ویرایش گروه‌های کاربری", + "editusergroup": "گروهه‌ل کاربر بار مه‌بئ", "editinguser": "تغییر اختیارات کاربری کاربر {{GENDER:$1|کاربر}} <strong>[[User:$1|$1]]</strong> $2", "userrights-editusergroup": "ویرایش گروه‌های کاربری", - "saveusergroups": "هیشتِن(ذخیرە)گؤەڕیال(تغییرات)کوو(گروە)کاربەری", + "userrights-viewusergroup": "گروهه‌ل کاربری نشان بده", + "saveusergroups": "گروه {{GENDER:$1|کاربر}} قید بده", "userrights-groupsmember": "عضو:", "userrights-groupsmember-auto": "عضو ضمنی:", "userrights-groups-help": "شما می‌توانید گروه‌هایی را که کاربر در آن قرار دارد تغییر دهید:\n* جعبهٔ علامت‌خورده نشانهٔ بودن کاربر در آن گروه است.\n* جعبهٔ خالی نشانهٔ نبودن کاربر در آن گروه است.\n* علامت * به این معنی‌است که اگر آن گروه را بیفزایید نمی‌توانید بعداً برش دارید، و برعکس.", @@ -1110,7 +1166,27 @@ "right-managechangetags": "ایجاد و حذف [[Special:Tags|برچسب‌ها]] از پایگاه داده", "right-applychangetags": "تائید [[Special:Tags|برچسب]] بر روی تغییرات یک نفر", "right-changetags": "افزودن یا حذف [[Special:Tags|برچسب]] قراردادی بر روی نسخه یا سیاهه ورودی‌ها", + "right-deletechangetags": "[[Special:Tags|tags]] را اژ پایگاه پاک بکه", + "grant-generic": "حقوق \"$1\" بسته", + "grant-group-page-interaction": "تعاول با صفحه", + "grant-group-file-interaction": "تعامل با میدیا", + "grant-group-watchlist-interaction": "تعامل با لیست تماشای ایوه", + "grant-group-email": "ایمیل کل بکه", + "grant-group-high-volume": "انجام فعالیته‌ل حجم بالا", "grant-group-customization": "سفارشی‌سازی و تنظیمات", + "grant-group-administration": "انجام اقدامات اداری", + "grant-group-other": "فعالیته‌ل متفرقه", + "grant-blockusers": "کاربره‌ل بستن و واز کردن", + "grant-createaccount": "حسابه ایجاد بکه", + "grant-createeditmovepage": "صحفاته ایحاد بکه، تغییر بکه و انتقال بکه", + "grant-delete": "صفحاته، رویزیونه‌لی و ورود یومی را پاک بکه", + "grant-editinterface": "ناو میدیا-ویکی را و کربر CSS/JavaScript را تغییر بکه", + "grant-editmycssjs": "کاربر ایوه CSS/JavaScript را تغییر بکه", + "grant-editmyoptions": "ترجیحات کاربر ایوه را تغییر بکه", + "grant-editmywatchlist": "لیست تماشای ایوه را تغییر بکه", + "grant-editpage": "صفحات موجوده تغییر بکه", + "grant-editprotected": "صفحات محافظه را تغییر بکه", + "grant-highvolume": "تغییرات د سویه بالایه", "newuserlogpage": "سیاههٔ ایجاد کاربر", "newuserlogpagetext": "این سیاهه‌ای از نام‌های کاربری تازه‌ساخته‌شده است.", "rightslog": "سیاههٔ اختیارات کاربر", @@ -1306,7 +1382,7 @@ "uploaded-setting-handler-svg": "پرونده SVG تنظیم شده با مشخصهٔ \"handler\" با remote/data/script بسته شده‌است. در پروندهٔ بارگذاری‌شده <code>$1=\"$2\"</code> یافت شد.", "uploaded-remote-url-svg": "پرونده SVG تنظیم شده با remote URL بسته شده‌است. در پروندهٔ بارگذاری‌شده <code>$1=\"$2\"</code> یافت شد.", "uploaded-image-filter-svg": "پالایه پرونده در نشانی:<code><$1 $2=\"$3\"></code> در پرونده SVG بارگذاری‌شده یافت شد.", - "uploadscriptednamespace": "این پوشه اس‌وی‌جی شامل فضای نام غیرقانونی '$1' است", + "uploadscriptednamespace": "این پوشه اس‌وی‌جی شامل فضای نام غیرقانونی '<nowiki>$1</nowiki>' است", "uploadinvalidxml": "XML در پروندهٔ بارگذاری‌شده نمی‌تواند تجزیه شود.", "uploadvirus": "این پرونده ویروس دارد!\nجزئیات : $1", "uploadjava": "این پرونده یک پرونده زیپ است که حاوی پرونده‌ای از نوع ‎‎.class جاوا است.\nبارگذاری پرونده‌های جاوا مجاز نیست، چرا که ممکن است اجازه دور زدن محدودیت‌های امنیتی را بدهند.", @@ -3231,52 +3307,12 @@ "feedback-useragent": "رابط کاربر:", "searchsuggest-search": "مِنِی کِردِن(گێردین)", "searchsuggest-containing": "وةڵگةل دربردارنده...", - "api-error-badaccess-groups": "شما اجازهٔ بارگذاری پرونده‌ها را در این ویکی ندارید.", "api-error-badtoken": "خطای داخلی: کد امنیتی اشتباه (Bad token).", - "api-error-copyuploaddisabled": "بارگذاری با استفاده از نشانی اینترنتی در این کارساز غیرفعال است.", - "api-error-duplicate": "{{PLURAL:$1|پروندهٔ دیگری|چند پروندهٔ دیگر}} در تارنما با محتوای یکسان وجود داشت.", - "api-error-duplicate-archive": "{{PLURAL:$1| پروندهٔ دیگری|چند پروندهٔ دیگر}} در تارنما با محتوای یکسان وجود داشت، ولی حذف {{PLURAL:$1|شده است|شده‌اند}}.", - "api-error-empty-file": "پرونده‌ای که شما ارسال کردید خالی بود.", "api-error-emptypage": "ایجاد وةڵگةل خالی مجاز نیست.", - "api-error-fetchfileerror": "خطای داخلی: در هنگام گرفتن پرونده، یک چیزی درست پیش نرفت.", - "api-error-fileexists-forbidden": "یک پرونده با نام \"$1\" موجود است و امکان بازنویسی نیست.", - "api-error-fileexists-shared-forbidden": "یک پرونده با نام \"$1\" در انبار اشتراک پرونده موجود است و امکان بازنویسی نیست.", - "api-error-file-too-large": "پرونده‌ای که شما ارسال کردید بیش از اندازه بزرگ بود.", - "api-error-filename-tooshort": "نام پرونده بیش از اندازه کوتاه است.", - "api-error-filetype-banned": "این نوع پرونده ممنوع است.", - "api-error-filetype-banned-type": "‎$1 {{PLURAL:$4|یک نوع پروندهٔ نامجاز است|انواع پروندهٔ نامجاز هستند}}. {{PLURAL:$3|نوع پروندهٔ مجاز|انواع پروندهٔ مجاز}} از این قرار است: $2.", - "api-error-filetype-missing": "پرونده فرمت ندارد.", - "api-error-hookaborted": "اصلاحیه‌ای که شما سعی در ایجاد آن بودید توسط افزونه‌ای به دام افتاد.", - "api-error-http": "خطای داخلی: قادر به اتصال به سرور نیست.", - "api-error-illegal-filename": "نام پرونده مجاز نیست.", - "api-error-internal-error": "خطای داخلی: با پردازش بارگذاری شما در ویکی، یک چیز اشتباه پیش رفت.", - "api-error-invalid-file-key": "خطای داخلی: پرونده در حافظهٔ موقت موجود نیست.", - "api-error-missingparam": "خطای داخلی: پارامترهای ناموجود در درخواست.", - "api-error-missingresult": "خطای داخلی: نمی‌توان فهمید کپی‌برداری موفق بوده‌است یا نه.", - "api-error-mustbeloggedin": "برای بارگذاری پرونده‌ها شما باید به سامانه وارد شوید.", - "api-error-mustbeposted": "خطای داخلی: درخواست باید از روش POST HTTP ارسال گردد.", - "api-error-noimageinfo": "بارگذاری موفق بود، ولی کارساز هیچ اطلاعاتی دربارهٔ پرونده به ما نداد.", - "api-error-nomodule": "خطای داخلی: پودمان بارگذاری تنظیم نشده‌است.", - "api-error-ok-but-empty": "خطای داخلی : پاسخی از سرور دریافت نشد.", - "api-error-overwrite": "جای نوشتن یک پرونده موجود مجاز نیست.", - "api-error-stashfailed": "خطای داخلی: کارساز نمی‌تواند پرونده موقت را ذخیره کند.", "api-error-publishfailed": "خطای داخلی: کارساز نمی‌تواند پرونده موقت را ذخیره کند.", - "api-error-stasherror": "هنگام انتقال پوشه برای ذخیره خطایی بود.", - "api-error-stashedfilenotfound": "زمانی که تلاش برای بارگذاری فایل استش بود، فایل استش یافت نشد.", - "api-error-stashpathinvalid": "مسیری که فایل استش در آن باید یافت می‌شد اشتباه است.", - "api-error-stashfilestorage": "برای ذخیرهٔ فایل استش خطایی رخ داده است.", - "api-error-stashzerolength": "سرور نمی‌تواند فایل استش را ذخیره کند چون حجم آن صفر است.", - "api-error-stashnotloggedin": "برای ذخیرهٔ فایل‌ها در بارگذاری استش باید وارد سامانه شده‌باشید.", - "api-error-stashwrongowner": "فایلی که در استش قصد داشتید به آن دسترسی داشته‌باشید متعلق به شما نیست.", - "api-error-stashnosuchfilekey": "کلیدی که در فایل استش می خواستید به آن دسترسی داشته‌باشید، وجود ندارد.", - "api-error-timeout": "کارساز در زمان انتظار هیچ پاسخی نداد.", - "api-error-unclassified": "یإگِلة خطا نادیاری/ناشناخته رخ داد.", - "api-error-unknown-code": "خطای نادیاری/ناشناخته: \" $1 \"", - "api-error-unknown-error": "خطای داخلی: در زمانی که شما در حال تلاش برای بارگذاری پروندهٔ‌تان بودید، یک چیز اشتباه پیش رفت.", + "api-error-stashfailed": "خطای داخلی: کارساز نمی‌تواند پرونده موقت را ذخیره کند.", "api-error-unknown-warning": "هشدار نادیاری/ ناشناخته: $1", "api-error-unknownerror": "خطای نادیاری/ناشناخته: \" $1 \"", - "api-error-uploaddisabled": "بارگذاری در این ویکی غیرفعال است.", - "api-error-verification-error": "ممکن است پرونده آسیب دیده باشد، یا دارای پسوند نادرست باشد.", "duration-seconds": "$1 {{PLURAL:$1|ثانیه|ثانیه ها}} قبل", "duration-minutes": "$1 {{PLURAL:$1|دیقه|دیقةلئ}} دماتر", "duration-hours": "$1 {{PLURAL:$1|ساعت |ساعتةلئ}} دماتر", diff --git a/languages/i18n/lrc.json b/languages/i18n/lrc.json index 996551b0b8..4a3996577d 100644 --- a/languages/i18n/lrc.json +++ b/languages/i18n/lrc.json @@ -521,8 +521,6 @@ "passwordreset-emaildisabled": "چیا هأنی کئ هان د أنجومانامە د ئی ڤیکی ناکونئشتگأر بینە.", "passwordreset-username": "نوم کاریاری:", "passwordreset-domain": "پوشگئر", - "passwordreset-capture": "أنجومانامە نأتیجە نە سئل بأکیت؟", - "passwordreset-capture-help": "أر شوما ئی جأڤە نئ ڤارئسی بأکیت.أنجومانامە (ڤا رازینە گوڤاردئن موڤأقأتی) جوٙری کئ سی کاریاریا هأنی کئل بییە دیاری میکە.", "passwordreset-email": "تیرنئشوٙن أنجومانامە", "passwordreset-emailtitle": "جوزئیات حئساڤ ها د {{نوم مالگە}}", "passwordreset-emailtext-ip": "یە کئسی(گاسی خوتوٙ، ڤا تیرنئشوٙن آی پی $1) د نۊ زئنە کئردئن رازینە گوڤاردئنئتوٙ د {{SITENAME}} حاستیتە($4).\nسی کاریار «$2» یئ گئل رازینە گوڤاردئن موڤأقتی رأڤأندیاری بییە و هومبأراڤأر «$3» ە.\nأر دالئتوٙ یە بییە ئیسئ ڤاس بیائیت ڤامین ساموٙنە و یئ گئل رازینە گوڤاردئن هأنی بئهایت.\n رازینە گوڤاردئن {{PLURAL:$3|ئی رازینە یا گوڤاردئن موڤأقأتی|ئی رازینە یا گوڤاردئن موڤأقأتی}} شوما د گات {{PLURAL:$5|یئ روٙ|$5 روٙ}} باطئل بوٙە.\n\nأر کأسی هأنی چئن حاستی داشتە یا یە کئ رازینە گوڤاردئن دئمایی شوما د ڤیرئتوٙ ئوٙما و دە نئمیهایت ڤئنە آلئشت کاری بأکیت، می توٙنیت د ئی پئیغوم تیە پوٙشی بأکیت و هأموٙ رازینە گوڤاردئن دئمایی نە بونیت د کار.", @@ -922,8 +920,6 @@ "saveprefs": "ئمایە کئردئن", "restoreprefs": "د نو زنه کردن همه میزونکاریا پیش فرض(د همه جایا)", "prefs-editing": "د حال و بال ڤیرایئشت", - "rows": "رأگیا:", - "columns": "ستينا:", "searchresultshead": "پئی جوٙری", "stub-threshold": "آستوٙنە ڤیرایئشتکاریا د یأک دیسئسە <a href=\"#\" class=\"stub\">ناقئص</a> (بایت):", "stub-threshold-sample-link": "نئموٙنە", @@ -1017,13 +1013,10 @@ "userrights-reason": "دألیل:", "userrights-no-interwiki": "شما سی ویرایشت حقوق کاریار د ویکی یا هنی دسرسی ناریت.", "userrights-nodatabase": "پاگا دونسمنی $1 یا نیئش یا د ولاتنشین نئ.", - "userrights-nologin": "شما باید وا یه گل حساو کاریاری دیووندار [[Special:UserLogin|روئیت وامین ]] تا تونستوییت حقوق کاریاری کاریار نه گماشته کاری بکیت.", - "userrights-notallowed": "شما سی اضاف کردن حقوق کاریار یا ورداشتنش دسرسی ناریت.", "userrights-changeable-col": "گرویایی که شما تونیت ویرایشت بکید", "userrights-unchangeable-col": "گرویایی که شما نتونیت ویرایشت بکید", "userrights-irreversible-marker": "$1*", "userrights-conflict": "تعارض دسرسیا کاریاری! لطف بکیت یه گل وارسی انجوم بئیت و آلشتانه پشت راس بکیت.", - "userrights-removed-self": "شما د خوئی حقوق خوتونه ؤرداشتیته، چی یه که مثلا شما تر نمی تونیت وه ای بلگه دسرسی داشتویت.", "group": "جأرغە", "group-user": "کاریاریا", "group-autoconfirmed": "کاریاریا خود پوشت راس بییە", @@ -1113,7 +1106,6 @@ "right-siteadmin": "پاگا دونسمنی نه قلف بکید یا نکید", "right-override-export-depth": "وه در دئن بلگه یایی که بلگه یا هوم پیوند بیه تا پی یا 5 ها دشو", "right-sendemail": "سی کاریاریا هنی انجومانامه کل بکید", - "right-passwordreset": "رازینه گواردن انجومانامه د نو دئه بیه نه بوینیت", "right-managechangetags": "راس کئردئن [[Special:سأردیسیا|سأردیسیا]] پاکسا کئردئن د رئسینە جا", "right-applychangetags": "ڤئ کار گئرئتئنئ [[Special:سأردیسیا|سأردیسیا]] ڤاگئرد آلئشتیا ھأرکومئشوٙ.", "right-changetags": "Add and remove arbitrary [[Special:Tags|tags]] on individual revisions and log entries", @@ -1303,7 +1295,7 @@ "php-uploaddisabledtext": "سوارکرد جانیایا د پی اچ پی ناکشتگر بیه.\nلطفن میزونکاری سوارکرد جانیا نه وارسی بکیت.", "uploadscripted": "ای بلگه مینونه دار رازینه اچ تی امل یا نیسسه یه که شایت وه ناخوشی وا دوراته نیئر واشکافت با.", "upload-scripted-pi-callback": "نأبوٙە جانیایایی کئ د ڤأرگئرئتە آموختارکاری پأردازئشت بألگە یا ئیکس ئم ئلئن سوڤار بأکیت.", - "uploadscriptednamespace": "ای جانیا اس‌ وی‌ جی نوم جا غیرقانونی '$1' داره.", + "uploadscriptednamespace": "ای جانیا اس‌ وی‌ جی نوم جا غیرقانونی '<nowiki>$1</nowiki>' داره.", "uploadinvalidxml": "ایکس ام الی که سوار بیه نبوئه نوتیج با.", "uploadvirus": "د ای جانیا ویروس هئ!\nجزیات:$1", "uploadjava": "ای جانیا یه گل جانیا زیپه که مینونه دار جانیایی د نوع کلاس جاوائه.\nسوارکردن جانیایا جاوا قدقن بیه، سی یه که شایت ونو صلا دور زئن محدودیتیا امنیتی نه بی ئن.", @@ -3226,52 +3218,12 @@ "feedback-useragent": "راوط کاریا:", "searchsuggest-search": "پی جوری", "searchsuggest-containing": "د حال و بار مینونه دار...", - "api-error-badaccess-groups": "شما سی سوار کرد جانیایا د ای ویکی اجازه ناریت.", "api-error-badtoken": "خطا مینجا:رازینه امنیتی اشتوا", - "api-error-copyuploaddisabled": "سوار کردن وا یو آر ال دی ای سرور غیرفعال بیه.", - "api-error-duplicate": "{{PLURAL:$1|یه گل جانیا هنی|چن گل جانیا هنی}} د دیارگه وا مینونه هومبراور بی.", - "api-error-duplicate-archive": "{{PLURAL:$1|یه گل جانیا هنی|چن گل جانیا هنی}} د دیارگه وا مینونه هومبراور بی.ولی پاکسا {{PLURAL:$1|بیه|بینه}}.", - "api-error-empty-file": "جانیایی که دئی ته حالی بی.", "api-error-emptypage": "یه گل بلگه تازه راس بکیت،بلگه یا حالی صلادار کاری نیئن.", - "api-error-fetchfileerror": "خطا مین کار: د گات گرتن جانیا، یه چی یی خو پیش نرت.", - "api-error-fileexists-forbidden": "یه گل جانیا وا نوم \"$1\" هئ و نبوئه ونه دوارته نیسی بکی.", - "api-error-fileexists-shared-forbidden": "یه گل جانیا وا نوم \"$1\" ها د جانیا بهر بیه د اماییه گا و نبوئه ونه دوارته نیسی بکی.", - "api-error-file-too-large": "جانیایی که دئیته فره گپه.", - "api-error-filename-tooshort": "نوم جانیا فره کؤچکه.", - "api-error-filetype-banned": "چنی جانیا قدقه بیه.", - "api-error-filetype-banned-type": "‎$1 {{PLURAL:$4|یه جور جانیا ناصلاداره|چن جور جانیا ناصلادارن}}. {{PLURAL:$3|جور جانیا صلاداره|چن جور جانیا صلادارن}} چنیه: $2.", - "api-error-filetype-missing": "نوم جانیا یه گل دمادیس گم بیه ئه.", - "api-error-hookaborted": "آلشکاری که شما میهاستیت ره وندیاریش بکیت وا یه گل دما دیس انجوم شیو بیه.", - "api-error-http": "خطا مینجایی:نبوئه د رسینه جا وصل بوئیت.", - "api-error-illegal-filename": "نوم جانیا اجازه دئه نئ.", - "api-error-internal-error": "خطا مینجاکار: وا پردازشتکاری سوارکرد شما د ویکی ، یه گل اشتوا پیش اوما.", - "api-error-invalid-file-key": "خطا مینجاکار: جانیا د اماییه جا موقت نئ.", - "api-error-missingparam": "خطا مینجاکار: پارامتریایی که د حاست نیئن.", - "api-error-missingresult": "خطا مینجاکار: نبوئه بفمئی که ورداشت کاری خوش سرانجوم بیه یا نه.", - "api-error-mustbeloggedin": "شما سی سوارکردن فایلیا با بیایت وامین", - "api-error-mustbeposted": "خطای مینجاکار: حاستن واس د طریق روشت POST HTTP کل با.", - "api-error-noimageinfo": "سوارکرد خوش سرانجوم بی، ولی رسینه جا هیچ جور دونسمنی یی د جانیا وه ایما نه دئه.", - "api-error-nomodule": "خطا مینجاکار: ماجول سوارکرد میزونکاری نبیه.", - "api-error-ok-but-empty": "خطا مینجاکار: رسینه جا جواوی نده.", - "api-error-overwrite": "نیسنن ری یه گل جانیایی که هیئش صلا ندئه بیه", - "api-error-stashfailed": "خطا مینجاکار: رسینه جا نمی تونه جانیا موقت نه اماییه کاری بکه.", "api-error-publishfailed": "خطا مینجاکار: رسینه جا نمی تونه جانیا موقت نه اماییه کاری بکه.", - "api-error-stasherror": "د گات جا وه جاکاری جانیا سی اماییه کاری یه گل خطا پیش اوما.", - "api-error-stashedfilenotfound": "د گاتی که سی سوارکرد جانیا استش تلاش می کردیت، جانیا استش دیاری نکرد.", - "api-error-stashpathinvalid": "مسیری که جانیا استش واس د وه با اشتوا بی.", - "api-error-stashfilestorage": "د گات اماییه کاری جانیا سی اماییه کاری یه گل خطا پیش اوما.", - "api-error-stashzerolength": "رسینه جا نمی تونه جانیا استش نه اماییه بکه سی یه انازه وه صفره.", - "api-error-stashnotloggedin": "سی اماییه کاری جانیایا د سوارکرد استش واس روئیت مین سامونه.", - "api-error-stashwrongowner": "جانیا کلیتی که شما میهاستیت د وه دسرسی داشتوئیت،مال شما نئ.", - "api-error-stashnosuchfilekey": "جانیا کلیتی که شما میهاستیت د وه دسرسی داشتوئیت، نیئش.", - "api-error-timeout": "رسینه جا د گات تیه وه را بیین جواوی نده.", - "api-error-unclassified": "یه گل خطا نادیار ری ون کرده.", - "api-error-unknown-code": "خطا نادیار:\"$1\".", - "api-error-unknown-error": "خطا مینونه: د گاتی که شما د حال و بار تلاش سی سوارکرد جانیاتو بییت، یه گل اشتوا پیش اوما.", + "api-error-stashfailed": "خطا مینجاکار: رسینه جا نمی تونه جانیا موقت نه اماییه کاری بکه.", "api-error-unknown-warning": "هشدار نادیار:\"$1\".", "api-error-unknownerror": "خطا نادیار:\"$1\".", - "api-error-uploaddisabled": "سوار کردن د ای ویکی ناکشتگر بیه.", - "api-error-verification-error": "شایت جانیا خراو بیه، یا پسون غلط داشتوئه.", "duration-seconds": "$1 {{PLURAL:$1|ثانیه|ثانیه یا}}", "duration-minutes": "$1 {{PLURAL:$1|دیقه|دیقه یا}}", "duration-hours": "$1 {{PLURAL:$1|ساعت |ساعتیا}}", diff --git a/languages/i18n/lt.json b/languages/i18n/lt.json index 16ed0bbcf5..195699dc0a 100644 --- a/languages/i18n/lt.json +++ b/languages/i18n/lt.json @@ -1015,8 +1015,6 @@ "saveprefs": "IÅ¡saugoti", "restoreprefs": "Grąžinti visus numatytuosius nustatymus (visose skiltyse)", "prefs-editing": "Redagavimas", - "rows": "Eilutės:", - "columns": "Stulpeliai:", "searchresultshead": "PaieÅ¡kos nustatymai", "stub-threshold": "Ribinė reikÅ¡mė nepilnų puslapių nuorodų formatavimui ($1):", "stub-threshold-sample-link": "pavyzdys", @@ -1111,6 +1109,10 @@ "userrights-nodatabase": "Duomenų bazė $1 neegzistuoja arba yra ne vietinė.", "userrights-changeable-col": "Grupės, kurias galite keisti", "userrights-unchangeable-col": "Grupės, kurių negalite keisti", + "userrights-expiry-current": "Baigiasi $1", + "userrights-expiry-none": "Nesibaigia", + "userrights-expiry": "Baigiasi:", + "userrights-expiry-othertime": "Kitas laikas:", "userrights-conflict": "Naudotojo teisių konfliktas! PraÅ¡ome dar kartą taikyti savo keitimus.", "group": "Grupė:", "group-user": "Naudotojai", @@ -1308,6 +1310,39 @@ "recentchanges-legend-heading": "<strong>PaaiÅ¡kinimai:</strong>", "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (taip pat žiÅ«rėkite [[Special:NewPages|naujausių straipsnių sąrašą]])", "recentchanges-submit": "Rodyti", + "rcfilters-activefilters": "AktyvÅ«s filtrai", + "rcfilters-clear-all-filters": "Valyti visus filtrus", + "rcfilters-invalid-filter": "Negalimas filtras", + "rcfilters-filterlist-title": "Filtrai", + "rcfilters-highlightmenu-title": "Pasirinkti spalvą", + "rcfilters-filterlist-noresults": "Nerastas toks filtras", + "rcfilters-filtergroup-registration": "Vartotojo registracija", + "rcfilters-filter-registered-label": "Registruoti", + "rcfilters-filter-unregistered-label": "Neregistruoti", + "rcfilters-filter-editsbyself-label": "JÅ«sų keitimai", + "rcfilters-filter-editsbyself-description": "JÅ«sų keitimai.", + "rcfilters-filter-editsbyother-label": "Kitų keitimai", + "rcfilters-filter-editsbyother-description": "Kaitimai sukurti kitų vartotojų (ne jÅ«sų).", + "rcfilters-filtergroup-userExpLevel": "Patirties lygis (tik registruotiems vartotojams)", + "rcfilters-filter-userExpLevel-newcomer-label": "Naujokai", + "rcfilters-filter-userExpLevel-learner-label": "Mokiniai", + "rcfilters-filter-userExpLevel-experienced-label": "Patyrę vartotojai", + "rcfilters-filter-userExpLevel-experienced-description": "Daugiau nei 30 dienų veiklos ir 500 keitimų.", + "rcfilters-filter-bots-label": "Robotas", + "rcfilters-filter-bots-description": "Keitimai, atlikti automatinių įrankių.", + "rcfilters-filter-humans-label": "Žmogaus (ne roboto)", + "rcfilters-filter-humans-description": "Keitimai atlikti žmonių.", + "rcfilters-filtergroup-significance": "ReikÅ¡mė", + "rcfilters-filter-minor-label": "SmulkÅ«s pakeitimai", + "rcfilters-filter-minor-description": "Keitimai, kuriuos autorius pažymėjo kaip mažus.", + "rcfilters-filter-major-label": "NesmulkÅ«s pakeitimai", + "rcfilters-filter-major-description": "Keitimai, nepažymėti kaip smulkÅ«s.", + "rcfilters-filtergroup-changetype": "Pakeitimo tipas", + "rcfilters-filter-pageedits-label": "Puslapių keitimai", + "rcfilters-filter-newpages-label": "Puslapių sukÅ«rimai", + "rcfilters-filter-newpages-description": "Keitimai, kurie sukuria naujus puslapius.", + "rcfilters-filter-categorization-label": "Kategorijų pakeitimai", + "rcfilters-filter-categorization-description": "Ä®raÅ¡ai puslapių, kurie yra pridedami ar paÅ¡alinami iÅ¡ kategorijų.", "rcnotefrom": "Žemiau yra {{PLURAL:$5|pakeitimas|pakeitimai}} pradedant <strong>$3, $4</strong> (rodoma iki <strong>$1</strong> pakeitimų).", "rclistfrom": "Rodyti naujus pakeitimus pradedant $3 $2", "rcshowhideminor": "$1 smulkius keitimus", @@ -1440,7 +1475,7 @@ "uploaded-setting-handler-svg": "SVG, kurie nustato \"handler\" atributą naudodami remote/data/script, yra užblokuoti. Ä®keltame SVG faile rasta <code>$1=\"$2\"</code>.", "uploaded-remote-url-svg": "Užblokuoti SVG, kurie nustato style atributą naudodami nuotolinį URL. Ä®keltame SVG faile rasta <code>$1=\"$2\"</code>.", "uploaded-image-filter-svg": "Ä®keltame SVG faile rastas paveikslėlio filtras su URL: <code><$1 $2=\"$3\"></code>.", - "uploadscriptednamespace": "Å is SVG failas turi neteisėtą vietą vardui '$1'", + "uploadscriptednamespace": "Å is SVG failas turi neteisėtą vietą vardui '<nowiki>$1</nowiki>'", "uploadinvalidxml": "XML įkeltoje rinkmenoje negali bÅ«ti iÅ¡nagrinėtas.", "uploadvirus": "Å iame faile yra virusas! Smulkiau: $1", "uploadjava": "Å i rinkmena tai ZIP rinkmena, kurioje yra Java .class rinkmena.\nÄ®kelti Java rinkmenų neleidžiama, nes jos gali padėti apeiti saugumo apribojimus.", @@ -2318,6 +2353,7 @@ "proxyblockreason": "JÅ«sų IP adresas yra užblokuotas, nes jis yra atvirasis tarpinis serveris. PraÅ¡ome susisiekti su savo interneto paslaugų tiekėju ar technine pagalba ir praneÅ¡kite jiems apie Å¡ią svarbią saugumo problemą.", "sorbsreason": "JÅ«sų IP adresas yra įtrauktas į atvirųjų tarpinių serverių DNSBL sąrašą, naudojamą Å¡ios svetainės.", "sorbs_create_account_reason": "JÅ«sų IP adresas yra įtrauktas į atvirųjų tarpinių serverių DNSBL sąrašą, naudojamą Å¡ios svetainės. JÅ«s negalite sukurti paskyros", + "softblockrangesreason": "Anoniminiai įnaÅ¡ai nėra leidžiami iÅ¡ jÅ«sų IP adreso ($1). PraÅ¡ome prisijungti.", "xffblockreason": "IP adresas esantys X-Forwarded-For antraÅ¡tėje, jÅ«sų ar tarpinio serverio, kuriuo jÅ«s naudojatės, buvo užblokuotas. Originali bloko priežastis buvo: $1", "cant-see-hidden-user": "Naudotojas, kurį bandote užblokuoti, jau yra užblokuotas arba paslėptas.\nKadangi jÅ«s neturi hideuser teisės, jÅ«s negalite pamatyti arba pakeisti naudotojo blokavimo.", "ipbblocked": "JÅ«s negalite blokuoti ar atblokuoti kitų naudotojų, nes pats esate užblokuotas", @@ -3441,6 +3477,7 @@ "logentry-tag-update-logentry": "$1 {{GENDER:$2|atnaujino}} žymes $3 puslapio žurnalo įraÅ¡e $5 ({{PLURAL:$7|pridėtas}} $6; {{PLURAL:$9|paÅ¡alintas}} $8)", "rightsnone": "(jokių)", "revdelete-summary": "keitimo paaiÅ¡kinimas", + "rightslogentry-temporary-group": "$1 (laikinai, iki $2)", "feedback-adding": "Pridedamas atsiliepimas į puslapį ...", "feedback-back": "Atgal", "feedback-bugcheck": "Puiku! Tiesiog patikrinkite, ar tai ne viena [$1 jau žinomų klaidų].", @@ -3465,56 +3502,12 @@ "feedback-useragent": "Vartotojo veiksnys:", "searchsuggest-search": "IeÅ¡koti", "searchsuggest-containing": "turintys", - "api-error-autoblocked": "JÅ«sų IP adresas buvo automatiÅ¡kai užblokuotas, nes jį naudojo užblokuotas naudotojas.", - "api-error-badaccess-groups": "Jums neleidžiama įkelti failus į Å¡ią wiki.", "api-error-badtoken": "Vidinė klaida: blogai atpažinimo ženklas.", - "api-error-blocked": "Jus buvote užblokuotas, kad negalėtumėte redaguoti.", - "api-error-copyuploaddisabled": "Siuntimas pagal URL yra iÅ¡jungtas Å¡iame serveryje.", - "api-error-duplicate": "Jau {{PLURAL:$1|yra kitas failas|yra kiti failai}} puslapyje su tuo pačiu turiniu.", - "api-error-duplicate-archive": "Jau {{PLURAL:$1|buvo kitas failas|buvo kitų failų}} puslapyje su tuo pačiu turiniu, bet {{PLURAL:$1|buvo iÅ¡trintas|buvo iÅ¡trinti}}.", - "api-error-empty-file": "Pateikta failas buvo tuščias.", "api-error-emptypage": "Kurti naujus, tuščius puslapius neleidžiama.", - "api-error-fetchfileerror": "Vidinė klaida: Kažkas nutiko gaunant failą.", - "api-error-fileexists-forbidden": "Failas, kurio pavadinimas \"$1\" jau egzistuoja, ir negali bÅ«ti perraÅ¡ytas.", - "api-error-fileexists-shared-forbidden": "Failas, kurio pavadinimas \"$1\" jau egzistuoja bendro naudojimo failų saugykloje, ir negali bÅ«ti perraÅ¡ytas.", - "api-error-file-too-large": "Failą, kurį pateikėte buvo per didelis.", - "api-error-filename-tooshort": "Failo vardas yra per trumpas.", - "api-error-filetype-banned": "Å is failų tipas yra uždraustas.", - "api-error-filetype-banned-type": "$1 {{PLURAL:$4|nėra leistinas failo tipas|nėra leistini failo tipai}}.{{PLURAL:$3|Leistinas failo tipas yra|Leistini failo tipai yra}} $2.", - "api-error-filetype-missing": "Failas neturi galÅ«nės.", - "api-error-hookaborted": "Pakeitimą, kurį bandėte atlikti, nutraukė priedas.", - "api-error-http": "Vidinė klaida: nepavyko prisijungti prie serverio.", - "api-error-illegal-filename": "Failo vardas neleidžiamas.", - "api-error-internal-error": "Vidinė klaida: Kažkas ne taip su jÅ«sų įkėlimo apdorojimu wiki.", - "api-error-invalid-file-key": "Vidinė klaida: failas nerastas saugykloje.", - "api-error-missingparam": "Vidinė klaida: TrÅ«ksta reikalingų parametrų.", - "api-error-missingresult": "Vidinė klaida: nepavyko nustatyti, ar pavyko nukopijuoti.", - "api-error-mustbeloggedin": "JÅ«s turite bÅ«ti prisijungęs kad galėtumėte įkelti failus.", - "api-error-mustbeposted": "Vidinė klaida: praÅ¡ymas reikalauja HTTP POST.", - "api-error-noimageinfo": "Ä®kelti pavyko, bet serveris nepateikė mums jokios informacijos apie failą.", - "api-error-nomodule": "Vidinė klaida: nėra nustatytas įkėlimų modulis.", - "api-error-ok-but-empty": "Vidinė klaida: nėra atsakymo iÅ¡ serverio.", - "api-error-overwrite": "PerraÅ¡ymas esamą failą neleidžiamas.", - "api-error-ratelimited": "JÅ«s per trumpą laiko tarpą bandote įkelti daugiau failų, nei leidžiama Å¡iame projekte.\nPabandykite dar kartą po keleto minučių.", - "api-error-stashfailed": "Vidinė klaida: serveriui nepavyko iÅ¡saugoti laikinąjį failą.", "api-error-publishfailed": "Vidinė klaida: serveriui nepavyko paskelbti laikino failo.", - "api-error-stasherror": "Ä®vyko klaida keliant failą į laikyklą.", - "api-error-stashedfilenotfound": "Saugomas failas nebuvo rastas bandant įkelti jį iÅ¡ saugyklos.", - "api-error-stashpathinvalid": "Kelias, kuriuo saugomas failas bÅ«tų surastas yra negalimas.", - "api-error-stashfilestorage": "Ä®vyko klaida saugant failą saugykloje.", - "api-error-stashzerolength": "Serveris negalėjo iÅ¡saugoti failo, nes jo ilgis yra nulinis.", - "api-error-stashnotloggedin": "JÅ«s turite bÅ«ti prisijungęs jei norite iÅ¡saugoti failus įkėlimų saugykloje.", - "api-error-stashwrongowner": "Failas, kuri bandėte pasiekti saugykloje jums nepriklauso.", - "api-error-stashnosuchfilekey": "Failo raktas, kurį bandėte pasiekti saugykloje neegzistuoja.", - "api-error-timeout": "Serveris neatsakė per numatytą laiką.", - "api-error-unclassified": "Ä®vyko nežinoma klaida", - "api-error-unknown-code": "Nežinoma klaida: \" $1 \"", - "api-error-unknown-error": "Vidinė klaida: kažkas nutiko bandant įkelti failą.", + "api-error-stashfailed": "Vidinė klaida: serveriui nepavyko iÅ¡saugoti laikinąjį failą.", "api-error-unknown-warning": "Nežinomas įspėjimas: $1", "api-error-unknownerror": "Nežinoma klaida: \"$1\"", - "api-error-uploaddisabled": "Ä®kėlimas iÅ¡jungtas Å¡ioje wiki.", - "api-error-verification-error": "Å is failas gali bÅ«ti sugadintas arba turi neteisingą papildinį.", - "api-error-was-deleted": "Failas tokiu pavadinimu anksčiau jau yra buvęs įkeltas, o paskui iÅ¡trintas.", "duration-seconds": "$1 {{PLURAL:$1|sekundė|sekundės|sekundžių}}", "duration-minutes": "$1 {{PLURAL:$1|minutė|minutės|minučių}}", "duration-hours": "$1 {{PLURAL:$1|valanda|valandos|valandų}}", @@ -3559,7 +3552,10 @@ "pagelang-language": "Kalba", "pagelang-use-default": "Naudoti numatytąją kalbą", "pagelang-select-lang": "Pasirinkite kalbą", + "pagelang-reason": "Priežastis", "pagelang-submit": "Pateikti", + "pagelang-nonexistent-page": "Puslapis $1 neegzistuoja.", + "pagelang-db-failed": "Duomenų bazei nepavyko pakeisti puslapio kalbos.", "right-pagelang": "Keisti puslapio kalbą", "action-pagelang": "keisti puslapio kalbą", "log-name-pagelang": "Kalbos keitimų žurnalas", diff --git a/languages/i18n/lv.json b/languages/i18n/lv.json index 446cb3c3bf..c0035b9f20 100644 --- a/languages/i18n/lv.json +++ b/languages/i18n/lv.json @@ -63,7 +63,7 @@ "tog-watchlisthideanons": "Paslēpt anonÄ«mo dalÄ«bnieku labojumus uzraugāmo lapu sarakstā", "tog-watchlisthidepatrolled": "Paslēpt pārbaudÄ«tās lapas uzraugāmo lapu sarakstā", "tog-watchlisthidecategorization": "Paslēpt lapu kategorizēšanu", - "tog-ccmeonemails": "SÅ«tÄ«t sev citiem dalÄ«bniekiem nosÅ«tÄ«to epastu kopijas", + "tog-ccmeonemails": "SÅ«tÄ«t sev citiem dalÄ«bniekiem nosÅ«tÄ«to e-pastu kopijas", "tog-diffonly": "NerādÄ«t lapu saturu zem izmaiņām", "tog-showhiddencats": "RādÄ«t slēptās kategorijas", "tog-norollbackdiff": "Neņemt vērā atÅ¡Ä·irÄ«bas, veicot atriti", @@ -189,6 +189,7 @@ "searcharticle": "Aiziet!", "history": "hronoloÄ£ija", "history_short": "Vēsture", + "history_small": "vēsture", "updatedmarker": "atjaunināti kopÅ¡ pēdējā apmeklējuma", "printableversion": "Drukājama versija", "permalink": "PastāvÄ«gā saite", @@ -221,6 +222,7 @@ "views": "Apskates", "toolbox": "RÄ«ki", "tool-link-userrights": "MainÄ«t {{GENDER:$1|dalÄ«bnieka|dalÄ«bnieces}} grupas", + "tool-link-userrights-readonly": "ApskatÄ«t {{GENDER:$1|dalÄ«bnieka|dalÄ«bnieces}} grupas", "tool-link-emailuser": "NosÅ«tÄ«t e-pastu {{GENDER:$1|Å¡im dalÄ«bniekam|Å¡ai dalÄ«bniecei}}", "userpage": "SkatÄ«t dalÄ«bnieka lapu", "projectpage": "SkatÄ«t projekta lapu", @@ -592,7 +594,7 @@ "newarticletext": "Å ajā projektā vēl nav lapas ar šādu nosaukumu.\nLai izveidotu lapu, sāc rakstÄ«t teksta logā apakšā (par teksta formatēšanu un sÄ«kākai informācija skatÄ«t [$1 palÄ«dzÄ«bas lapu]).\nJa tu Å¡eit nonāci kļūdas pēc, vienkārÅ¡i uzspied <strong>back</strong> pogu pārlÅ«kprogrammā.", "anontalkpagetext": "----''Å Ä« ir diskusiju lapa anonÄ«mam dalÄ«bniekam, kurÅ¡ vēl nav kļuvis par reÄ£istrētu dalÄ«bnieku vai arÄ« neizmanto savu dalÄ«bnieka vārdu. Tādēļ mums ir jāizmanto skaitliskā IP adrese, lai viņu identificētu.\nŠāda IP adrese var bÅ«t vairākiem dalÄ«bniekiem.\nJa tu esi anonÄ«ms dalÄ«bnieks un uzskati, ka tev ir adresēti neatbilstoÅ¡i komentāri, lÅ«dzu, [[Special:CreateAccount|kļūsti par dalÄ«bnieku]] vai arÄ« [[Special:UserLogin|izmanto jau izveidotu dalÄ«bnieka vārdu]], lai izvairÄ«tos no turpmākām neskaidrÄ«bām un tu netiktu sajaukts ar citiem anonÄ«miem dalÄ«bniekiem.''", "noarticletext": "Å ajā lapā Å¡obrÄ«d nav nekāda teksta, tu vari [[Special:Search/{{PAGENAME}}|meklēt citās lapās pēc Å¡Ä«s lapas nosaukuma]], <span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} meklēt saistÄ«tos reÄ£istru ierakstos] vai arÄ« [{{fullurl:{{FULLPAGENAME}}|action=edit}} sākt rediģēt Å¡o lapu]</span>.", - "noarticletext-nopermission": "Å ajā lapā paÅ¡laik nav nekāda teksta.\nTu vari [[Special:Search/{{PAGENAME}}|meklēt Å¡Ä«s lapas nosaukumu]] citās lapās,\nvai <span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} meklēt saistÄ«tus reÄ£istru ierakstus]</span>, bet jums nav atļauja izveidot si lapu.", + "noarticletext-nopermission": "Å ajā lapā paÅ¡laik nav nekāda teksta.\nTu vari [[Special:Search/{{PAGENAME}}|meklēt Å¡Ä«s lapas nosaukumu]] citās lapās,\nvai <span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} meklēt saistÄ«tus reÄ£istru ierakstus]</span>, bet jums nav atļauja izveidot Å¡o lapu.", "userpage-userdoesnotexist": "Lietotājs \"<nowiki>$1</nowiki>\" nav reÄ£istrēts.\nLÅ«dzu, pārliecinies vai vēlies izveidot/izmainÄ«t Å¡o lapu.", "userpage-userdoesnotexist-view": "DalÄ«bnieks \"$1\" nav reÄ£istrēts.", "blocked-notice-logextract": "Å is dalÄ«bnieks paÅ¡laik ir nobloķēts.\n\nPēdējais bloķēšanas reÄ£istra ieraksts ir apskatāms zemāk:", @@ -826,6 +828,7 @@ "preferences": "Izvēles", "mypreferences": "Izvēles", "prefs-edits": "Izmaiņu skaits:", + "prefsnologintext2": "LÅ«dzu pieslēdzies, lai mainÄ«tu savas izvēles.", "prefs-skin": "Apdare", "skin-preview": "PriekÅ¡skats", "datedefault": "Vienalga", @@ -994,6 +997,7 @@ "right-unblockself": "Atbloķēt sevi", "right-protect": "IzmainÄ«t aizsargātās lapas un to aizsardzÄ«bas lÄ«meni", "right-editprotected": "Labot aizsargātās lapas (bez kaskādes aizsardzÄ«bas)", + "right-editcontentmodel": "Labot lapas satura modeli", "right-editinterface": "IzmainÄ«t dalÄ«bnieka interfeisu", "right-editusercssjs": "IzmainÄ«t citu dalÄ«bnieku CSS un JS failus", "right-editusercss": "IzmainÄ«t citu dalÄ«bnieku CSS failus", @@ -1001,6 +1005,9 @@ "right-editmyusercss": "Rediģējiet savus dalÄ«bnieka CSS failus", "right-editmyuserjs": "Rediģējiet savus dalÄ«bnieka JavaScript failus", "right-viewmywatchlist": "ApskatÄ«t savu uzraugāmo rakstu sarakstu", + "right-viewmyprivateinfo": "Skatit savus privātos datus (piemēram, e-pasta adresi, Ä«sto vārdu)", + "right-editmyprivateinfo": "Labot savus privātos datus (piemēram, e-pasta adresi, Ä«sto vārdu)", + "right-editmyoptions": "Labot savas izvēles", "right-rollback": "Ātri veikt atriti pēdējā dalÄ«bnieka labojumiem, kas veica izmaiņas kādā konkrētā lapā", "right-markbotedits": "AtzÄ«mēt labojumus, kam veikta atrite, kā bota labojumus", "right-noratelimit": "BÅ«t darbÄ«bu ātruma ierobežojumu neietekmētiem", @@ -1043,8 +1050,9 @@ "action-upload_by_url": "augÅ¡upielādēt Å¡o failu no URL", "action-writeapi": "izmantot rakstÄ«to lietojumprogrammu saskarni", "action-delete": "izdzēst Å¡o lapu", - "action-deleterevision": "izdzēst Å¡o versiju", - "action-deletedhistory": "skatÄ«t Å¡Ä«s lapas dzēsto hronoloÄ£iju", + "action-deleterevision": "dzēst versijas", + "action-deletelogentry": "dzēst žurnāla ierakstus", + "action-deletedhistory": "skatÄ«t Å¡Ä«s lapas dzēsto vēsturi", "action-browsearchive": "meklēt dzēstās lapas", "action-undelete": "atjaunot Å¡o lapu", "action-suppressrevision": "pārskatÄ«t un atjaunot Å¡o slēpto versiju", @@ -1076,6 +1084,19 @@ "recentchanges-legend-heading": "<strong>ApzÄ«mējumi:</strong>", "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (skatÄ«t arÄ« [[Special:NewPages|jaunās lapas]])", "recentchanges-submit": "RādÄ«t", + "rcfilters-invalid-filter": "NederÄ«gs filtrs", + "rcfilters-filterlist-title": "Filtri", + "rcfilters-filterlist-noresults": "Filtri nav atrasti", + "rcfilters-filtergroup-registration": "Lietotāja reÄ£istrācija", + "rcfilters-filtergroup-changetype": "Izmaiņu veids", + "rcfilters-filter-pageedits-label": "Lapu labojumi", + "rcfilters-filter-pageedits-description": "Labojumi vikivietnes saturā, diskusijā, kategoriju aprakstos...", + "rcfilters-filter-newpages-label": "Lapu veidoÅ¡ana", + "rcfilters-filter-newpages-description": "Labojumi, kas veido jaunas lapas.", + "rcfilters-filter-categorization-label": "Kategoriju izmaiņas", + "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...", "rcnotefrom": "Å obrÄ«d redzamas izmaiņas kopÅ¡ '''$2''' (parādÄ«tas ne vairāk par '''$1''').", "rclistfrom": "ParādÄ«t jaunas izmaiņas kopÅ¡ $3 $2", "rcshowhideminor": "$1 maznozÄ«mÄ«gos", @@ -1347,7 +1368,7 @@ "statistics-files": "AugÅ¡uplādētie faili", "statistics-edits": "Lapu izmaiņas kopÅ¡ {{grammar:Ä£enitÄ«vs{{SITENAME}}}} izveidoÅ¡anas", "statistics-edits-average": "Vidējais izmaiņu skaits uz lapu", - "statistics-users": "ReÄ£istrēti lietotāji", + "statistics-users": "ReÄ£istrēti [[Special:ListUsers|dalÄ«bnieki]]", "statistics-users-active": "AktÄ«vi lietotāji", "statistics-users-active-desc": "Lietotāji, kas ir veikuÅ¡i jebkādu darbÄ«bu {{PLURAL:$1|iepriekšējās $1 dienās|iepriekšējā $1 dienā|iepriekšējās $1 dienās}}", "pageswithprop-prop": "ĪpaÅ¡Ä«bas nosaukums:", @@ -1432,6 +1453,8 @@ "apihelp-no-such-module": "Modulis \"$1\" nav atrasts.", "apisandbox": "API smilÅ¡kaste", "apisandbox-api-disabled": "API ir atspējots Å¡ajā tÄ«mekļa vietnē.", + "apisandbox-unfullscreen": "RādÄ«t lapau", + "apisandbox-submit": "Izveidot pieprasÄ«jumu", "apisandbox-reset": "NotÄ«rÄ«t", "apisandbox-retry": "Mēģināt vēlreiz", "apisandbox-no-parameters": "Å o API modulim nav parametru.", @@ -1442,8 +1465,12 @@ "apisandbox-dynamic-parameters-add-placeholder": "Parametra nosaukums", "apisandbox-results": "Rezultāti", "apisandbox-request-url-label": "PieprasÄ«juma URL:", + "apisandbox-request-json-label": "PieprasÄ«juma JSON:", "apisandbox-request-time": "PieprasÄ«juma izpildes laiks: {{PLURAL:$1|$1 ms}}", + "apisandbox-continue": "Turpināt", "apisandbox-continue-clear": "NotÄ«rÄ«t", + "apisandbox-multivalue-all-namespaces": "$1 (visas vārdtelpas)", + "apisandbox-multivalue-all-values": "$1 (visas vērtÄ«bas)", "booksources": "Grāmatu avoti", "booksources-search-legend": "Meklēt grāmatu avotus", "booksources-search": "Meklēt", @@ -1504,6 +1531,7 @@ "listgrouprights-removegroup": "Noņemt {{PLURAL:$2|grupas|grupu|grupas}}: $1", "listgrouprights-addgroup-all": "Pievienot visas grupas", "listgrouprights-removegroup-all": "Noņemt visas grupas", + "listgrouprights-removegroup-self": "Noņemt {{PLURAL:$2|grupu|grupas}} no sava konta: $1", "listgrouprights-addgroup-self-all": "Pievienot visas grupas savam kontam", "listgrouprights-removegroup-self-all": "Noņemt visas grupas no sava konta", "listgrouprights-namespaceprotection-header": "Vārdtelpas ierobežojumi", @@ -1563,7 +1591,7 @@ "watchlist-submit": "RādÄ«t", "wlshowhideminor": "maznozÄ«mÄ«gos labojumus", "wlshowhidebots": "boti", - "wlshowhideliu": "reÄ£istrēti lietotāji", + "wlshowhideliu": "reÄ£istrēti dalÄ«bnieki", "wlshowhideanons": "anonÄ«mi lietotāji", "wlshowhidepatr": "pārbaudÄ«ti labojumi", "wlshowhidemine": "mani labojumi", @@ -1725,7 +1753,7 @@ "sp-contributions-blocked-notice-anon": "Å Ä« IP adrese paÅ¡laik ir nobloķēta.\nPēdējais bloķēšanas reÄ£istra ieraksts ir apskatāms zemāk:", "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, kuri ir jaunākās versijas", + "sp-contributions-toponly": "RādÄ«t tikai labojumus, kas ir jaunākās versijas", "sp-contributions-submit": "Meklēt", "whatlinkshere": "Norādes uz Å¡o rakstu", "whatlinkshere-title": "Lapas, kurās ir saites uz lapu \"$1\"", @@ -2058,7 +2086,10 @@ "pageinfo-watchers": "Lapas uzraudzÄ«tāju skaits", "pageinfo-redirects-name": "Pāradresāciju skaits uz Å¡o lapu", "pageinfo-subpages-name": "Å Ä«s lapas apakÅ¡lapas", + "pageinfo-firstuser": "Lapas izveidotājs", + "pageinfo-firsttime": "Lapas izveides datums", "pageinfo-lastuser": "Pēdējais labotājs", + "pageinfo-lasttime": "Pēdējā labojuma datums", "pageinfo-edits": "Kopējais izmaiņu skaits", "pageinfo-authors": "Kopējais atseviÅ¡Ä·u autoru skaits", "pageinfo-toolboxlink": "Lapas informācija", @@ -2071,6 +2102,7 @@ "pageinfo-category-pages": "Lapu skaits", "pageinfo-category-subcats": "ApakÅ¡kategoriju skaits", "pageinfo-category-files": "Failu skaits", + "pageinfo-user-id": "Lietotāja ID", "markaspatrolleddiff": "AtzÄ«mēt kā pārbaudÄ«tu", "markaspatrolledtext": "AtzÄ«mēt Å¡o lapu kā pārbaudÄ«tu", "markedaspatrolled": "AtzÄ«mēta kā pārbaudÄ«ta", @@ -2082,6 +2114,7 @@ "patrol-log-page": "Pārbaudes reÄ£istrs", "patrol-log-header": "Å is ir pārbaudÄ«to versiju reÄ£istrs.", "log-show-hide-patrol": "$1 pārbaudes reÄ£istrs", + "confirm-markpatrolled-button": "Labi", "deletedrevision": "Izdzēstā vecā versija $1", "filedeleteerror-short": "Kļūda dzēšot failu: $1", "filedeleteerror-long": "Kļūdas, kas radās failu dzēšanas laikā:\n\n$1", @@ -2128,7 +2161,7 @@ "monday-at": "Pirmdiena $1", "bad_image_list": "Formāts:\n\nTiek ņemti vērā tikai ieraksti rindiņā kas sākas ar *\nPirmajai saitei rindiņā ir jābÅ«t uz attiecÄ«go failu\nJebkuras sekojoÅ¡as saites tiks uzskatÄ«tas par izņēmumiem t.i. lapām kurās fails drÄ«kt tikt izmantots", "metadata": "Metadati", - "metadata-help": "Å is fails satur papildu informāciju, kuru visticamk ir pievienojis digitālais fotoaparāts vai skeneris, kas Å¡o failu izveidoja. Ja Å¡is fails pēc tam ir ticis modificēts, Å¡ie dati var neatbilst izmaiņām (var bÅ«t novecojuÅ¡i).", + "metadata-help": "Å is fails satur papildu informāciju, kuru visticamāk ir pievienojis digitālais fotoaparāts vai skeneris, kas Å¡o failu izveidoja. Ja Å¡is fails pēc tam ir ticis modificēts, Å¡ie dati var neatbilst izmaiņām (var bÅ«t novecojuÅ¡i).", "metadata-expand": "ParādÄ«t papildu detaļas", "metadata-collapse": "Paslēpt papildu detaļas", "metadata-fields": "Å ajā paziņojumā esoÅ¡ie metadatu lauki bÅ«s redzami attēla lapā arÄ« tad, kad metadatu tabula bÅ«s sakļauta.\nPārējie lauki, pēc noklusējuma, bÅ«s paslēpti.\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", @@ -2635,22 +2668,23 @@ "feedback-submit": "Iesniegt", "feedback-thanks": "Paldies! JÅ«su atsauksmes ir ievietotas lapā \"[$2 $1]\".", "feedback-thanks-title": "Paldies!", + "feedback-useragent": "Lietotāja aÄ£ents:", "searchsuggest-search": "Meklēt {{SITENAME}}", "searchsuggest-containing": "Meklējamā frāze:", - "api-error-badaccess-groups": "Jums nav atļauts augÅ¡upielādēt failus Å¡ajā wiki.", - "api-error-copyuploaddisabled": "AugÅ¡upielāde no URL Å¡ajā serverÄ« ir atspējota.", - "api-error-filename-tooshort": "Faila nosaukums ir pārāk Ä«ss.", - "api-error-filetype-banned": "Å is failu veids ir aizliegts.", - "api-error-http": "Iekšēja kļūda: Nevar izveidot savienojumu ar serveri.", - "api-error-mustbeloggedin": "Tev jāpieslēdzas, lai augÅ¡upielādētu failus.", - "api-error-ok-but-empty": "Iekšēja kļūda: Nav atbildes no servera.", - "api-error-timeout": "Serveris neatbildēja paredzētajā laikā.", - "api-error-unclassified": "Nezināma kļūda.", - "api-error-unknown-code": "Nezināma kļūda: \" $1 \"", "api-error-unknown-warning": "Nezināms brÄ«dinājums: $1", "api-error-unknownerror": "Nezināma kļūda: \"$1\"", - "api-error-uploaddisabled": "AugÅ¡upielāde Å¡ajā wiki ir atslēgta.", + "duration-seconds": "$1 {{PLURAL:$1|sekundes|sekunde|sekundes}}", + "duration-minutes": "$1 {{PLURAL:$1|minÅ«tes|minÅ«te|minÅ«tes}}", + "duration-hours": "$1 {{PLURAL:$1|stundas|stunda|stundas}}", + "duration-days": "$1 {{PLURAL:$1|dienas|diena|dienas}}", + "duration-weeks": "$1 {{PLURAL:$1|nedēļas|nedēļa|nedēļas}}", + "duration-years": "$1 {{PLURAL:$1|gadi|gads|gadi}}", + "duration-decades": "$1 {{PLURAL:$1|desmitgades|desmitgade|desmitgades}}", + "duration-centuries": "$1 {{PLURAL:$1|gadsimti|gadsimts|gadsimti}}", + "duration-millennia": "$1 {{PLURAL:$1|tÅ«kstoÅ¡gades|tÅ«kstoÅ¡gade|tÅ«kstoÅ¡gades}}", "limitreport-title": "Parsētāja profilēšanas dati:", + "limitreport-cputime-value": "$1 {{PLURAL:$1|sekundes|sekunde|sekundes}}", + "limitreport-walltime-value": "$1 {{PLURAL:$1|sekundes|sekunde|sekundes}}", "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}}", @@ -2686,6 +2720,8 @@ "special-characters-group-gujarati": "Gudžarati", "mw-widgets-dateinput-no-date": "Nav izvēlēts datums", "mw-widgets-titleinput-description-new-page": "lapa vēl nepastāv", + "mw-widgets-categoryselector-add-category-placeholder": "Pievienot kategoriju...", + "sessionprovider-generic": "$1 sesijas", "authmanager-email-label": "E-pasts", "authmanager-email-help": "E-pasta adrese", "authmanager-realname-label": "Tavs Ä«stais vārds", diff --git a/languages/i18n/mai.json b/languages/i18n/mai.json index c997386d27..ef6dbf2b6e 100644 --- a/languages/i18n/mai.json +++ b/languages/i18n/mai.json @@ -568,8 +568,6 @@ "passwordreset-emaildisabled": "कूटशब्द फेरसँ बनाएब ऐ विकीपर अक्षम कएल अछि।", "passwordreset-username": "प्रयोक्तानाम:", "passwordreset-domain": "क्षेत्र:", - "passwordreset-capture": "परिणाम ई-पत्र देखी?", - "passwordreset-capture-help": "जँ अहाँ ई बक्शाकेँ देखै छी, ई-पत्र (तात्कालिक कूटशब्दकसंग) अहाँकेँ देखाएल जाएत आ संगे प्रयोक्ताकेँ पठाएल जाएत।", "passwordreset-email": "ई-पत्र सङ्केत:", "passwordreset-emailtitle": "{{SITENAME}} पर खाता विवरण", "passwordreset-emailtext-ip": "कियो (सम्भवतः अहाँ, अन्तर्जाल सेवा कल्पक $1 सँ) अपन लेखा विवरणक पुनःस्मरणक लेल अनुरोध केलहुँ ऐ लेल {{SITENAME}} ($4). ई प्रयोक्ता {{PLURAL:$3|लेखा अछि|लेखा सभ अछि}}\nऐ ई-पत्र संकेतसँ सम्बन्धित:\n\n$2\n\n{{PLURAL:$3|ई अल्पकालक कूटशब्द| ई सभ अल्पकालक कूटशब्द}} खतम भऽ जाएत {{PLURAL:$5|एक दिन|$5 पाँच दिन}}.\nअहाँ सम्प्रवेश करू आ एकटा नव कूटशब्द चुनू।. जौं कियो आन ई आग्रह केने अछि, वा अहाँकेँ अपन पुरान कूटशब्द मोन पड़ि गेल अछि , आ आब एकरा बदलबाक इच्छा नै राखै छी तँ अहाँ ऐ संदेशकेँ बिसरि जाउ आ अपन पुरान कूटशब्दक प्रयोग करैत रहू।", @@ -981,8 +979,6 @@ "saveprefs": "सङ्ग्रह करी", "restoreprefs": "सभटा पूर्वनिर्धारित चयनकेँ फेरसँ आनी", "prefs-editing": "सम्पादन कऽ रहल छी", - "rows": "पाँतीसभ", - "columns": "स्तम्भसभ", "searchresultshead": "ताकी", "stub-threshold": "आधार लिङ्क हेतु प्रारूपण ($1):", "stub-threshold-sample-link": "उदाहरण", @@ -1076,13 +1072,10 @@ "userrights-reason": "कारण:", "userrights-no-interwiki": "अहाँकेँ दोसर विकीपर प्रयोक्ता अधिकारकेँ बदलबाक अधिकार नै अछि।", "userrights-nodatabase": "दत्तनिधि $1 नै अछि वा स्थानीय नै अछि।", - "userrights-nologin": "अहाँ [[Special:UserLogin|सम्प्रवेश]] प्रयोक्ता अधिकार देबा लेल संचालक खातासँ सम्प्रवेश करू।", - "userrights-notallowed": "अहाँक खाता दोसराक प्रयोक्ता अधिकारमे कमी बेशी नै करैत अछि।", "userrights-changeable-col": "वर्ग जे अहाँ बदलि सकै छी", "userrights-unchangeable-col": "वर्ग जे अहाँ नै बदलि सकै छी", "userrights-irreversible-marker": "$1*", "userrights-conflict": "प्रयोक्ता अधिकार बदलावक समयमे अंतर्विरोध! कृपया अपन बदलाव जाँच करु आ पुनः सुनिश्चित करु।", - "userrights-removed-self": "अहाँ सफलतापूर्वक अपन अधिकार हटा देने छी। अतः अहाँ आब ई पृष्ठ नै देख सकैत छी।", "group": "समूह:", "group-user": "प्रयोक्तासभ", "group-autoconfirmed": "स्वतःअनुमोदित प्रयोक्ता", @@ -1173,7 +1166,6 @@ "right-siteadmin": "दत्तनिधिकेँ प्रतिबन्धित करू आ फेर प्रतिबन्ध हटाउ", "right-override-export-depth": "५ परत धरि जा पन्ना सभ निर्यात, जइमे लागिबला पन्ना सभ शामिल अछि, करू।", "right-sendemail": "ई-पत्र दोसर प्रयोक्ता लोकनिकेँ पठाउ", - "right-passwordreset": "कूटशब्द पुनर्निर्धारण ई-पत्र देखू", "right-managechangetags": "[[Special:Tags|ट्यागसभ]] बनाबी आ नुकाबी", "right-applychangetags": "प्रयोग में लाबू [[Special:Tags|tags]] कक्रो बदलाव के साथ।", "right-changetags": "जमा करु आर हटाबु स्वतंत्र [[Special:Tags|टैग]] व्यक्तिगत अवतरण आर लॉग प्रविक्ति पे", @@ -1398,7 +1390,7 @@ "uploadscripted": "ई संचिका पर्यंकभाषा वा कूटलिपि युक्त अछि जे गवेषक द्वारा गलत रूपमे व्याख्यायित कएल जा सकैए।", "upload-scripted-pi-callback": "ओ फाइल अपलोड नै केल जा सकैत अछि जाहिमे एक्सएमएल-स्टाइलसिट प्रसंस्करण निर्देश समाविष्ट अछि।", "uploaded-script-svg": "अपलोड केल गेल एसभिजी फाइलमे स्क्रिप्ट अवयव \"$1\" पाबल गेल।", - "uploadscriptednamespace": "इ एस॰वी॰जी फाइलमे अमान्य नामस्थान \"$1\" अछि।", + "uploadscriptednamespace": "इ एस॰वी॰जी फाइलमे अमान्य नामस्थान \"<nowiki>$1</nowiki>\" अछि।", "uploadinvalidxml": "अपलोड केएल गेल फाइलमे स्थित XML पार्स नै केएल जा सकैत अछि।", "uploadvirus": "ई संचिका विषविधियुक्त अछि।\nवर्णन:$1", "uploadjava": "ई संचिका एकटा संकुचित संचिका अछि जइमे अछि एकटा जावा .class संचिका।\nजावा संचिका सभक उपारोपण प्रतिबन्धित अछि, कारण ओ सभ सुरक्षा प्रतिबन्ध सभ छी जकरासँ ई तड़पल जा सकैए।", @@ -3267,23 +3259,9 @@ "feedback-useragent": "सदस्य कर्ता:", "searchsuggest-search": "ताकी", "searchsuggest-containing": "...सऽ युक्त", - "api-error-badaccess-groups": "अहि विकी सें अहां कोनो प्रारूप लोड नहि क सकब.", "api-error-badtoken": "आन्तरिक त्रुटि: खराब टोकन।", - "api-error-copyuploaddisabled": "युआरयलद्वारा इ सर्वर पर अपलोड अक्षम अछि।", - "api-error-filename-tooshort": "ई संचिका नाम बड छोट अछि |", - "api-error-filetype-banned": "ऐ तरहक संचिका नाम प्रतिबंधित अछि।", - "api-error-filetype-banned-type": "$1 {{PLURAL:$4|मान्य संचिका प्रकार नै अछि|मान्य संचिका प्रकार सभ नै अछि}}। मान्य अछि {{PLURAL:$3|संचिका प्रकार अछि|संचिका प्रकार सभ अछि}} $2।", - "api-error-http": "आन्तरिक भ्रम: वितरकसँ सम्पर्क करबामे असफल", - "api-error-illegal-filename": "ऐ तरहक संचिका नाम अमान्य अछि।", - "api-error-mustbeloggedin": "अहाँ के फाइल अपलोड करए के लेल सम्प्रवेष करए पडत।", - "api-error-mustbeposted": "आन्तरिक भ्रम: आग्रहक लेल परिपाठ्य संचार संविद पाठ चाही।", - "api-error-nomodule": "आन्तरिक भ्रम: कोनो उपारोपण तरीका निर्धारित नै अछि।", - "api-error-ok-but-empty": "आन्तरिक भ्रम: वितरकसँ कोनो सम्पर्क नै", - "api-error-unclassified": "एकटा अबूझ भ्रम आएल", - "api-error-unknown-code": "अबूझ भ्रम:\"$1\"", "api-error-unknown-warning": "अज्ञात चेतौनी: $1", "api-error-unknownerror": "अज्ञात भ्रम:\"$1\"", - "api-error-uploaddisabled": "ऐ विकीपर उपारोपण अशक्त कएल गेल अछि।", "expand_templates_output": "परिणाम", "expand_templates_xml_output": "XML आउटपुट", "expand_templates_ok": "ठीक अछि", diff --git a/languages/i18n/mg.json b/languages/i18n/mg.json index 74f57ae51b..dfe50d3964 100644 --- a/languages/i18n/mg.json +++ b/languages/i18n/mg.json @@ -26,6 +26,7 @@ "tog-watchdefault": "Hanaraka ny pejy ary ny rakitra ovaiko", "tog-watchmoves": "Hanaraka ny pejy ary ny rakitra ovaiko anarana", "tog-watchdeletion": "Hanaraka ny pejy ary ny rakitra voafafako", + "tog-watchuploads": "Ampiana amin'ny pejy arahako ireo rakitra vaovao nalefako", "tog-watchrollback": "Hanaraka pejy nanaovako famoana", "tog-minordefault": "Mariho ho madinika foana aloha ny fanovana rehetra", "tog-previewontop": "Asehoy alohan'ny boaty fanovana ny tsipalotra", @@ -35,7 +36,7 @@ "tog-enotifminoredits": "Andefasana imailaka na dia fanovana madinika aza no atao amin'ny pejy sy ny rakitra", "tog-enotifrevealaddr": "Asehoy ny adiresy imailako any amin'ny imailaka fampilazana", "tog-shownumberswatching": "Asehoy ny isan'ny mpikambana manara-maso ny pejy", - "tog-oldsig": "Topi-mason'ny sonia :", + "tog-oldsig": "Topi-mason'ny sonianao :", "tog-fancysig": "Sonia tsotra (tsy misy rohy)", "tog-uselivepreview": "Hampiasa ny topi-maso mivantana", "tog-forceeditsummary": "Teneno ahy ra tsy nametraka ny ambangovangony", @@ -50,7 +51,7 @@ "tog-ccmeonemails": "Andefaso tahaka ny imailaka alefako amin'ny mpikambana hafa", "tog-diffonly": "Aza ampiseho ny voatonin'ny pejy eo amban'ny diff", "tog-showhiddencats": "Asehoy ny sokajy misitrika", - "tog-norollbackdiff": "Aza aseho ny diff rehefa avy namafa fanàvana iray", + "tog-norollbackdiff": "Aza aseho ny fahasamihafana aorian'ny famoanana", "tog-useeditwarning": "Ampitandremo aho raha miala sady mamela pejy ovaiko nefa tsy notahiriziko", "tog-prefershttps": "Fanohizana azo antoka foana no ampaisaina rehefa tafiditra", "underline-always": "Foana foana", @@ -147,7 +148,7 @@ "newwindow": "(sokafy anaty takila hafa)", "cancel": "Aoka ihany", "moredotdotdot": "Tohiny...", - "morenotlisted": "Tsy feno ity lisitra ity.", + "morenotlisted": "Mety tsy feno ity lisitra ity.", "mypage": "Pejy", "mytalk": "Dinika", "anontalk": "Pejin-dresaka", @@ -169,11 +170,13 @@ "tagline": "Avy amin'i {{SITENAME}}", "help": "Fanoroana", "search": "Tadiavo", + "search-ignored-headings": "#<!-- Avelao ho toa izao ity andalana ity --> <pre>\n# Ny lohatenim-pizarana dia tsy horaharahiana amin'ny karoka.\n# Ny fiovana atao eto dia hihatra rehefa voasoratra ao amin'ny tondro ilay pejy miaraka amin'ilay lohateny.\n# Azonao atao ny famerenana an-tondro an'ilay pejy amin'ny alalan'ny fanovana tsy misy inona inona.\n# Ny rariteny dia ireo manaraka:\n# *Izay andalana rehetra manomboka amin'ny \"#\" dia resaka\n# *Izay andalana tsy fotsy dia lohateny tsy horaharahiana, iaraka amin'ny haben-tsoratra\nTsiahy\nRohy ivelany\nJereo koa\n#</pre> <!-- Avelao ho toa izao ity andalana ity -->", "searchbutton": "Tadiavo", "go": "Ndao", "searcharticle": "Tsidiho", "history": "Tantaran'ny pejy", "history_short": "Tantara", + "history_small": "tantara", "updatedmarker": "niova hatry ny tsidiko farany", "printableversion": "Ny votoatiny azo atonta printy", "permalink": "Rohy maharitra", @@ -205,6 +208,9 @@ "talk": "dinika", "views": "Fijerena", "toolbox": "Fitaovana", + "tool-link-userrights": "Hanova ny vondron'i {{GENDER:$1|}}mpikambana", + "tool-link-userrights-readonly": "Hijery ny vondron'ny mpikambana{{GENDER:$1|}}", + "tool-link-emailuser": "Handefa mailaka an'ity mpikambana ity{{GENDER:$1|}}", "userpage": "Hijery ny pejy manokan'ny mpikambana", "projectpage": "Pejy meta", "imagepage": "Jereo ny pejin'ny sary", @@ -319,6 +325,7 @@ "missingarticle-rev": "(famerenana faha : $1)", "missingarticle-diff": "(diff : $1 ; $2)", "readonly_lag": "\nMihidy ho azy aloha ny banky angona mandra-pahatratran'ny serveur andevo ny tompony", + "nonwrite-api-promise-error": "Ny loha HTTP \"<code>Promise-Non-Write-API-Action:</code>\" dia nalefa fa tsy natao tany amina module fanoratana API ny hataka", "internalerror": "Tsy fetezana anatin'ny rindrankajy", "internalerror_info": "Tsy fetezana ety anatiny : $1", "internalerror-fatal-exception": "Karazana-kadisoana nampijanona \"$1\"", @@ -393,41 +400,43 @@ "createacct-yourpasswordagain-ph": "Mbola ampidiro fanindroany ny tenimiafinao", "userlogin-remembermypassword": "Tadidio aho", "userlogin-signwithsecure": "Fidirana amin'ny alalan'ny fanohizana azo antoka", + "cannotlogin-title": "Tsy afaka miditra", + "cannotlogin-text": "Tsy afaka atao ny fidirana", "cannotloginnow-title": "Tsy afaka miditra izao", "cannotloginnow-text": "Tsy afaka miditra rehefa mampiasa $1.", + "cannotcreateaccount-title": "Tsy afaka mamorona kaonty", + "cannotcreateaccount-text": "Tsy ampiasaina eto amin'ty wiki ity ny famoronana kaontim-pikambana avy hatrany.", "yourdomainname": "faritra (domaine) misy anao", "password-change-forbidden": "Tsy afaka manova ny tenimiafina ianao eto amin'ity wiki ity.", "externaldberror": "Nisy tsy fetezana angamba teo amin'ny fanamarinana anao tamin'ny sehatra ivelan'ity wiki ity, na tsy manana alalana hanova ny kaontinao ivelany ianao.", "login": "Midira", + "login-security": "Hamarino ny famantarana anao", "nav-login-createaccount": "Ampidiro ny solonanarana", - "userlogin": "Hiditra na hanokatra kaonty", - "userloginnocreate": "hiditra", "logout": "Hiala", "userlogout": "Hiala", "notloggedin": "Tsy tafiditra", "userlogin-noaccount": "Tsy manana kaonty?", "userlogin-joinproject": "Midira ho mpikamban'i {{SITENAME}}", - "nologin": "Tsy manana solonanarana? '''$1'''.", - "nologinlink": "Manokafa kaonty", "createaccount": "Hamorona kaonty", - "gotaccount": "Efa manana kaonty? '''$1'''.", - "gotaccountlink": "Midira", - "userlogin-resetlink": "Adinonavo ve ny antsipihan'ny fidiranao ?", "userlogin-resetpassword-link": "Hadino ny tenimiafina?", "userlogin-helplink2": "Fanampiana amin'ny fidirana", "userlogin-loggedin": "Efa tafiditra amin'ny anaran'i {{GENDER:$1|$1}} ianao. Ampiasao ny fôrmiolera eo ambany raha hiditra amin'ny anaran'ny mpikambana hafa.", + "userlogin-reauth": "{{GENDER:$1|}}Tsy maintsy miditra indray ianao mba ahafantarana hoe $1 ianao.", "userlogin-createanother": "Hamorona kaonty hafa", "createacct-emailrequired": "Adiresy mailaka :", "createacct-emailoptional": "Adiresy mailaka (azo tsy atao) :", "createacct-email-ph": "Atsofohy ny adiresy mailakao", "createacct-another-email-ph": "Atsofohy ny adiresy mailaka", "createaccountmail": "Hampiasa tenimiafina vonjimaika ary handefa azy eo amin'ny adiresy mailaka voalaza", + "createaccountmail-help": "Azo ampiasaina amin'ny famoronana kaonty ho an'olon-kafa tsy mila mahafantatra ny tenimiafina.", "createacct-realname": "Tena anarana (azo tsy atao)", - "createaccountreason": "Antony :", "createacct-reason": "Antony", "createacct-reason-ph": "Inona ny antony hamoronanao kaonty hafa", + "createacct-reason-help": "Hafatra ho aseho ao amin'ny laogim-pamoronan-kaonty", "createacct-submit": "Hamorona ny kaontinao", "createacct-another-submit": "Hamorona kaonty vaovao", + "createacct-continue-submit": "Hanohy ny famoronan-kaonty", + "createacct-another-continue-submit": "Hanohy ny famoronan-kaonty", "createacct-benefit-heading": "Olona tahaka ianao no manoratra eo amin'i {{SITENAME}}", "createacct-benefit-body1": "fanovana{{PLURAL:$1}}", "createacct-benefit-body2": "pejy{{PLURAL:$1}}", @@ -441,10 +450,11 @@ "nocookiesnew": "Voasikatra ny kaontim-pikambana, fa tsy tafiditra amin'ny kaontinao ianao.\nMampiasa cookies ny {{SITENAME}} ho an'ny fidirana amin'ny kaonty.\nTsy avelanao mandeha ny cookies.\nAvelao mandeha ny fampidirana cookies, ary midira amin'ny kaontinao.", "nocookieslogin": "Mampiasa cookies i {{SITENAME}} nefa ny mpiteti-tranonkalanao no tsy manaiky na mandà azy. Ovay mba hanaiky cookies aloha ny mpiteti-tranonkalanao dia aveo manandrama mihiditra ato indray.", "nocookiesfornew": "Tsy mbola noforonina ilay kaontim-pikambana, satria tsy afaka marinanay ilay loharanony.\nMarino tsara raha mahazo mametraka cookie ao amin'ny kompioteranao ny sehata, dia havaozy ilay pejy", + "createacct-loginerror": "Noforonina soa aman-tsara ity kaonty ity fa tsy tafiditra ho azy ianao. Midira amin'ny alalan'ny [[Special:UserLogin|pejy fidirana]] azafady.", "noname": "Tsy nanome solonanarana mety ianao.", "loginsuccesstitle": "Tafiditra soa aman-tsara", "loginsuccess": "'''Tafiditra amin'ny {{SITENAME}} ianao ry \"$1\".'''", - "nosuchuser": "Tsy misy mpikambana manana izany solonanarana \"$1\" izany. Hamarino ny tsipelina na manokafa kaonty vaovao.", + "nosuchuser": "Tsy misy mpikambana manana izany solonanarana \"$1\" izany.\nManavaka ny renisoratra sy ny zanatsoratra ny anaram-pikambana.\nHamarino ny tsipelina na [[Special:CreateAccount|manokafa kaonty vaovao]].", "nosuchusershort": "Tsy misy mpikambana hoe \"$1\". Hamarino ny tsipelina.", "nouserspecified": "Tsy maintsy mampiditra solonanarana ianao.", "login-userblocked": "Voasakana io mpikambana io. Fidirana tsy nahazoan-dalana.", @@ -452,6 +462,7 @@ "wrongpasswordempty": "Tsy nampiditra tenimiafina ianao, azafady mba avereno indray.", "passwordtooshort": "{{PLURAL:}}Fohy loatra io tenimiafina io.\nFarafahakeliny tokony hisy litera $1 ny tenimiafina.", "passwordtoolong": "Tsy azo atao ho lava noho ny soratra {{PLURAL:$1|iray|$1}} ny tenimiafina.", + "passwordtoopopular": "Tsy azo ampiasana ny tenimiafina ampiasaina matetika. Misafidiana tenimiafina manokana kokoa.", "password-name-match": "Tsy maintsy samihafa ny solonanaranao sy ny tenimiafinao tompoko.", "password-login-forbidden": "Norarana ny fampiasana io anaram-pikambana ary io tenimiafina io.", "mailmypassword": "Hamerina ny tenimiafina", @@ -460,11 +471,11 @@ "noemail": "Tsy nanome adiresy imailaka i \"$1\".", "noemailcreate": "Tsy maintsy misy ny adiresy imailaka ho atsofokao", "passwordsent": "Nandefasana tenimiafina vaovao any amin'ny adiresy imailak'i \"$1\".\nAzafady midira rehefa voarainao io imailaka io.", - "blocked-mailpassword": "Voasakana ny adiresy IP-nao, nesorina aminao ny asa ''password recovery'' mba tsy hanararaotra.", + "blocked-mailpassword": "Voasakana tsy afa-manova ny adiresy IP-nao. Mba tsy hisian'ny fanararaotana dia tsy azo atao ny famerenana tenimiafina avy amin'ity adiresy IP ity.", "eauthentsent": "Efa nandefasana imailaka fanamarinana ilay adiresy nomenao.\nAlohan'ny handefasana mailaka hafa any amin'ity kaonty ity dia mila manaraka ny torolalana ianao hahafahana manamarina anao ho tompon'ilay kaonty.", "throttled-mailpassword": "Efa nandefasana mailaka famerenana tenimiafiana ianao tanatin'ny {{PLURAL:$1|ora|$1 ora}}.\nMba tsy hisian'ny fanararaotana dia mailaka famerenana tenimiafiana iray ihany no azo ampiasaina isaky ny adin'ny $1{{PLURAL:}}.", "mailerror": "Nisy olana tamin'ny fandefasana imailaka: $1", - "acct_creation_throttle_hit": "Miala tsiny, efa nanokatra kaonty miisa $1 ianao, ka tsy afaka mamorona hafa intsony.{{PLURAL:}}", + "acct_creation_throttle_hit": "Ireo mpitsidika avy amin'ny adiresy IP-nao dia namorona {{PLURAL:$1|kaonty iray|kaonty $1}} tanatin'ny $2, izay isam-panoronana farafahabetsany azo atao anatin'izay fe-potoana izay.\nNy vokatr'izany dia tsy afa-mamorona kaonty vaovao ity adiresy ity amin'izao fotoana izao.", "emailauthenticated": "Voamarina tamin'ny $2 tamin'ny $3 ny adiresy mailakao.", "emailnotauthenticated": "Tsy mbola nomarinina ny adiresy mailakao.\nTsy handefa mailaka izy ho an'ireo asa ireo.", "noemailprefs": "Manomeza adiresy imailaka raha hampiasa ireo fitaovana ireo ianao.", @@ -484,6 +495,7 @@ "createacct-another-realname-tip": "Azo tsy atsofoka ny tena anarana.\nRaha misafidy ny hanome azy ianao, ho ampiasaina amin'ny fanehoana ny anjara asan'ilay mpikambana ilay izy.", "pt-login": "Hiditra", "pt-login-button": "Hiditra", + "pt-login-continue-button": "Hanohy ny fidirana", "pt-createaccount": "Hamorona kaonty", "pt-userlogout": "Hivoaka", "php-mail-error-unknown": "Hadisoana tsy fantatra tao amin'ny tao mial() an'i PHP.", @@ -515,15 +527,16 @@ "botpasswords-insert-failed": "Tsy afaka nanampy ny anarana rôbô \"$1\". Tsy efa nampiana ve ilay izy?", "botpasswords-update-failed": "Tsy afaka nanavao ny anarana rôbô \"$1\". Nofafàna ve ilay izy?", "botpasswords-created-title": "Noforonina ilay tenimiafina rôbô", - "botpasswords-created-body": "Noforonina ny tenimiafina rôbô \"$1\".", + "botpasswords-created-body": "Noforonina ny tenimiafina rôbô \"$1\" an'ny mpikambana \"$2\".", "botpasswords-updated-title": "Nohavaozina ny tenimiafina rôbô", - "botpasswords-updated-body": "Nohavaozina ny tenimiafina rôbô \"$1\".", + "botpasswords-updated-body": "Nohavaozina ny tenimiafina rôbô \"$1\" an'ny mpikambana \"$2\".", "botpasswords-deleted-title": "Nofafàna ny tenimiafina rôbô", - "botpasswords-deleted-body": "Nofafàna ny tenimiafina rôbô \"$1\".", + "botpasswords-deleted-body": "Nofafàna ny tenimiafina rôbô \"$1\" an'ny mpikambana \"$2\".", "botpasswords-newpassword": "Ny tenimiafina idirana amin'i <strong>$1</strong> dia <strong>$2</strong>. <em>Raiketo ilay izy ho an'ny fampiasàna any aoriana any.</em>", "botpasswords-no-provider": "Tsy afaka antsoina ny BotPasswordsSessionProvider.", "botpasswords-restriction-failed": "Manakana ity fidirana ity ny fepetra mifehy ny tenimiafina rôbô.", "resetpass_forbidden": "Tsy afaka ovaina ny tenimiafina", + "resetpass_forbidden-reason": "Tsy afaka ovaina ny tenimiafina: $1", "resetpass-no-info": "Tsy maintsy tafiditra ao amin'ny kaontinao ianao vao afaka mijery ity pejy ity.", "resetpass-submit-loggedin": "Ovay ny tenimiafina", "resetpass-submit-cancel": "Aoka ihany", @@ -542,16 +555,18 @@ "passwordreset-emaildisabled": "Tsy avela ny fampiasana mailaka eto amin'ity wiki ity.", "passwordreset-username": "Anaram-pikambana :", "passwordreset-domain": "Vala (domain) :", - "passwordreset-capture": "Hijery ny imailaka vokany ?", - "passwordreset-capture-help": "Raha marihanao ity boaty ity, ny mailaka (miaraka amin'ilay tenimiafina vonjimaika) dia ho aseho aminao ary koa ho alefa amin'ilay mpikambana.", "passwordreset-email": "Adiresy imailaka :", "passwordreset-emailtitle": "Antsipirihan'ny kaonty eo amin'i {{SITENAME}}", "passwordreset-emailtext-ip": "Nisy olona (izay mety ianao, avy amin'ny adiresy IP $1) nangataka ny hamerina ny tenimiafin'ny kaontim-pikambany ho an'i {{SITENAME}} ($4). Mampiasa ity adiresy mailaka ity {{PLURAL:$3|ity kaontim-pikambana mpikambana io|ireo kaontim-mpikambana ireo}}:\n\n$2\n\nHitsahatra afaka $5 andro {{PLURAL:$3|io tenimiafina io|ireo tenimiafina ireo}}.\nTokony miditra ianao ary mifidy tenimiafina vaovao. Raha misy olon-kafa nanao ity hataka ity, na efa tadidinao indray ilay tenimiafinao taloha, ary raha tsy tia hanova azy intsony, azonao tsy raharahiana ity hafatra ity ary mitohy mampiasa ny tenimiafinao taloha.", "passwordreset-emailtext-user": "Nisy mpikambana mitondra anarana $1 eo amin'i {{SITENAME}} nangataka fampatsiahivana mikasika ny kaontinao eo amin'i {{SITENAME}} ($4). Manana io adiresy imailaka {{PLURAL:$3|io kaontim-pikambana io|ireo kaontim-pikambana ireo}} :\n\n$2\n\nHitsahatra afaka {{PLURAL:$5|iray|$5}} andro {{PLURAL:$3|io|ireo}} tenimiafina {{PLURAL:$3|io|ireo}}. Mila miditra dien'izao ianao izao ary mifidy tenimiafina vaovao. Raha tsy avy aminao ity hataka ity na efa nahatadidy ny tenimiafinao taloha ianao, ary raha tsy tianao hovaina intsony ilay tenimiafinao, dia azonao tsy raharahiana ity hafatra ity ary mampiasa ny tenimiafinao taloha.", "passwordreset-emailelement": "Anaram-pikambana : \n$1\n\nTenimiafina miserana : \n$2", "passwordreset-emailsentemail": "Lasa ny mailaka famerenana tenimiafina.", - "changeemail": "Hanova ny adiresy imailaka", - "changeemail-header": "Hanova ny adiresy imailak'ilay kaonty", + "passwordreset-nocaller": "Mila manitsy mpiantso", + "passwordreset-nosuchcaller": "Tsy misy ilay mpiantso: $1", + "passwordreset-invalidemail": "Adiresy mailaka tsy azo raisina", + "passwordreset-nodata": "Tsy nanome anaram-pikambana na adiresy mailaka", + "changeemail": "Hanova na hanala adiresy mailaka", + "changeemail-header": "Fenoy ity fôrmiolera ity ahafahanao manova ny adiresy mailakao. Raha tianao ho esorina ny fifandraisan'ity mailaka ity amin'ny kaontinao dia avelao ho fotsy ny saha rehefa mandefa fôrmiolera.", "changeemail-no-info": "Mila tafiditra ianao vao avaka mijery ity pejy ity.", "changeemail-oldemail": "Adiresy imailaka ankehitriny :", "changeemail-newemail": "Adiresy imailaka vaovao :", @@ -559,6 +574,7 @@ "changeemail-password": "Tenimiafinao eo amin'i {{SITENAME}}:", "changeemail-submit": "Hanova ny adiresy imailaka", "changeemail-throttled": "Betsaka loatra ny andrana nidiranao.\nMiandrasa $1 alohan'ny manandrana indray.", + "changeemail-nochange": "Mampidira adiresy mailaka hafa vaovao.", "resettokens": "Hamerina ny token", "resettokens-text": "Azonao averina eto ny token izay hahafahana mitsidika ny fampahalalana tsy sarababem-bahoaka ao amin'ny kaontinao. Tokony ataonao izany raha voazara tsy fanahy iniana na raha nisy nangalatra ny kaontinao.", "resettokens-no-tokens": "Tsy misy token ho averina", @@ -590,6 +606,9 @@ "minoredit": "Fanovàna kely", "watchthis": "Araho maso ity pejy ity", "savearticle": "Tehirizo", + "savechanges": "Hitahiry ny fiovana", + "publishpage": "Hamoaka pejy", + "publishchanges": "Hamoaka ny fiovana", "preview": "Topi-maso", "showpreview": "Asehoy aloha", "showdiff": "Asehoy ny fiovana", @@ -654,6 +673,7 @@ "yourdiff": "Fampitahana", "copyrightwarning": "Ny zavatra rehetra apetraka amin'ny {{SITENAME}} dia raisina ho azo adika malalaka araka ny fahazoan-dalana $2 (Jereo $1 ny fanazavana fanampiny). Raha toa ka tianao ho anao manokana ny tahirin-kevitra dia aleo tsy apetraka ato.\n\n<b>AZA MAMPIASA TAHIRINKEVITRA TSY NAHAZOAN-DALANA</b>", "copyrightwarning2": "Ny fandraisana anjara ao amin'i {{SITENAME}} dia azo ovaina ary fafan'ny mpikambana hafa. Raha tsy tianao ho ampiasainan, ovaina na zarazaraina ny soratrao, dia aza alefa eto ilay vokatr'asanao<br />\nNy zava-tsoratanao eto dia vokatr'asa naverinao soratana na nodikainao tany amina loharano ao amin'ny vala sarababem-bahoaka na loharano malalaka hafa (Jereo $1 ho an'ny antsipirihany).\n\n'''Aza mampiasa tahirin-kevitra tsy nahazoan-dalana!'''", + "editpage-cannot-use-custom-model": "Tsy mety ovaina ny modelim-botoatin'ity pejy ity.", "longpageerror": "'''Hadisoana : Ny tahirin-tsoratra nalefanao dia manana halava {{PLURAL:$1|iray|$1}} kilooktety, izay lava kokoa nohon'ny fetra avo indridra izay natao ho {{PLURAL:$2|iray|$2}} kilooktety.'''\nTsy afaka tahirizina ilay tahirin-tsoratra.", "readonlywarning": "'''FAMPITANDREMANA: Nohidiana noho ny antony fikolokoloana aloha ny banky angona,\nkoa tsy afaka mitahiry ny fanovana nataonao aloha ianao izao. Angamba tokony hanao Couper coller aloha\nianao dia tehirizo anaty rakitra ny fanovanao mandra-paha.'''\n\nNy mpandrindra nanidy ny banky angona dia nanome ny antony : <br />$1", "protectedpagewarning": "'''FAMPITANDREMANA: Voaaro ity pejy ity ka ny mpikambana manana ny fahazoan-dàlana sysop ihany no afaka manova azy.'''", @@ -689,6 +709,8 @@ "invalid-content-data": "Data anaty votoatiny tsy miady amin'ny fepetra", "content-not-allowed-here": "Votoatiny ''$1'' voarara eo amin'ny pejy [[$2]]", "editwarning-warning": "Mety hahavery ny fanovana nataonao ny fialanao amin'ity pejy ity.\nRaha tafiditra ianao dia azonao esorina ity fampitandremana ity ao amin'ny fizarana \"{{int:prefs-editing}}\" ao amin'ny safidinao.", + "editpage-invalidcontentmodel-title": "Andrefim-botoatiny tsy zaka", + "editpage-invalidcontentmodel-text": "Andrefim-botoatiny \"$1\" tsy zaka.", "editpage-notsupportedcontentformat-title": "Tsy zaka io andrefim-botoatiny io", "editpage-notsupportedcontentformat-text": "Tsy zakan'ny maodelim-botoatiny $1 ny firafi-botoatiny $1", "content-model-wikitext": "wiki-soratra", @@ -697,6 +719,7 @@ "content-model-css": "CSS", "content-json-empty-object": "Zavatra foana", "content-json-empty-array": "Tabilao foana", + "deprecated-self-close-category": "Pejy mampiasa balizy HTML mihidy ho azy izay tsy azo raisina", "duplicate-args-category": "Pejy mampiasa dika mitovy hevitra amin'ny fiantsoana endrika", "expensive-parserfunction-warning": "Tandremo : Betsaka loatra ny fanantsoana ny tao parser.\n\nTsy maintsy latsaky ny $2 ny tao, kanefa misy $1. {{PLURAL:$2||}}", "expensive-parserfunction-category": "Pejy mampiasa be loatra ny tao parser", @@ -877,7 +900,7 @@ "searchprofile-advanced-tooltip": "Hitady ny anaran-tsehatra ho an'ny fikarohana", "search-result-size": "$1 ({{PLURAL:$2|teny|teny}} $2)", "search-result-category-size": "Mpiray sokajy $1{{PLURAL:$1}} (zana-tsokajy $2{{PLURAL:}}, rakitra $3{{PLURAL:}})", - "search-redirect": "(redirect avy amin'ny/amin'i $1)", + "search-redirect": "(fihodinana avy amin'i $1)", "search-section": "(fizaràna $1)", "search-category": "(sokajy $1)", "search-file-match": "(miady amin'ny votoatin-drakitra)", @@ -886,6 +909,7 @@ "search-interwiki-caption": "zandri-tetikasa", "search-interwiki-default": "Valiny amin'ny $1 :", "search-interwiki-more": "(be kokoa)", + "search-interwiki-more-results": "Valiny be kokoa", "search-relatedarticle": "voadinika", "searchrelated": "voadinika", "searchall": "rehetra", @@ -902,6 +926,7 @@ "search-external": "Hikaroka any ivelany", "searchdisabled": "Tsy nalefa ny karoka eto amin'i {{SITENAME}}. Afaka mampiasa an'i Google aloha ianao mandra-paha. Nefa fantaro fa mety ho efa lany daty ny valiny omeny.", "search-error": "Hadisoana nitranga tam-pikarohana: $1", + "search-warning": "Fampitandremana nitranga teo am-pikarohana: $1", "preferences": "Ny momba anao", "mypreferences": "Safidy", "prefs-edits": "isa ny fanovàna :", @@ -933,8 +958,6 @@ "saveprefs": "Tehirizo", "restoreprefs": "Hamerina ny safidy taloha (amin'ny fizarana rehetra)", "prefs-editing": "Fanovana", - "rows": "Filaharana :", - "columns": "Tsanganana/Tioba :", "searchresultshead": "Fikarohana", "stub-threshold": "Fetra ambony ho an'i <a href=\"#\" class=\"stub\">rohim-bangovango</a> (oktety):", "stub-threshold-sample-link": "santiôna", @@ -975,6 +998,7 @@ "youremail": "Imailaka:", "username": "{{GENDER:$1}}Anaram-pikambana :", "prefs-memberingroups": "Mpikambana{{GENDER:$2}} ao amin'ny vondrona{{PLURAL:$1}}:", + "group-membership-link-with-expiry": "$1 (hatramin'i $2)", "prefs-registration": "Daty fidirana :", "yourrealname": "Tena anarana marina:", "yourlanguage": "Tenim-pirenena:", @@ -1014,9 +1038,9 @@ "prefswarning-warning": "Efa nanova tamin'ny safidinao tsy mbola voatahiry ianao. Raha miala amin'ity pejy ity amin'ny alalan'ny fanindriana an'i \"$1\" ianao dia tsy ho voavao ny safidinao.", "prefs-tabs-navigation-hint": "Torohevitra: afaka mampiasa ny zana-tsipika havia ary havanana ianao ho an'ny fitetezana ny vakizoro ao amin'ny lisi-bakizoro", "userrights": "Fandrindràna ny fahefahan'ny mpikambana", - "userrights-lookup-user": "Handrindra vondrom-pikambana", + "userrights-lookup-user": "Hisafidy mpikambana", "userrights-user-editname": "Manomeza solonanarana:", - "editusergroup": "Hanova satan'ny {{GENDER:$1|}}mpikambana", + "editusergroup": "Hampiditra vondrom-pikambana", "editinguser": "Fanovana ny zon'ny mpikambana <strong>{{GENDER:$1|}}[[User:$1|$1]]</strong> $2", "userrights-editusergroup": "Hanova vondrom-pikambana", "saveusergroups": "{{GENDER:$1|}}Tehirizo ny vondrom-pikambana", @@ -1026,12 +1050,16 @@ "userrights-reason": "Antony :", "userrights-no-interwiki": "Tsy manana alalana manova ny alalan'ny mpikambana eny amin'ny wiki hafa ianao.", "userrights-nodatabase": "Tsy eto akaiky na tsy misy ny banky angona « $1 ».", - "userrights-nologin": "Tsy maintsy [[Special:UserLogin|miditra]] ary manana kaontim-pandrindra ianao raha hanova ny alalan'ny mpikambana.", - "userrights-notallowed": "Tsy manana alalana ny manova na manampy zom-pikambana ianao.", "userrights-changeable-col": "Ny gropy azonao ovaina", "userrights-unchangeable-col": "Ny gropy tsy azonao ovaina", + "userrights-expiry-current": "Mitsahatra ny $1", + "userrights-expiry-none": "Tsy mitsahatra", + "userrights-expiry": "Fitsaharana:", + "userrights-expiry-existing": "Fotoam-pitsaharana ankehitriny: $3, $2", + "userrights-expiry-othertime": "Fotoana hafa:", + "userrights-expiry-options": "1 andro:1 day,herinandro:1 week,1 volana:1 month,3 volana:3 months,6 volana:6 months,herintaona:1 year", + "userrights-invalid-expiry": "Tsy azo raisina ny fotoam-pitsaharana ho an'ny vondrona \"$1\".", "userrights-conflict": "Fifandonana fanovana zom-pikambana! Avereno vakiana ary marino ny fanovanao.", - "userrights-removed-self": "Nanala ny zonao ianao. Noho izany dia tsy afaka mitsidika ity pejy ity intsony ianao.", "group": "Gropy :", "group-user": "Mpikambana", "group-autoconfirmed": "Mpikambana voamarina", @@ -1122,7 +1150,6 @@ "right-siteadmin": "Manidy sy manokatra ny banky angona", "right-override-export-depth": "Mamoaka ny pejy miaraka amin'ny zana-pejy hatramin'ny ambaratonga fahadimy", "right-sendemail": "Mandefa imailaka any amin'ny mpikambana hafa", - "right-passwordreset": "Hijery ny imailaka famerenana ny tenimiafina", "right-managechangetags": "Mamorona ary mamafa [[Special:Tags|balizy]] ao amin'ny banky angona", "grant-generic": "\"$1\" vondron-jo", "grant-group-page-interaction": "Mifanakalo amin'ny pejy", @@ -1130,6 +1157,7 @@ "grant-group-watchlist-interaction": "Mifanakalo amin'ny lisitry ny pejy arahanao", "grant-group-email": "Mandefa mailaka", "grant-group-high-volume": "Manao zavatra haingana", + "grant-group-customization": "Fikirakirana ary safidy", "grant-group-administration": "Hanao asam-pandrindrana", "grant-group-other": "Manao hetsika maro samihafa", "grant-blockusers": "Manakana sy manala sakan'ny mpikambana", @@ -1145,6 +1173,7 @@ "grant-highvolume": "Manova pejy ambongadiny", "grant-oversight": "Manafina mpikambana ary mamafa versiona", "grant-patrol": "Manamarika ireo fiovam-pejy ho voatsidika", + "grant-privateinfo": "Mijery fampahalalana tsy sarababembahoaka", "grant-protect": "Miaro ary manala ny fiavoram-pejy", "grant-rollback": "Mamafa fiovana amin'ny pejy", "grant-sendemail": "Mandefa mailaka amin'ny mpikambana hafa", @@ -1153,14 +1182,15 @@ "grant-basic": "Zo fototra", "grant-viewdeleted": "Mitsidika ireo rakitra ary pejy voafafa", "grant-viewmywatchlist": "Hijery ny lisitry ny pejy arahanao", + "grant-viewrestrictedlogs": "Mijery iditry ny laogy tsy sarababembahoaka", "newuserlogpage": "Laogim-panokafana kaontim-pikambana", "newuserlogpagetext": "Ity pejy ity dia maneho ny tantaran'asan'ny fampidirana mpikambana vaovao.", "rightslog": "Laogim-piovan'ny zom-pikambana", "rightslogtext": "Ity ny laogim-piovan'ny zom-pikambana", "action-read": "mamaky ity pejy ity", "action-edit": "manova ity pejy ity", - "action-createpage": "hanao pejy", - "action-createtalk": "hanao pejin-dresaka", + "action-createpage": "hamorona ity pejy ity", + "action-createtalk": "hanao ity pejin-dresaka ity", "action-createaccount": "amboary io kaontim-pikambana io", "action-autocreateaccount": "foronina ho azy io kaontim-pikambana ivelany io", "action-history": "hijery ny tantaran'ity pejy ity", @@ -1176,11 +1206,13 @@ "action-upload_by_url": "hampiditra io rakitra io avy amina adiresy URL", "action-writeapi": "hanova ny API fanoratana", "action-delete": "hamafa io pejy io", - "action-deleterevision": "hamafa io version io", - "action-deletedhistory": "mijery ny tantara voafafa n'ity pejy ity", + "action-deleterevision": "hamafa ireo versiona ireo", + "action-deletelogentry": "hamafa iditry ny laogy", + "action-deletedhistory": "hijery ny tantara voafafan'ilay pejy", + "action-deletedtext": "hijery version-tsoratra voafafa", "action-browsearchive": "hitady pejy efa voafafa", - "action-undelete": "hamerina io pejy io", - "action-suppressrevision": "hijery sy hamerina io version nofafàna io", + "action-undelete": "hamerina pejy", + "action-suppressrevision": "hijery sy hamerina versiona nafenina", "action-suppressionlog": "hijery io tao tsy sarababem-bahoaka", "action-block": "manakana am-panoratana ny mpikambana iray", "action-protect": "manova ny fanovàn'ity pejy ity", @@ -1195,14 +1227,17 @@ "action-userrights-interwiki": "hanova ny fahefan'ny mpikambana any amin'ny wiki hafa", "action-siteadmin": "Manidy sy manokatra ny banky angona", "action-sendemail": "handefa imailaka", + "action-editmyoptions": "hanova ny safidinao", "action-editmywatchlist": "Manova ny lisitry ny pejy arahana", "action-viewmywatchlist": "Mijery ny pejy arahanao", "action-viewmyprivateinfo": "Mijery ny fampahalalana tsy sarababem-bahoakanao", "action-editmyprivateinfo": "Mijery ny fampahalalana sarababem-bahoakanao", "action-editcontentmodel": "manova ny modelim-botoatin'ny pejy", - "action-managechangetags": "hamorona ary hamafa balizy ao amin'ny banky angona", + "action-managechangetags": "hamorona ary hampiasa (na tsia) ireo balizy", "action-applychangetags": "mampihatra balizy miaraka amin'ny fanovanao", "action-changetags": "manampy ary manala balizy amin'ny versiona manokana ary iditry ny laogy", + "action-deletechangetags": "hamafa balizy amin'ny banky angona", + "action-purge": "handio an'ity pejy ity", "nchanges": "{{PLURAL:$1|fanovana|fanovana}} $1", "enhancedrc-since-last-visit": "$1 ({{PLURAL:$1|hatry ny famangiana farany}})", "enhancedrc-history": "tantara", @@ -1219,6 +1254,53 @@ "recentchanges-legend-heading": "<strong>Maribolana:</strong>", "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (jereo koa ny [[Special:NewPage|lisitry ny pejy vaovao]])", "recentchanges-submit": "Aseho", + "rcfilters-activefilters": "Sivana miasa", + "rcfilters-restore-default-filters": "Hamerina sivana ampiasaina raha tsy misy", + "rcfilters-clear-all-filters": "Hamafa ny sivana rehetra", + "rcfilters-search-placeholder": "Hanivana ny fiovana farany (tetezo na manomboha manoratra)", + "rcfilters-invalid-filter": "Sivana tsy azo raisina", + "rcfilters-empty-filter": "Tsy misy sivana miasa. Aseho avokoa ireo fandraisan'anjara.", + "rcfilters-filterlist-title": "Sivana", + "rcfilters-filterlist-feedbacklink": "Mamoaka hevitra mikasika ny sivana vaovao (beta)", + "rcfilters-highlightbutton-title": "Hampibaribary ny valiny", + "rcfilters-highlightmenu-title": "Hisafidy loko", + "rcfilters-highlightmenu-help": "Misafidy loko hampanabaribariana ilay tondro", + "rcfilters-filterlist-noresults": "Tsy nahitana sivana", + "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-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", + "rcfilters-filter-user-experience-level-learner-description": "Efa betsaka andro nandraisana anjara ary nanova im-betsaka nohon'ny \"Vao tonga\" fa mbola kely nohon'ny \"Manan-traikefa\".", + "rcfilters-filter-user-experience-level-experienced-label": "Mpikambana manan-traikefa", + "rcfilters-filter-user-experience-level-experienced-description": "Mahery ny 30 andro nandraisana anjara ary fiovana mahery ny 500.", + "rcfilters-filtergroup-automated": "Fandraisan'anjara alefa ho azy", + "rcfilters-filter-bots-label": "Rôbô", + "rcfilters-filter-bots-description": "Fiovana nataon'ny rôbô aotômatika.", + "rcfilters-filter-humans-label": "Olona (tsy rôbô)", + "rcfilters-filter-humans-description": "Fiovana nataon'ny olombelona mpikambana.", + "rcfilters-filtergroup-significance": "Dikany", + "rcfilters-filter-minor-label": "Fiovana madinika", + "rcfilters-filter-minor-description": "Fiovana nataon'ny tompony ho madinika.", + "rcfilters-filter-major-label": "Fiovana tsy madinika", + "rcfilters-filter-major-description": "Fiovana tsy natao ho madinika.", + "rcfilters-filtergroup-changetype": "Karazam-piovana", + "rcfilters-filter-pageedits-label": "Fiovam-pejy", + "rcfilters-filter-pageedits-description": "Manova votoatin'ny wiki, resaka, visavisan-tsokajy...", + "rcfilters-filter-newpages-label": "Famoronam-pejy", + "rcfilters-filter-newpages-description": "Fiovana nahatonga famoronam-pejy.", + "rcfilters-filter-categorization-label": "Fiovana amin'ny sokajy", + "rcfilters-filter-categorization-description": "Fandraiketana an'ireo pejy ampiana na esorina amin'ny sokajy.", + "rcfilters-filter-logactions-label": "Asa voalaogy", "rcnotefrom": "Eo ambany dia ahitana ireo fiovana{{PLURAL:$5}} hatry ny <strong>$3, $4</strong> (naseho hatramin'ny <strong>$1</strong>).", "rclistfrom": "Asehoy izay vao niova manomboka ny $3 $2", "rcshowhideminor": "$1 ny fanovàna kely", @@ -1334,7 +1416,7 @@ "uploaddisabledtext": "Tsy afaka andefasana rakitra aloha eto amin'ity wiki ity.", "php-uploaddisabledtext": "Ny fampidiran-drakitra dia tsy ampiasaina amin'ny PHP.\nMarino ny option configuration file_uploads.", "uploadscripted": "\nMisy kialo HTML na fango script mety tsy ho hain'ny navigateur sasany haseho ity rakitra ity.", - "uploadscriptednamespace": "ahitana valan'anarana \"$1\" ny rakitra SVG.", + "uploadscriptednamespace": "ahitana valan'anarana \"<nowiki>$1</nowiki>\" ny rakitra SVG.", "uploadinvalidxml": "Tsy afaka vakiana ny XML tao anatin'ilay rakitra nafaranao.", "uploadvirus": "Misy viriosy io rakitra io! Toy izao ny antsipirihany: $1", "uploadjava": "Ny rakitra dia rakitra ZIP ahitana rakitra .class Java.\nVoarara ny mandefa rakitra Java satria mety hahavaky ny fepetra mikasika ny antoka ireo rakitra ireo.", @@ -1359,6 +1441,7 @@ "upload-copy-upload-invalid-domain": "Tsy misy eto amin'ity dômenina ity ny tahaky ny upload.", "upload-dialog-title": "Hanafatra rakitra", "upload-dialog-button-cancel": "Aoka", + "upload-dialog-button-back": "Hiverina", "upload-dialog-button-done": "Vita", "upload-dialog-button-save": "Tehirizina", "upload-dialog-button-upload": "Mampiditra", @@ -2014,7 +2097,7 @@ "whatlinkshere-next": "$1 manaraka{{PLURAL:$1||}}", "whatlinkshere-links": "← rohy", "whatlinkshere-hideredirs": "$1 ny fihodinana", - "whatlinkshere-hidetrans": "$1 ny tsofo-pejy", + "whatlinkshere-hidetrans": "$1 ny fampiasam-pejy", "whatlinkshere-hidelinks": "$1 ny rohy", "whatlinkshere-hideimages": "$1 ny rakitra mirohy", "whatlinkshere-filters": "sivana", @@ -2361,11 +2444,14 @@ "pageinfo-length": "Halavam-pejy (oktety)", "pageinfo-article-id": "Laharam-pejy", "pageinfo-language": "Tenin'ny votoatiny", + "pageinfo-language-change": "ovaina", "pageinfo-content-model": "Môdelim-botoatim-pejy", + "pageinfo-content-model-change": "ovaina", "pageinfo-robot-policy": "Fanondroana ataon'ny rôbô", "pageinfo-robot-index": "Azo atao", "pageinfo-robot-noindex": "Tsy azo tondroina", "pageinfo-watchers": "Isan'ny mpandray anjara manaraka", + "pageinfo-visiting-watchers": "Isan'ny mpijery pejy nijery ny fiovana vao haingan'ity pejy ity", "pageinfo-few-watchers": "Mpanaraka latsaky ny $1{{PLURAL:}}", "pageinfo-redirects-name": "Fihodinana manketo amin'ity pejy ity", "pageinfo-subpages-name": "Zana-pejin'ity pejy ity", @@ -2392,6 +2478,7 @@ "pageinfo-category-pages": "Isam-pejy", "pageinfo-category-subcats": "Isan'ny zana-tsokajy", "pageinfo-category-files": "Isan'ny rakitra", + "pageinfo-user-id": "ID mpikambana", "markaspatrolleddiff": "Marihana ho voamarina", "markaspatrolledtext": "Marihana ho hita sy voatsara", "markedaspatrolled": "Voamarina", @@ -2406,6 +2493,7 @@ "patrol-log-page": "Laogin'ny fanovana voamarina", "patrol-log-header": "Ity dia laogy mikasikan'ny fanovana voamarina.", "log-show-hide-patrol": "$1 ny laogy mikasikan'ny versiona voamarina", + "confirm-markpatrolled-button": "OK", "deletedrevision": "Fanovana an'i $1 taloha voafafa.", "filedeleteerror-short": "Tsi-fetezana teo am-pamafàna ilay rakitra : $1", "filedeleteerror-long": "Nisy tsi-fetezana nitranga teo am-pamafàna ilay rakitra :\n\n$1", @@ -3014,7 +3102,6 @@ "logentry-rights-autopromote": "{{GENDER:$2}}Lasa $5 ho azy i $1 izay $4 taloha", "logentry-upload-upload": "Nampiditra an'i $3 i $1{{GENDER:$2}}", "rightsnone": "(tsy misy)", - "revdelete-summary": "ambangovangon'ny fanovàna", "feedback-adding": "Manampy ny fahenoan-kevitra amin'ilay pejy...", "feedback-bugnew": "Efa nomariniko. Hitory baogy iray", "feedback-cancel": "Foanana", @@ -3027,40 +3114,13 @@ "feedback-submit": "Alefa", "feedback-thanks": "Misaotra! lanefa tany amin'ilay pejy ''[$2 $1]'' ilay fanehoan-kevitrao.", "feedback-useragent": "User agent:", - "searchsuggest-search": "Karohy", + "searchsuggest-search": "Hikaroha eto amin'i {{SITENAME}}", "searchsuggest-containing": "misy...", - "api-error-badaccess-groups": "Tsy afaka mampiditra rakitra eto amin'ity wiki ity ianao.", "api-error-badtoken": "Hadisoana anaty : \"token\" diso.", - "api-error-copyuploaddisabled": "Tsy avela atao eto amin'ity lohamilina ity ny fampidiran-drakitra amin'ny alalan'ny URL.", - "api-error-empty-file": "Tsy misy na inona na inna ilay rakitra nalefanao.", "api-error-emptypage": "Tsy azo atao ny mamorona pejy vaovao tsy misy votoatiny.", - "api-error-fetchfileerror": "Hadisoana naaty : misy hadisoana nitranga teo am-pangalana ilay rakitra.", - "api-error-file-too-large": "Lehibe loatra ny rakitra nalefanao.", - "api-error-filename-tooshort": "Fohy loatra ny anaran'ilay rakitra.", - "api-error-filetype-banned": "Voarara io karazan-drakitra io.", - "api-error-filetype-missing": "Tsy ampy tovana ilay anaran-drakitra.", - "api-error-hookaborted": "Najanon'ny faraingon'itatra ny fanovana nandramanao natao.", - "api-error-http": "Hadisoana anaty: Tsy tafaray tamin'ilay lohamilina.", - "api-error-illegal-filename": "Tsy azo ampiasaina io anaran-drakitra io.", - "api-error-internal-error": "Hadisoana anaty: Nisy hadisoana nitranga teo am-pikajikajiana ny rakitrao", - "api-error-invalid-file-key": "Hadisoana anaty: Tsy hita tao amin'ilay tahiry vonjimaika ilay rakitra.", - "api-error-missingparam": "Hadisoana anaty: Parametatra tsy ampy ao amin'ny hataka.", - "api-error-missingresult": "Hadisoana anaty: Tsy afaka milaza izahay raha tena nahomby ilay fandikana.", - "api-error-mustbeloggedin": "Mila tafiditra ianao mba handefa rakitra.", - "api-error-mustbeposted": "Hadisoana anaty: Mila HTTP POST ilay hataka.", - "api-error-noimageinfo": "Nahomby ilay fandikana, fa tsy nanome antsika fampahalalana mikasika ilay raktira ilay lohamilina.", - "api-error-nomodule": "Hadisoana anaty: Tsy namaritra joro fandefasana.", - "api-error-ok-but-empty": "Hadisoana anaty: Tsy nisy valiny avy amin'ilay lohamilina.", - "api-error-overwrite": "Tsy azo atao ny manitsaka rakitra efa misy.", "api-error-stashfailed": "Hadisoana anaty: Tsy nahomby ny fitahirizana ilay rakitra vonjimaika ilay lohamilina.", - "api-error-timeout": "Tsy namaly tanatin'ny fe-potoana nandrasana ilay lohamilina.", - "api-error-unclassified": "Nisy hadisoana tsy fantatra nitranga.", - "api-error-unknown-code": "Hadisoana tsy fantatra : ''$1''.", - "api-error-unknown-error": "Hadisoana anaty: Nisy hadisoana tam-pandefasana ny rakitrao.", "api-error-unknown-warning": "Fampitandremana tsy fantatra : ''$1''.", "api-error-unknownerror": "Hadisoana tsy fantatra : ''$1''.", - "api-error-uploaddisabled": "Tsy alefa eto amin'ity wiki ity ny fandefasan-drakita.", - "api-error-verification-error": "Mety tapaka ity rakitra ity, na diso tovan-drakitra.", "special-characters-group-latin": "latina", "special-characters-group-latinextended": "latina nitarina", "special-characters-group-ipa": "AAI", @@ -3082,5 +3142,20 @@ "special-characters-group-khmer": "kimera", "special-characters-title-endash": "tsipika anglisy", "special-characters-title-emdash": "tsipika em", - "special-characters-title-minus": "marika mainosy" + "special-characters-title-minus": "marika mainosy", + "sessionmanager-tie": "Tsy afaka mampikambana karazan-kataka fampamantarana maromaro: $1.", + "authmanager-authn-not-in-progress": "Tsy andalam-panaovana ny fampamantarana, na very ny angon'ny sesiôna. Avereno hatramin'ny voalohany azafady.", + "authmanager-authplugin-setpass-failed-title": "Tsy nahomby ny fanovana tenimiafina", + "authmanager-authplugin-setpass-failed-message": "Nandà ny fanovana tenimiafina ny plugin fampamantarana.", + "authmanager-authplugin-create-fail": "Nandà ny famoronan-kaonty ny plugin fampamantarana.", + "authmanager-authplugin-setpass-denied": "Tsy ahafahana manova tenimiafina ny plugin fampamantarana.", + "authmanager-userlogin-remembermypassword-help": "Milaza raha tsy maintsy tadidiana mihoatra ny halafan'ny fotoam-pitsidihana ny tenimiafina.", + "authmanager-username-help": "Anaram-pikambana ho an'ny fampamantarana.S", + "authmanager-password-help": "Tenimiafina ho an'ny fampamantarana.", + "authmanager-retype-help": "tenimiafina indray hanamarinana.", + "authmanager-provider-password": "Fampamamtarana mifototra amin'ny tenimiafina", + "authmanager-provider-password-domain": "Fampamantarana mifototra amin'ny tenimiafina ary vala", + "authmanager-provider-temporarypassword": "Tenimiafina vonjimaika", + "authprovider-resetpass-skip-help": "Handingana ny famerenam-tenimiafina.", + "authform-nosession-login": "nahomby ny fidirana, fa tsy mahatadidy anao tafiditra ny mpitety tranonkalanao." } diff --git a/languages/i18n/mhr.json b/languages/i18n/mhr.json index 8839a7868d..949cbcaaf8 100644 --- a/languages/i18n/mhr.json +++ b/languages/i18n/mhr.json @@ -112,6 +112,7 @@ "mytalk": "Каҥашымаш", "anontalk": "Каҥашымаш тиде IP нерген", "navigation": "Навигаций", + "and": " да", "qbfind": "Муаш", "qbedit": "Тӧрлаташ", "qbpageoptions": "Тиде лаштык", @@ -137,7 +138,7 @@ "view": "Ончалаш", "edit": "Тӧрлаташ", "create": "Ышташ", - "editthispage": "Тӧрлаташ тиде лаштыкым", + "editthispage": "Тиде лаштыкым тӧрлаташ", "create-this-page": "Тиде лаштыкым ышташ", "delete": "Шӧраш", "deletethispage": "Тиде лаштыкым шӧраш", @@ -241,15 +242,9 @@ "yourdomainname": "Тендан домен:", "login": "Шке денет палдаре", "nav-login-createaccount": "Пураш/Регистрацийым эрте", - "userlogin": "Пураш/Регистрацийым эрташ", "logout": "Лекташ", "userlogout": "Лекташ", - "nologin": "Тый регистрацийым эше эртен отыл? '''$1'''.", - "nologinlink": "Регистрацийым эрте", "createaccount": "Регистрацийым эрте", - "gotaccount": "Тый регистрацийым эртенат? '''$1'''.", - "gotaccountlink": "Шке денет палдаре", - "userlogin-resetlink": "Лӱмдам але шолыпмутдам монденда?", "userlogin-resetpassword-link": "Шолыпмутым монденат?", "createaccountmail": "Кӱчык жаплан чокым ыштыме шолыпмутым мылам e-mail дене колташ", "createacct-benefit-heading": "{{SITENAME}} тендан гаяк еҥ-влак дене ыштен шындалтын.", @@ -268,6 +263,7 @@ "emailauthenticated": "Тыйын почто адресетым пеҥгыдемдыме $2, $3.", "loginlanguagelabel": "Йылме: $1", "pt-login": "Пураш", + "pt-createaccount": "Регистрацийым эрте", "pt-userlogout": "Лекташ", "changepassword": "Шолыпмутым вашталташ", "oldpassword": "Тошто шолыпмут:", @@ -296,14 +292,16 @@ "minoredit": "Тиде изи вашталтыш", "watchthis": "Тиде лаштыкым эскераш", "savearticle": "Лаштыкым аралаш", + "savechanges": "Лаштыкым аралаш", + "publishchanges": "Лаштыкым аралаш", "preview": "Ончылгоч ончымаш", "showpreview": "Ончылгоч ончымаш", "showdiff": "Тӧрлатымашым ончыкташ", - "anoneditwarning": "'''Тӱткӧ лий:''': Тый авторизацийым эртен отыл. Тыйын IP-адресет лаштыкын вашталтымаш историйыштыже возалт кодеш. Шке лӱмет ден пурет але регистрацийым эртет гын, шкаланет пашам ышташ йӧнлырак лиеш.", + "anoneditwarning": "'''Тӱткӧ лий:''': Тый авторизацийым эртен отыл. Тыйын IP-адресет лаштыкын вашталтымаш историйыштыже возалт кодеш. Шке лӱмет ден пурет але регистрацийым эртет гын, тылат пашам ышташ йӧнлырак лиеш.", "summary-preview": "Тӧрлатымаш нерген ончылгоч ончымаш:", "accmailtitle": "Шолыпмут колтымо.", "newarticle": "(У)", - "newarticletext": "Тыгай лӱман лаштык уке.\nЛаштыкым ышташлан ӱлнӧ возаш тӱҥал (сайынрак палашлан [$1 полшыкым] ончал).\nТый тышке йонгылыш логалынат гын, браузерыште '''шенгек''' полдышым темдал.", + "newarticletext": "Тыгай лӱман лаштык уке.\nЛаштыкым ышташлан ӱлнӧ возаш тӱҥал (сайынрак палашлан [$1 полшыкым] ончал).\nТый тышке йоҥылыш логалынат гын, браузерыште '''шенгек''' полдышым темдал.", "noarticletext": "Кызытсе жаплан тиде лаштыкыште нимом возымо огыл.\nТый тиде лаштыкын лӱмжым вес лаштык-влакыште [[Special:Search/{{PAGENAME}}|кычалын]] кертат, але <span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} журнал-влакыште кычалын] кертат, але [{{fullurl:{{FULLPAGENAME}}|action=edit}} тыгай лӱман лаштыкым ыштен] кертат</span>.", "clearyourcache": "'''Замечание.''' Возможно, после сохранения вам придётся очистить кэш своего браузера, чтобы увидеть изменения.\n* '''Firefox / Safari:''' Удерживая клавишу ''Shift'', нажмите на панели инструментов ''Обновить'' либо нажмите ''Ctrl-F5'' или ''Ctrl-R'' (''⌘-R'' на Mac)\n* '''Google Chrome:''' Нажмите ''Ctrl-Shift-R'' (''⌘-Shift-R'' на Mac)\n* '''Internet Explorer:''' Удерживая ''Ctrl'', нажмите ''Обновить'' либо нажмите ''Ctrl-F5''\n* '''Opera:''' Выберите очистку кэша в меню ''Инструменты → Настройки''", "previewnote": "'''Тиде ончылгоч ончымаш гына;\nвашталтыш-влакым эше аралыме огыл!'''", @@ -446,6 +444,7 @@ "group-bot-member": "бот", "grouppage-bot": "{{ns:project}}:Бот-влак", "grouppage-sysop": "{{ns:project}}:Сайтвиктарыше-влак", + "right-writeapi": "Возымашлан API-ым кучылтмаш", "newuserlogpage": "У пайдаланыше регистрацийым эртарыме журнал", "rightslog": "Участникын праваже-влакым ончыктышо журнал", "action-edit": "тиде лаштыкым тӧрлаташ", @@ -482,6 +481,7 @@ "minoreditletter": "и", "newpageletter": "У", "boteditletter": "б", + "rc-change-size-new": "Вашталтымаш деч вара $1 {{PLURAL:$1|байт}} лийын", "rc-enhanced-expand": "Тичмашын ончыкташ", "rc-enhanced-hide": "Рашлык-влакым шылташ", "recentchangeslinked": "Ваш кылдалтше тӧрлатымаш-влак", @@ -496,6 +496,7 @@ "uploadlogpage": "Оптымаш-влак журнал", "filedesc": "Файл нерген кӱчыкын увертараш", "fileuploadsummary": "Тидын нерген кӱчыкын:", + "savefile": "Файлым арален кодаш", "watchthisupload": "Тиде файлым эскераш", "license-header": "Лицензирований", "imgfile": "файл", @@ -617,7 +618,7 @@ "protectexpiry": "Мучашлалтеш:", "protect_expiry_invalid": "Йоҥылыш мучашлалтше жап.", "protect_expiry_old": "Мучашлалтше жап эртен.", - "protect-text": "Тыште тый '''$1''' лаштыкын шыгыремдымашыжым ончалаш да тӧрлаташ кертат.", + "protect-text": "Тыште тый '''$1''' лаштыкын аралымаш уровеньжым ончалын але вашталтен кертат.", "protect-locked-access": "Тыйын лаштыкын шыгыремдымашыжым тӧрлаш кертмешет шагал.\nӰлнӧ '''$1''' лаштыкын кызытсе келыштарымаш.", "protect-cascadeon": "Тиде лаштыкым тӧрлатымаш деч аралыме. \nКаскадный аралымашан {{PLURAL:$1|лаштык-влак}} тудо пура.", "protect-default": "Чыла пайдаланыше-влаклан йӧным пуаш", @@ -767,6 +768,7 @@ "file-nohires": "Кугурак чаплык уке.", "svg-long-desc": "SVG файл, шкенжын кугытшо: $1 × $2 пиксел, файлын кугытшо: $3", "show-big-image": "Тӱҥалтыш файл", + "show-big-image-preview": "Ончылгоч ончымо годым кугыт: $1", "show-big-image-size": "$1 × $2 пиксел", "newimages-legend": "Фильтр", "ilsubmit": "Кычал", @@ -801,9 +803,10 @@ "specialpages-group-pagetools": "Лаштык ӱзгар-влак", "specialpages-group-redirects": "Вес вере колтышо спецлаштык-влак", "external_image_whitelist": " #Оставьте эту строчку такой, как она есть<pre>\n#Разместите здесь фрагменты регулярных выражений (ту часть, что находится между //)\n#они будут соотнесены с URL внешних изображений.\n#Подходящие будут показаны как изображения, остальные будут показаны как ссылки на изображения.\n#Строки, начинающиеся с # считаются комментариями.\n#Строки не чувствительны к регистру\n\n#Размещайте фрагменты регулярных выражений над этой строчкой. Оставьте эту строчку такой, как она есть.</pre>", - "logentry-delete-delete": "$1 {{GENDER:$2|лыктын|лыктын}} странице $3", - "revdelete-summary": "тӧрлатымаш-влакым возен ончыктымаш", - "searchsuggest-search": "Кычалаш", + "tag-filter": "[[Special:Tags|Метке]] фильтр:", + "logentry-delete-delete": "$1 {{GENDER:$2|шӧрен|шӧрен}} лаштыкым $3", + "logentry-newusers-create": "Пайдаланыше {{GENDER:$2}} $1 лаштыкым ыштен.", + "searchsuggest-search": "{{SITENAME}} сайтыште кычалаш", "expand_templates_ok": "Йӧра", "expand_templates_preview": "Ончылгоч ончымаш" } diff --git a/languages/i18n/mk.json b/languages/i18n/mk.json index 7c910eedf5..42841f0569 100644 --- a/languages/i18n/mk.json +++ b/languages/i18n/mk.json @@ -19,7 +19,8 @@ "Macofe", "Nemo bis", "Matma Rex", - "Kaldari" + "Kaldari", + "Xð" ] }, "tog-underline": "Потцртување на врски:", @@ -187,6 +188,7 @@ "searcharticle": "Дај", "history": "историја", "history_short": "Историја", + "history_small": "историја", "updatedmarker": "подновено од мојата последна посета", "printableversion": "Верзија за печатење", "permalink": "Постојана врска", @@ -211,7 +213,7 @@ "unprotectthispage": "Измена на заштитата на страницава", "newpage": "Нова страница", "talkpage": "Разговор", - "talkpagelinktext": "Разговор", + "talkpagelinktext": "разговор", "specialpage": "Службена страница", "personaltools": "Лични алатки", "articlepage": "Преглед на содржината", @@ -429,19 +431,12 @@ "login": "Најава", "login-security": "Потврдете го вашиот идентитет", "nav-login-createaccount": "Најава / направи сметка", - "userlogin": "Најава / направи сметка", - "userloginnocreate": "Најава", "logout": "Одјава", "userlogout": "Одјава", "notloggedin": "Не сте најавени", "userlogin-noaccount": "Немате сметка?", "userlogin-joinproject": "Зачленете се на {{SITENAME}}", - "nologin": "Немате корисничка сметка? '''$1'''.", - "nologinlink": "Направете нова корисничка сметка", "createaccount": "Направи сметка", - "gotaccount": "Веќе имате корисничка сметка? '''$1'''.", - "gotaccountlink": "Најавете се", - "userlogin-resetlink": "Си ги заборавивте податоците за најава?", "userlogin-resetpassword-link": "Ја заборавивте лозинката?", "userlogin-helplink2": "Помош за најава", "userlogin-loggedin": "Веќе сте најавени како {{GENDER:$1|$1}}.\nСо образецот подолу можете да се најавите како друг корисник.", @@ -454,7 +449,6 @@ "createaccountmail": "Дај привремена произволна лозинка и испрати ја на укажаната адреса", "createaccountmail-help": "Може да се користи за создавање на сметка во туѓо име без да ја знаете лозинката.", "createacct-realname": "Вистинско име (незадолжително)", - "createaccountreason": "Причина:", "createacct-reason": "Причина", "createacct-reason-ph": "Зошто правите друга сметка", "createacct-reason-help": "Порака што се прикажува во дневникот на создадени сметки", @@ -501,7 +495,7 @@ "eauthentsent": "На назначената адреса е испратена потврдна порака.\nПред да се испрати друга порака на корисничката сметка, ќе морате да ги проследите напатствијата во пораката, за да потврдите дека таа корисничка сметка е навистина ваша.", "throttled-mailpassword": "Веќе е испратена порака за измена на лозинката во {{PLURAL:$1|изминатиов час|изминативе $1 часа}}.\nЗа да се спречи злоупотреба, само едно потсетување може да се праќа на {{PLURAL:$1|секој час|секои $1 часа}}.", "mailerror": "Грешка при испраќање на е-поштата: $1", - "acct_creation_throttle_hit": "Посетители на ова вики користејќи ја вашата IP-адреса создале {{PLURAL:$1|1 сметка|$1 сметки}} во последниве $2, при што е достигнат најголемиот допуштен број на кориснички сметки предвиден и овозможен за овој период.\nКако резултат на ова, посетителите кои ја користат оваа IP-адреса во моментов нема да можат да создаваат нови сметки.", + "acct_creation_throttle_hit": "Посетители на ова вики користејќи ја вашата IP-адреса создале {{PLURAL:$1|1 сметка|$1 сметки}} во последниве $2, при што е достигнат најголемиот допуштен број на кориснички сметки предвиден и овозможен за овој период.\nКако последица на ова, посетителите кои ја користат оваа IP-адреса во моментов нема да можат да создаваат нови сметки.", "emailauthenticated": "Вашата е-пошта адреса е потврдена на $2 во $3 ч.", "emailnotauthenticated": "Вашата е-поштенска адреса сè уште не е потврдена.\nНема да биде испратена е-пошта во ниту еден од следниве случаи.", "noemailprefs": "Наведете е-поштенска адреса за да функционираат следниве својства.", @@ -654,7 +648,7 @@ "selfredirect": "<strong>Предупредување:</strong> Создавате пренасочување кон истата статија.\nМоже да сте укажале грешна целна страница, или пак уредувате погрешна страница.\nАко стиснете на „{{int:savearticle}}“ повторно, тогаш пренасочувањето бездруго ќе се создаде.", "missingcommenttext": "Ве молиме внесете коментар подолу.", "missingcommentheader": "<strong>Потсетување:</strong> Не внесовте наслов за овој коментар.\nАко повторно стиснете на „{{int:savearticle}}“, уредувањето ќе биде зачувано без наслов.", - "summary-preview": "Изглед на описот:", + "summary-preview": "Преглед на описот:", "subject-preview": "Преглед на насловот:", "previewerrortext": "Се појави грешка при обидот да се прегледаат промените.", "blockedtitle": "Корисникот е блокиран", @@ -938,9 +932,9 @@ "nextn": "{{PLURAL:следна $1|следни $1}}", "prev-page": "претходна страница", "next-page": "следна страница", - "prevn-title": "{{PLURAL:$1|Претходен|Претходни}} $1 {{PLURAL:$1|резултат|резултати}}", - "nextn-title": "{{PLURAL:$1|Следен|Следни}} $1 {{PLURAL:$1|резултат|резултати}}", - "shown-title": "Прикажи $1 {{PLURAL:$1|резултат|резултати}} на страница", + "prevn-title": "{{PLURAL:$1|Претходна|Претходни}} $1 {{PLURAL:$1|ставка|ставки}}", + "nextn-title": "{{PLURAL:$1|Следна|Следни}} $1 {{PLURAL:$1|ставка|ставки}}", + "shown-title": "Прикажи $1 {{PLURAL:$1|ставка|ставки}} по страница", "viewprevnext": "Погледајте ($1 {{int:pipe-separator}} $2) ($3).", "searchmenu-exists": "'''На ова вики има страница со наслов „[[:$1]]“'''", "searchmenu-new": "<strong>Создајте ја страницата „[[:$1]]“ на ова вики!</strong> {{PLURAL:$2|0=|Погледајте ја и страницата најдена со пребарувањето.|Погледајте го и најденото од пребарувањето.}}", @@ -963,14 +957,15 @@ "search-interwiki-caption": "Збратимени проекти", "search-interwiki-default": "Најдено на $1:", "search-interwiki-more": "(уште)", + "search-interwiki-more-results": "повеќе ставки", "search-relatedarticle": "Поврзано", "searchrelated": "поврзано", "searchall": "сè", - "showingresults": "Подолу {{PLURAL:$1|е прикажан '''1''' резултат|се прикажани '''$1''' резултати}} почнувајќи од бр. '''$2'''.", - "showingresultsinrange": "Долу {{PLURAL:$1|е прикажан до <strong>еден</strong> резултат|се прикажани до <strong>$1</strong> резултати}} во опсег од <strong>$2</strong> до <strong>$3</strong>.", - "search-showingresults": "{{PLURAL:$4|Резултат <strong>$1</strong> од <strong>$3</strong>|Резултати <strong>$1 - $2</strong> од <strong>$3</strong>}}", - "search-nonefound": "Нема резултати што одговараат на бараното.", - "search-nonefound-thiswiki": "Нема резултати што одговараат на бараното на ова мрежно место.", + "showingresults": "Подолу {{PLURAL:$1|е прикажана <strong>1</strong> ставка|се прикажани <strong>$1</strong> ставки}} почнувајќи од бр. <strong>$2</strong>.", + "showingresultsinrange": "Подолу {{PLURAL:$1|е прикажана до <strong>една</strong> ставка|се прикажани до <strong>$1</strong> ставки}} во опсег од <strong>$2</strong> до <strong>$3</strong>.", + "search-showingresults": "{{PLURAL:$4|Ставка <strong>$1</strong> од <strong>$3</strong>|Ставки <strong>$1 - $2</strong> од <strong>$3</strong>}}", + "search-nonefound": "Нема исходни ставки што одговараат на бараното.", + "search-nonefound-thiswiki": "Нема ставки што одговараат на бараното на ова мрежно место.", "powersearch-legend": "Напредно пребарување", "powersearch-ns": "Пребарај во следниве именски простори:", "powersearch-togglelabel": "Избор:", @@ -1052,6 +1047,7 @@ "youremail": "Е-пошта:", "username": "{{GENDER:$1|Корисничко име}}:", "prefs-memberingroups": "{{GENDER:$2|Член}} на {{PLURAL:$1|групата|групите}}:", + "group-membership-link-with-expiry": "$1 (до $2)", "prefs-registration": "Време на регистрација:", "yourrealname": "Вистинско име:", "yourlanguage": "Јазик:", @@ -1096,18 +1092,27 @@ "editusergroup": "Вчитај кориснички групи", "editinguser": "Менување на правата на {{GENDER:$1|корисникот}} <strong>[[User:$1|$1]]</strong> $2", "viewinguserrights": "Поглед на правата на {{GENDER:$1|корисникот}} <strong>[[User:$1|$1]]</strong> $2", - "userrights-editusergroup": "Уреди ги корисничките групи", - "userrights-viewusergroup": "Преглед на корисничките групи", + "userrights-editusergroup": "Уреди ги {{GENDER:$1|корисничките}} групи", + "userrights-viewusergroup": "Преглед на {{GENDER:$1|корисничките}} групи", "saveusergroups": "Зачувај ги {{GENDER:$1|корисничките}} групи", "userrights-groupsmember": "Член на:", "userrights-groupsmember-auto": "Подразбран член на:", - "userrights-groups-help": "Можете да измените на кои групи припаѓа корисник:\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-irreversible-marker": "$1*", + "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-invalid-expiry": "Истекот за групата „$1“ е неважечки.", + "userrights-expiry-in-past": "Истекот за групата „$1“ е во минатото.", + "userrights-cannot-shorten-expiry": "Не можете да го поместити нанапред истекот на групата „$1“. Ова можат да го прават само корисници со дозвола за додавање или одземање на оваа група.", "userrights-conflict": "Спротиставеност во измените на корисничките права. Прегледајте ги и потврдете ги.", "group": "Група:", "group-user": "Корисници", @@ -1309,22 +1314,61 @@ "recentchanges-legend-plusminus": "(''±123'')", "recentchanges-submit": "Прикажи", "rcfilters-activefilters": "Активни филтри", + "rcfilters-restore-default-filters": "Поврати основни филтри", + "rcfilters-clear-all-filters": "Тргни ги сите филтри", "rcfilters-search-placeholder": "Филтрирај скорешни промени (прелстајте или почнете да пишувате)", "rcfilters-invalid-filter": "Неважечки филтер", + "rcfilters-empty-filter": "Нема активни филтри. Прикажани се сите придонеси.", "rcfilters-filterlist-title": "Филтри", + "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-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-filter-userExpLevel-newcomer-label": "Новодојденци", - "rcfilters-filter-userExpLevel-newcomer-description": "Многу нови уредници: помалку од 10 уредувања и 4 дена активност.", - "rcfilters-filter-userExpLevel-learner-label": "Ученици", - "rcfilters-filter-userExpLevel-learner-description": "Повеќе денови активност од новодојденците, но помалку од искусните корисници.", - "rcfilters-filter-userExpLevel-experienced-label": "Искусни корисници", - "rcfilters-filter-userExpLevel-experienced-description": "Повеќе од 30 дена активност и 500 уредувања.", + "rcfilters-filtergroup-userExpLevel": "Корисничка искусност (само за регистрирани)", + "rcfilters-filtergroup-user-experience-level-conflicts-unregistered": "Филтерот е неактивен бидејќи наоѓа само регистрирани корисници, па филтерот „Нерегистрирани“ му ја поништува работата.", + "rcfilters-filtergroup-user-experience-level-conflicts-unregistered-global": "Филтерот „Нерегистрирани“ е во спротиставеност со еден или повеќе од филтрите за искуство. Тие филтри наоѓаат само регистрирани корисници. Спротиставените филтри погоре се означени како неактивни.", + "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": "Повеќе од 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-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": "Административни постапки, создавања на сметки, бришења на страници, подигања...", "rcnotefrom": "Подолу {{PLURAL:$5|е прикажана промената|се прикажани промените}} почнувајќи од <strong>$3, $4</strong> (се прикажуваат до <b>$1</b>).", "rclistfrom": "Прикажи нови промени почнувајќи од $3 $2", "rcshowhideminor": "$1 ситни промени", @@ -1459,7 +1503,7 @@ "uploaded-setting-handler-svg": "SVG што го задава атрибутот „handler“ со оддалечено/податочна/скриптна е спречен. Пронајдов <code>$1=\"$2\"</code> во подигнатата SVG-податотека.", "uploaded-remote-url-svg": "SVG што задава било каков стилски атрибут со оддалечена URL е спречен. Пронајдов <code>$1=\"$2\"</code> во подигнатата SVG-податотека.", "uploaded-image-filter-svg": "Пронајдов филтер за слики со URL: <code><$1 $2=\"$3\"></code> во подигнатата SVG-податотека.", - "uploadscriptednamespace": "Овааа SVG-податотека го содржи недопуштениот именски простор „$1“", + "uploadscriptednamespace": "Овааа SVG-податотека го содржи недопуштениот именски простор „<nowiki>$1</nowiki>“", "uploadinvalidxml": "Не можев да го расчленам XML-от што се наоѓа во подигнатата податотека.", "uploadvirus": "Оваа податотека содржи вирус! Повеќе подробности: $1", "uploadjava": "Податотеката е од типот ZIP што содржи податотека со наставка .class за Java.\nПодигањето на податотеки за Java не е дозволено, бидејќи со нив можат да се заобиколуваат безбедносните ограничувања.", @@ -1744,7 +1788,7 @@ "wantedcategories": "Потребни категории", "wantedpages": "Потребни страници", "wantedpages-summary": "Список на непостоечки страници со највеќе врски што водат до нив, исклучувајќи страниците до кои водат само пренасочувања. Список на непостоечки страници до кои водат пренасочувања ќе најдете на [[{{#special:BrokenRedirects}}|списокот на прекинати пренасочувања]].", - "wantedpages-badtitle": "Невалиден наслов во резултатите: $1", + "wantedpages-badtitle": "Неважечки наслов во ставките: $1", "wantedfiles": "Потребни податотеки", "wantedfiletext-cat": "Следниве податотеки се користат, но не постојат. Податотеките од други складишта може да се наведени дури и ако постојат. Таквите ќе бидат <del>поништени</del> од списокот. Покрај ова, страниците што содржат податотеки кои не постојат се наведени на [[:$1]].", "wantedfiletext-cat-noforeign": "Следниве податотеки се користат, но не постојат. Покрај ова, страниците што ги содржат непостоечките податотеки се наведени во [[:$1]].", @@ -1837,8 +1881,10 @@ "apisandbox-sending-request": "Испраќам барање до извршникот...", "apisandbox-loading-results": "Добивам исход од извршникот...", "apisandbox-results-error": "Се појави грешка при вчитувањето на одговорот од барањето до извршникот: $1.", - "apisandbox-request-params-json": "JSON-параметри:", + "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 милисекунда|$1 милисекунди}}", "apisandbox-results-fixtoken": "Исправи ја шифрата и поднеси одново", "apisandbox-results-fixtoken-fail": "Не успеав да ја добијам шифрата „$1“.", @@ -1981,7 +2027,7 @@ "emailccsubject": "Копија од вашата порака до $1: $2", "emailsent": "Писмото е испратено", "emailsenttext": "Писмото е испратено.", - "emailuserfooter": "$1 го испрати писмово на {{GENDER:$2|$2}} со помош на функцијата „{{int:emailuser}}“ на {{SITENAME}}. {{GENDER:$2|Вашата}} е-пошта ќе му биде испратена право на {{GENDER:$1|изворниот испраќач}}, откривајќи {{GENDER:$1|му}} ја {{GENDER:$2|вашата}} адреса.", + "emailuserfooter": "$1 го испрати писмово на {{GENDER:$2|$2}} со помош на функцијата „{{int:emailuser}}“ на {{SITENAME}}. Ако {{GENDER:$2|одговорите}} на ова писмо, {{GENDER:$2|Вашата}} е-пошта ќе му биде испратена право на {{GENDER:$1|изворниот испраќач}}, откривајќи {{GENDER:$1|му}} ја {{GENDER:$2|вашата}} адреса.", "usermessage-summary": "Оставете системска порака.", "usermessage-editor": "Системски гласник", "usermessage-template": "MediaWiki:КорисникПорака", @@ -2080,7 +2126,7 @@ "editcomment": "Коментарот на уредувањето беше: <em>$1</em>.", "revertpage": "Отстрането уредувањето на [[Special:Contributions/$2|$2]] ([[User talk:$2|разговор]]), вратено на последната верзија на [[User:$1|$1]]", "revertpage-nouser": "Вратени уредувања од скриен корисник на последната преработка на {{GENDER:$1|[[User:$1|$1]]}}", - "rollback-success": "Откажани уредувањата на $1; вратено на последната верзија на $2.", + "rollback-success": "Откажани уредувањата на {{GENDER:$3|$1}};; вратено на последната верзија на {{GENDER:$4|$2}}.", "rollback-success-notify": "Откажани уредувањата на $1;\nвратено на последната преработка на $2. [$3 Пок. промени]", "sessionfailure-title": "Седницата не успеа", "sessionfailure": "Има проблем со вашата седница;\nоваа дејство е откажано како превентива против преземање седници.\nПритиснете го копчето „назад“ и повторно вчитајте ја страницата од која дојдовте и обидете се повторно.", @@ -3650,7 +3696,7 @@ "logentry-tag-update-revision": "$1 {{GENDER:$2|поднови}} ознаки во преработката $4 на страницата $3 ({{PLURAL:$7|додадена|додадени}} $6; {{PLURAL:$9|отстранета|отстранети}} $8)", "logentry-tag-update-logentry": "$1 {{GENDER:$2|поднови}} ознаки во дневничкиот запис $5 на страницата $3 ({{PLURAL:$7|додадена|додадени}} $6; {{PLURAL:$9|отстранета|отстранети}} $8)", "rightsnone": "(нема)", - "revdelete-summary": "опис на уредување", + "rightslogentry-temporary-group": "$1 (привремено, до $2)", "feedback-adding": "Го додавам искажаното мислење во страницата...", "feedback-back": "Назад", "feedback-bugcheck": "Одлично! Само проверете да не е една од [$1 веќе познатите грешки].", @@ -3661,7 +3707,7 @@ "feedback-external-bug-report-button": "Поднеси техничка задача", "feedback-dialog-title": "Поднеси мислење", "feedback-dialog-intro": "Послужете се со едноставниот образец подолу за да го поднесете вашето мислење. Коментарот ќе ви биде додаден на страницата „$1“, заедно со вашето корисничко име.", - "feedback-error1": "Грешка: Непрепознаен резултат од извршникот", + "feedback-error1": "Грешка: Непрепознаен исход од извршникот", "feedback-error2": "Грешка: Уредувањето не успеа", "feedback-error3": "Грешка: Извршникот не одговара", "feedback-error4": "Грешка: Не можам да објавам под дадениот наслов", @@ -3675,56 +3721,12 @@ "feedback-useragent": "Кориснички вршител:", "searchsuggest-search": "Пребарајте по {{SITENAME}}", "searchsuggest-containing": "содржи...", - "api-error-autoblocked": "Вашата IP-адреса е автоматски блокирана бидејќи ја има користено блокиран корисник.", - "api-error-badaccess-groups": "Не ви е дозволено да подигате податотеки на ова вики.", "api-error-badtoken": "Внатрешна грешка: неисправна шифра.", - "api-error-blocked": "Блокирани сте од уредување.", - "api-error-copyuploaddisabled": "Подигањата со URL се оневозможени на овој опслужувач.", - "api-error-duplicate": "Веќе {{PLURAL:$1|постои друга податотека|постојат други податотеки}} со истата содржина.", - "api-error-duplicate-archive": "На мрежното место веќе {{PLURAL:$1|постоела друга податотека|постоеле други податотеки}} со истата содржина, но во меѓувреме {{PLURAL:$1|била избришана|биле избришани}}.", - "api-error-empty-file": "Поднесената податотека е празна.", "api-error-emptypage": "Создавањето на нови празни страници не е дозволено.", - "api-error-fetchfileerror": "Внатрешна грешка: нешто тргна наопаку при добивањето на податотеката.", - "api-error-fileexists-forbidden": "Веќе постои податотека наречена „$1“ и не може да се презапише.", - "api-error-fileexists-shared-forbidden": "Веќе постои податотека наречена „$1“ во заедничкото складиште и не може да се презапише.", - "api-error-file-too-large": "Поднесената податотека е преголема.", - "api-error-filename-tooshort": "Името на податотеката е прекратко.", - "api-error-filetype-banned": "Овој тип на податотека е забранет.", - "api-error-filetype-banned-type": "$1 не {{PLURAL:$4|е допуштен тип на податотека|се допуштени типови на податотека}}. {{PLURAL:$3|Допуштен е|Допуштени се}} $2.", - "api-error-filetype-missing": "На податотеката ѝ недостасува наставка.", - "api-error-hookaborted": "Измената што се обидовте да ја направите е откажана од пресретник за наставки.", - "api-error-http": "Внатрешна грешка: не можам да се поврзам со опслужувачот.", - "api-error-illegal-filename": "Податотеката има недозволено име.", - "api-error-internal-error": "Внатрешна грешка: нешто тргна наопаку при обработката на она што го подигате на викито.", - "api-error-invalid-file-key": "Внатрешна грешка: не ја пронајдов податотеката во привременото складиште.", - "api-error-missingparam": "Внатрешна грешка: недостасуваат параметри за барањето.", - "api-error-missingresult": "Внатрешна грешка: не можев да одредам дали копирањето заврши успешно.", - "api-error-mustbeloggedin": "Мора да сте најавени за да подигате податотеки.", - "api-error-mustbeposted": "Во програмов има грешка. Не користи исправен HTTP-метод.", - "api-error-noimageinfo": "Погидањето успеа, но опслужувачот не понуди никакви информации за податотеката.", - "api-error-nomodule": "Внатрешна грешка: нема зададено модул за подигање.", - "api-error-ok-but-empty": "Внатрешна грешка: опслужувачот не одговара.", - "api-error-overwrite": "Презапишувањето врз постоечки податотеки не е дозволено.", - "api-error-ratelimited": "Се обидувате да подигнете повеќе податотеки отколку што викито допушта за дадено време.\nОбидете се повторно за неколку минути.", - "api-error-stashfailed": "Внатрешна грешка: Опслужувачот не успеа да ја складира привремената податотека.", "api-error-publishfailed": "Внатрешна грешка: Опслужувачот не успеа да ја објави привремената податотека.", - "api-error-stasherror": "Се јави грешка при подигањето на податотеката во складот.", - "api-error-stashedfilenotfound": "Не ја најдов наплстената податотека при обидот да ја подигнам од пластот.", - "api-error-stashpathinvalid": "Патеката кајшто требаше да се најде складираната податотека е неважечка.", - "api-error-stashfilestorage": "Се јави грешка при ставањето на податотеката во складот.", - "api-error-stashzerolength": "Опслужувачот не можеше да ја складира податотеката бидејќи има нулта должина.", - "api-error-stashnotloggedin": "Мора да се најавени за да зачувувате податотеки во складот на подигнати.", - "api-error-stashwrongowner": "Податотеката во складот до која сакате да дојдете не ви припаѓа вам.", - "api-error-stashnosuchfilekey": "Клучот на податотеката во складот до кој сакате да дојдете не постои.", - "api-error-timeout": "Опслужувачот не одговори во очекуваното време.", - "api-error-unclassified": "Се појави непозната грешка.", - "api-error-unknown-code": "Непозната грешка: „$1“", - "api-error-unknown-error": "Внатрешна грешка: нешто тргна наопаку при обидот да ја подигнете податотеката.", + "api-error-stashfailed": "Внатрешна грешка: Опслужувачот не успеа да ја складира привремената податотека.", "api-error-unknown-warning": "Непознато предупредување: „$1“", "api-error-unknownerror": "Непозната грешка: „$1“.", - "api-error-uploaddisabled": "Подигањето е оневозможено на ова вики.", - "api-error-verification-error": "Податотеката е оштетена или има погрешна наставка.", - "api-error-was-deleted": "Податотека со ова име веќе е подигана и потоа избришана.", "duration-seconds": "{{PLURAL:$1|една секунда|$1 секунди}}", "duration-minutes": "{{PLURAL:$1|една минута|$1 минути}}", "duration-hours": "{{PLURAL:$1|еден час|$1 часа}}", @@ -3757,7 +3759,7 @@ "expand_templates_html_output": "Сиров HTML-извод", "expand_templates_ok": "ОК", "expand_templates_remove_comments": "Отстрани коментари", - "expand_templates_remove_nowiki": "Притаи <nowiki> ознаки во резултатот", + "expand_templates_remove_nowiki": "Притаи <nowiki> ознаки во исходот", "expand_templates_generate_xml": "Прикажи XML-дрво на расчленувањето", "expand_templates_generate_rawhtml": "Прикажувај сиров HTML", "expand_templates_preview": "Преглед", @@ -3846,6 +3848,7 @@ "mw-widgets-titleinput-description-new-page": "страницата сè уште не постои", "mw-widgets-titleinput-description-redirect": "пренасочување кон $1", "mw-widgets-categoryselector-add-category-placeholder": "Додај категорија...", + "mw-widgets-usersmultiselect-placeholder": "Додај уште...", "sessionmanager-tie": "Не можете истовремено да користите повеќе типови барања за заверка: $1.", "sessionprovider-generic": "$1 седници", "sessionprovider-mediawiki-session-cookiesessionprovider": "седници со колачиња", @@ -3977,7 +3980,7 @@ "usercssispublic": "Напомена: потстраниците со CSS не треба да содржат дсоверливи податоци бидејќи истите се видливи и за други корисници.", "restrictionsfield-badip": "Неважечки IP-дијапазон на адреси: $1", "restrictionsfield-label": "Допуштени IP-опсези:", - "restrictionsfield-help": "Една IP-адреса или CIDR-опсег по ред. За да овозможите сè, користете<br><code>0.0.0.0/0</code><br><code>::/0</code>", + "restrictionsfield-help": "Една IP-адреса или CIDR-опсег по ред. За да овозможите сè, користете<br /><code>0.0.0.0/0</code><br /><code>::/0</code>", "revid": "преработка $1", "pageid": "назнака на страницата $1" } diff --git a/languages/i18n/ml.json b/languages/i18n/ml.json index 887d754de9..a1b4175440 100644 --- a/languages/i18n/ml.json +++ b/languages/i18n/ml.json @@ -30,7 +30,8 @@ "아라", "Viswaprabha", "Nesi", - "Macofe" + "Macofe", + "Jameela P." ] }, "tog-underline": "കണ്ണികൾക്ക് അടിവരയിടുക:", @@ -603,6 +604,7 @@ "minoredit": "ഇതൊരു ചെറിയ തിരുത്താണ്", "watchthis": "ഈ താളിലെ മാറ്റങ്ങൾ ശ്രദ്ധിക്കുക", "savearticle": "താൾ സേവ് ചെയ്യുക", + "savechanges": "മാറ്റങ്ങൾ സേവ് ചെയ്യുക", "preview": "എങ്ങനെയുണ്ടെന്നു കാണുക", "showpreview": "എങ്ങനെയുണ്ടെന്നു കാണുക", "showdiff": "മാറ്റങ്ങൾ കാണിക്കുക", @@ -897,7 +899,7 @@ "searchprofile-advanced-tooltip": "തിരഞ്ഞെടുത്ത നാമമേഖലകളിൽ തിരച്ചിൽ നടത്തുവാൻ", "search-result-size": "$1 ({{PLURAL:$2|ഒരു വാക്ക്|$2 വാക്കുകൾ}})", "search-result-category-size": "{{PLURAL:$1|ഒരു അംഗം|$1 അംഗങ്ങൾ}} ({{PLURAL:$2|ഒരു ഉപവർഗ്ഗം|$2 ഉപവർഗ്ഗങ്ങൾ}}, {{PLURAL:$3|ഒരു പ്രമാണം|$3 പ്രമാണങ്ങൾ}})", - "search-redirect": "(തിരിച്ചുവിടൽ താൾ $1)", + "search-redirect": "($1 എന്ന താളിൽ നിന്ന് തിരിച്ചുവിട്ടത്)", "search-section": "(വിഭാഗം $1)", "search-category": "(വർഗ്ഗം $1)", "search-file-match": "(പ്രമാണ ഉള്ളടക്കവുമായി ഒത്തുപോകുന്നുണ്ട്)", @@ -964,7 +966,7 @@ "prefs-help-recentchangescount": "പുതിയ മാറ്റങ്ങൾ, താളിന്റെ നാൾവഴികൾ, രേഖകൾ എന്നിവക്കും ഇത് ബാധകമാണ്.", "prefs-help-watchlist-token2": "ഇത് താങ്കൾ ശ്രദ്ധിക്കുന്നവയുടെ പട്ടികയുടെ വെബ്‌ഫീഡിനുള്ള രഹസ്യചാവിയാണ്.\nഇത് അറിയാവുന്നവർക്ക് താങ്കൾ ശ്രദ്ധിക്കുന്നവയെന്താണെന്ന് വായിക്കാനാവുമെന്നതിനാൽ, പങ്ക് വെയ്ക്കാതിരിക്കുക.\n[[Special:ResetTokens|ഇത് പുനസജ്ജീകരിക്കണമെങ്കിൽ ഇവിടെ ഞെക്കുക]].", "savedprefs": "താങ്കളുടെ ക്രമീകരണങ്ങൾ കാത്തുസൂക്ഷിച്ചിരിക്കുന്നു.", - "savedrights": "{{GENDER:$1|$1}} എന്ന ഉപയോക്താവിന്റെ ഉപയോക്തൃ അവകാശങ്ങൾ സേവ് ചെയ്തിരിക്കുന്നു.", + "savedrights": "{{GENDER:$1|$1}} എന്ന ഉപയോക്താവിന്റെ ഉപയോക്തൃ സംഘങ്ങൾ സേവ് ചെയ്തിരിക്കുന്നു.", "timezonelegend": "സമയ മേഖല:", "localtime": "പ്രാദേശിക സമയം:", "timezoneuseserverdefault": "വിക്കിയിൽ സ്വതേയുള്ളത് ഉപയോഗിക്കുക ($1)", @@ -1237,6 +1239,10 @@ "recentchanges-legend-heading": "<strong>സൂചന:</strong>", "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} ([[Special:NewPages|പുതിയ താളുകളുടെ പട്ടികയും]] കാണുക)", "recentchanges-submit": "പ്രദർശിപ്പിക്കുക", + "rcfilters-filterlist-title": "അരിപ്പകൾ", + "rcfilters-filter-userExpLevel-newcomer-label": "പുതിയ അംഗങ്ങളുടെ തിരുത്തലുകൾ", + "rcfilters-filter-bots-label": "യന്ത്രം", + "rcfilters-filter-minor-label": "ചെറുതിരുത്തുകൾ", "rcnotefrom": "<strong>$3, $4</strong> മുതലുള്ള {{PLURAL:$5|മാറ്റം|മാറ്റങ്ങൾ}} ആണ് താഴെയുള്ളത് (<strong>$1</strong> എണ്ണം വരെ കൊടുക്കുന്നതാണ്).", "rclistfrom": "$3 $2 മുതലുള്ള മാറ്റങ്ങൾ പ്രദർശിപ്പിക്കുക", "rcshowhideminor": "ചെറുതിരുത്തലുകൾ $1", @@ -1368,7 +1374,7 @@ "uploaded-setting-handler-svg": "വിദൂര/ഡേറ്റ/സ്ക്രിപ്റ്റിനൊപ്പം \"handler\" ആട്രിബ്യൂട്ട് സജ്ജീകരിക്കുന്ന എസ്.വി.ജി. തടഞ്ഞിരിക്കുന്നു. അപ്‌ലോഡ് ചെയ്ത എസ്.വി.ജി. പ്രമാണത്തിൽ <code>$1=\"$2\"</code> കണ്ടെത്തി.", "uploaded-remote-url-svg": "റിമോട്ട് യു.ആർ.എലിനൊപ്പം ഏതെങ്കിലും സ്റ്റൈൽ ആട്രിബ്യൂട്ട് സജ്ജീകരിക്കുന്ന എസ്.വി.ജി. തടഞ്ഞിരിക്കുന്നു. അപ്‌ലോഡ് ചെയ്ത എസ്.വി.ജി. പ്രമാണത്തിൽ <code>$1=\"$2\"</code> കണ്ടെത്തി.", "uploaded-image-filter-svg": "യു.ആർ.എൽ. ഉൾപ്പെടെയുള്ള ചിത്ര അരിപ്പ : <code><$1 $2=\"$3\"></code>, അപ്‌ലോഡ് ചെയ്ത എസ്.വി.ജി. ചിത്രത്തിൽ കണ്ടെത്തി.", - "uploadscriptednamespace": "ഈ എസ്.വി.ജി. പ്രമാണത്തിൽ ഉപയോഗിക്കാൻ പാടില്ലാത്ത നാമമേഖലയായ \"$1\" ഉണ്ട്", + "uploadscriptednamespace": "ഈ എസ്.വി.ജി. പ്രമാണത്തിൽ ഉപയോഗിക്കാൻ പാടില്ലാത്ത നാമമേഖലയായ \"<nowiki>$1</nowiki>\" ഉണ്ട്", "uploadinvalidxml": "അപ്‌ലോഡ് ചെയ്ത പ്രമാണത്തിലെ എക്സ്.എം.എൽ. പാഴ്സ് ചെയ്യാൻ കഴിയില്ല.", "uploadvirus": "പ്രമാണത്തിൽ വൈറസുണ്ട്! വിശദാംശങ്ങൾ: $1", "uploadjava": "ഇത്, ജാവ .class പ്രമാണങ്ങൾ അടക്കം ചെയ്തിട്ടുള്ള ഒരു സിപ് (ZIP) പ്രമാണം ആണ്.\nസുരക്ഷാതടയലുകൾ മറികടക്കാൻ കഴിയുമെന്ന കാരണത്താൽ ജാവ പ്രമാണങ്ങൾ അപ്‌ലോഡ് ചെയ്യുന്നത് അനുവദിച്ചിട്ടില്ല.", @@ -3325,47 +3331,14 @@ "feedback-thanks": "നന്ദി! താങ്കളുടെ പ്രതികരണം \"[$2 $1]\" എന്ന താളിൽ പ്രസിദ്ധീകരിച്ചിട്ടുണ്ട്.", "feedback-thanks-title": "നന്ദി!", "feedback-useragent": "യൂസർ ഏജന്റ്:", - "searchsuggest-search": "തിരയുക", + "searchsuggest-search": "{{SITENAME}} സംരംഭത്തിൽ തിരയുക", "searchsuggest-containing": "ഉൾപ്പെടുന്നവ...", - "api-error-badaccess-groups": "ഈ വിക്കിയിൽ പ്രമാണങ്ങൾ അപ്‌ലോഡ് ചെയ്യാൻ താങ്കൾക്കനുവാദമില്ല.", "api-error-badtoken": "ആന്തരിക പിഴവ്: ഗുണകരമല്ലാത്ത ചീട്ട്.", - "api-error-copyuploaddisabled": "യൂ.ആർ.എൽ. ഉപയോഗിച്ചുള്ള അപ്‌ലോഡ് ഈ സെർവറിൽ പ്രവർത്തനസജ്ജമാക്കിയിട്ടില്ല.", - "api-error-duplicate": "വിക്കിയിൽ ഇതേ ഉള്ളടക്കമുള്ള {{PLURAL:$1|മറ്റൊരു പ്രമാണം|മറ്റ് പ്രമാണങ്ങൾ}} മുമ്പേയുണ്ട്.", - "api-error-duplicate-archive": "സൈറ്റിൽ ഇതേ ഉള്ളടക്കമുള്ള {{PLURAL:$1|മറ്റൊരു പ്രമാണം|മറ്റ് പ്രമാണങ്ങൾ}} ഉണ്ടായിരുന്നു, പക്ഷേ {{PLURAL:$1|അത്|അവ}} മായ്ക്കപ്പെട്ടിട്ടുണ്ട്.", - "api-error-empty-file": "താങ്കൾ സമർപ്പിച്ച പ്രമാണം ശൂന്യമാണ്.", "api-error-emptypage": "ശൂന്യമായ പുതിയ താളുകൾ സൃഷ്ടിക്കുന്നത് അനുവദിക്കുന്നില്ല.", - "api-error-fetchfileerror": "ആന്തരിക പിഴവ്: പ്രമാണം ശേഖരിച്ചുകൊണ്ടിരുന്നപ്പോൾ എന്തോ പിഴവുണ്ടായി.", - "api-error-fileexists-forbidden": "\"$1\" എന്ന പേരിൽ ഒരു പ്രമാണം മുമ്പേയുണ്ട്, അതിന്റെ മുകളിലായി സൃഷ്ടിക്കാനാകില്ല.", - "api-error-fileexists-shared-forbidden": "\"$1\" എന്ന പേരിൽ ഒരു പ്രമാണം പങ്ക് വെച്ചുപയോഗിക്കുന്ന ശേഖരത്തിൽ മുമ്പേയുണ്ട്, അതിനു മുകളിലായി സൃഷ്ടിക്കാനാകില്ല.", - "api-error-file-too-large": "താങ്കൾ സമർപ്പിച്ച പ്രമാണം വളരെ വലുതാണ്.", - "api-error-filename-tooshort": "പ്രമാണത്തിന്റെ പേര് വളരെച്ചെറുതാണ്.", - "api-error-filetype-banned": "ഈ തരത്തിലുള്ള പ്രമാണങ്ങൾ നിരോധിച്ചിരിക്കുന്നു.", - "api-error-filetype-banned-type": "$1 {{PLURAL:$4|അനുവദനീയമല്ലാത്ത തരം പ്രമാണമാണ്‌|അനുവദനീയമല്ലാത്ത തരങ്ങളിലുള്ള പ്രമാണങ്ങളാണ്}}. $2 {{PLURAL:$3|തരത്തിലുള്ള പ്രമാണം|തരങ്ങളിലുള്ള പ്രമാണങ്ങൾ}} ആണ് അഭിലഷണീയം.", - "api-error-filetype-missing": "പ്രമാണത്തിന് എക്സ്‌റ്റെൻഷൻ ഇല്ല.", - "api-error-hookaborted": "താങ്കൾ വരുത്താൻ ശ്രമിച്ച മാറ്റം ഒരു അനുബന്ധത്തിന്റെ കൊളുത്തിനാൽ റദ്ദാക്കപ്പെട്ടു.", - "api-error-http": "ആന്തരിക പിഴവ്: സെർവറുമായി ബന്ധപ്പെടാൻ കഴിയുന്നില്ല.", - "api-error-illegal-filename": "പ്രമാണത്തിന്റെ പേര് അനുവദനീയമല്ല.", - "api-error-internal-error": "ആന്തരിക പിഴവ്: താങ്കളുടെ അപ്‌ലോഡ് കൈകാര്യം ചെയ്തപ്പോൾ എന്തോ കുഴപ്പണ്ടായി.", - "api-error-invalid-file-key": "ആന്തരിക പിഴവ്: താത്കാലിക സംഭരണിയിൽ നിന്ന് പ്രമാണം കണ്ടെത്താനായില്ല.", - "api-error-missingparam": "ആന്തരിക പിഴവ്: ഈ അഭ്യർത്ഥനയിൽ ആവശ്യമായ ചരങ്ങൾ ലഭിച്ചില്ല.", - "api-error-missingresult": "ആന്തരിക പിഴവ്: പകർത്തൽ വിജയകരമായിരുന്നോ എന്ന് നിർണ്ണയിക്കാനാവുന്നില്ല.", - "api-error-mustbeloggedin": "പ്രമാണങ്ങൾ അപ്‌ലോഡ് ചെയ്യാൻ താങ്കൾ ലോഗിൻ ചെയ്തിരിക്കണം.", - "api-error-mustbeposted": "ഈ സോഫ്റ്റ്‌വേറിൽ ബഗ് ഉണ്ട്; ഉപയോഗിക്കുന്നത് ശരിയായ എച്ച്.റ്റി.റ്റി.പി. രീതിയല്ല.", - "api-error-noimageinfo": "അപ്‌ലോഡ് വിജയകരമായിരുന്നു, പക്ഷേ സെർവർ പ്രമാണത്തെക്കുറിച്ച് യാതൊരു വിവരവും ഇവിടെ തന്നിട്ടില്ല.", - "api-error-nomodule": "ആന്തരിക പിഴവ്: അപ്‌ലോഡ് ഘടകം സജ്ജമാക്കിയിട്ടില്ല.", - "api-error-ok-but-empty": "ആന്തരിക പിഴവ്: സെർവറിൽ നിന്ന് പ്രതികരണമൊന്നും ലഭിക്കുന്നില്ല.", - "api-error-overwrite": "നിലവിലുള്ള പ്രമാണത്തിന്റെ മുകളിൽ സ്ഥാപിക്കൽ അനുവദിച്ചിട്ടില്ല.", - "api-error-stashfailed": "ആന്തരിക പിഴവ്: പ്രമാണം താത്കാലികമായി സംഭരിക്കുന്നതിൽ സെർവർ പരാജയപ്പെട്ടു.", "api-error-publishfailed": "ആന്തരിക പിഴവ്: താത്കാലിക പ്രമാണം പ്രസിദ്ധീകരിക്കുന്നതിൽ സെർവർ പരാജയപ്പെട്ടു.", - "api-error-stasherror": "പ്രമാണം സ്റ്റാഷിലേയ്ക്ക് അപ്‌ലോഡ് ചെയ്യുന്നതിനിടെ പിഴവുണ്ടായി.", - "api-error-timeout": "പ്രതീക്ഷിക്കപ്പെട്ട കാലാവധിക്കുള്ളിൽ സെർവർ പ്രതികരിച്ചില്ല.", - "api-error-unclassified": "അപരിചിതമായ പിഴവ് സംഭവിച്ചിരിക്കുന്നു", - "api-error-unknown-code": "അപരിചിതമായ പിഴവ്: \"$1\"", - "api-error-unknown-error": "ആന്തരിക പിഴവ്: പ്രമാണം അപ്‌ലോഡ് ചെയ്യാൻ ശ്രമിക്കുമ്പോൾ എന്തോ കുഴപ്പമുണ്ടായി.", + "api-error-stashfailed": "ആന്തരിക പിഴവ്: പ്രമാണം താത്കാലികമായി സംഭരിക്കുന്നതിൽ സെർവർ പരാജയപ്പെട്ടു.", "api-error-unknown-warning": "അപരിചിതമായ മുന്നറിയിപ്പ്: $1", "api-error-unknownerror": "അപരിചിതമായ പിഴവ്: \"$1\".", - "api-error-uploaddisabled": "ഈ വിക്കിയിൽ അപ്‌ലോഡിങ് പ്രവർത്തനരഹിതമാക്കിയിരിക്കുകയാണ്.", - "api-error-verification-error": "ഈ പ്രമാണത്തിൽ പിഴവുണ്ട്, അല്ലെങ്കിൽ തെറ്റായ എക്സ്‌റ്റെൻഷനാണുള്ളത്.", "duration-seconds": "{{PLURAL:$1|ഒരു സെക്കന്റ്|$1 സെക്കന്റ്}}", "duration-minutes": "{{PLURAL:$1|ഒരു മിനിറ്റ്|$1 മിനിറ്റ്}}", "duration-hours": "{{PLURAL:$1|ഒരു മണിക്കൂർ|$1 മണിക്കൂർ}}", @@ -3410,6 +3383,7 @@ "pagelang-language": "ഭാഷ", "pagelang-use-default": "സ്വതേയുള്ള ഭാഷ ഉപയോഗിക്കുക", "pagelang-select-lang": "ഭാഷ തിരഞ്ഞെടുക്കുക", + "pagelang-reason": "കാരണം", "pagelang-submit": "സമർപ്പിക്കുക", "right-pagelang": "താളിന്റെ ഭാഷ മാറ്റുക", "action-pagelang": "താളിന്റെ ഭാഷ മാറ്റുക", diff --git a/languages/i18n/mr.json b/languages/i18n/mr.json index 30842e02b5..864bdebb15 100644 --- a/languages/i18n/mr.json +++ b/languages/i18n/mr.json @@ -92,7 +92,7 @@ "tog-ccmeonemails": "मी इतर सदस्यांना पाठविलेल्या ई-मेल च्या प्रती मलाही माझ्या ई-मेल पत्त्यावर पाठवा", "tog-diffonly": "निवडलेल्या आवृत्त्यांमधील बदल दाखवताना जुनी आवृत्ती दाखवू नका.", "tog-showhiddencats": "लपविलेले वर्ग दाखवा", - "tog-norollbackdiff": "द्रुतमाघार घेतल्यास बदल वगळा", + "tog-norollbackdiff": "द्रुतमाघार घेतल्यास फरक दाखवू नका", "tog-useeditwarning": "जर मी संपादित करीत असलेल्या पानावरील माझे संपादिलेले बदल जतन न केल्यास मला इशारा द्या", "tog-prefershttps": "सनोंद प्रवेशित असतांना प्रत्येक वेळी सुरक्षित अनुबंध वापरा", "underline-always": "नेहमी", @@ -211,11 +211,13 @@ "tagline": "{{SITENAME}} कडून", "help": "साहाय्य", "search": "शोधा", + "search-ignored-headings": " #<!-- leave this line exactly as it is --> <pre>\n# Headings that will be ignored by search.\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# The syntax is as follows:\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.\nReferences\nExternal links\nSee also\n #</pre> <!-- leave this line exactly as it is -->", "searchbutton": "शोधा", "go": "चला", "searcharticle": "जा", "history": "पानाचा इतिहास", "history_short": "इतिहास", + "history_small": "इतिहास", "updatedmarker": "माझ्या शेवटच्या भेटीनंतर अद्यतन केले", "printableversion": "छापण्यायोग्य आवृत्ती", "permalink": "शाश्वत दुवा", @@ -492,7 +494,7 @@ "nocookieslogin": "{{SITENAME}} सदस्यांना सनोंद-प्रवेश देतांना, त्यांच्या स्मृतिशेष (cookies) वापरते.तुम्ही स्मृतिशेष सुविधा अनुपलब्ध ठेवली आहे.स्मृतीशेष सुविधा कृपया उपलब्ध करा आणि सनोंद-प्रवेशासाठी पुन्हा प्रयत्न करा.", "nocookiesfornew": "हे सदस्य खाते अस्तित्वात नाही, त्यामुळे आम्ही त्याच्या स्रोताची खात्री करू शकलो नाही.\nतुमचे स्मृतिशेष उपलब्ध असण्याची खात्री करा,या पानास पुनर्भारण(रिलोड) करा किंवा पुन्हा प्रयत्न करा.", "noname": "आपण वैध सदस्यनाम नमूद केले नाही.", - "loginsuccesstitle": "आपल्या सनोंद-प्रवेशाची नोंदणी यशस्वीरीत्या पूर्ण झाली", + "loginsuccesstitle": "सनोंद-प्रवेशित", "loginsuccess": "'''तुम्ही {{SITENAME}} वर \"$1\" नावाने सनोंद प्रवेशित आहात.'''", "nosuchuser": "\"$1\" या नावाचा कोणताही सदस्य नाही.तुमचे शुद्धलेखन तपासा, किंवा [[Special:CreateAccount|नवीन खाते]] तयार करा.", "nosuchusershort": "\"$1\" या नावाचा सदस्य नाही. लिहीताना आपली चूक तर नाही ना झाली?", @@ -548,7 +550,7 @@ "newpassword": "नवीन परवलीचा शब्द:", "retypenew": "पुन्हा एकदा परवलीचा शब्द टंका:", "resetpass_submit": "परवलीचा शब्द टाका आणि सनोंद-प्रवेश करा", - "changepassword-success": "तुमचा परवलीचा शब्द यशस्वीरित्या बदललेला आहे!", + "changepassword-success": "तुमचा परवलीचा शब्द बदललेला आहे!", "changepassword-throttled": "तुम्ही नुकतेच सनोंद- प्रवेशासाठी अनेकानेक प्रयत्न केले आहेत.\nकृपया, पुन्हा प्रयत्न करण्याआधी $1 थोडी उसंत घ्या.", "botpasswords": "सांगकाम्याचे परवलीचे शब्द", "botpasswords-summary": "<em>सांगकाम्याचे परवलीचे शब्द</em>हे त्या खात्याची मुख्य सनोंद-प्रवेश अधिकारपत्रे न वापरता, एपीआय मार्फत, सदस्य खात्याच्या प्रवेशास पोहोच देतात.सांगकाम्याचा परवलीचा शब्द वापरुन सनोंद प्रवेश केलेल्यांचे उपलब्ध सदस्य अधिकार प्रतिबंधित असू शकतात.\n\nजर आपणास कळत नसेल आपण हे कां करीत आहोत,तर आपण ते बहुतेक करावयास नको.कोणीही आपणास असे कधीही सांगु नये कि यापैकी एखादे उत्पादित करा व त्यांना द्या.", @@ -647,6 +649,7 @@ "watchthis": "या लेखावर लक्ष ठेवा", "savearticle": "हा लेख साठवा", "savechanges": "बदल जतन करा", + "publishpage": "पानाचे प्रकाशन करा", "publishchanges": "बदल प्रकाशित करा", "preview": "झलक", "showpreview": "झलक दाखवा", @@ -1189,12 +1192,12 @@ "right-changetags": "वैयक्तिक आवृत्त्यांना व नोंद प्रवेष्ट्यांना, आहेतुक(arbitrary) [[Special:Tags|खूणपताका]] जोडा अथवा हटवा", "grant-generic": "\"$1\" अधिकार गठ्ठा", "grant-group-email": "विपत्र पाठवा", - "grant-blockusers": "सदस्यांना प्रतिबंधन/अप्रतिबंधित करा", + "grant-blockusers": "सदस्यांना प्रतिबंधित/अप्रतिबंधित करा", "grant-createaccount": "खाते तयार करा", "grant-createeditmovepage": "पाने बनवा,संपादा व स्थानांतरण करा", "grant-delete": "पाने, आवृत्त्या व नोंदी वगळा", "grant-editinterface": "मिडियाविकि नामविश्व व सदस्यांची CSS/JS संपादा", - "grant-editmycssjs": "आपले सदस्य CSS/JavaScript संपादित करा", + "grant-editmycssjs": "आपली सदस्य CSS/JavaScript संपादित करा", "grant-editmyoptions": "आपला सदस्य पसंतीक्रम संपादा", "grant-editmywatchlist": "आपली निरीक्षणयादी संपादित करा", "grant-editpage": "अस्तित्वात असलेली पाने संपादा", @@ -1202,12 +1205,16 @@ "grant-highvolume": "अत्त्युच्च-जागा घेणारे संपादन", "grant-oversight": "सदस्य लपवा व आवृत्त्या दाबा", "grant-patrol": "पानांच्या बदलांवर गस्त घाला", + "grant-privateinfo": "वैयक्तिक माहिती बघा", "grant-protect": "पाने सुरक्षित किंवा असुरक्षित करा", - "grant-rollback": "पानाचे बदल परतवा", + "grant-rollback": "पानांचे बदल परतवा", "grant-sendemail": "इतर सदस्यांना विपत्र पाठवा", + "grant-uploadeditmovefile": "संचिकांचे अपभारण, बदल व स्थानांतरण करा", + "grant-uploadfile": "नविन संचिका चढवा", "grant-basic": "मूळ अधिकार", "grant-viewdeleted": "वगळलेल्या संचिका व पाने बघा", "grant-viewmywatchlist": "आपली निरीक्षणसूची बघा", + "grant-viewrestrictedlogs": "प्रतिबंधित लॉग नोंदी बघा", "newuserlogpage": "नवीन सदस्यांची नोंद", "newuserlogpagetext": "ही नवीन सदस्यांची नोंद यादी आहे.", "rightslog": "सदस्य आधिकार नोंद", @@ -1231,11 +1238,13 @@ "action-upload_by_url": "यूआरएल वरुन संचिकेचे अपभारण करा", "action-writeapi": "लेखन एपीआय वापरा", "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": "या पानाचा सुरक्षास्तर बदला", @@ -1250,14 +1259,17 @@ "action-userrights-interwiki": "इतर विकिंवरच्या सदस्यांचे अधिकार संपादित करा", "action-siteadmin": "माहितीसाठ्याला कुलूप लावा अथवा काढा", "action-sendemail": "विपत्रे (ई-मेल्स) पाठवा.", + "action-editmyoptions": "आपल्या स्वत:चा 'पसंतीक्रम' संपादा", "action-editmywatchlist": "'माझी निरीक्षणसूची' संपादा", "action-viewmywatchlist": "'माझी निरीक्षणसूची' बघा", "action-viewmyprivateinfo": "आपली वैयक्तिक माहिती बघा", "action-editmyprivateinfo": "आपली वैयक्तिक माहिती संपादा", "action-editcontentmodel": "पानाचा आशय नमूना संपादा", - "action-managechangetags": "डाटाबेसमध्ये खूणपतका तयार करा किंवा वगळा", + "action-managechangetags": "खूणपताका तयार करा किंवा (अ)सक्रिय करा", "action-applychangetags": "आपल्या बदलांसोबतच खूणपताका जोडा", "action-changetags": "वैयक्तिक आवृत्त्यांना व नोंद प्रवेष्ट्यांना, आहेतुक(arbitrary) खूणपताका जोडा अथवा हटवा", + "action-deletechangetags": "डाटाबेसमधून खूणपताका वगळा", + "action-purge": "या पानास तरोताजे (पर्ज) करा", "nchanges": "$1 {{PLURAL:$1|बदल}}", "enhancedrc-since-last-visit": "$1 {{PLURAL:$1|मागील भेटीनंतर}}", "enhancedrc-history": "इतिहास", @@ -1275,6 +1287,25 @@ "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} ([[Special:NewPages|नविन पानांची यादी]] हेही पाहा)", "recentchanges-legend-plusminus": "(''±१२३'')", "recentchanges-submit": "दाखवा", + "rcfilters-activefilters": "सक्रिय गाळण्या", + "rcfilters-search-placeholder": "अलीकडील बदल गाळा (न्याहाळा किंवा टंकन सुरू करा)", + "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-userExpLevel-newcomer-label": "नवागत", + "rcfilters-filter-userExpLevel-newcomer-description": "१० संपादनांपेक्षा कमी व ४ दिवसांची सक्रियता.", + "rcfilters-filter-userExpLevel-learner-label": "शिकाऊ", "rcnotefrom": "खाली {{PLURAL:$5|हा बदल आहे|हे बदल आहेत}} <strong>$3, $4</strong>पासून ते(<strong>$1</strong>पर्यंतचे बदल दाखविले आहेत).", "rclistfrom": "$2,$3 पासून सुरुवात करुन, नविन केल्या गेलेले बदल दाखवा.", "rcshowhideminor": "छोटे बदल $1", @@ -1396,7 +1427,7 @@ "upload-scripted-pi-callback": "ज्या संचिकेत XML-stylesheet च्या प्रक्रियेचे अनुदेश असतील अशी संचिकेचे अपभारण करु शकत नाही.", "uploaded-script-svg": "अपभारीलेल्या SVG संचिकेत,\"$1\" हे लेखनीय अवयव आढळले.", "uploaded-hostile-svg": "अपभारीलेल्या SVG संचिकेत,असुरक्षित CSS स्टाईल अवयव आढळले.", - "uploadscriptednamespace": "या SVG संचिकेत \"$1\" हे अवैध नामविश्व आहे.", + "uploadscriptednamespace": "या SVG संचिकेत \"<nowiki>$1</nowiki>\" हे अवैध नामविश्व आहे.", "uploadinvalidxml": "अपभारीत संचिकेतील XML पार्स करता आले नाही.", "uploadvirus": "या संचिकेत विषाणू(व्हायरस) आहे. अधिक माहिती: $1", "uploadjava": "ही फाईल झीप ह्या प्रकारातील आहे ज्यामधे जावा .क्लास फाईल. आहे,जावा फाईलचे अपभारणास परवानगी नाही कारण त्याने सुरक्षा-बंधने टाळल्या जाऊ शकतात.", @@ -1730,10 +1761,10 @@ "apisandbox-intro": "<strong>मिडियाविकि वेब सर्व्हीस एपीआय</strong> वर प्रयोग करण्यासाठी या पानाचा वापर करा. एपीआय वापरण्याच्या अधिक तपशिलासाठी [[mw:API:Main page| एपीआय दस्ताऐवजीकरण]] हे पान बघा. उदाहरणार्थ:[https://www.mediawiki.org/wiki/API#A_simple_example मुख्य पानाचा आशय मिळवा]. अधिक उदाहरणे बघण्यास एखादी क्रिया निवडा.\n\nयाची नोंद घ्या कि ही धूळपाटी असली तरी, या पानावर आपण केलेल्या क्रियांद्वारे विकिवर फेरफार होऊ शकतो.", "apisandbox-submit": "विनंती करा", "apisandbox-reset": "हटवा", - "apisandbox-examples": "उदाहरण", + "apisandbox-examples": "उदाहरणे", "apisandbox-results": "निकाल", "apisandbox-request-url-label": "'यूआरएल'ची विनंती करा:", - "apisandbox-request-time": "विनंती वेळ:$1", + "apisandbox-request-time": "विनंती वेळ:{{PLURAL:$1|$1 मिलीसेकंद}}", "booksources": "पुस्तक स्रोत", "booksources-search-legend": "पुस्तक स्रोत शोधा", "booksources-search": "शोधा", @@ -1956,6 +1987,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]]\" मथळ्याखाली स्थानांतरित केले.", @@ -2462,25 +2496,26 @@ "pageinfo-display-title": "दृश्य शीर्षक", "pageinfo-default-sort": "डिफॉल्ट निवड-कळ (सॉर्ट कि)", "pageinfo-length": "पानाचा आकार (बाइट्समध्ये)", - "pageinfo-article-id": "पृष्ठ-परिचय", - "pageinfo-language": "पानाच्या मजकूराची भाषा", - "pageinfo-content-model": "पान आशय नमूना", + "pageinfo-article-id": "पृष्ठ-ओळखण", + "pageinfo-language": "पान-आशय भाषा", + "pageinfo-content-model": "पान-आशय नमूना", "pageinfo-content-model-change": "बदला", - "pageinfo-robot-policy": "यंत्रमानवाद्वारे अनुक्रमन", + "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-name": "या पानाची उप-पाने", "pageinfo-subpages-value": "$1 ($2 {{PLURAL:$2|पुनर्निर्देशन|पुनर्निर्देशने}}; $3 {{PLURAL:$3|अ-पुनर्निर्देशन|अ-पुनर्निर्देशने}})", - "pageinfo-firstuser": "पृष्ठ निर्मानक", + "pageinfo-firstuser": "पृष्ठ निर्माणक", "pageinfo-firsttime": "पान निर्मितीचा दिनांक", "pageinfo-lastuser": "अलीकडील संपादक", "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": "लपविलेले {{PLURAL:$1|वर्ग}} ($1)", @@ -2499,6 +2534,7 @@ "pageinfo-category-pages": "पानांची संख्या", "pageinfo-category-subcats": "उपवर्गांची संख्या", "pageinfo-category-files": "संचिकांची संख्या", + "pageinfo-user-id": "सदस्य ओळखण", "markaspatrolleddiff": "टेहळणी केल्याची खूण करा", "markaspatrolledtext": "या पानावर गस्त झाल्याची खूण करा", "markaspatrolledtext-file": "या संचिकेच्या आवृत्तीस गस्त घातली म्हणून् खूण करा", @@ -3000,9 +3036,9 @@ "watchlistedit-raw-done": "तुमची पहाऱ्याची सूची परिष्कृत करण्यात आली आहे.", "watchlistedit-raw-added": "{{PLURAL:$1|1 शीर्षक होते |$1 शीर्षक होती }} भर घातली:", "watchlistedit-raw-removed": "{{PLURAL:$1|1 शीर्षक होते |$1 शीर्षक होती }} वगळले:", - "watchlistedit-clear-title": "निरीक्षणसूची साफ केली", + "watchlistedit-clear-title": "निरीक्षणसूची साफ करा", "watchlistedit-clear-legend": "निरीक्षणसूची साफ करा", - "watchlistedit-clear-explain": "आपल्या ननिरीक्षणसूचीतील सर्व शिर्षक हटविल्या जातील.", + "watchlistedit-clear-explain": "आपल्या निरीक्षणसूचीतील सर्व शिर्षक हटविल्या जातील.", "watchlistedit-clear-titles": "शिर्षके:", "watchlistedit-clear-submit": "निरीक्षणसूची साफ करा(हे कायमस्वरुपी आहे!)", "watchlistedit-clear-done": "तुमची पहाऱ्याची सूची स्वच्छ करण्यात आली आहे.", @@ -3267,46 +3303,12 @@ "feedback-useragent": "सदस्य प्रतिनीधी:", "searchsuggest-search": "शोधा {{SITENAME}}", "searchsuggest-containing": ".......हे असलेले", - "api-error-badaccess-groups": "आपणास ह्या विकिवर संचिका चढवण्याची परवानगी नाही", "api-error-badtoken": "अंतर्गत चूक: अयोग्य टोकन", - "api-error-copyuploaddisabled": "या विदागारावर 'संकेतस्थळावरील संचिका चढविणे' अक्षम करण्यात आले आहे.", - "api-error-duplicate": "{{PLURAL:$1|दुसरी संचिका|दुसऱ्या इतर संचिका}}ही याच नावाने व याच आशयासह संकेतस्थळावर आहेत.", - "api-error-duplicate-archive": "{{PLURAL:$1|दुसरी संचिका|दुसऱ्या इतर संचिका}}ही याच नावाने व याच आशयासह संकेतस्थळावर आहे परंतु{{PLURAL:$1|ते वगळल्या गेले|ती वगळल्या गेलीत}}", - "api-error-empty-file": "तुम्ही प्रस्तुत केलेली संचिका रिकामी होती.", "api-error-emptypage": "नवीन आणि मोकळी पाने बनवायला परवानगी नाही", - "api-error-fetchfileerror": "अंतर्गत चूक: फाइल मिळवतांना काहीतरी चूक झाली आहे", - "api-error-fileexists-forbidden": "\"$1\" या नावाची संचिका पूर्वीच उपलब्ध आहे व त्यावर पुनर्लेखन करता येऊ शकत नाही.", - "api-error-fileexists-shared-forbidden": "\"$1\" या नावाची संचिका, 'सहभागी संचिका भांडारात' पूर्वीच उपलब्ध आहे,व त्यावर पुनर्लेखन करता येऊ शकत नाही.", - "api-error-file-too-large": "तुम्ही प्रस्तुत केलेली संचिका आकाराने खूप मोठी होती.", - "api-error-filename-tooshort": "संचिकेचे नाव खूपच छोटे आहे.", - "api-error-filetype-banned": "याप्रकारची संचिका प्रतिबंधित आहे.", - "api-error-filetype-banned-type": "$1 {{PLURAL:$4|हा परवानगी नसलेला संचिका-प्रकार आहे|या परवानगी नसलेल्या संचिका-प्रकार आहेत}}. $2 {{PLURAL:$3|हा परवानगी असलेला संचिका-प्रकार आहे|या परवानगी असलेल्या संचिका-प्रकार आहेत}}.", - "api-error-filetype-missing": "या संचिकेस विस्तार(एक्सटेंशन) नाही.", - "api-error-hookaborted": "तुम्ही केलेला बदल extension ने उलटवला आहे", - "api-error-http": "अंतर्गत त्रुटी: सर्व्हरशी जोडणी होऊ शकली नाही.", - "api-error-illegal-filename": "हे संचिकानाम प्रतिबंधित आहे.", - "api-error-internal-error": "अंतर्गत त्रुटी:आपण विकिवर चढविलेल्या संचिकेवर प्रक्रिया करतांना काहीतरी चुकले आहे.", - "api-error-invalid-file-key": "अंतर्गत त्रुटी: तात्पुरत्या साठवणीत संचिका सापडली नाही.", - "api-error-missingparam": "अंतर्गत चूक: मागणीतील काही नोंदी राहून गेल्या आहेत", - "api-error-missingresult": "आंतरिक त्रुटी : प्रत यशस्वी झाली की नाही हे ठरवता येत नाही", - "api-error-mustbeloggedin": "संचिका चढविण्यासाठी आपण दाखल होणे जरुरी आहे.", - "api-error-mustbeposted": "अंतर्गत चूक: मागणी पूर्ण करण्यासाठी HTTP POST असायला हवे", - "api-error-noimageinfo": "डाटा अपलोड यशस्वी झाले आहे पण सर्व्हर कडून तशी माहिती अजून मिळाली नाही", - "api-error-nomodule": "अंतर्गत चूक: module set चढवलेला नाही", - "api-error-ok-but-empty": "आंतरिक त्रुटी : विदादाता प्रतिक्रिया देत नहीं", - "api-error-overwrite": "अस्तित्वात असलेल्या संचिकेवर पुनर्लेखन प्रतिबंधित आहे.", - "api-error-ratelimited": "आपण, हा विकी परवानगी देत असल्यापेक्षा अधिक संचिका, कमी कालावधीत अपभारणाचा प्रयत्न करीत आहात.\nकाही मिनिटांनी पुन्हा प्रयत्न करा.", - "api-error-stashfailed": "इन्तरिक त्रुटी : विदादाता तात्पुरत्या स्वरूपाच्या संचिका जमा करण्यात अयशस्वी", "api-error-publishfailed": "अंतर्गत त्रुटी:विदादात्यास, या तात्पुरत्या संचिकेच्या प्रकाशनास अपयश आले.", - "api-error-stasherror": "स्टॅचमध्ये ही संचिका अपभारणात त्रुटी आली.", - "api-error-timeout": "अपेक्षित वेळेत विदागार (server)ने प्रतिसाद दिला नाही.", - "api-error-unclassified": "एक अज्ञात चूक उद्भवली.", - "api-error-unknown-code": "अज्ञात त्रुटी: \"$1\"", - "api-error-unknown-error": "अंतर्गत त्रुटी:आपली संचिका चढवितांना काहीतरी चुकले आहे.", + "api-error-stashfailed": "इन्तरिक त्रुटी : विदादाता तात्पुरत्या स्वरूपाच्या संचिका जमा करण्यात अयशस्वी", "api-error-unknown-warning": "अज्ञात इशारा : $1", "api-error-unknownerror": "अज्ञात चूक $1", - "api-error-uploaddisabled": "चढवण्याचे कार्य ह्या विकिवर अवरुद्ध करण्यात आले आहे", - "api-error-verification-error": "ही संचिका भ्रष्ट(करप्ट) झाली किंवा चुकीचा विस्तार(एक्सटेंशन) असलेली असू शकते.", "duration-seconds": "$1 {{PLURAL:$1|सेकंदापूर्वी|सेकंदांपूर्वी}}", "duration-minutes": "$1 {{PLURAL:$1|मिनिटापूर्वी|मिनिटांपूर्वी}}", "duration-hours": "$1 {{PLURAL:$1|तासापूर्वी|तासांपूर्वी}}", diff --git a/languages/i18n/ms.json b/languages/i18n/ms.json index 0a5267de58..865fa33204 100644 --- a/languages/i18n/ms.json +++ b/languages/i18n/ms.json @@ -40,6 +40,7 @@ "tog-watchdefault": "Tambahkan laman-laman dan fail-fail yang saya sunting ke dalam senarai pantau saya", "tog-watchmoves": "Tambahkan laman-laman dan fail-fail yang saya pindah ke dalam senarai pantau saya", "tog-watchdeletion": "Tambahkan laman-laman dan fail-fail yang saya hapuskan ke dalam senarai pantau saya", + "tog-watchuploads": "Tambahkan fail baru yang saya muat naik ke senarai pantauan", "tog-watchrollback": "Tambahkan laman-laman yang saya undurkan ke dalam senarai pantau saya", "tog-minordefault": "Tandakan semua suntingan sebagai kecil secara lalai", "tog-previewontop": "Tunjukkan pralihat di atas kotak sunting", @@ -49,7 +50,7 @@ "tog-enotifminoredits": "Juga e-melkan saya untuk suntingan-suntingan laman dan fail yang kecil", "tog-enotifrevealaddr": "Serlahkan alamat e-mel saya dalam e-mel pemberitahuan", "tog-shownumberswatching": "Tunjukkan bilangan pemantau", - "tog-oldsig": "Tanda tangan yang sedia ada:", + "tog-oldsig": "Tandatangan yang sedia ada:", "tog-fancysig": "Anggap tandatangan sebagai teks wiki (tanpa pautan automatik)", "tog-uselivepreview": "Gunakan prebiu langsung", "tog-forceeditsummary": "Tanya saya jika ringkasan suntingan kosong", @@ -137,6 +138,8 @@ "october-date": "$1 Oktober", "november-date": "$1 November", "december-date": "$1 Disember", + "period-am": "AM", + "period-pm": "PM", "pagecategories": "{{PLURAL:$1|Kategori|Kategori}}", "category_header": "Laman-laman dalam kategori \"$1\"", "subcategories": "Subkategori", @@ -152,14 +155,14 @@ "category-file-count-limited": "$1 fail berikut terdapat dalam kategori ini.", "listingcontinuesabbrev": "samb.", "index-category": "Laman terindeks", - "noindex-category": "Laman tak diindeks", + "noindex-category": "Laman tak diindekskan", "broken-file-category": "Laman yang ada pautan fail yang terputus", "about": "Perihal", "article": "Laman kandungan", "newwindow": "(dibuka di tetingkap baru)", "cancel": "Batal", "moredotdotdot": "Lagi...", - "morenotlisted": "Senarai ini tidak lengkap.", + "morenotlisted": "Senarai ini mungkin tidak lengkap.", "mypage": "Halaman", "mytalk": "Perbincangan", "anontalk": "Perbincangan", @@ -187,6 +190,7 @@ "searcharticle": "Pergi", "history": "Sejarah laman", "history_short": "Sejarah", + "history_small": "sejarah", "updatedmarker": "dikemaskinikan sejak kunjungan terakhir saya", "printableversion": "Versi boleh cetak", "permalink": "Pautan kekal", @@ -218,6 +222,9 @@ "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", @@ -326,7 +333,7 @@ "databaseerror-query": "Pertanyaan: $1", "databaseerror-function": "Fungsi: $1", "databaseerror-error": "Ralat: $1", - "transaction-duration-limit-exceeded": "Demi mengelakkan terjadinya jeda pengulangan yang tinggi, transaksi ini dibatalkan kerana tempoh menulis ($1) telah melebihi had $2 saat.", + "transaction-duration-limit-exceeded": "Demi mengelakkan terjadinya kelewatan pengulangan yang tinggi, transaksi ini dibatalkan kerana tempoh menulis ($1) telah melebihi had $2 saat.", "laggedslavemode": "Amaran: Laman ini mungkin bukan yang terkini.", "readonly": "Pangkalan data dikunci", "enterlockreason": "Sila nyatakan sebab penguncian dan jangkaan\nbila kunci ini akan dibuka.", @@ -397,6 +404,8 @@ "virus-scanfailed": "pengimbasan gagal (kod $1)", "virus-unknownscanner": "antivirus tidak dikenali:", "logouttext": "'''Anda telah log keluar.'''\n\nSila ingat bahawa sesetengah halaman mungkin masih dipaparkan seolah-olah anda masih log masuk hingga anda memadamkan cache pelayar anda.", + "cannotlogoutnow-title": "Tidak boleh melog keluar sekarang", + "cannotlogoutnow-text": "Melog keluar tidak boleh dilakukan apabila menggunakan $1", "welcomeuser": "Selamat datang, $1!", "welcomecreation-msg": "Akaun anda telah dibuka.\nJangan lupa untuk mengubah [[Special:Preferences|keutamaan anda di {{SITENAME}}]].", "yourname": "Nama pengguna:", @@ -412,10 +421,17 @@ "createacct-yourpasswordagain-ph": "Isikan kata laluan semula", "userlogin-remembermypassword": "Biar saya kekal log masuk", "userlogin-signwithsecure": "Gunakan sambungan terlindung", + "cannotlogin-title": "Tidak boleh melog masuk", + "cannotlogin-text": "Tidak mungkin boleh melog masuk.", + "cannotloginnow-title": "Tidak boleh melog masuk sekarang", + "cannotloginnow-text": "Melog masuk tidak boleh dilakukan apabila menggunakan $1", + "cannotcreateaccount-title": "Tidak boleh mencipta akaun", + "cannotcreateaccount-text": "Penciptaan akaun langsung tidak diaktifkan di wiki ini.", "yourdomainname": "Domain anda:", "password-change-forbidden": "Anda tidak dapat mengubah kata laluan di wiki ini.", "externaldberror": "Berlaku ralat pangkalan data bagi pengesahan luar atau anda tidak dibenarkan mengemaskinikan akaun luar anda.", "login": "Log masuk", + "login-security": "Mengesahkan identiti anda", "nav-login-createaccount": "Log masuk / buka akaun", "userlogin": "Log masuk / buka akaun", "userloginnocreate": "Log masuk", @@ -433,18 +449,23 @@ "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-createanother": "Buka satu lagi akaun", "createacct-emailrequired": "Alamat e-mel", "createacct-emailoptional": "Alamat e-mel (pilihan)", "createacct-email-ph": "Isikan alamt e-mel anda", "createacct-another-email-ph": "Masukkan alamat e-mel", "createaccountmail": "Gunakan kata laluan rawak yang sementara dan hantarnya ke alamat e-mel yang dinyatakan", + "createaccountmail-help": "Boleh digunakan untuk membuat akaun untuk orang lain tanpa mengetahui kata laluan.", "createacct-realname": "Nama sebenar (pilihan)", "createaccountreason": "Sebab:", "createacct-reason": "Sebab", "createacct-reason-ph": "Mengapa anda membuka satu lagi akaun", + "createacct-reason-help": "Mesej yang ditunjukkan dalam log penciptaan akaun", "createacct-submit": "Wujudkan akaun anda", "createacct-another-submit": "Buka akaun", + "createacct-continue-submit": "Teruskan penciptaan akaun", + "createacct-another-continue-submit": "Teruskan penciptaan akaun", "createacct-benefit-heading": "{{SITENAME}} dijayakan oleh orang ramai seperti anda.", "createacct-benefit-body1": "{{PLURAL:$1|suntingan}}", "createacct-benefit-body2": "{{PLURAL:$1|halaman}}", @@ -459,10 +480,11 @@ "nocookieslogin": "{{SITENAME}} menggunakan ''cookies'' untuk mencatat status log masuk pengguna. Sila aktifkan sokongan ''cookies'' pada pelayar anda dan cuba lagi.", "nocookiesfornew": "Akaun pengguna tidak dicipta kerana kami tidak dapat sahkan sumbernya.\nPastikan anda telah bolehkan kuki, muat semula laman ini dan cuba lagi.", "nocookiesforlogin": "{{int:nocookieslogin}}", + "createacct-loginerror": "Akaun ini telah berjaya dicipta tetapi anda tidak boleh log masuk secara automatik. Sila ke [[Special:UserLogin|log masuk manual]].", "noname": "Nama pengguna tidak sah.", - "loginsuccesstitle": "Berjaya log masuk", + "loginsuccesstitle": "Berjaya melog masuk", "loginsuccess": "'''Anda telah log masuk ke dalam {{SITENAME}} sebagai \"$1\".'''", - "nosuchuser": "Pengguna \"$1\" tidak wujud. Nama pengguna adalah peka huruf besar. Sila semak ejaan anda, atau anda boleh [[Special:CreateAccount|membuka akaun baru]].", + "nosuchuser": "Tiada pengguna yang menggunakan nama \"$1\".\nNama pengguna adalah kes sensitif.\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.", @@ -479,11 +501,11 @@ "noemail": "Tiada alamat e-mel direkodkan bagi pengguna \"$1\".", "noemailcreate": "Anda perlu memberikan alamat e-mel sah", "passwordsent": "Kata laluan baru telah dikirim kepada alamat\ne-mel yang didaftarkan oleh \"$1\".\nSila log masuk semula setelah anda menerima e-mel tersebut.", - "blocked-mailpassword": "Alamat IP anda telah disekat daripada sebarang penyuntingan, oleh itu, untuk\nmengelak penyalahgunaan, anda tidak dibenarkan menggunakan ciri pemulihan kata laluan.", + "blocked-mailpassword": "Alamat IP anda disekat dari menyunting. Untuk mengelakkan penyalahgunaan, ia tidak dibenarkan untuk menggunakan pemulihan kata laluan dari alamat IP ini.", "eauthentsent": "Sepucuk e-mel pengesahan telah dikirim kepada alamat e-mel yang dinyatakan.\nSebelum e-mel lain boleh dikirim kepada alamat tersebut, anda perlu mematuhi arahan-arahan pada e-mel pengesahan tersebut untuk mengesahkan bahawa alamat tersebut benar-benar kepunyaan anda.", "throttled-mailpassword": "E-mel set semula kata laluan telah dihantar dalam tempoh $1 jam yang lalu.\nUntuk mencegah salah guna, hanya sepucuk e-mel set semula kata laluan dihantar setiap {{PLURAL:$1|jam|$1 jam}}.", "mailerror": "Ralat ketika mengirim e-mel: $1", - "acct_creation_throttle_hit": "Pengunjung wiki ini yang menggunakan alamat IP anda telah membuka sebanyak $1 akaun semenjak sehari lepas, iaitu merupakan had maksimum yang dibenarkan dalam tempoh tersebut.\nAkibatknya, pengunjung dari alamat IP ini tidak boleh membuka akaun lagi pada masa sekarang.", + "acct_creation_throttle_hit": "Pelawat yang datang ke wiki ini menggunakan alamat IP anda telah mencipta $1 akaun dalam $2 terakhir, iaitu maksimum yang dibenarkan dalam tempoh masa ini.\nHasilnya, pelawat menggunakan alamat IP ini tidak boleh membuat apa-apa lebih akaun pada masa ini.", "emailauthenticated": "Alamat e-mel anda telah disahkan pada $2, $3.", "emailnotauthenticated": "Alamat e-mel anda belum disahkan. Oleh itu, e-mel tidak boleh dikirim bagi ciri-ciri berikut.", "noemailprefs": "Anda perlu menetapkan alamat e-mel terlebih dahulu untuk menggunakan ciri-ciri ini.", @@ -496,13 +518,14 @@ "createaccount-title": "Pembukaan akaun {{SITENAME}}", "createaccount-text": "Seseorang telah membuka akaun untuk\nalamat e-mel anda di {{SITENAME}} ($4) dengan nama \"$2\" dan kata laluan \"$3\".\nAnda boleh log masuk dan tukar kata laluan anda sekarang.\n\nSila abaikan mesej ini jika anda tidak meminta untuk membuka akaun tersebut.", "login-throttled": "Anda telah mencuba log masuk berulang kali.\nSila tunggu $1 dan cuba lagi.", - "login-abort-generic": "Log masuk anda tidak berjaya, dan terpaksa dibatalkan", + "login-abort-generic": "Log masuk anda tidak berjaya - Dibatalkan", "login-migrated-generic": "Akaun anda telah dipindahkan dan nama pengguna anda tidak lagi wujud di wiki ini.", "loginlanguagelabel": "Bahasa: $1", "suspicious-userlogout": "Permintaan anda untuk log keluar ditolak kerana ia kelihatan seperti dihantar oleh pelayar rosak atau proksi pengagregatan.", "createacct-another-realname-tip": "Nama sebenar adalah tidak wajib.\nJika anda memilih untuk menyatakannya, ini akan digunakan untuk memberikan atribusi kepada pengguna atas sumbangan mereka.", "pt-login": "Log masuk", "pt-login-button": "Log masuk", + "pt-login-continue-button": "Teruskan melog masuk", "pt-createaccount": "Buka akaun", "pt-userlogout": "Log keluar", "php-mail-error-unknown": "Ralat tak diketahui dalam fungsi mail() PHP", @@ -516,8 +539,22 @@ "newpassword": "Kata laluan baru:", "retypenew": "Ulangi kata laluan baru:", "resetpass_submit": "Tetapkan kata laluan dan log masuk", - "changepassword-success": "Kata laluan anda berjaya ditukar!", + "changepassword-success": "Kata laluan anda sudah ditukar!", "changepassword-throttled": "Anda telah melakukan terlalu banyak cubaan log masuk baru-baru ini.\nSila tunggu $1 dan cuba lagi.", + "botpasswords": "Kata laluan bot", + "botpasswords-summary": "<em>Kata laluan bot</em> membenarkan akses kepada akaun pengguna melalui API tanpa menggunakan butiran log masuk utama akaun. Hak-hak pengguna yang apabila log masuk dengan kata laluan bot mungkin terhad.\n\nJika anda tidak tahu mengapa anda mungkin mahu untuk melakukan ini, anda perlu mungkin tidak melakukannya. Tiada siapa yang pernah meminta kepada kamu untuk menjana satu ini dan memberikannya kepada mereka.", + "botpasswords-disabled": "Kata laluan bot dilumpuhkan.", + "botpasswords-no-central-id": "Untuk menggunakan kata laluan bot, anda mesti log masuk ke akaun berpusat.", + "botpasswords-existing": "Kata laluan bot yang sedia ada", + "botpasswords-createnew": "Buat kata laluan bot baru", + "botpasswords-editexisting": "Ubah kata laluan bot yang sedia ada", + "botpasswords-label-appid": "Nama bot:", + "botpasswords-label-create": "Cipta", + "botpasswords-label-update": "Kemas kini", + "botpasswords-label-cancel": "Batalkan", + "botpasswords-label-delete": "Hapuskan", + "botpasswords-label-resetpassword": "Set semula kata laluan", + "botpasswords-label-grants": "Pemberian berkenaan:", "resetpass_forbidden": "Kata laluan tidak boleh ditukar", "resetpass-no-info": "Anda hendaklah log masuk terlebih dahulu untuk mencapai laman ini secara terus.", "resetpass-submit-loggedin": "Tukar kata laluan", @@ -537,8 +574,6 @@ "passwordreset-emaildisabled": "Ciri-ciri e-mel telah dipadamkan di wiki ini.", "passwordreset-username": "Nama pengguna:", "passwordreset-domain": "Domain:", - "passwordreset-capture": "Lihat e-mel yang terhasil?", - "passwordreset-capture-help": "Jika anda menandai ruang ini, e-mel (yang membawa kata laluan sementara) akan ditunjukkan kepada anda dan juga dihantar kepada pengguna itu.", "passwordreset-email": "Alamat e-mel:", "passwordreset-emailtitle": "Butiran akaun di {{SITENAME}}", "passwordreset-emailtext-ip": "Seseorang (mungkin anda, dari alamat IP $1) telah memohon supaya kata laluan diset semula untuk {{SITENAME}} anda ($4). {{PLURAL:$3|Akaun|Akaun-akaun}} pengguna yang berikut\ndikaitkan dengan alamat e-mel ini:\n\n$2\n\n{{PLURAL:$3|Kata|Kata-kata}} laluan sementara ini akan luput dalam masa $5 hari. Anda harus log masuk dan membuat kata laluan yang baru sekarang. Jika permohonan ini dibuat oleh orang lain, atau jika anda teringat kembali kata laluan asal anda dan anda tidak lagi berhasrat untuk mengubahnya, anda boleh mengabaikan pesanan ini dan terus menggunakan kata laluan lama anda.", @@ -944,8 +979,6 @@ "saveprefs": "Simpan", "restoreprefs": "Pulihkan semua tetapan asali (dalam semua bahagian)", "prefs-editing": "Menyunting", - "rows": "Baris:", - "columns": "Lajur:", "searchresultshead": "Cari", "stub-threshold": "Ambang untuk pemformatan pautan tunas ($1):", "stub-threshold-sample-link": "contoh", @@ -1039,13 +1072,10 @@ "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.", - "userrights-nologin": "Anda mesti [[Special:UserLogin|log masuk]] dengan akaun penyelia terlebih dahulu untuk memperuntukkan hak-hak pengguna.", - "userrights-notallowed": "Akuan anda tidak dibenarkan untuk menambah atau membuang hak pengguna.", "userrights-changeable-col": "Kumpulan yang anda boleh ubah", "userrights-unchangeable-col": "Kumpulan yang anda tak boleh ubah", "userrights-irreversible-marker": "$1*", "userrights-conflict": "Percanggahan perubahan hak pengguna! Sila semak dan sahkan perubahan anda.", - "userrights-removed-self": "Anda telah berjaya menggugurkan hak-hak sendiri. Oleh yang demikian, anda tidak boleh mengakses halaman ini lagi.", "group": "Kumpulan:", "group-user": "Pengguna", "group-autoconfirmed": "Pengguna sah automatik", @@ -1135,7 +1165,6 @@ "right-siteadmin": "Mengunci dan membuka kunci pangkalan data", "right-override-export-depth": "Mengeksport laman termasuk laman dipaut sehingga kedalaman 5", "right-sendemail": "Mengirim e-mel kepada pengguna-pengguna lain", - "right-passwordreset": "Lihat e-mel set semula kata laluan", "right-managechangetags": "Mencipta dan menghapuskan [[Special:Tags|teg]] dari pangkalan data", "right-applychangetags": "Mengenakan [[Special:Tags|teg]] di samping suntingan seseorang", "right-changetags": "Menambah dan menggugurkan [[Special:Tags|teg]] yang dikenakan sembarangan pada semakan dan entri log individu", @@ -1335,7 +1364,7 @@ "uploaded-setting-handler-svg": "SVG yang menentukan atribut \"handler\" dengan remote/data/script disekat. Terdapat <code>$1=\"$2\"</code> dalam fail SVG yang dimuat naik.", "uploaded-remote-url-svg": "SVG yang menetapkan sebarang atribut style dengan URL luar dikekang. <code>$1=\"$2\"</code> ditemui di dalam fail SVG yang dimuat naik.", "uploaded-image-filter-svg": "Terdapat penapis imej dengan URL: <code><$1 $2=\"$3\"></code> dalam fail SVG yang dimuat naik.", - "uploadscriptednamespace": "Fail SVG ini mengandungi ruang nama terlarang \"$1\"", + "uploadscriptednamespace": "Fail SVG ini mengandungi ruang nama terlarang \"<nowiki>$1</nowiki>\"", "uploadinvalidxml": "XML dalam fail yang dimuat naik ini tidak dapat dihuraikan.", "uploadvirus": "Fail tersebut mengandungi virus! Butiran: $1", "uploadjava": "Fail ini ialah fail ZIP yang mengandungi fail .class Java.\nMemuat naik fail Java tidak dibenarkan, kerana boleh menyebabkan sekatan keselamatan dipintas.", @@ -3265,52 +3294,12 @@ "feedback-useragent": "Ejen pengguna:", "searchsuggest-search": "Cari", "searchsuggest-containing": "mengandungi...", - "api-error-badaccess-groups": "Anda tidak dibenarkan memuat naik fail di wiki ini.", "api-error-badtoken": "Ralat dalaman: token tak elok.", - "api-error-copyuploaddisabled": "Ciri memuat naik melalui URL dimatikan di pelayan ini.", - "api-error-duplicate": "Di tapak ini sudah ada {{PLURAL:$1|satu fail lain|fail-fail lain}} yang sama kandungannya.", - "api-error-duplicate-archive": "Di tapak ini pernah ada {{PLURAL:$1|satu fail lain|fail-fail lain}} yang sama kandungannya, tetapi telah dihapuskan.", - "api-error-empty-file": "Fail yang anda serahkan adalah kosong.", "api-error-emptypage": "Anda tidak dibenarkan membuat laman baru yang kosong.", - "api-error-fetchfileerror": "Ralat dalaman: ada malasah ketika mengambil fail itu.", - "api-error-fileexists-forbidden": "Fail bernama \"$1\" sudah wujud, dan tidak boleh ditulis ganti.", - "api-error-fileexists-shared-forbidden": "Fail bernama \"$1\" sudah wujud dalam repositori fail kongsian, dan tidak boleh ditulis ganti.", - "api-error-file-too-large": "Fail yang anda serahkan adalah terlalu besar.", - "api-error-filename-tooshort": "Nama fail ini terlalu pendek.", - "api-error-filetype-banned": "Fail jenis ini adalah dilarang.", - "api-error-filetype-banned-type": "$1 merupakan {{PLURAL:$4|jenis|jenis-jenis}} fail yang dilarang. {{PLURAL:$3|Jenis|Jenis-jenis}} fail yang dibenarkan ialah $2.", - "api-error-filetype-missing": "Fail ini tiada sambungannya.", - "api-error-hookaborted": "Pengubahsuaian yang anda buat telah disekat oleh cangkuk sambungan.", - "api-error-http": "Ralat dalaman: tidak dapat bersambung dengan pelayan.", - "api-error-illegal-filename": "Nama fail ini tidak dibenarkan.", - "api-error-internal-error": "Ralat dalaman: ada masalah ketika memproseskan muat naik anda di wiki ini.", - "api-error-invalid-file-key": "Ralat dalaman: fail tidak dijumpai dalam storan sementara.", - "api-error-missingparam": "Ralat dalaman: kekosongan parameter pada permohonan.", - "api-error-missingresult": "Ralat dalaman: tidak dapat ditentukan sama ada penyalinan berjaya.", - "api-error-mustbeloggedin": "Anda mesti log masuk untuk memuat naik fail.", - "api-error-mustbeposted": "Ralat dalaman: permohonan memerlukan POST HTTP.", - "api-error-noimageinfo": "Muat naik berjaya, tetapi pelayan tidak memberi kita sebarang maklumat tentang fail itu.", - "api-error-nomodule": "Ralat dalaman: tiada modul muat naik yang ditetapkan.", - "api-error-ok-but-empty": "Ralat dalaman: tiada gerak balas dari pelayan.", - "api-error-overwrite": "Menulis ganti fail yang telah wujud adalah tidak dibenarkan.", - "api-error-stashfailed": "Ralat dalaman: pelayan tidak dapat menyimpan fail sementara.", "api-error-publishfailed": "Ralat dalaman: Pelayan tidak dapat menerbitkan fail sementara.", - "api-error-stasherror": "Terdapat ralat ketika menyimpan fail yang dimuat naik.", - "api-error-stashedfilenotfound": "Fail yang disimpan tidak dijumpai apabila cuba untuk memuat naik dari simpanan.", - "api-error-stashpathinvalid": "Laluan di mana fail disimpan sepatutnya didapati tidak sah.", - "api-error-stashfilestorage": "Terdapat ralat semasa menyimpan fail dalam simpanan.", - "api-error-stashzerolength": "Pelayan tidak dapat menyimpan fail, kerana ia mempunyai panjang sifar.", - "api-error-stashnotloggedin": "Anda mesti log masuk untuk menyimpan fail-fail dalam stor muat naik.", - "api-error-stashwrongowner": "Fail yang anda cuba akses dalam stor itu bukan milik anda.", - "api-error-stashnosuchfilekey": "Kunci fail yang anda cuba akses dalam stor itu tidak wujud.", - "api-error-timeout": "Pelayan tidak bergerak balas dalam tempoh yang diharapkan.", - "api-error-unclassified": "Berlakunya ralat yang tidak diketahui", - "api-error-unknown-code": "Ralat tidak diketahui: \"$1\"", - "api-error-unknown-error": "Ralat dalaman: ada masalah apabila cuba memuat naik fail anda.", + "api-error-stashfailed": "Ralat dalaman: pelayan tidak dapat menyimpan fail sementara.", "api-error-unknown-warning": "Amaran tidak diketahui: $1", "api-error-unknownerror": "Ralat tidak dikenali: \"$1\".", - "api-error-uploaddisabled": "Ciri muat naik dimatikan di wiki ini.", - "api-error-verification-error": "Fail ini mungkin tercemar atau tersalah sambungannya.", "duration-seconds": "$1 saat", "duration-minutes": "$1 minit", "duration-hours": "$1 jam", diff --git a/languages/i18n/mt.json b/languages/i18n/mt.json index db52b06766..4166acc546 100644 --- a/languages/i18n/mt.json +++ b/languages/i18n/mt.json @@ -514,8 +514,6 @@ "passwordreset-emaildisabled": "Karatteristiċi tal-posta elettronika Ä¡ew diżattivati fuq din il-wiki.", "passwordreset-username": "Isem l-utent:", "passwordreset-domain": "Dominju:", - "passwordreset-capture": "Ara l-kontenut tal-messaÄ¡Ä¡?", - "passwordreset-capture-help": "Jekk tagħżel din il-kaxxa, l-indirizz elettroniku (bil-password temporanja) se jiÄ¡i muri lilek barra milli jintbagħat lill-utent.", "passwordreset-email": "Indirizz elettroniku:", "passwordreset-emailtitle": "Dettalji tal-kont fuq {{SITENAME}}", "passwordreset-emailtext-ip": "Xi ħadd (probabbilment int, mill-indirizz IP $1) għamel rikjesta sabiex jingħata password Ä¡dida sabiex jaċċessa l-{{SITENAME}} ($4). L-{{PLURAL:$3|utent assoċjat|utenti assoċjati}} ma' dan l-indirizz elettroniku {{PLURAL:$3|huwa|huma}}:\n\n$2\n\n{{PLURAL:$3|Din il-password temporanja se tiskadi|Dawn il-passwords temporanji se jiskadu}} fi żmien {{PLURAL:$5|Ä¡urnata|$5 jum}}. Inti għadek tidħol fil-kont tiegħek u tagħżel password Ä¡dida issa. Jekk xi ħadd ieħor għamel din ir-rikjesta, jew jekk ftakart il-password oriÄ¡inali, u m'għadekx trid tbiddilha, inti tista' tinjora dan il-messaÄ¡Ä¡ u tibqa' tuża' l-password il-qadima.", @@ -870,8 +868,6 @@ "saveprefs": "Salva l-preferenzi", "restoreprefs": "Irkupra l-konfigurazzjoni oriÄ¡inali (fis-sezzjonijiet kollha)", "prefs-editing": "Modifiki", - "rows": "Fillieri:", - "columns": "Kolonni:", "searchresultshead": "Fittex", "stub-threshold": "Valur minimu għall-<a href=\"#\" class=\"stub\">ħoloq għall-abozzi</a>, f'bytes:", "stub-threshold-disabled": "Diżattivat", @@ -961,11 +957,8 @@ "userrights-reason": "RaÄ¡uni:", "userrights-no-interwiki": "M'għandekx permess tagħmel modifiki fid-drittijiet tal-utenti fuq siti oħrajn.", "userrights-nodatabase": "Id-Database $1 ma jeżistix jew inkella mhux database lokali.", - "userrights-nologin": "Sabiex tkun tista' tagħti drittijiet lill-utenti hemm bżonn li [[Special:UserLogin|tidħol]] bħala amministratur.", - "userrights-notallowed": "Il-kont tiegħek m'għandux il-permessi neċessarji li jżid jew ineħħi drittijiet tal-utent.", "userrights-changeable-col": "Gruppi li tista' tbiddel", "userrights-unchangeable-col": "Gruppi li ma tistax tbiddel", - "userrights-removed-self": "Neħħejt b'suċċess id-drittijiet tiegħek. B'hekk, m'għadekx tista' taċċessa din il-paÄ¡na.", "group": "Grupp:", "group-user": "Utenti", "group-autoconfirmed": "Utenti konfermati awtomatikament", @@ -1054,7 +1047,6 @@ "right-siteadmin": "Agħlaq u iftaħ id-database", "right-override-export-depth": "Jesporta paÄ¡ni li jinkludu paÄ¡ni b'ħoloq sa fond ta' 5", "right-sendemail": "Jibgħat ittri-e lil utenti oħra", - "right-passwordreset": "Jara l-messaÄ¡Ä¡i tal-impostazzjoni mill-Ä¡did tal-password", "right-managechangetags": "Joħloq u jħassar [[Special:Tags|tikketti]] mid-''database''", "right-applychangetags": "Japplika [[Special:Tags|tikketti]] flimkien mal-modifiki tiegħu", "right-changetags": "Iżid u jneħħi [[Special:Tags|tikketti]] partikulari f'reviżjonijiet u f'daħliet fir-reÄ¡istru", @@ -1230,7 +1222,7 @@ "uploaddisabledtext": "It-tlugħ ta' fajls mhuwiex attiv.", "php-uploaddisabledtext": "It-tlugħ tal-fajls permezz tal-PHP huwa diżattivat. Iċċekkja l-konfigurazzjoni ta' file_uploads.", "uploadscripted": "Dan il-fajl fih kodiċi ta' ''HTML'' u ''script'' li jista' jkun interpretat hażin mill-''web browser''.", - "uploadscriptednamespace": "Il-fajl SVG jinkludi spazju tal-isem \"$1\" li mhuwiex permess.", + "uploadscriptednamespace": "Il-fajl SVG jinkludi spazju tal-isem \"<nowiki>$1</nowiki>\" li mhuwiex permess.", "uploadinvalidxml": "L-XML fil-fajl imtella' ma setax jiÄ¡i analizzat.", "uploadvirus": "Dan il-fajl huwa infettat b'virus! Dettalji: $1", "uploadjava": "Il-fajl huwa fajl ZIP li jinkludi fajl .class tal-Java.\nIt-tlugħ ta' fajls tal-Java mhuwiex permess, minħabba li jistgħu jaqbżu restrizzjonijiet ta' sigurtà.", @@ -3029,40 +3021,12 @@ "feedback-useragent": "AÄ¡ent tal-utent:", "searchsuggest-search": "Fittex", "searchsuggest-containing": "li tinkludi...", - "api-error-badaccess-groups": "Mintix permess li ttella' fajls fuq din il-wiki.", "api-error-badtoken": "Å»ball intern: <em>Token</em> ħażin.", - "api-error-copyuploaddisabled": "It-tlugħ ta' fajls bl-użu tal-URL mhuwiex permess fuq dan is-server.", - "api-error-duplicate": "Hemm {{PLURAL:$1|fajl ieħor|xi fajls oħra}} diġà fuq dan is-sit bl-istess kontenut.", - "api-error-empty-file": "Il-fajl li bgħatt kien vojt.", "api-error-emptypage": "Mhuwiex permess il-ħolqien ta' paÄ¡na Ä¡dida vojta.", - "api-error-fetchfileerror": "Å»ball intern: Kien hemm problema waqt il-kisba tal-fajl.", - "api-error-fileexists-forbidden": "Fajl bl-isem \"$1\" diġà jeżisti, u ma jistax jiÄ¡i miktub fuqu.", - "api-error-fileexists-shared-forbidden": "Fajl bl-isem \"$1\" diġà jeżisti fir-repożitorju maqsum u ma jistax jiÄ¡i miktub fuqu.", - "api-error-file-too-large": "Il-fajl magħżul huwa wisq kbir.", - "api-error-filename-tooshort": "L-isem tal-fajl huwa qasir wisq.", - "api-error-filetype-banned": "It-tip ta' fajl mhuwiex aċċettat.", - "api-error-filetype-missing": "L-isem tal-fajl jonqsu l-estensjoni.", - "api-error-http": "Å»ball intern: Mhuwiex possibbli li taqbad mas-server.", - "api-error-illegal-filename": "L-isem tal-fajl mhuwiex permess.", - "api-error-internal-error": "Å»ball intern: Xi ħaÄ¡a marret ħażina fl-ipproċessar tat-tlugħ tiegħek fuq din il-wiki.", - "api-error-invalid-file-key": "Å»ball intern: Il-fajl ma nstabx fil-ħażna temporanja.", - "api-error-missingparam": "Å»ball intern: Parametri tar-rikjesta nieqsa.", - "api-error-missingresult": "Å»ball intern: Mhuwiex magħruf jekk il-kopja rnexxietx.", - "api-error-mustbeloggedin": "Trid tkun fil-kont tiegħek sabiex ittella' fajls.", - "api-error-mustbeposted": "Å»ball intern: Ir-rikjesta għandha bżonn tal-HTTP POST.", - "api-error-noimageinfo": "It-tlugħ tal-fajl irnexxa, imma s-server ma ta lura l-ebda informazzjoni dwar il-fajl.", - "api-error-ok-but-empty": "Å»ball intern: L-ebda rispons mis-server.", - "api-error-overwrite": "Li tikteb fuq fajl diġà eżistenti mhuwiex permess.", - "api-error-stashfailed": "Å»ball intern: Is-server falla milli jżomm fajl temporanju.", "api-error-publishfailed": "Å»ball intern: Is-server falla milli jippubblika l-fajl temporanju.", - "api-error-timeout": "Is-server ma tax risposta lura fil-ħin previst.", - "api-error-unclassified": "Inqala żball mhux magħruf.", - "api-error-unknown-code": "Å»ball mhux magħruf: \"$1\".", - "api-error-unknown-error": "Å»ball intern: Xi ħaÄ¡a marret ħażin fit-tlugħ tal-fajl.", + "api-error-stashfailed": "Å»ball intern: Is-server falla milli jżomm fajl temporanju.", "api-error-unknown-warning": "Avviż mhux magħruf: \"$1\".", "api-error-unknownerror": "Å»ball mhux magħruf: \"$1\"", - "api-error-uploaddisabled": "It-tlugħ ta' fajls mhuwiex attivat fuq din il-wiki.", - "api-error-verification-error": "Dan il-fajl jista' jkun imħassar, jew għandu l-estensjoni l-ħażina.", "duration-seconds": "$1 {{PLURAL:$1|sekonda|sekondi}}", "duration-minutes": "$1 {{PLURAL:$1|minuta|minuti}}", "duration-hours": "$1 {{PLURAL:$1|siegħa|sigħat}}", diff --git a/languages/i18n/my.json b/languages/i18n/my.json index 792749347e..1555a31573 100644 --- a/languages/i18n/my.json +++ b/languages/i18n/my.json @@ -57,9 +57,9 @@ "tog-watchlisthideown": "ကျွန်ုပ်၏ တည်းဖြတ်မှုများကို စောင့်ကြည့်စာရင်းမှ ဝှက်ထားရန်", "tog-watchlisthidebots": "ဘော့တည်းဖြတ်မှုများကို စောင့်ကြည့်စာရင်းမှ ဝှက်ထားရန်", "tog-watchlisthideminor": "အရေးမကြီးသော တည်းဖြတ်မှုများကို စောင့်ကြည့်စာရင်းမှ ဝှက်ထားရန်", - "tog-watchlisthideliu": "စောင့်ကြည့်စာရင်းမှ loggin ဝင်ထားသော အသုံးပြုသူတို့၏ တည်းဖြတ်မှုများကို ဝှက်ရန်", + "tog-watchlisthideliu": "စောင့်ကြည့်စာရင်းမှ log in ဝင်ထားသော အသုံးပြုသူတို့၏ တည်းဖြတ်မှုများကို ဝှက်ရန်", "tog-watchlisthideanons": "စောင့်ကြည့်စာရင်းမှ အမည်မသိ အသုံးပြုသူများ၏ တည်းဖြတ်မှုများကို ဝှက်ရန်", - "tog-watchlisthidepatrolled": "patrolled တည်းဖြတ်မှုများကို စောင့်ကြည့်စာရင်းမှ ဝှက်ထားရန်", + "tog-watchlisthidepatrolled": "စောင့်ကြည့်စစ်ဆေးထားသော တည်းဖြတ်မှုများကို စောင့်ကြည့်စာရင်းမှ ဝှက်ထားရန်", "tog-watchlisthidecategorization": "စာမျက်နှာများ၏ ကဏ္ဍကို ဝှက်ရန်", "tog-ccmeonemails": "ကျွန်ုပ် အခြားအသုံးပြုသူများထံပို့သော အီးမေးမိတ္တူကို ကျွန်ုပ်ထံ ပြန်ပို့ရန်", "tog-diffonly": "ကွဲပြားမှုများအောက်ရှိ စာမျက်နှာတွင်ပါဝင်သည်များကို မပြပါနှင့်", @@ -168,7 +168,7 @@ "and": " နှင့်", "qbfind": "ရှာပါ", "qbbrowse": "ရှာဖွေလှန်လှောရန်", - "qbedit": "ပြင်​ဆင်​ရန်​", + "qbedit": "ပြင်ဆင်ရန်", "qbpageoptions": "ဤစာမျက်နှာ", "qbmyoptions": "ကျွန်ုပ် စာမျက်နှာများ", "faq": "မေးလေ့ရှိကြသည်များ", @@ -183,8 +183,8 @@ "help": "အ​ကူ​အ​ညီ​", "search": "ရှာဖွေရန်", "searchbutton": "ရှာဖွေရန်", - "go": "သွား​ပါ​", - "searcharticle": "သွား​ပါ​", + "go": "သွားပါ", + "searcharticle": "သွားပါ", "history": "စာမျက်နှာ ရာဇဝင်", "history_short": "ရာဇဝင်", "updatedmarker": "နောက်ဆုံးကြည့်ပြီးသည့်နောက်ပိုင်း တည်းဖြတ်ထားသည်။", @@ -193,8 +193,9 @@ "print": "ပရင့်", "view": "ကြည့်ရန်", "view-foreign": "$1 တွင် ကြည့်ရန်", - "edit": "ပြင်​ဆင်​ရန်​", + "edit": "ပြင်ဆင်ရန်", "create": "စတင်ရေးသားရန်", + "create-local": "ဒေသတွင်း ဖော်ပြချက် ထည့်ရန်", "editthispage": "ဤစာမျက်နှာကို ပြင်ရန်", "create-this-page": "ဤစာမျက်နှာကို စတင်ရေးသားရန်", "delete": "ဖျက်​ပါ​", @@ -249,10 +250,10 @@ "currentevents-url": "Project:လက်ရှိဖြစ်ရပ်များ", "disclaimers": "သတိပြုစရာများ", "disclaimerpage": "Project: အထွေထွေ သတိပြုဖွယ်", - "edithelp": "ပြင်​ဆင်​ရန် အ​ကူ​အ​ညီ​", + "edithelp": "တည်းဖြတ်ခြင်း အကူအညီ", "helppage-top-gethelp": "အကူအညီ", "mainpage": "ဗဟိုစာမျက်နှာ", - "mainpage-description": "ဗ​ဟို​စာ​မျက်​နှာ​", + "mainpage-description": "ဗဟိုစာမျက်နှာ", "policy-url": "Project:မူဝါဒ", "portal": "ပေါင်းကူးနေရာ", "portal-url": "Project:ပေါင်းကူးနေရာ", @@ -270,10 +271,10 @@ "newmessageslinkplural": "{{PLURAL:$1|စာလွှာအသစ် တစ်စောင်|999=စာလွှာ အသစ်များ}}", "newmessagesdifflinkplural": "နောက်ဆုံး {{PLURAL:$1|ပြောင်းလဲမှု|999=ပြောင်းလဲမှုများ}}", "youhavenewmessagesmulti": "$1 မှာ စာတိုအသစ်များ ရှိသည်", - "editsection": "ပြင်​ဆင်​ရန်​", - "editold": "ပြင်​ဆင်​ရန်​", + "editsection": "ပြင်ဆင်ရန်", + "editold": "ပြင်ဆင်ရန်", "viewsourceold": "ရင်းမြစ်ကို ကြည့်ရန်", - "editlink": "ပြင်​ဆင်​ရန်", + "editlink": "ပြင်ဆင်ရန်", "viewsourcelink": "ရင်းမြစ်ကို ကြည့်ရန်", "editsectionhint": "ဤအပိုင်းကို တည်းဖြတ်ရန် - $1", "toc": "မာတိကာ", @@ -440,6 +441,7 @@ "retypenew": "စကားဝှက် အသစ်ကို ထပ်ရိုက်ပါ -", "resetpass_submit": "စကားဝှက်ကို သတ်မှတ်ပြီးနောက် Log in ဝင်ရန်", "changepassword-success": "သင့်စကားဝှက်ကို ပြောင်းလဲပြီးပါပြီ!", + "botpasswords": "ဘော့ စကားဝှက်များ", "botpasswords-label-appid": "ဘော့အမည်-", "botpasswords-label-create": "ဖန်တီး", "botpasswords-label-cancel": "မလုပ်တော့ပါ", @@ -626,6 +628,7 @@ "showhideselectedversions": "ရွေးချယ်ထားသော မူများကို ပြရန်/ဝှက်ရန်", "editundo": "နောက်ပြန် ပြန်ပြင်ရန်", "diff-empty": "(ကွဲပြားမှု မရှိ)", + "diff-multi-sameuser": "(တူညီသော အသုံးပြုသူ၏ {{PLURAL:$1|အလယ်ကြား မူတစ်ခု|အလယ်ကြား မူများ $1 ခု}} အား ပြသမထားပါ)", "searchresults": "ရှာဖွေမှု ရလဒ်များ", "searchresults-title": "\"$1\" အတွက် ရှာတွေ့သည့် ရလဒ်များ", "titlematches": "စာမျက်နှာခေါင်းစဉ်ကိုက်ညီသည်", @@ -663,6 +666,7 @@ "searchall": "အားလုံး", "showingresults": "№<strong>$2</strong> နှင့်စသော ရလဒ် {{PLURAL:$1|<strong>1</strong> ခု|<strong>$1</strong> ခု}}ထိကို အောက်တွင် ပြထားသည်။", "showingresultsinrange": "№<strong>$2</strong> မှ #<strong>$3</strong> အထိ ရလဒ် {{PLURAL:$1|<strong>1</strong> ခု|<strong>$1</strong> ခု}}ထိကို အောက်တွင် ပြထားသည်။", + "search-showingresults": "{{PLURAL:$4|<strong>$3</strong> ၏ <strong>$1</strong> ရလဒ်|<strong>$3</strong> ၏ <strong>$1 - $2</strong> ရလဒ်များ}}", "search-nonefound": "စုံစမ်းမှုနှင့်ကိုက်ညီသော ရလဒ်မရှိပါ။", "powersearch-legend": "အထူးပြု ရှာဖွေရန်", "powersearch-ns": "အမည်ညွှန်းတို့တွင် ရှာရန် -", @@ -874,6 +878,7 @@ "recentchanges-label-bot": "ဤတည်းဖြတ်မှုကို ဘော့က လုပ်ဆောင်သွားသည်။", "recentchanges-label-unpatrolled": "ဤတည်းဖြတ်မှုကို မစောင့်ကြပ်မစစ်ဆေးရသေးပါ", "recentchanges-label-plusminus": "စာမျက်နှာ အရွယ်အစားမှာ အောက်ပါ ဘိုက်ပမာဏ ပြောင်းလဲသွားခဲ့သည်", + "recentchanges-legend-heading": "<strong>အညွှန်း:</strong>", "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} ([[Special:NewPages|စာမျက်နှာသစ်များ စာရင်း]]ကိုလည်း ကြည့်ရန်)", "recentchanges-submit": "ပြသရန်", "rcnotefrom": "အောက်ပါတို့မှာ <strong>$3၊ $4</strong> မှစ၍ {{PLURAL:$5|ပြောင်းလဲမှု|ပြောင်းလဲမှုများ}} ဖြစ်သည် (<strong>$1</strong> အထိ ပြထား)။", @@ -961,6 +966,7 @@ "tmp-create-error": "ယာယီဖိုင် မဖန်တီးနိုင်ပါ။", "tmp-write-error": "ယာယီဖိုင်ရေးသားရာတွင် အမှားဖြစ်ပေါ်နေသည်။", "largefileserver": "ဤဖိုင်သည် ဆာဗာတွင် ခွင့်ပြုရန်သတ်မှတ်ထားသော ဖိုင်အရွယ်အစားထက် ကြီးနေသည်။", + "file-exists-duplicate": "ဤဖိုင်သည် အောက်ပါ {{PLURAL:$1|ဖိုင်|ဖိုင်များ}}၏ ထပ်တူပုံပွား ဖြစ်သည် -", "uploadwarning": "Upload တင်ရာတွင် သတ်ပေးချက်", "savefile": "ဖိုင်သိမ်းရန်", "uploaddisabled": "Upload တင်ခြင်း ပိတ်ထားသည်။", @@ -1044,9 +1050,11 @@ "download": "ဒေါင်းလုဒ်", "unwatchedpages": "မစောင့်ကြည့်တော့သော စာမျက်နှာများ", "listredirects": "ပြန်ညွှန်းသည့် လင့်များစာရင်း", + "listduplicatedfiles": "ထပ်တူပုံပွားဖိုင်များ စာရင်း", "unusedtemplates": "မသုံးသော တမ်းပလိတ်များ", - "unusedtemplateswlh": "အခြားလိပ်စာများ", - "randompage": "ကျ​ပန်း​စာ​မျက်​နှာ​", + "unusedtemplateswlh": "အခြားလင့်ခ်များ", + "randompage": "ကျပန်းစာမျက်နှာ", + "randomincategory": "ကဏ္ဍတွင်းရှိ ကျပန်း စာမျက်နှာ", "randomincategory-category": "ကဏ္ဍ:", "randomredirect": "ကျပန်းပြန်ညွှန်း", "randomredirect-nopages": "အမည်ညွှန်း \"$1\" တွင် ပြန်ညွှန်းမရှိပါ။", @@ -1068,7 +1076,7 @@ "double-redirect-fixed-move": "[[$1]] ကို ရွှေ့ပြောင်းပြီးဖြစ်သည်။ ၎င်းအား အလိုအလျောက် ပြင်ဆင်ပြီး [[$2]] သို့ ပြန်ညွှန်းထားသည်။", "brokenredirects": "ကျိုးပျက်နေသော ပြန်ညွှန်းများ", "brokenredirectstext": "အောက်ပါ ပြန်ညွှန်းများသည် မရှိသောစာမျက်နှာများသို့ လင့်ထားသည် -", - "brokenredirects-edit": "ပြင်​ဆင်​ရန်", + "brokenredirects-edit": "ပြင်ဆင်ရန်", "brokenredirects-delete": "ဖျက်​ပါ", "withoutinterwiki": "ဘာသာစကားလင့်မပါသော စာမျက်နှာများ", "withoutinterwiki-summary": "အောက်ပါစာမျက်နှာများသည် အခြားဘာသာစကားဗားရှင်းများသို့ လင့်မထားပါ။", @@ -1135,7 +1143,7 @@ "allpagesto": "ဤသည်တွင်ဆုံးသော စာမျက်နှာများကို ပြရန် -", "allarticles": "စာမျက်နှာအားလုံး", "allinnamespace": "စာမျက်နှာအားလုံး (အမည်ညွှန်း $1)", - "allpagessubmit": "သွား​ပါ​", + "allpagessubmit": "သွားပါ", "allpages-hide-redirects": "ပြန်ညွှန်းများအား ဝှက်ရန်", "categories": "ကဏ္ဍများ", "categories-submit": "ပြသရန်", @@ -1154,6 +1162,7 @@ "listusers-blocked": "(ပိတ်ပင်ထားသည်)", "activeusers": "တက်ကြွလှုပ်ရှားသည့် အသုံးပြုသူစာရင်း", "activeusers-intro": "ဤသည်မှာ နောက်ဆုံး $1 {{PLURAL:$1|ရက်|ရက်}}အတွင်း တက်ကြွလှုပ်ရှားသည့် အသုံးပြုသူများ စာရင်း ဖြစ်သည်။", + "activeusers-count": "{{PLURAL:$3|ရက်|$3 ရက်}}အတွင်း {{PLURAL:$1|လုပ်ဆောင်မှု|လုပ်ဆောင်မှု}} $1 ခု", "activeusers-from": "ဤမှစသော အသုံးပြုသူများကို ပြရန် -", "activeusers-noresult": "အသုံးပြုသူ မတွေ့ပါ။", "listgrouprights": "အသုံးပြုသူအုပ်စု အခွင့်အရေးများ", @@ -1165,6 +1174,7 @@ "listgrouprights-addgroup-self-all": "အုပ်စုအားလုံးကို မိမိ၏အကောင့်သို့ ပေါင်းထည့်ရန်", "listgrouprights-removegroup-self-all": "မိမိ၏အကောင့်မှ အုပ်စုအားလုံးကို ဖယ်ရှားရန်", "trackingcategories": "နောက်ယောင်ခံ ကဏ္ဍများ", + "trackingcategories-msg": "နောက်ယောင်ခံ ကဏ္ဍ", "mailnologin": "ပို့ရန်လိပ်စာ မရှိပါ", "emailuser": "ဤ​အ​သုံး​ပြု​သူ​အား​ အီး​မေး​ပို့​ပါ​", "emailuser-title-target": "{{GENDER:$1|အသုံးပြုသူ}}ကို အီးမေးပို့ရန်", @@ -1269,7 +1279,7 @@ "minimum-size": "အသေးဆုံးအရွယ်အစား", "maximum-size": "အကြီးဆုံးအရွယ်အစား -", "pagesize": "(ဘိုက်)", - "restriction-edit": "ပြင်​ဆင်​ရန်​", + "restriction-edit": "ပြင်ဆင်ရန်", "restriction-move": "ရွှေ့ရန်", "restriction-create": "ထွင်", "restriction-upload": "Upload တင်ရန်", @@ -1294,6 +1304,7 @@ "invert": "ရွေးချယ်ထားခြင်းကို ပြောင်းပြန်လှန်ရန်", "tooltip-invert": "ဤအကွက်ကို အမှန်ခြစ်၍ ရွေးချယ်ထားသော အမည်ညွှန်း (နှင့် ဆက်စပ်အမည်ညွှန်း)တွင် ပြောင်းလဲမှုများကို ဝှက်ပါ။", "namespace_association": "ဆက်စပ်နေသော အမည်ညွှန်း", + "tooltip-namespace_association": "ရွေးချယ်ထားသည့် အမည်ညွှန်းနှင့် ဆက်စပ်နေသည့် ဆွေးနွေးချက် သို့မဟုတ် အကြောင်းအရာ အမည်ညွှန်း ပါဝင်စေရန် ဤအကွက်တွင် အမှန်ခြစ်ရန်", "blanknamespace": "(ပင်မ)", "contributions": "{{GENDER:$1|အသုံးပြုသူ}}၏ ဆောင်ရွက်ချက်များ", "contributions-title": "$1 အတွက် အသုံးပြုသူ၏ ဆောင်ရွက်ချက်များ", @@ -1318,9 +1329,9 @@ "sp-contributions-hideminor": "အရေးမကြီးသော တည်းဖြတ်မှုများကို ဝှက်ရန်", "sp-contributions-submit": "ရှာဖွေရန်", "whatlinkshere": "ဘယ်ကလင့်ခ်ထားလဲ", - "whatlinkshere-title": "\"$1\" ကို လင့်ထားသော စာမျက်နှာများ", + "whatlinkshere-title": "\"$1\" သို့ ချိတ်ဆက်ထားသော စာမျက်နှာများ", "whatlinkshere-page": "စာမျက်နှာ -", - "linkshere": "အောက်ပါစာမျက်နှာများသည် '''[[:$1]]''' သို့ လင့်ထားသည် -", + "linkshere": "အောက်ပါစာမျက်နှာများသည် <strong>[[:$1]]</strong> သို့ ချိတ်ဆက်ထားသည် -", "nolinkshere": "'''[[:$1]]''' သို့ လင့်ထားသော စာမျက်နှာ မရှိပါ။", "isredirect": "ပြန်ညွှန်းသော စာမျက်နှာ", "istemplate": "ထည့်သွင်းကူးယူချက်", @@ -1391,13 +1402,13 @@ "ipb_already_blocked": "\"$1\" ကို ပိတ်ပင်ထားပြီး ဖြစ်သည်။", "ipb-needreblock": "$1 ကို ပိတ်ပင်ထားပြီး ဖြစ်သည်။ အပြင်အဆင်များကို ပြောင်းလဲလိုပါသလား?", "move-page": "$1 ကို ရွှေ့ရန်", - "move-page-legend": "စာ​မျက်​နှာ​ကို ရွှေ့ပြောင်းရန်", + "move-page-legend": "စာမျက်နှာကို ရွှေ့ပြောင်းရန်", "movepagetext": "အောက်ပါပုံစံကို အသုံးပြုခြင်းသည် စာမျက်နှာကို အမည်ပြောင်းလဲပေးမည် ဖြစ်ပြီး အမည်သစ်သို့ ယင်း၏ မှတ်တမ်းနှင့်တကွ ရွှေ့ပေးမည် ဖြစ်သည်။\nအမည်ဟောင်းသည် အမည်သစ်သို့ ပြန်ညွှန်းစာမျက်နှာ ဖြစ်လာမည်။\nသင်သည် မူလခေါင်းစဉ်သို့ ပြန်ညွှန်းများကို အလိုအလျောက် အပ်ဒိတ် update လုပ်နိုင်သည်။\nအကယ်၍ မပြုလုပ်လိုပါက [[Special:DoubleRedirects|နှစ်ဆင့်ပြန်ညွှန်းများ]] သို့မဟုတ် [[Special:BrokenRedirects|ပြန်ညွှန်း အပျက်များ]] ကို မှတ်သားရန် မမေ့ပါနှင့်။\nလင့်များ ညွှန်းလိုသည့် နေရာသို့ ညွှန်ပြနေရန် သင့်တွင် တာဝန် ရှိသည်။\n\nအကယ်၍ ခေါင်းစဉ်အသစ်တွင် စာမျက်နှာတစ်ခု ရှိနှင့်ပြီး ဖြစ်ပါက (သို့) ယင်းစာမျက်နှာသည် အလွတ်မဖြစ်ပါက (သို့) ပြန်ညွှန်းတစ်ခု မရှိပါက (သို့) ယခင်က ပြုပြင်ထားသော မှတ်တမ်း မရှိပါက စာမျက်နှာသည် <strong>ရွေ့မည်မဟုတ်</strong> သည်ကို သတိပြုပါ။ \nဆိုလိုသည်မှာ သင်သည် အမှားတစ်ခု ပြုလုပ်မိပါက စာမျက်နှာကို ယခင်အမည်ကို ပြန်လည် ပြောင်းလဲပေးနိုင်သည်။ ရှိပြီသားစာမျက်နှာတစ်ခုကို စာမျက်နှာ အသစ်နှင့် ပြန်အုပ် overwrite ခြင်း မပြုနိုင်။\n\n<strong>မှတ်ချက်။</strong>\nဤသည်မှာ လူဖတ်များသော စာမျက်နှာတစ်ခုဖြစ်ပါက မမျှော်လင့်ထားသော၊ ကြီးမားသော အပြောင်းအလဲတစ်ခု ဖြစ်ပေါ်လာနိုင်သည်။\nထို့ကြောင့် ဆက်လက် မဆောင်ရွက်မီ သင်သည် နောက်ဆက်တွဲ အကျိုးဆက်များကို နားလည်ကြောင်း ကျေးဇူးပြု၍ သေချာပါစေ။", "movepagetext-noredirectfixer": "အောက်ပါပုံစံကို အသုံးပြုခြင်းသည် စာမျက်နှာကို အမည်ပြောင်းလဲပေးမည် ဖြစ်ပြီး အမည်သစ်သို့ ယင်း၏ မှတ်တမ်းနှင့်တကွ ရွှေ့ပေးမည် ဖြစ်သည်။\n[[Special:DoubleRedirects|နှစ်ဆင့်ပြန်ညွှန်းများ]] သို့မဟုတ် [[Special:BrokenRedirects|ပြန်ညွှန်း အပျက်များ]] ကို စစ်ဆေးရန် မမေ့ပါနှင့်။\nလင့်ခ်များ ညွှန်းလိုသည့် နေရာသို့ ညွှန်ပြနေရန် သင့်တွင် တာဝန် ရှိသည်။\n\nအကယ်၍ ခေါင်းစဉ်အသစ်တွင် စာမျက်နှာတစ်ခု ရှိနေနှင့်ပြီး ပြန်ညွှန်းတစ်ခု မရှိပါက သို့မဟုတ် ယခင်က ပြုပြင်ထားသော မှတ်တမ်း ရှိနေပါက စာမျက်နှာသည် <strong>ရွေ့မည်မဟုတ်</strong> သည်ကို သတိပြုပါ။ \nဆိုလိုသည်မှာ သင်သည် အမှားတစ်ခု ပြုလုပ်မိပါက စာမျက်နှာကို ယခင်အမည်ကို ပြန်လည် ပြောင်းလဲပေးနိုင်သည်။ ရှိပြီသားစာမျက်နှာတစ်ခုကို စာမျက်နှာ အသစ်နှင့် ပြန်အုပ် overwrite ခြင်း မပြုနိုင်။\n\n<strong>မှတ်ချက်။</strong>\nဤသည်မှာ လူဖတ်များသော စာမျက်နှာတစ်ခုဖြစ်ပါက မမျှော်လင့်ထားသော၊ ကြီးမားသော အပြောင်းအလဲတစ်ခု ဖြစ်ပေါ်လာနိုင်သည်။\nထို့ကြောင့် ဆက်လက် မဆောင်ရွက်မီ သင်သည် နောက်ဆက်တွဲ အကျိုးဆက်များကို နားလည်ကြောင်း ကျေးဇူးပြု၍ သေချာပါစေ။", "movepagetalktext": "ဤအကွက်ကို အမှန်ခြစ်လိုက်ခြင်းဖြင့် ဗလာမဟုတ်သော ဆွေးနွေးချက်စာမျက်နှာသည် ရှိနှင့်ပြီး မဟုတ်လျှင် ဆက်နွယ်နေသော ဆွေးနွေးချက် စာမျက်နှာကို ခေါင်းစဉ်အသစ်သို့ အလိုအလျောက် ရွှေ့ပစ်မည် ဖြစ်သည်။\n\nဤကိစ္စရပ်တွင် သင် ဆန္ဒရှိလျှင် စာမျက်နှာကို မိမိကိုယ်တိုင် သွားရောက်ရွှေ့ပြောင်း ပေါင်းစပ်နိုင်သည်။", "newtitle": "ခေါင်းစဉ်အသစ်:", "move-watch": "မူရင်းစာမျက်နှာနှင့် ဦးတည်ထားသော စာမျက်နှာတို့ကို စောင့်ကြည့်ရန်", - "movepagebtn": "စာ​မျက်​နှာ​ကို ရွှေ့ပြောင်းရန်", + "movepagebtn": "စာမျက်နှာကို ရွှေ့ပြောင်းရန်", "pagemovedsub": "ပြောင်းရွှေ့ခြင်းအောင်မြင်သည်", "movepage-moved": "'''\"$1\" ကို \"$2\" သို့ ရွှေ့ပြီးဖြစ်သည်'''", "movepage-moved-redirect": "ပြန်ညွှန်းတစ်ခုကို ဖန်တီးပြီးဖြစ်သည်။", @@ -1506,6 +1517,7 @@ "tooltip-preferences-save": "ရေးချယ်စရာများကို သိမ်းရန်", "tooltip-summary": "အတိုချုပ်ထည့်ရန်", "others": "အခြား", + "simpleantispam-label": "Anti-spam စစ်ဆေးခြင်း။\nဤအရာအား <strong>မဖြည့်ပါနှင့်</strong>!", "pageinfo-language": "စာမျက်နှာ စာကိုယ် ဘာသာစကား", "pageinfo-toolboxlink": "စာမျက်နှာ အချက်အလက်များ", "markaspatrolleddiff": "စောင့်ကြပ်စစ်ဆေးပြီးကြောင်း မှတ်သားရန်", @@ -1519,6 +1531,7 @@ "show-big-image": "မူရင်းဖိုင်", "show-big-image-preview": "ဤနမူနာ၏ အရွယ်အစား - $1။", "show-big-image-other": "အခြား {{PLURAL:$2|ပုံရိပ်ပြတ်သားမှု|ပုံရိပ်ပြတ်သားမှု}}: $1။", + "show-big-image-size": "$1 × $2 ပစ်ဇယ်", "newimages": "ပုံအသစ်များပြခန်း", "newimages-legend": "စိစစ်မှု", "newimages-label": "ဖိုင်အမည် (သို့ ယင်း၏အစိတ်အပိုင်း) -", @@ -1535,6 +1548,7 @@ "exif-imagewidth": "အကျယ်", "exif-imagelength": "အမြင့်", "exif-bitspersample": "အစိတ်အပိုင်းတစ်ခုတွင်ပါဝင်သော အပိုင်းငယ်များ", + "exif-orientation": "မျက်နှာပြင် အသားကျမှု", "exif-xresolution": "အလျားလိုက် ပုံရိပ်ပြတ်သားမှု", "exif-yresolution": "ဒေါင်လိုက် ပုံရိပ်ပြတ်သားမှု", "exif-datetime": "ဖိုင်အပြောင်းအလဲ ရက်စွဲနှင့် အချိန်", @@ -1551,6 +1565,7 @@ "exif-usercomment": "အသုံးပြုသူ မှတ်ချက်များ", "exif-relatedsoundfile": "ဆက်နွယ်သော အသံဖိုင်", "exif-datetimeoriginal": "ဒေတာဖန်တီးခဲ့သော နေ့စွဲနှင့် အချိန်", + "exif-datetimedigitized": "ဒီဂျစ်တယ်ပြောင်းသည့် နေ့ရက်နှင့် အချိန်", "exif-exposuretime-format": "$1 စက္ကန့် ($2)", "exif-shutterspeedvalue": "APEX ရှပ်တာ အမြန်နှုန်း", "exif-flash": "ဖလက်ရှ်", @@ -1596,14 +1611,14 @@ "confirm_purge_button": "အိုကေ", "imgmultipageprev": "← ပြီးခဲ့သော စာမျက်နှာ", "imgmultipagenext": "နောက်စာမျက်နှာ →", - "imgmultigo": "သွား​ပါ!", + "imgmultigo": "သွားပါ!", "imgmultigoto": "စာမျက်နှာ $1 ကို သွားရန်", "img-lang-default": "(ပင်မ ဘာသာစကား)", "table_pager_next": "နောက်စာမျက်နှာ", "table_pager_prev": "ပြီးခဲ့သော စာမျက်နှာ", "table_pager_first": "ပထမဆုံး စာမျက်နှာ", "table_pager_last": "နောက်ဆုံးစာမျက်နှာ", - "table_pager_limit_submit": "သွား​ပါ​", + "table_pager_limit_submit": "သွားပါ", "table_pager_empty": "မည်သည့်ရလဒ်မှ မရှိပါ", "autosumm-blank": "စာမျက်နှာကို ဗလာလုပ်လိုက်သည်", "autoredircomment": "စာမျက်နှာကို [[$1]] သို့ ပြန်ညွှန်းလိုက်သည်", @@ -1620,7 +1635,7 @@ "signature": "[[{{ns:user}}:$1|$2]] ([[{{ns:user_talk}}:$1|ဆွေးနွေး]])", "duplicate-defaultsort": "'''သတိပေးချက် -''' ပုံမှန် sort key \"$2\" oသည် ယခင်ပုံမှန်ဖြစ်သော sort key \"$1\" ကို override ထပ်ရေးမည်ဖြစ်သည်.", "version": "ဗားရှင်း", - "version-specialpages": "အ​ထူး ​စာ​မျက်​နှာ​များ", + "version-specialpages": "အထူး စာမျက်နှာများ", "version-other": "အခြား", "version-license": "မီဒီယာဝီကီ လိုင်စင်", "version-software": "သွင်းထားသော ဆော့ဝဲ", @@ -1629,7 +1644,8 @@ "fileduplicatesearch": "နှစ်ခုထပ်နေသောဖိုင်များကို ရှာရန်", "fileduplicatesearch-filename": "ဖိုင်အမည် -", "fileduplicatesearch-submit": "ရှာဖွေရန်", - "specialpages": "အ​ထူး ​စာ​မျက်​နှာ​များ", + "specialpages": "အထူး စာမျက်နှာများ", + "specialpages-note": "* ပုံမှန် အထူးစာမျက်နှာများ။\n* <span class=\"mw-specialpagerestricted\">ကန့်သတ်ထားသော အထူးစာမျက်နှာများ။</span>", "specialpages-group-maintenance": "ထိန်းသိမ်းမှု အစီရင်ခံချက်များ", "specialpages-group-other": "အခြားအထူးစာမျက်နှာများ", "specialpages-group-login": "Log in ဝင်ရန်/ အကောင့် ဖန်တီးရန်", @@ -1651,7 +1667,7 @@ "tag-list-wrapper": "([[Special:Tags|{{PLURAL:$1|စာတွဲ|စာတွဲများ}}]]: $2)", "tags-title": "အမည်တွဲ", "tags-tag": "အမည်တွဲ အမည်", - "tags-edit": "ပြင်​ဆင်​ရန်", + "tags-edit": "ပြင်ဆင်ရန်", "comparepages": "စာမျက်နှာများကို နှိုင်းယှဉ်ရန်", "compare-page1": "စာမျက်နှာတစ်", "compare-page2": "စာမျက်နှာနှစ်", @@ -1671,8 +1687,9 @@ "revdelete-unrestricted": "အက်ဒမင်များအတွက် ကန့်သတ်ချက်များကို ဖယ်ရှားရန်", "logentry-suppress-block": "{{GENDER:$4|$3}} အား $5 ကြာအောင် $1 က {{GENDER:$2|ပိတ်ပင်ခဲ့သည်}} $6", "logentry-move-move": "$3 စာမျက်နှာကို $4 သို့ $1က {{GENDER:$2|ရွှေ့ခဲ့သည်}}", - "logentry-move-move-noredirect": "$3 မှ $4 သို့ စာမျက်နှာကို ပြန်ညွှန်းချန်မထားပဲ $1 {{GENDER:$2|က ရွှေ့ခဲ့သည်}}", + "logentry-move-move-noredirect": "$3 မှ $4 သို့ စာမျက်နှာကို ပြန်ညွှန်းချန်မထားဘဲ $1 {{GENDER:$2|က ရွှေ့ခဲ့သည်}}", "logentry-move-move_redir": "$3 စာမျက်နှာကို $4 သို့ ပြန်ညွှန်းပေါ်ထပ်၍ $1 က {{GENDER:$2|ရွှေ့ခဲ့သည်}}", + "logentry-move-move_redir-noredirect": "$3 မှ $4 သို့ ပြန်ညွှန်ပေါ်ထပ်အုပ်ကာ ပြန်ညွှန်းချန်မထားဘဲ $1 က {{GENDER:$2|ရွှေ့ခဲ့သည်}}", "logentry-newusers-create": "အသုံးပြုသူအကောင့် $1 ကို {{GENDER:$2|ဖန်တီးခဲ့သည်}}", "logentry-newusers-autocreate": "အသုံးပြုသူအကောင့် $1 ကို အလိုအလျောက် {{GENDER:$2|ဖန်တီးခဲ့သည်}}", "logentry-upload-upload": "$1 သည် $3 ကို {{GENDER:$2|upload တင်ခဲ့သည်}}", @@ -1680,16 +1697,7 @@ "rightsnone": "(ဘာမှမရှိ)", "revdelete-summary": "အကျဉ်းချုပ်ကို တည်းဖြတ်ရန်", "searchsuggest-search": "{{SITENAME}} တွင် ရှာဖွေရန်", - "api-error-filename-tooshort": "ဖိုင်အမည်သည် တိုလွန်းသည်။", - "api-error-filetype-banned": "ဤဖိုင်အမျိုးအစားကို တားမြစ်ထားသည်။", - "api-error-http": "အတွင်းပိုင်းအမှား - ဆာဗာကို မဆက်သွယ်နိုင်ပါ။", - "api-error-illegal-filename": "ဖိုင်အမည်ကို ခွင့်မပြုပါ။", - "api-error-mustbeloggedin": "ဖိုင်တင်ရန် login ဝင်ထားရမည်။", - "api-error-ok-but-empty": "အတွင်းပိုင်းအမှား - ဆာဗာထံမှ တုံ့ပြန်မှု မရပါ။", - "api-error-unknown-code": "အမည်မသိ အမှား - \"$1\"", "api-error-unknown-warning": "အမည်မသိ သတိပေးချက် - $1", - "api-error-uploaddisabled": "ဤဝီကီတွင် ဖိုင်တင်ခြင်း ပိတ်ထားသည်။", - "api-error-verification-error": "ဖိုင်ပျက်နေသည် (သို့) ဖိုင်နောက်ဆက် extension မှားနေသည်။", "pagelanguage": "စာမျက်နှာ ဘာသာစကား ပြောင်းလဲရန်", "pagelang-name": "စာမျက်နှာ", "pagelang-language": "ဘာသာစကား", diff --git a/languages/i18n/nah.json b/languages/i18n/nah.json index 58efd6f298..ecff7b58f4 100644 --- a/languages/i18n/nah.json +++ b/languages/i18n/nah.json @@ -15,7 +15,7 @@ "Akapochtli" ] }, - "tog-underline": "Mokìnxòîkuilòtzàswis tzòwilistìn:", + "tog-underline": "Moquinxoihcuilotzazhuiz tzohuiliztin:", "tog-hideminor": "Motlàtìs tepỉtzìn tlayèktlàlilistli ìpan welok tlapảtlalistli", "tog-hidepatrolled": "Motlàtìs tlapîpialli tlayèktlàlilistli ìpan welok tlapảtlalistli", "tog-newpageshidepatrolled": "Mokintlàtis tlapîpialtlaìxtlapaltìn ìwikpa ìtlapòpòwaltekpànal in yâyankuik tlaìxtlapaltìn", @@ -124,7 +124,7 @@ "category-subcat-count-limited": "Inin {{PLURAL:$1|neneuhcayotl quipiya|$1 in tetoquilli tlani-neneuhcayotl|in tetoquiltin tlani-neneuhcayomeh}}.", "category-article-count": "{{PLURAL:$2|Inin neneuhcayotl zan quipiya in tetoquilli tlahcuilolli.|{{PLURAL:$1|In tetoquilli tlahcuilolli itech pohui|In tetoquiltin $1 tlahcuiloltin itech pohui}}, inin neneuhcayotl itech tlacecempohualoni ipan $2.}}", "category-article-count-limited": "InÄ«n {{PLURAL:$1|zāzanilli cah|$1 zāzanilli cateh}} inÄ«n neneuhcāyōc.", - "category-file-count": "{{PLURAL:$2|Inìn tlaìxmatkàyòtlàlilòtl san kipia|Inìn tlaìxmatkàyòtlalilòtl kimpia {{PLURAL:$1|inìn èwalli|inîke $1 èwaltìn}}, ìwikpa $2.}}", + "category-file-count": "{{PLURAL:$2|Inin neneuhcayotl zan quipiya|Inin neneuhcayotl quimpiya {{PLURAL:$1|inin ehualli|inihqueh $1 ehualtin}}, ihuicpa $2.}}", "category-file-count-limited": "{{PLURAL:$1|Inin tlahcuilolehualli kah|Inihqueh $1 tlahcuilolehualtin catehqueh}} ipan inin neneuhcayotl.", "listingcontinuesabbrev": "niman", "about": "Itechcopa", @@ -517,7 +517,6 @@ "prefs-resetpass": "Ticpatlāz motlahtōlichtacāyo", "saveprefs": "Xicpiya", "prefs-editing": "Tlapatlaliztli", - "rows": "Pāntli:", "searchresultshead": "Tlatemoliztli", "recentchangesdays": "Tōnaltin tiquinttāz yancuÄ«c tlapatlalizpan:", "localtime": "Cāhuitl nicān:", @@ -740,7 +739,7 @@ "withoutinterwiki": "Zāzaniltin ahtle tzonhuiliztli", "withoutinterwiki-submit": "Tiquittāz", "nbytes": "$1 {{PLURAL:$1|byte}}", - "ncategories": "$1 {{PLURAL:$1|tlaìxmatkàyòtlàlilòtl|tlaìxmatkàyòtlàlilòme}}", + "ncategories": "$1 {{PLURAL:$1|neneuhcayotl|neneuhcayomeh}", "nlinks": "$1 {{PLURAL:$1|tzohuililiztli|tzohuililiztin}}", "nmembers": "$1 {{PLURAL:$1|tlahcuilolamatl|tlahcuilolamameh}}", "nrevisions": "$1 {{PLURAL:$1|tlapiyaliztli}}", @@ -1155,17 +1154,9 @@ "rightsnone": "ahtlein", "revdelete-summary": "ticpatlāz tlahcuilōltōn", "searchsuggest-search": "Tlatemoliztli", - "api-error-ok-but-empty": "Tlâtek îtlakawilistli: Âmò tènankilia in tlatèmakani.", - "api-error-overwrite": "Awel motlâkuilnepanòltis sè èwalli tlèn yi katki.", "api-error-stashfailed": "Tlâtek îtlakawilistli: In tlatèmakani awel òkeuh in èwalpanòni.", - "api-error-timeout": "In tlatèmakani âmò òwalnàwat kèn òmochìxtikatka.", - "api-error-unclassified": "Òpanòk sè âmò ìxmatkàyo îtlakawilistli.", - "api-error-unknown-code": "Âmò ìxmatkàyo îtlakawilistli: \"$1\".", - "api-error-unknown-error": "Tlâtek îtlakawilistli: Îtlâtlèn òîtlakauh îkuàk òmonekià motilànas in èwalli.", "api-error-unknown-warning": "Âmò ìxmatkàyo tlanawatilistli: \"$1\".", "api-error-unknownerror": "Âmò ìxmatkàyo îtlakawilistli: \"$1\".", - "api-error-uploaddisabled": "Sèuhtok in êkawilistli ìpan inìn wiki.", - "api-error-verification-error": "Inìn èwalli welis îtlakauhtok, noso âmò kualli motzòwîtok.", "expand_templates_ok": "Cayecualli", "expand_templates_preview": "Xiquitta achtochÄ«hualiztli", "special-characters-group-latin": "Latintlahcuilolli", diff --git a/languages/i18n/nan.json b/languages/i18n/nan.json index 3d79d8c8da..858a91d96a 100644 --- a/languages/i18n/nan.json +++ b/languages/i18n/nan.json @@ -395,19 +395,12 @@ "externaldberror": "這可能是資料庫驗證錯誤,抑是無允准你改外部的口座。", "login": "Teng-ji̍p", "nav-login-createaccount": "Teng-ji̍p / khui sin kháu-chō", - "userlogin": "Teng-ji̍p / khui sin kháu-chō", - "userloginnocreate": "Teng-ji̍p", "logout": "Teng-chhut", "userlogout": "Teng-chhut", "notloggedin": "Bô teng-ji̍p", "userlogin-noaccount": "Káⁿ bô kháu-chō?", "userlogin-joinproject": "Ka-ji̍p {{SITENAME}}", - "nologin": "Bô kháu-chō thang teng-ji̍p? $1", - "nologinlink": "Khui 1 ê kháu-chō", "createaccount": "Khui sin kháu-chō", - "gotaccount": "Í-keng Å« kháu-chō? '''$1'''.", - "gotaccountlink": "Teng-ji̍p", - "userlogin-resetlink": "你敢袂記得你登入的資料?", "userlogin-resetpassword-link": "Bi̍t-bé boē-kì-tit?", "userlogin-helplink2": "Pang-chān goá teng-ji̍p", "userlogin-loggedin": "你已經用{{GENDER:$1|$1}}登入,用下跤的表,登入別个名。", @@ -418,7 +411,6 @@ "createacct-another-email-ph": "Phah lí--ê tiān-chú-phoe tē-chí", "createaccountmail": "Iōng chi̍t-ê lîm-sî loān-sò͘ sán-seng ê bi̍t-bé , kià khì goá chí-tēng ê tiān-chú-phoe tē-chí.", "createacct-realname": "真正的名", - "createaccountreason": "Lí-iû:", "createacct-reason": "理由:", "createacct-reason-ph": "為啥物你欲開一另外一个口座?", "createacct-submit": "Khui lí--ê kháu-chō", @@ -622,8 +614,6 @@ "prefs-misc": "Kî-thaⁿ ê siat-tēng", "saveprefs": "Pó-chûn siat-tēng", "prefs-editing": "Pian-chi̍p", - "rows": "Chōa:", - "columns": "Nôa", "searchresultshead": "Chhiau-chhōe kiat-kó ê siat-tēng", "recentchangesdays": "Hián-sÄ« kúi ji̍t chòe-kÄ«n ê kái-piàn:", "recentchangesdays-max": "siōng-choē $1 {{PLURAL:$1|kang|kang}}", @@ -901,7 +891,7 @@ "tooltip-invert": "勾起來的框;相關的名空間會先藏起來。", "namespace_association": "相關的名空間", "tooltip-namespace_association": "勾起來的框;相關的討論抑物件空間會包括入來", - "blanknamespace": "(Thâu-ia̍h)", + "blanknamespace": "(Chú-ia̍h)", "contributions": "{{GENDER:$1|Iōng-chiá}} ê kòng-hiàn", "contributions-title": "Iōng-chiá $1--ê kòng-hiàn", "mycontris": "Góa ê kòng-hiàn", @@ -1051,6 +1041,8 @@ "metadata-expand": "Hián-sÄ« iù-chiat", "metadata-collapse": "Am iù-chiat", "metadata-fields": "佇顯示圖片的頁,若掀開元資料,下跤的EXIF資料會儂看著。其他的元資料是先看無。\n* 廠商\n* 機型\n* 翕像的時陣\n* 曝光\n* 光圈\n* ISO 速率\n* 焦距\n* 作者\n* 版權\n* 說明\n* 緯度(GPS)\n* 經度(GPS)\n* 海拔(GPS)", + "exif-xresolution": "Chúi-pêⁿ kái-siōng-tō͘", + "exif-yresolution": "Sûi-ti̍t kái-siōng-tō͘", "exif-software": "Sú-iōng ê nńg-thé", "exif-colorspace": "Sek-chhái khong-kan", "namespacesall": "choân-pō·", diff --git a/languages/i18n/nap.json b/languages/i18n/nap.json index 5cb16cb45a..47d2bcf34e 100644 --- a/languages/i18n/nap.json +++ b/languages/i18n/nap.json @@ -572,8 +572,6 @@ "passwordreset-emaildisabled": "'E funzione e-mail songo state stutate dint'a sta wiki.", "passwordreset-username": "Nomme utente:", "passwordreset-domain": "Duminio:", - "passwordreset-capture": "Vulite vedé 'e cuntenute d' 'a mmasciata mail?", - "passwordreset-capture-help": "Si se seleziona sta cascia, 'a mmasciata e-mail (c' 'a password temporanea), se mmustarrà a vuje e poi pure se mannarrà a l'utente.", "passwordreset-email": "Indirizzo e-mail:", "passwordreset-emailtitle": "Dettaglie d' 'o cunto pe' {{SITENAME}}", "passwordreset-emailtext-ip": "Coccherun (può darse ca sì tu, cu n'indirizzo IP $1) ha addimannato na mmasciata c' 'a password nova pe' putè trasì a {{SITENAME}} ($4). {{PLURAL:$3|L'utente associato|L'utente associate}} a st'indirizze e-mail songo:\n\n$2\n\n{{PLURAL:$3|Sta password temporanea ammaturarrà|Sti password temporanee ammaturarranno}} aropp'a {{PLURAL:$5|nu juorno|$5 ghiuorne}}.\nHè 'a trasì e scegliere na password nova mò. \n\nSi nun sì stato tu a fà sta richiesta, o te sì scurdat' 'a password origginale e nun 'a buò cagnà cchiù, lassa perde sta mmasciata e usa 'a password viecchia.", @@ -581,8 +579,6 @@ "passwordreset-emailelement": "Nomme utente: \n$1\n\nPassword temporanea: \n$2", "passwordreset-emailsentemail": "Si chesto fosse nu cunto e-mail suoccio a 'o cunto vuost, allora buò dicere ca se mannarrà na mmasciata e-mail pe' riabbià 'a password.", "passwordreset-emailsentusername": "Si esistesse nu cunto e-mail suòccio a stu nomme utente, allora se mannarrà na mmasciata pe' riabbià 'a password.", - "passwordreset-emailsent-capture2": "L'email 'e reimpostazione d' 'a password {{PLURAL:$1|è stata mannata|so' state mannate}}. {{PLURAL:$1|'O nomme|L'elenco 'e nomme}} utente e password è mmustato ccà.", - "passwordreset-emailerror-capture2": "'O mannà 'email {{GENDER:$2|a ll'utente}} guastaje: $1. {{PLURAL:$3|'O nomme|L'elenco 'e nomme}} utente e password se ffà vedé ccà.", "passwordreset-nocaller": "Nu chiammate s'avess'a dà", "passwordreset-nosuchcaller": "'O chiammante nun esiste: $1", "passwordreset-ignored": "'A reimpustazione d' 'a password nun s'è gistita. Fosse ca nisciunu fornitore è stato mpustato?", @@ -994,8 +990,6 @@ "saveprefs": "Sarva", "restoreprefs": "Arripiglia 'e mpustaziune predefinite (inta tutte 'e seziune)", "prefs-editing": "Cascia 'e cagnamiento", - "rows": "Righe:", - "columns": "Culonne:", "searchresultshead": "Truova", "stub-threshold": "Valore lemmeto p' 'o furmato d' 'o cullegamento stub ($1):", "stub-threshold-sample-link": "mostra", @@ -1087,12 +1081,9 @@ "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-nologin": "Avite 'a [[Special:UserLogin|trasì]] comme ammenistratore si vulite assegnà 'e deritte 'e l'utente.", - "userrights-notallowed": "Nun tenite 'e permesse pe' jognere o luvà 'e permesse utente.", "userrights-changeable-col": "Gruppe ca putite cagnà", "userrights-unchangeable-col": "Gruppe ca nun putite cagnà", "userrights-conflict": "Conflitto 'e cagnamiento 'e deritte utente! Cuntrullate e cunfermate 'e cagnamiente vuoste.", - "userrights-removed-self": "Avite rimosso 'e deritte vuoste. Picciò nun putite trasì cchiù dint'a sta paggena.", "group": "Gruppo:", "group-user": "Utente", "group-autoconfirmed": "Utente autocunfermate", @@ -1183,7 +1174,6 @@ "right-siteadmin": "Blocca e sblocca 'o database", "right-override-export-depth": "Esporta 'e paggene azzeccanno 'e paggene cullegate nfin'a na profondità 'e 5", "right-sendemail": "Manna na mail a ll'at'utente", - "right-passwordreset": "Vide 'e mmasciate 'e rimpustazione d' 'a password", "right-managechangetags": "Crìa e appiccia/stuta 'e [[Special:Tags|tag]]", "right-applychangetags": "Appreca [[Special:Tags|tag]] pe' tramente ca se fanno 'e cagnamiente 'e coccheruno", "right-changetags": "Azzecca o lèva a caso 'e [[Special:Tags|tag]] dint'a verziune nnividuale e riggistre 'e log", @@ -1421,7 +1411,7 @@ "uploaded-setting-handler-svg": "'o SVG ca mpustasse l'attribbuto \"handler\" cu nu remoto/date/script è bluccato. Truvato <code>$1=\"$2\"</code> dint' 'o file SVG carrecato.", "uploaded-remote-url-svg": "SVG ca mpustasse n'attribbuto 'e stile cu n'URL remota bluccata. Truvate <code>$1=\"$2\"</code> int' 'o file carrecato SVG.", "uploaded-image-filter-svg": "Truvato filtro immaggene cu n'URL: <code><$1 $2=\"$3\"></code> int' 'o file SVG carrecato.", - "uploadscriptednamespace": "Stu file SVG cuntene nu namespace '$1' nun permesso.", + "uploadscriptednamespace": "Stu file SVG cuntene nu namespace '<nowiki>$1</nowiki>' nun permesso.", "uploadinvalidxml": "'O códece XML d' 'o file carrecato nun se può passà.", "uploadvirus": "Stu file cuntene nu virus! Dettaglie: $1", "uploadjava": "Stu file è nu file ZIP ca cuntene nu file .class Java.\nCarrecà 'e file Java nun è permesso, pecché ponno appassà 'e restriziune 'e sicurezza.", @@ -3425,56 +3415,12 @@ "feedback-useragent": "Aggente utente:", "searchsuggest-search": "Truova", "searchsuggest-containing": "tène...", - "api-error-autoblocked": "Ll'indirizzo IP d' 'o vuosto è stato bloccato automaticamente, pecché a nu mumento l'ausaje n'utenza bloccata.", - "api-error-badaccess-groups": "Tun putite carrecà file ncopp' 'a sta wiki.", "api-error-badtoken": "Errore interno: 'O token nun è buono.", - "api-error-blocked": "Site stato/a bloccato/a, nun putite ffà cagnamiente.", - "api-error-copyuploaddisabled": "'A funzione carrcà 'e n'URL nun è appicciata dint'a stu server.", - "api-error-duplicate": "Nce {{PLURAL:$1|sta è n'atu file|stanno ati file}} ncopp' 'o sito ch' 'e cuntenute eguale eguale.", - "api-error-duplicate-archive": "Nce {{PLURAL:$1|steva n'atu file|stevano ati file}} già ncopp' 'o sito ch' 'e stisse cuntenute, però {{PLURAL:$1|è stato|so' state}} scancellate.", - "api-error-empty-file": "'O file ch'avite mannato è abbacante.", "api-error-emptypage": "'A criazione 'e paggene nuove abbacante nun è permessa.", - "api-error-fetchfileerror": "Errore interno: Coccosa ascette stuorta quanno se steva 'analizzà stu file.", - "api-error-fileexists-forbidden": "Nu file c' 'o nomme \"$1\" esiste già, e chisto nun pò essere sovrascritto.", - "api-error-fileexists-shared-forbidden": "Nu file c' 'o nomme \"$1\" esiste già dint' 'a l'archivio 'e file, e chisto nun pò essere sovrascritto.", - "api-error-file-too-large": "'O file ch'avite mannato è troppo gruosso.", - "api-error-filename-tooshort": "'O nomme d' 'o file è troppo curto.", - "api-error-filetype-banned": "Stu tipo 'e file nun è permesso.", - "api-error-filetype-banned-type": "$1 {{PLURAL:$4|nun è nu tipo 'e file permesso|nun songo tipe 'e file permesse}}. {{PLURAL:$3|'O tipo 'e file permesso è|'E tipe 'e file permesse songo}} $2.", - "api-error-filetype-missing": "Stu file nun tene estensione.", - "api-error-hookaborted": "'O cagnamiento c'avite pruvato 'e fà è stato spezzato 'a na stensione.", - "api-error-http": "Errore interno: Nun putimmo ngarrà a nce cullegà a 'o server.", - "api-error-illegal-filename": "'O nomme d' 'o file nun è permesso.", - "api-error-internal-error": "Errore interno: Coccosa ascette male pe' tramente ca se steva processanno 'a carreca dint'a stu wiki.", - "api-error-invalid-file-key": "Errore interno: 'O file nun se pò truvà dint' 'a memoria temporanea.", - "api-error-missingparam": "Errore interno: nun se trovano 'e parametre pe' ne putè fà 'a richiesta.", - "api-error-missingresult": "Errore interno: Nun se pò sapè si 'a copia ascette bbona.", - "api-error-mustbeloggedin": "Avite 'a trasì ô sito si vulite carrecà file.", - "api-error-mustbeposted": "Errore interno: 'A richiesta vole HTTP POST.", - "api-error-noimageinfo": "A carreca ngarraje, ma 'o server nun ce ha pututo dà nisciuna nformazione ncopp' 'o file.", - "api-error-nomodule": "Errore interno: Nisciuno modulo 'e carreca mpustato.", - "api-error-ok-but-empty": "Errore interno: Nisciuna resposta 'a 'o server.", - "api-error-overwrite": "Sovrascrivere nu file ch'esiste già nun è permesso.", - "api-error-ratelimited": "Vuje avite tntato 'e carrecà cchiù file dint'a nu mumento curt' 'e tiempo ca sta wiki premmettesse.\nPe' piacere, tentate n'ata vota int'a nu poch' 'e minute.", - "api-error-stashfailed": "Errore interno: 'O server nun ngarraje a s'astipà 'o file temporaneo.", "api-error-publishfailed": "Errore interno: 'O server nun ngarraje a pubbrecà 'o file temporaneo.", - "api-error-stasherror": "'A carreca d' 'o file 'n stash è asciuta male, ce sta n'errore.", - "api-error-stashedfilenotfound": "'O file 'n stash nun è stato truvato pe' tramente ca se faceva 'a prova 'e carreca d' 'o stash.", - "api-error-stashpathinvalid": "'O cullegamento a 'o pizzo addò avesse stà 'o file 'e stash nun è bbuono.", - "api-error-stashfilestorage": "L'astipamento d' 'o file 'n stash è asciuto male, ce sta n'errore.", - "api-error-stashzerolength": "'O server nun può nzertà 'o file dint'a 'o stash, pecché è luongo zero zero.", - "api-error-stashnotloggedin": "Avisseve 'a trasì pe' ne putè astipà 'e file din' 'o stash 'e càrreca.", - "api-error-stashwrongowner": "'O file addò stavate a trasì dint' 'o stash nun v'appartene.", - "api-error-stashnosuchfilekey": "'A chiave d' 'o file addò stavate a trasì dint' 'o stash nun esiste.", - "api-error-timeout": "'O server nun rispunnette dint'a 'o tiempo stabbelito.", - "api-error-unclassified": "È capitato n'errore scanusciuto.", - "api-error-unknown-code": "Errore scanusciuto: \"$1\"", - "api-error-unknown-error": "Errore interno: Coccosa jette a fernì malalamente quano facisteve 'a carreca d' 'o file vuosto.", + "api-error-stashfailed": "Errore interno: 'O server nun ngarraje a s'astipà 'o file temporaneo.", "api-error-unknown-warning": "Avvertimento scanusciute: $1", "api-error-unknownerror": "Errore scanusciuto: \"$1\"", - "api-error-uploaddisabled": "'E carreche so' stutate dint'a sta siki.", - "api-error-verification-error": "Stu file putesse stà nguacchiato, o tene n'estensione sbagliata.", - "api-error-was-deleted": "Nu file cu stu nomme s'è carrecato primma e po' s'è scancellaje.", "duration-seconds": "$1 {{PLURAL:$1|secondo|seconde}}", "duration-minutes": "$1 {{PLURAL:$1|minuto|minute}}", "duration-hours": "$1 {{PLURAL:$1|ora|ore}}", diff --git a/languages/i18n/nb.json b/languages/i18n/nb.json index 6cddc22ae7..0f7cdb2136 100644 --- a/languages/i18n/nb.json +++ b/languages/i18n/nb.json @@ -78,7 +78,7 @@ "tog-enotifminoredits": "Send meg e-post ogsÃ¥ ved mindre endringer av sider og filer", "tog-enotifrevealaddr": "Vis min e-postadresse i utgÃ¥ende meldinger", "tog-shownumberswatching": "Vis antall brukere som overvÃ¥ker", - "tog-oldsig": "NÃ¥værende signatur:", + "tog-oldsig": "Gjeldende signatur:", "tog-fancysig": "Behandle signaturen som wikitekst (uten automatisk lenke)", "tog-uselivepreview": "Bruk levende forhÃ¥ndsvisning", "tog-forceeditsummary": "Advar meg nÃ¥r jeg ikke gir noen redigeringsforklaring", @@ -218,6 +218,7 @@ "searcharticle": "GÃ¥", "history": "Sidehistorikk", "history_short": "Historikk", + "history_small": "historikk", "updatedmarker": "oppdatert siden mitt forrige besøk", "printableversion": "Utskriftsvennlig versjon", "permalink": "Permanent lenke", @@ -457,19 +458,12 @@ "login": "Logg inn", "login-security": "Bekreft identiteten din", "nav-login-createaccount": "Logg inn eller opprett en konto", - "userlogin": "Logg inn eller opprett en konto", - "userloginnocreate": "Logg inn", "logout": "Logg ut", "userlogout": "Logg ut", "notloggedin": "Ikke logget inn", "userlogin-noaccount": "Ingen konto?", "userlogin-joinproject": "Bli med i {{SITENAME}}", - "nologin": "Har du ingen konto? $1.", - "nologinlink": "Opprett en konto", "createaccount": "Opprett konto", - "gotaccount": "Har du allerede en konto? $1.", - "gotaccountlink": "Logg inn", - "userlogin-resetlink": "Har du glemt pÃ¥loggingsdetaljene dine?", "userlogin-resetpassword-link": "Glemt passordet?", "userlogin-helplink2": "Hjelp med innlogging", "userlogin-loggedin": "Du er allerede logget inn som {{GENDER:$1|$1}}.\nBruk skjemaet nedenfor for Ã¥ logge inn som en annen bruker.", @@ -482,7 +476,6 @@ "createaccountmail": "Bruk et midlertidig, tilfeldig passord, og send det til angitt e-postadresse", "createaccountmail-help": "Kan brukes til Ã¥ opprette en konto for en annen person uten at du fÃ¥r vite passordet.", "createacct-realname": "Virkelig navn (valgfritt)", - "createaccountreason": "Årsak:", "createacct-reason": "Årsak", "createacct-reason-ph": "Hvorfor lager du en annen bruker", "createacct-reason-help": "Beskjed vist i kontoopprettelsesloggen", @@ -629,7 +622,7 @@ "changeemail": "Endre eller fjerne epostadresse", "changeemail-header": "Fyll ut dette skjemaet for Ã¥ bytte din epost-adresse. Hvis du vil fjerne epostadressen fra din konto, kan du la ny epostadresse-feltet være tomt nÃ¥r.", "changeemail-no-info": "Du mÃ¥ være innlogget for Ã¥ fÃ¥ direkte tilgang til denne siden.", - "changeemail-oldemail": "NÃ¥værende e-postadresse:", + "changeemail-oldemail": "Gjeldende e-postadresse:", "changeemail-newemail": "Ny e-postadresse:", "changeemail-newemail-help": "Dette feltet bør stÃ¥ blankt hvis du ønsker Ã¥ fjerne epostadressen din. Det vil ikke være mulig Ã¥ nullstille et glemt passord og du vil ikke motta noen eposter fra denne wikien hvis epostadressen fjernes.", "changeemail-none": "(ingen)", @@ -687,14 +680,14 @@ "blockedtitle": "Brukeren er blokkert", "blockedtext": "'''Ditt brukernavn eller din IP-adresse har blitt blokkert.'''\n\nBlokkeringen ble utført av $1. Grunnen som ble oppgitt var ''$2''.\n\n* Blokkeringen begynte: $8\n* Blokkeringen utgÃ¥r: $6\n* Blokkering ment pÃ¥: $7\n\nDu kan kontakte $1 eller en annen [[{{MediaWiki:Grouppage-sysop}}|administrator]] for Ã¥ diskutere blokkeringen.\nDu kan ikke bruke «E-post til denne brukeren»-funksjonen med mindre du har oppgitt en gyldig e-postadresse i [[Special:Preferences|innstillingene dine]] og du ikke er blokkert fra Ã¥ sende e-post.\nDin nÃ¥værende IP-adresse er $3, og blokkerings-ID-en er #$5.\nVennligst ta all denne informasjonen ved henvendelser.", "autoblockedtext": "Din IP-adresse har blitt automatisk blokkert fordi den ble brukt av en annen bruker som ble blokkert av $1.\nDen oppgitte grunnen var:\n\n:'''$2'''\n\n* Blokkeringen begynte: $8\n* Blokkeringen utgÃ¥r: $6\n* Blokkeringen er ment for: $7\n\nDu kan kontakte $1 eller en av de andre [[{{MediaWiki:Grouppage-sysop}}|administratorene]] for Ã¥ diskutere blokkeringen.\n\nMerk at du ikke kan bruke «E-post til denne brukeren»-funksjonen med mindre du har registrert en gyldig e-postadresse i [[Special:Preferences|innstillingene dine]].\n\nDin IP-adresse er $3, og blokkerings-ID-en er #$5.\nVennligst ta med all denne informasjonen ved henvendelser.", - "systemblockedtext": "Ditt brukernavn eller IP-adresse har blitt blokkert automatisk av MediaWiki.\n\nBlokkeringen grunnes:\n\n:<em>$2</em>\n\n* Blokaden startet: $8\n* Blokaden gjelder til: $6\n* Blokaden er ment for: $7\n\nDin nÃ¥værende IP-adresse er $3.\nVennligst inkluder informasjonen over i alle spørsmÃ¥l du spør angÃ¥ende dette.", + "systemblockedtext": "Ditt brukernavn eller IP-adresse har blitt blokkert automatisk av MediaWiki.\n\nBlokkeringen grunnes:\n\n:<em>$2</em>\n\n* Blokkeringen startet: $8\n* Blokkeringen gjelder til: $6\n* Blokkeringen er ment for: $7\n\nDin nÃ¥værende IP-adresse er $3.\nVennligst inkluder informasjonen over i alle spørsmÃ¥l du spør angÃ¥ende dette.", "blockednoreason": "ingen grunn gitt", "whitelistedittext": "Du mÃ¥ $1 for Ã¥ redigere artikler.", "confirmedittext": "Du mÃ¥ bekrefte e-postadressen din før du kan redigere sider. Vennligst oppgi og bekreft e-postadressen din via [[Special:Preferences|innstillingene dine]].", "nosuchsectiontitle": "Finner ikke avsnittet", "nosuchsectiontext": "Du prøvde Ã¥ redigere et avsnitt som ikke eksisterer.\nDet kan ha blitt flyttet eller slettet mens du sÃ¥ pÃ¥ siden.", "loginreqtitle": "Innlogging kreves", - "loginreqlink": "logg inn", + "loginreqlink": "logge inn", "loginreqpagetext": "Du mÃ¥ $1 for Ã¥ se andre sider.", "accmailtitle": "Passord sendt.", "accmailtext": "Et tilfeldig passord for [[User talk:$1|$1]] har blitt sendt til $2. Det kan endres pÃ¥ [[Special:ChangePassword|passordendringssiden]] under innlogging.", @@ -989,6 +982,7 @@ "search-interwiki-caption": "Søsterprosjekter", "search-interwiki-default": "Resultater fra $1:", "search-interwiki-more": "(mer)", + "search-interwiki-more-results": "flere resultater", "search-relatedarticle": "Relatert", "searchrelated": "relatert", "searchall": "alle", @@ -1078,6 +1072,7 @@ "youremail": "E-post:", "username": "{{GENDER:$1|Brukernavn}}:", "prefs-memberingroups": "{{GENDER:$2|Medlem}} i følgende {{PLURAL:$1|gruppe|grupper}}:", + "group-membership-link-with-expiry": "$1 (til $2)", "prefs-registration": "Registreringstidspunkt:", "yourrealname": "Virkelig navn:", "yourlanguage": "SprÃ¥k:", @@ -1122,18 +1117,27 @@ "editusergroup": "Last brukergrupper", "editinguser": "Endrer brukerrettighetene for {{GENDER:$1|bruker}} <strong>[[User:$1|$1]]</strong> $2", "viewinguserrights": "Viser {{GENDER:$1|brukerrettighetene}} til <strong>[[User:$1|$1]]</strong> $2", - "userrights-editusergroup": "Rediger brukergrupper", - "userrights-viewusergroup": "Se brukergrupper", + "userrights-editusergroup": "Rediger {{GENDER:$1|brukergrupper}}", + "userrights-viewusergroup": "Se {{GENDER:$1|brukergrupper}}", "saveusergroups": "Lagre {{GENDER:$1|brukergrupper}}", "userrights-groupsmember": "Medlem av:", "userrights-groupsmember-auto": "Implisitt medlem av:", - "userrights-groups-help": "Du kan endre hvilke grupper denne brukeren er medlem av.\n* En avkrysset boks betyr at brukeren er medlem av gruppen.\n* En uavkrysset boks betyr at brukeren ikke er medlem av gruppen.\n* En * betyr at du ikke kan fjerne gruppemedlemskapet nÃ¥r du har lagt det til, eller vice versa.", + "userrights-groups-help": "Du kan endre hvilke grupper denne brukeren er medlem av.\n* En avkrysset boks betyr at brukeren er medlem av gruppen.\n* En uavkrysset boks betyr at brukeren ikke er medlem av gruppen.\n* En * betyr at du ikke kan fjerne gruppemedlemskapet nÃ¥r du har lagt det til, eller vice versa.\n* En # betyr at du kun kan forkorte utløpstiden til denne gruppen, du kan ikke forlenge den.", "userrights-reason": "Årsak:", "userrights-no-interwiki": "Du har ikke tillatelse til Ã¥ endre brukerrettigheter pÃ¥ andre wikier.", "userrights-nodatabase": "Databasen $1 finnes ikke, eller er ikke lokal.", "userrights-changeable-col": "Grupper du kan endre", "userrights-unchangeable-col": "Grupper du ikke kan endre", "userrights-irreversible-marker": "$1 *", + "userrights-expiry-current": "Løper ut $1", + "userrights-expiry-none": "Utløper ikke", + "userrights-expiry": "Utløper:", + "userrights-expiry-existing": "Gjeldende utløpstid: $2 $3", + "userrights-expiry-othertime": "Annen tid:", + "userrights-expiry-options": "1 dag:1 day,1 uke:1 week,1 mÃ¥ned:1 month,3 mÃ¥neder:3 months,6 mÃ¥neder:6 months,1 Ã¥r:1 year", + "userrights-invalid-expiry": "Utløpstiden for gruppa «$1» er ugyldig.", + "userrights-expiry-in-past": "Utløpstiden for gruppa «$1» har vært.", + "userrights-cannot-shorten-expiry": "Du kan ikke forlenge utløpstiden til gruppa «$1». Bare brukere med tillatelse til Ã¥ legge til eller fjerne denne gruppa kan forlenge utløpstider.", "userrights-conflict": "En konflikt med endringen av brukerrettigheter! Vær vennlig Ã¥ sjekke og pÃ¥ nytt bekrefte endringene dine.", "group": "Gruppe:", "group-user": "Brukere", @@ -1335,22 +1339,52 @@ "recentchanges-legend-plusminus": "«(±123)»", "recentchanges-submit": "Vis", "rcfilters-activefilters": "Aktive filtre", + "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-invalid-filter": "Ugyldig filter", + "rcfilters-empty-filter": "Ingen aktive filtre. Alle bidrag vises.", "rcfilters-filterlist-title": "Filtre", + "rcfilters-filterlist-feedbacklink": "Gi tilbakemelding pÃ¥ de nye (beta)filtrene", + "rcfilters-highlightbutton-title": "Marker resultater", + "rcfilters-highlightmenu-title": "Velg en farge", "rcfilters-filterlist-noresults": "Ingen filtre funnet", + "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-filtergroup-authorship": "Redigeringens forfatter", "rcfilters-filter-editsbyself-label": "Dine egne redigeringer", "rcfilters-filter-editsbyself-description": "Redigeringer gjort av deg.", "rcfilters-filter-editsbyother-label": "Redigeringer av andre", "rcfilters-filter-editsbyother-description": "Redigeringer som er gjort av andre brukere enn deg.", - "rcfilters-filtergroup-userExpLevel": "BrukererfaringsnivÃ¥", - "rcfilters-filter-userExpLevel-newcomer-label": "Nykommere", - "rcfilters-filter-userExpLevel-newcomer-description": "Veldig nye bidragsytere: Færre enn 10 redigeringer og 4 dagers aktivitet.", - "rcfilters-filter-userExpLevel-learner-label": "Nybegynnere", - "rcfilters-filter-userExpLevel-learner-description": "Flere dagers aktivitet enn «Nykommere», men mindre enn «Erfarne brukere».", - "rcfilters-filter-userExpLevel-experienced-label": "Erfarne brukere", - "rcfilters-filter-userExpLevel-experienced-description": "Mer enn 30 dagers aktivitet og 500 redigeringer.", + "rcfilters-filtergroup-userExpLevel": "ErfaringsnivÃ¥ (kun for registrerte brukere)", + "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-learner-label": "Nybegynnere", + "rcfilters-filter-user-experience-level-learner-description": "Flere dagers aktivitet 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-filtergroup-automated": "Automatiske bidrag", + "rcfilters-filter-bots-label": "Bot", + "rcfilters-filter-bots-description": "Redigeringer gjort med automatiske verktøy.", + "rcfilters-filter-humans-label": "Menneske (ikke bot)", + "rcfilters-filter-humans-description": "Redigeringer gjort av menneskelige brukere.", + "rcfilters-filtergroup-significance": "Betydning", + "rcfilters-filter-minor-label": "Mindre endringer", + "rcfilters-filter-minor-description": "Redigeringer merket som mindre av brukeren.", + "rcfilters-filter-major-label": "Ikke-mindre endringer", + "rcfilters-filter-major-description": "Redigeringer som ikke er merket som mindre.", + "rcfilters-filtergroup-changetype": "Type endring", + "rcfilters-filter-pageedits-label": "Sideredigeringer", + "rcfilters-filter-pageedits-description": "Redigeringer til wikiinnhold, diskusjoner, kategoribeskrivelser ...", + "rcfilters-filter-newpages-label": "Sideopprettelser", + "rcfilters-filter-newpages-description": "Redigeringer som oppretter nye sider.", + "rcfilters-filter-categorization-label": "Kategoriendringer", + "rcfilters-filter-categorization-description": "Sporer sider som legges til i eller fjernes fra kategorier.", + "rcfilters-filter-logactions-label": "Loggførte handlinger", + "rcfilters-filter-logactions-description": "Administrative handlinger, kontoopprettelser, sideslettinger, opplastinger ...", "rcnotefrom": "Nedenfor er vist {{PLURAL:$5|endringen|endringene}} som er gjort siden <strong>$3, $4</strong> (frem til <strong>$1</strong>).", "rclistfrom": "Vis nye endringer fra og med $3 $2", "rcshowhideminor": "$1 mindre endringer", @@ -1484,7 +1518,7 @@ "uploaded-setting-handler-svg": "SVG-er som setter «handler»-attributtet med remote/data/script er blokkert. Fant <code>$1=\"$2\"</code> i den opplastede SVG-fila.", "uploaded-remote-url-svg": "SVG-er som setter et stilattributt med ekstern URL er blokkert. Fant <code>$1=\"$2\"</code> i den opplastede SVG-fila.", "uploaded-image-filter-svg": "Fant bildefilter med URL: <code><$1 $2=\"$3\"></code> i den opplastede SVG-fila.", - "uploadscriptednamespace": "Denne SVG-filen inneholder et ulovlig navnerom \"$1\"", + "uploadscriptednamespace": "Denne SVG-filen inneholder et ulovlig navnerom \"<nowiki>$1</nowiki>\"", "uploadinvalidxml": "XML-en i den opplastede filen kunne ikke tolkes.", "uploadvirus": "Denne filen inneholder virus! Detaljer: $1", "uploadjava": "Filen er en ZIP-fil som inneholder en Java-fil av typen .class.\nDet er ikke tillatt Ã¥ laste opp Java-filer, fordi de kan omgÃ¥ sikkerhetsrestriksjoner.", @@ -1672,7 +1706,7 @@ "filerevert-submit": "Tilbakestill", "filerevert-success": "'''[[Media:$1|$1]]''' ble tilbakestilt til [$4 versjonen à $2, $3].", "filerevert-badversion": "Det er ingen tidligere lokal versjon av denne filen med det gitte tidstrykket.", - "filerevert-identical": "Den nÃ¥værende versjonen av fila er allerede identisk med den valgte.", + "filerevert-identical": "Den gjeldende versjonen av fila er allerede identisk med den valgte.", "filedelete": "Slett $1", "filedelete-legend": "Slett fil", "filedelete-intro": "Du er i ferd med Ã¥ slette filen '''[[Media:$1|$1]]''' sammen med hele dens historikk.", @@ -1861,8 +1895,10 @@ "apisandbox-sending-request": "Sender API-forespørsel...", "apisandbox-loading-results": "Mottar API-resultater...", "apisandbox-results-error": "En feil oppsto under lasting av API-spørringssvaret: $1.", - "apisandbox-request-params-json": "JSON-parametre:", + "apisandbox-request-selectformat-label": "Vis forespørselsdata som:", + "apisandbox-request-format-url-label": "URL-spørringsstreng", "apisandbox-request-url-label": "Forespurt URL:", + "apisandbox-request-json-label": "Spør om JSON:", "apisandbox-request-time": "Forespørselstid: {{PLURAL:$1|$1 ms}}", "apisandbox-results-fixtoken": "Fiks nøkkelen og send pÃ¥ nytt", "apisandbox-results-fixtoken-fail": "Henting av nøkkelen «$1» mislyktes.", @@ -2004,7 +2040,7 @@ "emailccsubject": "Kopi av din beskjed til $1: $2", "emailsent": "E-post sendt", "emailsenttext": "E-postbeskjeden er sendt", - "emailuserfooter": "Denne e-posten ble {{GENDER:$1|sendt}} av $1 til {{GENDER:$2|$2}} via funksjonen «{{int:emailuser}}» pÃ¥ {{SITENAME}}. {{GENDER:$2|Din}} epost vil bli sendt direkte til {{GENDER:$1|opprinnelig avsender}} og avsløre {{GENDER:$2|din}} epost-addresse til {{GENDER:$1|dem}}.", + "emailuserfooter": "Denne e-posten ble {{GENDER:$1|sendt}} av $1 til {{GENDER:$2|$2}} via funksjonen «{{int:emailuser}}» pÃ¥ {{SITENAME}}. Om {{GENDER:$2|du}} svarer pÃ¥ denne eposten vil den sendes direkte til {{GENDER:$1|opprinnelig avsender}} og avsløre {{GENDER:$2|din}} epostadresse for {{GENDER:$1|ham|henne|dem}}.", "usermessage-summary": "Etterlater en systembeskjed.", "usermessage-editor": "Systembudbringer", "watchlist": "OvervÃ¥kningsliste", @@ -2054,10 +2090,10 @@ "enotif_subject_restored": "{{SITENAME}}-siden $1 har blitt gjenopprettet av {{gender:$2|$2}}", "enotif_subject_changed": "{{SITENAME}}-siden $1 har blitt endret av {{gender:$2|$2}}", "enotif_body_intro_deleted": "{{SITENAME}}-siden $1 ble slettet $PAGEEDITDATE av {{gender:$2|$2}}; se $3.", - "enotif_body_intro_created": "{{SITENAME}}-siden $1 ble opprettet $PAGEEDITDATE av {{gender:$2|$2}}. Se $3 for den nÃ¥værende versjonen.", + "enotif_body_intro_created": "{{SITENAME}}-siden $1 ble opprettet $PAGEEDITDATE av {{GENDER:$2|$2}}. Se $3 for den nÃ¥værende versjonen.", "enotif_body_intro_moved": "{{SITENAME}}-siden $1 ble flyttet $PAGEEDITDATE av {{gender:$2|$2}}. Se $3 for den nÃ¥værende versjonen.", "enotif_body_intro_restored": "{{SITENAME}}-siden $1 ble gjenopprettet $PAGEEDITDATE av {{gender:$2|$2}}. Se $3 for den nÃ¥værende versjonen.", - "enotif_body_intro_changed": "{{SITENAME}}-siden $1 ble endret $PAGEEDITDATE av {{gender:$2|$2}}. Se $3 for den nÃ¥værende versjonen.", + "enotif_body_intro_changed": "{{SITENAME}}-siden $1 ble endret $PAGEEDITDATE av {{GENDER:$2|$2}}. Se $3 for den nÃ¥værende versjonen.", "enotif_lastvisited": "Se $1 for alle endringer siden ditt forrige besøk.", "enotif_lastdiff": "Se $1 for Ã¥ se denne endringen.", "enotif_anon_editor": "anonym bruker $1", @@ -2102,7 +2138,7 @@ "editcomment": "Redigeringskommentaren var: <em>$1</em>", "revertpage": "Tilbakestilte endringer av [[Special:Contributions/$2|$2]] ([[User talk:$2|brukerdiskusjon]]) til siste versjon av [[User:$1|$1]]", "revertpage-nouser": "Tilbakestilt endringer av skjult bruker til siste versjon av\n{{GENDER:$1|[[User:$1|$1]]}}", - "rollback-success": "Tilbakestilte endringer av $1; endret til siste versjon av $2.", + "rollback-success": "Tilbakestilte endringer av {{GENDER:$3|$1}}; endret til siste versjon av {{GENDER:$4|$2}}.", "rollback-success-notify": "Tilbakestilte endringer av $1;\nendret tilbake til siste revisjon av $2. [$3 Vis endringer]", "sessionfailure-title": "Sesjonsfeil", "sessionfailure": "Det ser ut til Ã¥ være et problem med innloggingen din, og den ble avbrutt av sikkerhetshensyn. Trykk ''Tilbake'' i nettleseren din, oppdater siden og prøv igjen.", @@ -2148,7 +2184,7 @@ "protect-unchain-permissions": "LÃ¥s opp flere beskyttelsesinnstillinger", "protect-text": "Du kan se og endre beskyttelsesnivÃ¥et for siden '''$1''' her.", "protect-locked-blocked": "Du kan ikke endre beskyttelsesnivÃ¥er mens du er blokkert. Dette er de nÃ¥værende innstillingene for siden '''$1''':", - "protect-locked-dblock": "BeskyttelsesnivÃ¥er kan ikke endres under en aktiv databasebeskyttelse. Dette er de nÃ¥værende innstillingene for siden '''$1''':", + "protect-locked-dblock": "BeskyttelsesnivÃ¥er kan ikke endres under en aktiv databasebeskyttelse. Dette er de gjeldende innstillingene for siden '''$1''':", "protect-locked-access": "Kontoen din har ikke tillatelse til Ã¥ endre sidebeskyttelsesnivÃ¥.\nDette er de nÃ¥værende innstillingene for siden '''$1''':", "protect-cascadeon": "Denne siden er for tiden beskyttet fordi den er transkludert pÃ¥ følgende {{PLURAL:$1|side|sider}} som har dypbeskyttelse slÃ¥tt pÃ¥.\nDu kan endre sidens beskyttelsesnivÃ¥, men det vil ikke pÃ¥virke dypbeskyttelsen.", "protect-default": "Tillat alle brukere", @@ -2478,7 +2514,7 @@ "allmessages": "Systemmeldinger", "allmessagesname": "Navn", "allmessagesdefault": "Standardtekst", - "allmessagescurrent": "NÃ¥værende tekst", + "allmessagescurrent": "Gjeldende beskjedtekst", "allmessagestext": "Dette er en liste over tilgjengelige systemmeldinger i MediaWiki-navnerommet.\nBesøk [https://www.mediawiki.org/wiki/Special:MyLanguage/Localisation MediaWiki Oversettelse] og [https://translatewiki.net translatewiki.net] om du ønsker Ã¥ bidra med oversettelse av MediaWiki.", "allmessagesnotsupportedDB": "''{{ns:special}}:Allmessages'' kan ikke brukes fordi '''$wgUseDatabaseMessages''' er slÃ¥tt av.", "allmessages-filter-legend": "Filtrér", @@ -3570,7 +3606,7 @@ "logentry-tag-update-revision": "$1 {{GENDER:$2|oppdaterte}} merker pÃ¥ revisjonen $4 av siden $3\n({{PLURAL:$7|la til}} $6; {{PLURAL:$9|fjernet}} $8)", "logentry-tag-update-logentry": "$1 {{GENDER:$2|oppdaterte}} merker pÃ¥ loggposten $5 til siden $3\n({{PLURAL:$7|la til}} $6; {{PLURAL:$9|fjernet}} $8)", "rightsnone": "(ingen)", - "revdelete-summary": "redigeringssammendrag", + "rightslogentry-temporary-group": "$1 (midlertidig, til $2)", "feedback-adding": "Tilføyer tilbakmelding til side ...", "feedback-back": "Tilbake", "feedback-bugcheck": "Suprert! Bare sjekk at den ikke er en av de [$1 kjente feilene]", @@ -3595,56 +3631,12 @@ "feedback-useragent": "Brukeragent", "searchsuggest-search": "Søk i {{SITENAME}}", "searchsuggest-containing": "inneholder …", - "api-error-autoblocked": "Din IP-adresse har blitt blokkert automatisk fordi den ble brukt av en blokkert bruker.", - "api-error-badaccess-groups": "Du har ikke tillatelse til Ã¥ laste opp filer til denne wikien.", "api-error-badtoken": "Intern feil: Ugyldig nøkkel.", - "api-error-blocked": "Du har blitt blokkert fra Ã¥ redigere.", - "api-error-copyuploaddisabled": "Opplasting ved URL er deaktivert pÃ¥ denne tjeneren.", - "api-error-duplicate": "Det er allerede {{PLURAL:$1|en annen fil|flere andre filer}} pÃ¥ denne siden med samme innhold.", - "api-error-duplicate-archive": "Det fantes {{PLURAL:$1|en annen fil|noen andre filer}} pÃ¥ siden som hadde samme innhold, men {{PLURAL:$1|den|de}} ble slettet.", - "api-error-empty-file": "Filen du sendte inn var tom.", "api-error-emptypage": "Det er ikke tillatt Ã¥ opprette nye, tomme sider.", - "api-error-fetchfileerror": "Intern feil: Noe gikk galt ved henting av denne filen.", - "api-error-fileexists-forbidden": "En fil med navnet «$1» finnes allerede, og kan ikke overskrives.", - "api-error-fileexists-shared-forbidden": "En fil med navnet «$1» finnes allerede i det delte filsystemet, og kan ikke overskrives.", - "api-error-file-too-large": "Filen du la inn var for stor.", - "api-error-filename-tooshort": "Filnavnet er for kort.", - "api-error-filetype-banned": "Denne filtypen er ikke tillatt.", - "api-error-filetype-banned-type": "{{PLURAL:$4|Filtypen|Filtypene}} $1 er ikke {{PLURAL:$4|tillatt|tillatte}}. {{PLURAL:$3|Tillatt filtype|Tillatte filtyper}} er $2.", - "api-error-filetype-missing": "Filen mangler filendelse.", - "api-error-hookaborted": "Endringen du prøvde Ã¥ gjøre ble avbrutt av en utvidelsestilkobling.", - "api-error-http": "Intern feil: kan ikke fÃ¥ forbindelse til server.", - "api-error-illegal-filename": "Filnavnet er ikke tillatt.", - "api-error-internal-error": "Intern feil: Noe gikk galt ved prosessering av din opplastning til wikien.", - "api-error-invalid-file-key": "Intern feil: Fil ble ikke funnet i midlertidig lagerplass", - "api-error-missingparam": "Intern feil: Manglende parameter i forespørselen", - "api-error-missingresult": "Intern feil: Kan ikke bekrefte at kopieringen var vellykket.", - "api-error-mustbeloggedin": "Du mÃ¥ være logget inn for Ã¥ laste opp filer.", - "api-error-mustbeposted": "Intern feil: forespørsel krever HTTP POST.", - "api-error-noimageinfo": "Opplastingen var vellykket, men tjeneren returnerte ikke noe informasjon om filen.", - "api-error-nomodule": "Intern feil: ingen opplastningsmodul har blitt valgt.", - "api-error-ok-but-empty": "Intern feil: ingen svar fra server.", - "api-error-overwrite": "Det er ikke tillatt Ã¥ overskrive eksisterende filer.", - "api-error-ratelimited": "Du prøver Ã¥ laste opp flere filer enn wikien tillater i et kort tidsrom.\nPrøv igjen om noen minutter.", - "api-error-stashfailed": "Internal error: tjeneren greide ikke Ã¥ lagre midlertidig fil.", "api-error-publishfailed": "Intern feil: Tjeneren greide ikke Ã¥ publisere midlertidig fil.", - "api-error-stasherror": "Det oppstod en feil mens filen ble lastet opp til stash.", - "api-error-stashedfilenotfound": "Den temporære filen ble ikke funnet ved forsøk pÃ¥ Ã¥ laste den opp fra lageret.", - "api-error-stashpathinvalid": "Stien som den temporære filen skulle vært funnet via var ugyldig.", - "api-error-stashfilestorage": "Det oppsto en feil nÃ¥r filen skulle lastes opp til lageret.", - "api-error-stashzerolength": "Tjenermaskinen kunne i lagre den temporære filen fordi den hadde null lengde.", - "api-error-stashnotloggedin": "Du mÃ¥ være innlogget for Ã¥ lagre filene i opplastingslageret.", - "api-error-stashwrongowner": "Filen du prøvde Ã¥ fÃ¥ tilgang til tilhører ikke deg.", - "api-error-stashnosuchfilekey": "Filnøkkelen du prøvde Ã¥ fÃ¥ tilgang til finnes ikke.", - "api-error-timeout": "Tjeneren svarte ikke innenfor forventet tid.", - "api-error-unclassified": "En ukjent feil har oppstÃ¥tt", - "api-error-unknown-code": "Ukjent feil: \"$1\"", - "api-error-unknown-error": "Intern feil: Noe gikk galt ved opplastning av filen din.", + "api-error-stashfailed": "Internal error: tjeneren greide ikke Ã¥ lagre midlertidig fil.", "api-error-unknown-warning": "Ukjent advarsel: «$1».", "api-error-unknownerror": "Ukjent feil: «$1».", - "api-error-uploaddisabled": "Opplastning har blitt deaktivert pÃ¥ denne wikien.", - "api-error-verification-error": "Filen kan være korrupt, eller ha feil filendelse.", - "api-error-was-deleted": "En fil med dette navnet har tidligere blitt lastet opp og senere slettet.", "duration-seconds": "$1 {{PLURAL:$1|sekund|sekunder}}", "duration-minutes": "$1 {{PLURAL:$1|minutt|minutter}}", "duration-hours": "$1 {{PLURAL:$1|time|timer}}", @@ -3767,6 +3759,7 @@ "mw-widgets-titleinput-description-new-page": "siden eksisterer ikke ennÃ¥", "mw-widgets-titleinput-description-redirect": "omdiriger til $1", "mw-widgets-categoryselector-add-category-placeholder": "Legg til en kategori …", + "mw-widgets-usersmultiselect-placeholder": "Legg til flere ...", "sessionmanager-tie": "Kan ikke kombinere flere forespørselsautentiseringstyper: $1", "sessionprovider-generic": "$1 sesjoner", "sessionprovider-mediawiki-session-cookiesessionprovider": "informasjons­kapsel-baserte sesjoner", @@ -3898,7 +3891,7 @@ "usercssispublic": "Merk: CSS-undersidene bør ikke inneholde konfidensielle data siden de kan ses av andre brukere.", "restrictionsfield-badip": "Ugyldig IP-adresse eller intervall: $1", "restrictionsfield-label": "Tillatte IP-intervaller:", - "restrictionsfield-help": "Én IP-adresse eller CIDR-intervall per linje. For Ã¥ slÃ¥ pÃ¥ alt, bruk <br /><code>0.0.0.0/0</code><br /><code>::/0</code>", + "restrictionsfield-help": "Én IP-adresse eller CIDR-intervall per linje. For Ã¥ slÃ¥ pÃ¥ alt, bruk: <pre>0.0.0.0/0\n::/0</pre>", "revid": "revisjon $1", "pageid": "side-ID $1" } diff --git a/languages/i18n/ne.json b/languages/i18n/ne.json index f5f497e97d..bc84842c23 100644 --- a/languages/i18n/ne.json +++ b/languages/i18n/ne.json @@ -734,7 +734,7 @@ "viewpagelogs": "यस पृष्ठका लगहरू हेर्नुहोस्", "nohistory": "यस पृष्ठको लागी कुनै सम्पादन इतिहास छैन।", "currentrev": "हालको संस्करण", - "currentrev-asof": "$1को रुपमा हालको पुनरावलोकनहरु", + "currentrev-asof": "$1को रुपमा हालको पुनरावलोकनहरू", "revisionasof": "$1 जस्तै गरी पुनरावलोकन", "revision-info": "{{GENDER:$6|$2}}$7 द्वारा $1को संशोधन", "previousrevision": "← पुरानो संशोधन", @@ -769,13 +769,13 @@ "rev-suppressed-text-view": "यस पृष्ठको पुनरावलोकन <strong>थिचिएको छ</strong>।\nप्रबन्धकको हैसियतले हेर्न सक्नुहुन्छ; [{{fullurl:{{#Special:Log}}/delete|पृष्ठ={{FULLPAGENAMEE}}}}को थिचिएको लगमा विवरण पाउन सकिन्छ]", "rev-deleted-no-diff": "तपाईंले यसको भिन्नता पाउन सक्नुहुन्न किनभने यस पृष्ठको पुनरावलोकन <strong>मेटाइएको छ</strong>'।\nयसको विवरण [{{fullurl:{{#Special:Log}}/delete|पृष्ठ={{FULLPAGENAMEE}}}}को मेटाइएको लगमा पाउन सक्नुहुन्छ]।", "rev-suppressed-no-diff": "तपाईं यसको भिन्नता हेर्न सक्नुहुन्न किनभने यसको एउटा संशोधन <strong>मेटाइएको</strong>छ।", - "rev-deleted-unhide-diff": "यस पृष्ठको पुनरावलोकनहरु मध्ये एउटा भिन्नता <strong>मेटाइएकोछ</strong>।\nयसको पूर्ण विवरण [{{fullurl:{{#Special:Log}}/delete|पृष्ठ={{FULLPAGENAMEE}}}}को मेटाइएको लगमा पाउन सकिन्छ]।\nयदि चाहनु भयो भने प्रवन्धकको हैसियतले [यो भिन्नता $1] हेर्न सक्नुहुन्छ।", - "rev-suppressed-unhide-diff": "यस पृष्ठको पुनरावलोकनहरु मध्ये एउटा भिन्नता <strong>थिचिएको छ</strong>।\nयसको पूर्ण विवरण [{{fullurl:{{#Special:Log}}/suppress|पृष्ठ={{FULLPAGENAMEE}}}}को थिचिएको लगमा पाउन सकिन्छ]।\nयदि चाहनु भयो भने प्रबन्धकको हैसियतमा [यो भिन्नता $1] हेर्न सक्नुहुन्छ।", + "rev-deleted-unhide-diff": "यस पृष्ठका पुनरावलोकनहरू मध्ये एउटा भिन्नता <strong>मेटाइएकोछ</strong>।\nयसको पूर्ण विवरण [{{fullurl:{{#Special:Log}}/delete|पृष्ठ={{FULLPAGENAMEE}}}}को मेटाइएको लगमा पाउन सकिन्छ]।\nयदि चाहनु भयो भने प्रवन्धकको हैसियतले [यो भिन्नता $1] हेर्न सक्नुहुन्छ।", + "rev-suppressed-unhide-diff": "यस पृष्ठको पुनरावलोकनहरू मध्ये एउटा भिन्नता <strong>थिचिएको छ</strong>।\nयसको पूर्ण विवरण [{{fullurl:{{#Special:Log}}/suppress|पृष्ठ={{FULLPAGENAMEE}}}}को थिचिएको लगमा पाउन सकिन्छ]।\nयदि चाहनु भयो भने प्रबन्धकको हैसियतमा [यो भिन्नता $1] हेर्न सक्नुहुन्छ।", "rev-deleted-diff-view": "यस भिन्नताका संशोधनहरुमध्येको एउटा चाहिं <strong>मेटियो।<strong> \nतपाईंले यस भिन्नतालाई हेर्न सक्नुहुन्छ; सबै विवरण [{{fullurl:{{#Special:Log}}/delete|पृष्ठ={{FULLPAGENAMEE}}}} मेटाइएको लग]मा पाउन सकिनेछ।", "rev-suppressed-diff-view": "यस भिन्नताका संशोधनहरुमध्येको एउटा चाहिं <strong>दबाइयो।<strong> \nतपाईंले यस भिन्नतालाई हेर्न सक्नुहुन्छ; सबै विवरण [{{fullurl:{{#Special:Log}}/delete|पृष्ठ={{FULLPAGENAMEE}}}} दबाइएको लग]मा पाउन सकिनेछ।", "rev-delundel": "दृश्यता परिवर्तन गर्ने", "rev-showdeleted": "देखाउनुहोस्", - "revisiondelete": "मेटाउने/मेटाएको रद्दगर्ने पुनरावलोकनहरु", + "revisiondelete": "मेटाउने/मेटाएको रद्दगर्ने पुनरावलोकनहरू", "revdelete-nooldid-title": "अमान्य पुनरावलोकन लक्ष", "revdelete-nooldid-text": "यस क्रियालाई गर्नको लागि तपाईंले लक्ष्य अवतरण दिनु भएको छैन, वा तपाईंले दिएको अवतरण अस्तित्वमा छैन वा तपाईं सद्य अवतरणलाई लुकाउने प्रयत्न गर्दै हुनुहुन्छ।", "revdelete-no-file": "खुलाइएको पृष्ठ अस्तित्वमा छैन", @@ -834,7 +834,7 @@ "mergehistory-merge": "[[:$1]]को निम्न अवतरण [[:$2]]मा समाविष्ट गर्न सकिनेछ।\nदिइएको समय वा त्यस भन्दा पहिले भएको अवतरणहरूलाई एकत्रित गर्नका लागि रेडियो बटनको प्रयोग गर्नुहोस।\nन्याभिगेसन लिङ्कहरूको प्रयोग पछी यो कलम आफ्नो पुरानै स्थितिमा आउनेछ।", "mergehistory-go": "जोड्न मिल्ने सम्पादनहरू", "mergehistory-submit": "पुनरावलोकहरु जोड्नुहोस्", - "mergehistory-empty": "कुनै पनि पुनरावलोकनहरु जोड्न मिल्दैन ।", + "mergehistory-empty": "कुनै पनि पुनरावलोकनहरू जोड्न मिल्दैन ।", "mergehistory-done": "$3 {{PLURAL:$3|संस्करण|संस्करणहरू}} $1बाट सफलतापूर्वक [[:$2]]मा थपियो ।", "mergehistory-fail": "इतिहास जोड्न सकिएन कृपया पृष्ठको नाम र समयमान जाँच गर्नुहोस्।", "mergehistory-fail-toobig": "इतिहास समाहित गर्न सम्भव छैन किनभने अवतरण सिमा $1 भन्दा बढी {{PLURAL:$1|अवतरण|अवतरणहरू}} लाई स्थानान्तरित गर्नु पर्छ।", @@ -855,7 +855,7 @@ "difference-multipage": "(पृष्ठहरूमा भिन्नता)", "lineno": "पंक्ति $1:", "compareselectedversions": "छानिएका संस्करणहरू दाँज्नुहोस्", - "showhideselectedversions": "छानिएका पुनरावलोकनहरु देखाउने/लुकाउने", + "showhideselectedversions": "छानिएका पुनरावलोकनहरू देखाउने/लुकाउने", "editundo": "रद्द गर्ने", "diff-empty": "(कुनै भिन्नता छैन)", "diff-multi-sameuser": "(यस प्रयोगकर्ताद्वारा {{PLURAL:$1|गरिएको बीचको एउटा अवतरण देखाइएन|गरिएको बीचको $1 अवतरण देखाइएन}})", @@ -942,8 +942,6 @@ "saveprefs": "संग्रह", "restoreprefs": "सबै पूर्वनिर्धारित स्थिती कायम गर्ने(सबै खण्डहरूमा)", "prefs-editing": "सम्पादन", - "rows": "हरफहरू :", - "columns": "स्तम्भहरू :", "searchresultshead": "खोज", "stub-threshold": "<a href=\"#\" class=\"stub\">ठूटो</a> को लागि थ्रेसहोल्ड स्वरूपण (बाइट):", "stub-threshold-sample-link": "उदाहरण", @@ -1036,13 +1034,10 @@ "userrights-reason": "कारण :", "userrights-no-interwiki": "तपाईंलाई अन्य विकिमा प्रयोगकर्ता अधिकार सम्पादन गर्ने अनुमति छैन।", "userrights-nodatabase": "डेटाबेस $1 उपलब्ध छैन या स्थानीय हैन।", - "userrights-nologin": "प्रयोगकर्ता अधिकार प्रदान गर्न तपाईंले प्रबन्धक खाताबाट [[Special:UserLogin|प्रवेश]] गर्नुपर्छ।", - "userrights-notallowed": "प्रयोगकर्तालाई अधिकार प्रदान गर्ने वा हटाउने अनुमति तपाईंलाई छैन।", "userrights-changeable-col": "तपाईंले परिवर्तन गर्न सक्ने समूहहरू", "userrights-unchangeable-col": "तपाईंले परिवर्तन गर्न नसक्ने समूहहरू", "userrights-irreversible-marker": "$1*", "userrights-conflict": "प्रयोगकर्ताको अधिकार परिवर्तनमा मतभेद भयो ! कृपया तपाईंको परिवर्तन पुनरावलोकन तथा पुष्टि गर्नुहोस् ।", - "userrights-removed-self": "तपाईंले सफलतापूर्वक आफ्नो अधिकारहरूलाई मेटाउनु भयो । त्यस कारण तपाईं अब यो पृष्ठ हेर्न सक्नु हुन्न ।", "group": "समूह :", "group-user": "प्रयोगकर्ताहरू", "group-autoconfirmed": "स्वत निश्चित गरिएका प्रयोगकर्ताहरू", @@ -1319,7 +1314,7 @@ "uploaddisabledtext": "फाइल उर्ध्वभरण अक्षम पारिएकोछ", "php-uploaddisabledtext": "PHP मा फाइल उर्ध्वभरण अक्षम गरिएकोछ।\nकृपया फाइल उर्ध्वभरण व्यवस्था(setting) जाँच्नुहोस्।", "uploadscripted": "यस फाइलमा एचटीएमयल वा स्क्रिप्ट कोड छ, जुन वेब ब्राउजरद्वारा गलत पढ्न सकिनेछ।", - "uploadscriptednamespace": "यो एसभिजी फाइलमा गैह्रकानुनी नेमस्पेस \"$1\" रहेको छ ।", + "uploadscriptednamespace": "यो एसभिजी फाइलमा गैह्रकानुनी नेमस्पेस \"<nowiki>$1</nowiki>\" रहेको छ ।", "uploadinvalidxml": "अपलोड गरिएको फाइलमा रहेको एक्सयमयल पार्स गर्न सकिंदैन।", "uploadvirus": "फाइलमा भाइरस छ!\nविवरण:$1", "uploadjava": "यो फाइल एक जिप फाइल हो जसमा एउटा जाभा .class फाइल छ।\nजाभा फाइलहरू अपलोड गर्नु बन्देज छ, किनकि यसको कारण सुरक्षा बाधाहरू पार गर्न सकिन्छ।", @@ -1569,7 +1564,7 @@ "nlinks": "$1 {{PLURAL:$1|लिंक|लिंकहरू}}", "nmembers": "$1 {{PLURAL:$1|सदस्य|सदस्यहरू}}", "nmemberschanged": "$1 → $2 {{PLURAL:$2|सदस्य|सदस्यहरू}}", - "nrevisions": "$1 {{PLURAL:$1|पुनरावलोकन|पुनरावलोकनहरु}}", + "nrevisions": "$1 {{PLURAL:$1|पुनरावलोकन|पुनरावलोकनहरू}}", "nimagelinks": "$1 {{PLURAL:$1|पृष्ठ|पृष्ठहरु}}माथि प्रयोग गरिएको", "ntransclusions": "$1 {{PLURAL:$1पृष्ठमा प्रयोग गरिएको|पृष्ठहरूमा प्रयोग गरिएका}}", "specialpage-empty": "यो पृष्ठ खाली छ।", @@ -1929,10 +1924,10 @@ "restriction-level-all": "कुनै स्तर", "undelete": "मेटिएका पृष्ठहरू हेर्नुहोस्", "undeletepage": "मेटाइएका पृष्ठहरू हेर्ने अनि पुनर्स्थापित गर्ने", - "undeletepagetitle": "'''[[:$1|$1]]का मेटाइएका पुनरावलोकनहरु यसभित्र छन् '''।", + "undeletepagetitle": "'''[[:$1|$1]]का मेटाइएका पुनरावलोकनहरू यसभित्र छन् '''।", "viewdeletedpage": "मेटिएका पृष्ठहरू हेर्नुहोस्", "undeletepagetext": "निम्नलिखित {{PLURAL:$1|पृष्ठ मेटिएकोछ तर पूरालेखभित्रै छ|$1 पृष्ठ मेटिएकाछन् तर पूरालेखभित्रै छन्}} र पुनर्स्थापित गर्न सकिन्छ।\nपूरालेखको समय-समयमा सफाई गर्न सकिन्छ।", - "undelete-fieldset-title": "पुनरावलोकनहरु पूर्वावस्थामा ल्याउनुहोस्", + "undelete-fieldset-title": "पुनरावलोकनहरू पूर्वावस्थामा ल्याउनुहोस्", "undeleteextrahelp": "यस पृष्ठक पुरै इतिहास पूर्वरुपमा फर्काउनको लागि छनोट सन्दुकहरुलाई नछानी '''''{{int:undeletebtn}}''''' मा क्लिक गर्नुहोस।\nअनुकुल पूर्वरुपमा फर्काउने कार्य गर्न छनौट चाहिएका संस्करणक सन्दुकहरुलाई छानेर '''''{{int:undeletebtn}}'''''मा क्लिक गर्नुहोस।", "undeleterevisions": "$1 {{PLURAL:$1|संशोधन|संशोधनहरू}} संग्रहित", "undeletehistory": "यदि कुनै पृष्टलाई पुन: स्थापन गराउनु भयो भने सम्पूर्ण संस्करणहरू इतिहासमा पुन:स्थापन हुनेछन् ।\nयदि यसै नामबाट नयाँ पृष्ठ निर्माण भैसकेको छ भने पुन: स्थापित संस्करणहरू पूर्व इतिहासको रुपमा स्थापित हुनेछन् ।", @@ -1940,7 +1935,7 @@ "undeletehistorynoadmin": "यस पृष्ठ मेटिएको छ।\nमेटिनाको कारण निम्न जानकारीहरुमा खुलाइएको छ र मेटिनु अगिका योगदानकर्ताहरुको नाम पनि \nमेटिएका पृष्ठको पूरा पाठ प्रवन्धकहरुलाई मात्र उपलब्ध हुन्छ ।", "undelete-revision": "$3द्वारा $1को ($4को समय $5 मा) मेटाइएका संशोधनहरू :", "undeleterevision-missing": "अमान्य या मेटिएको संस्करण ।\nखराब लिन्क पनि सक्छ या संस्करण पुन: स्थापना गरिएको या अभिलेखबाट हटाइएको हुनसक्छ ।", - "undelete-nodiff": "कुनै पनि पुरानो पुनरावलोकनहरु भेटिएन ।", + "undelete-nodiff": "कुनै पनि पुरानो पुनरावलोकनहरू भेटिएन ।", "undeletebtn": "पूर्वावस्थामा ल्याउनुहोस्", "undeletelink": "हेर्ने/पूर्वरुपमा फर्काउने", "undeleteviewlink": "अवलोकन", @@ -2256,7 +2251,7 @@ "import-comment": "टिप्पणी :", "importtext": "कृपया स्रोत विकिबाट फाइल निर्यात गर्नका लागि [[Special:Export|निर्यात सुविधा]]को प्रयोग गर्नुहोस। यसलाई आफ्नो कम्प्युटरमा सङ्ग्रह गरे यहाँ अपलोड गर्नुहोस।", "importstart": "पृष्ठ आयात गरिदै...", - "import-revision-count": "$1 {{PLURAL:$1|पुनरावलोकन|पुनरावलोकनहरु}}", + "import-revision-count": "$1 {{PLURAL:$1|पुनरावलोकन|पुनरावलोकनहरू}}", "importnopages": "आयातगर्नको लागि कुनै पृष्ठ छैन।", "imported-log-entries": "आयातित $1 {{PLURAL:$1|लग प्रविष्टी|लग प्रविष्टीहरू}}", "importfailed": "आयात असफल भयो :<nowiki>$1</nowiki>", @@ -2289,7 +2284,7 @@ "importlogpage": "आयात सूची", "importlogpagetext": "अन्य विकिहरूबाट प्रवन्धकहरूद्वारा गरिएको सम्पादन इतिहाससँग हुने पृष्ठहरूको आयात।", "import-logentry-upload-detail": "$1 {{PLURAL:$1|संशोधन|संशोधनहरू}} आयात भयो", - "import-logentry-interwiki-detail": "$2 देखि $1 {{PLURAL:$1|पुनरावलोकन|पुनरावलोकनहरु}} आयात भयो", + "import-logentry-interwiki-detail": "$2 देखि $1 {{PLURAL:$1|पुनरावलोकन|पुनरावलोकनहरू}} आयात भयो", "javascripttest": "JavaScript जाँच गरिदै", "javascripttest-pagetext-unknownaction": "अज्ञात कारवाही \"$1\" ।", "javascripttest-qunit-intro": "mediawiki.org मा [$1 जाँचको कागजात] हेर्नुहोस् ।", @@ -2441,7 +2436,7 @@ "patrol-log-header": "गस्ती गरिएका संस्करणहरूको लग यस प्रकार रहेका छन् ।", "log-show-hide-patrol": "$1 निगरानी लग", "log-show-hide-tag": "$1 ट्याग लग", - "deletedrevision": "पुराना पुनरावलोकनहरु $1 मेटिए", + "deletedrevision": "पुराना पुनरावलोकनहरू $1 मेटिए", "filedeleteerror-short": "$1 फाइल मेटाइमा भूल", "filedeleteerror-long": "निम्न फाइल मेट्ने क्रममा त्रुटी भयो:\n\n$1", "filedelete-missing": "\"$1\" फाइल मेट्न सकिंदैन किनभनें यो फाइल नैं छैन।", @@ -3306,52 +3301,12 @@ "feedback-useragent": "प्रयोगकर्ता एजेन्ट:", "searchsuggest-search": "{{SITENAME}} मा खोज्नुहोस्", "searchsuggest-containing": "समावेश भएको...", - "api-error-badaccess-groups": "यस विकिमा तपाईंलाई फाइल अपलोड गर्ने अनुमति छैन।", "api-error-badtoken": "आन्तरिक समस्याः खराब टोकन ।", - "api-error-copyuploaddisabled": "यस सर्वरमा URL द्वारा अपलोड गर्ने व्यवस्था निस्क्रिय गरिएकोछ।", - "api-error-duplicate": "यस साइटमा पहिलेबाट यस्तै सामग्री {{PLURAL:$1|भएको अर्को फाइल छ|भएका केहि अरु फाइलहरू छन्}} ।", - "api-error-duplicate-archive": "यस साइटमा पहिलेबाट यस्तै सामग्री {{PLURAL:$1|भएको अर्को फाइल थियो|भएका केहि अरु फाइलहरू थिए}} ।\nतर {{PLURAL:$1|यो मेटाइएको थियो|यी मेटाइएका थिए}} ।", - "api-error-empty-file": "तपाईंले बुझाएको फाइल खालि छ।", "api-error-emptypage": "नयाँ तयार गर्दै, खाली पृष्ठ तयार गर्न अनुमति छैन ।", - "api-error-fetchfileerror": "आन्तरिक समस्याः फाइल तान्दा केही कुरा गलत भएछ ।", - "api-error-fileexists-forbidden": "\"$1\" नामको फाइल पहिले नै छ र अधिलेखित गर्न सकिंदैन।", - "api-error-fileexists-shared-forbidden": "\"$1\" नामको फाइल पहिले नै साझा फाइल भण्डारमा छ, र अधिलेखित गर्न सकिंदैन।", - "api-error-file-too-large": "तपाईंले बुझाएको फाइल अति ठूलो छ।", - "api-error-filename-tooshort": "फाइलको नाम अति छोटो भयो।", - "api-error-filetype-banned": "यस प्रकारको फाइलमाथि प्रतिबन्ध छ।", - "api-error-filetype-banned-type": "$1 फाइल {{PLURAL:$4|प्रकार|प्रकारहरू}} को अनुमति छैन। फाइल प्रकार {{PLURAL:$3|जसको|जुनको}} अनुमति छ: $2।", - "api-error-filetype-missing": "फाइलमा एक्स्टेन्शनको अभाव छ।", - "api-error-hookaborted": "एक्सटेन्शन हुकले गर्दा यस फाइललाई नयाँ रुप दिने क्रिया रद्द भयो।", - "api-error-http": "आन्तरिक त्रुटि: सर्वरसित जोड़न असमर्थ", - "api-error-illegal-filename": "यस्तो फाइल नामको अनुमति छैन।", - "api-error-internal-error": "आन्तरिक त्रुटि: विकिमा आफ्नो अपलोड प्रसंस्करणसँग केहि त्रुटि देखिएको छ।", - "api-error-invalid-file-key": "आन्तरिक त्रुटि: अस्थाई भण्डारमा फाइल पाइएन।", - "api-error-missingparam": "आन्तरिक त्रुटि: अनुरोधमा पैरामीटरहरुको कमी", - "api-error-missingresult": "आन्तरिक त्रुटि: कपी सफल भयो भएन भनेर निश्चय गर्ने सकिएन।", - "api-error-mustbeloggedin": "फाइल अपलोड गर्न तपाईंले प्रवेश गरेको हुनुपर्छ।", - "api-error-mustbeposted": "आन्तरिक त्रुटि: अनुरोधको निम्ति HTTP POST को आवश्यकता", - "api-error-noimageinfo": "अपलोड सफल भयो, तर सर्वरले फाइलको बारेमा कुनै सूचना दिएन।", - "api-error-nomodule": "आन्तरिक त्रुटि: अपलोड मोडुल सेट नगरिएको।", - "api-error-ok-but-empty": "आन्तरिक त्रुटि: सर्वरबाट कुनै उत्तर आएन।", - "api-error-overwrite": "वर्तमान फाइलमाथि अधिलेखन(Overwriting)को अनुमति छैन।", - "api-error-stashfailed": "आन्तरिक त्रुटि: अस्थाई फाइल राख्न सर्वर असफल भयो।", "api-error-publishfailed": "आन्तरिक समस्याः अस्थायी फाइल प्रकाशन गर्न सर्भर असफर भयो ।", - "api-error-stasherror": "स्टासमा फाइल अपलोड गर्दा समस्या आएको छ ।", - "api-error-stashedfilenotfound": "स्ट्यासमा राखिएको फाइल त्यहाँ अपलोड गरिने प्रयासको समयमा भेटिएन।", - "api-error-stashpathinvalid": "त्यो स्थान जहाँ स्ट्यास भएको फाइल भेट्नु पर्ने थियो त्यो अमान्य छ।", - "api-error-stashfilestorage": "फाइललाई स्ट्यासमा अपलोड गर्दा समय एक त्रुटि देखिएको छ।", - "api-error-stashzerolength": "सर्भर त्यस फाइललाई स्ट्यास गर्न सकेन, किनभने त्यसको लम्बाई शून्य छ।", - "api-error-stashnotloggedin": "तपाईंलाई लग इन हुनु आवश्यक छ ताकि फाइललाई अपलोड स्ट्यासमा सुरक्षित गर्न सकियोस।", - "api-error-stashwrongowner": "स्ट्यासको जुन फाइल सम्म तपाईं पुग्न चाहनुहुन्छ त्यो तपाईंसँग सम्बन्धित छैन।", - "api-error-stashnosuchfilekey": "फाइलको साँचो जसलाई तपाईं स्ट्यासमा प्रयोगमा ल्याउन प्रयास गर्दै हुनुहुन्छ, त्यो अस्तित्वमा छैन।", - "api-error-timeout": "अपेक्षित समय भित्रमा सर्वरले प्रतिक्रिया देखाएन।", - "api-error-unclassified": "अज्ञात समस्या आइ पर्यो", - "api-error-unknown-code": "अज्ञात त्रुटि: \"$1\"", - "api-error-unknown-error": "आन्तरिक त्रुटि: तपाईंद्वारा फाइल अपलोड गरिने प्रयास गर्दा समय केहि गलत भएको थियो।", + "api-error-stashfailed": "आन्तरिक त्रुटि: अस्थाई फाइल राख्न सर्वर असफल भयो।", "api-error-unknown-warning": "अज्ञात चेतावनी: \"$1\"", "api-error-unknownerror": "अज्ञात त्रुटि: \"$1\".", - "api-error-uploaddisabled": "यस विकिमा अपलोड निस्क्रिय गरिएकोछ।", - "api-error-verification-error": "यह फाइल खराब भइसकेको छ, वा गलत एक्सटेन्सन हो।", "duration-seconds": "$1 {{PLURAL:$1|सेकेण्ड|सेकेण्डहरू}}", "duration-minutes": "$1 {{PLURAL:$1|मिनेट|मिनेटहरू}}", "duration-hours": "$1 {{PLURAL:$1|घण्टा|घण्टाहरू}}", diff --git a/languages/i18n/nl.json b/languages/i18n/nl.json index 06ad2e6b84..a688c4276d 100644 --- a/languages/i18n/nl.json +++ b/languages/i18n/nl.json @@ -82,7 +82,9 @@ "MrLeopold", "Hex", "Xxmarijnw", - "Mainframe98" + "Mainframe98", + "QZanden", + "Huhbakker" ] }, "tog-underline": "Verwijzingen onderstrepen:", @@ -250,6 +252,7 @@ "searcharticle": "OK", "history": "Geschiedenis", "history_short": "Geschiedenis", + "history_small": "geschiedenis", "updatedmarker": "bewerkt sinds mijn laatste bezoek", "printableversion": "Printvriendelijke versie", "permalink": "Permanente koppeling", @@ -488,19 +491,12 @@ "login": "Aanmelden", "login-security": "Uw identiteit controleren", "nav-login-createaccount": "Aanmelden / registreren", - "userlogin": "Aanmelden / registreren", - "userloginnocreate": "Aanmelden", "logout": "Afmelden", "userlogout": "Afmelden", "notloggedin": "Niet aangemeld", "userlogin-noaccount": "Hebt u geen account?", "userlogin-joinproject": "Word lid van {{SITENAME}}", - "nologin": "Hebt u geen account? $1.", - "nologinlink": "Registreren", "createaccount": "Registreren", - "gotaccount": "Hebt u al een account? $1.", - "gotaccountlink": "Aanmelden", - "userlogin-resetlink": "Bent u uw aanmeldgegevens vergeten?", "userlogin-resetpassword-link": "Wachtwoord vergeten?", "userlogin-helplink2": "Hulp bij aanmelden", "userlogin-loggedin": "U bent al aangemeld als {{GENDER:$1|$1}}.\nGebruik het onderstaande formulier om aan te melden als een andere gebruiker.", @@ -513,7 +509,6 @@ "createaccountmail": "Gebruik een tijdelijk willekeurig wachtwoord en stuur het naar het opgegeven e-mailadres", "createaccountmail-help": "Kan worden gebruikt voor het aanmaken van een gebruiker voor een andere persoon zonder het wachtwoord te leren.", "createacct-realname": "Echte naam (optioneel)", - "createaccountreason": "Reden:", "createacct-reason": "Reden", "createacct-reason-ph": "Waarom u een andere account aanmaakt", "createacct-reason-help": "Weergegeven bericht in het logbestand van aangemaakte gebruikers", @@ -654,7 +649,7 @@ "passwordreset-emailsentusername": "Als er een e-mailadres geregistreerd is voor die gebruikersnaam, dan wordt er een e-mail verzonden om uw wachtwoord opnieuw in te stellen.", "passwordreset-nocaller": "Een aanroeper moet worden opgegeven", "passwordreset-nosuchcaller": "Aanroeper bestaat niet: $1", - "passwordreset-ignored": "Opnieuw instellen van het wachtwoord niet is afgehandeld. Misschien is er geen provider geconfigureerd?", + "passwordreset-ignored": "Het opnieuw instellen van het wachtwoord niet is afgehandeld. Misschien is er geen provider geconfigureerd?", "passwordreset-invalidemail": "Ongeldig e-mailadres", "passwordreset-nodata": "Er is geen gebruikersnaam of e-mailadres opgegeven", "changeemail": "E-mailadres wijzigen of verwijderen", @@ -712,8 +707,8 @@ "selfredirect": "<strong>Waarschuwing:</strong> U heeft een doorverwijzing gemaakt naar deze pagina. Mogelijk heeft u de verkeerde bestemming voor de doorverwijzing gebruikt, of bewerkt u de verkeerde pagina. Door nogmaals op \"{{int:savearticle}}\" te klikken word de doorverwijzing alsnog aangemaakt.", "missingcommenttext": "Plaats uw reactie hieronder.", "missingcommentheader": "<strong>Let op:</strong> u hebt geen onderwerp/kop voor deze opmerking opgegeven.\nAls u opnieuw op \"{{int:savearticle}}\" klikt, wordt uw wijziging zonder een onderwerp/kop opgeslagen.", - "summary-preview": "Bewerkingssamenvatting nakijken:", - "subject-preview": "Onderwerp nakijken:", + "summary-preview": "Voorvertoning van de bewerkingssamenvatting:", + "subject-preview": "Voorvertoning van het onderwerp:", "previewerrortext": "Er is een fout opgetreden tijdens het weergeven van uw wijzigingen.", "blockedtitle": "Gebruiker is geblokkeerd", "blockedtext": "'''Uw gebruiker of IP-adres is geblokkeerd.'''\n\nDe blokkade is uitgevoerd door $1.\nDe opgegeven reden is ''$2''.\n\n* Aanvang blokkade: $8\n* Einde blokkade: $6\n* Bedoeld te blokkeren: $7\n\nU kunt contact opnemen met $1 of een andere [[{{MediaWiki:Grouppage-sysop}}|beheerder]] om de blokkade te bespreken.\nU kunt geen gebruik maken van de functie \"Deze gebruiker e-mailen\", tenzij u een geldig e-mailadres hebt opgegeven in uw [[Special:Preferences|voorkeuren]] en het gebruik van deze functie niet geblokkeerd is.\nUw huidige IP-adres is $3 en het blokkadenummer is #$5.\nVermeld alle bovenstaande gegevens als u ergens op deze blokkade reageert.", @@ -1020,6 +1015,7 @@ "search-interwiki-caption": "Zusterprojecten", "search-interwiki-default": "Resultaten van $1:", "search-interwiki-more": "(meer)", + "search-interwiki-more-results": "meer resultaten", "search-relatedarticle": "Gerelateerd", "searchrelated": "gerelateerd", "searchall": "alle", @@ -1109,6 +1105,7 @@ "youremail": "E-mailadres:", "username": "{{GENDER:$1|Gebruikersnaam}}:", "prefs-memberingroups": "{{GENDER:$2|Lid}} van {{PLURAL:$1|groep|groepen}}:", + "group-membership-link-with-expiry": "$1 (tot $2)", "prefs-registration": "Registratiedatum:", "yourrealname": "Echte naam:", "yourlanguage": "Taal:", @@ -1153,17 +1150,26 @@ "editusergroup": "Gebruikersgroepen wijzigen", "editinguser": "Bezig met wijzigen van de gebruikersrechten van gebruiker '''[[User:$1|$1]]''' $2", "viewinguserrights": "Gebruikersrechten bekijken van {{GENDER:$1|gebruiker}} <strong>[[User:$1|$1]]</strong> $2", - "userrights-editusergroup": "Gebruikersgroepen wijzigen", - "userrights-viewusergroup": "Toon gebruikersgroepen", + "userrights-editusergroup": "{{GENDER:$1|Gebruikersgroepen}} wijzigen", + "userrights-viewusergroup": "Toon {{GENDER:$1|gebruikersgroepen}}", "saveusergroups": "{{GENDER:$1|Gebruikersgroepen}} opslaan", "userrights-groupsmember": "Lid van:", "userrights-groupsmember-auto": "Impliciet lid van:", - "userrights-groups-help": "U kunt de groepen wijzigen waar deze gebruiker lid van is.\n* Een aangekruist vakje betekent dat de gebruiker lid is van de groep.\n* Een niet aangekruist vakje betekent dat de gebruiker geen lid is van de groep.\n* Een \"*\" betekent dat u een gebruiker niet uit een groep kunt verwijderen nadat u die hebt toegevoegd of vice versa.", + "userrights-groups-help": "U kunt de groepen wijzigen waar deze gebruiker lid van is.\n* Een aangekruist vakje betekent dat de gebruiker lid is van de groep.\n* Een niet aangekruist vakje betekent dat de gebruiker geen lid is van de groep.\n* Een \"*\" betekent dat u een gebruiker niet uit een groep kunt verwijderen nadat u die hebt toegevoegd of vice versa.\n* Een \"#\" betekent dat u de verlooptijd van deze groep alleen kunt verkorten. U kunt deze niet verlengen.", "userrights-reason": "Reden:", "userrights-no-interwiki": "U hebt geen rechten om gebruikersrechten op andere wiki's te wijzigen.", "userrights-nodatabase": "De database $1 bestaat niet of is geen lokale database.", "userrights-changeable-col": "Groepen die u kunt beheren", "userrights-unchangeable-col": "Groepen die u niet kunt beheren", + "userrights-expiry-current": "Vervalt op $1", + "userrights-expiry-none": "Vervalt niet", + "userrights-expiry": "Vervalt:", + "userrights-expiry-existing": "Bestaande vervaldatum: $2 om $3", + "userrights-expiry-othertime": "Andere tijd:", + "userrights-expiry-options": "1 dag:1 day,1 week:1 week,1 maand:1 month,3 maanden:3 months,6 maanden:6 months,1 jaar:1 year", + "userrights-invalid-expiry": "De vervaltijd voor de groep \"$1\" is ongeldig.", + "userrights-expiry-in-past": "De vervaltijd voor de groep \"$1\" is in het verleden.", + "userrights-cannot-shorten-expiry": "Kunt de verlooptijd van de groep \"$1\" niet verkorten. Alleen gebruiker met het recht om deze groep toe te voegen of te verwijderen kunnen de verlooptijd verkorten.", "userrights-conflict": "Er is een probleem opgetreden tijdens het instellen van de gebruikersrechten! Controleer en bevestig uw wijzigingen.", "group": "Groep:", "group-user": "gebruikers", @@ -1365,21 +1371,53 @@ "recentchanges-legend-plusminus": "(''±123'')", "recentchanges-submit": "Weergeven", "rcfilters-activefilters": "Actieve filters", + "rcfilters-restore-default-filters": "Standaard filters terugzetten", + "rcfilters-clear-all-filters": "Alle filters verwijderen", "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-feedbacklink": "Geef feedback op de nieuwe (beta) filters", + "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-filtergroup-registration": "Gebruikers-registratie", + "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-filtergroup-authorship": "Bewerken auteurschap", "rcfilters-filter-editsbyself-label": "Uw eigen bewerkingen", "rcfilters-filter-editsbyself-description": "Bewerkingen door u.", "rcfilters-filter-editsbyother-label": "Bewerkingen door anderen", - "rcfilters-filter-editsbyother-description": "Bewerkingen die gemaakt zijn door andere gebruikers (niet door uzelf.)", - "rcfilters-filtergroup-userExpLevel": "Gebruikerservarings niveau", - "rcfilters-filter-userExpLevel-newcomer-label": "Nieuwkomers", - "rcfilters-filter-userExpLevel-newcomer-description": "Zeer nieuwe bewerkers: minder dan 10 bewerkingen en 4 dagen van activiteit.", - "rcfilters-filter-userExpLevel-learner-label": "Leerlingen", - "rcfilters-filter-userExpLevel-learner-description": "Meer dagen van activiteit en bewerkingen dan 'Nieuwkomers', maar minder dan 'Ervaren gebruikers.'", - "rcfilters-filter-userExpLevel-experienced-label": "Ervaren gebruikers", - "rcfilters-filter-userExpLevel-experienced-description": "Meer dan 30 dagen van activiteit en 500 bewerkingen.", + "rcfilters-filter-editsbyother-description": "Bewerkingen die gemaakt zijn door andere gebruikers (niet door uzelf).", + "rcfilters-filtergroup-userExpLevel": "Gebruikerservarings niveau (alleen voor geregistreerde gebruikers)", + "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-learner-label": "Leerlingen", + "rcfilters-filter-user-experience-level-learner-description": "Meer dagen van activiteit en bewerkingen 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-filtergroup-automated": "Automatische bijdragen", + "rcfilters-filter-bots-label": "Bot", + "rcfilters-filter-bots-description": "De wijzigingen van geautomatiseerde hulpmiddelen.", + "rcfilters-filter-humans-label": "Menselijk (geen bot)", + "rcfilters-filter-humans-description": "Bewerkingen door menselijke bewerkers.", + "rcfilters-filtergroup-significance": "Belangrijkheid", + "rcfilters-filter-minor-label": "Kleine bewerkingen", + "rcfilters-filter-minor-description": "Bewerkingen die door de bewerker zijn gelabeld als klein.", + "rcfilters-filter-major-label": "Geen kleine bewerking", + "rcfilters-filter-major-description": "Bewerkingen niet gelabeld als klein.", + "rcfilters-filtergroup-changetype": "Soort wijziging", + "rcfilters-filter-pageedits-label": "Paginabewerkingen", + "rcfilters-filter-pageedits-description": "Wijzigingen aan de wiki inhoud, discussies, categorie beschrijvingen....", + "rcfilters-filter-newpages-label": "Nieuwe pagina's", + "rcfilters-filter-newpages-description": "Bewerkingen die een nieuwe pagina aanmaken.", + "rcfilters-filter-categorization-label": "Categorie wijzigingen", + "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....", "rcnotefrom": "Wijzigingen sinds <strong>$3 om $4</strong> (maximaal <strong>$1</strong> {{PLURAL:$1|wijziging|wijzigingen}}).", "rclistfrom": "Wijzigingen bekijken vanaf $3 $2", "rcshowhideminor": "Kleine bewerkingen $1", @@ -1513,7 +1551,7 @@ "uploaded-setting-handler-svg": "SVG-bestanden die de eigenschap \"handler\" instellen met remote, data of script worden geblokkeerd. <code>$1=\"$2\"</code> is aangetroffen in het geüploade SVG-bestand.", "uploaded-remote-url-svg": "SVG-bestanden die de style-eigenschap gebruiken met een remote URL worden geblokkeerd. <code>$1=\"$2\"</code> is aangetroffen in het geüploade SVG-bestand.", "uploaded-image-filter-svg": "Er is een afbeeldingsfilter met URL aangetroffen: <code><$1 $2=\"$3\"></code> in het geüploade SVG-bestand.", - "uploadscriptednamespace": "Dit SVG-bestand bevat een ongeldige naamruimte \"$1\".", + "uploadscriptednamespace": "Dit SVG-bestand bevat een ongeldige naamruimte <nowiki>\"$1\"</nowiki>.", "uploadinvalidxml": "De XML in het geüploade bestand kon niet worden verwerkt.", "uploadvirus": "Het bestand bevat een virus! Details: $1", "uploadjava": "Het bestand is een ZIP-bestand dat een Java .class-bestand bevat.\nHet uploaden van Java-bestanden is niet toegestaan omdat hiermee beveiligingsinstellingen omzeild kunnen worden.", @@ -1792,6 +1830,7 @@ "uncategorizedcategories": "Niet-gecategoriseerde categorieën", "uncategorizedimages": "Niet-gecategoriseerde bestanden", "uncategorizedtemplates": "Niet-gecategoriseerde sjablonen", + "uncategorized-categories-exceptionlist": "# Bevat een lijst van categorieën, welke niet op Speciaal:NietGecategoriseerdeCategorieën getoond moeten worden. Een per regel, beginnend met \"*\". Regels die starten met een ander teken (inclusief witruimte) worden genegeerd. Gebruik \"#\" voor opmerkingen.", "unusedcategories": "Ongebruikte categorieën", "unusedimages": "Ongebruikte bestanden", "wantedcategories": "Niet-bestaande categorieën met de meeste koppelingen", @@ -1890,8 +1929,10 @@ "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-request-params-json": "JSON parameters:", + "apisandbox-request-selectformat-label": "Toon resultaat als:", + "apisandbox-request-format-url-label": "URL query string", "apisandbox-request-url-label": "Verzoek-URL:", + "apisandbox-request-json-label": "Verzoek JSON:", "apisandbox-request-time": "Doorlooptijd verzoek: {{PLURAL:$1|$1 ms}}", "apisandbox-results-fixtoken": "Token corrigeren en opnieuw verzenden", "apisandbox-results-fixtoken-fail": "Het ophalen van het token van type \"$1\" is mislukt.", @@ -1992,7 +2033,7 @@ "listgrants-grant": "Toestemming", "listgrants-rights": "Rechten", "trackingcategories": "Volgcategorieën", - "trackingcategories-summary": "Op deze pagina worden volgcategorieën weergegeven die automatisch worden gevuld door de MediaWikisoftware. De namen van de categorieën kunnen gewijzigd worden door de bijbehorende systeemberichten in de naamruimte \"{{ns:8}}\" bij te werken.", + "trackingcategories-summary": "Op deze pagina worden volgcategorieën weergegeven die automatisch worden gevuld door de MediaWiki software. De namen van de categorieën kunnen gewijzigd worden door de bijbehorende systeemberichten in de naamruimte \"{{ns:8}}\" bij te werken.", "trackingcategories-msg": "Volgcategorie", "trackingcategories-name": "Berichtnaam", "trackingcategories-desc": "Opnamecriteria", @@ -2033,7 +2074,7 @@ "emailccsubject": "Kopie van uw bericht aan $1: $2", "emailsent": "E-mail verzonden", "emailsenttext": "Uw e-mail is verzonden.", - "emailuserfooter": "Deze e-mail is door $1 aan {{GENDER:$2|$2}} {{GENDER:$1|verstuurd}} middels de functie \"{{int:emailuser}}\" van {{SITENAME}}. {{GENDER:$2|Uw}} e-mail wordt direct naar de {{GENDER:$1|oorspronkelijke afzender}} verstuurd, waardoor {{GENDER:$2|uw}} e-mailadres aan {{GENDER:$1|hem|haar|hem of haar}} onthuld wordt.", + "emailuserfooter": "Deze e-mail is door $1 aan {{GENDER:$2|$2}} {{GENDER:$1|verstuurd}} middels de functie \"{{int:emailuser}}\" van {{SITENAME}}. Indien {{GENDER:$2|uw}} reageert op deze e-mail, wordt uw e-mail direct naar de {{GENDER:$1|oorspronkelijke afzender}} verstuurd, waardoor {{GENDER:$2|uw}} e-mailadres aan {{GENDER:$1|hem|haar|hem of haar}} onthuld wordt.", "usermessage-summary": "Systeembericht achtergelaten", "usermessage-editor": "Systeembericht", "watchlist": "Volglijst", @@ -2043,12 +2084,12 @@ "watchlistanontext": "Om uw volglijst te bekijken of te bewerken moet u zich aanmelden.", "watchnologin": "U bent niet aangemeld", "addwatch": "Toevoegen aan volglijst", - "addedwatchtext": "\"[[:$1]]\" en de bijhorende overlegpagina zijn toegevoegd aan uw [[Special:Watchlist|volglijst]].", - "addedwatchtext-talk": "\"[[:$1]]\" en de gerelateerde pagina zijn toegevoegd aan je [[Special:Watchlist|volglijst]].", + "addedwatchtext": "\"[[:$1]]\" en de bijbehorende overlegpagina zijn toegevoegd aan uw [[Special:Watchlist|volglijst]].", + "addedwatchtext-talk": "\"[[:$1]]\" en de bijbehorende pagina zijn toegevoegd aan uw [[Special:Watchlist|volglijst]].", "addedwatchtext-short": "De pagina \"$1\" is aan uw volglijst toegevoegd.", "removewatch": "Verwijderen uit volglijst", - "removedwatchtext": "\"[[:$1]]\" en de bijhorende overlegpagina zijn verwijderd van uw [[Special:Watchlist|volglijst]].", - "removedwatchtext-talk": "\"[[:$1]]\" en de bijhorende pagina zijn verwijderd van uw [[Special:Watchlist|volglijst]].", + "removedwatchtext": "\"[[:$1]]\" en de bijbehorende overlegpagina zijn verwijderd van uw [[Special:Watchlist|volglijst]].", + "removedwatchtext-talk": "\"[[:$1]]\" en de bijbehorende pagina zijn verwijderd van uw [[Special:Watchlist|volglijst]].", "removedwatchtext-short": "De pagina \"$1\" is van uw volglijst verwijderd.", "watch": "Volgen", "watchthispage": "Pagina volgen", @@ -2131,7 +2172,7 @@ "editcomment": "De bewerkingssamenvatting was: <em>$1</em>.", "revertpage": "Wijzigingen door [[Special:Contributions/$2|$2]] ([[User talk:$2|Overleg]]) hersteld tot de laatste versie door [[User:$1|$1]]", "revertpage-nouser": "Wijzigingen door een verborgen gebruiker teruggedraaid naar de laatste versie door {{GENDER:$1|[[User:$1|$1]]}}", - "rollback-success": "De wijzigingen door $1 zijn teruggedraaid.\nDe laatste versie van $2 is hersteld.", + "rollback-success": "De wijzigingen door {{GENDER:$3|$1}} zijn teruggedraaid.\nDe laatste versie van {{GENDER:$4|$2}} is hersteld.", "rollback-success-notify": "De wijzigingen door $1 zijn teruggedraaid;\nde laatste versie van $2 is hersteld. [$3 Wijzigingen weergeven]", "sessionfailure-title": "Sessiefout", "sessionfailure": "Er lijkt een probleem te zijn met uw aanmeldsessie.\nUw handeling is gestopt uit voorzorg tegen een beveiligingsrisico (dat bestaat uit mogelijke \"hijacking\" van deze sessie).\nGa een pagina terug, laad die pagina opnieuw en probeer het nog eens.", @@ -2798,6 +2839,7 @@ "newimages-showbots": "Uploads door bots weergeven", "newimages-hidepatrolled": "Gecontroleerde uploads verbergen", "noimages": "Er is niets te zien.", + "gallery-slideshow-toggle": "Miniaturen schakelen", "ilsubmit": "Zoeken", "bydate": "op datum", "sp-newimages-showfrom": "Nieuwe bestanden bekijken vanaf $1 om $2.", @@ -3572,7 +3614,7 @@ "logentry-tag-update-revision": "$1 heeft de labels van versie $4 van pagina $3 {{GENDER:$2|bijgewerkt}} ($6 {{PLURAL:$7|toegevoegd}}; $8 {{PLURAL:$9|verwijderd}})", "logentry-tag-update-logentry": "$1 heeft de labels van logboekregel $5 van pagina $3 {{GENDER:$2|bijgewerkt}} ($6 {{PLURAL:$7|toegevoegd}}; $8 {{PLURAL:$9|verwijderd}})", "rightsnone": "(geen)", - "revdelete-summary": "bewerkingssamenvatting", + "rightslogentry-temporary-group": "$1 (tijdelijk, tot $2)", "feedback-adding": "Uw terugkoppeling wordt aan de pagina toegevoegd...", "feedback-back": "Terug", "feedback-bugcheck": "Geweldig! Controleer even of het niet al één van de [$1 bekende problemen] is.", @@ -3597,56 +3639,12 @@ "feedback-useragent": "Useragent:", "searchsuggest-search": "Doorzoek {{SITENAME}}", "searchsuggest-containing": "bevat...", - "api-error-autoblocked": "Uw IP-adres is automatisch geblokeerd, omdat het gebruikt is door een geblokkeerde gebruiker.", - "api-error-badaccess-groups": "U mag geen bestanden uploaden in deze wiki.", "api-error-badtoken": "Interne fout: het token klopt niet.", - "api-error-blocked": "U bent geblokkeerd en kunt niet bewerken.", - "api-error-copyuploaddisabled": "Uploaden via URL is uitgeschakeld op deze server.", - "api-error-duplicate": "Er {{PLURAL:$1|bestaat al een bestand|bestaan al bestanden}} met dezelfde inhoud op de wiki.", - "api-error-duplicate-archive": "Er {{PLURAL:$1|was al een ander bestand|waren al andere bestanden}} op de site met dezelfde inhoud, maar {{PLURAL:$1|deze is|deze zijn}} verwijderd.", - "api-error-empty-file": "Het bestand dat u hebt geüpload is leeg.", "api-error-emptypage": "Het aanmaken van nieuwe, lege pagina's is niet toegestaan.", - "api-error-fetchfileerror": "Interne fout: er is iets misgegaan bij het ophalen van het bestand.", - "api-error-fileexists-forbidden": "Er bestaat al een bestand met de naam \"$1\" dat niet overschreven kan worden.", - "api-error-fileexists-shared-forbidden": "Er bestaat al een bestand met de naam \"$1\" in de gedeelde repository dat niet overschreven kan worden.", - "api-error-file-too-large": "Het bestand dat u hebt geüpload is te groot.", - "api-error-filename-tooshort": "De bestandsnaam is te kort.", - "api-error-filetype-banned": "Dit bestandstype mag niet geüpload worden.", - "api-error-filetype-banned-type": "{{PLURAL:$4|Het bestandstype $1 wordt|De bestandstypes $1 worden}} niet toegelaten. {{PLURAL:$3|Het toegelaten bestandstype is|De toegelaten bestandstypes zijn}} $2.", - "api-error-filetype-missing": "Het bestand heeft geen extensie.", - "api-error-hookaborted": "De wijziging die u probeert te maken is afgebroken door een uitbreiding.", - "api-error-http": "Interne fout: er kon geen verbinding gemaakt worden met de server.", - "api-error-illegal-filename": "Deze bestandsnaam is niet toegestaan.", - "api-error-internal-error": "Interne fout: er is iets misgegaan tijdens het verwerken van uw upload door de wiki.", - "api-error-invalid-file-key": "Interne fout: het bestand is niet aangetroffen in de tijdelijke opslag.", - "api-error-missingparam": "Interne fout: niet alle parameters zijn in het verzoek meegeleverd.", - "api-error-missingresult": "Interne fout: het was niet mogelijk vast te stellen of het kopiëren is geslaagd.", - "api-error-mustbeloggedin": "U moet aangemeld zijn om bestanden te kunnen uploaden.", - "api-error-mustbeposted": "Er zit een fout in de software. Er wordt geen gebruik gemaakt van de juiste HTTP-methode.", - "api-error-noimageinfo": "De upload is afgerond, maar de server heeft geen gegevens over het bestand verstrekt.", - "api-error-nomodule": "Interne fout: er is geen uploadmodule ingesteld.", - "api-error-ok-but-empty": "Interne fout: de server heeft geen gegevens teruggeleverd.", - "api-error-overwrite": "Het overschrijven van een bestand bestand is niet toegestaan.", - "api-error-ratelimited": "U probeert meer bestanden te uploaden in een korte periode dan deze wiki toelaat.\nProbeer het over een aantal minuten opnieuw.", - "api-error-stashfailed": "Interne fout: de server kon het tijdelijke bestand niet opslaan.", "api-error-publishfailed": "Interne fout: de server kon het tijdelijke bestand niet publiceren.", - "api-error-stasherror": "Er is een fout opgetreden tijdens het uploaden van het bestand naar de tijdelijke opslagruimte.", - "api-error-stashedfilenotfound": "Het opgeslagen bestand is niet aangetroffen tijdens het uploaden vanuit de stash.", - "api-error-stashpathinvalid": "Het pad waar het bestand in de stash werd verwacht is ongeldig.", - "api-error-stashfilestorage": "Er is een fout opgetreden tijdens het opslaan van het bestand in de stash.", - "api-error-stashzerolength": "De server kon het bestand niet opslaan in de stash, omdat het een lengte van nul had.", - "api-error-stashnotloggedin": "U moet aangemeld zijn om bestanden te kunnen opslaan in de stash.", - "api-error-stashwrongowner": "U bent geen eigenaar van het bestand waar u toegang tot probeerde te krijgen.", - "api-error-stashnosuchfilekey": "Het sleutelbestand in de stash waar u toegang tot probeert te krijgen bestaat niet.", - "api-error-timeout": "De server heeft niet binnen de verwachte tijd geantwoord.", - "api-error-unclassified": "Er is een onbekende fout opgetreden", - "api-error-unknown-code": "Interne fout: \"$1\"", - "api-error-unknown-error": "Interne fout: er is iets misgegaan tijdens het uploaden van uw bestand.", + "api-error-stashfailed": "Interne fout: de server kon het tijdelijke bestand niet opslaan.", "api-error-unknown-warning": "Onbekende waarschuwing: \"$1\".", "api-error-unknownerror": "Onbekende fout: \"$1\"", - "api-error-uploaddisabled": "Uploaden is niet mogelijk in deze wiki.", - "api-error-verification-error": "Dit bestand is mogelijk beschadigd of heeft een onjuiste extensie.", - "api-error-was-deleted": "Een bestand met deze naam is al eerder geüpload en vervolgens verwijderd.", "duration-seconds": "$1 {{PLURAL:$1|seconde|seconden}}", "duration-minutes": "$1 {{PLURAL:$1|minuut|minuten}}", "duration-hours": "$1 {{PLURAL:$1|uur|uren}}", @@ -3768,6 +3766,7 @@ "mw-widgets-titleinput-description-new-page": "pagina bestaat nog niet", "mw-widgets-titleinput-description-redirect": "doorverwijzing naar $1", "mw-widgets-categoryselector-add-category-placeholder": "Voeg een categorie toe...", + "mw-widgets-usersmultiselect-placeholder": "Meer toevoegen...", "sessionmanager-tie": "Het is niet mogelijk om meerdere authenticatietypen voor verzoeken te combineren: $1.", "sessionprovider-generic": "$1-sessies", "sessionprovider-mediawiki-session-cookiesessionprovider": "op cookies gebaseerde sessies", @@ -3823,10 +3822,22 @@ "log-action-filter-suppress-reblock": "Verbergen van gebruiker tijdens wijzigen blokkade", "log-action-filter-upload-upload": "Nieuwe upload", "log-action-filter-upload-overwrite": "Herupload", + "authmanager-authn-not-in-progress": "Verificatie is niet in uitvoering of de sessiegegevens zijn verloren gegaan. Gelieve opnieuw starten vanaf het begin.", + "authmanager-authn-no-primary": "De meegeleverde inloggegevens kunnen niet worden geverifieerd.", + "authmanager-authn-no-local-user": "De ingevoerde inloggegevens zijn niet geassocieerd met een gebruiker op deze wiki.", + "authmanager-authn-no-local-user-link": "De meegeleverde inloggegevens zijn geldig, maar zijn niet gekoppeld aan enige gebruiker op deze wiki. Log in op een andere manier, of creëer een nieuwe gebruiker, en u heeft een optie om uw eerdere inloggegevens van te koppelen.", "authmanager-authn-autocreate-failed": "Het automatisch aanmaken van een lokaal account is mislukt: $1", + "authmanager-change-not-supported": "De meegeleverde inloggegevens kunnen niet worden gewijzigd, omdat niets deze zou gebruiken.", "authmanager-create-disabled": "Het aanmaken van accounts is uitgeschakeld.", "authmanager-create-from-login": "Om een account aan te maken, gelieve de velden in te vullen.", + "authmanager-create-not-in-progress": "Het maken van een account is niet in uitvoering of de sessiegegevens zijn verloren gegaan. Gelieve opnieuw starten vanaf het begin.", + "authmanager-create-no-primary": "De meegeleverde inloggegevens kunnen niet worden gebruikt voor het aanmaken van uw account.", + "authmanager-link-no-primary": "De meegeleverde inloggegevens kunnen niet worden gebruikt om een account te koppelen.", + "authmanager-link-not-in-progress": "Account koppelen is niet gestart of de sessiegegevens zijn verloren gegaan. Gelieve opnieuw starten vanaf het begin.", "authmanager-authplugin-setpass-failed-title": "Wachtwoord wijzigen is mislukt", + "authmanager-authplugin-setpass-failed-message": "De verificatie-invoegtoepassing heeft het wijzigen van het wachtwoord geweigerd.", + "authmanager-authplugin-create-fail": "De verificatie-invoegtoepassing heeft geweigerd uw account aan te maken.", + "authmanager-authplugin-setpass-denied": "De verificatie-invoegtoepassing staat het wijzigen van wachtwoorden niet toe.", "authmanager-authplugin-setpass-bad-domain": "Ongeldig domein.", "authmanager-autocreate-noperm": "Het automatisch aanmaken van accounts is niet toegestaan.", "authmanager-autocreate-exception": "Het automatisch aanmaken van accounts is tijdelijk uitgeschakelijk vanwege eerdere fouten.", @@ -3843,20 +3854,35 @@ "authmanager-provider-password": "Op wachtwoord gebaseerde authenticatie", "authmanager-provider-password-domain": "Wachtwoord- en domeingebaseerde authentificatie", "authmanager-provider-temporarypassword": "Tijdelijk wachtwoord", + "authprovider-confirmlink-message": "Op basis van uw recente login pogingen, kan het volgende account worden gekoppeld aan uw wiki account. Het koppelen van stelt U in staat in te loggen via deze accounts. Gelieve te selecteren welk account moet worden gekoppeld.", + "authprovider-confirmlink-request-label": "Accounts die aan elkaar moeten worden gekoppeld.", "authprovider-confirmlink-success-line": "$1: Succesvol gekoppeld.", + "authprovider-confirmlink-failed": "Account koppelen is niet volledig gelukt: $1", + "authprovider-confirmlink-ok-help": "Doorgaan na het weergeven van de storingsmeldingen over het koppelen.", "authprovider-resetpass-skip-label": "Overslaan", "authprovider-resetpass-skip-help": "Sla het resetten van het wachtwoord over.", + "authform-nosession-login": "De verificatie is geslaagd, maar uw browser heeft niet \"onthouden\" ingelogd te zijn.\n!\n$1", + "authform-nosession-signup": "Het account is aangemaakt, maar uw browser heeft niet \"onthouden\" om ingelogd te zijn.\n!\n$1", "authform-newtoken": "Ontbrekend token. $1", "authform-notoken": "Ontbrekend token", "authform-wrongtoken": "Verkeerd token", "specialpage-securitylevel-not-allowed-title": "Niet toegestaan", + "specialpage-securitylevel-not-allowed": "Sorry, het is u niet toegestaan gebruik te maken van deze pagina omdat uw identiteit niet kon worden geverifieerd.", + "authpage-cannot-login": "Niet in staat om te beginnen met aanmelden.", + "authpage-cannot-login-continue": "Niet mogelijk om in te loggen. Uw sessie is waarschijnlijk verlopen.", + "authpage-cannot-create": "Kon het account aanmaken niet starten.", + "authpage-cannot-create-continue": "Kan niet doorgaan met het aanmaken van een account. Uw sessie is waarschijnlijk verlopen.", + "authpage-cannot-link": "Niet in staat om het account te kunnen koppelen.", + "authpage-cannot-link-continue": "Niet mogelijk het account te koppelen. Uw sessie is waarschijnlijk verlopen.", "cannotauth-not-allowed-title": "Geen toegang", "cannotauth-not-allowed": "U hebt geen toestemming om deze pagina te gebruiken", "changecredentials": "Authenticatiegegevens wijzigen", "changecredentials-submit": "Authenticatiegegevens wijzigen", + "changecredentials-invalidsubpage": "$1 is geen geldig identificatietype.", "changecredentials-success": "Uw authenticatiegegevens zijn gewijzigd.", "removecredentials": "Authenticatiegegevens verwijderen", "removecredentials-submit": "Authenticatiegegevens verwijderen", + "removecredentials-invalidsubpage": "$1 is geen geldig identificatietype.", "removecredentials-success": "Uw authenticatiegegevens zijn verwijderd.", "credentialsform-provider": "Soort authenticatiegegevens:", "credentialsform-account": "Gebruikersnaam:", @@ -3867,10 +3893,12 @@ "linkaccounts-submit": "Accounts koppelen", "unlinkaccounts": "Accounts ontkoppelen", "unlinkaccounts-success": "Het account is ontkoppeld.", + "authenticationdatachange-ignored": "De wijziging van de authenticatie gegevens zijn niet afgehandeld. Misschien is er geen provider is geconfigureerd?", "userjsispublic": "Let op: JavaScript deelpagina's moeten geen vertrouwelijke gegevens bevatten omdat ze kunnen worden bekeken door andere gebruikers.", "usercssispublic": "Let op: CSS deelpagina's moeten geen vertrouwelijke gegevens bevatten omdat ze kunnen worden bekeken door andere gebruikers.", "restrictionsfield-badip": "Ongeldig IP-adres of range: $1", "restrictionsfield-label": "Toegestane IP-ranges:", + "restrictionsfield-help": "Een IP-adres of CIDR bereik per lijn. Om alles toe te staan, gebruik:<pre>0.0.0.0/0\n::/0</pre>", "revid": "versie $1", "pageid": "Pagina-ID $1" } diff --git a/languages/i18n/nn.json b/languages/i18n/nn.json index 6685817fca..34c9782b02 100644 --- a/languages/i18n/nn.json +++ b/languages/i18n/nn.json @@ -166,7 +166,7 @@ "newwindow": "(vert opna i eit nytt vindauge)", "cancel": "Avbryt", "moredotdotdot": "Meir …", - "morenotlisted": "Lista er ikkje heil.", + "morenotlisted": "Lista er kanskje ikkje heil.", "mypage": "Sida mi", "mytalk": "Diskusjon", "anontalk": "Diskusjon", @@ -188,11 +188,13 @@ "tagline": "FrÃ¥ {{SITENAME}}", "help": "Hjelp", "search": "Søk", + "search-ignored-headings": "#<!-- la denne lina vere som ho er --> <pre>\n# Overskrifter som skal ignorerast av søk.\n# Endringar til denne trer i kraft sÃ¥ snart sida med overskrifta blir indeksert.\n# Du kan tvinge gjenindeksering av sida ved Ã¥ gjere ein null-redigering.\n# Syntaksen er som fylgjer:\n# * Alt frÃ¥ eit «#»-teikn til slutten av lina er ein kommentar.\n# * Kvar ikkje-blank line er den eksakte tittelen som skal ignorerast, det vert òg skilt mellom store og smÃ¥ bokstavar\nLitteratur\nBakgrunnsstoff\nKjelder\nReferansar\n#</pre> <!-- la denne line vere som ho er -->", "searchbutton": "Søk", "go": "Vis", "searcharticle": "Vis", "history": "Sidehistorikk", "history_short": "Historikk", + "history_small": "historikk", "updatedmarker": "oppdatert etter førre vitjinga mi", "printableversion": "Utskriftsversjon", "permalink": "Fast lenkje", @@ -246,6 +248,7 @@ "jumptonavigation": "navigering", "jumptosearch": "søk", "view-pool-error": "Diverre er filtenarane nett no opptekne.\nFor mange brukarar prøver Ã¥ sjÃ¥ denne sida.\nVent ei lita stund, før du prøver Ã¥ sjÃ¥ pÃ¥ sida.\n\n$1", + "generic-pool-error": "Beklagar, tjenarane er overbelasta for augneblinken.\nFor mange brukarar prøver Ã¥ sjÃ¥ denne ressursen.\nVent litt før du prøver igjen.", "pool-timeout": "Tidsavbrot under venting pÃ¥ lÃ¥sing.", "pool-queuefull": "Køen er full.", "pool-errorunknown": "Ukjend feil", @@ -325,6 +328,7 @@ "error": "Feil", "databaseerror": "Databasefeil", "databaseerror-text": "Ein spørjefeil mot databasen har oppstÃ¥tt.\nDette kan indikere ein feil i programvara.", + "databaseerror-textcl": "Ein databasespørringsfeil oppsto.", "databaseerror-query": "Spørjing: $1", "databaseerror-function": "Funksjon: $1", "databaseerror-error": "Feil: $1", @@ -338,6 +342,7 @@ "readonly_lag": "Databasen er mellombels skriveverna for at databasetenarane skal kunna synkronisere seg mot kvarandre", "internalerror": "Intern feil", "internalerror_info": "Intern feil: $1", + "internalerror-fatal-exception": "Alvorleg unntak av typen «$1»", "filecopyerror": "Kunne ikkje kopiere fila frÃ¥ «$1» til «$2».", "filerenameerror": "Kunne ikkje døype om fila frÃ¥ «$1» til «$2».", "filedeleteerror": "Kunne ikkje slette fila «$1».", @@ -351,8 +356,18 @@ "cannotdelete": "Kunne ikkje slette sida eller fila «$1».\nHo kan allereie vere sletta av andre.", "cannotdelete-title": "Kan ikkje sletta sida «$1»", "delete-hook-aborted": "Slettinga vart avbroten av ein funksjon.\nFunksjonen oppgav inga Ã¥rsak.", + "no-null-revision": "Kunne ikkje opprette ny nullrevisjon for sida «$1»", "badtitle": "Feil i tittelen", "badtitletext": "Den ønskte tittelen var ulovleg, tom eller feillenkja frÃ¥ ein annan wiki. Kanskje inneheld han eitt eller fleire teikn som ikkje kan brukast i sidetitlar.", + "title-invalid-empty": "Den etterspurde sidetittelen er tom eller inneheld berre namnet til eit namnerom.", + "title-invalid-utf8": "Den etterspurde sidetittelen inneheld ein ugyldig UTF-8-sekvens.", + "title-invalid-interwiki": "Den etterspurde sidetittelen inneheld ei interwikilenkje som ikkje kan nyttast i titlar.", + "title-invalid-talk-namespace": "Den etterspurde sidetittilen refererer til ei diskusjonsside som ikkje kan eksistere.", + "title-invalid-characters": "Den etterspurde sidetittelen inneheld ugyldige teikn: «$1».", + "title-invalid-relative": "Tittelen har ein relativ sti. Relative stititlar (./, ../) er ugyldige, fordi dei ofte ikkje vil vere tilgjengelege for brukarens nettlesar.", + "title-invalid-magic-tilde": "Den etterspurde sidetittelen inneheld ein ugyldig sekvens med magiske tildar (<nowiki>~~~</nowiki>).", + "title-invalid-too-long": "Den etterspurde sidetittelen er for lang. Den kan ikkje vere lengre enn $1 {{PLURAL:$1|byte}} i UTF-8-koding.", + "title-invalid-leading-colon": "Den etterspurde sidetittelen inneheld eit ugyldig kolon i byrjinga.", "perfcached": "Dei følgjande dataa er frÃ¥ mellomlageret Ã¥t tenaren og er ikkje utan vidare oppdatert. Høgst {{PLURAL:$1|eitt resultat er tilgjengeleg|$1 resultat er tilgjengelege}} i mellomlageret.", "perfcachedts": "Desse dataa er mellomlagra, og vart sist oppdaterte $1. Høgst {{PLURAL:$4|eitt resultat er tilgjengeleg|$4 resultat er tilgjengelege}} i mellomlageret.", "querypage-no-updates": "Oppdatering av denne sida er slÃ¥tt av, og data her vil ikkje verte fornya.", @@ -365,7 +380,8 @@ "viewyourtext": "Du kan sjÃ¥ og kopiera kjelda til <strong>endringane dine</strong> pÃ¥ sida.", "protectedinterface": "Denne sida inneheld tekst nytta av brukargrensesnittet for programvara pÃ¥ wikien, og er lÃ¥st for Ã¥ hindra hærverk.\nFor Ã¥ leggja til eller endra omsetjingar for alle wikiar, gjer vel Ã¥ nytta [https://translatewiki.net/wiki/Main_Page?setlang=nn translatewiki.net], prosjektet for lokalisering av MediaWiki.", "editinginterface": "'''Åtvaring:''' Du endrar pÃ¥ ei side som inneheld tekst nytta av brukargrensesnittet for programvara.\nEndringar pÃ¥ denne sida pÃ¥verkar utsjÃ¥naden til brukargrensesnittet for dei andre brukarane av wikien.\nFor Ã¥ leggja til eller endra omsetjingar, gjer vel Ã¥ nytta [https://translatewiki.net/wiki/Main_Page?setlang=nn translatewiki.net], prosjektet for lokalisering av MediaWiki.", - "cascadeprotected": "Denne sida er verna mot endring fordi ho er inkludert i {{PLURAL:$1|den opplista sida|dei opplista sidene}} som har djupvern slÃ¥tt pÃ¥:\n$2", + "translateinterface": "For Ã¥ legge til eller endre omsetjingar for alle wikiar, nytt [https://translatewiki.net/ translatewiki.net], lokaliseringsprosjektet til MediaWiki.", + "cascadeprotected": "Denne sida er verna mot endring fordi ho er inkludert i fylgjande {{PLURAL:$1|side|sider}} som har djupvern slÃ¥tt pÃ¥:\n$2", "namespaceprotected": "Du har ikkje tilgang til Ã¥ endre sidene i '''$1'''-namnerommet.", "customcssprotected": "↓Du har ikkje tilgang til Ã¥ endre denne sida, fordi ho inneheld ein annan brukar sine personlege innstillingar.", "customjsprotected": "↓Du har ikkje tilgang til Ã¥ endra denne JavaScript-sida fordi ho inneheld ein annen brukar sine personlege innstillingar.", @@ -379,11 +395,14 @@ "invalidtitle-knownnamespace": "Ugyldig tittel med namnerommet «$2» og teksten «$3»", "invalidtitle-unknownnamespace": "Ugyldig tittel med ukjend namneromstal $1 og teksten «$2»", "exception-nologin": "Ikkje innlogga", - "exception-nologin-text": "Sida eller handlinga krev at du er innlogga pÃ¥ wikien.", + "exception-nologin-text": "Logg inn for Ã¥ fÃ¥ tilgang til denne sida eller handlinga.", + "exception-nologin-text-manual": "Du mÃ¥ $1 for Ã¥ fÃ¥ tilgang til denne sida eller handlinga.", "virus-badscanner": "DÃ¥rleg konfigurasjon: ukjend virusskanner: ''$1''", "virus-scanfailed": "skanning mislukkast (kode $1)", "virus-unknownscanner": "ukjend antivirusprogram:", - "logouttext": "'''Du er no utlogga.'''\n\nDu kan no halde fram Ã¥ bruke {{SITENAME}} anonymt, eller du kan <span class='plainlinks'>[$1 logge inn att]</span> med same kontoen eller ein annan brukar kan logge inn.\nVer merksam pÃ¥ at nokre sider framleis kan visast fram som om du er innlogga fram til du slettar mellomlageret til nettlesaren din.", + "logouttext": "<strong>Du er no utlogga.</strong>\n\nVer merksam pÃ¥ at nokre sider framleis kan visast fram som om du er innlogga fram til du slettar mellomlageret til nettlesaren din.", + "cannotlogoutnow-title": "Kan ikkje logga ut nÃ¥", + "cannotlogoutnow-text": "Utlogging er ikkje mogleg nÃ¥r du nyttar $1.", "welcomeuser": "Velkomen, $1!", "welcomecreation-msg": "Brukarkontoen din er oppretta.\nGløym ikkje Ã¥ endra [[Special:Preferences|innstillingane dine for {{SITENAME}}]].", "yourname": "Brukarnamn:", @@ -399,44 +418,48 @@ "createacct-yourpasswordagain-ph": "Skriv inn passordet pÃ¥ nytt", "userlogin-remembermypassword": "Hald meg innlogga", "userlogin-signwithsecure": "Nytt trygg kopling", + "cannotlogin-title": "Kan ikkje logga inn", + "cannotlogin-text": "Innlogging er ikkje mogleg.", + "cannotloginnow-title": "Kan ikkje logga inn no", + "cannotloginnow-text": "Innlogging er ikkje mogleg nÃ¥r du nyttar $1.", + "cannotcreateaccount-title": "Kan ikkje opprette kontoar", + "cannotcreateaccount-text": "Direkte kontooppretting er ikkje slÃ¥tt pÃ¥ pÃ¥ denne wikien.", "yourdomainname": "Domenet ditt", "password-change-forbidden": "Du kan ikkje endra passord pÃ¥ denne wikien.", "externaldberror": "Det var anten ein ekstern databasefeil i tilgjengekontrollen, eller du har ikkje løyve til Ã¥ oppdatere den eksterne kontoen din.", "login": "Logg inn", + "login-security": "Stadfest identiteten din", "nav-login-createaccount": "Lag brukarkonto / logg inn", - "userlogin": "Lag brukarkonto / logg inn", - "userloginnocreate": "Logg inn", "logout": "Logg ut", "userlogout": "Logg ut", "notloggedin": "Ikkje innlogga", "userlogin-noaccount": "Har du ingen konto?", "userlogin-joinproject": "Vert med pÃ¥ {{SITENAME}}", - "nologin": "Har du ingen brukarkonto? $1.", - "nologinlink": "Registrer deg", "createaccount": "Opprett ny konto", - "gotaccount": "Har du ein brukarkonto? '''$1'''.", - "gotaccountlink": "Logg inn", - "userlogin-resetlink": "Har du gløymd pÃ¥loggingsopplysingane dine?", "userlogin-resetpassword-link": "Gløymt passordet ditt?", "userlogin-helplink2": "Hjelp med innlogging", "userlogin-loggedin": "Du er alt innlogga som {{GENDER:$1|$1}}.\nNytt skjemaet nedanfor for Ã¥ logga inn som ein annan brukar.", + "userlogin-reauth": "Du mÃ¥ logga inn igjen for Ã¥ stadfesta at du er {{GENDER:$1|$1}}.", "userlogin-createanother": "Opprett ein annan konto", "createacct-emailrequired": "E-postadresse:", "createacct-emailoptional": "E-postadresse (valfritt)", "createacct-email-ph": "Skriv inn e-postadressa di", "createacct-another-email-ph": "Skriv inn e-postadresse", "createaccountmail": "Bruk eit mellombels tilfeldig passord og send det til den oppgjevne e-postadressa", + "createaccountmail-help": "Kan nyttast til Ã¥ opprette konto for ein annan person utan Ã¥ lære passordet deira.", "createacct-realname": "Sant namn (valfritt)", - "createaccountreason": "Årsak:", "createacct-reason": "Årsak", "createacct-reason-ph": "Kvifor du lagar ein ny konto", "createacct-submit": "Opprett kontoen din", - "createacct-another-submit": "Opprett ein konto til", + "createacct-another-submit": "Opprett konto", + "createacct-continue-submit": "Hald fram med kontooppretting", + "createacct-another-continue-submit": "Hald fram med kontooppretting", "createacct-benefit-heading": "{{SITENAME}} er laga av folk som deg.", "createacct-benefit-body1": "{{PLURAL:$1|éi endring|$1 endringar}}", "createacct-benefit-body2": "{{PLURAL:$1|éi side|$1 sider}}", "createacct-benefit-body3": "{{PLURAL:$1|nyleg bidragsytar|nylege bidragsytarar}}", "badretype": "Passorda du skreiv inn er ikkje like.", + "usernameinprogress": "Ei kontooppretting for dette brukarnamnet pÃ¥gÃ¥r allereie.\nVent.", "userexists": "Brukarnamnet er alt i bruk. Vel eit anna brukarnamn.", "loginerror": "Innloggingsfeil", "createacct-error": "Kontoopprettingsfeil", @@ -444,16 +467,19 @@ "nocookiesnew": "Brukarkontoen vart oppretta, men du er ikkje innlogga. {{SITENAME}} bruker informasjonskapslar for Ã¥ logge inn brukarar,\nnettlesaren din er innstilt for ikkje Ã¥ godta desse. Etter at du har endra innstillingane slik at nettlesaren godtek informasjonskapslar, kan du logge inn med det nye brukarnamnet og passordet ditt.", "nocookieslogin": "{{SITENAME}} bruker informasjonskapslar for Ã¥ logge inn brukarar, nettlesaren din er innstilt for ikkje Ã¥ godta desse.\nEtter at du har endra innstillingane slik at nettlesaren godtek informasjonskapslar kan du prøve Ã¥ logge inn pÃ¥ nytt.", "nocookiesfornew": "Brukarkontoen blei ikkje oppretta ettersom kjelda ikkje kunne stadfestast.\nSjÃ¥ etter om du tek imot informasjonskapslar (cookies), last ned sida ein gong til og prøv igjen.", + "createacct-loginerror": "Kontoen ble oppretta, men du kunne ikkje bli logga inn automatisk. Hald fram til [[Special:UserLogin|manuell innlogging]].", "noname": "Du har ikkje oppgjeve gyldig brukarnamn.", - "loginsuccesstitle": "Du er no innlogga", + "loginsuccesstitle": "Innlogga", "loginsuccess": "Du er no innlogga som «$1».", - "nosuchuser": "Det finst ikkje nokon brukar med brukarnamnet «$1».\nBrukarnamn skil mellom stor og liten bokstav. Sjekk at du har skrive brukarnamet rett eller [[Special:CreateAccount|opprett ein ny konto]].", + "nosuchuser": "Det finst ikkje nokon brukar med brukarnamnet «$1».\nBrukarnamn skil mellom stor og liten bokstav.\nSjekk at du har skrive brukarnamet rett eller [[Special:CreateAccount|opprett ein ny konto]].", "nosuchusershort": "Det finst ikkje nokon brukar med brukarnamnet «$1». Sjekk at du har skrive rett.", "nouserspecified": "Du mÃ¥ oppgje eit brukarnamn.", "login-userblocked": "Denne brukaren er blokkert. Innlogging er ikkje tillate.", "wrongpassword": "Du har oppgjeve eit ugyldig passord. Prøv om att.", "wrongpasswordempty": "Du oppgav ikkje noko passord. Ver venleg og prøv igjen.", "passwordtooshort": "Passord mÃ¥ innehalda minst {{PLURAL:$1|eitt teikn|$1 teikn}}.", + "passwordtoolong": "Passord kan ikkje vera lengre enn {{PLURAL:$1|eitt|$1}} teikn.", + "passwordtoopopular": "Alminneleg valde passord kan ikkje nyttast. Vel eit meir unikt passord.", "password-name-match": "Passordet ditt lyt vera noko anna enn brukarnamnet ditt.", "password-login-forbidden": "Bruk av dette brukarnamnet og passordet er vorte forbode.", "mailmypassword": "Attendestill passord", @@ -657,6 +683,7 @@ "content-model-javascript": "JavaScript", "content-model-css": "CSS", "content-json-empty-object": "Tomt objekt", + "deprecated-self-close-category": "Sider som nyttar ugyldige sjølvlukkande HTML-merke.", "duplicate-args-warning": "<strong>Åtvaring:</strong> [[:$1]] kallar [[:$2]] med meir enn éin verdi for argumentet «$3». Berre den sist oppgjevne verdien vert nytta.", "expensive-parserfunction-warning": "Åtvaring: Denne sida inneheld for mange prosesskrevande parserfunksjonar.\n\nDet burde vere færre enn {{PLURAL:$2|$2|$2}}, men er no {{PLURAL:$1|$1|$1}}.", "expensive-parserfunction-category": "Sider med for mange prosesskrevande parserfunksjonar", @@ -704,6 +731,7 @@ "history-feed-description": "Endringshistorikk for denne sida pÃ¥ wikien", "history-feed-item-nocomment": "$1 pÃ¥ $2", "history-feed-empty": "Den etterspurde sida finst ikkje. Ho kan vere sletta frÃ¥ wikien, eller vere flytta. Prøv Ã¥ [[Special:Search|søke pÃ¥ wikien]] for relevante nye sider.", + "history-edit-tags": "Endra merka til dei valde versjonane", "rev-deleted-comment": "(endringssamandrag fjerna)", "rev-deleted-user": "(brukarnamnet er fjerna)", "rev-deleted-event": "(fjerna loggoppføring)", @@ -795,7 +823,7 @@ "lineno": "Line $1:", "compareselectedversions": "Samanlikn valde versjonar", "showhideselectedversions": "Vis/løyn valde versjonar", - "editundo": "angre", + "editundo": "fjern endringa", "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}})", @@ -876,7 +904,7 @@ "restoreprefs": "Hent attende alle standardinnstillingane (i alle bolkane)", "prefs-editing": "Endring", "searchresultshead": "Søk", - "stub-threshold": "Grense (i byte) for at frø/spirer skal formaterast <a href=\"#\" class=\"stub\">slik</a>:", + "stub-threshold": "Grense for spireformatering ($1):", "stub-threshold-disabled": "Deaktivert", "recentchangesdays": "Tal pÃ¥ dagar som viser pÃ¥ siste endringar:", "recentchangesdays-max": "(høgst $1 {{PLURAL:$1|dag|dagar}})", @@ -1318,6 +1346,7 @@ "listfiles-delete": "slett", "listfiles-summary": "Spesialsida viser alle opplasta filer.\nNÃ¥r ho er filtrert etter brukar, vert berre filene der brukaren lasta opp den siste versjonen viste.", "listfiles_search_for": "Søk etter filnamn:", + "listfiles-userdoesnotexist": "Brukarkontoen «$1» er ikkje oppretta.", "imgfile": "fil", "listfiles": "Filliste", "listfiles_thumb": "Miniatyrbilete", @@ -1641,7 +1670,7 @@ "mywatchlist": "Overvakingsliste", "watchlistfor2": "For $1 $2", "nowatchlist": "Du har ikkje noko i overvakingslista di.", - "watchlistanontext": "Du lyt $1 for Ã¥ vise eller endre sider pÃ¥ overvakingslista di.", + "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.", @@ -1735,6 +1764,7 @@ "modifiedarticleprotection": "endra nivÃ¥et pÃ¥ vernet av «[[$1]]»", "unprotectedarticle": "fjerna vern av «[[$1]]»", "movedarticleprotection": "flytta verneinnstillingar frÃ¥ «[[$2]]» til «[[$1]]»", + "unprotectedarticle-comment": "{{GENDER:$2|Fjerna}} vern av «[[$1]]»", "protect-title": "Vernar «$1»", "protect-title-notallowed": "SjÃ¥ vernenivÃ¥et til «$1»", "prot_1movedto2": "«[[$1]]» flytt til «[[$2]]»", @@ -1833,6 +1863,7 @@ "mycontris": "Bidrag", "anoncontribs": "Bidrag", "contribsub2": "For {{GENDER:$3|$1}} ($2)", + "contributions-userdoesnotexist": "Brukarkontoen «$1» er ikkje oppretta.", "nocontribs": "Det vart ikkje funne nokon endringar gjorde av denne brukaren.", "uctop": "(gjeldande)", "month": "MÃ¥nad:", @@ -2909,6 +2940,7 @@ "htmlform-yes": "Ja", "htmlform-chosen-placeholder": "Vel ein", "logentry-delete-delete": "$1 {{GENDER:$2|sletta}} sida $3", + "logentry-delete-delete_redir": "$1 {{GENDER:$2|sletta}} omdirigeringa $3 gjennom overskriving", "logentry-delete-restore": "$1 {{GENDER:$2|attoppretta}} sida $3", "logentry-delete-event": "$1 {{GENDER:$2|endra}} synlegdomen av {{PLURAL:$5|éi loggoppføring|$5 loggoppføringar}} pÃ¥ $3: $4", "logentry-delete-revision": "$1 {{GENDER:$2|endra}} synlegdomen til {{PLURAL:$5|éin versjon|$5 versjonar}} pÃ¥ sida $3: $4", @@ -2940,6 +2972,7 @@ "logentry-newusers-create2": "Brukarkontoen $3 vart {{GENDER:$2|oppretta}} av $1", "logentry-newusers-byemail": "Brukarkontoen $3 vart {{GENDER:$2|oppretta}} av $1 og passord vart sendt med e-post", "logentry-newusers-autocreate": "Brukarkontoen $1 vart {{GENDER:$2|oppretta}} av seg sjølv", + "logentry-protect-unprotect": "$1 {{GENDER:$2|fjerna}} vern av $3", "logentry-protect-protect": "$1 {{GENDER:$2|verna}} $3 $4", "logentry-rights-rights": "$1 {{GENDER:$2|endra}} gruppemedlemskap for $3 frÃ¥ $4 til $5", "logentry-rights-rights-legacy": "$1 {{GENDER:$2|endra}} gruppemedlemskap for $3", @@ -2947,7 +2980,6 @@ "logentry-upload-upload": "$1 {{GENDER:$2|lasta opp}} $3", "log-name-tag": "Merkelogg", "rightsnone": "(ingen)", - "revdelete-summary": "Samandrag", "feedback-adding": "Legg til attendemeldinga til sida...", "feedback-bugcheck": "Bra! No lyt du berre sjÃ¥ etter om han er ein av dei [$1 kjende feila].", "feedback-bugnew": "Eg sÃ¥g etter. Rapporter ein ny feil", @@ -2963,44 +2995,12 @@ "feedback-thanks": "Takk! Attendemeldinga di er lagd inn pÃ¥ sida «[$2 $1]».", "searchsuggest-search": "Søk i {{SITENAME}}", "searchsuggest-containing": "som inneheld …", - "api-error-badaccess-groups": "Du har ikkje løyve til Ã¥ lasta opp filer til wikien.", "api-error-badtoken": "Intern feil: ugild token.", - "api-error-copyuploaddisabled": "Opplasting etter URL er avslege pÃ¥ tenaren.", - "api-error-duplicate": "Det finst {{PLURAL:$1|ei anna fil|andre filer}} pÃ¥ nettstaden med same innhaldet.", - "api-error-duplicate-archive": "Det fanst {{PLURAL:$1|ei anna fi|andre file}} pÃ¥ nettstaden med det same innhaldet, men {{PLURAL:$1|ho|dei}} vart sletta.", - "api-error-empty-file": "Fila du sende var tom.", "api-error-emptypage": "Det er ikkje tillate Ã¥ oppretta nye tomme sider.", - "api-error-fetchfileerror": "Intern feil: Noko gjekk gale dÃ¥ fila vart henta.", - "api-error-fileexists-forbidden": "Ei fil med namnet «$1» finst alt, og kan ikkje skrivast over.", - "api-error-fileexists-shared-forbidden": "Ei fil med namnet «$1» finst alt i den delte filsamlinga, og kan ikkje skrivast over.", - "api-error-file-too-large": "Fila du sende var for stor.", - "api-error-filename-tooshort": "Filnamnet er for stutt.", - "api-error-filetype-banned": "Denne filtypen er ikkje tillaten.", - "api-error-filetype-banned-type": "$1 er ikkje {{PLURAL:$4|ein tillaten filtype|tillatne filtypar}}. {{PLURAL:$3|Tillaten filtype|Tillatne filtypar}} er $2.", - "api-error-filetype-missing": "Fila saknar ei ending.", - "api-error-hookaborted": "Endringa du freista vart avbroten av ei utviding.", - "api-error-http": "Intern feil: kan ikkje kopla til tenaren.", - "api-error-illegal-filename": "Filnamnet er ikkje tillate.", - "api-error-internal-error": "Intern feil: Noko gjekk gale med handsaminga av opplastinga di til wikien.", - "api-error-invalid-file-key": "Intern feil: Fila vart ikkje funnen i mellombels lagringsplass.", - "api-error-missingparam": "Intern feil: det saknar parametrar i førespurnaden.", - "api-error-missingresult": "Intern feil: kunne ikkje avgjera om koperinga var vellukka.", - "api-error-mustbeloggedin": "Du lyt vera innlogga for Ã¥ lasta opp filer.", - "api-error-mustbeposted": "Intern feil: førespurnad krev HTTP POST.", - "api-error-noimageinfo": "Opplastinga gjekk greitt, men tenaren gav oss ikkje noko informasjon om fila.", - "api-error-nomodule": "Intern feil: ingen opplastingsmodul er vald.", - "api-error-ok-but-empty": "Intern feil: ikkje noko svar frÃ¥ tenaren.", - "api-error-overwrite": "Det er ikkje tillate Ã¥ skriva over filer som alt finst.", - "api-error-stashfailed": "Intern feil: tenaren greidde ikkje Ã¥ lagra ei mellombels fil.", "api-error-publishfailed": "Intern feil: tenaren greidde ikkje Ã¥ publisera mellombels fil.", - "api-error-timeout": "Tenaren svara ikkje innan tida svar var venta.", - "api-error-unclassified": "Det oppstod ein ukjend feil.", - "api-error-unknown-code": "Ukjend feil: «$1»", - "api-error-unknown-error": "Intern feil: Noko gjekk gale dÃ¥ fila di vart freista lasta opp.", + "api-error-stashfailed": "Intern feil: tenaren greidde ikkje Ã¥ lagra ei mellombels fil.", "api-error-unknown-warning": "Ukjend Ã¥tvaring: $1", "api-error-unknownerror": "Ukjend feil: «$1».", - "api-error-uploaddisabled": "Det er ikkje høve til Ã¥ lasta opp filer til wikien.", - "api-error-verification-error": "Fila kan vera øydelagd eller ha rang filending.", "duration-seconds": "$1 {{PLURAL:$1|sekund|sekund}}", "duration-minutes": "$1 {{PLURAL:$1|minutt|minutt}}", "duration-hours": "$1 {{PLURAL:$1|time|timar}}", @@ -3015,7 +3015,9 @@ "limitreport-cputime": "CPU-tidsbruk", "limitreport-cputime-value": "{{PLURAL:$1|eitt sekund|$1 sekund}}", "limitreport-walltime-value": "{{PLURAL:$1|eitt sekund|$1 sekund}}", - "limitreport-ppvisitednodes": "Tal pÃ¥ knutepunktsvitjingar av førhandsamar", + "limitreport-ppvisitednodes": "Nodar vitja av preprosessor", + "limitreport-ppgeneratednodes": "Nodar laga av preprosessor", + "limitreport-postexpandincludesize": "Inkluderingsstorleik etter utviding", "limitreport-postexpandincludesize-value": "$1/$2 byte", "limitreport-templateargumentsize": "Storleik pÃ¥ malargument", "limitreport-templateargumentsize-value": "$1/$2 byte", @@ -3074,6 +3076,8 @@ "mw-widgets-titleinput-description-new-page": "sida finst ikkje enno", "mw-widgets-titleinput-description-redirect": "omdiriger til $1", "randomrootpage": "Tilfeldig rotsida", + "log-action-filter-rights": "Type endring av rettar:", + "authmanager-userdoesnotexist": "Brukarkontoen «$1» er ikkje oppretta.", "userjsispublic": "Merk: JavaScript-undersider bør ikkje innehalda konfidensielle data sidan dei er synlege for andre brukarar.", "usercssispublic": "Merk: CSS-undersider bør ikkje innehalda konfidensielle data sidan dei er synlege for andre brukarar." } diff --git a/languages/i18n/oc.json b/languages/i18n/oc.json index 06e31e1aa3..4ffdd93c3d 100644 --- a/languages/i18n/oc.json +++ b/languages/i18n/oc.json @@ -17,7 +17,8 @@ "Matma Rex", "Xð", "Nicolas Eynaud", - "Fitoschido" + "Fitoschido", + "Vriullop" ] }, "tog-underline": "Soslinhar los ligams :", @@ -37,7 +38,7 @@ "tog-watchdeletion": "Apondre las paginas e los fichièrs que suprimissi de ma lista de seguiment", "tog-watchuploads": "Apondre los novèls fichièrs qu’impòrti a ma lista de seguiment", "tog-watchrollback": "Apondre a ma lista de seguiment las paginas sus las qualas ai efectuat una revocacion", - "tog-minordefault": "Considerar mas modificacions coma menoras per defaut", + "tog-minordefault": "Considerar totas las modificacions coma menoras per defaut", "tog-previewontop": "Far veire la previsualizacion al dessús de la zòna de modificacion", "tog-previewonfirst": "Far veire la previsualizacion al moment de la primièra edicion", "tog-enotifwatchlistpages": "M’avertir per corrièr electronic quand una pagina o un fichièr de ma lista de seguiment es modificat", @@ -97,18 +98,18 @@ "october": "d'octobre", "november": "de novembre", "december": "de decembre", - "january-gen": "Genièr", - "february-gen": "Febrièr", - "march-gen": "Març", + "january-gen": "de genièr", + "february-gen": "de febrièr", + "march-gen": "de març", "april-gen": "Abril", - "may-gen": "Mai", - "june-gen": "Junh", - "july-gen": "Julhet", + "may-gen": "de mai", + "june-gen": "de junh", + "july-gen": "de julhet", "august-gen": "d'agost", - "september-gen": "Setembre", + "september-gen": "de setembre", "october-gen": "Octobre", - "november-gen": "Novembre", - "december-gen": "Decembre", + "november-gen": "de novembre", + "december-gen": "de decembre", "jan": "de gen", "feb": "de feb", "mar": "de març", @@ -121,9 +122,9 @@ "oct": "d'oct", "nov": "de nov", "dec": "de dec", - "january-date": "$1 de genièr", - "february-date": "$1 de febrièr", - "march-date": "$1 de març", + "january-date": "{{PLURAL:$1|1=1èr|$1}} de genièr", + "february-date": "{{PLURAL:$1|1=1èr|$1}} de febrièr", + "march-date": "{{PLURAL:$1|1=1èr|$1}} de març", "april-date": "$1 d'abril", "may-date": "$1 de mai", "june-date": "$1 de junh", @@ -132,7 +133,7 @@ "september-date": "$1 de setembre", "october-date": "$1 d'octobre", "november-date": "$1 de novembre", - "december-date": "$1 de decembre", + "december-date": "{{PLURAL:$1|1=1èr|$1}} de decembre", "period-am": "AM", "period-pm": "PM", "pagecategories": "{{PLURAL:$1|Categoria|Categorias}}", @@ -151,7 +152,7 @@ "listingcontinuesabbrev": "(seguida)", "index-category": "Paginas indexadas", "noindex-category": "Paginas pas indexadas", - "broken-file-category": "Paginas amb ligams copats", + "broken-file-category": "Paginas amb ligams de fichièrs copats", "about": "A prepaus", "article": "Article", "newwindow": "(dobrís una fenèstra novèla)", @@ -184,6 +185,7 @@ "searcharticle": "Consultar", "history": "Istoric", "history_short": "Istoric", + "history_small": "istoric", "updatedmarker": "modificat dempuèi ma darrièra visita", "printableversion": "Version imprimibla", "permalink": "Ligam istoric", @@ -193,7 +195,7 @@ "edit": "Modificar", "edit-local": "Modificar la descripcion locala", "create": "Crear", - "create-local": "apondre una descripcion locala", + "create-local": "Apondre una descripcion locala", "editthispage": "Modificar aquesta pagina", "create-this-page": "Crear aquesta pagina", "delete": "Suprimir", @@ -251,7 +253,7 @@ "currentevents-url": "Project:Actualitats", "disclaimers": "Avertiments", "disclaimerpage": "Project:Avertiments generals", - "edithelp": "Ajuda", + "edithelp": "Ajuda per l'edicion", "helppage-top-gethelp": "Ajuda", "mainpage": "Acuèlh", "mainpage-description": "Acuèlh", @@ -334,7 +336,7 @@ "internalerror_info": "Error intèrna: $1", "internalerror-fatal-exception": "Error fatala de tipe \"$1\"", "filecopyerror": "Impossible de copiar lo fichièr « $1 » cap a « $2 ».", - "filerenameerror": "Impossible de tornar nomenar lo fichièr « $1 » en « $2 ».", + "filerenameerror": "Impossible de renomenar lo fichièr « $1 » en « $2 ».", "filedeleteerror": "Impossible de suprimir lo fichièr « $1 ».", "directorycreateerror": "Impossible de crear lo dorsièr « $1 ».", "directoryreadonlyerror": "Lo repertòri « $1 » es en lectura sola.", @@ -349,8 +351,8 @@ "no-null-revision": "Impossible de crear una novèla revision voida per la pagina « $1 »", "badtitle": "Títol marrit", "badtitletext": "Lo títol de la pagina demandada es invalid, void o s’agís d’un títol interlenga o interprojècte mal ligat. Benlèu conten un o maites caractèrs que pòdon pas èsser utilizats dins los títols.", - "title-invalid-talk-namespace": "La pagina de títol demandada fa referéncia a una pagina de discussion qu'existís pas.", - "title-invalid-characters": "La pagina de títol demandada contèn de caractèrs invalides : $1", + "title-invalid-talk-namespace": "Lo títol de la pagina demandada fa referéncia a una pagina de discussion que pòt pas existir.", + "title-invalid-characters": "Lo títol de la pagina demandada conten de caractèrs invalids : « $1 ».", "perfcached": "Las donadas seguendas son en cache e benlèu, son pas a jorn. Un maximum de {{PLURAL:$1|un resultat|$1 resultats}} es disponible dins lo cache.", "perfcachedts": "Las donadas seguendas son en cache e benlèu, son pas a jorn. Un maximum de {{PLURAL:$1|un resultat|$1 resultats}} es disponible dins lo cache.", "querypage-no-updates": "Las mesas a jorn per aquesta pagina son actualamnt desactivadas. Las donadas çaijós son pas mesas a jorn.", @@ -363,7 +365,7 @@ "viewyourtext": "Podètz veire e copiar lo contengut de <strong>vòstras modificacions</strong> a aquesta pagina.", "protectedinterface": "Aquesta pagina provesís de tèxte d’interfàcia pel logicial susaqueste wiki, e es protegida per evitar los abuses.\nPer apondre o modificar de traduccions sus totes los wikis, utilizatz [https://translatewiki.net/ translatewiki.net], lo projècte de localizacion de MediaWiki.", "editinginterface": "<strong>Atencion :<strong> sètz a mand de modificar una pagina utilizada per crear lo tèxte de l’interfàcia del logicial.\nLos cambiaments sus aquesta pagina se repercutaràn sus l'aparéncia de l'interfàcia d'utilizaire pels autres utilizaires d'aqueste wiki.", - "cascadeprotected": "Aquesta pagina es actualament protegida perque es inclusa dins {{PLURAL:$1|la pagina seguenta|las paginas seguentas}}, {{PLURAL:$1|qu'es estada protegida|que son estadas protegidas}} amb l’opcion « proteccion en cascada » activada :\n$2", + "cascadeprotected": "Aquesta pagina es protegida perque es inclusa dins {{PLURAL:$1|la pagina seguenta qu'es estada protegida|las paginas seguentas que son estadas protegidas}} amb l’opcion « proteccion en cascada » activada :\n$2", "namespaceprotected": "Avètz pas la permission de modificar las paginas de l’espaci de noms « '''$1''' ».", "customcssprotected": "Avètz pas la permission d'editar aquesta pagina CSS perque conten de preferéncias d’autres utilizaires.", "customjsprotected": "Avètz pas la permission d'editar aquesta pagina JavaScript perque conten de preferéncias d’autres utilizaires.", @@ -372,7 +374,7 @@ "myprivateinfoprotected": "Avètz pas los dreits per modificar vòstras informacions personalas.", "mypreferencesprotected": "Avètz pas los dreits per modificar vòstras preferéncias.", "ns-specialprotected": "Las paginas dins l’espaci de noms « {{ns:special}} » pòdon pas èsser modificadas", - "titleprotected": "Aqueste títol es estat protegit a la creacion per [[User:$1|$1]].\nLo motiu avançat es <em>$2</em>.", + "titleprotected": "Aqueste títol es estat protegit contra tota creacion per [[User:$1|$1]].\nLo motiu avançat es <em>$2</em>.", "filereadonlyerror": "Impossible de modificar lo fichièr « $1 » perque lo repertòri de fichièrs « $2 » es en lectura sola.\n\nL'administrator del sistèma que l'a verrolhat a provesit aqueste motiu : « $3 ».", "invalidtitle-knownnamespace": "Títol invalid amb l'espaci de noms « $2 » e l'intitulat « $3 »", "invalidtitle-unknownnamespace": "Títol invalid amb lo numèro d'espaci de noms $1 e l'intitulat « $2 » desconeguts", @@ -412,19 +414,12 @@ "login": "Identificacion", "login-security": "Verificar vòstra identitat", "nav-login-createaccount": "Crear un compte o se connectar", - "userlogin": "Crear un compte o se connectar", - "userloginnocreate": "Connexion", "logout": "Se desconnectar", "userlogout": "Desconnexion", "notloggedin": "Vos sètz pas identificat(ada)", "userlogin-noaccount": "Avètz pas de compte ?", "userlogin-joinproject": "Rejonhètz {{SITENAME}}", - "nologin": "Avètz pas un compte ? '''$1'''.", - "nologinlink": "Creatz un compte", "createaccount": "Crear un compte novèl", - "gotaccount": "Ja avètz un compte ? '''$1'''.", - "gotaccountlink": "Identificatz-vos", - "userlogin-resetlink": "Avètz doblidat vòstres detalhs de connexion ?", "userlogin-resetpassword-link": "Senhal doblidat ?", "userlogin-helplink2": "Ajuda a la connexion", "userlogin-loggedin": "Sètz ja connectat en tant que {{GENDER:$1|$1}}.\nUtilizatz lo formulari çaijós per vos connectar amb un autre utilizaire.", @@ -436,9 +431,9 @@ "createacct-another-email-ph": "Picar l'adreça de corrièr electronic", "createaccountmail": "Utilizar un senhal aleatòri temporari e lo mandar a l’adreça de corrièl especificada", "createacct-realname": "Nom vertadièr (facultatiu)", - "createaccountreason": "Motiu :", "createacct-reason": "Motiu", "createacct-reason-ph": "Perqué creatz un autre compte", + "createacct-reason-help": "Messatge afichat dins lo jornal de creacion de compte", "createacct-submit": "Creatz vòstre compte", "createacct-another-submit": "Crear un compte", "createacct-continue-submit": "Contunhar la creacion de compte", @@ -455,9 +450,10 @@ "nocookiesnew": "Lo compte d'utilizaire es estat creat, mas sètz pas connectat. {{SITENAME}} utiliza de cookies per la connexion mas los avètz desactivats. Activatz-los e reconnectatz-vos amb lo meteis nom e lo meteis senhal.", "nocookieslogin": "{{SITENAME}} utiliza de cookies per la connexion mas avètz los cookies desactivats. Activatz-los e reconnectatz-vos.", "nocookiesfornew": "Lo compte d'utilizaire es pas estat creat, perque avèm pas pogut identificar son origina.\nVerificatz qu'avètz activat los cookies, recargatz la pagina e tornatz ensajar.", + "createacct-loginerror": "Lo compte es estat creat corrèctament mas vos podètz pas connectar automaticament. [[Special:UserLogin|Connectatz-vos manualament]].", "noname": "Avètz pas picat de nom d'utilizaire valid.", "loginsuccesstitle": "Connectat", - "loginsuccess": "Sètz actualament connectat(ada) sus {{SITENAME}} en tant que « $1 ».", + "loginsuccess": "<strong>Sètz actualament connect{{GENDER:$1||at|ada}} a {{SITENAME}} en tant que « $1 ».</strong>", "nosuchuser": "L'utilizaire « $1 » existís pas.\nLo nom d'utilizaire es sensible a la cassa.\nVerificatz vòstra ortografia, o [[Special:CreateAccount|creatz-vos un compte novèl]].", "nosuchusershort": "I a pas de contributor amb lo nom « $1 ». Verificatz l’ortografia.", "nouserspecified": "Vos cal especificar vòstre nom d'utilizaire.", @@ -473,11 +469,11 @@ "noemail": "Cap d'adreça electronica es pas estada enregistrada per l'utilizaire « $1 ».", "noemailcreate": "Vos cal provesir una adreça de corrièl valida", "passwordsent": "Un senhal novèl es estat mandat a l'adreça electronica de l'utilizaire « $1 ».\nIdentificatz-vos tre que l'aurètz recebut.", - "blocked-mailpassword": "Vòstra adreça IP es blocada en edicion, la foncion de rapèl del senhal es doncas desactivada per evitar los abuses.", + "blocked-mailpassword": "Vòstra adreça IP es blocada en edicion. Per evitar los abuses, es pas autorizat d'utilizar la recuperacion de senhal a partir d'aquesta adreça IP.", "eauthentsent": "Un corrièr de confirmacion es estat mandat a l’adreça indicada.\nAbans qu’un autre corrièr sià mandat a aqueste compte, vos caldrà seguir las instruccions donadas dins lo messatge per confirmar que lo compte es plan vòstre.", "throttled-mailpassword": "Un corrièr electronic de reïnicializacion de vòstre senhal es ja estat mandat durant {{PLURAL:$1|la darrièra ora|las $1 darrièras oras}}. Per evitar los abuses, un sol corrièr de reïnicializacion de vòstre senhal serà pas mandat per {{PLURAL:$1|ora|interval de $1 oras}}.", "mailerror": "Error en mandant lo corrièr electronic : $1", - "acct_creation_throttle_hit": "De visitors d'aqueste wiki qu'utilizan vòstra adreça IP an creat $1 {{PLURAL:$1|compte|comptes}} lo jorn darrièr, aquò es lo limit maximum autorizat pendent aqueste periòde.\nAtal los visitors qu'utilizan aquesta adreça IP pòdon pas crear mai de compte novèl pel moment.", + "acct_creation_throttle_hit": "Los visitors d'aqueste wiki qu'utilizan vòstra adreça IP an creat {{PLURAL:$1|compte|comptes}} durant las darrièras $2, aquò es lo limit maximum autorizat pendent aqueste periòde.\nEn consequéncia, la creacion de compte pels visitors qu'utilizan aquesta adreça IP es temporàriament suspenduda.", "emailauthenticated": "Vòstra adreça de corrièr electronic es estada confirmada lo $2 a $3.", "emailnotauthenticated": "Vòstra adreça de corrièr electronic es pas encara confirmada. Cap de corrièr serà pas mandat per caduna de las foncions seguentas.", "noemailprefs": "Cap d'adreça electronica es pas estada indicada, las foncions seguentas seràn pas disponiblas.", @@ -513,9 +509,11 @@ "changepassword-success": "Vòstre senhal es estat modificat !", "changepassword-throttled": "Avètz ensajat un tròp grand nombre de connexions darrièrament.\nEsperatz $1 abans d’ensajar tornarmai.", "botpasswords": "Senhals de robòts", - "botpasswords-no-central-id": "Per intrar lo senhau d'un bot, devètz èsser connectat amb un còmpte globau.", - "botpasswords-createnew": "Crear un novèu senhau de bot", - "botpasswords-editexisting": "Editar un senhau de bot existent", + "botpasswords-disabled": "Los senhals robòts son desactivats.", + "botpasswords-no-central-id": "Per utilizar los senhals de robòts, vos cal èsser connectat a un compte centralizat.", + "botpasswords-existing": "Senhals de robòts existents", + "botpasswords-createnew": "Crear un novèl senhal de robòts", + "botpasswords-editexisting": "Modificar un senhal de robòts existent", "botpasswords-label-appid": "Nom del robòt :", "botpasswords-label-create": "Crear", "botpasswords-label-update": "Metre a jorn", @@ -525,15 +523,16 @@ "botpasswords-label-grants": "Dreits aplicables :", "botpasswords-label-grants-column": "Acordat", "botpasswords-bad-appid": "Lo nom del robòt «$1» es pas valid.", - "botpasswords-created-title": "Senhau de bot creat", - "botpasswords-created-body": "Lo senhau dau bot per lo bot $1 de l'utilizaire $2 es estat creat", - "botpasswords-updated-title": "Senhau dau bot més a jorn", - "botpasswords-updated-body": "Lo senhau dau bot $1 de l'utilizaire $2 es estat més a jorn", - "botpasswords-deleted-title": "Senhau dau bot escafat", - "botpasswords-deleted-body": "Lo senhay dau bot $1 de l'utilizaire $2 es estat escafat", - "botpasswords-no-provider": "BotPasswordsSessionProvider es pas disponible", + "botpasswords-insert-failed": "Fracàs de l’apondon del nom de robòt « $1 ». Es ja estat apondut ?", + "botpasswords-created-title": "Senhal de robòts creat", + "botpasswords-created-body": "Lo senhal pel robòt « $1 » de l'utilizaire « $2 » es estat creat.", + "botpasswords-updated-title": "Senhal de robòts mes a jorn", + "botpasswords-updated-body": "Lo senhal pel robòt « $1 » de l'utilizaire « $2 » es estat mes a jorn.", + "botpasswords-deleted-title": "Senhal de robòts suprimit", + "botpasswords-deleted-body": "Lo senhal pel robòt « $1 » de l'utilizaire « $2 » es estat suprimit.", + "botpasswords-no-provider": "BotPasswordsSessionProvider es pas disponible.", "resetpass_forbidden": "Los senhals pòdon pas èsser cambiats", - "resetpass_forbidden-reason": "Lei senhaus pòdon pas èsser cambiats : $1", + "resetpass_forbidden-reason": "Los senhaus pòdon pas èsser cambiats : $1", "resetpass-no-info": "Vos cal èsser connectat per aver accès a aquesta pagina.", "resetpass-submit-loggedin": "Modificar lo senhal", "resetpass-submit-cancel": "Anullar", @@ -557,17 +556,18 @@ "passwordreset-emailtext-ip": "Qualqu'un (probablament vos, dempuèi l'adreça IP $1) a demandat una reïnicializacion de vòstre senhal per {{SITENAME}} ($4). {{PLURAL:$3|Lo compte d'utilizaire seguent es associat|Los comptes d'utilizaires seguents son associats}} a aquesta adreça de corrièr electronic :\n\n$2\n\n{{PLURAL:$3|Aqueste senhal temporari expirarà|Aquestes senhals temporaris expiraràn}} dins {{PLURAL:$5|un jorn|$5 jorns}}. Ara, vos cal vos connectar e causir un senhal novèl. Se aquesta demanda proven pas de vos, o que vos sètz remembrat de vòstre senhal inicial, e que volètz pas mai lo modificar, podètz ignorar aqueste messatge e contunhar d'utilizar vòstre ancian senhal.", "passwordreset-emailtext-user": "L'utilizaire $1 sus {{SITENAME}} a demandat una reïnicializacion de vòstre senhal per {{SITENAME}} ($4). {{PLURAL:$3|Lo compte d'utilizaire seguent es associat|Los comptes d'utilizaires seguents son associats}} a aquesta adreça de corrièr electronic :\n\n$2\n\n{{PLURAL:$3|Aqueste senhal temporari expirarà|Aquestes senhals temporaris expiraràn}} dins {{PLURAL:$5|un jorn|$5 jorns}}. Ara, vos cal vos connectar e causir un senhal novèl. Se aquesta demanda proven pas de vos, o que vos sètz remembrat de vòstre senhal inicial, e que lo volètz pas mai modificar, podètz ignorar aqueste messatge e contunhar d'utilizar vòstre ancian senhal.", "passwordreset-emailelement": "Utilizaire: \n$1\n\nSenhal temporari: \n$2", - "passwordreset-emailsentemail": "Se aquela adreiça de corrièr electrnic es associat ambé vòstre compte, un corrièr electronic de reïnicializacion de senhal es estat mandat.", - "passwordreset-emailsentusername": "Se una adreiça de corrier electronic es associada amb aqueu còmpte d'utilizaire, un senhau de reïnicializacion serà mandat.", - "passwordreset-invalidemail": "Adreiça electronica invalida", + "passwordreset-emailsentemail": "Se aquesta adreça de corrièl es associada a vòstre compte, alara un corrièl de reïnicializacion de senhal serà mandat.", + "passwordreset-emailsentusername": "Se i a una adreça de corrièr electronic associada a aqueste nom d’utilizaire, alara un corrièl de reïnicializacion senhal serà mandat.", + "passwordreset-nosuchcaller": "L’apelant existís pas : $1", + "passwordreset-invalidemail": "Adreça de corrièr electronic invalida", "changeemail": "Cambiar o suprimir l'adreça electronica", - "changeemail-header": "Cambiar l'adreça electronica del compte", + "changeemail-header": "Completatz aqueste formulari per modificar vòstra adreça de corrièl. Se volètz suprimir l’associacion d’una adreça de corrièl amb vòstre compte, daissatz la novèla adreça de corrièl voida al moment de la somission del formulari.", "changeemail-no-info": "Vos cal èsser connectat per aver accès a aquesta pagina.", "changeemail-oldemail": "Adreça electronica actuala:", "changeemail-newemail": "Novela adreça electronica:", "changeemail-none": "(pas cap)", "changeemail-password": "Vòstre senhal sus {{SITENAME}} :", - "changeemail-submit": "Cambiar l'adreça electronica:", + "changeemail-submit": "Cambiar l'adreça electronica :", "changeemail-throttled": "Avètz fait tròp de temptativas de connexion.\nEsperatz $1 abans d’ensajar tornarmai.", "resettokens": "Reïnicializar los getons", "resettokens-text": "Aici, podètz reïnicializar los getons que permeton d’accedir a d'unas donadas privadas associadas a vòstre compte.\n\nLo vos caldriá far se las avètz partejats accidentalament amb qualqu'un o se vòstre compte es estat compromés.", @@ -629,14 +629,14 @@ "accmailtext": "Un senhal generat aleatòriament per [[User talk:$1|$1]] es estat mandat a $2.\nLo senhal per aqueste compte novèl pòt èsser cambiat sus la pagina ''[[Special:ChangePassword|Cambiament de senhal]]'' aprèp connexion.", "newarticle": "(Novèl)", "newarticletext": "Avètz seguit un ligam cap a una pagina qu’existís pas encara o qu'es estada [{{fullurl:Special:Log|type=delete&page={{FULLPAGENAMEE}}}} escafada].\nPer crear aquesta pagina, picatz vòstre tèxte dins la bóstia çaijós (podètz consultar [$1 la pagina d’ajuda] per mai d’entresenhas).\nSe sètz arribat(ada) aicí per error, clicatz sul boton '''retorn''' de vòstre navigador.", - "anontalkpagetext": "---- ''Sètz sus la pagina de discussion d'un utilizaire anonim qu'a pas encara creat un compte o que n'utiliza pas.\nPer aquesta rason, devèm utilizar son adreça IP per l'identificar. Una adreça d'aqueste tipe pòt èsser partejada entre mantun utilizaire. Se sètz un utilizaire anonim e se constatatz que de comentaris que vos concernisson pas vos son estats adreçats, podètz [[Special:CreateAccount|crear un compte]] o [[Special:UserLogin|vos connectar]] per evitar tota confusion venenta amb d’autres contributors anonims.''", + "anontalkpagetext": "----\n<em>Sètz sus la pagina de discussion d'un utilizaire anonim qu'a pas encara creat un compte o que n'utiliza pas<em>.\nPer aquesta rason, nos cal utilizar son adreça IP per l'identificar.\nUna adreça d'aqueste tipe pòt èsser partejada entre mantun utilizaire.\nSe sètz un{{GENDER:||a|}} utilizair{{GENDER:|e|a|e}} anonim{{GENDER:||a|}} e se constatatz que de comentaris que vos concernisson pas vos son estats adreçats, podètz [[Special:CreateAccount|crear un compte]] o [[Special:UserLogin|vos connectar]] per evitar tota confusion venenta amb d’autres contributors anonims.", "noarticletext": "Pel moment, i a pas cap de tèxte sus aquesta pagina.\nPodètz [[Special:Search/{{PAGENAME}}|aviar una recèrca sul títol d'aqueste títol de pagina]] dins las autras pagina,\n<span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} recercar dins las operacions ligadas],\no [{{fullurl:{{FULLPAGENAME}}|action=edit}} crear aquesta pagina]</span>.", "noarticletext-nopermission": "Actualament i a pas cap de tèxte dins aquesta pagina.\nPodètz [[Special:Search/{{PAGENAME}}|far una recèrca sul títol de la pagina]] dins las autras paginas,\no <span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} recercar dins los jornals associats]</span>.", "missing-revision": "La revision n° $1 de la pagina intitulada « {{FULLPAGENAME}} » existís pas.\n\nAquò se produtz en general en seguent un ligam istoric obsolèt cap a una pagina qu'es estada suprimida.\nPodètz trobar mai de detalhs dins lo [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} jornal de las supressions].", "userpage-userdoesnotexist": "Lo compte d'utilizaire « <nowiki>$1</nowiki> » es pas enregistrat. Indicatz se volètz crear o editar aquesta pagina.", "userpage-userdoesnotexist-view": "Lo compte d'utilizaire « $1 » es pas enregistrat.", "blocked-notice-logextract": "Aqueste utilizaire es actualament blocat.\nLa darrièra entrada del jornal dels blocatges es indicada çaijós a títol d’informacion :", - "clearyourcache": "'''Nòta :''' Aprèp aver enregistrat vòstras modificacions, es possible que vos calga forçar lo recargament complet de l'escondedor de vòstre navigador per veire los cambiaments : \n*'''Firefox / Safari :''' mantenètz la tòca ''Majuscula'' (''Shift'') en clicant lo boton ''Actualizar'' (''Reload,'') o quichatz sus ''Ctrl-F5'' o ''Ctrl-R'' (''⌘-R'' sus un Mac)\n* '''Google Chrome:''' Quichatz sus ''Ctrl-Shift-R'' (''⌘-Shift-R'' sus un Mac) \n* '''Internet Explorer:''' Mantenètz la tòca ''Ctrl'' en clicant sul boton ''Actualizar'', o quichatz ''Ctrl-F5'' \n* '''Opera:''' Voidatz l'escondedor dins ''Aisinas → Preferéncias''", + "clearyourcache": "<strong>Nòta</strong>: Aprèp aver enregistrat vòstras modificacions, es possible que vos calga forçar lo recargament complet de l'escondedor de vòstre navigador per veire los cambiaments : \n* <strong>Firefox / Safari :</strong> mantenètz la tòca <em>Maj</em> (<em>Shift</em>) en clicant lo boton <em>Actualizar</em> o quichatz sus <em>Ctrl-F5</em> o <em>Ctrl-R</em> (<em>⌘-R</em> sus un Mac)\n* <strong>Google Chrome :</strong> Quichatz sus <em>Ctrl-Shift-R</em> (<em>⌘-Shift-R</em> sus un Mac) \n* <strong>Internet Explorer :</strong> Mantenètz la tòca <em>Ctrl</em> en clicant sul boton <em>Actualizar</em>, o quichatz <em>Ctrl-F5</em> \n* <strong>Opera :</strong> anatz dins <em>Menú → Settings</em> (<em>Opera → Preferéncias</em> sus un Mac) e puèi a <em>Confidencialitat & seguretat → Escafar las donadas d’exploracion → Imatges e fichièrs en cache</em>.", "usercssyoucanpreview": "'''Astúcia :''' Utilizatz lo boton 'Previsualizacion' per testar vòstre fuèlh css/js novèl abans de l'enregistrar.", "userjsyoucanpreview": "'''Astúcia :''' Utilizatz lo boton 'Previsualizacion' per testar vòstre fuèlh css/js novèl abans de l'enregistrar.", "usercsspreview": "'''Remembratz-vos que sètz a previsualizar vòstre pròpri fuèlh CSS !'''\n'''Es pas estada encara enregistrada !'''", @@ -687,7 +687,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 estat 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.\nL'istoric de las supressions e dels cambiaments de nom es afichat çaijós coma 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.", @@ -710,6 +710,7 @@ "content-model-css": "CSS", "content-json-empty-object": "Objècte void", "content-json-empty-array": "Tablèu void", + "duplicate-args-category": "Paginas utilizant d'arguments duplicats dins los apèls de modèl", "expensive-parserfunction-warning": "Atencion : Aquesta pagina conten tròp d’apèls dispendioses de foncions del parser.\n\nI deurià aver mens de {{PLURAL:$2|ampèl|ampèls}}, e actualament {{PLURAL:$1|i a $1 ampèl|i a $1 ampèls}}..", "expensive-parserfunction-category": "Paginas amb tròp d’apèls dispendioses de foncions parsaires", "post-expand-template-inclusion-warning": "Atencion : Aquesta pagina conten tròp d'inclusions de modèls.\nD'unas inclusions seràn pas efectuadas.", @@ -732,7 +733,7 @@ "undo-failure": "Aquesta modificacion a pas pogut èsser desfaita a causa de conflictes amb de modificacions intermediàrias.", "undo-norev": "La modificacion a pas pogut èsser desfaita perque siá es inexistenta siá es estada suprimida.", "undo-nochange": "Sembla que la modificacion es ja estada anullada.", - "undo-summary": "Anullacion de las modificacions $1 de [[Special:Contributions/$2|$2]] ([[User talk:$2|discutir]] | [[Special:Contributions/$2|{{MediaWiki:Contribslink}}]])", + "undo-summary": "Anullacion de las modificacions $1 de [[Special:Contributions/$2|$2]] ([[User talk:$2|discussion]])", "undo-summary-username-hidden": "Anullar la revision $1 per un utilizaire amagat", "cantcreateaccount-text": "La creacion de compte dempuèi aquesta adreça IP ('''$1''') es estada blocada per [[User:$3|$3]].\n\nLa rason balhada per $3 èra ''$2''.", "cantcreateaccount-range-text": "La creacion de compte dempuèi las adreças IP dins la plaja <strong>$1</strong>, que compren vòstra agreça IP (<strong>$4</strong>) son estadas blocadas per [[User:$3|$3]].\n\nLo motiu provesit per $3 es <em>$2</em>", @@ -843,6 +844,7 @@ "mergehistory-done": "$3 version{{PLURAL:$3||s}} de $1 {{PLURAL:$3|es estada fusionada|son estada fusionadas}} dins [[:$2]].", "mergehistory-fail": "Impossible de procedir a la fusion dels istorics. Seleccionatz tornamai la pagina e mai los paramètres de data.", "mergehistory-fail-bad-timestamp": "L’orodatatge es pas valid.", + "mergehistory-fail-invalid-source": "La pagina font es pas valida.", "mergehistory-fail-invalid-dest": "La pagina de destinacion es invalida", "mergehistory-fail-toobig": "Impossible d’efectuar la fusion de l’istoric perque un nombre de {{PLURAL:$1|revisions}} superior al limit de $1 deuriá èsser desplaçat.", "mergehistory-no-source": "La pagina d'origina $1 existís pas.", @@ -902,6 +904,7 @@ "search-interwiki-caption": "Projèctes fraires", "search-interwiki-default": "Resultats de $1 :", "search-interwiki-more": "(mai)", + "search-interwiki-more-results": "mai de resultats", "search-relatedarticle": "Relatat", "searchrelated": "relatat", "searchall": "Totes", @@ -909,6 +912,7 @@ "showingresultsinrange": "Afichar çaijós fins a {{PLURAL:$1|<strong>1</strong> resultat|<strong>$1</strong> resultats}} dins la seria #<strong>$2</strong> a #<strong>$3</strong>.", "search-showingresults": "{{PLURAL:$4|Resultat <strong>$1</strong> demest <strong>$3</strong>|Resultats <strong>$1 a $2</strong> demest <strong>$3</strong>}}", "search-nonefound": "I a pas cap de resultat correspondent a la requèsta.", + "search-nonefound-thiswiki": "I a pas de resultats que correspondon a la requèsta sus aqueste site.", "powersearch-legend": "Recèrca avançada", "powersearch-ns": "Recercar dins los espacis de nom :", "powersearch-togglelabel": "Marcar :", @@ -989,6 +993,7 @@ "youremail": "Adreça de corrièr electronic :", "username": "{{GENDER:$1|Nom d'utilizaire|Nom d'utilizaira}}:", "prefs-memberingroups": "{{GENDER:$2|Membre|Membra}} {{PLURAL:$1|del grop|dels gropes}}:", + "group-membership-link-with-expiry": "$1 (fins a $2)", "prefs-registration": "Data de creacion del compte :", "yourrealname": "Nom vertadièr :", "yourlanguage": "Lenga de l'interfàcia :", @@ -1006,7 +1011,7 @@ "email": "Corrièr electronic", "prefs-help-realname": "Lo nom vertadièr es facultatiu.\nSe l'especificatz, serà utilizat per vos atribuir vòstras contribucions.", "prefs-help-email": "L’adreça de corrièr electronic es facultativa mas vos permet de reçaupre lo senhal se lo doblidatz.\nTanben podètz causir de permetre a d’autres de vos contactar per vòstra pagina d’utilizaire o la de discussion sens sofracha de desvelar vòstra idenditat.", - "prefs-help-email-others": "Tanben podètz causir de daissar los autres vos contactar sus vòstra pagina de discussion d'utilizaire sens que siá necessari de revelar vòstra identitat.", + "prefs-help-email-others": "Tanben podètz causir de daissar los autres vos contactar per corrièl via un ligam sus vòstra pagina de discussion d'utilizaire o pagina d'utilizaire.\nVòstra adreça de corrièr electronic es pas revelada quand los utilizaires vos contactan.", "prefs-help-email-required": "Una adreça de corrièr electronic es requesa.", "prefs-info": "Informacion de basa", "prefs-i18n": "Internationalizacion", @@ -1031,17 +1036,23 @@ "userrights-user-editname": "Entrar un nom d’utilizaire :", "editusergroup": "Cargar de gropes d’utilizaires", "editinguser": "Modificacion dels dreits de l’{{GENDER:$1|utilizaire|utilizaira}} <strong>[[User:$1|$1]]</strong> $2", - "userrights-editusergroup": "Modificar los gropes de l’utilizaire", - "userrights-viewusergroup": "Veire lei grops d'utilizaires", + "userrights-editusergroup": "Modificar los gropes de l'utilizai{{GENDER:$1|e|a}}", + "userrights-viewusergroup": "Afichar los gropes de l'utilizair{{GENDER:$1|e|a}}", "saveusergroups": "Enregistrar los gropes de l’{{GENDER:$1|utilizaire|utilizaira}}", "userrights-groupsmember": "Membre de :", "userrights-groupsmember-auto": "Membre implicit de :", - "userrights-groups-help": "Podètz modificar los gropes alsquals aparten aqueste utilizaire.\n* Una casa marcada significa que l'utilizaire se tròba dins aqueste grop.\n* Una casa pas marcada significa, al contrari, que s’i tròba pas.\n* Una * indica que podretz pas levar aqueste grop un còp que l'auretz apondut e vice-versa.", + "userrights-groups-help": "Podètz modificar los gropes als quals aparten {{GENDER:$1|aqueste utilizaire|aquesta utilizaira}}.\n* Una casa marcada significa que l'utilizair{{GENDER:$1|e|a}} se tròba dins aqueste grop.\n* Una casa pas marcada significa, al contrari, que s’i tròba pas.\n* Un asterisc * indica que podètz pas levar aqueste grop un còp que l'avètz apondut e vice-versa.\n* Un dièsi (#) indica que podètz que ralongar lo delai d'expiracion del grop e non pas l'acorchir.", "userrights-reason": "Motiu :", "userrights-no-interwiki": "Sètz pas abilitat per modificar los dreits dels utilizaires sus d'autres wikis.", "userrights-nodatabase": "La basa de donadas « $1 » existís pas o es pas en local.", "userrights-changeable-col": "Los gropes que podètz cambiar", "userrights-unchangeable-col": "Los gropes que podètz pas cambiar", + "userrights-expiry-current": "Expira lo $1", + "userrights-expiry-none": "Expira pas", + "userrights-expiry": "Data d’expiracion :", + "userrights-expiry-existing": "Data d'expiracion existenta : $2 à $3", + "userrights-expiry-othertime": "Autre temps :", + "userrights-expiry-options": "1 jorn:1 day,1 setmana:1 week,1 mes:1 month,3 meses:3 months,6 meses:6 months,1 an:1 year", "userrights-conflict": "Conflicte de modificacion de dreits d'utilizaire ! Relegissètz e confirmatz vòstras modificacions.", "group": "Grop :", "group-user": "Utilizaires", @@ -1071,7 +1082,7 @@ "right-minoredit": "Marcar de cambiaments coma menors", "right-move": "Renomenar de paginas", "right-move-subpages": "Desplaçar de paginas amb lor sospaginas", - "right-move-rootuserpages": "Tornar nomenar las paginas de l’utilizaire de banca.", + "right-move-rootuserpages": "Renomenar la pagina principala d’un utilizaire", "right-move-categorypages": "Renomenar de paginas de categoria", "right-movefile": "Desplaçar los fichièrs", "right-suppressredirect": "Crear pas de redireccion dempuèi la pagina anciana en renomenant la pagina", @@ -1134,17 +1145,28 @@ "right-sendemail": "Mandar un corrièl als autres utilizaires", "right-applychangetags": "Aplicar [[Special:Tags|las balisas]] amb sas pròprias modificacions", "grant-generic": "ensemble de dreits « $1 »", + "grant-group-page-interaction": "Interagir amb de paginas", + "grant-group-file-interaction": "Interagir amb de mèdias", + "grant-group-watchlist-interaction": "Interagir amb vòstra lista de seguiment", "grant-group-email": "Mandar un corrièr electronic", + "grant-group-customization": "Personalizacion e preferéncias", + "grant-group-administration": "Efectuar d'accions administrativas", + "grant-group-private-information": "Accedir a vòstras donadas privadas", + "grant-group-other": "Activitats divèrsas", "grant-blockusers": "Blocar e desblocar d'utilizaires", "grant-createaccount": "Crear de comptes", "grant-createeditmovepage": "Crear, modificar e desplaçar de paginas", - "grant-editpage": "Editar lei paginas existentas", - "grant-editprotected": "Editar lei paginas protegidas", + "grant-editmyoptions": "Modificar vòstras preferéncias d'utilizaire", + "grant-editpage": "Modificar de paginas existentas", + "grant-editprotected": "Modificar de paginas protegidas", "grant-patrol": "Verificar las modificacions de paginas", - "grant-uploadeditmovefile": "Telecargar, remplaçar e desplaçar de fichiers", - "grant-uploadfile": "Telecargar un novèu fichier", + "grant-privateinfo": "Accedir a las informacions privadas", + "grant-sendemail": "Mandar de corriers electronics als autres utilizaires", + "grant-uploadeditmovefile": "Telecargar, remplaçar e renomenar de fichièrs", + "grant-uploadfile": "Importar de fichièrs novèls", "grant-basic": "Dreits de basa", - "grant-viewdeleted": "Veire lei fichiers e lei paginas escafats", + "grant-viewdeleted": "Afichar los fichièrs e paginas suprimits", + "grant-viewmywatchlist": "Afichar vòstra lista de seguiment", "newuserlogpage": "Istoric de las creacions de comptes", "newuserlogpagetext": "Jornal de las creacions de comptes d'utilizaires.", "rightslog": "Istoric de las modificacions d'estatut", @@ -1157,7 +1179,7 @@ "action-history": "afichar l’istoric d'aquesta pagina", "action-minoredit": "marcar aqueste cambiament coma menor", "action-move": "renomenar aquesta pagina", - "action-move-subpages": "tornar nomenar aquesta pagina e sas sospaginas", + "action-move-subpages": "renomenar aquesta pagina e sas sospaginas", "action-move-rootuserpages": "renomenar las paginas de l’utilizaire de basa.", "action-move-categorypages": "Renomenar de paginas de categoria", "action-movefile": "renomenar aqueste fichièr", @@ -1167,12 +1189,12 @@ "action-upload_by_url": "importar aqueste fichièr a partir d’una adreça internet", "action-writeapi": "utilizar l‘API d’escritura", "action-delete": "suprimir aquesta pagina", - "action-deleterevision": "suprimir aquesta version", - "action-deletelogentry": "Escafar lo jornau deis intradas", - "action-deletedhistory": "veire l’istoric suprimit d'aquesta pagina", + "action-deleterevision": "suprimir las revisions", + "action-deletelogentry": "suprimir las entradas del jornal", + "action-deletedhistory": "veire l’istoric suprimit d'una pagina", "action-browsearchive": "recercar de paginas suprimidas", - "action-undelete": "restablir aquesta pagina", - "action-suppressrevision": "tornar veire e restablir aquesta version suprimida", + "action-undelete": "restablir de paginas", + "action-suppressrevision": "visionar e restablir de revisions suprimidas", "action-suppressionlog": "veire aqueste jornal privat", "action-block": "blocar aqueste utilizaire a l’edicion", "action-protect": "modificar los nivèls de proteccion per aquesta pagina", @@ -1187,12 +1209,12 @@ "action-userrights-interwiki": "modificar los dreits d’utilizaire e los sus d’autres wikis", "action-siteadmin": "verrolhar o desverrolhar la basa de donadas", "action-sendemail": "mandar corrièrs electronics", - "action-editmyoptions": "Editar vòstrei preferéncias", + "action-editmyoptions": "modificar vòstras preferéncias", "action-editmywatchlist": "modificar vòstra lista de seguiment", "action-viewmywatchlist": "afichar vòstra pròpria lista de seguiment", "action-viewmyprivateinfo": "veire vòstras informacions personalas", "action-editmyprivateinfo": "modificar vòstras informacions personalas", - "action-purge": "Purgar la pagina", + "action-purge": "purgar aquesta pagina", "nchanges": "$1 {{PLURAL:$1|cambiament|cambiaments}}", "enhancedrc-since-last-visit": "$1 {{PLURAL:$1|dempuèi la darrièra visita}}", "enhancedrc-history": "istoric", @@ -1209,6 +1231,39 @@ "recentchanges-legend-heading": "<strong>Legenda :</strong>", "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-invalid-filter": "Filtre pas valid", + "rcfilters-filterlist-title": "Filtres", + "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-filter-userExpLevel-newcomer-label": "Novèls arribants", + "rcfilters-filter-userExpLevel-learner-label": "Aprenents", + "rcfilters-filter-userExpLevel-experienced-label": "Utilizaires experimentats", + "rcfilters-filtergroup-automated": "Contribucions automatizadas", + "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-filtergroup-significance": "Significacion", + "rcfilters-filter-minor-label": "Cambiaments menors", + "rcfilters-filter-minor-description": "Modificacions que l'autor a marcadas coma menoras.", + "rcfilters-filter-major-label": "Modificacions pas menoras", + "rcfilters-filter-major-description": "Modificacions pas marcadas coma menoras.", + "rcfilters-filtergroup-changetype": "Tipe de cambiament", + "rcfilters-filter-pageedits-label": "Modificacions de pagina", + "rcfilters-filter-pageedits-description": "Modificacions del contengut del wiki, de las discussions, de las descripcions de las categorias...", + "rcfilters-filter-newpages-label": "Creacions de pagina", + "rcfilters-filter-newpages-description": "Modificacions a l'origina de paginas novèlas.", + "rcfilters-filter-categorization-label": "Cambiaments de categoria", + "rcfilters-filter-logactions-label": "Accions traçadas", + "rcfilters-filter-logactions-description": "Accions dels administrators, creacions de comptes, supressions de paginas, telecargaments...", "rcnotefrom": "Çaijós {{PLURAL:$5|la modificacion efectuada|las modificacions efectuadas}} dempuèi lo <strong>$3, $4</strong> (afichadas fins a <strong>$1</strong>).", "rclistfrom": "Afichar las modificacions novèlas dempuèi lo $3 $2", "rcshowhideminor": "$1 los cambiaments menors", @@ -1256,8 +1311,8 @@ "recentchangeslinked-page": "Nom de la pagina :", "recentchangeslinked-to": "Afichar los cambiaments cap a las paginas ligadas al luòc de la pagina donada", "recentchanges-page-added-to-category": "[[:$1]] apondut a la categoria", - "recentchanges-page-removed-from-category": "[[:$1]] retirat de la categoria", - "autochange-username": "Cambiament automatic MediaWiki", + "recentchanges-page-removed-from-category": "[[:$1]] suprimit de la categoria", + "autochange-username": "Cambiament automatic de MediaWiki", "upload": "Importar un fichièr", "uploadbtn": "Importar un fichièr", "reuploaddesc": "Anullar lo cargament e tornar al formulari.", @@ -1314,8 +1369,8 @@ "file-thumbnail-no": "Lo nom del fichièr comença per <strong>$1</strong>.\nEs possible que s’agisca d’una version reducha ''(miniatura)''.\nSe dispausatz del fichièr en resolucion nauta, importatz-lo, si que non cambiatz lo nom del fichièr.", "fileexists-forbidden": "Un fichièr amb aqueste nom existís ja e pòt pas èsser espotit.\nSe volètz totjorn importar aquel fichièr, mercé de tornar en arrièr e d'utilizar un nom novèl. [[File:$1|thumb|center|$1]]", "fileexists-shared-forbidden": "Un fichièr amb lo meteis nom existís ja dins la basa de donadas comuna.\nS'o volètz importar tornamai, tornatz en rèire e importatz-lo jos un autre nom. [[File:$1|thumb|center|$1]]", - "fileexists-no-change": "Lo telecargament es un doblon de <strong>[[:$1]]</strong>.", - "fileexists-duplicate-version": "Lo telecargament es un doblon de {{PLURAL:$2|an older version|older versions}} de <strong>[[:$1]]</strong>.", + "fileexists-no-change": "Lo fichièr telecargat es una còpia exacta de la version actuala de <strong>[[:$1]]</strong>", + "fileexists-duplicate-version": "Lo fichièr mandat es una còpia exacta {{PLURAL:$2|d'una version precedenta|de versions precedentas}} de <strong>[[:$1]]</strong>.", "file-exists-duplicate": "Aqueste fichièr es un doble {{PLURAL:$1|del fichièr seguent|dels fichièrs seguents}} :", "file-deleted-duplicate": "Un fichièr identic a aqueste ([[:$1]]) ja es estat suprimit. Vos caldriá verificar lo jornal de las supressions d'aqueste fichièr abans de la tornar telecargar.", "file-deleted-duplicate-notitle": "Un fichièr identic a aqueste fichièr es ja estat suprimit amai lo títol. \nVos caldriá demandar a qualqu'un la possibilitat de verificar lo jornal d'aqueste fichièr suprimit per tal d'examinar la situacion abans de l'importar tornarmai.", @@ -1327,7 +1382,7 @@ "uploaddisabledtext": "L'impòrt de fichièrs cap al servidor es desactivat.", "php-uploaddisabledtext": "Lo telecargament de fichièrs es estat desactivat dins PHP. Verificatz l'opcion de configuracion file_uploads.", "uploadscripted": "Aqueste fichièr conten de còdi HTML o un escript que poiriá èsser interpretat d'un biais incorrècte per un navigador Internet.", - "uploadscriptednamespace": "Aqueste fichièr SVG conten un espaci de noms '$1' pas autorizat.", + "uploadscriptednamespace": "Aqueste fichièr SVG conten un espaci de noms '<nowiki>$1</nowiki>' pas autorizat.", "uploadinvalidxml": "Lo XML dins lo fichièr importat a pas pogut èsser analisat.", "uploadvirus": "Aqueste fichièr conten un virús ! Per mai de detalhs, consultatz : $1", "uploadjava": "Es un fichièr ZIP que conten un fichièr Java .class.\nLo telecargament de fichièrs Java es pas autorizat, perque pòdon contornar de restriccions de seguretat.", @@ -1365,8 +1420,9 @@ "upload-form-label-own-work": "Soi l'autor d'aquesta òbra", "upload-form-label-infoform-categories": "Categorias", "upload-form-label-infoform-date": "Data", - "upload-form-label-own-work-message-generic-foreign": "Compreni que siáu a telecargar aquest fichier vèrs un estocatge partejat. Confiermi que siáu a lo faire segon lei reglas d'utilizacion e de licéncia en vigor.", - "upload-form-label-not-own-work-message-generic-foreign": "Se siatz pas capable de telecargar aqust fichir segon lei reglas d'aquest estocatge partejat, mercé de sarrar aquest boita de dialògue a d'assaiar un autre metòde.", + "upload-form-label-not-own-work-local-generic-local": "Tanben podètz ensajar [[Special:Upload|la pagina de telecargament per defaut]].", + "upload-form-label-own-work-message-generic-foreign": "Compreni que mandi aqueste fichièr cap a un depaus partejat. Confirmi qu'agissi en acòrd amb las condicions d'utilizacion e las règlas relativas a las licéncias en vigor.", + "upload-form-label-not-own-work-message-generic-foreign": "Se sètz pas en capacitat de mandar aqueste fichièr segon las règlas d'aqueste depaus partejat, mercé de tampar aquesta bóstia de dialòg a d'ensajar un autre metòde.", "backend-fail-stream": "Impossible de legir lo fichièr $1.", "backend-fail-backup": "Impossible de salvar lo fichièr $1.", "backend-fail-notexists": "Lo fichièr $1 existís pas.", @@ -1409,7 +1465,7 @@ "zip-bad": "Lo fichièr es un archiu ZIP corromput o illegible.\nPòt pas èsser verificat corrèctament per la seguretat.", "zip-unsupported": "Lo fichièr es un archiu ZIP qu'utiliza de caracteristicas pas suportadas per MediaWiki. \nSa seguretat pòt pas èsser verificada corrèctament.", "uploadstash": "Cache d'impòrt", - "uploadstash-summary": "La pagina dona accès ai fichiers que son telecargats o en cors de telecargament, mai pas encara publicats sus lo wiki. Aquelei fichiers son unicament visibles per l'utilizaire a l'origina dau telecargament.", + "uploadstash-summary": "Aquesta pagina dona accès als fichièrs que son importats (o en cors d'importacion), mas son pas encara publicats dins lo wiki. Aqueles fichièrs son pas encara visibles, levat per l'utilizaire a l'origina de l'importacion.", "uploadstash-clear": "Escafar los fichièrs en cache", "uploadstash-nofiles": "Avètz pas de fichièrs en cache d'impòrt.", "uploadstash-errclear": "La supression dels fichièrs a fracassat.", @@ -1447,7 +1503,7 @@ "listfiles-delete": "suprimir", "listfiles-summary": "Aquesta pagina especiala permet de far la lista de totes los fichièrs importats.", "listfiles_search_for": "Recèrca del mèdia nomenat :", - "listfiles-userdoesnotexist": "L'utilizaire \"$1\" es pas enregistrat.", + "listfiles-userdoesnotexist": "Lo compte d'utilizaire « $1 » es pas enregistrat.", "imgfile": "fichièr", "listfiles": "Lista dels imatges", "listfiles_thumb": "Apercebut", @@ -1491,6 +1547,7 @@ "uploadnewversion-linktext": "Importar una version novèla d'aqueste fichièr", "shared-repo-from": "de $1", "shared-repo": "un depaus partejat", + "shared-repo-name-wikimediacommons": "Wikimèdia Commons", "upload-disallowed-here": "Podètz pas remplaçar aqueste fichièr.", "filerevert": "Revocar $1", "filerevert-legend": "Revocar lo fichièr", @@ -1500,7 +1557,7 @@ "filerevert-submit": "Revocar", "filerevert-success": "'''[[Media:$1|$1]]''' es estat revocat fins a [$4 la version del $2 a $3].", "filerevert-badversion": "I a pas de version mai anciana del fichièr amb lo Timestamp donat.", - "filerevert-identical": "La version actuala d'aqueu fichier es ja identica an aquela qu'es seleccionada.", + "filerevert-identical": "La version actuala del fichièr es ja identica a aquela qu'es seleccionada.", "filedelete": "Suprimir $1", "filedelete-legend": "Suprimir lo fichièr", "filedelete-intro": "Sètz a suprimir '''[[Media:$1|$1]]''' amb tot son istoric.", @@ -1572,7 +1629,7 @@ "withoutinterwiki-summary": "Las paginas seguentas an pas de ligams cap a las versions dins d'autras lengas.", "withoutinterwiki-legend": "Prefix", "withoutinterwiki-submit": "Afichar", - "fewestrevisions": "Articles mens modificats", + "fewestrevisions": "Paginas las mens modificadas", "nbytes": "$1 {{PLURAL:$1|octet|octets}}", "ncategories": "$1 {{PLURAL:$1|categoria|categorias}}", "ninterwikis": "$1 {{PLURAL:$1|interwiki|interwikis}}", @@ -1593,7 +1650,7 @@ "unusedimages": "Imatges orfanèls", "wantedcategories": "Categorias mai demandadas", "wantedpages": "Paginas mai demandadas", - "wantedpages-summary": "Aquesta pagina compta totes los ligams, encluses los inserits via de modèls de navigacion. Per una lista dels articles mai demandats, vejatz articles mai demandats, que comptabiliza pas que las referéncias que provenon de l'espaci de nom dels articles. Vejatz tanben lo '''articles mai demandats'''.", + "wantedpages-summary": "Lista de las paginas inexistentas qu'an lo mai de ligams cap a elas, en excluent las paginas qu'an pas que de redireccions puntant cap a elas. Per aver una lista de las paginas inexistentas qu'an de redireccions puntant cap a elas, vejatz [[{{#special:BrokenRedirects}}|la lista de las redireccions copadas]].", "wantedpages-badtitle": "Títol invalid dins los resultats : $1", "wantedfiles": "Fichièrs desirats", "wantedfiletext-cat": "Los fichièrs seguents son utilizats, mas existisson pas localament. Se se tròban sus un depaus partejat, pòdon èsser listats aicí, mentre que sián, de fait, ja disponibles. Totes aqueles falses positius seràn <del>raiats</del>. Amai, las paginas qu'intègran de fichièrs qu'existisson pas son repertoriadas dins [[:$1]].", @@ -1604,10 +1661,10 @@ "mostlinked": "Paginas mai ligadas", "mostlinkedcategories": "Categorias mai utilizadas", "mostlinkedtemplates": "Paginas las mai inclusas", - "mostcategories": "Articles utilizant mai de categorias", + "mostcategories": "Articles utilizant lo mai de categorias", "mostimages": "Fichièrs mai utilizats", "mostinterwikis": "Paginas amb lo mai d'interwikis", - "mostrevisions": "Articles mai modificats", + "mostrevisions": "Paginas las mai modificadas", "prefixindex": "Totas las paginas que començan per…", "prefixindex-namespace": "Totas las paginas amb prefix (espaci de noms $1)", "prefixindex-submit": "Afichar", @@ -1631,7 +1688,7 @@ "protectedpages-unknown-timestamp": "Desconegut", "protectedpages-unknown-performer": "Utilizaire desconegut", "protectedtitles": "Títols protegits", - "protectedtitles-summary": "Aquò es una lista dei títols de pagina que son a l'ora d'ara protegits còntra la creacion. Per una lista dei paginas existentas que son protegidas, veire [[{{#special:ProtectedPages}}|{{int:protectedpages}}]].", + "protectedtitles-summary": "Aquò es una lista dels títols de pagina que son a l'ora d'ara protegits contra la creacion. Per una lista de las paginas existentas que son protegidas, veire [[{{#special:ProtectedPages}}|{{int:protectedpages}}]].", "protectedtitlesempty": "Cap de títol es pas actualament protegit amb aquestes paramètres.", "protectedtitles-submit": "Afichar los títols", "listusers": "Lista dels participants", @@ -1665,24 +1722,42 @@ "apisandbox-submit": "Far la demanda", "apisandbox-reset": "Escafar", "apisandbox-retry": "Ensajar tornarmai", + "apisandbox-load-error": "Una error s'es produita pendent lo cargament de las informacions del modul \"$1\" de l'API : $2", + "apisandbox-no-parameters": "Aqueste modul API a pas cap de paramètre.", "apisandbox-helpurls": "Ligams d'ajuda", "apisandbox-examples": "Exemples", "apisandbox-dynamic-parameters": "Paramètres suplementaris", "apisandbox-dynamic-parameters-add-label": "Apondon del paramètre", "apisandbox-dynamic-parameters-add-placeholder": "Nom del paramètre", + "apisandbox-dynamic-error-exists": "Existís ja un paramètre nomenat \"$1\"", "apisandbox-deprecated-parameters": "Paramètres obsolèts", - "apisandbox-submit-invalid-fields-title": "De camps son invalides", + "apisandbox-fetch-token": "Auto-emplenatge del geton", + "apisandbox-submit-invalid-fields-title": "Certans camps son invalids", + "apisandbox-submit-invalid-fields-message": "Corregissètz los camps indicats e ensajatz tornamai.", "apisandbox-results": "Resultats", + "apisandbox-sending-request": "Mandadís de la requèsta a l'API...", + "apisandbox-loading-results": "Recepcion dels resultats de l'API...", + "apisandbox-request-selectformat-label": "Afichar las donadas de la requèsta coma :", + "apisandbox-request-format-url-label": "Cadena de requèsta de l'URL", "apisandbox-request-url-label": "Requèsta URL :", + "apisandbox-request-json-label": "Demandar de JSON :", "apisandbox-request-time": "Durada de la demanda : {{PLURAL:$1|$1 ms}}", + "apisandbox-alert-page": "Los camps d'aquesta pagina son pas valids.", + "apisandbox-alert-field": "La valor d'aqueste camp es pas valida.", "apisandbox-continue": "Contunhar", "apisandbox-continue-clear": "Escafar", + "apisandbox-param-limit": "Entrar <kbd>max</kbd> per utilizar lo limit maximal.", + "apisandbox-multivalue-all-namespaces": "$1 (totes los espacis de noms)", + "apisandbox-multivalue-all-values": "$1 (totas las valors)", "booksources": "Obratges de referéncia", "booksources-search-legend": "Recercar demest d'obratges de referéncia", "booksources-isbn": "ISBN :", "booksources-search": "Recercar", "booksources-text": "Vaquí una lista de ligams cap a d’autres sites que vendon de libres nòus e d’ocasion e suls quals trobaretz benlèu d'entresenhas suls obratges que cercatz. {{SITENAME}} es pas ligada a cap d'aquestas societats, a pas l’intencion de ne far la promocion.", "booksources-invalid-isbn": "Lo numèro ISBN balhat sembla pas èsser valid ; verificatz s'avètz fait una error al moment de la còpia dempuèi la font.", + "magiclink-tracking-rfc": "Paginas utilizant de ligams magics RFC", + "magiclink-tracking-pmid": "Paginas utilizant de ligams magics PMID", + "magiclink-tracking-isbn": "Paginas utilizant de ligams magics ISBN", "specialloguserlabel": "Autor :", "speciallogtitlelabel": "Cibla (títol o {{ns:user}}:nom d'utilizaire) :", "log": "Jornals", @@ -1702,7 +1777,7 @@ "allpagesfrom": "Afichar las paginas a partir de :", "allpagesto": "Afichar las paginas fins a :", "allarticles": "Totas las paginas", - "allinnamespace": "Totas las paginas (espaci de noms $1)", + "allinnamespace": "Totas las paginas (dins l'espaci de noms $1)", "allpagessubmit": "Validar", "allpagesprefix": "Afichar las paginas que començan pel prefix :", "allpagesbadtitle": "Lo títol rensenhat per la pagina es incorrècte o possedís un prefix reservat. Conten segurament un o mantun caractèr especial que pòt pas èsser utilizats dins los títols.", @@ -1733,7 +1808,7 @@ "activeusers-count": "$1 {{PLURAL:$1|accion|accions}} al moment {{PLURAL:$3|del darrièr jorn|dels $3 darrièrs jorns}}", "activeusers-from": "Afichar los utilizaires dempuèi :", "activeusers-noresult": "Cap d'utilizaire pas trobat.", - "activeusers-submit": "Mostrar leis utilizaires actius", + "activeusers-submit": "Afichar los utilizaires actius", "listgrouprights": "Dreits dels gropes d'utilizaires", "listgrouprights-summary": "Aquesta pagina conten una lista de gropes definits sus aqueste wiki e mai los dreits d'accès qu'i son associats.\nI pòt aver [[{{MediaWiki:Listgrouprights-helppage}}|d'entresenhas complementàrias]] a prepaus dels dreits.", "listgrouprights-key": "Legenda :\n*<span class=\"listgrouprights-granted\">Dreit autrejat</span>\n*<span class=\"listgrouprights-revoked\">Dreit revocat</span>", @@ -1759,6 +1834,7 @@ "trackingcategories-msg": "Categoria de seguiment", "trackingcategories-name": "Nom del messatge", "trackingcategories-desc": "Critèri d’inclusion de la categoria", + "restricted-displaytitle-ignored": "Paginas amb de títols d'afichatge ignorats", "trackingcategories-nodesc": "Cap de descripcion pas disponibla.", "trackingcategories-disabled": "La categoria es desactivada", "mailnologin": "Pas d'adreça", @@ -1778,7 +1854,7 @@ "emailusername": "Nom d'utilizaire :", "emailusernamesubmit": "Sometre", "email-legend": "Mandar un corrièr electronic a un autre utilizaire de {{SITENAME}}", - "emailfrom": "Expeditor :", + "emailfrom": "De :", "emailto": "Destinatari :", "emailsubject": "Subjècte :", "emailmessage": "Messatge :", @@ -1787,7 +1863,7 @@ "emailccsubject": "Còpia de vòstre messatge a $1 : $2", "emailsent": "Messatge mandat", "emailsenttext": "Vòstre messatge es estat mandat.", - "emailuserfooter": "Aqueste corrièr electronic es estat mandat per « $1 » a « $2 » per la foncion « {{int:emailuser}} » sus {{SITENAME}}.", + "emailuserfooter": "Aqueste corrièr electronic es {{GENDER:$1|estat mandat}} per « $1 » a « {{GENDER:$2|$2}} » per la foncion « {{int:emailuser}} » sus {{SITENAME}}. Se {{GENDER:$2|respondètz}} a aqueste corrièl, {{GENDER:$2|vòstre}} corrièl serà mandat dirèctament a l’{{GENDER:$1|emeteire inicial}}, en {{GENDER:$1|li}} mencionant {{GENDER:$2|vòstra}} adreça de courrièl .", "usermessage-summary": "A daissat un messatge de sistèma.", "usermessage-editor": "Messatgièr del sistèma", "watchlist": "Lista de seguiment", @@ -1797,10 +1873,10 @@ "watchlistanontext": "Connectatz-vos per visualizar o modificar los elements de vòstra lista de seguiment.", "watchnologin": "Vos sètz pas identificat(ada)", "addwatch": "Apondre a la lista de seguiment", - "addedwatchtext": "La pagina « [[:$1]] » es estada aponduda a vòstra [[Special:Watchlist|lista de seguiment]]. Las modificacions venentas d'aquesta pagina e de la pagina de discussion associada i seràn repertoriadas.", + "addedwatchtext": "La pagina « [[:$1]] » e sa pagina de discussion son estadas apondudas a vòstra [[Special:Watchlist|lista de seguiment]].", "addedwatchtext-short": "La pagina « $1 » es estada aponduda a vòstra lista de seguiment.", "removewatch": "Suprimir de la lista de seguiment", - "removedwatchtext": "La pagina « [[:$1]] » es estada levada de vòstra [[Special:Watchlist|lista de seguiment]].", + "removedwatchtext": "La pagina « [[:$1]] » e sa pagina de discussion son estadas levadas de vòstra [[Special:Watchlist|lista de seguiment]].", "removedwatchtext-short": "La pagina « $1 » es estada suprimida de vòstra lista de seguiment.", "watch": "Seguir", "watchthispage": "Seguir aquesta pagina", @@ -1815,12 +1891,14 @@ "wlshowlast": "Far veire las darrièras $1 oras, los darrièrs $2 jorns", "watchlist-hide": "Amagar", "watchlist-submit": "Afichar", + "wlshowtime": "Periòde afichat :", "wlshowhideminor": "cambiaments menors", "wlshowhidebots": "Robòts", "wlshowhideliu": "utilizaires enregistrats", "wlshowhideanons": "utilizaires anonims", "wlshowhidepatr": "modificacions repassadas", "wlshowhidemine": "mas modificacions", + "wlshowhidecategorization": "categorizacion de la pagina", "watchlist-options": "Opcions de la lista de seguiment", "watching": "Seguit...", "unwatching": "Fin del seguit...", @@ -1886,6 +1964,7 @@ "changecontentmodel-model-label": "Novèl modèl de contengut", "changecontentmodel-reason-label": "Motiu :", "changecontentmodel-submit": "Modificar", + "changecontentmodel-emptymodels-title": "Cap de modèl de contengut pas disponible", "logentry-contentmodel-change-revertlink": "restablir", "logentry-contentmodel-change-revert": "restablir", "protectlogpage": "Istoric de las proteccions", @@ -1894,6 +1973,9 @@ "modifiedarticleprotection": "a modificat lo nivèl de proteccion de « [[$1]] »", "unprotectedarticle": "a suprimit la proteccion de « [[$1]] »", "movedarticleprotection": "a desplaçat los paramètres de proteccion dempuèi « [[$2]] » cap a « [[$1]] »", + "protectedarticle-comment": "{{GENDER:$2|A protegit}} « [[$1]] »", + "modifiedarticleprotection-comment": "{{GENDER:$2|A cambiat lo nivèl de proteccion}} per « [[$1]] »", + "unprotectedarticle-comment": "{{GENDER:$2|A suprimit la proteccion}} de « [[$1]] »", "protect-title": "Cambiar lo nivèl de proteccion de « $1 »", "protect-title-notallowed": "Veire lo nivèl de proteccion de « $1 »", "prot_1movedto2": "a renomenat [[$1]] en [[$2]]", @@ -1911,7 +1993,7 @@ "protect-locked-blocked": "Podètz pas modificar los nivèls de proteccion tant que sètz bloca{{GENDER:||t|ada}}.. Vaquí los reglatges actuals de la pagina <strong>$1</strong> :", "protect-locked-dblock": "Lo nivèl de proteccion pòt pas èsser modificat perque la basa de donadas es verrolhada.\nVaquí los reglatges actuals de la pagina <strong>$1</strong> :", "protect-locked-access": "Avètz pas los dreits necessaris per modificar los nivèls de proteccion de las paginas.\nVaquí los reglatges actuals de la pagina <strong>$1</strong> :", - "protect-cascadeon": "Aquesta pagina es protegida perque es inclusa dins {{PLURAL:$1|la pagina seguenta qu'es estada protegida|las paginas seguentas que son estadas protegidas}}, amb l’opcion « proteccion en cascada » activada. Podètz cambiar lo nivèl de proteccion d'aquesta pagina sens qu'aquò afècte la proteccion en cascada.", + "protect-cascadeon": "Aquesta pagina es protegida perque es transclusa dins {{PLURAL:$1|la pagina seguenta qu'es estada protegida|las paginas seguentas que son estadas protegidas}}, amb l’opcion « proteccion en cascada » d'activada.\nPodètz cambiar lo nivèl de proteccion d'aquesta pagina sens qu'aquò afècte la proteccion en cascada.", "protect-default": "Autorizar totes los utilizaires", "protect-fallback": "Autorizar unicament los utilizaires amb lo dreit « $1 »", "protect-level-autoconfirmed": "Autorizar unicament los utilizaires autoconfirmats", @@ -2014,6 +2096,7 @@ "sp-contributions-username": "Adreça IP o nom d’utilizaire :", "sp-contributions-toponly": "Mostrar sonque las contribucions que son las darrièras dels articles", "sp-contributions-newonly": "Afichar unicament las modificacions que son de creacions de pagina", + "sp-contributions-hideminor": "Amagar las modificacions menoras", "sp-contributions-submit": "Cercar", "whatlinkshere": "Paginas ligadas a aquesta", "whatlinkshere-title": "Paginas que puntan cap a « $1 »", @@ -2032,12 +2115,13 @@ "whatlinkshere-hidelinks": "$1 ligams", "whatlinkshere-hideimages": "$1 los ligams cap al fichièr", "whatlinkshere-filters": "Filtres", + "whatlinkshere-submit": "Validar", "autoblockid": "Blocatge automatic #$1", "block": "Blocar un utilizaire", "unblock": "Desblocar un utilizaire", "blockip": "Blocar l’{{GENDER:$1|utilizaire|utilizaira}}", "blockip-legend": "Blocar en escritura", - "blockiptext": "Utilizatz lo formulari çaijós per blocar l'accès a las modificacions a partir d'una adreça IP especifica o d'un nom d'utilizaire.\nUna tala mesura deu pas èsser presa pas que per empachar lo vandalisme e en acòrdi amb las [[{{MediaWiki:Policy-url}}|règlas intèrnas]].\nDonatz çaijós un motiu precís (per exemple en citant las paginas que son estadas vandalizadas).", + "blockiptext": "Utilizatz lo formulari çaijós per blocar las temptativas de modificacion a partir d'una adreça IP especifica o d'un nom d'utilizaire.\nUna tala mesura deuriá pas èsser presa pas que per empachar lo vandalisme e en acòrd amb las [[{{MediaWiki:Policy-url}}|règlas intèrnas]].\nDonatz çaijós un motiu precís (per exemple en citant las paginas que son estadas vandalizadas).\nPodètz blocar de plajas d’adreças IP en utilizant la sintaxi [https://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing CIDR] ; la mai granda plaja autorizada es /$1 per IP v4 e /$2 per IP v6.", "ipaddressorusername": "Adreça IP o nom d’utilizaire :", "ipbexpiry": "Durada del blocatge :", "ipbreason": "Motiu :", @@ -2152,9 +2236,10 @@ "databasenotlocked": "La basa de donadas es pas verrolhada.", "lockedbyandtime": "(per $1 lo $2 a $3)", "move-page": "Renomenar $1", - "move-page-legend": "Tornar nomenar una pagina", - "movepagetext": "Utilizatz lo formulari çaijós per tornar nomenar una pagina, en desplaçant tot son istoric cap al nom novèl. Lo títol ancian vendrà una pagina de redireccion cap al títol novèl. Podètz metre a jorn automaticament las redireccions actualas que puntan cap al títol original. Se causissètz de lo far pas, asseguratz-vos de verificar tota [[Special:DoubleRedirects|redireccion dobla]] o [[Special:BrokenRedirects|redireccion copada]]. Avètz la responsabilitat de vos assegurar que los ligams contunhen de puntar cap a lor destinacion supausada.\n\nNotatz que la pagina serà '''pas''' renomada s'existís ja una pagina amb lo novèl títol, levat se aquesta darrièra a un istoric de modificacions verge e es una simpla redireccion. Aquò permet de renomenar una pagina cap a sa posicion d'origina se lo desplaçament s'avera erronèu.\n\n'''ATENCION !'''\nAquò pòt provocar un cambiament radical e imprevist per una pagina consultada frequentament ; asseguratz-vos de n'aver comprés las consequéncias abans de contunhar.", - "movepagetalktext": "La pagina de discussion associada, se presenta, serà automaticament desplaçada amb ''' levat se :'''\n*Desplaçatz una pagina cap a un autre espaci,\n*Una pagina de discussion ja existís amb lo nom novèl, o\n*Avètz deseleccionat lo boton çaijós.\n\nDins aqueste cas, vos caldrà desplaçar o fusionar la pagina manualament se o volètz.", + "move-page-legend": "Renomenar una pagina", + "movepagetext": "Utilizatz lo formulari çaijós per renomenar una pagina, en desplaçant tot son istoric cap al nom novèl. Lo títol ancian vendrà una pagina de redireccion cap al títol novèl.\nPodètz metre a jorn automaticament las redireccions actualas que puntan cap al títol original.\nSe causissètz de lo far pas, asseguratz-vos de verificar tota [[Special:DoubleRedirects|redireccion dobla]] o [[Special:BrokenRedirects|redireccion copada]]. Avètz la responsabilitat de vos assegurar que los ligams contunhan de puntar cap a lor destinacion supausada.\n\nNotatz que la pagina serà <strong>pas</strong> renomada s'existís ja una pagina amb lo novèl títol, levat se aquesta darrièra a un istoric de modificacions verge e es una simpla redireccion. \nAquò significa que podètz renomenar una pagina cap a sa posicion d'origina se vos sètz enganat e que podètz pas espotir una pagina existenta.\n\n<strong>Atencion !</strong>\nAquò pòt provocar un cambiament radical e imprevist per una pagina consultada frequentament ; asseguratz-vos qu'avètz comprés las consequéncias de vòstra accion abans de contunhar.", + "movepagetext-noredirectfixer": "Utilizatz lo formulari çaijós per renomenar una pagina, en desplaçant tot son istoric cap al nom novèl.\nL’ancian títol vendrà una pagina de redireccion cap al novèl títol.\nVerificatz plan las [[Special:DoubleRedirects|doblas redireccions]] o las [[Special:BrokenRedirects|redireccions copadas]].\nAvètz la responsabilitat de vos assegurar que los ligams contuhan de puntar cap a lor destinacion supausada.\n\nNotatz que la pagina serà <strong>pas</strong> desplaçada se existís ja una pagina amb lo títol novèl, levat se aquesta darrièra a un istoric de modificacions verge e es siá void, siá una simpla redireccion. Aquò permet de renomenar una pagina cap a sa posicion d’origina se lo desplaçament s’avèra erronèu, e es impossible d’espotir una pagina existenta.\n\n<strong>Atencion !</strong>\nAquò pòt provocar un cambiament radical e imprevist per una pagina sovent consultada ; asseguratz-vos de n'aver comprés las consequéncias abans de contunhar.", + "movepagetalktext": "Se marcatz aquesta casa, la pagina de discussion associada serà automaticament renomenada levat se una pagina de discussion, non voida, existís ja amb aqueste nom novèl.\n\nDins aqueste cas, vos caldrà renomenar o fusionar la pagina manualament se o volètz.", "moveuserpage-warning": "'''Atencion :''' Sètz a mand de tornar nomenar una pagina d’utilizaire. Notatz que sola la pagina serà renomenada e que l’utilizaire '''ne''' serà '''pas''' renomenat.", "movenologintext": "Per poder renomenar una pagina, vos cal èsser [[Special:UserLogin|indentific{{GENDER:||t|da)}}]]\nen tant qu'utilizaire enregistrat amb pro d'ancianetat.", "movenotallowed": "Avètz pas la permission de renomenar de paginas.", @@ -2162,9 +2247,9 @@ "cant-move-user-page": "Avètz pas la permission de renomenar las paginas principalas d'utilizaires.", "cant-move-to-user-page": "Avètz pas la permission de tornar nomenar una pagina cap a una pagina d'utilizaire (a l'excepcion d'una sospagina).", "cant-move-category-page": "Avètz pas la permission de renomenar las paginas de categorias.", - "cant-move-to-category-page": "Avètz pas lei drechs necessaris per desplaçar una pagina vèrs una categoria", - "cant-move-subpages": "Avètz pas lei drechs necessaris per desplaçar de sota-paginas.", - "namespace-nosubpages": "Lo nom d'espaci $1 autoriza pas lei sota-paginas.", + "cant-move-to-category-page": "Avètz pas lo dreit de renomenar una pagina cap a una pagina de categoria.", + "cant-move-subpages": "Avètz pas lo dreit de renomenar de sospaginas.", + "namespace-nosubpages": "L’espaci de noms « $1 » autoriza pas las sospaginas.", "newtitle": "Títol novèl :", "move-watch": "Seguir aquesta pagina", "movepagebtn": "Renomenar l'article", @@ -2175,27 +2260,27 @@ "articleexists": "Existís ja un article que pòrta aqueste títol, o lo títol qu'avètz causit es pas valid.\nCausissètz-ne un autre.", "cantmove-titleprotected": "Avètz pas la possibilitat de desplaçar una pagina cap a aqueste emplaçament perque lo títol es estat protegit a la creacion.", "movetalk": "Renomenar tanben la pagina de discussion associada", - "move-subpages": "Tornar nomenar las sospaginas (fins a $1 paginas)", - "move-talk-subpages": "Tornar nomenar las sospaginas de la pagina de discussion (fins a $1 paginas)", + "move-subpages": "Renomenar las sospaginas (maximum $1)", + "move-talk-subpages": "Renomenar las sospaginas de la pagina de discussion (maximum $1 paginas)", "movepage-page-exists": "La pagina $1 existís ja e pòt pas èsser espotida automaticament.", "movepage-page-moved": "La pagina $1 es estada renomenada en $2.", "movepage-page-unmoved": "La pagina $1 pòt èsser renomenada en $2.", "movepage-max-pages": "Lo maximum de $1 {{PLURAL:$1|pagina es estada renomenada|paginas son estadas renomenadas}} e cap d'autra o poirà pas èsser automaticament.", "movelogpage": "Istoric dels cambiaments de nom", "movelogpagetext": "Vaquí la lista de las darrièras paginas renomenadas.", - "movesubpage": "{{PLURAL:$1|Sospagina|Sospaginas}}", + "movesubpage": "Sospagina{{PLURAL:$1||s}}", "movesubpagetext": "Aquesta pagina a $1 {{PLURAL:$1|sospagina afichada|sospaginas afichadas}} çaijós.", "movenosubpage": "Aquesta pagina a pas cap de sospagina.", "movereason": "Motiu :", "revertmove": "anullar", - "delete_and_move_text": "==Supression requerida==\nL’article de destinacion « [[:$1]] » existís ja.\nLo volètz suprimir per permetre lo cambiament de nom ?", + "delete_and_move_text": "La pagina de destinacion « [[:$1]] » existís ja.\nSètz segur{{GENDER:||a|}} que la volètz suprimir pe permetre aqueste cambiament de nom ?", "delete_and_move_confirm": "Òc, accèpti de suprimir la pagina de destinacion per permetre lo cambiament de nom.", "delete_and_move_reason": "Pagina suprimida per permetre lo cambiament de nom dempuèi « [[$1]] »", "selfmove": "Los títols d’origina e de destinacion son los meteisses : impossible de tornar nomenar una pagina sus ela-meteissa.", - "immobile-source-namespace": "Podètz pas tornar nomenar de paginas dins l'espaci de noms « $1 »", + "immobile-source-namespace": "Podètz pas renomenar las paginas dins l'espaci de noms « $1 »", "immobile-target-namespace": "Podètz pas desplaçar de paginas cap a l'espaci de noms « $1 »", "immobile-target-namespace-iw": "Los ligams interwikis son pas una cibla valida pels cambiaments de nom.", - "immobile-source-page": "Aquesta pagina se pòt pas tornar nomenar.", + "immobile-source-page": "Aquesta pagina se pòt pas renomenar.", "immobile-target-page": "Es pas possible de desplaçar la pagina cap a aqueste títol.", "imagenocrossnamespace": "Pòt pas desplaçar un imatge cap a un espaci de nomenatge que siá pas un imatge.", "nonfile-cannot-move-to-file": "Impossible de renomenar quicòm mai qu'un fichièr cap a l'espaci de noms fichièr.", @@ -2205,7 +2290,7 @@ "move-leave-redirect": "Daissar una redireccion darrièr", "protectedpagemovewarning": "'''ATENCION:''' Aquesta pagina es estada protegida per que sonque los utilizaires qu'an los dreits d'administrators la pòscan renomenar. La darrièra entrada del jornal es afichada çaijós per referéncia :", "semiprotectedpagemovewarning": "'''Nòta :''' Aquesta pagina es estada blocada per que sonque los utilizaires enregistrats la pòscan tornar nomenar. La darrièra entrada del jornal es afichada çaijós per referéncia :", - "move-over-sharedrepo": "== Lo fichièr existís ==\n[[:$1]] existís ja sus un depaus partejat. Tornar nomenar aqueste fichièr farà lo fichièr sul depaus partatge inaccessible.", + "move-over-sharedrepo": "[[:$1]] existís ja sus un depaus partejat. Renomenar aqueste fichièr rendrà lo fichièr sul depaus partejat inaccessible.", "file-exists-sharedrepo": "Lo nom causit es ja utilizat per un fichièr sus un depaus partejat.\nCausissètz un autre nom.", "export": "Exportar de paginas", "exporttext": "Podètz exportar en XML lo tèxte e l’istoric d’una pagina o d’un ensemble de paginas; lo resultat pòt alara èsser importat dins un autre wiki que fonciona amb lo logicial MediaWiki.\n\nPer exportar de paginas, entratz lors títols dins la bóstia de tèxte çaijós, un títol per linha, e seleccionatz s'o desiratz o pas la version actuala amb totas las versions ancianas, amb la pagina d’istoric, o simplament la pagina actuala amb d'informacions sus la darrièra modificacion.\n\nDins aqueste darrièr cas, podètz tanben utilizar un ligam, coma [[{{#Special:Export}}/{{MediaWiki:Mainpage}}]] per la pagina [[{{MediaWiki:Mainpage}}]].", @@ -2221,7 +2306,7 @@ "export-download": "Salvar en tant que fichièr", "export-templates": "Enclure los modèls", "export-pagelinks": "Enclure las paginas ligadas a una prigondor de :", - "export-manual": "Ajustar de paginas manualament :", + "export-manual": "Apondre de paginas manualament :", "allmessages": "Lista dels messatges del sistèma", "allmessagesname": "Nom del camp", "allmessagesdefault": "Messatge per defaut", @@ -2252,11 +2337,11 @@ "thumbnail_image-missing": "Lo fichièr seguent es introbable : $1", "import": "Importar de paginas", "importinterwiki": "Importar a partir d'un autre wiki", - "import-interwiki-text": "Seleccionatz un wiki e un títol de pagina d'importar.\nLas datas de las versions e los noms dels editors seràn preservats.\nTotas las accions d’importacion interwiki son conservadas dins lo [[Special:Log/import|jornal d’impòrt]].", + "import-interwiki-text": "Seleccionatz un wiki e un títol de pagina d'importar.\nLas datas de las versions e los noms dels contributors seràn preservats.\nTotas las accions d’importacion a partir d'autres wikis son conservadas dins l' [[Special:Log/import|istoric de las importacions]].", "import-interwiki-sourcewiki": "Wiki font :", "import-interwiki-sourcepage": "Pagina font :", "import-interwiki-history": "Copiar totas las versions de l'istoric d'aquesta pagina", - "import-interwiki-templates": "Enclure totes los modèls", + "import-interwiki-templates": "Inclure totes los modèls", "import-interwiki-submit": "Importar", "import-mapping-default": "Importar als emplaçaments per defaut", "import-mapping-namespace": "Importar cap a un espaci de noms :", @@ -2272,7 +2357,7 @@ "importcantopen": "Impossible de dobrir lo fichièr d'importar", "importbadinterwiki": "Ligam interwiki marrit", "importsuccess": "L'impòrt a capitat !", - "importnosources": "Cap de font interwiki es pas estada definida e la còpia dirècta d’istoric es desactivada.", + "importnosources": "Cap de font wiki es pas estada definida e l'impòrt dirècte d’istorics es desactivat.", "importnofile": "Cap de fichièr es pas estat importat.", "importuploaderrorsize": "Lo telecargament del fichièr d'importar a pas capitat. Sa talha es mai granda que la autorizada.", "importuploaderrorpartial": "Lo telecargament del fichièr d'importar a pas capitat. Aqueste o es pas estat que parcialament.", @@ -2316,7 +2401,7 @@ "tooltip-ca-unprotect": "Cambiar la proteccion d'aquesta pagina", "tooltip-ca-delete": "Suprimir aquesta pagina", "tooltip-ca-undelete": "Restablir aquesta pagina", - "tooltip-ca-move": "Tornar nomenar aquesta pagina", + "tooltip-ca-move": "Renomenar aquesta pagina", "tooltip-ca-watch": "Apondètz aquesta pagina a vòstra lista de seguiment", "tooltip-ca-unwatch": "Levatz aquesta pagina de vòstra lista de seguiment", "tooltip-search": "Cercar dins {{SITENAME}}", @@ -2325,7 +2410,7 @@ "tooltip-p-logo": "Pagina principala", "tooltip-n-mainpage": "Visitatz la pagina principala", "tooltip-n-mainpage-description": "Anar a l’acuèlh", - "tooltip-n-portal": "A prepaus del projècte", + "tooltip-n-portal": "A prepaus del projècte, çò que podètz far, ont trobar d'informacions", "tooltip-n-currentevents": "Trobar d'entresenhas suls eveniments actuals", "tooltip-n-recentchanges": "Lista dels darrièrs cambiaments sul wiki", "tooltip-n-randompage": "Afichar una pagina a l'azard", @@ -2385,7 +2470,7 @@ "spambot_username": "Netejatge de spam de MediaWiki", "spam_reverting": "Restabliment de la darrièra version que conten pas de ligam cap a $1", "spam_blanking": "Totas las versions que contenon de ligams cap a $1 son blanquidas", - "spam_deleting": "Totas las versions contenonián de ligams cap a $1, supression", + "spam_deleting": "Totas las versions contenián de ligams cap a $1, supression", "simpleantispam-label": "Verificacion antispam.\nInscriviscatz '''PAS RES''' dedins !", "pageinfo-title": "Informacions per « $1 »", "pageinfo-not-current": "O planhèm, impossible de provesir aquesta informacion per las ancianas revisions.", @@ -2398,6 +2483,7 @@ "pageinfo-length": "Talha de la pagina (en octets)", "pageinfo-article-id": "Numèro de la pagina", "pageinfo-language": "Lenga del contengut de la pagina", + "pageinfo-language-change": "modificar", "pageinfo-content-model": "Modèl de contengut de la pagina", "pageinfo-content-model-change": "modificar", "pageinfo-robot-policy": "Indexacion per robòts", @@ -2415,7 +2501,7 @@ "pageinfo-edits": "Nombre total de modificacions", "pageinfo-authors": "Nombre total d'autors distinctes", "pageinfo-recent-edits": "Nombre de modificacions recentas (dins los darrièrs $1)", - "pageinfo-recent-authors": "Nombre d'autors distinctes recents", + "pageinfo-recent-authors": "Nombre d'autors distintes recents", "pageinfo-magic-words": "{{PLURAL:$1|Mot magic|Mots magics}} ($1)", "pageinfo-hidden-categories": "{{PLURAL:$1|Categoria amagada|Categorias amagadas}} ($1)", "pageinfo-templates": "{{PLURAL:$1|Modèl inclús|Modèls incluses}} ($1)", @@ -2485,7 +2571,9 @@ "newimages-legend": "Filtre", "newimages-label": "Nom del fichièr (o una partida d'aqueste) :", "newimages-showbots": "Afichar los impòrts per de robòts", + "newimages-hidepatrolled": "Amagar los telecargaments patrolhats", "noimages": "Cap d'imatge d'afichar pas.", + "gallery-slideshow-toggle": "Bascular las vinhetas", "ilsubmit": "Cercar", "bydate": "per data", "sp-newimages-showfrom": "Afichar los imatges novèls importats dempuèi lo $2, $1", @@ -2699,6 +2787,7 @@ "exif-compression-4": "CCITT Grop 4 encodatge del fax", "exif-copyrighted-true": "Somés al dreit d'autor", "exif-copyrighted-false": "Estat dels dreits d’autor pas definit", + "exif-photometricinterpretation-1": "Blanc e negre (0 pel negre)", "exif-unknowndate": "Data desconeguda", "exif-orientation-1": "Normala", "exif-orientation-2": "Inversada orizontalament", @@ -2876,13 +2965,15 @@ "confirmemail_body_set": "Qualqu’un, probablament vos, dempuèi l’adreça IP $1, a modificat l'adreça de corrièr electronic del compte « $2 » amb aquesta sul site {{SITENAME}}.\n\nPer confirmar qu'aqueste compte vos aparten vertadièrament e reactivar las foncions de messatjariá sus {{SITENAME}}, seguissètz lo ligam çaijós dins vòstre navigador :\n\n$3\n\nAqueste còdi de confirmacion expirarà lo $4.\n\nSe s’agís *pas* de vòstre compte, seguissètz aqueste ligam per anullar la confirmacion de l'adreça de corrièr electronic :\n\n$5", "confirmemail_invalidated": "Confirmacion de l’adreça de corrièr electronic anullada", "invalidateemail": "Anullar la confirmacion del corrièr electronic", + "notificationemail_subject_changed": "L'adreça de corrièr electronic enregistrada de {{SITENAME}} es estada cambiada", + "notificationemail_subject_removed": "L'adreça de corrièr electronic enregistrada de {{SITENAME}} es estada suprimida", "scarytranscludedisabled": "[La transclusion interwiki es desactivada]", "scarytranscludefailed": "[La recuperacion de modèl a pas capitat per $1]", "scarytranscludefailed-httpstatus": "[Fracàs de la recuperacion del modèl per $1 : HTTP $2 ]", "scarytranscludetoolong": "[L’URL es tròp longa]", "deletedwhileediting": "'''Atencion''' : aquesta pagina es estada suprimida aprèp qu'avètz començat de la modificar !", - "confirmrecreate": "L'utilizaire [[User:$1|$1]] ([[User talk:$1|talk]]) a suprimit aquesta pagina, alara que l'aviatz començat d'editar, pel motiu seguent:\n: ''$2''\nConfirmatz que desiratz tornar crear aqueste article.", - "confirmrecreate-noreason": "L'utilizaire [[User:$1|$1]] ([[User talk:$1|Discussion]]) a suprimit aquesta pagina, mentre qu'aviatz començat de la modificar. Confirmatz que desiratz tornar crear aquesta pagina.", + "confirmrecreate": "L'utilizair{{GENDER:$1|e|a}} [[User:$1|$1]] ([[User talk:$1|Discussion]]) a suprimit aquesta pagina, mentre qu'aviatz començat de l'editar, pel motiu seguent:\n: <em>$2</em>\nConfirmatz que sètz segur que volètz tornar crear aquesta pagina.", + "confirmrecreate-noreason": "L'utilizair{{GENDER:$1|e|a}}[[User:$1|$1]] ([[User talk:$1|Discussion]]) a suprimit aquesta pagina, mentre qu'aviatz començat de la modificar. Confirmatz que sètz segur que volètz tornar crear aquesta pagina.", "recreate": "Tornar crear", "confirm_purge_button": "Confirmar", "confirm-purge-top": "Volètz refrescar aquesta pagina (purgar l'escondedor) ?", @@ -3114,8 +3205,9 @@ "htmlform-datetime-placeholder": "AAAA-MM-JJ HH:MM:SS", "htmlform-title-not-exists": "$1 existís pas.", "htmlform-user-not-exists": "<strong>$1</strong> existís pas.", - "htmlform-user-not-valid": "<strong>$1</strong> es pas un nom d'utilizaire valide.", + "htmlform-user-not-valid": "<strong>$1</strong> 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-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", @@ -3153,7 +3245,7 @@ "logentry-newusers-create2": "Lo compte d'utilizaire $3 {{GENDER:$2|es estat creat}} per $1", "logentry-newusers-byemail": "Lo compte d'utilizaire $3 {{GENDER:$2|es estat creat}} per $1 e lo senhal es estat mandat per corrièr electronic", "logentry-newusers-autocreate": "Lo compte $1 {{GENDER:$2|es estat creat}} automaticament", - "logentry-rights-rights": "$1 {{GENDER:$2|a modificat}} l'apartenéncia al grop per $3 de $4 a $5", + "logentry-rights-rights": "$1 a modificat l’apartenéncia al grop per {{GENDER:$6|$3}} de $4 a $5", "logentry-rights-rights-legacy": "$1 {{GENDER:$2|a modificat}} l'apartenéncia al grop per $3", "logentry-rights-autopromote": "$1 {{GENDER:$2|es estat promolgut}} automaticament de $4 a $5", "logentry-upload-upload": "$1 {{GENDER:$2|a mandat}} $3", @@ -3165,8 +3257,8 @@ "logentry-managetags-activate": "$1 {{GENDER:$2|a activat}} la balisa \"$4\" per l’usatge dels utilizaires e dels robòts", "logentry-managetags-deactivate": "$1 {{GENDER:$2|a desactivat}} la balisa « $4 » per l’usatge dels utilizaires e dels robòts", "log-name-tag": "Jornal de las balisas", + "logentry-tag-update-revision": "$1 {{GENDER:$2|a mes a jorn}} las balisas de la revision $4 de la pagina $3 ($6 {{PLURAL:$7|aponduda|apondudas}} ; $8 {{PLURAL:$9|suprimida|suprimidas}})", "rightsnone": "(cap)", - "revdelete-summary": "modificar lo somari", "feedback-adding": "Apondon de vòstres comentaris a la pagina...", "feedback-back": "Retorn", "feedback-bugcheck": "Remirable ! Verificatz simplament qu'es pas un dels [$1 bugs ja coneguts].", @@ -3186,47 +3278,12 @@ "feedback-useragent": "Agent utilizaire :", "searchsuggest-search": "Recercar sus {{SITENAME}}", "searchsuggest-containing": "que conten...", - "api-error-badaccess-groups": "Sètz pas autorizat a cargar de fichièrs sus aqueste wiki.", "api-error-badtoken": "Error intèrna : marrit « geton ».", - "api-error-copyuploaddisabled": "Los cargaments via URL son desactivats sus aqueste servidor.", - "api-error-duplicate": "I a ja {{PLURAL:$1|un autre fichièr present|d'autres fichièrs presents}} sul site amb lo meteis contengut.", - "api-error-duplicate-archive": "I aviá ja {{PLURAL:$1|un autre fichièr present|d'autres fichièrs presents}} sul site amb lo meteis contengut, mas {{PLURAL:$1|es estat suprimit|son estats suprimits}}.", - "api-error-empty-file": "Lo fichièr qu'avètz somés èra void.", "api-error-emptypage": "Creacion de paginas voidas pas autorizada.", - "api-error-fetchfileerror": "Error intèrna : Quicòm s'es mal passat al moment de la recuperacion del fichièr.", - "api-error-fileexists-forbidden": "Un fichièr nomenat \"$1\" existís ja, e pòt pas èsser espotir.", - "api-error-fileexists-shared-forbidden": "Un fichièr nomenat \"$1\" existís ja dins lo repertòri dels fichièrs partejats, e pòt pas èsser espotit.", - "api-error-file-too-large": "Lo fichièr qu'avètz somés èra tròp grand.", - "api-error-filename-tooshort": "Lo nom del fichièr es tròp cort.", - "api-error-filetype-banned": "Aqueste tipe de fichièr es interdich", - "api-error-filetype-banned-type": "$1 {{PLURAL:$4|es pas un tipe de fichièr autorizat|son pas de tipes de fichièrs autorizats}}. \n{{PLURAL:$3|Lo tipe de fichièr autorizat es|Los tipes de fichièrs autorizats son}} $2.", - "api-error-filetype-missing": "L'extension del fichièr es mancanta.", - "api-error-hookaborted": "La modificacion qu'avètz ensajat de realizar es estada anullada per una extension.", - "api-error-http": "Error intèrna : se pòt pas connectar al servidor.", - "api-error-illegal-filename": "Lo nom del fichièr es pas autorizat.", - "api-error-internal-error": "Error intèrna : Quicòm s'es mal passat al moment del tractament de vòstre impòrt sul wiki.", - "api-error-invalid-file-key": "Error intèrna : cap de fichièr pas trobat dins l'emmagazinatge temporari.", - "api-error-missingparam": "Error intèrna : Manca de paramètres dins la requèsta.", - "api-error-missingresult": "Error intèrna : Avèm pas pogut determinar se la còpia aviá capitat.", - "api-error-mustbeloggedin": "Vos cal èsser connectat per telecargar de fichièrs.", - "api-error-mustbeposted": "Error intèrna : aquesta requèsta necessita lo metòde HTTP POST.", - "api-error-noimageinfo": "Lo mandadís a capitat, mas lo servidor a pas donat cap d'informacions sul fichièr.", - "api-error-nomodule": "Error intèrna : cap de modul de versament pas definit.", - "api-error-ok-but-empty": "Error intèrna : Lo servidor a pas respondut.", - "api-error-overwrite": "Espotir un fichièr existent es pas autorizat.", - "api-error-stashfailed": "Error intèrna : lo servidor a pas pogut enregistrar lo fichièr temporari.", "api-error-publishfailed": "Error intèrna: Lo servidor a pas pogut publicar lo fichièr temporari.", - "api-error-stasherror": "Una error s'es produsida al moment del telecargament del fichièr per lo dissimular.", - "api-error-stashzerolength": "Lo servidor pòu pas estocar aqueu fichier perqué sa talha es nulla.", - "api-error-stashnotloggedin": "Devètz èsser connectat per enregistrar de fichiers dins l'espaci de telecargament.", - "api-error-timeout": "Lo servidor a pas respondut dins lo relambi pervist.", - "api-error-unclassified": "Una error desconeguda s'es produita.", - "api-error-unknown-code": "Error desconeguda : « $1 »", - "api-error-unknown-error": "Error intèrna : Quicòm a mal virat al moment del mandadís de vòstre fichièr.", - "api-error-unknown-warning": "Avertiment desconegut : $1", + "api-error-stashfailed": "Error intèrna : lo servidor a pas pogut enregistrar lo fichièr temporari.", + "api-error-unknown-warning": "Avertiment desconegut : « $1 ».", "api-error-unknownerror": "Error desconeguda : « $1 »", - "api-error-uploaddisabled": "Lo cargament es desactivat sus aqueste wiki.", - "api-error-verification-error": "Aqueste fichièr pòt èsser corromput, o son extension es incorrècta.", "duration-seconds": "$1 segonda{{PLURAL:$1||s}}", "duration-minutes": "$1 minuta{{PLURAL:$1||s}}", "duration-hours": "$1 ora{{PLURAL:$1||s}}", @@ -3268,7 +3325,9 @@ "pagelang-language": "Lenga", "pagelang-use-default": "Utilizar la lenga per defaut", "pagelang-select-lang": "Seleccionar la lenga", - "pagelang-submit": "Validar", + "pagelang-reason": "Motiu", + "pagelang-submit": "Mandar", + "pagelang-nonexistent-page": "La pagina $1 existís pas.", "right-pagelang": "Cambiar la lenga de la pagina", "action-pagelang": "cambiar la lenga de la pagina", "log-name-pagelang": "Traçar los cambiaments de lenga", @@ -3301,6 +3360,7 @@ "special-characters-group-ipa": "API", "special-characters-group-symbols": "Simbòls", "special-characters-group-greek": "Grèc", + "special-characters-group-greekextended": "Grèc espandit", "special-characters-group-cyrillic": "Cirillic", "special-characters-group-arabic": "Arabi", "special-characters-group-arabicextended": "Arabi espandit", @@ -3318,69 +3378,87 @@ "special-characters-title-endash": "jonhent anglés", "special-characters-title-emdash": "jonhent em", "special-characters-title-minus": "signe mens", - "mw-widgets-mediasearch-noresults": "Ges de resultat trobat", - "mw-widgets-categoryselector-add-category-placeholder": "Ajustar una categoria...", - "sessionprovider-generic": "$1 sessions", + "mw-widgets-dateinput-no-date": "Cap de data pas seleccionada", + "mw-widgets-mediasearch-input-placeholder": "Recercar de mèdias", + "mw-widgets-mediasearch-noresults": "Cap de resultat pas trobat.", + "mw-widgets-categoryselector-add-category-placeholder": "Apondre una categoria...", + "mw-widgets-usersmultiselect-placeholder": "Apondre mai...", + "sessionprovider-generic": "sessions $1", "sessionprovider-mediawiki-session-cookiesessionprovider": "sessions basadas sus de cookies", - "sessionprovider-nocookies": "Lei cookies son benlèu desactivats. Verificatz que lei cookies siegan ben activat e tornatz assaiar.", + "sessionprovider-nocookies": "Es possible que los testimònis (''cookies'') sián desactivats. Asseguratz-vos qu'avètz activat los testimònis e recomençatz.", "randomrootpage": "Pagina raiç aleatòria", - "log-action-filter-block": "Tipe d'accion :", - "log-action-filter-delete": "Tipe d'accion :", + "log-action-filter-block": "Tipe de blocatge :", + "log-action-filter-delete": "Tipe de supression :", "log-action-filter-import": "Tipe d'importacion :", - "log-action-filter-managetags": "Tipe d'accion :", + "log-action-filter-managetags": "Tipe d'accion de gestion de las etiquetas :", "log-action-filter-move": "Tipe de desplaçament :", - "log-action-filter-newusers": "Tipe de creacion :", + "log-action-filter-newusers": "Tipe de creacion de compte :", "log-action-filter-patrol": "Tipe de patrolha :", - "log-action-filter-protect": "Tipe d'accion :", + "log-action-filter-protect": "Tipe de proteccion :", "log-action-filter-rights": "Tipe de cambiament de dreits :", "log-action-filter-suppress": "Tipe de supression :", - "log-action-filter-upload": "Tipe de telecargament :", + "log-action-filter-upload": "Tipe de mandadís :", "log-action-filter-all": "Tot", "log-action-filter-block-block": "Blocatge", "log-action-filter-block-reblock": "Modificacion de blocatge", "log-action-filter-block-unblock": "Desblocar", - "log-action-filter-delete-delete": "Escafament de pagina", - "log-action-filter-delete-restore": "Restauracion de pagina", + "log-action-filter-delete-delete": "Supression de paginas", + "log-action-filter-delete-restore": "Restabliment de pagina", "log-action-filter-import-interwiki": "Impòrt transwiki", - "log-action-filter-managetags-create": "Creacion d'etiqueta", - "log-action-filter-managetags-delete": "Supression d'etiqueta", - "log-action-filter-managetags-activate": "Activacion d'etiqueta", - "log-action-filter-managetags-deactivate": "Desactivacion d'etiqueta", + "log-action-filter-managetags-create": "Creacion de balisa", + "log-action-filter-managetags-delete": "Supression de balisa", + "log-action-filter-managetags-activate": "Activacion de l'etiqueta", + "log-action-filter-managetags-deactivate": "Desactivacion de l'etiqueta", "log-action-filter-newusers-create": "Creacion per un utilizaire anonim", "log-action-filter-newusers-create2": "Creacion per un utilizaire enregistrat", "log-action-filter-newusers-autocreate": "Creacion automatica", - "log-action-filter-newusers-byemail": "Creacion amb un senhau mandat per corrier electronic", + "log-action-filter-newusers-byemail": "Creacion amb un senhal mandat per corrièr electronic", "log-action-filter-patrol-patrol": "Patrolha manuala", "log-action-filter-patrol-autopatrol": "Patrolha automatica", "log-action-filter-protect-protect": "Proteccion", - "log-action-filter-protect-modify": "Modificacion de proteccion", - "log-action-filter-rights-rights": "Cambiament manuau", + "log-action-filter-protect-modify": "Modificacion de la proteccion", + "log-action-filter-protect-unprotect": "Desproteccion", + "log-action-filter-protect-move_prot": "Proteccion de renomenatge", + "log-action-filter-rights-rights": "Cambiament manual", "log-action-filter-rights-autopromote": "Cambiament automatic", + "log-action-filter-suppress-event": "Supression de jornal", + "log-action-filter-suppress-revision": "Supression de revision", "log-action-filter-suppress-delete": "Supression de pagina", - "log-action-filter-upload-upload": "Telecargament novèu", - "log-action-filter-upload-overwrite": "Retelecargament", - "authmanager-create-disabled": "La creacion de còmptes es blocada.", - "authmanager-authplugin-setpass-bad-domain": "Domeni invalide", - "authmanager-autocreate-noperm": "La creacion automatica de còmptes es blocada.", - "authmanager-password-help": "Senhau per autentificacion.", - "authmanager-domain-help": "Domeni per autentificacion extèrna.", - "authmanager-retype-help": "Mercé de confiermar vòstre senhau.", + "log-action-filter-upload-upload": "Mandadís novèl", + "log-action-filter-upload-overwrite": "Tornar mandar", + "authmanager-authn-autocreate-failed": "La creacion automatica d’un compte local a fracassat : $1", + "authmanager-create-disabled": "La creacion de compte es desactivada.", + "authmanager-authplugin-setpass-bad-domain": "Domeni invalid.", + "authmanager-autocreate-noperm": "La creacion automatica de compte es pas autorizada.", + "authmanager-password-help": "Senhal per l'autentificacion.", + "authmanager-domain-help": "Domeni per l'autentificacion extèrna.", + "authmanager-retype-help": "Senhal un còp de mai per confirmacion.", "authmanager-email-label": "Corrièr electronic", "authmanager-email-help": "Adreça de corrièr electronic", "authmanager-realname-label": "Nom vertadièr", "authmanager-realname-help": "Nom real de l'utilizaire", - "authmanager-provider-password": "Autentificacion ambé senhau", - "authmanager-provider-temporarypassword": "Senhau provisòri", - "authprovider-confirmlink-message": "Segon lei vòstreis assais recents de connexion, lei còmptes seguents pòdon èsser liats vèrs lo vòstre còmpte wiki. Lei liar permet de se connectar amb aqueleis còmptes. Mercé de seleccionar lei còmptes de liar.", - "authprovider-confirmlink-request-label": "Còmptes de liar", - "authprovider-confirmlink-success-line": "$1 : operacion capitada, lei còmptes son estats liats.", - "authprovider-confirmlink-failed": "La temptativa de liar lei còmptes a pas capitat : $1", + "authmanager-provider-password": "Autentificacion amb senhal", + "authmanager-provider-temporarypassword": "Senhal provisòri", + "authprovider-confirmlink-message": "D’aprèp vòstras darrièras temtativas de connexion, los comptes seguents pòson èsser ligats a vòstre compte wiki. Los ligar vos permetrà de vos connectar via aquestes comptes. Seleccionatz los que devon èsser ligats.", + "authprovider-confirmlink-request-label": "Comptes que devon èsser ligats", + "authprovider-confirmlink-success-line": "$1 : Ligats amb succès.", + "authprovider-confirmlink-failed": "La ligason del compte a pas plan capitat : $1", "authprovider-resetpass-skip-label": "Sautar", - "specialpage-securitylevel-not-allowed-title": "Pas autorizat", + "authform-newtoken": "Geton mancant. $1", + "authform-notoken": "Geton mancant", + "authform-wrongtoken": "Marrit geton", + "specialpage-securitylevel-not-allowed-title": "Interdit", "changecredentials": "Modificar las informacions d’identificacion", - "linkaccounts": "Liar lei còmptes", - "linkaccounts-success-text": "Lo còmpte èra estat liat.", - "linkaccounts-submit": "Liar lei còmptes", - "revid": "Revision $1", - "pageid": "Pagina ID $1" + "removecredentials": "Suprimir las informacions d'identificacion", + "removecredentials-submit": "Suprimir las informacions d'identificacion", + "credentialsform-provider": "Tipe d’informacion d’identificacion :", + "credentialsform-account": "Nom de compte :", + "cannotlink-no-provider-title": "I a pas de comptes que pòdon èsser ligats", + "cannotlink-no-provider": "I a pas de compte que pòsca èsser ligat.", + "linkaccounts": "Ligar los comptes", + "linkaccounts-success-text": "Lo compte es estat ligat.", + "linkaccounts-submit": "Ligar los comptes", + "restrictionsfield-badip": "Adreça IP o plaja invalida : $1", + "revid": "version $1", + "pageid": "ID de pagina $1" } diff --git a/languages/i18n/or.json b/languages/i18n/or.json index 545ff6205b..19e7e17951 100644 --- a/languages/i18n/or.json +++ b/languages/i18n/or.json @@ -14,10 +14,11 @@ "아라", "Macofe", "Nistha.aslp", - "Matma Rex" + "Matma Rex", + "Susant purohit" ] }, - "tog-underline": "ଲିଙ୍କତଳେଗାର ଟାଣିବା:", + "tog-underline": "ଲିଙ୍କତଳେ ଗାର ଟାଣିବା:", "tog-hideminor": "ନିକଟରେ ହୋଇଥିବା ଛୋଟ ବଦଳସବୁକୁ ଲୁଚାଇବେ", "tog-hidepatrolled": "ନଗଦ ବଦଳରେ ନିରିକ୍ଷଣ କରାଯାଇଥିବା ବଦଳ ସବୁକୁ ଲୁଚାଇବେ", "tog-newpageshidepatrolled": "ନୂଆ ପୃଷ୍ଠାତାଲିକାରୁ ପରଖା ହୋଇଥିବା ବଦଳସବୁକୁ ଲୁଚାଇବେ", @@ -58,7 +59,7 @@ "tog-showhiddencats": "ଲୁଚାଯାଇଥିବା ଶ୍ରେଣୀଗୁଡ଼ିକ ଦେଖାଇବେ", "tog-norollbackdiff": "ପଛକୁ ଫେରାଇଲାପରେ ତୁଳନା ଦେଖାନ୍ତୁ ନାହିଁ", "tog-useeditwarning": "ଯେତେବେଳେ ମୁଁ ଗୋଟିଏ ସାଇତାଯାଇନଥିବା ପୃଷ୍ଠାକୁ ବନ୍ଦ କରିଦିଏ ମୋତେ ଚେତାବନୀ ଦେବେ", - "tog-prefershttps": "ଲଗ ଇନ କଲାପରେ ସର୍ବଦା ସୁରକ୍ଷିତ କନେକ୍ସନ ବ୍ୟବହାର କରିବେ", + "tog-prefershttps": "ଲଗ ଇନ ହେଲା ପରେ ସର୍ବଦା ସୁରକ୍ଷିତ ସଂଯୋଗ ବ୍ୟବହାର କରିବେ", "underline-always": "ସବୁବେଳେ", "underline-never": "କେବେନୁହେଁ", "underline-default": "ବ୍ରାଉଜର କିମ୍ବା ସ୍କିନରେ ଆଗରୁ ଥିବା ସୁବିଧା", @@ -153,7 +154,7 @@ "newwindow": "(ଏହା ନୂଆ ଉଇଣ୍ଡୋରେ ଖୋଲିବ)", "cancel": "ନାକଚ", "moredotdotdot": "ଅଧିକ...", - "morenotlisted": "ଏହି ତାଲିକା ପୂରା ହୋଇ ନାହିଁ", + "morenotlisted": "ହୁଏତ ଏହି ତାଲିକା ଅସମ୍ପୂର୍ଣ.", "mypage": "ପୃଷ୍ଠା", "mytalk": "ଆଲୋଚନା", "anontalk": "ଆଲୋଚନା", @@ -180,6 +181,7 @@ "searcharticle": "ଯାଆନ୍ତୁ", "history": "ଫାଇଲ ଇତିହାସ", "history_short": "ଇତିହାସ", + "history_small": "ଇତିହାସ", "updatedmarker": "ମୋ ଶେଷ ଆସିବା ପରେ ଅପଡେଟ କରାଯାଇଅଛି", "printableversion": "ଛପାହୋଇପାରିବା ପୃଷ୍ଠା", "permalink": "ସବୁଦିନିଆ ଲିଙ୍କ", @@ -211,6 +213,7 @@ "talk": "ଆଲୋଚନା", "views": "ଦେଖା", "toolbox": "ଉପକରଣ", + "tool-link-emailuser": "{{GENDER:$1|user}}ଙ୍କୁ ଇ-ମେଲ କରନ୍ତୁ", "userpage": "ବ୍ୟବହାରକାରୀଙ୍କ ପୃଷ୍ଠା ଦେଖନ୍ତୁ", "projectpage": "ପ୍ରକଳ୍ପ ପୃଷ୍ଠାଟି ଦେଖାଇବା", "imagepage": "ଫାଇଲ ପୃଷ୍ଠାଗୁଡ଼ିକ ଦେଖନ୍ତୁ", @@ -344,6 +347,11 @@ "badtitletext": "ଆପଣ ଅନୁରୋଧ କରିଥିବା ପୃଷ୍ଠାଟି ଭୁଲ, ଖାଲି ଅଛି ବା ବାକି ଭାଷା ସାଙ୍ଗରେ ଭୁଲରେ ଯୋଡ଼ା ଯାଇଛି ବା ଭୁଲ ଇଣ୍ଟର ଉଇକି ନାମ ଦିଆଯାଇଛି ।\nଏଥିରେ ଥିବା ଗୋଟିଏ ବା ଦୁଇଟି ଅକ୍ଷର ଶିରୋନାମା ଭାବରେ ବ୍ୟବହାର କରାଯାଇ ପାରିବ ନାହିଁ ।", "title-invalid-empty": "ଅନୁରୋଧ କରାଯାଇଥିବା ପୃଷ୍ଠାର ଶର୍ଷକଟି ଖାଲି ଅଛି କିମ୍ବା ନେମସ୍ପସର ନାମ ଅଛି ।", "title-invalid-utf8": "ଅନୁରୋଧ କରାଯାଇଥିବା ପୃଷ୍ଠାର ଶର୍ଷକରେ ଅବୈଧ UTF-8 ଧାରା ଅଛି ।", + "title-invalid-interwiki": "ଅନୁରୋଧ କରାଯାଇଥିବା ପୃଷ୍ଠା ଶିରୋନାମା ରେ ଇଣ୍ଟରଉଇକି ଲିଙ୍କ ରହିଥିବାରୁ ଏହି ଶିରୋନାମା ରେ ବ୍ୟବହାର କରାଯାଇପାରିବ ନାହିଁ।", + "title-invalid-talk-namespace": "ଅନୁରୋଧ କରାଯାଇଥିବା ପୃଷ୍ଠା ଶିରୋନାମା ଏକ ଟକ ପୃଷ୍ଠା କୁ ଆଧାର କରେ ଯାହା ଉପଲବ୍ଧ ନୁହେଁ।", + "title-invalid-characters": "ଅନୁରୋଧ କରାଯାଇଥିବା ପୃଷ୍ଠା ଶିରୋନାମା ଏକ ଅଗ୍ରହଣୀୟ ଚରିତ୍ର \"$1\" ରହିଛି।", + "title-invalid-magic-tilde": "ଅନୁରୋଧ କରାଯାଇଥିବା ପୃଷା ଶିରୋନାମା ରେ ଅଗ୍ରହଣୀୟ ମେଜିକ ଟିଲଡ଼େ ଅନୁକ୍ରମ (<nowiki>~~~</nowiki>)ରହିଛି।", + "title-invalid-leading-colon": "ଅନୁରୋଧ କରାଯାଇଥିବା ପ୍ରୁଷ୍ଠା ଶିରୋନାମାର ଆରମ୍ଭ ରେ ଏକ ଅଗ୍ରହଣୀୟ କୋଲନ ରହିଛି।", "perfcached": "ତଳଲିଖିତ ତଥ୍ୟଗୁଡିକୁ ଅସ୍ଥାୟୀ ଭାବେ ରଖାଗଲା ଏବଂ ଏହା ଅପଡେଟ ନ ହୋଇପାରେ । ଅତିବେଶିରେ {{PLURAL:$1|ଫଳ|$1ଫଳଗୁଡିକ }} ଅସ୍ଥାୟୀ ରୂପେ ରହି ପାରିବ ।", "perfcachedts": "ତଳଲିଖିତ ତଥ୍ୟଗୁଡିକୁ ଅସ୍ଥାୟୀ ଭାବେ ରଖାଗଲା ଏବଂ $1ରେ ଶେଷଥର ଅପଡେଟ ହୋଇଥିଲା । ଅତିବେଶିରେ {{PLURAL:$1|ଫଳ|$1ଫଳଗୁଡିକ }} ଅସ୍ଥାୟୀ ରୂପେ ରହି ପାରିବ ।", "querypage-no-updates": "ଏହି ପୃଷ୍ଠାଟି ପାଇଁ ଅପଡେଟସବୁ ଏବେ ଅଚଳ କରାଯାଇଅଛି ।\nଏଠାରେ ଥିବା ତଥ୍ୟ ସବୁ ଏବେ ସତେଜ ହୋଇପାରିବ ନାହିଁ ।", @@ -394,12 +402,17 @@ "createacct-yourpasswordagain-ph": "ଆଉଥରେ ପାସୱାର୍ଡ଼ ଦିଅନ୍ତୁ", "userlogin-remembermypassword": "ମୋତେ ଲଗ-ଇନ କରି ରଖିଥାନ୍ତୁ", "userlogin-signwithsecure": "ନିରାପଦ କନେକସନ ବ୍ୟବ‌ହାର କରନ୍ତୁ", + "cannotlogin-title": "ଲଗ ଇନ ହୋଇପାରିବ ନାହିଁ", + "cannotlogin-text": "ଲଗିଂ ଇନ ସମ୍ଭବ ନୁହେଁ।", "cannotloginnow-title": "ଏବେ ଲଗ ଇନ ହୋଇପାରିବ ନାହିଁ", "cannotloginnow-text": "$1ବ୍ୟବହାର କରୁଥିବା ବେଳେ ଲଗ ଇନ ହେଇପାରିବ ନାହିଁ ।", + "cannotcreateaccount-title": "ଖାତା ତିଆରି କରାଯାଇପାରିବ ନାହିଁ", + "cannotcreateaccount-text": "ସିଧାସଳଖ ଖାତା ଖୋଲିବା ଏହି ଉଇକି ରେ ସମର୍ଥ କରାଯାଇ ନାହିଁ।", "yourdomainname": "ଆପଣଙ୍କ ଡୋମେନ:", "password-change-forbidden": "ଆପଣ ଏହି ଉଇକିରେ ପାସୱାର୍ଡ ବଦଳାଇ ପାରିବେ ନାହିଁ ।", "externaldberror": "ବୋଧ ହୁଏ ଚିହ୍ନଟ ଡାଟାବେସ ଭୁଲଟିଏ ହୋଇଥିଲା ବା ଆପଣଙ୍କୁ ନିଜର ବାହାର ଖାତା ଅପଡେଟ କରିବା ନିମନ୍ତେ ଅନୁମତି ମିଳିନାହିଁ ।", "login": "ଲଗ-ଇନ (Log in)", + "login-security": "ଆପଣଙ୍କ ପରିଚୟ ଯାଞ୍ଚ କରନ୍ତୁ", "nav-login-createaccount": "ଲଗ ଇନ /ନୂଆ ଖାତା ଖୋଲନ୍ତୁ", "userlogin": "ଲଗ ଇନ /ନୂଆ ଖାତା ଖୋଲନ୍ତୁ", "userloginnocreate": "ଲଗ-ଇନ (Log in)", @@ -417,18 +430,23 @@ "userlogin-resetpassword-link": "ପାସୱାର୍ଡ଼ ମନେପଡୁନାହିଁ?", "userlogin-helplink2": "ଲଗ ଇନ ପାଇଁ ସହଯୋଗ କରନ୍ତୁ", "userlogin-loggedin": "ଆପଣ {{GENDER:$1|$1}} ନାମରେ ଲଗ ଇନ କରିଛନ୍ତି । ତଳ ଫର୍ମଟି ବ୍ୟବହାର କରି ଆଉ ଜଣେ ସଭ୍ୟ ଭାବେ ଲଗ ଇନ କରନ୍ତୁ ।", + "userlogin-reauth": "ଆପଣ {{GENDER:$1|$1}} ବୋଲି ଯାଞ୍ଚ କରିବା ପାଇଁ ଆପଣଙ୍କୁ ଆଉଥରେ ଲଗ ଇନ କରିବାକୁ ହେବ।", "userlogin-createanother": "ଆଉ ଏକ ଖାତା ତିଆରି କରନ୍ତୁ", "createacct-emailrequired": "ଇମେଲ ଠିକଣା", "createacct-emailoptional": "ଇମେଲ ଠିକଣା (ଇଚ୍ଛାଧୀନ)", "createacct-email-ph": "ଆପଣଙ୍କ ଇମେଲ ଠିକଣା ଦିଅନ୍ତୁ", "createacct-another-email-ph": "ଆପଣଙ୍କ ଇ-ମେଲ ଠିକଣା ଦିଅନ୍ତୁ", "createaccountmail": "ଏକ ଅସ୍ଥାୟୀ ପାସୱାର୍ଡ଼ ବ୍ୟବହାର କରନ୍ତୁ ଏବଂ ଏହାକୁ ତଳେ ଦିଆଯାଇଥିବା ଇ-ମେଲ ଠିକଣାକୁ ପଠାଇଦିଅନ୍ତୁ", + "createaccountmail-help": "ପାସୱାର୍ଡ ନ ଜାଣି ମଧ୍ୟ ଆଉ ଜଣେ ବ୍ୟକ୍ତି ଙ୍କ ପାଇଁ ଖାତା ଖୋଲିବାକୁ ବ୍ୟବହାର କରାଯାଇପାରିବ।", "createacct-realname": "ପ୍ରକୃତ ନାମ (ଇଚ୍ଛାଧୀନ)", "createaccountreason": "କାରଣ:", "createacct-reason": "କାରଣ", "createacct-reason-ph": "ଆପଣ ଅନ୍ୟଏକ ଖାତା କାହିଁକି ତିଆରି କରୁଛନ୍ତି", + "createacct-reason-help": "ଖାତା ଖୋଲିବା ଲଗ ରେ ବାର୍ତା ଦେଖାଯାଇଛି", "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|ପୃଷ୍ଠା|ପୃଷ୍ଠାମାନ}}", @@ -442,6 +460,7 @@ "nocookiesnew": "ଇଉଜର ନାମଟି ତିଆରି କରିଦିଆଗଲା, ହେଲେ ଆପଣ ଲଗ ଇନ କରିନାହାନ୍ତି ।\n{{SITENAME}} ସଭ୍ୟମାନଙ୍କୁ ଲଗ ଇନ କରିବା ନିମନ୍ତେ କୁକି ବ୍ୟବହାର କରିଥାଏ । ଆପଣଙ୍କ କୁକି ଅଚଳ କରାଯାଇଅଛି ।\nଦୟାକରି ତାହାକୁ ସଚଳ କରନ୍ତୁ ଓ ତାହା ପରେ ଆପଣଙ୍କ ନୂଆ ଇଉଜର ନାମ ଓ ପାସୱାର୍ଡ଼ ସହିତ ଲଗ ଇନ କରନ୍ତୁ ।", "nocookieslogin": "{{SITENAME}} ସଭ୍ୟ ମାନଙ୍କୁ ଲଗ ଇନ କରାଇବା ପାଇଁ କୁକି ବ୍ୟବହାର କରିଥାଏ ।\nଆପଣଙ୍କର କୁକି ଅଚଳ ହୋଇଅଛି ।\nଦୟାକରି ତାହାକୁ ସଚଳ କରି ଆଉଥରେ ଚେଷ୍ଟା କରନ୍ତୁ ।", "nocookiesfornew": "ଯେହେତୁ ଆମ୍ଭେ ଏହାର ମୂଳାଧାର ଜାଣିପାରିଲୁ ନାହିଁ ଏହି ଇଉଜର ଖାତାଟି ତିଆରି କରାଗଲା ନାହିଁ ।\nଥୟ କରନ୍ତୁ କି ଆପଣ କୁକି ସଚଳ କରିଅଛନ୍ତି, ପୃଷ୍ଠାଟିକୁ ଆଉଥରେ ଲୋଡ଼ କରି ଚେଷ୍ଟା କରନ୍ତୁ ।", + "createacct-loginerror": "ଖାତା ସଫଳ ଭାବରେ ଖୋଲା ଗଲା କିନ୍ତୁ ଆପଣଙ୍କୁ ସ୍ଵତଃ ଲଗ ଇନ କରାଯାଇପାରିଲା ନାହିଁ। ଦୟାକରି [[Special:UserLogin|manual login]] କୁ ଦେଖନ୍ତୁ।", "noname": "ଆପଣ ଗୋଟିଏ ବୈଧ ଇଉଜର ନାମ ଦେଇନାହାନ୍ତି ।", "loginsuccesstitle": "ଠିକଭାବେ ଲଗ-ଇନ ହେଲା", "loginsuccess": "'''ଆପଣ {{SITENAME}}ରେ \"$1\" ନାମରେ ଲଗ-ଇନ କରିଛନ୍ତି ।'''", @@ -453,6 +472,7 @@ "wrongpasswordempty": "ଦିଆଯାଇଥିବା ପାସବାର୍ଡ଼ଟି ଖାଲି ଛଡ଼ାଯାଇଛି ।\nଦୟାକରି ଆଉଥରେ ଚେଷ୍ଟା କରନ୍ତୁ ।", "passwordtooshort": "ପାସୱାର୍ଡ଼ଟି ଅତି କମରେ {{PLURAL:$1|ଗୋଟିଏ ଅକ୍ଷର|$1ଟି ଅକ୍ଷର}}ର ହୋଇଥିବା ଲୋଡ଼ା ।", "passwordtoolong": "ପସସ୍ୱାର୍ଡଟି {{PLURAL:$1|1 ଅକ୍ଷର|$1 ଅକ୍ଷରଗୁଡିକ}}ଠାରୁ ଅଧିକ ହୋଇ ପାରିବ ନାହିଁ ।", + "passwordtoopopular": "ସାଧାରଣ ଭାବରେ ବଛାଯାଇଥିବା ପାସୱାର୍ଡ ବ୍ୟବହାର କରିହେବ ନାହିଁ। ଦୟାକରି ଏକ ଅଦ୍ଵିତୀୟ ପାସୱାର୍ଡ ବାଛନ୍ତୁ।", "password-name-match": "ଆପଣଙ୍କ ପାସୱାର୍ଡ଼ଟି ଆପଣଙ୍କ ଇଉଜର ନାମ ଠାରୁ ଅଲଗା ହେବା ଉଚିତ ।", "password-login-forbidden": "ଏହି ଇଉଜର ନାମ ଓ ପାସୱାର୍ଡ଼ର ବ୍ୟବହାରକୁ ବାରଣ କରାଯାଇଅଛି ।", "mailmypassword": "ପାସୱାର୍ଡ଼ଟି ରିସେଟ କରିବେ", @@ -465,7 +485,7 @@ "eauthentsent": "ଆପଣ ଦେଇଥିବା ଇ-ମେଲ ଠିକଣାକୁ ଏକ ମେଲଟିଏ ପଠାଗଲା ।\nଆହୁରି ଅଧିକ ଇ-ମେଲ ଆପଣଙ୍କ ଖାତାକୁ ପଠାହେବା ଆଗରୁ, ଏହି ଖାତାଟି ନିଜର ବୋଲି ଥୟ କରିବା ପାଇଁ ପଠାଯାଇଥିବା ଇ-ମେଲରେ ଥିବା ସୂଚନା ଅନୁସାରେ କାମ କରନ୍ତୁ ।", "throttled-mailpassword": "ଗତ {{PLURAL:$1|ଏକ ଘଣ୍ଟାରେ|$1 ଘଣ୍ଟାରେ}} ଆପଣଙ୍କୁ ଏକ ପୁନଃସ୍ଥାପନ ଇମେଲଟିଏ ପଠାଯାଇଛି ।\nଅବ୍ୟବହାରକୁ ରୋକିବା ନିମନ୍ତେ, {{PLURAL:$1|ଏକ ଘଣ୍ଟାରେ|$1 ଘଣ୍ଟାରେ}} କେବଳ ଗୋଟିଏ ଇମେଲ ହିଁ ପଠାହେବ ।", "mailerror": "ମେଲ ପଠାଇବାରେ ଭୁଲ : $1", - "acct_creation_throttle_hit": "ଏହି ଉଇକିର ଦେଖଣାହାରୀ ମାନେ ଆପଣଙ୍କ IP ଠିକଣା ବ୍ୟବହାର କରି ବିଗତ ଦିନରେ {{PLURAL:$1|ଖାତାଟିଏ|$1 ଗୋଟି ଖାତା}} ତିଆରି କରିଛନ୍ତି ଯାହା ସେହି ସମୟସୀମା ଭିତରେ ସବୁଠାରୁ ଅଧିକ ଥିଲା ।\nତେଣୁ, ଏହି IP ଠିକଣାର ଦେଖଣାହାରୀ ଗଣ ଏବେ ଆଉ ଅଧିକ ଖାତା ଖୋଲିପାରିବେ ନାହିଁ ।", + "acct_creation_throttle_hit": "ଏହି ଉଇକିର ଦେଖଣାହାରୀ ମାନେ ଆପଣଙ୍କ IP ଠିକଣା ବ୍ୟବହାର କରି ବିଗତ $2 ରେ {{PLURAL:$1|ଖାତାଟିଏ|$1 ଗୋଟି ଖାତା}} ତିଆରି କରିଛନ୍ତି ଯାହା ସେହି ସମୟସୀମା ଭିତରେ ସବୁଠାରୁ ଅଧିକ ଥିଲା ।\nତେଣୁ, ଏହି IP ଠିକଣାର ଦେଖଣାହାରୀ ଗଣ ଏବେ ଆଉ ଅଧିକ ଖାତା ଖୋଲିପାରିବେ ନାହିଁ ।", "emailauthenticated": "$2 ତାରିଖ $3 ଘଟିକା ସମୟରେ ଆପଣଙ୍କ ଇ-ମେଲ ଠିକଣାଟି ଥୟ ହେଲା ।", "emailnotauthenticated": "ଆପଣଙ୍କ ଇ-ମେଲ ଠିକଣାଟି ଏ ଯାଏ ଥୟ ହୋଇନାହିଁ ।\nଏହି ସବୁ ସୁବିଧାକୁ ନେଇ ଆପଣଙ୍କୁ କୌଣସି ଇ-ମେଲ ପଠାଯିବ ନାହିଁ ।", "noemailprefs": "ଆପଣଙ୍କ ପସନ୍ଦ ଭିତରେ ଏକ ଇ-ମେଲ ଠିକଣା ଦିଅନ୍ତୁ ଯାହା ଏହି ସବୁ ସୁବିଧାକୁ ସଚଳ କରାଇବ ।", @@ -485,6 +505,7 @@ "createacct-another-realname-tip": "ପ୍ରକୃତ ନାମ ଦେବା ଆପଣଙ୍କ ଉପରେ ନିର୍ଭର କରେ ।\nଯଦି ଆପଣ ଏହା ଦିଅନ୍ତି, ତେବେ ଏହା ଆପଣଙ୍କ କାମ ପାଇଁ ଶ୍ରେୟ ଦେବାରେ ବ୍ୟବହାର କରାଯାଇପାରିବ ।", "pt-login": "ଲଗ-ଇନ", "pt-login-button": "ଲଗ-ଇନ", + "pt-login-continue-button": "ଲଗଇନ ଜାରି ରଖନ୍ତୁ", "pt-createaccount": "ଖାତାଟିଏ ଖୋଲନ୍ତୁ", "pt-userlogout": "ଲଗ-ଆଉଟ", "php-mail-error-unknown": "PHP ର ମେଲ() କାମରେ ଅଜଣା ଅସୁବିଧା ।", @@ -500,13 +521,23 @@ "changepassword-success": "ଆପଣଙ୍କ ପାସୱାର୍ଡ଼ଟି ସଫଳତା ପୂର୍ବକ ବଦଳାଇ ଦିଆଗଲା !", "changepassword-throttled": "ଆପଣ ନିକଟରେ ଖୁବ ଅଧିକ ଥର ଲଗ ଇନ କରିବାକୁ ଚେଷ୍ଟା କରିଛନ୍ତି ।\nଆଉ ଅଧିକ ଥର ଚେଷ୍ଟା କରିବା ଆଗରୁ ଦୟାକରି $1 ପାଇଁ ଅପେକ୍ଷା କରନ୍ତୁ ।", "botpasswords": "ବଟ ପାସୱାର୍ଡ଼", + "botpasswords-disabled": "Bot ପାସୱାର୍ଡ ଅକାମି କରାଯାଇଛି।", + "botpasswords-no-central-id": "Bot ପାସୱାର୍ଡ ବ୍ୟବହାର କରିବାକୁ ଆପଣ ନିଶ୍ଚୟ ଏକ କେନ୍ଦ୍ରୀକୃତ ଖାତା ରେ ଲଗ ଇନ ହେଇଥିବାକୁ ହେବ।", "botpasswords-label-appid": "ବଟ ନାମ:", "botpasswords-label-create": "ତିଆରି କରିବେ", "botpasswords-label-update": "ଅପଡେଟ କରିବେ", "botpasswords-label-cancel": "ବାତିଲ", "botpasswords-label-delete": "ଲିଭାଇବେ", "botpasswords-label-resetpassword": "ପାସୱାର୍ଡ଼ଟି ରିସେଟ କରିବେ", + "botpasswords-bad-appid": "Bot ନାମ \"$1\"ବୈଧ ନୁହେଁ।", + "botpasswords-insert-failed": "Bot ନାମ \"$1\" ଯୋଗ କରାଯାଇ ପାରିଲା ନାହିଁ। ଏହା ଆଗରୁ ଯୋଗ ହେଇଥିଲା କି?", + "botpasswords-update-failed": "ବୋଟ ନାମ \"$1\" ଅଧୁନାତନ ହେଇପାରିଲା ନାହିଁ। ଏହା ଲିଭାଇ ଦିଆଯାଇଥିଲା କି ?", + "botpasswords-created-title": "Bot ପାସୱାର୍ଡ ତିଆରି ହେଲା", + "botpasswords-deleted-title": "Bot ପାସୱାର୍ଡ ଲିଭାଇ ଦିଆଗଲା", + "botpasswords-deleted-body": "ବ୍ୟବହାରକାରୀ \"$2\" ଙ୍କ bot ନାମ \"$1\"ରେ ଥିବା ପାସୱାର୍ଡ କୁ ଲିଭାଇ ଦିଆଗଲା।", + "botpasswords-not-exist": "ବ୍ୟବହାରକାରୀ \"$1\" ଙ୍କ \"$2\" ନାମକ bot ପାସୱାର୍ଡ ନାହିଁ।", "resetpass_forbidden": "ପାସୱାର୍ଡ଼ମାନ ବଦଳା ଯାଇପାରିବ ନାହିଁ", + "resetpass_forbidden-reason": " ପାସୱାର୍ଡମାନ ବଦଳା ଯାଇପାରିବ ନାହିଁ:$1", "resetpass-no-info": "ଏହି ପୃଷ୍ଠାଟିକୁ ସିଧା ଖୋଲିବା ନିମନ୍ତେ ଆପଣଙ୍କୁ ଲଗ ଇନ କରିବାକୁ ପଡ଼ିବ ।", "resetpass-submit-loggedin": "ପାସୱାର୍ଡ଼ ବଦଳାନ୍ତୁ", "resetpass-submit-cancel": "ନାକଚ", @@ -531,8 +562,11 @@ "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": "ଯଦି ଏହି ବ୍ୟବହାରକାରୀନାମ ସହିତ ଇମେଲ ଠିକଣା ସଂଯୁକ୍ତ ଥାଏ, ତେବେ ଏକ ପାସୱାର୍ଡ ପୁନଃସ୍ଥାପନ ଇମେଲ ପଠାଯିବ।", + "passwordreset-invalidemail": "ଅଯୋଗ୍ୟ ଇମେଲ ଠିକଣା", + "passwordreset-nodata": "ବ୍ୟବହାରକାରୀନାମ ବା ଏକ ଇମେଲ ଦିଆ ଯାଇନଥିଲା", "changeemail": "ଇ-ମେଲ ଠିକଣା ବଦଳାଇବେ କିମ୍ବା କାଢିବେ", - "changeemail-header": "ଖାତା ଇ-ମେଲ ଠିକଣା ବଦଳାଇବେ", + "changeemail-header": "ଇମେଲ ଠିକଣା ବଦଳାଇବା ପାଇଁ ଏହି ଫର୍ମ ଭରନ୍ତୁ। ଯଦି ଆପଣ ନିଜର ଖାତା ରୁ କୌଣଶି ଇମେଲ ଠିକଣା ର ସଂଯୋଗ ହଟାଇବାକୁ ଚାହିଁବେ,ଫର୍ମ ଦାଖଲ କଲାବେଳେ ନୂତନ ଇମେଲ ଠିକଣା କୁ ଖାଲି ରଖନ୍ତୁ।", "changeemail-no-info": "ଏହି ପୃଷ୍ଠାଟିକୁ ସିଧା ଖୋଲିବା ନିମନ୍ତେ ଆପଣଙ୍କୁ ଲଗ ଇନ କରିବାକୁ ପଡ଼ିବ ।", "changeemail-oldemail": "ଏବେର ଇ-ମେଲ ଠିକଣା:", "changeemail-newemail": "ନୂଆ ଇ-ମେଲ ଠିକଣା:", @@ -565,11 +599,13 @@ "sig_tip": "ସମୟ ସହ ଆପଣଙ୍କ ସନ୍ତକ", "hr_tip": "ସମାନ୍ତରାଳ ରେଖା (ବେଳେବେଳେ ବ୍ୟବହାର କରିବେ)", "summary": "ସାରକଥା:", - "subject": "ବିଷୟ/ଶିରୋନାମା", + "subject": "ବିଷୟ:", "minoredit": "ଏହା ଏକ ସାମାନ୍ୟ ସମ୍ପାଦନା", "watchthis": "ଏହି ପୃଷ୍ଠାଟିକୁ ଦେଖିବେ", "savearticle": "ସାଇତିବେ [Save]", "savechanges": "ସାଇତିବେ [Save]", + "publishpage": "ପୃଷ୍ଠା ପ୍ରକାଶ କରନ୍ତୁ", + "publishchanges": "ବଦଳଗୁଡିକ ପ୍ରକାଶ କରନ୍ତୁ", "preview": "ସାଇତିବା ଆଗରୁ ଦେଖନ୍ତୁ", "showpreview": "ଦେଖଣା [Preview]", "showdiff": "ବଦଳଗୁଡ଼ିକ ଦେଖାଇବେ", @@ -1266,7 +1302,7 @@ "uploaddisabledtext": "ଫାଇଲ ଅପଲୋଡ଼ ଅଚଳ କରାଯାଇଅଛି ।", "php-uploaddisabledtext": "PHPରେ ଫାଇଲ ଅପଲୋଡ଼କୁ ଅଚଳ କରାଯାଇଅଛି ।\nଦୟାକରି ଫାଇଲ_ଅପଲୋଡ଼ ସଜାଣିକୁ ପରଖି ନିଅନ୍ତୁ ।", "uploadscripted": "ଏହି ଫାଇଲଟିରେ HTML ବା ସ୍କ୍ରିପ୍ଟ କୋଡ଼ ଥିବାରୁ ଏକ ବେବ ବ୍ରାଉଜରରେ ଅଲଗା ରଖିବେ ।", - "uploadscriptednamespace": "ଏହି SVG ଫାଇଲରେ ଏକ ଅନୀତିକର ନେମସ୍ପେସ \"$1\" ରହିଛି ।", + "uploadscriptednamespace": "ଏହି SVG ଫାଇଲରେ ଏକ ଅନୀତିକର ନେମସ୍ପେସ \"<nowiki>$1</nowiki>\" ରହିଛି ।", "uploadinvalidxml": "ଅପଲୋଡ଼ ହୋଇଥିବା ଫାଇଲରେ XML ପାର୍ସ ହୋଇପାରିବ ନାହିଁ ।", "uploadvirus": "ଏହି ଫାଇଲଟିରେ ଏକ ଭାଇରସ ରହିଅଛି!\nସବିଶେଷ: $1", "uploadjava": "ଏହି ଫାଇଲଟି ଏକ ZIP ଫାଇଲ ଯେଉଁଥିରେ Java .class ଫାଇଲ ଅଛି ।\nJava ଫାଇଲ ଅପଲୋଡ଼ କରିବା ଅନୁମୋଦିତ ନୁହେଁ କାରଣ ସେସବୁ ସୁରକ୍ଷା ବଳୟକୁ ନଷ୍ଟ କରିଦିଅନ୍ତି ।", @@ -3038,45 +3074,12 @@ "feedback-thanks-title": "ସାଧୁବାଦ!", "searchsuggest-search": "ଖୋଜନ୍ତୁ", "searchsuggest-containing": "ଖୋଜୁଛି...", - "api-error-badaccess-groups": "ଆପଣଙ୍କୁ ଏହି ଉଇକିରେ ଅପଲୋଡ଼ କରିବାକୁ ଅନୁମତି ଦିଆଯାଇନାହିଁ ।", "api-error-badtoken": "ଭିତର ଅସୁବିଧା: ଖରାପ ଟୋକନ ।", - "api-error-copyuploaddisabled": "URL ଦେଇ ଅପଲୋଡ଼ କରିବା ଏହି ସର୍ଭରରେ ଅଚଳ କରାଯାଇଅଛି ।", - "api-error-duplicate": "ଏହି ସାଇଟରେ ସେହି ଏକା ତଥ୍ୟ ଥିବା {{PLURAL:$1| ଆଉ ଏକ ଫାଇଲ ରହିଅଛି|ଆଉ କିଛି ଫାଇଲ ରହି ଅଛନ୍ତି}} ।", - "api-error-duplicate-archive": "ସେହି ସାଇଟରେ ସେହି ଏକା ଭିତର ଭାଗ ସହିତ ଆଗରୁ {{PLURAL:$1|ଆଉ ଫାଇଲଟିଏ ଥିଲା|ଆଉ କେତେକ ଫାଇଲ ଥିଲା}}, କିନ୍ତୁ {{PLURAL:$1|ତାହାକୁ|ସେସବୁକୁ}} ଲିଭାଇ ଦିଆଯାଇଅଛି ।", - "api-error-empty-file": "ଆପଣ ପଠାଇଥିବା ଫାଇଲଟି ଖାଲି ଅଟେ ।", "api-error-emptypage": "ନୂଆ, ଖାଲି ପୃଷ୍ଠ ତିଆରି କରିବାର ଅନୁମତି ନାହି ।", - "api-error-fetchfileerror": "ଭିତର ଅସୁବିଧା: ଏହି ଫାଇଲଟି ପାଖରେ ପହଞ୍ଚିବା ବେଳେ କିଛି ଅସୁବିଧା ହେଲା ।", - "api-error-fileexists-forbidden": "\"$1\" ନାମରେ ଗୋଟିଏ ଫାଇଲ ଆଗରୁ ଅଛି, ଏବଂ ଏହା ଉପରେ ଲେଖି ହେବନି ।", - "api-error-fileexists-shared-forbidden": "\"$1\" ନାମରେ ଗୋଟିଏ ଫାଇଲ ବଣ୍ଟାଯାଇଥିବା ସାଇତାଗୃହରେ ଅଛି, ଏବଂ ଏହା ବାଲାଯାଇପାରିବ ନାହିଁ ।", - "api-error-file-too-large": "ଆପଣ ପଠାଇଥିବା ଫାଇଲଟି ବିରାଟ ଅଟେ ।", - "api-error-filename-tooshort": "ଫାଇଲ ନାମଟି ଖୁବ ଛୋଟ ।", - "api-error-filetype-banned": "ଏହି ପ୍ରକାରର ଫାଇଲ ବାରଣ କରାଯାଇଅଛି ।", - "api-error-filetype-banned-type": "$1 {{PLURAL:$4|ଏକ ଅନୁମୋଦିତ ଫାଇଲ ପ୍ରକାର ନୁହେଁ|ମାନ ଅନୁମୋଦିତ ଫାଇଲ ପ୍ରକାର ନୁହଁନ୍ତି}} ।\nଅନୁମୋଦିତ {{PLURAL:$3|ଫାଇଲ ପ୍ରକାର ହେଲା|ଫାଇଲଗୁଡିକର ପ୍ରକାର ହେଲା}} $2 ।", - "api-error-filetype-missing": "ଫାଇଲଟିର ଏକ୍ସଟେନସନ ନାହିଁ ।", - "api-error-hookaborted": "ଏକ ଏକ୍ସଟେନସନ ହୁକ ଦେଇ ଆପଣ କରୁଥିବା ବଦଳଟି ବନ୍ଦ କରିଦିଆଗଲା ।", - "api-error-http": "ଭିତର ଅସୁବିଧା: ସର୍ଭର ସହ ଯୋଡ଼ି ହେଉନାହିଁ ।", - "api-error-illegal-filename": "ଏହି ଫାଇଲ ନାମଟି ଅନୁମୋଦିତ ନୁହେଁ ।", - "api-error-internal-error": "ଆଭ୍ୟନ୍ତରୀଣ ଅସୁବିଧା: ଏହି ଉଇକିରେ ଆପଣଙ୍କ ଅପଲୋଡ଼ କରିବା କାଳରେ କିଛି ଅସୁବିଧା ଘଟିଲା ।", - "api-error-invalid-file-key": "ଭିତର ଅସୁବିଧା: ଫାଇଲଟି ଅସ୍ଥାୟୀ ସାଇତାଘର ଭିତରୁ ମିଳିଲାନାହିଁ ।", - "api-error-missingparam": "ଭିତର ଅସୁବିଧା: ହଜିଯାଇଥିବା ପାରାମିଟର ସବୁକୁ ଅନୁରୋଧ କ୍ରମେ ଦେଖାଇଦିଆଗଲା ।", - "api-error-missingresult": "ଭିତର ଅସୁବିଧା: ନକଲ କରିବା ଠିକରେ ହେଲାକି ନାହିଁ ଜାଣି ପାରିଲା ନାହିଁ ।", - "api-error-mustbeloggedin": "ଫାଇଲ ଅପଲୋଡ଼ କରିବା ନିମନ୍ତେ ଆପଣଙ୍କୁ ଲଗ ଇନ କରିବାକୁ ପଡ଼ିବ ।", - "api-error-mustbeposted": "ଭିତର ଅସୁବିଧା: କରାଯାଇଥିବା ଅନୁରୋଧ ପାଇଁ HTTP POST ଦରକାର ।", - "api-error-noimageinfo": "ଅପଲୋଡ଼ ସଫଳ ହେଲା, କିନ୍ତୁ ସର୍ଭରଟି ଆମ୍ଭଙ୍କୁ ଫାଇଲଟୀ ବାବଦରେ କିଛି ବିବରଣୀ ଦେଲା ନାହିଁ ।", - "api-error-nomodule": "ଭିତର ଅସୁବିଧା: ଅପଲୋଡ଼ ମୋଡୁଲ ଠିକ କରାଯାଇନାହିଁ ।", - "api-error-ok-but-empty": "ଭିତର ଅସୁବିଧା: ସର୍ଭର ଠାରୁ କିଛି ଖବର ନାହିଁ ।", - "api-error-overwrite": "ଆଗରୁଥିବା ଏକ ଫାଇଲ ଉପରେ ମଡ଼ାଇବା ଅନୁମୋଦିତ ନୁହେଁ ।", - "api-error-stashfailed": "ଭିତର ଅସୁବିଧା: ସର୍ଭର ଅସ୍ଥାୟୀ ଫାଇଲକୁ ସାଇତି ପାରିଲା ନାହିଁ ।", "api-error-publishfailed": "ଭିତର ଅସୁବିଧା: ସର୍ଭର ଅସ୍ଥାୟୀ ଫାଇଲକୁ ପ୍ରକାଶ କରିପାରିଲା ନାହିଁ ।", - "api-error-stasherror": "ଫାଇଲଟିକୁ ଷ୍ଟାସରେ ଅପଲୋଡ଼ କଲାବେଳେ ତ୍ରୁଟିଟିଏ ପରିଲକ୍ଷିତ ହେଲା ।", - "api-error-timeout": "ସର୍ଭର ଏକ ସୀମିତ କାଳ ଭିତରେ ଉତ୍ତର ଦେଲାନାହିଁ ।", - "api-error-unclassified": "ଏକ ଅଜଣା ଅସୁବିଧା ଘଟିଲା ।", - "api-error-unknown-code": "ଅଜଣା ତୃଟି: \"$1\"", - "api-error-unknown-error": "ଆଭ୍ୟନ୍ତରୀଣ ଅସୁବିଧା: ଫାଇଲଟି ଅପଲୋଡ଼ କରିବା କାଳରେ କିଛି ଅସୁବିଧା ଘଟିଲା ।", + "api-error-stashfailed": "ଭିତର ଅସୁବିଧା: ସର୍ଭର ଅସ୍ଥାୟୀ ଫାଇଲକୁ ସାଇତି ପାରିଲା ନାହିଁ ।", "api-error-unknown-warning": "ଅଜଣା ଚେତାବନୀ: $1", "api-error-unknownerror": "ଅଜଣା ତୃଟି: \"$1\"", - "api-error-uploaddisabled": "ଉଇକିରେ ଅପଲୋଡ଼ କରିବା ଅଚଳ କରାଯାଇଅଛି ।", - "api-error-verification-error": "ଏହି ଫାଇଲଟି ବୋଧ ହୁଏ ନଷ୍ଟ ହୋଇଯାଇଅଛି କିମ୍ବା ଭୁଲ ଏକ୍ସଟେନସନ ଦିଆଯାଇଅଛି ।", "duration-seconds": "$1 {{PLURAL:$1|ସେକଣ୍ଡ|ସେକେଣ୍ଡ}}", "duration-minutes": "$1 {{PLURAL:$1|ମିନିଟ|ମିନିଟ}}", "duration-hours": "$1 {{PLURAL:$1|ଘଣ୍ଟା|ଘଣ୍ଟା}}", diff --git a/languages/i18n/pa.json b/languages/i18n/pa.json index 9c135cb2be..7171baefd2 100644 --- a/languages/i18n/pa.json +++ b/languages/i18n/pa.json @@ -23,7 +23,8 @@ "아라", "Macofe", "ਪ੍ਰਚਾਰਕ", - "Tow" + "Tow", + "Sony dandiwal" ] }, "tog-underline": "ਲਿੰਕ ਹੇਠ-ਲਾਈਨ:", @@ -301,7 +302,7 @@ "sort-descending": "ਘਟਦਾ ਕ੍ਰਮ", "sort-ascending": "ਵਧਦਾ ਕ੍ਰਮ", "nstab-main": "ਸਫ਼ਾ", - "nstab-user": "ਵਰਤੋਂਕਾਰ ਵਰਕਾ", + "nstab-user": "ਵਰਤੋਂਕਾਰ ਸਫ਼ਾ", "nstab-media": "ਮੀਡੀਆ ਸਫ਼ਾ", "nstab-special": "ਖ਼ਾਸ ਸਫ਼ਾ", "nstab-project": "ਪਰੋਜੈਕਟ ਸਫ਼ਾ", @@ -571,7 +572,7 @@ "savechanges": "ਤਬਦੀਲੀਆਂ ਸਾਂਭੋ", "preview": "ਝਲਕ", "showpreview": "ਝਲਕ ਵਿਖਾਓ", - "showdiff": "ਤਬਦੀਲੀਆਂ ਵਿਖਾਉ", + "showdiff": "ਤਬਦੀਲੀਆਂ ਵਿਖਾਓ", "anoneditwarning": "'''ਖ਼ਬਰਦਾਰ:''' ਤੁਸੀਂ ਦਾਖ਼ਲ ਨਹੀਂ ਹੋ। ਕੋਈ ਵੀ ਸੋਧ ਕਰਨ 'ਤੇ ਤੁਹਾਡਾ ਆਈ.ਪੀ. ਪਤਾ ਲੋਕਾਂ ਨੂੰ ਵਿਖਾਈ ਦੇਵੇਗਾ। ਜੇਕਰ ਤੁਸੀਂ <strong>[$1 ਦਾਖ਼ਲ ਹੁੰਦੇ ਹੋ]</strong> ਜਾਂ <strong>[$2 ਖਾਤਾ ਬਣਾਉਂਦੇ ਹੋ]</strong> ਤਾਂ ਤੁਹਾਡੀਆਂ ਸੋਧਾਂ ਦਾ ਸਿਹਰਾ, ਹੋਰ ਫ਼ਾਇਦਿਆਂ ਸਮੇਤ, ਤੁਹਾਡੇ ਵਰਤੋਂਕਾਰ-ਨਾਂ ਸਿਰ ਦਿੱਤਾ ਜਾਵੇਗਾ।", "anonpreviewwarning": "''ਤੁਸੀਂ ਲਾਗਇਨ ਨਹੀਂ ਕੀਤਾ ਹੋਇਆ। ਤਬਦੀਲੀ ਸਾਂਭਣ ਨਾਲ਼ ਤੁਹਾਡਾ IP ਪਤਾ ਸਫ਼ੇ ਦੇ ਸੋਧ ਅਤੀਤ ਵਿਚ ਰਿਕਾਰਡ ਹੋ ਜਾਵੇਗਾ।''", "missingsummary": "'''ਯਾਦ-ਦਹਾਨੀ:''' ਤੁਸੀਂ ਸੋਧ ਸਾਰ ਮੁਹੱਈਆ ਨਹੀਂ ਕਰਵਾਇਆ। ਜੇ ਤੁਸੀਂ \"{{int:savearticle}}\" ਤੇ ਦੁਬਾਰਾ ਕਲਿੱਕ ਕੀਤਾ ਤਾਂ ਤੁਹਾਡਾ ਸਫ਼ਾ ਇਸਦੇ ਬਿਨਾਂ ਹੀ ਸਾਂਭਿਆ ਜਾਵੇਗਾ।", @@ -587,7 +588,7 @@ "nosuchsectiontitle": "ਭਾਗ ਲੱਭ ਨਹੀਂ ਰਿਹਾ", "nosuchsectiontext": "ਤੁਸੀਂ ਨਾ-ਮੌਜੂਦ ਭਾਗ ਨੂੰ ਸੋਧਣ ਦੀ ਕੋਸ਼ਿਸ਼ ਕੀਤੀ ਹੈ।\nਸ਼ਾਇਦ ਤੁਹਾਡੇ ਸਫ਼ੇ ਨੂੰ ਵੇਖਣ ਦੇ ਦੌਰਾਨ ਇਹ ਮਿਟਾਇਆ ਜਾਂ ਇਸਦਾ ਸਿਰਲੇਖ ਬਦਲਿਆ ਜਾ ਚੁੱਕਾ ਹੈ।", "loginreqtitle": "ਲਾਗਇਨ ਚਾਹੀਦਾ ਹੈ", - "loginreqlink": "ਦਾਖਲ", + "loginreqlink": "ਦਾਖ਼ਲ", "loginreqpagetext": "ਹੋਰ ਸਫ਼ੇ ਵੇਖਣ ਲਈ ਤੁਹਾਨੂੰ $1 ਕਰਨਾ ਪਵੇਗਾ।", "accmailtitle": "ਪਾਸਵਰਡ ਭੇਜਿਆ।", "accmailtext": "[[User talk:$1|$1]] ਲਈ ਰਲ਼ਵੇਂ ਤੌਰ ’ਤੇ ਬਣਿਆ ਪਾਸਵਰਡ $2 ਨੂੰ ਭੇਜਿਆ ਜਾ ਚੁੱਕਾ ਹੈ।\nਇਸ ਨਵੇਂ ਖਾਤੇ ਲਈ ਲਾਗਇਨ ਕਰਨ ਤੋਂ ਬਾਅਦ ''[[Special:ChangePassword|ਪਾਸਵਰਡ ਬਦਲੋ]]'' ’ਤੇ ਜਾ ਕੇ ਪਾਸਵਰਡ ਬਦਲਿਆ ਜਾ ਸਕਦਾ ਹੈ।", @@ -845,8 +846,6 @@ "saveprefs": "ਸੰਭਾਲੋ", "restoreprefs": "ਸਾਰੀਆਂ ਮੂਲ ਸੈਟਿੰਗਾਂ ਬਹਾਲ ਕਰੋ (ਸਾਰੇ ਹਿੱਸਿਆਂ ਵਿੱਚ)", "prefs-editing": "ਸੋਧ ਜਾਰੀ", - "rows": "ਕਤਾਰਾਂ:", - "columns": "ਕਾਲਮ:", "searchresultshead": "ਖੋਜ", "stub-threshold-sample-link": "ਨਮੂਨਾ", "stub-threshold-disabled": "ਬੰਦ ਹੈ", @@ -966,7 +965,7 @@ "right-upload_by_url": "URL ਤੋਂ ਫਾਇਲਾਂ ਅੱਪਲੋਡ ਕਰੋ", "right-autoconfirmed": "ਨੀਮ-ਸੁਰੱਖਿਅਤ ਸਫ਼ਿਆਂ ਨੂੰ ਸੋਧਣਾ", "right-bot": "ਇੱਕ ਸਵੈ-ਚਾਲਤ ਅਮਲ ਵਜੋਂ ਗਿਣਿਆ ਜਾਣਾ", - "right-writeapi": "ਲਿਖਾਈ ਏਪੀਆਈ ਦੀ ਵਰਤੋੰ", + "right-writeapi": "ਲਿਖਾਈ API ਵਰਤੋ", "right-delete": "ਸਫ਼ੇ ਹਟਾਓ", "right-bigdelete": "ਵੱਡੇ ਅਤੀਤ ਵਾਲੇ ਪੰਨੇ ਮਿਟਾਉਣੇ", "right-browsearchive": "ਮਿਟਾਏ ਹੋਏ ਸਫ਼ੇ ਖੋਜੋ", @@ -1062,7 +1061,7 @@ "recentchanges-legend-plusminus": "(''±੧੨੩'')", "recentchanges-submit": "ਦਿਖਾਓ", "rcnotefrom": "'''$2''' ਤੱਕ ('''$1''' ਤੱਕ ਦਿੱਸਦੇ) ਬਦਲਾਵ ਹੇਠ ਦਿੱਤੀਆਂ ਹਨ।", - "rclistfrom": "$3 $2 ਤੋਂ ਸ਼ੁਰੂ ਕਰਕੇ ਨਵੀਆਂ ਸੋਧਾਂ ਵਖਾਓ", + "rclistfrom": "$3 $2 ਤੋਂ ਸ਼ੁਰੂ ਕਰਕੇ ਨਵੀਆਂ ਸੋਧਾਂ ਵਿਖਾਓ", "rcshowhideminor": "ਛੋਟੀਆਂ ਤਬਦੀਲੀਆਂ $1", "rcshowhideminor-show": "ਵੇਖੋ", "rcshowhideminor-hide": "ਓਹਲੇ", @@ -1083,7 +1082,7 @@ "rcshowhidemine-hide": "ਓਹਲੇ", "rcshowhidecategorization-show": "ਦਿਖਾਓ", "rcshowhidecategorization-hide": "ਲੁਕਾਉ", - "rclinks": "ਪਿਛਲੇ $2 ਦਿਨਾਂ ਵਿੱਚ ਹੋਈਆਂ $1 ਤਬਦੀਲੀਆਂ ਵਖਾਓ<br /> $3", + "rclinks": "ਪਿਛਲੇ $2 ਦਿਨਾਂ ਵਿੱਚ ਹੋਈਆਂ $1 ਤਬਦੀਲੀਆਂ ਵਿਖਾਓ<br /> $3", "diff": "ਫ਼ਰਕ", "hist": "ਅਤੀਤ", "hide": "ਲੁਕਾਓ", @@ -1151,7 +1150,7 @@ "uploaddisabled": "ਅੱਪਲੋਡ ਆਯੋਗ ਹੈ", "copyuploaddisabled": "URL ਰਾਹੀਂ ਅੱਪਲੋਡ ਰੋਕੇ ਹੋਏ ਹਨ।", "uploaddisabledtext": "ਫ਼ਾਈਲਾਂ ਦੇ ਅੱਪਲੋਡ ਰੋਕੇ ਹੋਏ ਹਨ।", - "uploadscriptednamespace": "ਇਸ ਐੱਸ.ਵੀ.ਜੀ. ਫ਼ਾਈਲ ਵਿੱਚ ਇੱਕ ਗ਼ੈਰ-ਕਨੂੰਨੀ ਨਾਂ-ਥਾਂ \"$1\" ਹੈ।", + "uploadscriptednamespace": "ਇਸ ਐੱਸ.ਵੀ.ਜੀ. ਫ਼ਾਈਲ ਵਿੱਚ ਇੱਕ ਗ਼ੈਰ-ਕਨੂੰਨੀ ਨਾਂ-ਥਾਂ \"<nowiki>$1</nowiki>\" ਹੈ।", "uploadvirus": "ਇਹ ਫਾਇਲ ਵਿੱਚ ਵਾਇਰਸ ਹੈ! ਵੇਰਵੇ ਲਈ ਵੇਖੋ: $1", "upload-source": "ਸਰੋਤ ਫਾਇਲ", "sourcefilename": "ਸੋਰਸ ਫਾਇਲ ਨਾਂ:", @@ -1799,7 +1798,7 @@ "tooltip-ca-talk": "ਸਮਗੱਰੀ ਸਫ਼ੇ ਬਾਰੇ ਚਰਚਾ", "tooltip-ca-edit": "ਇਹ ਸਫ਼ਾ ਸੋਧੋ", "tooltip-ca-addsection": "ਨਵਾਂ ਭਾਗ ਸ਼ੁਰੂ ਕਰੋ", - "tooltip-ca-viewsource": "ਇਹ ਸਫ਼ਾ ਸੁਰੱਖਿਅਤ ਹੈ।\nਤੁਸੀਂ ਇਹਦਾ ਸਰੋਤ ਵੇਖ ਸਕਦੇ ਹੋ।", + "tooltip-ca-viewsource": "ਇਹ ਸਫ਼ਾ ਸੁਰੱਖਿਅਤ ਹੈ।\nਤੁਸੀਂ ਇਸਦਾ ਸਰੋਤ ਵੇਖ ਸਕਦੇ ਹੋ।", "tooltip-ca-history": "ਇਸ ਸਫ਼ੇ ਦੇ ਪਿਛਲੇ ਰੀਵਿਜਨ", "tooltip-ca-protect": "ਇਹ ਸਫ਼ਾ ਸੁਰੱਖਿਅਤ ਕਰੋ", "tooltip-ca-unprotect": "ਇਸ ਸਫ਼ੇ ਦੀ ਸੁਰੱਖਿਆ ਬਦਲੋ", @@ -1841,7 +1840,7 @@ "tooltip-minoredit": "ਇਸ ’ਤੇ ਬਤੌਰ ਛੋਟੀ ਤਬਦੀਲੀ ਨਿਸ਼ਾਨ ਲਾਓ", "tooltip-save": "ਆਪਣੀਆਂ ਤਬਦੀਲੀਆਂ ਸਾਂਭੋ", "tooltip-preview": "ਆਪਣੀ ਤਬਦੀਲੀ ਦੀ ਝਲਕ ਵੇਖੋ, ਸਾਂਭਣ ਤੋਂ ਪਹਿਲਾਂ ਇਹ ਵਰਤੋਂ!", - "tooltip-diff": "ਤੁਹਾਡੇ ਵੱਲੋਂ ਲਿਖਤ ਵਿੱਚ ਕੀਤੀਆਂ ਤਬਦੀਲੀਆਂ ਵਖਾਉਂਦਾ ਹੈ", + "tooltip-diff": "ਤੁਹਾਡੇ ਵੱਲੋਂ ਲਿਖਤ ਵਿੱਚ ਕੀਤੀਆਂ ਤਬਦੀਲੀਆਂ ਵਿਖਾਉਂਦਾ ਹੈ", "tooltip-compareselectedversions": "ਇਸ ਸਫ਼ੇ ਦੀਆਂ ਦੋ ਚੁਣੀਆਂ ਹੋਈਆਂ ਸੋਧਾਂ ਵਿਚ ਫ਼ਰਕ ਵੇਖੋ", "tooltip-watch": "ਇਸ ਸਫ਼ੇ ਨੂੰ ਆਪਣੀ ਨਿਗਰਾਨੀ-ਲਿਸਟ ਵਿਚ ਪਾਓ", "tooltip-watchlistedit-normal-submit": "ਸਿਰਲੇਖ ਹਟਾਓ", @@ -1911,7 +1910,7 @@ "file-info-size": "$1 × $2 ਪਿਕਸਲ, ਫ਼ਾਈਲ ਅਕਾਰ: $3, MIME ਕਿਸਮ: $4", "file-nohires": "ਇਸ ਤੋਂ ਵੱਡੀ ਤਸਵੀਰ ਮੌਜੂਦ ਨਹੀਂ ਹੈ।", "svg-long-desc": "SVG ਫ਼ਾਈਲ, ਆਮ ਤੌਰ ’ਤੇ $1 × $2 ਪਿਕਸਲ, ਫ਼ਾਈਲ ਦਾ ਅਕਾਰ: $3", - "show-big-image": "ਅਸਲ ਫਾਈਲ", + "show-big-image": "ਅਸਲ ਫ਼ਾਈਲ", "show-big-image-preview": "ਇਸ ਝਾਤ ਦਾ ਅਕਾਰ: $1.", "show-big-image-other": "ਹੋਰ {{PLURAL:$2|ਰੈਜ਼ੋਲਿਊਸ਼ਨ|ਰੈਜ਼ੋਲਿਊਸ਼ਨਜ਼}}: $1.", "show-big-image-size": "$1 × $2 ਪਿਕਸਲ", @@ -2396,31 +2395,12 @@ "feedback-thanks-title": "ਧੰਨਵਾਦ!", "feedback-useragent": "ਉਪਭੋਗੀ ਏਜੰਟ:", "searchsuggest-search": "ਖੋਜ {{SITENAME}}", - "api-error-badaccess-groups": "ਤੁਹਾਨੂੰ ਇਸ ਵਿਕੀ ਉੱਤੇ ਫ਼ਾਈਲਾਂ ਅੱਪਲੋਡ ਕਰਨ ਦੀ ਇਜਾਜ਼ਤ ਨਹੀਂ ਹੈ।", "api-error-badtoken": "ਅੰਦਰੂਨੀ ਦੋਸ਼: ਗ਼ਲਤ ਟੋਕਨ", - "api-error-empty-file": "ਤੁਹਾਡੇ ਵਲੋਂ ਦਿੱਤੀ ਫ਼ਾਈਲ ਖ਼ਾਲੀ ਸੀ।", "api-error-emptypage": "ਨਵੇਂ, ਖ਼ਾਲੀ ਸਫ਼ੇ ਬਣਾਉਣ ਦੀ ਇਜਾਜ਼ਤ ਨਹੀਂ ਹੈ।", - "api-error-file-too-large": "ਤੁਹਾਡੇ ਵਲੋਂ ਦਿੱਤੀ ਫ਼ਾਈਲ ਬਹੁਤ ਵੱਡੀ ਸੀ।", - "api-error-filename-tooshort": "ਫ਼ਾਈਲ ਦਾ ਨਾਂ ਬਹੁਤ ਛੋਟਾ ਹੈ।", - "api-error-filetype-banned": "ਇਸ ਕਿਸਮ ਦੀ ਫ਼ਾਈਲ ਦੀ ਮਨਾਹੀ ਹੈ।", - "api-error-filetype-missing": "ਇਸ ਫ਼ਾਈਲ ਨਾਂ ਵਿਚ ਐਕਸਟੈਂਸ਼ਨ ਨਹੀਂ ਹੈ।", - "api-error-http": "ਅੰਦਰੂਨੀ ਦੋਸ਼: ਸਰਵਰ ਨਾਲ਼ ਰਾਬਤਾ ਨਹੀਂ ਹੋ ਰਿਹਾ", - "api-error-illegal-filename": "ਇਸ ਫ਼ਾਈਲ-ਨਾਂ ਦੀ ਇਜਾਜ਼ਤ ਨਹੀਂ ਹੈ।", - "api-error-mustbeloggedin": "ਫ਼ਾਈਲਾਂ ਅੱਪਲੋਡ ਕਰਨ ਲਈ ਤੁਹਾਡਾ ਦਾਖ਼ਲ ਹੋਣਾ ਲਾਜ਼ਮੀ ਹੈ।", - "api-error-mustbeposted": "ਅੰਦਰੂਨੀ ਦੋਸ਼:ਬੇਨਤੀ ਲਈ HTTP POST ਲੋੜੀਂਦੀ ਹੈ।", - "api-error-noimageinfo": "ਅੱਪਲੋਡ ਸਫਲ਼ ਹੋਇਆ ਪਰ ਸਰਵਰ ਨੇ ਇਸ ਫ਼ਾਈਲ ਬਾਰੇ ਸਾਨੂੰ ਕੋਈ ਜਾਣਕਾਰੀ ਨਹੀਂ ਦਿੱਤੀ।", - "api-error-nomodule": "ਅੰਦਰੂਨੀ ਦੋਸ਼:ਕੋਈ ਅੱਪਲੋਡ ਮਾਪਦੰਡ ਨਹੀਂ ਰੱਖਿਆ ਗਿਆ।", - "api-error-ok-but-empty": "ਅੰਦਰੂਨੀ ਦੋਸ਼: ਸਰਵਰ ਵੱਲੋਂ ਕੋਈ ਜੁਆਬ ਨਹੀਂ।", - "api-error-stashfailed": "ਅੰਦਰੂਨੀ ਦੋਸ਼:ਸਰਵਰ ਆਰਜ਼ੀ ਫ਼ਾਈਲ ਦਾ ਨੂੰ ਸਾਂਭ ਨਾ ਸਕਿਆ।", "api-error-publishfailed": "ਅੰਦਰੂਨੀ ਦੋਸ਼:ਸਰਵਰ ਆਰਜ਼ੀ ਫ਼ਾਈਲ ਦਾ ਪ੍ਰਕਾਸ਼ਨ ਨਾ ਕਰ ਸਕਿਆ।", - "api-error-timeout": "ਸਰਵਰ ਨੇ ਉਮੀਦ ਦੇ ਸਮੇਂ ਦੇ ਵਿਚ-ਵਿਚ ਕੋਈ ਜੁਆਬ ਨਹੀਂ ਦਿੱਤਾ।", - "api-error-unclassified": "ਅਣਪਛਾਤਾ ਦੋਸ਼ ਆਇਆ ਹੈ।", - "api-error-unknown-code": "ਅਣਪਛਾਤਾ ਦੋਸ਼: \"$1\"", - "api-error-unknown-error": "ਅੰਦਰੂਨੀ ਦੋਸ਼:ਤੁਹਾਡੀ ਫ਼ਾਈਲ ਅੱਪਲੋਡ ਕਰਦੇ ਵਕਤ ਕੁਝ ਗੜਬੜ ਹੋ ਗਈ।", + "api-error-stashfailed": "ਅੰਦਰੂਨੀ ਦੋਸ਼:ਸਰਵਰ ਆਰਜ਼ੀ ਫ਼ਾਈਲ ਦਾ ਨੂੰ ਸਾਂਭ ਨਾ ਸਕਿਆ।", "api-error-unknown-warning": "ਅਣਪਛਾਤੀ ਚਿਤਾਵਨੀ: \"$1\".", "api-error-unknownerror": "ਅਣਪਛਾਤਾ ਦੋਸ਼: \"$1\".", - "api-error-uploaddisabled": "ਇਸ ਵਿਕੀ ਉੱਤੇ ਅੱਪਲੋਡ ਬੰਦ ਕੀਤਾ ਹੋਇਆ ਹੈ।", - "api-error-verification-error": "ਸ਼ਾਇਦ ਇਹ ਫ਼ਾਈਲ ਖ਼ਰਾਬ ਹੈ ਜਾਂ ਇਹਦੀ ਐਕਸਟੈਂਸ਼ਨ ਗ਼ਲਤ ਹੈ।", "duration-seconds": "$1 {{PLURAL:$1|ਸਕਿੰਟ}}", "duration-minutes": "$1 {{PLURAL:$1|ਮਿੰਟ}}", "duration-hours": "$1 {{PLURAL:$1|ਘੰਟਾ |ਘੰਟੇ }}", diff --git a/languages/i18n/pcd.json b/languages/i18n/pcd.json index d96cf90376..8f3f530755 100644 --- a/languages/i18n/pcd.json +++ b/languages/i18n/pcd.json @@ -25,6 +25,7 @@ "tog-enotifusertalkpages": "Éspédier un imèle su em bouéte quante m'pache \"Dvise Uzeu\" est candgée.", "tog-enotifminoredits": "M'éspédier étou un imèle pou chés tiots canjemints d'chés paches o d'chés fichiés", "tog-shownumberswatching": "Aficher ch'nombe ed gins qu'ont vu.", + "tog-uselivepreview": "Implouéyer ch'rade intrévir", "tog-watchlisthideown": "Muche ems édicions dseur el lisse à suire", "tog-watchlisthidebots": "Muche chés édicions des robots su el lisse à suire", "tog-watchlisthideminor": "Muche chés tiotes édicions su el lisse à suire.", @@ -87,6 +88,20 @@ "oct": "Oct", "nov": "Nov", "dec": "Déc", + "january-date": "{{PLURAL:$1|1=1ᵉʳ|$1}} jinvié", + "february-date": "{{PLURAL:$1|1=1ᵉʳ|$1}} févrié", + "march-date": "{{PLURAL:$1|1=1ᵉʳ|$1}} marche", + "april-date": "{{PLURAL:$1|1=1ᵉʳ|$1}} avri", + "may-date": "{{PLURAL:$1|1=1ᵉʳ|$1}} moai", + "june-date": "{{PLURAL:$1|1=1ᵉʳ|$1}} join", + "july-date": "{{PLURAL:$1|1=1ᵉʳ|$1}} juilet", + "august-date": "{{PLURAL:$1|1=1ᵉʳ|$1}} eut", + "september-date": "{{PLURAL:$1|1=1ᵉʳ|$1}} siétimbe", + "october-date": "{{PLURAL:$1|1=1ᵉʳ|$1}} octobe", + "november-date": "{{PLURAL:$1|1=1ᵉʳ|$1}} novimbe", + "december-date": "{{PLURAL:$1|1=1ᵉʳ|$1}} déchimbe", + "period-am": "AM", + "period-pm": "PM", "pagecategories": "{{PLURAL:$1|Catégorie|Catégories}}", "category_header": "Paches in catégorie \"$1\"", "subcategories": "Dsoucatégories", @@ -96,11 +111,12 @@ "hidden-category-category": "Catégouries muchées", "category-subcat-count": "{{PLURAL:$2|Chol catégorie ale o seulemint el dsou-catégorie-lo:|Chol catégorie ale o {{PLURAL:$1|l'dsou-catégorie-lo|chés $1 dsou-catégories suivantes}}, pou un total éd $2.}}", "category-subcat-count-limited": "L'catégorie-lo ale o {{PLURAL:$1|el dsous-catégorie|chés $1 dsous-catégories}} -lo:", - "category-article-count": "Chol catégorie ale o {{PLURAL:$2|seulemint l'pache-lo:|$2 paches, dont{{PLURAL:$1|chelle-chi:|chés $1 paches chi:}} }}", + "category-article-count": "Chol catégorie ale o {{PLURAL:$2|0= autchune pache|1=seulemint l'pache-lo:|$2 paches, dont{{PLURAL:$1|0=autchune|1=chelle-chi|chés $1 paches in-dsous}} }}:", "category-article-count-limited": "{{PLURAL:$1|L' pache d'apré ale est|Chés $1 paches d'apré sont}} dins l'catégorie-lo.", "category-file-count": "Chol catégorie ale o {{PLURAL:$2|seulemint ech fichié-lo:|$2 fichiés dont chés $1 fichiés suivants:}}", "category-file-count-limited": "{{PLURAL:$1|Ech fichié d'apré est|Chés $1 fichiés d'apré sont}} dins l'catégorie-lo.", "listingcontinuesabbrev": "cont.", + "index-category": "Paches indécsées", "noindex-category": "Paches nin indécsées", "broken-file-category": "Paches aveuc des loïens d'fichiés bérzillés", "about": "À pérpos", @@ -108,9 +124,10 @@ "newwindow": "(ouvrir din eune nouvèle fernéte)", "cancel": "Canchler", "moredotdotdot": "Plu...", + "morenotlisted": "Chol lisse peut ète incomplète.", "mypage": "Pache", "mytalk": "Min bavouér", - "anontalk": "Bavouér pou chl'IP-lo", + "anontalk": "Bavouér", "navigation": "Navigachon", "and": " pi", "qbfind": "Trouvoèr", @@ -123,6 +140,7 @@ "actions": "Acchons", "namespaces": "Éspaces d'chés noms", "variants": "Ércanjantes", + "navigation-heading": "Menu éd navigacion", "errorpagetitle": "Bérlure", "returnto": "Értrouve $1.", "tagline": "Cha vient éd {{SITENAME}}", @@ -133,17 +151,22 @@ "searcharticle": "Aller", "history": "Historique deul pache", "history_short": "Histoère", + "history_small": "Histoère", "updatedmarker": "Cangé édpui em darinne visite", "printableversion": "Imprimabe vérchon", "permalink": "Loïen pérmanint", "print": "Imprimer", "view": "Vir", + "view-foreign": "Vir su $1", "edit": "Éditer", + "edit-local": "Modifier el déscripcion locale", "create": "Créer", + "create-local": "Ajouter ène déscripcion locale", "editthispage": "Éditer chl'pache-lo", "create-this-page": "Créer chl'pache lo", "delete": "Défacer", "deletethispage": "Défacer chl'pache lo", + "undeletethispage": "n'poin défacer chol pache", "undelete_short": "Déface poin {{PLURAL:$1|un édite|$1 édites}}", "viewdeleted_short": "{{PLURAL:$1|eune édition défacée|$1 éditions défacées}}", "protect": "Garantir", @@ -160,6 +183,9 @@ "talk": "distchuter", "views": "Vues", "toolbox": "Boéte à otis", + "tool-link-userrights": "Modifier chés groupes éd {{GENDER:$1|l’uzeu|l’uzeuse}}", + "tool-link-userrights-readonly": "Vir chés {{GENDER:$1|groupes d'uzeu}}", + "tool-link-emailuser": "Invouéyer un courriel à {{GENDER:$1|l’uzeu|l’uzeuse}}", "userpage": "Vir el pache dech uzeu", "projectpage": "Vir l'pache dech prodjé", "imagepage": "Vir el pache dech fichié", @@ -171,23 +197,28 @@ "otherlanguages": "Din d'eutes langaches", "redirectedfrom": "(Érdirection édpis $1)", "redirectpagesub": "Pache érdérivée", + "redirectto": "Ardiriger vers :", "lastmodifiedat": "L'pache-lo ale o té modifiée l'fouos darin l' $1, à $2.", "viewcount": "L' page-lo ale o té vue {{PLURAL:$1|1 foués|$1 foués}}.", "protectedpage": "Pache défènnée", "jumpto": "Aler à:", "jumptonavigation": "navigachon", "jumptosearch": "tracher", + "pool-errorunknown": "Bérlurage inconnu", + "poolcounter-usage-error": "Bérlurage d’utilisacion : $1", "aboutsite": "à pérpos éd {{SITENAME}}", "aboutpage": "Project:à pérpos", - "copyright": "Ch'contnu, il est disponipe dsou $1.", + "copyright": "Ch'contnu, il est disponipe dsou licince $1 sauf mincion invérse.", "copyrightpage": "{{ns:project}}:Copyrights", "currentevents": "Darinnetés picardes", "currentevents-url": "Project:Darinnetés picardes", "disclaimers": "Démintis", "disclaimerpage": "Project:Déminti général", "edithelp": "Éditer el aiyude", + "helppage-top-gethelp": "Aïude", "mainpage": "Moaite Pache", "mainpage-description": "Moaite Pache", + "policy-url": "Project:Régues", "portal": "Portal del conmeunauté", "portal-url": "Project:Accueul del conminnité", "privacy": "Politique d'éscrè", @@ -197,6 +228,8 @@ "ok": "OK", "retrievedfrom": "Érprind din \"$1\"", "youhavenewmessages": "Os avez $1 ($2).", + "youhavenewmessagesmanyusers": "Os avez $1 granmint d'uzeus ($2).", + "newmessagesdifflinkplural": "$1 {{PLURAL:$1|darin cangemint|darins cangemints}}", "youhavenewmessagesmulti": "Os avez des nouvieus messaches su $1", "editsection": "éditer", "editold": "éditer", @@ -207,6 +240,11 @@ "toc": "Étnus", "showtoc": "Aficher", "hidetoc": "muche", + "collapsible-collapse": "Érplier", + "collapsible-expand": "diswalper", + "confirmable-confirm": "Ètes-vos seur{{GENDER:$1||e}} ?", + "confirmable-yes": "Oui", + "confirmable-no": "Non", "thisisdeleted": "Vir ou érfoaire $1?", "viewdeleted": "Vir $1?", "restorelink": "{{PLURAL:$1|eune édition défacée|$1 chés éditions défacées}}", @@ -229,6 +267,7 @@ "nstab-template": "Modéle", "nstab-help": "Pache d'aiyude", "nstab-category": "Catégorie", + "mainpage-nstab": "Moaite Pache", "nosuchspecialpage": "I n'y o poin chot éspéchiale pache-lo", "error": "Bérlurache", "databaseerror": "Bérlurache din l'database", @@ -259,19 +298,51 @@ "login": "Intrer", "nav-login-createaccount": "Intrer / créer vote conpte", "userlogin": "Intrer / créer vote conpte", + "userloginnocreate": "Intrer", "logout": "Sortir", "userlogout": "Sortir", "notloggedin": "Poin connékté", + "userlogin-noaccount": "os n'avez mie un conpte ?", + "userlogin-joinproject": "Érgaingnez {{SITENAME}}", "nologin": "os n'avez mie un conpte? '''$1'''.", "nologinlink": "Créer un conpte", "createaccount": "Créer un conpte", "gotaccount": "Jou qu'os avez piécha un conpte? '''$1'''.", "gotaccountlink": "Intrer", "userlogin-resetlink": "Vos avez oblié vous détals d'connécsion ?", - "createaccountmail": "par imèle", + "userlogin-resetpassword-link": "Mot d'passe obliè ?", + "userlogin-helplink2": "Éyude pour s' connécter", + "userlogin-loggedin": "Os ètes déjo connécté{{GENDER:$1||e|(e)}} conme $1.\nImplouéyez ch' formuloére in-d'sous pour vous connécter aveuc un eute compte d'uzeu.", + "userlogin-reauth": "Os d'vez vous arconnécter pour vérifier éq vos ètes {{GENDER:$1|$1}}.", + "userlogin-createanother": "Créer un eute compte", + "createacct-emailrequired": "Adrèche courriel", + "createacct-emailoptional": "Adrèche courriel (facultative)", + "createacct-email-ph": "Intrez vote adrèche courriel", + "createacct-another-email-ph": "Intrez l' adrèche courriel", + "createaccountmail": "Uzer un mot d' passe aléatoére timporoére pi l’invouéyer à l’adrèche ed courriel éspécifiée", + "createaccountmail-help": "Peut ète implouèyé pour créer un compte pour eune eute parsonne sans connouaite ch' mot d'passe.", + "createacct-realname": "Nom réél (facultatif)", + "createaccountreason": "Motif :", + "createacct-reason": "Motif", + "createacct-reason-ph": "Porquoé os créez un eute compte ?", + "createacct-reason-help": "Mot d'billet affiché dins ch' jornal éd créachon d'compte", + "createacct-submit": "Créez vote compte", + "createacct-another-submit": "Créer un compte", + "createacct-continue-submit": "Continuer el créachon du compte", + "createacct-another-continue-submit": "Continuer el créachon du compte", + "createacct-benefit-heading": "{{SITENAME}} est foait pèr des gins conme vous.", + "createacct-benefit-body1": "modificacion{{PLURAL:$1||s}}", + "createacct-benefit-body2": "pache{{PLURAL:$1||s}}", + "createacct-benefit-body3": "{{PLURAL:$1|contributeu nouvieu|contributeus nouvieus}}", "badretype": "Chés mots d'passe intrés, is sont poin bon.", + "usernameinprogress": "Ène créachon d' compte pour ch' nom d’uzeu est déjo in cours.\nVoulez attènne.", "userexists": "Nom d’utilisateur entré déjà utilisé.\nNom d’uzeu intré déjo donné.\ni feut prinde un eute nom.\nj'm'escuse mais i feut prinde un aute nom.", "loginerror": "Bérlurache del intrée", + "createacct-error": "Bérlurage pour l'créachon du compte", + "createaccounterror": "Impossibe ed créer ch' compte : $1", + "nocookiesnew": "Ch' compte d'uzeu il o té créé, mais os n’ètes poin connecté{{GENDER:||e|(e)}}.\n{{SITENAME}} doét implouéyer des ''cookies'' pour warder el connecsion mais os les avez désactivés.\nVoulez les activer pi vos arconnecter aveuc ch' meume nom et pi ch' meume mot d'passe.", + "nocookieslogin": "{{SITENAME}} doét implouéyer des ''cookies'' pour warder el connecsion mais os les avez désactivés.\nVoulez les activer pi vos arconnecter.", + "nocookiesfornew": "Ch' compte d'uzeu il n'o poin té créé, pasqué os n’avons poin pu idintifier esn origine.\n{{SITENAME}} doét implouéyer des ''cookies'', vérifiez qu'ils sont activés, arquétchez l' pache pi érquérminchez.", "noname": "Os n'avez poin donné un nom d'uzeu valabe.", "loginsuccess": "'''Achteur os ètes intré{{GENDER:||e|(e)}} din {{SITENAME}} conme \"$1\".'''", "nouserspecified": "Os dvez intrer un nom d'uzeu.", diff --git a/languages/i18n/pl.json b/languages/i18n/pl.json index 0ed8586dc1..91e926a3e9 100644 --- a/languages/i18n/pl.json +++ b/languages/i18n/pl.json @@ -85,7 +85,8 @@ "Mateuszek045", "Sethakill", "Mateon1", - "Jdx" + "Jdx", + "Kirsan" ] }, "tog-underline": "Podkreślenie linków:", @@ -253,6 +254,7 @@ "searcharticle": "Przejdź", "history": "Historia strony", "history_short": "historia", + "history_small": "historia", "updatedmarker": "zmienione od ostatniej wizyty", "printableversion": "Wersja do druku", "permalink": "Link do tej wersji", @@ -327,8 +329,8 @@ "policy-url": "Project:Zasady", "portal": "Portal społeczności", "portal-url": "Project:Portal społeczności", - "privacy": "Zasady zachowania poufności", - "privacypage": "Project:Zasady zachowania poufności", + "privacy": "Polityka ochrony prywatności", + "privacypage": "Project:Polityka ochrony prywatności", "badaccess": "Błąd uprawnień", "badaccess-group0": "Nie masz uprawnień wymaganych do wykonania tej operacji.", "badaccess-groups": "Wykonywanie tej operacji zostało ograniczone do użytkowników w {{PLURAL:$2|grupie|jednej z grup:}} $1.", @@ -493,19 +495,12 @@ "login": "Zaloguj się", "login-security": "Potwierdź swoją tożsamość", "nav-login-createaccount": "Logowanie i rejestracja", - "userlogin": "Logowanie i rejestracja", - "userloginnocreate": "Zaloguj się", "logout": "Wyloguj", "userlogout": "Wyloguj", "notloggedin": "Nie jesteś zalogowany", "userlogin-noaccount": "Nie masz konta?", "userlogin-joinproject": "Dołącz do {{GRAMMAR:D.lp|{{SITENAME}}}}", - "nologin": "Nie masz konta? $1.", - "nologinlink": "Zarejestruj się", "createaccount": "Załóż nowe konto", - "gotaccount": "Masz już konto? '''$1'''.", - "gotaccountlink": "Zaloguj się", - "userlogin-resetlink": "Zapomniałeś danych do zalogowania się?", "userlogin-resetpassword-link": "Nie pamiętasz hasła?", "userlogin-helplink2": "Pomoc przy logowaniu", "userlogin-loggedin": "Zalogowano jako {{GENDER:$1|$1}}.\nUżyj poniższego formularza, aby zalogować się jako inny użytkownik.", @@ -518,7 +513,6 @@ "createaccountmail": "Użyj tymczasowego hasła wygenerowanego losowo i wyślij je na podany adres e-mail", "createaccountmail-help": "Pozwala utworzyć konto dla innej osoby, nie znając jej hasła.", "createacct-realname": "Prawdziwe imię i nazwisko (opcjonalnie)", - "createaccountreason": "Powód:", "createacct-reason": "Powód", "createacct-reason-ph": "Dlaczego zakładasz kolejne konto", "createacct-reason-help": "Komunikat wyświetlany w rejestrze tworzenia kont", @@ -614,6 +608,7 @@ "botpasswords-label-delete": "Usuń", "botpasswords-label-resetpassword": "Zresetuj hasło", "botpasswords-label-grants": "Zastosowane uprawnienia:", + "botpasswords-help-grants": "Nadawane uprawnienia upoważniają do działań, które możesz już obecnie wykonywać. Wyrażenie zgody tutaj nie daje dostępu do nowych uprawnień. Zobacz [[Special:ListGrants|tabelę uprawnień]], aby uzyskać więcej informacji.", "botpasswords-label-grants-column": "Przyznane", "botpasswords-bad-appid": "Nazwa bota \"$1\" nie jest prawidłowa.", "botpasswords-insert-failed": "Nie udało się dodać robota o nazwie \"$1\". Czy był już wcześniej dodany?", @@ -658,6 +653,7 @@ "passwordreset-emailsentusername": "Jeśli z tym kontem powiązany jest adres e‐mail, zostanie na niego wysłany e-mail do odzyskiwania hasła.", "passwordreset-nocaller": "Musi być podany wywołujący", "passwordreset-nosuchcaller": "Wywołujący nie istnieje: $1", + "passwordreset-ignored": "Zresetowanie hasła nie powiodło się. Może żaden dostawca nie został skonfigurowany?", "passwordreset-invalidemail": "Nieprawidłowy adres e-mail", "passwordreset-nodata": "Nie podano ani nazwy użytkownika, ani adresu e-mail", "changeemail": "Zmiana lub usunięcie adresu e‐mail", @@ -715,7 +711,7 @@ "selfredirect": "<strong>Ostrzeżenie:</strong> Przekierowujesz tę stronę do niej samej.\nByć może został przez Ciebie wybrany zły cel przekierowania lub edytujesz niewłaściwą stronę.\nJeżeli ponownie klikniesz „{{int:savearticle}}”, przekierowanie zostanie utworzone.", "missingcommenttext": "Wprowadź komentarz poniżej.", "missingcommentheader": "<strong>Uwaga:</strong> treść tytułu komentarza jest pusta.\nJeśli ponownie klikniesz „{{int:savearticle}}”, zmiany zostaną zapisane bez niego.", - "summary-preview": "Podgląd opisu:", + "summary-preview": "Podgląd opisu zmian:", "subject-preview": "Podgląd tematu:", "previewerrortext": "Wystąpił błąd podczas próby podglądu Twoich zmian.", "blockedtitle": "Użytkownik jest zablokowany", @@ -738,7 +734,7 @@ "noarticletext": "Obecnie ta strona nie ma zawartości.\nMożesz [[Special:Search/{{PAGENAME}}|wyszukać ten tytuł na innych stronach]],\n<span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} przeszukać rejestr] \nlub [{{fullurl:{{FULLPAGENAME}}|action=edit}} utworzyć tę stronę]</span>.", "noarticletext-nopermission": "Ta strona nie posiada jeszcze zawartości.\nMożesz [[Special:Search/{{PAGENAME}}|wyszukać ten tytuł]] w treści innych stron\nlub <span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} przeszukać powiązane rejestry]</span>, ale nie masz uprawnień do utworzenia tej strony", "missing-revision": "Wersja #$1 strony \"{{FULLPAGENAME}}\" nie istnieje.\n\nZazwyczaj jest to spowodowane przestarzałym linkiem do usuniętej strony. Powód usunięcia znajduje się w [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} rejestrze].", - "userpage-userdoesnotexist": "Użytkownik „<nowiki>$1</nowiki>” nie jest zarejestrowany.\nUpewnij się, czy na pewno zamierza{{GENDER:|łeś|łaś|sz}} utworzyć lub zmodyfikować właśnie tę stronę.", + "userpage-userdoesnotexist": "Użytkownik „$1” nie jest zarejestrowany.\nUpewnij się, czy na pewno zamierzał{{GENDER:|eś|aś|eś/aś}} utworzyć lub zmodyfikować właśnie tę stronę.", "userpage-userdoesnotexist-view": "Konto użytkownika „$1” nie jest zarejestrowane.", "blocked-notice-logextract": "{{GENDER:$1|Ten użytkownik|Ta użytkowniczka}} jest obecnie {{GENDER:$1|zablokowany|zablokowana}}.\nOstatni wpis rejestru blokad jest pokazany poniżej.", "clearyourcache": "<strong>Uwaga:</strong> aby zobaczyć zmiany po zapisaniu, może zajść potrzeba wyczyszczenia pamięci podręcznej przeglądarki.\n* <strong>Firefox / Safari:</strong> Przytrzymaj <em>Shift</em> podczas klikania <em>Odśwież bieżącą stronę</em>, lub naciśnij klawisze <em>Ctrl+F5</em> lub <em>Ctrl+R</em> (<em>⌘-R</em> na komputerze Mac)\n* <strong>Google Chrome:</strong> Naciśnij <em>Ctrl-Shift-R</em> (<em>⌘-Shift-R</em> na komputerze Mac)\n* <strong>Internet Explorer:</strong> Przytrzymaj <em>Ctrl</em>, jednocześnie klikając <em>Odśwież</em>, lub naciśnij klawisze <em>Ctrl+F5</em>\n* <strong>Opera:</strong> Przejdź do <em>Menu → Ustawienia</em> (<em>Opera → Preferencje</em> w Mac), a następnie <em>Prywatność i bezpieczeństwo → Wyczyść dane przeglądania → Opróżnij pamięć podręczną</em>.", @@ -963,6 +959,7 @@ "mergehistory-fail-no-change": "Łączenie historii nie połączyło żadnych wersji. Proszę ponownie sprawdzić stronę i parametry czasowe.", "mergehistory-fail-permission": "Brak uprawnień, aby połączyć historię.", "mergehistory-fail-self-merge": "Strona źródłowa i docelowa są takie same.", + "mergehistory-fail-timestamps-overlap": "Wersje źródłowe pokrywają się lub są późniejsze niż wersja docelowa.", "mergehistory-fail-toobig": "Nie można połączyć historii, gdyż wymagałoby to przeniesienia więcej niż maksymalnej dopuszczalnej liczby $1 {{PLURAL:$1|wersji}}.", "mergehistory-no-source": "Strona źródłowa $1 nie istnieje.", "mergehistory-no-destination": "Strona docelowa $1 nie istnieje.", @@ -1022,6 +1019,7 @@ "search-interwiki-caption": "Projekty siostrzane", "search-interwiki-default": "Wyniki od $1:", "search-interwiki-more": "(więcej)", + "search-interwiki-more-results": "Więcej wyników", "search-relatedarticle": "Pokrewne", "searchrelated": "pokrewne", "searchall": "wszystkie", @@ -1111,6 +1109,7 @@ "youremail": "Twój adres e‐mail:", "username": "{{GENDER:$1|Nazwa użytkownika}}:", "prefs-memberingroups": "{{GENDER:$2|Członek}} {{PLURAL:$1|grupy|grup}}:", + "group-membership-link-with-expiry": "$1 (do $2)", "prefs-registration": "Data rejestracji:", "yourrealname": "Imię i nazwisko:", "yourlanguage": "Język interfejsu:", @@ -1154,8 +1153,8 @@ "userrights-user-editname": "Wprowadź nazwę użytkownika:", "editusergroup": "Wczytaj grupy użytkownika", "editinguser": "Zmiana uprawnień {{GENDER:$1|użytkownika|użytkowniczki}} <strong>[[User:$1|$1]]</strong> $2", - "viewinguserrights": "Przeglądanie grup do których należy {{GENDER:$1|użytkownik|użytkowniczka}} <strong>[[User:$1|$1]]</strong> $2", - "userrights-editusergroup": "Edytuj grupy użytkownika", + "viewinguserrights": "Przeglądanie grup, do których należy {{GENDER:$1|użytkownik|użytkowniczka}} <strong>[[User:$1|$1]]</strong> $2", + "userrights-editusergroup": "Edytuj grupy {{GENDER:$1|użytkownika|użytkowniczki}}", "userrights-viewusergroup": "Przeglądanie grup {{GENDER:$1|użytkownika|użytkowniczki}}", "saveusergroups": "Zapisz grupy {{GENDER:$1|użytkownika|użytkowniczki}}", "userrights-groupsmember": "Należy do:", @@ -1166,6 +1165,14 @@ "userrights-nodatabase": "Baza danych $1 nie istnieje lub nie jest lokalna.", "userrights-changeable-col": "Grupy, które możesz wybrać", "userrights-unchangeable-col": "Grupy, których nie możesz wybrać", + "userrights-expiry-current": "wygasa $1", + "userrights-expiry-none": "Bezterminowo", + "userrights-expiry": "Czas wygaśnięcia:", + "userrights-expiry-existing": "Obecny czas wygaśnięcia: $2 o $3", + "userrights-expiry-othertime": "Inny termin:", + "userrights-expiry-options": "1 dzień:1 day,1 tydzień:1 week,1 miesiąc:1 month,3 miesiące:3 months,6 miesięcy:6 months,1 rok:1 year", + "userrights-invalid-expiry": "Termin przynależności do grupy „$1“ jest nieprawidłowy.", + "userrights-expiry-in-past": "Termin przynależności do grupy „$1“ jest z przeszłości.", "userrights-conflict": "Konflikt zmiany uprawnień użytkownika! Proszę sprawdzić i potwierdzić swoje zmiany.", "group": "Grupa:", "group-user": "Użytkownicy", @@ -1261,6 +1268,7 @@ "right-applychangetags": "Wprowadzanie [[Special:Tags|znaczników]] wraz z własnymi zmianami", "right-changetags": "Dodawanie i usuwanie dowolnych [[Special:Tags|znaczników]] z poszczególnych wersji i wpisów w rejestrze", "right-deletechangetags": "Usuwanie [[Special:Tags|znaczników]] z bazy danych", + "grant-generic": "zestaw uprawnień „$1“", "grant-group-page-interaction": "Interakcja ze stronami", "grant-group-file-interaction": "Interakcja z plikami multimedialnymi", "grant-group-watchlist-interaction": "Interakcja z listą obserwowanych", @@ -1292,6 +1300,7 @@ "grant-basic": "Podstawowe uprawnienia", "grant-viewdeleted": "Wyświetlanie usuniętych plików i stron", "grant-viewmywatchlist": "Zobacz swoją listę obserwowanych", + "grant-viewrestrictedlogs": "Przeglądanie zastrzeżonych wpisów w rejestrach", "newuserlogpage": "Nowi użytkownicy", "newuserlogpagetext": "To jest rejestr ostatnio utworzonych kont użytkowników", "rightslog": "Uprawnienia", @@ -1365,19 +1374,53 @@ "recentchanges-legend-plusminus": "(''±123'')", "recentchanges-submit": "Pokaż", "rcfilters-activefilters": "Aktywne filtry", + "rcfilters-restore-default-filters": "Przywrócić domyślne filtry", + "rcfilters-clear-all-filters": "Wyczyść filtry", + "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-feedbacklink": "Podziel się swoją opinią na temat tych nowych (beta) filtrów", + "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-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-filtergroup-authorship": "Autorstwo edycji", "rcfilters-filter-editsbyself-label": "Moje edycje", "rcfilters-filter-editsbyself-description": "Edycje dokonane przez Ciebie.", "rcfilters-filter-editsbyother-label": "Edycje inne niż Twoje", - "rcfilters-filter-editsbyother-description": "Edycje wykonane przez innych niż Ty.", - "rcfilters-filtergroup-userExpLevel": "Poziomu doświadczenia użytkownika", - "rcfilters-filter-userExpLevel-newcomer-label": "Początkujący", - "rcfilters-filter-userExpLevel-newcomer-description": "Nowi edytujący: mniej niż 10 edycji i 4 dni aktywności.", - "rcfilters-filter-userExpLevel-learner-label": "Uczący się", - "rcfilters-filter-userExpLevel-learner-description": "Więcej dni aktywności i edycji niż 'Nowicjusze', ale mniej niż 'Doświadczeni użytkownicy.'", - "rcfilters-filter-userExpLevel-experienced-label": "Doświadczeni użytkownicy", - "rcfilters-filter-userExpLevel-experienced-description": "Ponad 30 dni aktywności i 500 edycji.", + "rcfilters-filter-editsbyother-description": "Edycje wykonane przez innych (nie Twoje).", + "rcfilters-filtergroup-userExpLevel": "Poziom doświadczenia (tylko dla zarejestrowanych użytkowników)", + "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-learner-label": "Uczący się", + "rcfilters-filter-user-experience-level-learner-description": "Więcej dni aktywności i edycji niż „Nowicjusze”, ale mniej niż „Doświadczeni użytkownicy”.", + "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-filtergroup-automated": "Zmiany zautomatyzowane", + "rcfilters-filter-bots-label": "Bot", + "rcfilters-filter-bots-description": "Zmiany wykonane z użyciem zautomatyzowanych narzędzi.", + "rcfilters-filter-humans-label": "Człowiek (nie bot)", + "rcfilters-filter-humans-description": "Zmiany wprowadzone przez ludzi.", + "rcfilters-filtergroup-significance": "Znaczenie", + "rcfilters-filter-minor-label": "Drobne zmiany", + "rcfilters-filter-minor-description": "Zmiany, które autor oznaczył jako drobne.", + "rcfilters-filter-major-label": "Zmiany nie oznaczone jako drobne", + "rcfilters-filter-major-description": "Zmiany nie oznaczone jako drobne.", + "rcfilters-filtergroup-changetype": "Rodzaj zmiany", + "rcfilters-filter-pageedits-label": "Edycje strony", + "rcfilters-filter-pageedits-description": "Edycje treści, stron dyskusji, opisów kategorii...", + "rcfilters-filter-newpages-label": "Tworzenie stron", + "rcfilters-filter-newpages-description": "Zmiany prowadzące do utworzenia nowych stron.", + "rcfilters-filter-categorization-label": "Zmiany kategorii", + "rcfilters-filter-categorization-description": "Dodanie lub usunięcie strony z kategorii", + "rcfilters-filter-logactions-label": "Działania rejestrowane", + "rcfilters-filter-logactions-description": "Działania administracyjne, tworzenie kont, usuwanie stron, przesyłanie plików...", "rcnotefrom": "Poniżej {{PLURAL:$5|pokazano zmianę|pokazano zmiany}} {{PLURAL:$5|wykonaną|wykonane}} po <strong>$3, $4</strong> (nie więcej niż '''$1''' pozycji).", "rclistfrom": "Pokaż nowe zmiany od $3 $2", "rcshowhideminor": "$1 drobne edycje", @@ -1511,7 +1554,7 @@ "uploaded-setting-handler-svg": "SVG ustawiające atrybut \"handler\" z zdalnymi elementami/danymi/skryptami są blokowane. Znaleziono <code>$1=\"$2\"</code> w przesyłanym pliku SVG.", "uploaded-remote-url-svg": "SVG, które ustawiają w dowolnym atrybucie stylu zdalne URL, są blokowane. Znaleziono <code>$1=\"$2\"</code> w przesyłanym pliku SVG.", "uploaded-image-filter-svg": "Znaleziono filtr obrazu zawierający URL: <code><$1 $2=\"$3\"></code> w przesyłanym pliku SVG.", - "uploadscriptednamespace": "Ten plik SVG zawiera niedozwoloną przestrzeń nazw '$1'", + "uploadscriptednamespace": "Ten plik SVG zawiera niedozwoloną przestrzeń nazw „<nowiki>$1</nowiki>”.", "uploadinvalidxml": "Nie udało się przeanalizować XML w załadowanym pliku.", "uploadvirus": "W pliku jest wirus! Szczegóły: $1", "uploadjava": "Ten plik zawiera deklarację klasy Java skompresowaną ZIP.\nPrzesyłanie plików Java nie jest dozwolone, ponieważ mogłoby zostać użyte do obchodzenia zabezpieczeń.", @@ -1601,7 +1644,7 @@ "zip-file-open-error": "Wystąpił błąd podczas otwierania pliku ZIP, aby go sprawdzić.", "zip-wrong-format": "Wybrany plik nie jest w formacie ZIP.", "zip-bad": "Plik ZIP jest uszkodzony lub w inny sposób niemożliwy do odczytania. \nNie może zostać odpowiednio sprawdzony pod kątem bezpieczeństwa.", - "zip-unsupported": "Plik jest w formacie ZIP ale wykorzystuje funkcje, które nie są obsługiwane przez MediaWiki.\nPlik nie może zostać odpowiednio sprawdzony pod kątem bezpieczeństwa.", + "zip-unsupported": "Plik jest w formacie ZIP, ale wykorzystuje funkcje, które nie są obsługiwane przez MediaWiki.\nPlik nie może zostać odpowiednio sprawdzony pod kątem bezpieczeństwa.", "uploadstash": "Schowek z przesłanymi plikami", "uploadstash-summary": "Ta strona umożliwia dostęp do przesłanych lub właśnie przesyłanych plików, ale jeszcze nie opublikowanych na wiki. Pliki widzi wyłącznie użytkownik, które je przesłał.", "uploadstash-clear": "Wyczyść schowek z plikami", @@ -1610,6 +1653,7 @@ "uploadstash-errclear": "Czyszczenie plików nie powiodło się.", "uploadstash-refresh": "Odśwież listę plików", "uploadstash-thumbnail": "pokaż miniaturkę", + "uploadstash-exception": "Nie udało się zapisać przesyłanego pliku w magazynie tymczasowym ($1): „$2”.", "invalid-chunk-offset": "Nieprawidłowe przesunięcie fragmentu", "img-auth-accessdenied": "Odmowa dostępu", "img-auth-nopathinfo": "Brak PATH_INFO.\nSerwer nie został skonfigurowany, tak aby przekazywał tę informację.\nMożliwe, że jest oparty na CGI i nie może obsługiwać img_auth.\nWięcej o informacji o autoryzacji grafik na https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Image_Authorization.", @@ -1887,8 +1931,10 @@ "apisandbox-sending-request": "Wysyłanie zapytania API…", "apisandbox-loading-results": "Pobieranie wyników API...", "apisandbox-results-error": "Wystąpił błąd podczas pobierania odpowiedzi na zapytanie API: $1.", - "apisandbox-request-params-json": "Parametry JSON:", + "apisandbox-request-selectformat-label": "Pokaż dane z zapytania jako:", + "apisandbox-request-format-url-label": "zapytanie w adresie URL", "apisandbox-request-url-label": "URL zapytania:", + "apisandbox-request-json-label": "Zapytanie JSON:", "apisandbox-request-time": "Czas przetwarzania zapytania: {{PLURAL:$1|$1 ms}}", "apisandbox-results-fixtoken": "Popraw token i wyślij ponownie", "apisandbox-results-fixtoken-fail": "Nie udało się pobrać tokena „$1”.", @@ -2029,7 +2075,7 @@ "emailccsubject": "Kopia Twojej wiadomości do $1: $2", "emailsent": "Wiadomość została wysłana", "emailsenttext": "Twoja wiadomość została wysłana.", - "emailuserfooter": "Ten e-mail został {{GENDER:$1|wysłany}} z {{GRAMMAR:D.lp|{{SITENAME}}}} do {{GENDER:$2|$2}} przez $1 przy użyciu funkcji „{{int:emailuser}}”. {{GENDER:$2|Twoja}} odpowiedź na ten e-mail zostanie wysłana do {{GENDER:$1|oryginalnego nadawcy}}, a {{GENDER:$2|Twój}} adres e-mail zostanie {{GENDER:$1|mu|jej}} ujawniony.", + "emailuserfooter": "Ten e-mail został {{GENDER:$1|wysłany}} z {{GRAMMAR:D.lp|{{SITENAME}}}} do {{GENDER:$2|$2}} przez $1 przy użyciu funkcji „{{int:emailuser}}”. Jeśli wyślesz odpowiedź na ten e-mail do {{GENDER:$1|oryginalnego nadawcy}}, wówczas {{GENDER:$2|Twój}} adres e-mail zostanie {{GENDER:$1|mu|jej}} ujawniony.", "usermessage-summary": "Pozostawianie komunikatu systemowego.", "usermessage-editor": "Nadawca komunikatów systemowych", "watchlist": "Obserwowane", @@ -2127,7 +2173,7 @@ "editcomment": "Edycję opisał: <em>$1</em>.", "revertpage": "Wycofano edycje użytkownika [[Special:Contributions/$2|$2]] ([[User talk:$2|dyskusja]]). Autor przywróconej wersji to [[User:$1|$1]].", "revertpage-nouser": "Wycofano edycje ukrytego użytkownika. Autor przywróconej wersji to {{GENDER:$1|[[User:$1|$1]]}}.", - "rollback-success": "Wycofano edycje użytkownika $1;\nprzywrócono ostatnią wersję autorstwa $2.", + "rollback-success": "Wycofano edycje {{GENDER:$3|użytkownika|użytkowniczki}} $1;\nprzywrócono ostatnią wersję autorstwa {{GENDER:$4|$2}}.", "rollback-success-notify": "Wycofano edycje użytkownika $1;\nprzywrócono ostatnią wersję autorstwa $2. [$3 Pokaż zmiany]", "sessionfailure-title": "Błąd sesji", "sessionfailure": "Wystąpił problem z weryfikacją zalogowania.\nPolecenie zostało anulowane, aby uniknąć przechwycenia sesji.\nNaciśnij „wstecz” w przeglądarce, przeładuj stronę, po czym ponownie wydaj polecenie.", @@ -2611,11 +2657,11 @@ "tooltip-p-logo": "Strona główna", "tooltip-n-mainpage": "Zobacz stronę główną", "tooltip-n-mainpage-description": "Przejdź na stronę główną", - "tooltip-n-portal": "O projekcie, co możesz zrobić, gdzie możesz znaleźć informacje", + "tooltip-n-portal": "O projekcie - co możesz zrobić, gdzie możesz znaleźć informacje", "tooltip-n-currentevents": "Informacje o aktualnych wydarzeniach", - "tooltip-n-recentchanges": "Lista ostatnich zmian na {{GRAMMAR:MS.lp|{{SITENAME}}}}.", + "tooltip-n-recentchanges": "Lista ostatnich zmian w {{GRAMMAR:MS.lp|{{SITENAME}}}}.", "tooltip-n-randompage": "Załaduj losową stronę", - "tooltip-n-help": "Tutaj możesz się dowiedzieć wielu rzeczy.", + "tooltip-n-help": "Tutaj możesz dowiedzieć się wielu rzeczy.", "tooltip-t-whatlinkshere": "Pokaż listę wszystkich stron linkujących do tej strony", "tooltip-t-recentchangeslinked": "Ostatnie zmiany w stronach, do których ta strona linkuje", "tooltip-feed-rss": "Kanał RSS dla tej strony", @@ -3184,6 +3230,9 @@ "confirmemail_invalidated": "Potwierdzenie adresu e‐mail zostało anulowane", "invalidateemail": "Anulowanie potwierdzenia adresu e‐mail", "notificationemail_subject_changed": "Został zmieniony zarejestrowany adres e-mail na {{SITENAME}}", + "notificationemail_subject_removed": "Zarejestrowany adres e-mail w {{GRAMMAR:MS.lp|SITENAME}} został usunięty", + "notificationemail_body_changed": "Ktoś, najprawdopodobniej Ty, z adresu IP $1,\nzmienił adres e-mail przypisany do konta „$2” na „$3” w {{GRAMMAR:MS.lp|{{SITENAME}}}}.\n\nJeżeli nie zostało to zrobione przez Ciebie, skontaktuj się niezwłocznie z administratorem.", + "notificationemail_body_removed": "Ktoś, najprawdopodobniej Ty, z adresu IP $1,\nusunął adres e-mail przypisany do konta „$2” w {{GRAMMAR:MS.lp|{{SITENAME}}}}.\n\nJeżeli nie zostało to zrobione przez Ciebie, skontaktuj się niezwłocznie z administratorem.", "scarytranscludedisabled": "[Transkluzja przez interwiki jest wyłączona]", "scarytranscludefailed": "[Pobranie szablonu dla $1 nie powiodło się]", "scarytranscludefailed-httpstatus": "[Pobranie szablonu dla $1 nie powiodło się: HTTP $2]", @@ -3331,7 +3380,7 @@ "version-software": "Zainstalowane oprogramowanie", "version-software-product": "Nazwa", "version-software-version": "Wersja", - "version-entrypoints": "Adres URL punktu wejścia", + "version-entrypoints": "Adresy URL punktów wejścia", "version-entrypoints-header-entrypoint": "Punkt wejścia", "version-entrypoints-header-url": "URL", "version-libraries": "Zainstalowane biblioteki", @@ -3588,7 +3637,7 @@ "logentry-tag-update-revision": "$1 {{GENDER:$2|zmienił|zmieniła}} znaczniki w wersji $4 strony $3 ({{PLURAL:$7|dodano}} $6; {{PLURAL:$9|usunięto}} $8)", "logentry-tag-update-logentry": "$1 {{GENDER:$2|zmienił|zmieniła}} znaczniki we wpisie w rejestrze $5 strony $3 ({{PLURAL:$7|dodano}} $6; {{PLURAL:$9|usunięto}} $8)", "rightsnone": "brak", - "revdelete-summary": "opis zmian", + "rightslogentry-temporary-group": "$1 (tymczasowo, do $2)", "feedback-adding": "Dodawanie opinii do strony...", "feedback-back": "Wstecz", "feedback-bugcheck": "Świetnie! Tylko sprawdź, czy nie jest to jeden z już [$1 znanych błędów].", @@ -3613,56 +3662,12 @@ "feedback-useragent": "Aplikacja klienta:", "searchsuggest-search": "Przeszukaj {{GRAMMAR:B.lp|{{SITENAME}}}}", "searchsuggest-containing": "zawierające...", - "api-error-autoblocked": "Twój adres IP został automatycznie zablokowany, ponieważ był używany przez zablokowanego użytkownika.", - "api-error-badaccess-groups": "Nie masz uprawnień aby przesyłać pliki do tej wiki.", "api-error-badtoken": "Błąd wewnętrzny – nieprawidłowy kod weryfikacyjny (token).", - "api-error-blocked": "Została ci zablokowana możliwość edycji.", - "api-error-copyuploaddisabled": "Przesyłanie poprzez podanie adresu URL zostało na tym serwerze wyłączone.", - "api-error-duplicate": "{{PLURAL:$1|Jest już inny plik|Są już inne pliki}} na tej stronie o tej samej zawartości.", - "api-error-duplicate-archive": "{{PLURAL:$1|Był już inny plik|Były już inne pliki}} na tej stronie o takiej samej zawartości, ale {{PLURAL:$1|został usunięty|zostały usunięte}}.", - "api-error-empty-file": "Przesłany przez Ciebie plik jest pusty.", "api-error-emptypage": "Tworzenie nowych, pustych stron jest niedozwolone.", - "api-error-fetchfileerror": "Błąd wewnętrzny – wystąpił błąd w trakcie pobierania pliku.", - "api-error-fileexists-forbidden": "Plik o nazwie \"$1\" już istnieje i nie może być nadpisany.", - "api-error-fileexists-shared-forbidden": "Plik o nazwie \"$1\" już istnieje we współdzielonym repozytorium i nie może być nadpisany.", - "api-error-file-too-large": "Przesłany przez Ciebie plik jest zbyt duży.", - "api-error-filename-tooshort": "Nazwa pliku jest zbyt krótka.", - "api-error-filetype-banned": "Zabroniony format pliku.", - "api-error-filetype-banned-type": "$1 nie {{PLURAL:$4|jest dozwolonym typem pliku|są dozwolonymi typami plików}}. Dopuszczalne są pliki w {{PLURAL:$3|formacie|formatach}} $2.", - "api-error-filetype-missing": "Brak rozszerzenia w nazwie pliku.", - "api-error-hookaborted": "Zmiana, którą próbowałeś wykonać została przerwana przez hak rozszerzenia.", - "api-error-http": "Błąd wewnętrzny – brak połączenia z serwerem.", - "api-error-illegal-filename": "Niedopuszczalna nazwa pliku.", - "api-error-internal-error": "Błąd wewnętrzny – wystąpił błąd w trakcie przetwarzania przesłanego pliku.", - "api-error-invalid-file-key": "Błąd wewnętrzny – nie można odnaleźć pliku w wśród plików tymczasowych.", - "api-error-missingparam": "Błąd wewnętrzny – brak jest niektórych wymaganych informacji do realizacji przesłania.", - "api-error-missingresult": "Błąd wewnętrzny – nie można określić czy kopiowanie się udało.", - "api-error-mustbeloggedin": "Aby przesyłać pliki, musisz się zalogować.", - "api-error-mustbeposted": "Wystąpił błąd w oprogramowaniu. Nie użyto właściwej metody HTTP.", - "api-error-noimageinfo": "Plik przesłano pomyślnie, ale serwer nie zwrócił informacji na jego temat.", - "api-error-nomodule": "Błąd wewnętrzny – nie określono modułu przesyłania plików.", - "api-error-ok-but-empty": "Błąd wewnętrzny – brak odpowiedzi od serwera.", - "api-error-overwrite": "Nadpisanie istniejącego pliku nie jest dopuszczalne.", - "api-error-ratelimited": "Próbujesz przesłać więcej plików w krótszym odstępie czasowym, niż ta wiki na to pozwala.\nSpróbuj jeszcze raz za kilka minut.", - "api-error-stashfailed": "Błąd wewnętrzny – serwer nie mógł zapisać pliku tymczasowego.", "api-error-publishfailed": "Błąd wewnętrzny: serwer nie mógł zapisać pliku tymczasowego.", - "api-error-stasherror": "Wystąpił błąd podczas przesyłania pliku.", - "api-error-stashedfilenotfound": "Nie odnaleziono pliku podczas próby pobrania go ze schowka.", - "api-error-stashpathinvalid": "Ścieżka do pliku zapasowego jest błędna.", - "api-error-stashfilestorage": "Wystąpił błąd podczas przesyłania pliku do archiwum.", - "api-error-stashzerolength": "Serwer nie może zapisać pliku zapasowego do archiwum, gdyż ma on zerową długość.", - "api-error-stashnotloggedin": "Musisz się zalogować, aby móc zapisać plik zapasowy do archiwum.", - "api-error-stashwrongowner": "Plik w archiwum, do którego próbujesz uzyskać dostęp, nie należy do Ciebie.", - "api-error-stashnosuchfilekey": "Klucz zbioru w archiwum, do którego próbujesz uzyskać dostęp, nie należy do Ciebie.", - "api-error-timeout": "Serwer nie odpowiedział w spodziewanym czasie.", - "api-error-unclassified": "Wystąpił nieznany błąd", - "api-error-unknown-code": "Błąd nieznany – „$1”", - "api-error-unknown-error": "Błąd wewnętrzny – wysŧapił nierozpoznany błąd w trakcie próby przesłania pliku.", + "api-error-stashfailed": "Błąd wewnętrzny – serwer nie mógł zapisać pliku tymczasowego.", "api-error-unknown-warning": "Nieznane ostrzeżenie: „$1”.", "api-error-unknownerror": "Nieznany błąd: „$1”", - "api-error-uploaddisabled": "Na tej wiki przesyłanie zostało wyłączone.", - "api-error-verification-error": "Plik może być uszkodzony lub nazwa pliku ma nieprawidłowe rozszerzenie.", - "api-error-was-deleted": "Plik o tej nazwie już istniał, ale został usunięty.", "duration-seconds": "$1 {{PLURAL:$1|sekunda|sekundy|sekund}}", "duration-minutes": "$1 {{PLURAL:$1|minuta|minuty|minut}}", "duration-hours": "$1 {{PLURAL:$1|godzina|godziny|godzin}}", @@ -3784,6 +3789,7 @@ "mw-widgets-titleinput-description-new-page": "strona jeszcze nie istnieje", "mw-widgets-titleinput-description-redirect": "przekierowanie do $1", "mw-widgets-categoryselector-add-category-placeholder": "Dodaj kategorię...", + "mw-widgets-usersmultiselect-placeholder": "Dodaj więcej...", "sessionmanager-tie": "Nie można łączyć kilku rodzajów uwierzytelniania dla zapytania: $1.", "sessionprovider-generic": "sesje $1", "sessionprovider-mediawiki-session-cookiesessionprovider": "sesje na podstawie cookie", @@ -3871,19 +3877,27 @@ "authform-newtoken": "Brakujący token. $1", "authform-notoken": "Brakujący token", "authform-wrongtoken": "Nieprawidłowy token", + "specialpage-securitylevel-not-allowed-title": "Brak dostępu", "specialpage-securitylevel-not-allowed": "Niestety, nie możesz korzystać z tej strony, ponieważ twoja tożsamość nie może zostać zweryfikowana.", "authpage-cannot-login": "Nie można uruchomić logowania.", "authpage-cannot-login-continue": "Nie można kontynuować logowania. Sesja najprawdopodobniej wygasła.", "authpage-cannot-create": "Nie można rozpocząć tworzenie konta.", "authpage-cannot-create-continue": "Nie można kontynuować tworzenia konta. Twoja sesja najprawdopodobniej wygasła.", + "authpage-cannot-link": "Nie udało się rozpocząć dowiązania konta.", "cannotauth-not-allowed-title": "Brak dostępu", "cannotauth-not-allowed": "Nie masz uprawnień, aby skorzystać z tej strony", "changecredentials": "Zmiana poświadczeń", "changecredentials-submit": "Zmień poświadczenie", + "changecredentials-invalidsubpage": "$1 nie jest prawidłowym typem uwierzytelnienia.", + "changecredentials-success": "Twoje dane zostały zmienione.", "removecredentials": "Usuwanie poświadczeń", "removecredentials-submit": "Usuń poświadczenie", + "removecredentials-invalidsubpage": "$1 nie jest prawidłowym typem danych logowania.", + "removecredentials-success": "Twoje dane zostały usunięte.", "credentialsform-provider": "Rodzaj poświadczeń:", "credentialsform-account": "Nazwa konta:", + "cannotlink-no-provider-title": "Brak kont możliwych do przyłączenia", + "cannotlink-no-provider": "Brak kont możliwych do przyłączenia.", "linkaccounts": "Połącz konta", "linkaccounts-success-text": "Konto zostało połączone.", "linkaccounts-submit": "Połącz konta", @@ -3893,7 +3907,7 @@ "usercssispublic": "Uwaga: Podstrony z kodem CSS są widoczne publicznie i nie powinny zawierać poufnych danych.", "restrictionsfield-badip": "Nieprawidłowy adres IP lub zakres adresów: $1", "restrictionsfield-label": "Dozwolone zakresy adresów IP:", - "restrictionsfield-help": "Jeden adres IP lub zakres CIDR w wierszu. Aby zaznaczyć wszystkie, użyj<br><code>0.0.0.0/0</code><br><code>::/0</code>", + "restrictionsfield-help": "Jeden adres IP lub zakres CIDR w wierszu. Aby zaznaczyć wszystkie, użyj:<pre>0.0.0.0/0\n::/0</pre>", "revid": "wersja $1", "pageid": "ID strony: $1" } diff --git a/languages/i18n/pms.json b/languages/i18n/pms.json index fe7db1769a..5ac7c991ec 100644 --- a/languages/i18n/pms.json +++ b/languages/i18n/pms.json @@ -521,8 +521,6 @@ "passwordreset-emaildisabled": "Le fonsionalità ëd pòsta eletrònica a son ëstàite disativà su sta wiki.", "passwordreset-username": "Stranòm:", "passwordreset-domain": "Domini:", - "passwordreset-capture": "Vëdde ël mëssagi arzultant?", - "passwordreset-capture-help": "S'a marca costa casela, ël mëssagi ëd pòsta eletrònica (con la ciav provisòria) a-j sarà smonù e ant l'istess temp a sarà mandà a l'utent.", "passwordreset-email": "Adrëssa ëd pòsta eletrònica:", "passwordreset-emailtitle": "Detaj dël cont ansima a {{SITENAME}}", "passwordreset-emailtext-ip": "Quaidun (a l'é bel fé ch'a sia chiel, da l'adrëssa IP $1) a l'ha ciamà na riampostassion ëd soa ciav për {{SITENAME}} ($4). {{PLURAL:$3|Ël cont utent sì-sota a l'é|Ij cont utent sì-sota a son}} \nassocià a st'adrëssa ëd pòsta eletrònica:\n\n$2\n\n{{PLURAL:$3|Costa ciav provisòria|Coste ciav provisòrie}} a scadran da-sì {{PLURAL:$5|un di|$5 di}}.\nA dovrìa intré ant ël sistema e serne na ciav neuva adess. Se quaidun d'àutr a l'ha fàit costa arcesta, o s'a l'é arcordasse soa ciav original, e a veul pa pi cangela, a peule ignoré ës mëssagi e continué a dovré soa veja ciav.", @@ -920,8 +918,6 @@ "saveprefs": "Salvé ij sò gust", "restoreprefs": "Buté torna j'ampostassion dë stàndard (an tute le session)", "prefs-editing": "Quàder ëd modìfica dël test", - "rows": "Righe:", - "columns": "Colòne:", "searchresultshead": "Specifiché soe preferense d'arserca", "stub-threshold": "Valor mìnim për buté an forma j'anliure dë sbòss ($1):", "stub-threshold-sample-link": "esempi", @@ -1014,13 +1010,10 @@ "userrights-reason": "Rason:", "userrights-no-interwiki": "A l'ha pa ij përmess dont a fa da manca për podèj cambieje ij drit a dj'utent ansima a dj'àutre wiki.", "userrights-nodatabase": "La base ëd dat $1 a-i é pa, ò pura a l'é nen local.", - "userrights-nologin": "A l'ha da [[Special:UserLogin|rintré ant ël sistema]] con un cont da aministrator për podej-je dé dij drit a j'utent.", - "userrights-notallowed": "Chiel a l'ha pa ij përmess për dé o gavé dij drit a j'utent.", "userrights-changeable-col": "Partìe ch'a peul cambié", "userrights-unchangeable-col": "Partìe ch'a peul pa cambié", "userrights-irreversible-marker": "$1*", "userrights-conflict": "Conflit ëd modìfica ëd drit utent! Për piasì, ch'a lesa torna e ch'a confirma soe modìfiche.", - "userrights-removed-self": "A l'ha gavà për da bin ij sò drit. Parèj a peul pa pi acede a costa pàgina.", "group": "Partìa:", "group-user": "Utent", "group-autoconfirmed": "Utent ch'a son convalidasse daspërlor", @@ -1110,7 +1103,6 @@ "right-siteadmin": "Bloché e dësbloché la base ëd dàit", "right-override-export-depth": "Esporté le pàgine ancludend le pàgine colegà fin-a a na profondeur ëd 5", "right-sendemail": "Mandé un mëssagi an pòsta eletrònica a j'àutri utent", - "right-passwordreset": "Vëdde ij mëssagi ëd pòsta eletrònica ëd riampostassion dle ciav", "right-managechangetags": "Creé e dëscancelé dle [[Special:Tags|tichëtte]] da la base ëd dàit", "right-applychangetags": "Apliché [[Special:Tags|le tichëtte]] con soe pròpie modìfiche", "right-changetags": "Gionté e gavé dle [[Special:Tags|tichëtte]] qualsëssìa an s'dle revision andividuaj e dle vos d'argistr", @@ -1297,7 +1289,7 @@ "uploaded-animate-svg": "Trovà na tichëtta «animate», ch'a podrìa modifiché ël href an dovrand l'atribù «from» <code><$1 $2=\"$3\"></code> ant l'archivi SVG carià.", "uploaded-setting-event-handler-svg": "Ël posissionament dj'atribù ëd mansé a l'é blocà, <code><$1 $2=\"$3\"></code> trovà ant l'archivi SVG carià.", "uploaded-setting-href-svg": "L’usage dla tichëtta «set» për gionté n'atribù «href» a l’element pare a l'é blocà.", - "uploadscriptednamespace": "S'archivi SVG a conten në spassi nominal «$1» nen autorisà", + "uploadscriptednamespace": "S'archivi SVG a conten në spassi nominal «<nowiki>$1</nowiki>» nen autorisà", "uploadinvalidxml": "L'XML ant l'archivi carià a l'ha nen podù esse analisà.", "uploadvirus": "St'archivi-sì a l'han andrinta un '''vìrus!''' Detaj: $1", "uploadjava": "L'archivi a l'é n'archivi ZIP ch'a conten n'archivi Java .class.\nAs peulo pa cariesse dj'archivi Java, përché a peulo causé l'agirament ëd le restrission ëd sicurëssa.", @@ -3182,52 +3174,12 @@ "feedback-useragent": "Agent d'utent:", "searchsuggest-search": "Arserché", "searchsuggest-containing": "contenent ...", - "api-error-badaccess-groups": "Chiel a peul pa carié d'archivi su costa wiki.", "api-error-badtoken": "Eror antern: sìmbol pa bon.", - "api-error-copyuploaddisabled": "Le carie a travers ëd liure a son disabilità ansima a cost servent.", - "api-error-duplicate": "A-i {{PLURAL:$1|é n'àutr archivi|son àutri archivi}} già an sël sit col ël midem contnù.", - "api-error-duplicate-archive": "A-i {{PLURAL:$1|era n'àutr archivi|ero àutri archivi}} già an sël sit con ël midem contnù, ma {{PLURAL:$1|a l'é stàit|a son ëstàit}} ëscancelà.", - "api-error-empty-file": "L'archivi ch'a l'ha mandà a l'era veuid.", "api-error-emptypage": "La creassion ëd pàgine neuve veujde a l'é nen përmëttùa.", - "api-error-fetchfileerror": "Eror antern: quaicòs a l'é andàit mal antramentre ch'as arcuperava l'archivi.", - "api-error-fileexists-forbidden": "N'archivi con nòm «$1» a esist già, e a peul pa esse dzorascrivù.", - "api-error-fileexists-shared-forbidden": "N'archivi con nòm «$1» a esist già ant ël depòsit condivis ëd j'archivi, e a peul pa esse dzorascrivù.", - "api-error-file-too-large": "L'archivi ch'a l'ha mandà a l'era tròp gròss.", - "api-error-filename-tooshort": "Ël nòm ëd l'archivi a l'é tròp curt.", - "api-error-filetype-banned": "Costa sòrt d'archivi a l'é proibìa.", - "api-error-filetype-banned-type": "$1 {{PLURAL:$4|a l'é na sòrt d'archivi proibìa|a son ëd sòrt d'archivi proibìe}}. {{PLURAL:$3|La sòrt d'archivi consentìa a l'é|Le sòrt d'archivi consentìe a son}} $2.", - "api-error-filetype-missing": "L'archivi a l'é sensa estension.", - "api-error-hookaborted": "La modìfica ch'a l'ha provà a fé a l'é stàita blocà dal gancio ëd n'estension.", - "api-error-http": "Eror antern: As peul pa coleghesse al servent.", - "api-error-illegal-filename": "Ël nòm dl'archivi a l'é nen consentì.", - "api-error-internal-error": "Eror antern: Cheicòs a l'é andàit mal con ël tratament ëd soa amportassion an sla wiki.", - "api-error-invalid-file-key": "Eror antern: archivi pa trovà ant la memòria a temp.", - "api-error-missingparam": "Eror antern: paràmetr mancant ant l'arcesta.", - "api-error-missingresult": "Eror antern: as peul pa determiné se la còpia a l'é andàita bin.", - "api-error-mustbeloggedin": "A dev esse intrà ant ël sistema për carié dj'archivi.", - "api-error-mustbeposted": "Eror antern: L'arcesta a l'ha da manca d'HTTP POST.", - "api-error-noimageinfo": "Ël cariament a l'é andàit bin, ma ël servent a l'ha dane gnun-e anformassion an sl'archivi.", - "api-error-nomodule": "Eror antern: gnun mòdoj ëd caria ampostà.", - "api-error-ok-but-empty": "Eror antern: Gnun-a rispòsta dal servent.", - "api-error-overwrite": "Dzorascrive ansima a n'archivi esistent a l'é nen përmëttù.", - "api-error-stashfailed": "Eror antern: ël servent a l'ha pa podù memorisé l'archivi a temp.", "api-error-publishfailed": "Eror antern: Ël servent a l'ha pa podù publiché l'archivi provisòri.", - "api-error-stasherror": "A-i é staje n'eror durant ël cariament dl'archivi da stërmé.", - "api-error-stashedfilenotfound": "L'archivi stërmà a l'é nen trovasse durant ël tentativ ëd carielo da sò strem.", - "api-error-stashpathinvalid": "Ël përcors anté ch'a l'avrìa dovù trovesse l'archivi stërmà a l'era nen bon.", - "api-error-stashfilestorage": "A-ié staje n'eror an rangiand l'archivi an sò strem.", - "api-error-stashzerolength": "Ël servent a l'ha nen podù stërmé l'archivi, përchè a l'era ëd taja nula.", - "api-error-stashnotloggedin": "A dev esse rintrà ant ël sistema për argistré dj'archivi ant lë strem ëd cariament.", - "api-error-stashwrongowner": "L'archivi al qual a sërcava d'acede ant lë strem a l'é nen sò.", - "api-error-stashnosuchfilekey": "La ciav dl'archivi al qual a sërcava d'acede ant lë strem a esist pa.", - "api-error-timeout": "Ël servent a l'ha pa rëspondù ant ël temp ëspetà.", - "api-error-unclassified": "A l'é capitaje n'eror nen conossù.", - "api-error-unknown-code": "Eror sconossù: «$1».", - "api-error-unknown-error": "Eror antern: Cheicòs a l'é andàit mal quand a l'é provasse a carié sò archivi.", + "api-error-stashfailed": "Eror antern: ël servent a l'ha pa podù memorisé l'archivi a temp.", "api-error-unknown-warning": "Avis pa conossù: $1", "api-error-unknownerror": "Eror sconossù: «$1».", - "api-error-uploaddisabled": "Ël cariagi a l'é disabilità su sta wiki.", - "api-error-verification-error": "Cost archivi a peul esse danegià, o avèj l'estension sbalià.", "duration-seconds": "$1 {{PLURAL:$1|second|second}}", "duration-minutes": "$1 {{PLURAL:$1|minuta|minute}}", "duration-hours": "$1 {{PLURAL:$1|ora|ore}}", diff --git a/languages/i18n/pnb.json b/languages/i18n/pnb.json index 33d0afe4a4..e90c9ed4c2 100644 --- a/languages/i18n/pnb.json +++ b/languages/i18n/pnb.json @@ -13,16 +13,17 @@ "Macofe", "Matma Rex", "Saanvel", - "Satdeep gill" + "Satdeep gill", + "Abbas dhothar" ] }, - "tog-underline": "حوڑ تھلے لین:", + "tog-underline": "جوڑ تھلے لین:", "tog-hideminor": "چھوٹیاں تبدیلیاں چھپاؤ", "tog-hidepatrolled": "ویکھیاں تبدیلیاں لکاؤ", "tog-newpageshidepatrolled": "نویاں صفیاں توں ویکھیاں تبدیلیاں لکاؤ", - "tog-hidecategorization": "صفحیاں دی Ú¯Ù¹Ú¾ لکائو۔", + "tog-hidecategorization": "صفحےآں دی Ú¯Ù¹Ú¾ لُکاؤ۔", "tog-extendwatchlist": "نظر تھلے رکھے صفحے نوں ودھاو, تاں جے اوہ تبدیلیاں جیڑیاں کم دے قابل نیں ویکھیاں جا سکن", - "tog-usenewrc": "تھوڑا خر پہلے کیتیاں گیاں تبدیلیاں ورتو", + "tog-usenewrc": "نویاں تبدیلیاں اتے میری اکھ تھلے لسٹ وچ صفحہ وار گروپ تبدیلیاں", "tog-numberheadings": "آپ نمبر دین والیاں سرخیاں", "tog-showtoolbar": "ایڈٹ ٹولبار وکھاؤ", "tog-editondblclick": "صفیاں تے ڈبل کلک کرن تے تبدیلیاں لیاؤ", @@ -41,7 +42,7 @@ "tog-enotifminoredits": "صفحیاں چ چھوٹیاں موٹیاں تبدیلیاں تے وی مینوں ای میل کر دیو", "tog-enotifrevealaddr": "میرے ای میل دے پتے نوں سندیسے آلی ای میل دے وچ وکھاؤ۔", "tog-shownumberswatching": "ویکھن آلے لوکاں دی گنتی وکھاؤ۔", - "tog-oldsig": "ہن والے دسخط:", + "tog-oldsig": "تواڈے ہُن والے دستخط:", "tog-fancysig": "دستخط نوں وکی ٹیکسڈ ونگوں؎ ورتو(without an automatic link)", "tog-uselivepreview": "لائیو پریویو ورتو", "tog-forceeditsummary": "مینون اوسے ویلے دسو جدوں خالی سمری تے آؤ۔", @@ -151,7 +152,7 @@ "newwindow": "(نئی ونڈو چ کھولو)", "cancel": "مکاؤ", "moredotdotdot": "مزید۔۔۔۔", - "morenotlisted": "ایہ لسٹ پوری نئی۔", + "morenotlisted": "ایہ لسٹ پوری نئیں۔", "mypage": "صفہ", "mytalk": "میریاں گلاں", "anontalk": "گل", @@ -165,7 +166,7 @@ "faq": "FAQ", "faqpage": "Project:FAQ", "actions": "کم", - "namespaces": "ناواں دی تھاں:", + "namespaces": "ناں تھانواں:", "variants": "قسماں", "navigation-heading": "کھوج پتر", "errorpagetitle": "مسئلہ", @@ -175,11 +176,12 @@ "search": "کھوج", "searchbutton": "کھوج", "go": "جاؤ", - "searcharticle": "چلو جی", + "searcharticle": "چلو", "history": "پچھلے کم", "history_short": "ریکارڈ", + "history_small": "تریخ", "updatedmarker": "میرے پچھلی وار آن توں مگروں دیاں تبدیلیاں", - "printableversion": "چھپن جوگا صفہ", + "printableversion": "چھپن جوگا صفحہ", "permalink": "پکا جوڑ", "print": "چھاپو", "view": "وکھالہ", @@ -207,7 +209,7 @@ "articlepage": "مضمون آلا صفحہ", "talk": "گل بات", "views": "وکھالے", - "toolbox": "اوزار", + "toolbox": "سَند", "userpage": "ورتن آلے دا صفہ ویکھو", "projectpage": "ویونت والا صفہ ویکھو", "imagepage": "فائل آلا صفہ ویکھو", @@ -220,7 +222,7 @@ "redirectedfrom": "(لیایا گیا $1)", "redirectpagesub": "صفحہ ریڈائریکٹ کرو", "redirectto": "اگے کرو:", - "lastmodifiedat": "اس صفحے نوں آخری آری $1 تریخ نوں $2 وجے بدلیا گیا۔", + "lastmodifiedat": "اس صفحے نوں آخری واری $1 تریخ نوں $2 وجے بدلیا گیا۔", "viewcount": "اس صفحے نوں {{PLURAL:$1|اک واری|$1 واری}} کھولیا گیا اے۔", "protectedpage": "بجایا صفحہ", "jumpto": "جاؤ:", @@ -236,16 +238,17 @@ "copyrightpage": "{{ns:project}}:نقل دے حق", "currentevents": "اج کل دیاں گلاں", "currentevents-url": "Project:اج کل دیاں گلاں", - "disclaimers": "منکرنا", - "disclaimerpage": "Project:عام منکرنا", + "disclaimers": "لاتعلقی اظہار", + "disclaimerpage": "Project:عام لاتعلقی اظہار", "edithelp": "لکھن وچ مدد", + "helppage-top-gethelp": "مدد", "mainpage": "پہلا صفہ", - "mainpage-description": "پہلا صفہ", + "mainpage-description": "پہلا صفحہ", "policy-url": "Project:پالیسی", "portal": "بیٹھک", "portal-url": "ویونت:بیٹھک", - "privacy": "بچاؤ پالیسی", - "privacypage": "Project:بچاؤ پالیسی", + "privacy": "پرائیویسی پالیسی", + "privacypage": "Project:پرائیویسی پالیسی", "badaccess": "اجازت دے وچ غلطی اے", "badaccess-group0": "تھاونوں ایس کم دی اجازت نیں جیہڑا تسیں آکھیا اے۔", "badaccess-groups": "جیڑا کم تسی کرنا چا رۓ او اوہ صرف {{PLURAL:$2|اس گروپ|ایناں گروپاں}} دے ورتن آلے کر سکدے نیں: $1۔", @@ -264,8 +267,9 @@ "toc": "حصے", "showtoc": "وکھاؤ", "hidetoc": "چھپاؤ", - "collapsible-collapse": "ڈگنا", + "collapsible-collapse": "لُکاؤ", "collapsible-expand": "ودھاؤ", + "confirmable-no": "نئیں", "thisisdeleted": "$1 ویکھو یا واپس لاؤ", "viewdeleted": "ویکھو 1$ ؟", "restorelink": "{{PLURAL:$1|اک مٹائی گئی تبدیلی|1$ مٹائیاں گئیاں تبدیلیاں}}", @@ -283,10 +287,10 @@ "nstab-main": "صفہ", "nstab-user": "ورتن والے دا صفہ", "nstab-media": "میڈیا آلا صفہ", - "nstab-special": "خاص صفہ", + "nstab-special": "خاص صفحہ", "nstab-project": "ویونت دا صفہ", "nstab-image": "فائل", - "nstab-mediawiki": "سنیعا", + "nstab-mediawiki": "سنیہہ", "nstab-template": "سانچہ", "nstab-help": "مدد آلا صفہ", "nstab-category": "Ú¯Ù¹Ú¾", @@ -317,7 +321,7 @@ "badarticleerror": "اے کم اس صفحے تے نئیں ہو سکدا۔", "cannotdelete": "صفحہ یا فائل \"$1\" نوں مٹایا نا جاسکیا۔\nاینوں پہلاں توں ای کسے نے مٹایا ہوۓ گا۔", "cannotdelete-title": "صفہ مٹا نئیں سکدے \"$1\"", - "badtitle": "پیڑا عنوان", + "badtitle": "بھیڑا عنوان", "badtitletext": "منگیا گۓ صفے دا ناں غلط اے، خالی، یا ایہ غلط ول نال جوڑیا گیا اے۔\nہوسکدا اے ایدے چ اک دو ھندسے ایسے ہون جیڑے ناں وچ ورتے نہیں جاسکدے۔", "perfcached": "تھلے دتا گیا ڈیٹا کاشیڈ اے تے پانویں نواں ناں ہووے. زیادہ توں زیادہ کاشے چ {{PLURAL:$1|اک نتیجہ ہووے|$1 نتیجے ہوون}} گے.", "perfcachedts": "تھلے دتا گیا ڈیٹا کاشیڈ اے تے $1 نوں نواں کیتا گیا۔ زیادہ توں زیادہ {{PLURAL:$4|اک نتیجہ ہووے|$4 نتیجے ہوون}} نتیجے کاشے چ ہیگے نیں .", @@ -329,7 +333,7 @@ "protectedpagetext": "اس صفحے دے اتے تبدیلی کرن نوں روکیا گیا اے۔", "viewsourcetext": "تسی اس صفحے دی لکھائی نوں ویکھ تے نقل کر سکدے او:", "viewyourtext": "تسیں آپنی تبدیلیاں دا ذریعہ ایس صفے تے ویکھ تے کاپی کرسکدے او۔", - "protectedinterface": "اے صفحے سافٹویئر نوں ورتن دی تھاں دیندا اے تے ایدے غلط ورتن نوں روکن واسطے اینوں بچایا ہویا اے۔", + "protectedinterface": "ایہ صفحے سافٹویئر نوں ورتن دی تھاں دیندا اے تے ایدے غلط ورتن نوں روکن واسطے اینوں بچایا ہویا اے۔", "editinginterface": "'''خبردار:''' تسیں اک ایسا صفہ بدل رۓ او جیہڑا مکھی صفے دے سوفٹویر نوں لکھت دیندا اے۔ ایس صفے ج تبدیلی ورتنن والیاں دے مکھی صفے دے وکھالے نوں بدل دے گی۔ بولی وٹاندرے لئی، مہربانی کرکے میڈیاوکی بولی ویونت [https://translatewiki.net/wiki/Main_Page?setlang=en translatewiki.net] ول ویکھو۔", "cascadeprotected": "ایس صفے نوں تبدیلی توں بچایا گیا اے، کیوں جے ایہ تھلے دتے گۓ {{PLURAL:$1|صفہ|صفے}} چ ہیگا اے تے اینوں ''کیسکیڈنگ'' چنوتی نال بچایا گیا اے:\n\n $2", "namespaceprotected": "'''$1''' ناں دے صفحے تسی نئیں لکھ سکدے۔", @@ -375,6 +379,8 @@ "createacct-email-ph": "اپنا ای-میل پتہ دیؤ", "createaccountmail": "ای میل دے نال", "createaccountreason": "وجہ:", + "createacct-reason": "وجہ", + "createacct-reason-ph": "تسیں اک ہور کھاتہ کیوں بنا رہے او", "createacct-submit": "اپنا کھاتا کھولو", "createacct-benefit-heading": "پنجابی وکی نوں تواڈے ورگے لوکاں نے بنایا اے۔", "createacct-benefit-body1": "$1 {{PLURAL:$1|تبدیلی|تبدیلیاں}}", @@ -408,10 +414,10 @@ "blocked-mailpassword": "تواڈے IP پتے تے تبدیلی کرن تے روک اے، تے تسی کنجی وی واپس نئیں لیا سکدے تاکے ایدا غلط ورت نا ہوۓ۔", "eauthentsent": "اک کنفرمیشن ای میل دتے گۓ ای میل پتے تے پیج دتی گئی اے۔ اس توں پہلاں کہ کوئی دوجی ای میل کھاتے تے پیجی جاۓ، توانوں ای میل چ دتیاں ہدایات تے عمل کرنا ہوۓ گا، تا کے اے پکا ہو سکے کہ اے کھاتہ تواڈا ہی اے۔", "throttled-mailpassword": "اک کنجی بارے سنیعہ پہلے ای پیجیا جاچکیا اے، پچھلے {{PLURAL:$1|کینٹہ|$1 کینٹے}} چ۔ \nکوئی غلط کم ہون توں پہلے صرف اک کنجی سنیغہ {{PLURAL:$1|کینٹہ|$1 کینٹے}} پیجیا جائیکا۔", - "mailerror": "چٹھی پیجن چ غلطی: $1", + "mailerror": "ای میل بھیجن وچ غلطی: $1", "acct_creation_throttle_hit": "ایس وکی تے آن والے تے تواڈے آئی پی پتے ورتدیاں ہویاں {{PLURAL:$1|1 کھاتہ|$1 کھاتے}} پچھلے دن چ جیہڑا کی ایس ویلے چ زیادہ توں زیادہ دی اجازت اے۔ \nایس لئی ایتھے آن والے تے ایس آئی پی پتے نوں ورتن والے ایس ویلے ہور کھاتہ نئیں کھول سکدے۔", "emailauthenticated": "تھواڈا ای-میل پتہ $2 نوں $3 تے پکا کیتا گیا۔", - "emailnotauthenticated": "تھواڈا ای-میل پتہ ہجے پکا نئیں ہویا۔\nکوئی ای-میل اینج دے فیچر والی نئیں پیجی جاۓ گی۔", + "emailnotauthenticated": "تھواڈا ای-میل پتہ ہجے پکا نئیں ہویا۔\nکوئی ای-میل اینج دے فیچر والی نئیں بھیجی جائے گی۔", "noemailprefs": "ایناں فیچراں نوں کم کرن لئی اپنیاں تانگاں چ ای-میل پتہ دسو۔", "emailconfirmlink": "ای میل پتہ پکا کرو", "invalidemailaddress": "ایہ ای-میل پتہ نئیں چلے گا کیوں جے اے ناں منے جان والے فارمیٹ تے بنیا ہویا اے۔\nمہربانی کرکے منے جان والے فارمیٹ پتے نوں دسو یا فیر اے تھاں خالی چھڈ دیو۔", @@ -434,10 +440,12 @@ "resetpass_announce": "تسی اک کچے ای-میل کود تے لاگ ان ہوگۓ او۔\nلاگ ان مکان لئی تھوانوں ایتھے اک نویں کنجی بنانی پوے گی:", "resetpass_header": "کھاتے دی کنجی بدلو", "oldpassword": "پرانی کنجی:", - "newpassword": "نوی کنجی:", - "retypenew": "نئی کنجی دوبارہ لکھو:", + "newpassword": "نویں کنجی:", + "retypenew": "نویں کنجی دوبارہ لکھو:", "resetpass_submit": "کنجی رکھو تے لاگ ان ہو جاو", - "changepassword-success": "تھواڈی کنجی بدلی جاچکی اے!\nتسی لاگ ان ہورۓ او۔۔۔۔۔۔", + "changepassword-success": "تھواڈی کنجی بدلی جاچکی اے!\nتسی لاگ ان ہو رہے او۔۔۔۔۔۔", + "botpasswords-label-appid": "بوٹ ناں", + "botpasswords-label-create": "بناؤ", "resetpass_forbidden": "کنجی بدلی نئیں جاسکدی", "resetpass-no-info": "تسی لاگ ان ہوکے ای اس صفحے نوں ویکھ سکدے او۔", "resetpass-submit-loggedin": "کنجی بدلو", @@ -448,14 +456,12 @@ "passwordreset-disabled": "اس وکی تے کنجی واپس نئیں لیائی جاسکدی۔", "passwordreset-username": "ورتن ناں:", "passwordreset-domain": "ڈومین", - "passwordreset-capture": "آن والی ای-میل ویکھو؟", - "passwordreset-capture-help": "اگر تسیں اے ڈبہ چیک کروگے ای-میل (عارضی کنجی نال) وکھائی جاۓ گی توانوں تے پیجی وی جاۓ گی۔", "passwordreset-email": "ای-میل پتہ:", "passwordreset-emailtitle": "{{SITENAME}} دے اتے کھاتے دی معلومات:", "passwordreset-emailtext-ip": "کسے نے (خورے تساں آئی پی پتے $1) تواڈے کھاتے دا ویروا منگیا اے {{SITENAME}} ($4) لئی۔ تھلے دتا گیا ورتنوالا {{PLURAL:$3|کھاتہ|کھاتے}} ایس ای-میل پتے نال جوڑ رکھدا اے:\n\n$2\n\n{{PLURAL:$3|اے عارضی کنجی|اے عارضی کنجیاں}} {{PLURAL:$5|اک دن|$5 دناں}} چ مک جاوے گی۔ تسیں لاگان ہوو تے اپنی اک نويں کنجی چنو. اگر کسے ہور نے اے کنجی والی چٹھی پیجی اے یا توانوں پرانی کنجی یاد آگئی اے تے تسیں پرانی کنجی نال ای کم چلانا چاندے او تے تسیں ایس سنیعے نوں پل جاؤ تے پرانی کنجی ای ورتو۔", "passwordreset-emailtext-user": "ورتنوالے $1 نے {{سائیٹناں}} تے تواڈے کھاتے بارے پچھیا اے {{SITENAME}} لئی ($4)۔ تھلے دتا گیا ورتن {{PLURAL:$3|کھاتہ|کھاتے}} ایس ای-میل نال جڑدا اے۔\n\n$2\n\n{{PLURAL:$3|ایہ عارضی کنجی|اے عارضی کنجیاں}} مک جائیگا {{PLURAL:$5|اک دن|$5 دن}}۔ تسیں ہن لاکان ہوو تے نویں کنجی چنو۔ اگر کسے ہور نے اے چٹھی پیجی یا توانوں اپنی پہلی کنجی یاد آگئی اے تے تسیں اونوں بدلنا نئیں چاندے تے تسیں ایس سنیعے نوں پھل جاؤ تے پرانی کنجی نال ای کم چلاؤ۔", "passwordreset-emailelement": "ورتن ناں: \n$1\n\nعارضی کنجی: \n$2", - "passwordreset-emailsentemail": "یاد کران واسطے اک ای-میل پیج دتی گئی اے۔", + "passwordreset-emailsentemail": "یاد کران واسطے اک ای-میل بھیج دتی گئی اے۔", "changeemail": "ای-میل پتہ بدلو", "changeemail-header": "کھاتے دا ای-میل پتہ بدلو", "changeemail-no-info": "تسی لاگ ان ہوکے ای اس صفحے نوں ویکھ سکدے او۔", @@ -474,7 +480,7 @@ "headline_sample": "شہ سرخی", "headline_tip": "دوسرے درجے دی سرخی", "nowiki_sample": "فارمیٹ نہ ہوئی لکھائی ایتھے پاؤ", - "nowiki_tip": "وکی فارمیٹ رھندیو۔", + "nowiki_tip": "وکی فارمیٹ رہن دیؤ۔", "image_sample": "Example.jpg", "image_tip": "وچ مورت لگاؤ", "media_sample": "Example.ogg", @@ -503,7 +509,7 @@ "blockednoreason": "کوئی وجہ نئیں دسی گئی", "whitelistedittext": "تھواڈے کول $1 ہونا چآغیدا اے صفے تبدیل کرن لئی۔", "confirmedittext": "توانوں اپنا ای-میل پتہ پکا کرنا چائیدا اے تبدیلیاں کرن توں پہلے۔\nمہربانی کرکے اپنا ای-میل پتہ بناؤ تے پکا کرو [[Special:Preferences|user preferences]]", - "nosuchsectiontitle": "اے ہو جیا کوئی ٹوٹا نئیں", + "nosuchsectiontitle": "ایہو جیا کوئی ٹوٹا نئیں", "nosuchsectiontext": "تساں اک ایسے پاسے نوں بدلن دی کوشش کیتی اے جیہڑا ہے ای نئیں۔\nخورے جدوں تسی تک رۓ سے اودوں اینوں مٹادتا گیا ہووۓ یا بدل دتا گیا ہووے۔", "loginreqtitle": "لاگ ان چائیدا اے", "loginreqlink": "لاگ ان ہو جاو", @@ -541,8 +547,8 @@ "editconflict": "تبدیلی رپھڑ: $1", "explainconflict": "جدوں تسیں لکھنا شروع کیتا کسے ہور نے صفہ بدل دتا اے۔ اتلا لکھت تھاں چ چ لکھت ہے جیویں اوہ ہن ہیگی اے۔\nتواڈیاں تبدیلیاں تھلویں لکھت چ دسیاں جاریاں نیں۔ توانوں اپنیاں تبدیلیاں ہن دی لکھت چ رلانیاں پین گیاں۔\nتوانوں اپنیاں تبدیلیاںہن دی لکھت چ رلانیاں پین گیا۔\n'''صرف''' اتلی لکھت ددی تھاں بچائی جاسیگی جدوں تسیں \"{{int:savearticle}}\" دباؤ گے", "yourtext": "تواڈی لکھائی", - "storedversion": "سانبیا ورژن", - "nonunicodebrowser": "'''خبردار: تھواڈا براؤزر تے یونیکوڈ نئیں چلدا۔'''\nاک کم تھانوں ایس قابل کریگا جے بچت نال صفے بچا سکو: non-ASCII کیریکٹر تبدیلی ڈبے چ ہیکساڈیسیمل کوڈ دسن گے۔", + "storedversion": "سانبھی لکھائی", + "nonunicodebrowser": "'''خبردار: تھواڈے براؤزر اُتے یونیکوڈ نئیں چلدا۔'''\nاک کم تھانوں ایس قابل کریگا جے بچت نال صفے بچا سکو: non-ASCII کیریکٹر تبدیلی ڈبے چ ہیکساڈیسیمل کوڈ دسن گے۔", "editingold": "'''خبردار: تسیں ایس صفے دی پرانی ریوین بدل رۓ او۔'''\nاگر تسیں اینوں بچاندےاو، ایس ریوین مگروں کوئی وی تبدیلی مک جائیگی۔", "yourdiff": "تبدیلیاں", "copyrightwarning": "مہربانی کر کے اے گل یاد رکھ لو کے سارے کم {{SITENAME}} ایتھے $2 دے تھلے آن گے (زیادہ علم واسطے $1 تکو)۔<br />\nاگر تسی نئیں چاندے کے تواڑی لکھائی نوں بے رحمی نال ٹھیک کیتا جاۓ تے نالے اپنی مرضی نال اونھوں چھاپیا جاۓ تے ایتدے مت لکھو۔<br />\nتسی اے وی ساڈے نال وعدہ کر رہے او کہ اینوں تسی آپ لکھیا اے یا فیر کسی پبلک ڈومین توں یا ایہو جۓ کسے آزاد ذریعے توں نقل کیتا اے۔<br />\n'''ایتھے او کم بغیر اجازت توں نا لکھو جیدے حق راکھویں نے '''", @@ -581,7 +587,7 @@ "post-expand-template-inclusion-category": "صفے جتھے ٹمپلیٹ ناپ وڈا ہوگیا اے۔", "post-expand-template-argument-warning": "'''خبردار:''' ایس صفے تے اک ٹمپلیٹ گل بات دتی گئی اے جیہڑا چوکھا وڈا اے۔\nاے گلاں کڈ دتیاں گیاں نیں۔", "post-expand-template-argument-category": "صفے جناں چ کڈے گۓ ٹمپلیٹ دیاں گلاں نیں۔", - "parser-template-loop-warning": "ٹمپلیٹ لوپ لب لئی گئی: [[$1]]", + "parser-template-loop-warning": "سانچہ لوپ لبھ لئی گئی: [[$1]]", "parser-template-recursion-depth-warning": "ٹمپلیٹ ریکرشن ڈپتھ لمٹ ودی ($1)", "language-converter-depth-warning": "بولی بدلن دی ولگن ودی ($1)", "undo-success": "تبدیلیاں واپس ہوسکدیاں نیں۔\nتھلے فرق ویکھو اے ویکھن لئی جے ایہو ای تسی چاندے او، تے تھلے تبدیلیاں بچاؤ، تبدیلیاں مکاں دی روک نوں۔", @@ -600,18 +606,18 @@ "currentrevisionlink": "موجودہ حالت", "cur": "ہنوالا", "next": "اگلا", - "last": "پہلا", + "last": "پچھلا", "page_first": "پہلا", "page_last": "آخری", "histlegend": "ڈف سلیکشن: وکھری تبدیلیاں دا مقابلا کرن واسطے ریڈیو ڈبیاں تے نشان لاؤ تے اینٹر یا تھلے دتا گیا بٹن دباؤ۔<br />\nلیجنڈ: (موجودہ) = موجودہ تبدیلی نال مقابلہ،\n(آخری) = پچھلی تبدیلی توں فرق، M = تھوڑی تبدیلی", "history-fieldset-title": "ریکارڈ ویکھو", "history-show-deleted": "صرف مٹایا گیا اے۔", - "histfirst": "سب توں پہلا", - "histlast": "سب توں نواں", + "histfirst": "سبتوں پرانا", + "histlast": "سبتوں نواں", "historysize": "({{PLURAL:$1|1 بائٹ|$1 بائٹس}})", "historyempty": "(خالی)", - "history-feed-title": "ریوین رکارڈ", - "history-feed-description": "ریوین رکارڈ ایس صفے لئی وکی تے اے۔", + "history-feed-title": "ریویژن رکارڈ", + "history-feed-description": "ریویژن رکارڈ ایس صفے لئی وکی تے اے۔", "history-feed-item-nocomment": "$2 نوں $1", "history-feed-empty": "چائیدا صفہ ہے ای نئیں۔\nہوسکدا اے اینوں وکی توں ہٹا دتا گیا ہووے یا مٹادتا گیا ہووے۔\n[[Special:Search|searching on the wiki]] کرو چائیدے نویں صفیاں لئی۔", "rev-deleted-comment": "تبدیلی سمری مٹادتی گئی۔", @@ -641,28 +647,28 @@ "revdelete-confirm": "اے پکا کرلو جے تسیں ایہ کرنا چاندے او، تے توانوں ایدے نتیجے دا پتہ اے، تے تسیں [[{{MediaWiki:Policy-url}}|پالیسی]] تے چل کے Ú© رۓ او۔", "revdelete-suppress-text": "دبانا اودوں ای ٹھیک اے جدوں اے تھلے دتے کۓ مسلیاں لئی ہووے۔\n* غلط جانکاری\n**تھوڑی اپنے بارے جانکاری\n*:''کعر دا پتہ تے فون نمبر.''", "revdelete-legend": "ویکھن چانن دیاں ولگناں بناؤ", - "revdelete-hide-text": "ریوژن ٹیکسٹ لکاؤ", + "revdelete-hide-text": "ریویژن ٹیکسٹ", "revdelete-hide-image": "فائل دا مواد لکاؤ", - "revdelete-hide-name": "کم تے نشانہ چھپاؤ", - "revdelete-hide-comment": "لکھن دے بارے چ صلاع لکاؤ", + "revdelete-hide-name": "پیرامیٹر تے ٹارگٹ چھپاؤ", + "revdelete-hide-comment": "لکھن سمری", "revdelete-hide-user": "لکھن آلے دا ناں/آئی پی پتہ لکاؤ", "revdelete-hide-restricted": "ایڈمنسٹریٹراں تے ہوراں کولاں ڈیٹا لکاؤ۔", "revdelete-radio-same": "(اینوں ناں بدلو)", - "revdelete-radio-set": "ہاں", - "revdelete-radio-unset": "نئیں", + "revdelete-radio-set": "لُکی", + "revdelete-radio-unset": "نظز آندی", "revdelete-suppress": "چھڈن دی چنوتی", "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": "صفحے دی تریخ", "deletedhist": "مٹائی گئی تریخ", - "revdelete-hide-current": "آئیٹم نوں $2 تے $1 تریخاں چ لکان چ غلطی۔\nایہ نئیں لکائی جاسکدی۔", - "revdelete-show-no-access": "$2، $1 دی تریخاں دیاں آئٹماں دے دسن چ غلطی ہوئی اے : ایہ آئٹم حد چ اے۔\nتسیں ایدے تک نئیں جاسکدے او۔", + "revdelete-hide-current": "آئیٹم نوں $2 تے $1 تریخاں چ لُکان وچ غلطی۔\nایہ نئیں لکائی جاسکدی۔", + "revdelete-show-no-access": "$2، $1 دی تریخاں دیاں آئٹماں دے دسن چ غلطی ہوئی اے : ایہ آئٹم حد وچ اے۔\nتسیں ایدے تک نئیں جاسکدے او۔", "revdelete-modify-no-access": "$2، $1 تریخ دی آئٹم بدلن چ غلطی ہوئی: ایہ آئٹم نوں حد چ رکھیا اے۔ تواڈی ایتھوں تک رسائی نئیں۔", "revdelete-modify-missing": "آئی ڈی آئیٹم $1 توں بدلن چ فلطی: ایہ ڈیٹابیس چ نئیں اے۔", "revdelete-no-change": "'''خبردار:''' $2 تریخ دی آئیٹم، $1 پہلے ای دیس سیٹنگ لئی آکھی جاچکی اے۔", @@ -672,9 +678,9 @@ "revdelete-otherreason": ":دوجی وجہ", "revdelete-reasonotherlist": "ہور وجہ", "revdelete-edit-reasonlist": "مٹانے دی وجہ لکھو", - "revdelete-offender": "ریوین لکھاری", + "revdelete-offender": "ریویژن لکھاری", "suppressionlog": "دبان لاگ", - "suppressionlogtext": "تھلے مٹان تے روکن دے کم دی لسٹ اے جیہڑا مکھیاواں کولوں لکیا اے۔\n[[Special:BlockList|IP block list]] ویکھو ہن دی اوپریشنل بنداں تے روکاں تے۔", + "suppressionlogtext": "تھلے مٹان تے روکن دے کم دی لسٹ اے جیہڑا پربندھکاں کولوں لُکیا اے۔\nویکھو[[Special:BlockList|IP block list]] ہن دیاں اوپریشنل بنداں تے روکاں تے۔", "mergehistory": "صفیاں دا رکارڈ رلاؤ", "mergehistory-header": "ایہ صفہ توانوں اک سورس صفے دیاں ریویناں دا رکارڈ اک ہور صفے چ رلان دیوے گا۔\nایہ گل پکی کرو جے تبدیلی رکارڈ دی لکاتاری نوں رکھے گی۔", "mergehistory-box": "دوصفیاں دیاں رلیاں ریویني", @@ -730,12 +736,14 @@ "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-redirect": "($1 توں مڑ رجوع)", "search-section": "($1 ٹوٹا)", + "search-category": "(کیٹیگری $1)", "search-suggest": "تسی $1 دی گل تے نئیں کر رۓ:", "search-interwiki-caption": "رلدے ویونت", "search-interwiki-default": "$1 نتارے:", "search-interwiki-more": "(اور)", + "search-interwiki-more-results": "ہور نتیجے", "search-relatedarticle": "جڑیاں", "searchrelated": "جڑیا", "searchall": "سارے", @@ -773,8 +781,6 @@ "saveprefs": "بچاؤ", "restoreprefs": "ڈیفالٹ سیٹنگز دوبارہ لیاؤ", "prefs-editing": "لکھائی", - "rows": "قطار:", - "columns": "کالم:", "searchresultshead": "کھوج", "stub-threshold": "بوآ <a href=\"#\" class=\"stub\">stub link</a> formatting (bytes): لئی", "stub-threshold-disabled": "ناکارہ", @@ -788,7 +794,7 @@ "timezoneuseserverdefault": "وکی ڈیفالٹ ($1) ورتو۔", "timezoneuseoffset": "دوجے (آفسٹ دسو)", "servertime": "سرور دا ویلا:", - "guesstimezone": "براؤزر توں پعرو۔", + "guesstimezone": "براؤزر توں بھرو۔", "timezoneregion-africa": "افریقہ", "timezoneregion-america": "امریکہ", "timezoneregion-antarctica": "انٹارکٹکا", @@ -817,10 +823,10 @@ "yourlanguage": "بولی:", "yourvariant": "ورتی بولی دی اک ہور ونڈ:", "prefs-help-variant": "تسیں وکھرے یا اورتوگرافی چنی اے ایس وکی دیاں لکھتاں نوں دکھان لئی۔", - "yournick": "دسخط:", - "prefs-help-signature": "گل بات صفے تے \"<nowiki>~~~~</nowiki>\" دے نال دسخط ہونے چائیدے نیں جناں نوں دسخط تے ویلے چ دسیا جائیگا۔", - "badsig": "ناں منیا جان والا کچا دسخط۔\nایچ ٹی ایم ایل ٹیگ۔", - "badsiglength": "تھواڈے دسخط بعوت لمبے نیں۔\n\nاے $1 {{PLURAL:$1|اکرا|اکرے}}توں لمبے ناں ہون۔", + "yournick": "نویں دستخط:", + "prefs-help-signature": "گل بات صفے تے \"<nowiki>~~~~</nowiki>\" دے نال دستخط ہونے چائیدے نیں جنہاں نوں دستخط تے ویلے وچ دسیا جائیگا۔", + "badsig": "ناں منیا جان والا کچا دستخط۔\nایچ ٹی ایم ایل ٹیگ۔", + "badsiglength": "تھواڈے دستخط بوہت لمبے نیں۔\n\nایہ $1 {{PLURAL:$1|اکرا|اکرے}}توں لمبے ناں ہون۔", "yourgender": "جنس", "gender-unknown": "نئیں دسیا گیا۔", "gender-male": "نر", @@ -831,9 +837,9 @@ "prefs-help-email": "ای-میل پتہ اوپشنل اے، پر کنجی ٹھیک کرن لئی ورتیا جاندا اے، کیا تسیں اپنی کنجی پعل جاؤگے۔", "prefs-help-email-others": "تسیں آپ چن سکدے او جے توانوں ملیا جاوے ای-میل توں تواڈے جوڑ توں تواڈے ورتن والے یا گل بات صفے تے۔\nتواڈا ای-میل پتہ نئیں دسیا جاندا جدوں دوجے ورتن والے توانوں ملدے نیں۔", "prefs-help-email-required": "ای میل پتہ چائیدا اے۔", - "prefs-info": "مڈلی جانکاری", + "prefs-info": "مڈھلی جانکاری", "prefs-i18n": "انٹرنیشنلائزیشن", - "prefs-signature": "دسخط", + "prefs-signature": "دستخط", "prefs-dateformat": "تریخ فارمیٹ", "prefs-timeoffset": "ٹائم آفسیٹ", "prefs-advancedediting": "ہور چنوتیاں", @@ -844,7 +850,7 @@ "prefs-displayrc": "چنوتیاں دسو", "prefs-displaywatchlist": "چنوتیاں دسو", "prefs-diffs": "ڈفز", - "userrights": "ورتن والیاں دے حقاں دا سعاب کتاب", + "userrights": "ورتن والیاں دے حقاں دا حساب کتاب", "userrights-lookup-user": "ورتن ٹولی بچاؤ", "userrights-user-editname": "اک ورتن والا ناں لکھو:", "editusergroup": "ورتن ٹولی چ تبدیلی", @@ -857,22 +863,20 @@ "userrights-reason": "وجہ:", "userrights-no-interwiki": "تساں نوں ورتن حق بدلن دی اجازت دوسرے وکی تے نئیں۔", "userrights-nodatabase": "ڈیٹابیس $1 ہے ای نئیں یا لوکل نئیں۔", - "userrights-nologin": "تسیں لازمی [[Special:UserLogin|log in]] اک مکھیا کھاتے نال اپنے ح‍اں لئی۔", - "userrights-notallowed": "تواڈے کھاتے نوں اے اجازت نئیں جے اے ورتن حق دے سکے۔", "userrights-changeable-col": "ٹولیاں جیہڑیاں تسی بدل ےکدے او۔", "userrights-unchangeable-col": "ٹولیاں جیہڑیاں تسی بدل نئیں سکدے", "group": "ٹولی:", "group-user": "ورتن آلے", "group-autoconfirmed": "اپنے آپ منے گۓ ورتن والے", "group-bot": "بوٹ", - "group-sysop": "مکھیۓ", + "group-sysop": "پربندھک", "group-bureaucrat": "بیوروکریٹ", "group-suppress": "چھڈیا گیا", "group-all": "(سارے)", "group-user-member": "{{GENDER:$1|ورتن والا}}", "group-autoconfirmed-member": "{{GENDER:$1|اپنے آپ منے گۓ ورتن والے}}", "group-bot-member": "{{GENDER:$1|بوٹ}}", - "group-sysop-member": "{{GENDER:$1|مکھیا}}", + "group-sysop-member": "{{GENDER:$1|پربندھک}}", "group-bureaucrat-member": "{{GENDER:$1|بیوروکریٹ}}", "group-suppress-member": "{{GENDER:$1|چھڈی گئی}}", "grouppage-user": "{{ns:project}}:ورتن آلے", @@ -892,13 +896,13 @@ "right-move-rootuserpages": "ورتن جڑ صفے لے چلو", "right-movefile": "فائلاں لے چلو۔", "right-suppressredirect": "جدوں صفے بل رۓ ہوو تے سورس توں ریڈائرکٹس ناں بناؤ", - "right-upload": "فائل چڑہاؤ", - "right-reupload": "پہلاں دی لکھی ہوئی فائل دے اتے لکھو", - "right-reupload-own": "آپ چڑھائیاں ہوئیاں فائلاں تے لکھو۔", - "right-reupload-shared": "رلی میڈیا فائلاں تے چڑھاؤ", - "right-upload_by_url": "ۃڈي توں چرھائی گئی فاغلاں", + "right-upload": "فائل چڑھاؤ", + "right-reupload": "پہلاں دی لکھی ہوئی فائل دے اُتے لکھو", + "right-reupload-own": "آپ چڑھائیاں ہوئیاں فائلاں اُتے لکھو۔", + "right-reupload-shared": "رلی میڈیا فائلاں اُتے چڑھاؤ", + "right-upload_by_url": "URL توں چرھائیاں گئیاں فائلاں", "right-purge": "جیہڑے صفے دی Ù¾Ú© ناں ہووے اوس دی سائٹ کاشے صاف کرو", - "right-autoconfirmed": "کج بچاۓ گۓ صفے نوں تبدیل کرو۔", + "right-autoconfirmed": "آئی پی بیسڈ ریٹ حداں توں پریشان نا ہوو", "right-bot": "اپنے آپ ہوندے کم ورگا ورتو", "right-nominornewtalk": "نکیاں تبدیلیاں کوئی نين گل بات والے صفے تے جیہڑیاں نویں سنیعے نون ٹران", "right-apihighlimits": "API کھوجاں چ آخدی جد تک جاؤ", @@ -908,7 +912,7 @@ "right-deleterevision": "مٹاؤ تے واپس لیاؤ صفیاں دیاں خاص ریوین", "right-deletedhistory": "مٹایا ہویا ریکارڈ ویکھو بنا اودیاں لکھتاں دے۔", "right-deletedtext": "مٹائی لکھت تے مٹیاں ریویناں دیاں تبدیلیاں ویکھو۔", - "right-browsearchive": "مٹاۓ ہوۓ صفحے کھوجو", + "right-browsearchive": "مٹائے ہوئے صفحے کھوجو", "right-undelete": "مٹایا صفحہ واپس لیاو", "right-suppressrevision": "اوہ ریویناں نوں دوبارہ لیاؤ تے ویکھو جیہڑیاں مکھیاں توں لکیاں نیں۔", "right-suppressionlog": "پرائیویٹ لاگز ویکھو", @@ -938,7 +942,6 @@ "right-siteadmin": "ڈیٹابیس نوں کھولو تے بند کرو", "right-override-export-depth": "5 تک صفے تے جڑے صفے لے کے جاؤ", "right-sendemail": "دوجے ورتن والیاں نوں ای-میل کرو", - "right-passwordreset": "کنجی بدلی ای-میلاں نوں وکھاؤ", "newuserlogpage": "ورتنوالا بنان آلی لاگ", "newuserlogpagetext": "اے ورتن والا بنان دی لاگ اے۔", "rightslog": "ورتن والے دے حقاں دی لاگ", @@ -974,10 +977,10 @@ "action-autopatrol": "کیا تساں تبدیلی دے نشاں تے گشت دا نشان لایا", "action-unwatchedpages": "بنا اکھ تھلے رکھیاں صفیاں دی لسٹ ویکھو", "action-mergehistory": "ایس صفے دا رکارڈ رلاؤ", - "action-userrights": "ورتن ح‌ق چ تبدیلی کرو", + "action-userrights": "ورتن حق وچ تبدیلی کرو", "action-userrights-interwiki": "ورتن حقاں نوں دوجے وکیاں تے تبدیل کرو۔", "action-siteadmin": "ڈیٹابیس نوں کھولو یا بند کرو", - "action-sendemail": "ای-میلاں پیجو", + "action-sendemail": "ای-میلاں بھیجو", "nchanges": "$1 {{PLURAL:$1|change|تبدیلیاں}}", "enhancedrc-history": "پچھلا کم", "recentchanges": "نویاں تبدیلیاں", @@ -996,19 +999,19 @@ "rclistfrom": "$3 $2 توں ہونے آلیاں نویاں تبدیلیاں وکھاؤ", "rcshowhideminor": "$1 معمولی تبدیلیاں", "rcshowhideminor-show": "وکھاو", - "rcshowhideminor-hide": "لکاؤ", + "rcshowhideminor-hide": "لُکاؤ", "rcshowhidebots": "$1 بوٹ", "rcshowhidebots-show": "وکھاؤ", - "rcshowhidebots-hide": "لکاؤ", + "rcshowhidebots-hide": "لُکاؤ", "rcshowhideliu": "$1 ورتن آلے اندر نیں", - "rcshowhideliu-hide": "لکاؤ", + "rcshowhideliu-hide": "لُکاؤ", "rcshowhideanons": "$1 گمنام ورتن والے", "rcshowhideanons-show": "وکھاو", - "rcshowhideanons-hide": "لکاؤ", + "rcshowhideanons-hide": "لُکاؤ", "rcshowhidepatr": "$1 ویکھی گئی لکھائی", "rcshowhidemine": "$1 میرے کم", "rcshowhidemine-show": "وکھاو", - "rcshowhidemine-hide": "لکاؤ", + "rcshowhidemine-hide": "لُکاؤ", "rclinks": "آخری $2 دناں دیاں $1 تبدیلیاں وکھاؤ<br />$3", "diff": "فرق", "hist": "پچھلا کم", @@ -1017,13 +1020,13 @@ "minoreditletter": "چھوٹا کم", "newpageletter": "نواں", "boteditletter": "بوٹ", - "number_of_watching_users_pageview": "[ $1 ویکہ ریا اے{{PLURAL:$1|ورتن والا|والے}}]", + "number_of_watching_users_pageview": "[ $1 ویکھ رہیا اے{{PLURAL:$1|ورتن والا|والے}}]", "rc_categories": "گٹھاں دی حد (وکھرے کرو \"|\")", "rc_categories_any": "کوئی", "rc-change-size-new": "$1 {{PLURAL:$1|بائٹ|بائٹاں}} تبدیلی مگروں", "newsectionsummary": "/* $1 */ نواں پاسہ", - "rc-enhanced-expand": "لمبی کہانی وکھاؤ (جاوا سکرپٹ چائیدا اے)", - "rc-enhanced-hide": "لمبی کہانی لکاؤ", + "rc-enhanced-expand": "تفضیل وکھاؤ (جاوا سکرپٹ چائیدا اے)", + "rc-enhanced-hide": "تفضیل لکاؤ", "recentchangeslinked": "ملدیاں جلدیاں تبدیلیاں", "recentchangeslinked-feed": "ملدیاں جلدیاں تبدیلیاں", "recentchangeslinked-toolbox": "رلدیاں ملدیاں تبدیلیاں", @@ -1082,7 +1085,7 @@ "windows-nonascii-filename": "اے وکی فائل ناں جناں چ کوئی خاص کیریکٹر ہووے سپورٹ نئیں کردا۔", "fileexists": "اک فائل ایس ناں نال پہلے ای ہے مہربانی کرکے <strong>[[:$1]]</strong> ویکھو\nاگر تھانوں یقین نئیں اگ تسیں اینون بدلنا چاندے اوہ۔\n[[$1|thumb]]", "filepageexists": "ایس فائل دا دسن والا صفہ پہلے ای <strong>[[:$1]]</strong> تے بنایا جاچکیا اے، پر این ناں دی کوئی فائل ایس ویلے نئیں ہیگی۔\nسمری جیہڑی تسیں لکھو گے اوہ دسن والے صفے تے نئیں دسے گی۔\nاپنی سموری اوتھے دیکھن لئی توانوں اپنے ہتھیں اینون تبدیل کرنا پوے گا۔\n[[$1|thumb]]", - "fileexists-extension": "ایس ناں دی شائل ہیگی اے: [[$2|thumb]]\n* چڑھائی گئی فائل دا ناں: <strong>[[:$1]]</strong>\n* ہیگی فائل دا ناں: <strong>[[:$2]]</strong>\nمہربانی کرکے وکھرا ناں چنو.", + "fileexists-extension": "ایس ناں دی فائل ہیگی اے: [[$2|thumb]]\n* چڑھائی گئی فائل دا ناں: <strong>[[:$1]]</strong>\n* ہیگی فائل دا ناں: <strong>[[:$2]]</strong>\nمہربانی کرکے وکھرا ناں چنو.", "fileexists-thumbnail-yes": "ایہ اک ناپ دی مورت دی فائل دسدی اے ''(تھمبنیل)''.\n[[$1|thumb]]\nمہربانی کرکے فائل ویکھو <strong>[[:$1]]</strong>.\nاگر ویکھی فائل اوسے مورت دے اصل ناپ دی اے تے فیر ایہ ضروری نئیں جے اک فالتو تھمبنیل چڑھائی جاۓ۔.", "file-thumbnail-no": "فائل ناں <strong>$1</strong> توں شروع ہوندا اے۔\nاے اک نکے ناپ دی مورت لگدی اے ''(تھمبنیل)''۔\nاگر تواڈے کول ایہ مورت پورے وڈے ناپ چ اے تسیں اینوں چڑھا سکدے او، نئیں تے فیر ایس فائل دا ناں بدلو۔", "fileexists-forbidden": "ایس ناں دی فائل پہلے ای ہیگی اے تے اودے اتے نئیں لکھیا جاسکدا۔\nاگر تسیں ہلے وی اپنی فائل چڑھاناں چاندے اوہ مہربانی کرکے نویں ناں نال چڑھاؤ۔\n[[File:$1|تھمب|وشکار|$1]]", @@ -1092,11 +1095,11 @@ "uploadwarning": "فائل چڑانے توں خبردار", "uploadwarning-text": "تھلے فائل بارے دس بدلو تے فیر کوشش کرو۔", "savefile": "فائل بچاؤ", - "uploaddisabled": "فائل چڑانا بند اے", + "uploaddisabled": "فائل چڑھانا بند اے", "copyuploaddisabled": "یو آر این لے چڑھانا نکارہ کیتا۔", - "uploaddisabledtext": "فائل چڑانے چ رکاوٹ اے۔", + "uploaddisabledtext": "فائل چڑھانے وچ رکاوٹ اے۔", "php-uploaddisabledtext": "پی ایچ پی چ فائل چڑھانا نکارہ کیتا ہویا جے۔\nمہربانی کرکے فائل چڑھان دی سیٹنک ویکھو۔", - "uploadscripted": "ایس فائل چ ایچ ٹی ایم ایل یا سکرپٹ کوڈ ہیگا اے جینوں کسے ویب براؤزر نے غلط سمجیا ہووے۔", + "uploadscripted": "ایس فائل چ ایچ ٹی ایم ایل یا سکرپٹ کوڈ ہیگا اے جینوں کسے ویب براؤزر نے غلط سمجھیا ہووے۔", "uploadvirus": "اس فائل چ وائرس اے! تفصیل: $1", "uploadjava": "ایہ فائل اک زپ فائل اے جیدے چ جاوا کلاس فائل اے۔\nجاوا فائلاں نوں چڑھان دی اجازت نئیں کیوں جے او بچاؤ ولاں توں بچ کے لنکدے نیں۔", "upload-source": "سورس فائل", @@ -1136,7 +1139,7 @@ "backend-fail-readonly": "سٹوریج بیکنڈ \"$1\" ایس ویلے صرف پڑھیا جاسکدا اے۔ وجہ دتی اے: \"$2\"", "backend-fail-synced": "فائل \"$1\" اندرلے سٹوریح بیکنڈ چ اک کچی حالت چ اے۔", "backend-fail-connect": "سٹوریج بیکنڈ \"$1\" نال جوڑ ناں ہوسکیا۔", - "backend-fail-internal": "اک نان سمج ج ان والی غلطی سٹوریج بیکنڈ \"$1\" چ ہوؤی۔", + "backend-fail-internal": "اک ن سمجھ وچ آن والی غلطی سٹوریج بیکنڈ \"$1\" وچ ہوئی۔", "backend-fail-contenttype": "\"$1\" تے فائل نوں سٹور کرن لئی فائل دے اندر کی اے نئیں پتہ لگ سکیا۔", "backend-fail-batchsize": "سٹوریج بیکنڈ نوں $1 فائل دا بیچ {{PLURAL:$1|اوپریشن|اوپریشن}} دتا گیا؛ ایدی حد $2 {{PLURAL:$2|اوپریشن|اوپریشن}} جے۔", "lockmanager-notlocked": "\"$1\" ناں کھولیا جاسکیا؛ اینوں تالا نئیں سی لگیا۔", @@ -1189,7 +1192,7 @@ "upload_source_file": " (تواڈے کمپیوٹر تے اک فائل)", "listfiles-summary": "ایس خاص صفے تے ساریاں چڑھائیاں فائلاں دسیاں نیں۔\nجدوں ورتن والا اینوں فلٹر کرے، صرف اوہ فائلاں جتھے ورتن والے نیں نویں ورین دیاں فائلاں چڑھاغیاں ہون دسیاں جاندیاں نیں۔", "listfiles_search_for": "میڈیا نان نوں کھوجو:", - "imgfile": "فائل", + "imgfile": "تصویر", "listfiles": "فائل لسٹ", "listfiles_thumb": "نکی مورت", "listfiles_date": "تریخ", @@ -1198,7 +1201,7 @@ "listfiles_size": "ناپ", "listfiles_description": "تفصیل", "listfiles_count": "ورژن", - "file-anchor-link": "فائل", + "file-anchor-link": "تصویر", "filehist": "فائل ورتن", "filehist-help": "فائل نو اس ویلے دی حالت وچ ویکھن واسطے تاریخ/ویلے تے کلک کرو۔", "filehist-deleteall": "سب نوں مٹاؤ", @@ -1212,13 +1215,13 @@ "filehist-user": "ورتن والا", "filehist-dimensions": "پاسے", "filehist-filesize": "فائل دا ناپ", - "filehist-comment": "راۓ", + "filehist-comment": "رائے", "imagelinks": "فائل ورتن", "linkstoimage": "تھلے دتے گۓ {{PLURAL:$1|$1 صفے}} اس فائل نال جڑدے نے", "linkstoimage-more": "$1 توں چوکھے {{PLURAL:$1|صفہ جوڑ|صفہ جوڑ}} ایس فائل نوں۔\nتھلے دتی گئی لسٹ {{PLURAL:$1|پہلا صفہ جوڑ|پہلا $1 صفہ جوڑ}} ایس فائل نال دسدی اے۔\nاک خاص [[Special:WhatLinksHere/$2|پوری لسٹ]] ہیگی اے۔", "nolinkstoimage": "اس فائل نال جڑیا کوئی صفحہ نہیں۔", "morelinkstoimage": "ایس فائل نوں [[Special:WhatLinksHere/$1|ہور جوڑ]] ویکھو", - "linkstoimage-redirect": "$1 (فائل ریڈائیدکٹ) $2", + "linkstoimage-redirect": "$1 (فائل مڑ رجوع) $2", "duplicatesoffile": "تھلے دتی گئی {{PLURAL:$1|فائل دوہری اے|1$ فائل دوہری نیں}} ایس فائل دیاں ([[Special:FileDuplicateSearch/$2|ہور گلاں]]) کاپی نیں۔", "sharedupload": "اے فائل $1 مشترکہ اپلوڈ اے تے اے دوجے منصوبے وی استعمال کر سکدے نے۔", "sharedupload-desc-there": "ایہ فائل $1 توں اے تے اینوں دوجے ویونت وی ورت سکدے نیں۔\nمہربانی کرکے [$2 فائل دس صفہ] ویکھو ہور دساں لئی۔", @@ -1260,7 +1263,7 @@ "download": "فائل کاپی کرو", "unwatchedpages": "اندیکھے صفحے", "listredirects": "لسٹ ریڈائریکٹس", - "unusedtemplates": "نا استعمال ہوۓ سچے", + "unusedtemplates": "نا استعمال ہوۓ سانچے", "unusedtemplatestext": "ایس صفے چ سارے صفیاں دی لسٹ اے {{ns:ٹمپلیٹ}} تے جیہڑے کسے ہور صفے نال نئیں رلے۔ ٹمپلیٹ تے ہور جوڑ ویکھ لو مٹان توں پہلے۔", "unusedtemplateswlh": "دوجے جوڑ", "randompage": "رلے ملے صفے", @@ -1271,7 +1274,7 @@ "statistics-header-pages": "صفے دے آنکڑے", "statistics-header-edits": "تبدیلیاں دا آنکڑہ", "statistics-header-users": "ورتن آلیاں دا سعاب کتاب", - "statistics-header-hooks": "دوجے سعاب کتاب", + "statistics-header-hooks": "دوجے حساب کتاب", "statistics-articles": "لسٹ صفے", "statistics-pages": "صفحے", "statistics-pages-desc": "اس وکی دے سارے صفحے، گل بات، اگے ٹور آلے تے دوجے صفحے ملا کے۔", @@ -1341,7 +1344,7 @@ "listusers-creationsort": "بنان تریخ توں وکھریاں کرو۔", "usereditcount": "$1 {{PLURAL:$1|تبدیلی|تبدیلیاں}}", "usercreated": "{{GENDER:$3|بنائی گئی}} نوں $1 تے $2", - "newpages": "نویں صفے", + "newpages": "نویں صفحے", "newpages-username": "ورتن آلا ناں:", "ancientpages": "سب توں پرانے صفے", "move": "لے چلو", @@ -1357,7 +1360,7 @@ "suppress": "چھڈیا گیا", "querypage-disabled": "اے صفہ ناکارہ کیتا گیا پرفارمنس وجہ توں۔", "booksources": "کتاب توں اتہ پتہ", - "booksources-search-legend": "اس مضمون تے کتاباں لبو", + "booksources-search-legend": "اس مضمون تے کتاباں لبھو", "booksources-search": "کھوج", "booksources-text": "تھلے اوناں جوڑاں دی لسٹ اے جتھے نویاں تے پرانیاں کتاباں وکدیاں نیں، تے ہور وی جانکاری ہوسکدی اے کتاباں بارے تسیں ویکھدے او:", "booksources-invalid-isbn": "دتی گئی آئی ایس بی این چلدی نئیں لکدی ؛ اصل سورس نوں چیک کرو کاپی کرن توں پہلے۔", @@ -1401,7 +1404,7 @@ "activeusers-count": "$1 {{PLURAL:$1|تبدیلی|تبدیلیاں}} پچھلے{{PLURAL:$3|دن|$3 دن}} چ", "activeusers-from": "ورتن والے ایس توں شروع ہون والے دسو:", "activeusers-noresult": "کوئی ورتن والا نئیں لبیا۔", - "listgrouprights": "ورتن ٹرلی حق", + "listgrouprights": "ورتن گروہ حق", "listgrouprights-summary": "تھلے اک لسٹ اے ورتن ٹولیاں دی ای وکی تے، اپنے رلدے حقاں نال۔ \n\nہربندے دے ح‍ق‍اں [[{{MediaWiki:Listgrouprights-helppage}}|ہور جانکاری]]", "listgrouprights-key": "* <span class=\"listgrouprights-granted\">حق دتا گیا</span>\n* <span class=\"listgrouprights-revoked\">حق راپس</span>", "listgrouprights-group": "ٹولی", @@ -1416,7 +1419,7 @@ "listgrouprights-removegroup-self": "ہٹاؤ {{PLURAL:$2|ٹولی|ٹولیاں}} اپنے کھاتے چوں: $1", "listgrouprights-addgroup-self-all": "ساریاں ٹولیاں کٹھیاں کرو کھاتہ لئی", "listgrouprights-removegroup-self-all": "ایس کھاتے توں ساریاں ٹولیاں ہٹاؤ", - "mailnologin": "ناں پیح پتہ", + "mailnologin": "پتہ نئیں بھیجیا", "mailnologintext": "تسیں لازمی [[Special:UserLogin|لاگان]] ہوو تے اک پکا ای-میل پتہ تواڈی [[Special:Preferences|تانگ]] چ ہووے تاں جے دوجے ورتن والے توانوں ای-میل کرسکن۔", "emailuser": "اس ورتن والے نو ای میل کرو", "emailpagetext": "تسیں تھلے دتا گیا فارم ورت سکدے اوہ ایس ورتن والے نوں ای-میل سنیعہ کلن لئی۔ \nای-میل پتہ تساں [[Special:Preferences|تواڈے ورتن تانکآں]] چ پایا اے ای-میل توں تواڈا پتہ دسے گا جتھے چٹھی چلی تاں جے چٹھی لین والا توانوں سدا جواب دے سکے۔", @@ -1429,26 +1432,26 @@ "emailnotarget": "لین والے ۂئی ناں ہون والا ورتن ناں۔", "emailtarget": "لین والے دا ورتن ناں لکھو", "emailusername": "ورتن آلے دا ناں:", - "emailusernamesubmit": "پیجو", + "emailusernamesubmit": "بھیجو", "email-legend": "دوجے ورتن والے نوں {{سائٹ ناں}} ای-میل پیجو", "emailfrom": "توں:", "emailto": "نوں:", "emailsubject": "مضمون:", - "emailmessage": "سنیعا:", - "emailsend": "پیجو", - "emailccme": "میرے سنیعے دی مینوں اک ای-میل کاپی پیجو۔", - "emailccsubject": "تھواڈے سنیعے دی کاپی $1 نوں:$2", - "emailsent": "ای-میل پیج دتی گئی۔", - "emailsenttext": "تھواڈا ای-میل سنیعہ پیج دتا گیا اے۔", + "emailmessage": "سنیہہ:", + "emailsend": "بھیجو", + "emailccme": "میرے سنیہے دی مینوں اک ای-میل کاپی بھیجو۔", + "emailccsubject": "تھواڈے سنیہے دی کاپی $1 نوں:$2", + "emailsent": "ای-میل بھیج دتی گئی۔", + "emailsenttext": "تھواڈا ای-میل سنیہہ پیج دتا گیا اے۔", "emailuserfooter": "ایہ ای-میل $1 نے پیجی $2 نوں {{SITENAME}} تے \"ای-میل ورتن\" فنکشن نال", - "usermessage-summary": "پربندھ چھڈن سنیعہ", + "usermessage-summary": "پربندھ چھڈن سنیہہ", "usermessage-editor": "پربندھ ڈاکیا۔", "watchlist": "میریاں اکھاں تھلے رکھی لسٹ", "mywatchlist": "میری اکھ تھلے رکھی لسٹ", "watchlistfor2": "$1 تے $2 ل‏ی", "nowatchlist": "تھواڈی اکھ تھلے لسٹ چ کوئی شے نئیں۔", "watchlistanontext": "مہربانی کرکے $1 نوں ویکھو یا اپنی اکھ تھلے رکھی لسٹ نوں بدلو۔", - "watchnologin": "لاگ ان نئیں ہوۓ او", + "watchnologin": "لاگ ان نئیں ہوئے او", "addwatch": "اکھ تھلے کرو", "addedwatchtext": "اے صفحہ \"[[:$1]] تواڈیاں اکھاں تھلے آگیا اے۔<br />\nمستقبل وچ اس صفحہ تے ایدے بارے چ گل بات نویاں تبدیلیاں وچ موٹے نظر آن گے تا کہ آسانی نال کھوجیا جا سکے۔", "removewatch": "اکھ تھلیوں ہٹاؤ", @@ -1514,7 +1517,7 @@ "protectlogpage": "بچت لاگ", "protectlogtext": "تھلے صفے نوں بچان لئی تبدیلیاں دی لسٹ اے۔\n[[Special:ProtectedPages|بچاۓ صفیاں دی لسٹ]] ویکھو ہن دے اوپریشنل صفیاں دے بچاؤ دی لسٹ ویکھو۔", "protectedarticle": "\"[[$1]]\" بچایا گیا اے", - "modifiedarticleprotection": "\"[[$1]]\" آستے بچاؤ بدلیا", + "modifiedarticleprotection": "\"[[$1]]\" واسطے بچاؤ بدلیا", "unprotectedarticle": "\"[[$1]]\" توں بچاؤ ہٹا لیا گیا۔", "movedarticleprotection": "بچاؤ سیٹنگ \"[[$2]]\" توں \"[[$1]]\" ول پلٹی۔", "protect-title": "\"$1\" لئی بچاؤ پدھر تبدیل۔", @@ -1545,7 +1548,7 @@ "protect-cantedit": "تسی اس صفحے دے حفاظتی درجے نوں نہیں بدل سکدے کیونکہ توانوں اس کم دی اجازت نہیں اے۔", "protect-othertime": "دوجے ویلے:", "protect-othertime-op": "دوجے ویلے:", - "protect-existing-expiry": "ہن دا مکن ویاہ: $3، $2", + "protect-existing-expiry": "مُکن ویلہ حالے ہیگا اے: $3، $2", "protect-otherreason": ":دوجی وجہ", "protect-otherreason-op": "ہور وجہ", "protect-dropdown": "*بچاؤ دیاں عام وجہاں\n** زیادہ وینڈالزم\n** زیادہ سپامنگ\n** بے مقصد لکھت چگڑے\n** زیادہ ویکھیا جان والا صفہ", @@ -1559,7 +1562,7 @@ "restriction-edit": "لکھو", "restriction-move": "لے چلو", "restriction-create": "بناؤ", - "restriction-upload": "اتے چاڑو", + "restriction-upload": "اُتے چاڑھو", "restriction-level-sysop": "پوری طرح بچایا ہویا", "restriction-level-autoconfirmed": "کج بچایا گیا", "restriction-level-all": "کسے وی درجے تے", @@ -1598,7 +1601,7 @@ "undelete-cleanup-error": "ناں ورتی گئی آرکائیو فائل \"$1\" دے مٹانے چ غلطی۔", "undelete-missing-filearchive": "فائل آرکائیو آئی ڈی $1 نوں واپس کرن چ ناکامی کیوں جے اے ڈیٹابیس نئیں اے۔\nخورے اے پہلے ای مٹ چکی ہووے۔", "undelete-error": "مٹاۓ صفے واپس لیان چ غلطی", - "undelete-error-short": "فاغل واپس کرن چ غلطی: $1", + "undelete-error-short": "فائل واپس کرن وچ غلطی: $1", "undelete-error-long": "فائل واپس کرن لگیاں غلطیاں ہوئیاں:\n$1", "undelete-show-file-confirm": "تساں نوں کیا Ù¾Ú© اے جے تسیں فائل \"<nowiki>$1</nowiki>\" دی مٹائی ریوین $2 توں $3 تک ویکھنا چاندے او؟", "undelete-show-file-submit": "ہاں جی", @@ -1618,22 +1621,22 @@ "month": "مہینے توں (تے پہلاں):", "year": "سال توں (تے پہلاں):", "sp-contributions-newbies": "صرف نویں ورتن والیاں دے کم وکھاؤ", - "sp-contributions-newbies-sub": "نویں کھاتیاں آستے", - "sp-contributions-newbies-title": "نویں کھاتے چ ورتن والے دے کم", + "sp-contributions-newbies-sub": "نویاں کھاتےآں واسطے", + "sp-contributions-newbies-title": "نویں کھاتے وچ ورتن والے دے کم", "sp-contributions-blocklog": "لاگ روکو", "sp-contributions-deleted": "ورتن والے دے کم مٹادتے گۓ۔", "sp-contributions-uploads": "چڑھائیاں فائلاں", "sp-contributions-logs": "لاگز", "sp-contributions-talk": "گل بات", - "sp-contributions-userrights": "ورتن والیاں دے حقاں دا سعاب کتاب", + "sp-contributions-userrights": "ورتن والیاں دے حقاں دا حساب کتاب", "sp-contributions-blocked-notice": "ایس ورتن والے تے اجکل روک اے۔ \nروکن لاگ چ ایدے بارے تھلے لکھیا اے۔", "sp-contributions-blocked-notice-anon": "ایس آئی پی پتے تے اجکل روک اے۔ \nروکن لاگ چ ایدے بارے تھلے لکھیا اے۔", - "sp-contributions-search": "حصے پان آلیاں دی تلاش", + "sp-contributions-search": "حصے پاؤن آلیاں دی تلاش", "sp-contributions-username": "آئی پی پتہ یا ورتن آلا ناں:", "sp-contributions-toponly": "صرف اوہ تبدیلیاں وکھاؤ جیہڑیاں سب توں نیڑے ویلے ہویاں نیں۔", "sp-contributions-submit": "کھوجو", "whatlinkshere": "ایتھے کیدا جوڑ اے", - "whatlinkshere-title": "او صفے جیڑے \"$1\" نال جڑے نیں", + "whatlinkshere-title": "او صفے جہڑے \"$1\" نال جڑے نیں", "whatlinkshere-page": "صفہ:", "linkshere": "تھلے دتے گۓ صفے اس دے نال جڑدے نے '''[[:$1]]''':", "nolinkshere": "'''[[:$1]]''' دے نال کسے دا جوڑ نہیں", @@ -1644,7 +1647,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 مورت جوڑ", @@ -1681,6 +1684,7 @@ "ipb-unblock": "ورتن والا یا آئی پی پتہ کھولو", "ipb-blocklist": "روکیاں گياں نوں ویکھو", "ipb-blocklist-contribs": "$1 دے کم", + "ipb-blocklist-duration-left": "سجے", "unblockip": "ورتن آلے تے روک بند کرو", "unblockiptext": "تھلے دتا گیا فارم ورتو لکھن دی ازادی لین لئی پہلاں توں روکے آئی پی پتے یا ورتن ناں لئی۔", "ipusubmit": "ایس روک نوں ہٹاؤ", @@ -1820,7 +1824,7 @@ "semiprotectedpagemovewarning": "'''نوٹ:''' ایہ صفہ نوں بچایا گیا اے تاں جے کھاتے والے ورتن والے ای اینوں ایتھں لجا سکن۔\nآخری لاگ انٹری اتے پتے لئی تھلے دتی گئی اے:", "move-over-sharedrepo": "== فائل ہیگی ==\nفائل نون ایس ٹائٹل[[:$1]] ول لجانا اک ہور فائل تے اینوں چڑھا دے گا۔.", "file-exists-sharedrepo": "جیہڑا فائل ناں چنیاں گیا جے اوہ پہلے ای اک سانجی چ ورتیا جاریا اے۔\nمہربانی کرکے اک ہور ناں چنو۔", - "export": "صفحے باہر پیجو", + "export": "صفحے باہر بھیجو", "exporttext": "تسیں اے لکھت اگے پیج سکدے او تے لکھت تریخ اک خاص صفے دی یا کسے ایکس ایم ایل چ صفیاں صفیاں چ لپیٹی۔ اے کسے ہور وکی چ وی لیایا جاسکدا اے میڈیاوکی ورتدیاں [[Special:Import|صفے لیاؤ]] دی راہ۔\n\nصفے بار لجان لئی، تھلے دتے گۓ لکھت ڈبے چ سرناواں لکھو، اک سرناواں اک لائن چ اور چنوں کیا جے تسیں ہن دی ریوین چاندے پرانیاں دے ناۂ نال، رکارڈ صفہ لین چ، یا ہن دی ریوین آخری تبدیلی دی جانکاری نال۔\n\nدوجے کیس چ تسیں جوڑ وی ورت سکدے او، ادھارن لئی [[{{#Special:Export}}/{{MediaWiki:Mainpage}}]] صفہ \"[[{{MediaWiki:Mainpage}}]]\" لئی۔", "exportall": "سارے صفے لجاؤ", "exportcuronly": "صرف ہن والیاں ریوین نال نئں۔ پورا ریکارڈ نیں۔", @@ -1834,7 +1838,7 @@ "export-download": "فائل دے طور تے بچاؤ", "export-templates": "سچہ شامل کرو", "export-pagelinks": "جوڑ والے صفے جوڑو ایتھوں تک:", - "allmessages": "سسٹم سنیآ", + "allmessages": "سسٹم سنیہہ", "allmessagesname": "ناں", "allmessagesdefault": "ڈیفالٹ لکھائی", "allmessagescurrent": "موجودہ لکھائی", @@ -1876,7 +1880,7 @@ "importfailed": "لیانا فیل: <nowiki>$1</nowiki>", "importunknownsource": "انجان لیان سورس ٹائپ", "importcantopen": "لیاندی گئی فائل نئیں کھولی جاسکی", - "importbadinterwiki": "پیڑا انٹروکی لنک", + "importbadinterwiki": "بھیڑا انٹروکی لنک", "importsuccess": "لے کے آگۓ Ø¢Úº!", "importnosources": "کوئی ٹرانسوکی امپورٹ سورسز نئیں دسیا گیا تے ڈائرکٹ رکارڈ چڑھاۓ کم نئیں کر رۓ۔", "importnofile": "لیاندی ہوئی کوئی فائل نئیں چڑہائی گئی۔", @@ -1896,7 +1900,7 @@ "import-error-special": "\"$1\" صفہ نئیں لیایا گیا کیوں جے ایہ اک خاص ناں تھان توں نال جڑدا اے جیءرا صفیاں لئی نئیں۔", "import-error-invalid": "\"$1\" صفہ نئیں لیایا گیا ایدا ناں نئیں رکھیا جاسکدا۔", "importlogpage": "لاگ لے کے آؤ", - "importlogpagetext": "پربنھک لیان صفیاں دا ایڈٹ رکارڈ نال دوجے وکیاں توں۔", + "importlogpagetext": "پربندھک لیان صفیاں دا ایڈٹ رکارڈ نال دوجے وکیاں توں۔", "import-logentry-upload-detail": "$1 {{PLURAL:$1|ریوین|ریویناں}}", "import-logentry-interwiki-detail": "$1 {{PLURAL:$1|ریوین|ریویناں }} $2 توں", "javascripttest": "JavaScript ٹیسٹنگ", @@ -1914,8 +1918,8 @@ "tooltip-ca-talk": "اس صفے بارے گل بات", "tooltip-ca-edit": "اس صفے تے لکھو", "tooltip-ca-addsection": "اس گل بات وچ حصہ لے لو۔", - "tooltip-ca-viewsource": "اے صفہ بچایا گیا اے۔\nتسی اینو صرف ویکھ سکدے او۔", - "tooltip-ca-history": "اس صفے دا پرانہ ورژن۔", + "tooltip-ca-viewsource": "اے صفہ بچایا گیا اے۔\nتسی اینوں صرف ویکھ سکدے او۔", + "tooltip-ca-history": "اس صفے دا پرانا ورژن۔", "tooltip-ca-protect": "اس صفے نوں بچاؤ", "tooltip-ca-unprotect": "ایس صفے دا بچاؤ بدلو۔", "tooltip-ca-delete": "اس صفے نوں مٹاؤ", @@ -1924,16 +1928,16 @@ "tooltip-ca-watch": "اس صفحہ تے نظر رکھو", "tooltip-ca-unwatch": "اس صفحے توں نظر ہٹاؤ", "tooltip-search": "کھوج {{SITENAME}}", - "tooltip-search-go": "اس ناں دے صفے تے چلو، اگر ایہ ہیگا اے", - "tooltip-search-fulltext": "اس شبد نوں صفیاں چ لبو", - "tooltip-p-logo": "پہلا صفہ", + "tooltip-search-go": "اس ناں دے صفے تے چلو، جے ایہ ہیگا اے", + "tooltip-search-fulltext": "اس شبد نوں صفحےآں وچ لبھو", + "tooltip-p-logo": "پہلا صفہ ویکھو", "tooltip-n-mainpage": "پہلے صفے نوں ویکھو", "tooltip-n-mainpage-description": "پہلے صفے تے جاؤ", - "tooltip-n-portal": "پربندھ بارے ، تسیں کی کر سکدے او تے کنج کھوج سکدے او", + "tooltip-n-portal": "پربندھ بارے ، تسیں کیہ کر سکدے او تے کنج کھوج سکدے او", "tooltip-n-currentevents": "موجودہ حالات تے پچھلیاں معلومات دیکھو", "tooltip-n-recentchanges": "وکی تے نویاں تبدیلیاں۔", "tooltip-n-randompage": "کوئی صفہ کھولو۔", - "tooltip-n-help": "مدد لینے آلی جگہ۔", + "tooltip-n-help": "لبھن دی جگہ۔", "tooltip-t-whatlinkshere": "اس نال جڑے سارے وکی صفے۔", "tooltip-t-recentchangeslinked": "اس صفے توں جڑے صفیاں چ نویاں تبدیلیاں", "tooltip-feed-rss": "RSS feed for this page", @@ -1942,7 +1946,7 @@ "tooltip-t-emailuser": "اس ورتن والے نو ای میل کرو", "tooltip-t-upload": "فائل چڑھاؤ", "tooltip-t-specialpages": "سارے خاص صفیاں دی اک لسٹ", - "tooltip-t-print": "اس صفے دا چھپنے آلا ورژن ویکھو", + "tooltip-t-print": "اس صفحے دا چھپن والا ورژن ویکھو", "tooltip-t-permalink": "اس صفے دے اس ورژن نال پکا جوڑ", "tooltip-ca-nstab-main": "مواد آلا صفہ ویکھو", "tooltip-ca-nstab-user": "ورتن آلے دا صفہ ویکھو", @@ -1950,7 +1954,7 @@ "tooltip-ca-nstab-special": "ایہ اک خاص صفہ اے، تے ایہنوں لکھیا نئی جا سکدا۔", "tooltip-ca-nstab-project": "وینت دا صفہ ویکھو", "tooltip-ca-nstab-image": "فائل دا صفہ ویکھو", - "tooltip-ca-nstab-mediawiki": "پربندھ سنیعہ ویکھو", + "tooltip-ca-nstab-mediawiki": "نظامی سنیہہ ویکھو", "tooltip-ca-nstab-template": "سانچہ ویکھو", "tooltip-ca-nstab-help": "مدد دا صفحہ ویکھو", "tooltip-ca-nstab-category": "کیٹاگری آلا صفہ ویکھو", @@ -1981,7 +1985,7 @@ "spamprotectiontitle": "سپام بچاؤ فلٹر", "spamprotectiontext": "لکھت جیہڑی تسی بچانا چاندے او اونوں سپام فلٹر نے روکیا اے۔\nایہ خورے کسے جوڑ دی بارلے بلیکلسٹڈ سائٹ نال ہون توں ہوئی اے۔", "spamprotectionmatch": "تھلے دتی گئی لکھت نے ساڈے سپام فلٹر نوں چلایا: $1", - "spambot_username": "میڈیاوکی سپام سفائی", + "spambot_username": "میڈیاوکی سپام صفائی", "spam_reverting": "آخری ریوین ول جیدے چ $1 دے جوڑ ناں ہون۔", "spam_blanking": "سارے ریوین جناں چ $1 نوں جوڑ نیں، طاف کیتا جاریا اے۔", "simpleantispam-label": "سپام روک پھاٹک\nDo <strong>not</strong> fill this in!", @@ -1990,7 +1994,7 @@ "pageinfo-watchers": "ویکھن والے", "pageinfo-edits": "تبدیلیاں گنتی", "pageinfo-authors": "وکھرے لکھاریاں دی گنتی", - "pageinfo-toolboxlink": "صفہ وات", + "pageinfo-toolboxlink": "صفحہ جانکاری", "markaspatrolleddiff": "ویکھے گۓ دا نشان لاؤ", "markaspatrolledtext": "ایس صفے تے ویکھن دا نشان لاؤ", "markedaspatrolled": "ویکھن دا نشان لاؤ", @@ -2019,7 +2023,7 @@ "file-info": "فائل ناپ: $1، MIME ٹائپ: $2", "file-info-size": "پکسل:$1 × $2, فائل سائز: $3, مائم ٹائپ: $4", "file-info-size-pages": "$1 × $2 پکسل, فائل ناپ: $3, مائم ٹائپ: $4, $5 {{PLURAL:$5|صفہ|صفے}}", - "file-nohires": "اس توں وڈی فوٹو موجود نہیں۔", + "file-nohires": "اس توں وڈی مورت موجود نہیں۔", "svg-long-desc": "ایس وی جی فائل، پکسل:$1 × $2، فائل سائز: $3", "show-big-image": "اصلی فائل", "show-big-image-preview": "ایس وکھالے دا ناپ: $1۔", @@ -2458,6 +2462,18 @@ "watchlisttools-view": "ملدیاں ہوئیاں تبدیلیاں ویکھو", "watchlisttools-edit": "اکھ تھلے رکھے ہوۓ صفحیاں نوں ویکھو تے تبدیل کرو", "watchlisttools-raw": "کچی اکھ تھلے رکھی ہوئی نو تبدیل کرو", + "hijri-calendar-m1": "محرم", + "hijri-calendar-m2": "صفر", + "hijri-calendar-m3": "ربیع الاول", + "hijri-calendar-m4": "ربیع الثانی", + "hijri-calendar-m5": "جمادی الاول", + "hijri-calendar-m6": "جمادی الثانی", + "hijri-calendar-m7": "رجب", + "hijri-calendar-m8": "شعبان", + "hijri-calendar-m9": "رمضان", + "hijri-calendar-m10": "شوال", + "hijri-calendar-m11": "ذوالقعدہ", + "hijri-calendar-m12": "ذوالحجہ", "signature": "[[{{ns:user}}:$1|$2]] ([[{{ns:user_talk}}:$1|talk]])", "duplicate-defaultsort": "'''خبردار:''' ڈیفالٹ چابی \"$2\" پہلی ڈیفالٹ چابی \"$1\" دے اتے لگ گئی اے۔", "version": "ورژن", @@ -2591,41 +2607,11 @@ "feedback-thanks": "شکریہ ! تواڈی صلاع صفہ \"[$2 $1]\" تے چاڑ دتی گئی اے۔", "searchsuggest-search": "کھوج", "searchsuggest-containing": "بند کر ریا اے۔۔۔", - "api-error-badaccess-groups": "تھوانوں ایس وکی تے فائلاں چڑھان دی اجازت نئیں۔", "api-error-badtoken": "اندر دی غلطی: برا ٹوکن", - "api-error-copyuploaddisabled": "یو آر ایل نال فائل چڑھانا ایس سرور تے نکام", - "api-error-duplicate": "ایتھے {{PLURAL:$1|ہے اک ہور فائل|ہین کچ ہور فائلاں}} ایسے مواد نال ایس تھاں تے پہلے ای ہے۔", - "api-error-duplicate-archive": "ایتھے {{PLURAL:$1|سی اک ہور فائل|سن کج ہور فائلاں}} پہلے ای ایس تھاں تے اے اکو جے مواد نال پر {{PLURAL:$1|اے سی|اوہ سن}} مٹایا گیا۔", - "api-error-empty-file": "جیڑی فائل تسی دسی اے اوہ حالی اے۔", "api-error-emptypage": "نواں بناریا آن، خالی صفیاں دی اجازت نئیں۔", - "api-error-fetchfileerror": "اندر دی غلطی: فائل لیندیاں کوئی غلطی ہوئی۔", - "api-error-file-too-large": "جیڑی فائل تسی دسی اے اوہ بوت وڈی اے۔", - "api-error-filename-tooshort": "اس فائل دا ناں بوت چھوٹا اے۔", - "api-error-filetype-banned": "اس قسم دی فائل تے پابندی اے۔", - "api-error-filetype-banned-type": "$1 {{PLURAL:$4|اینج دی فائل دی اجازت نئیں|اینج دیاں فائلاں دی اجازت نئیں}} اجازت دتی {{PLURAL:$3|فائل ٹائپ اے|فائل ٹائپ نیں}} $2۔", - "api-error-filetype-missing": "فائل چ ایکسٹنشن نئیں اے۔", - "api-error-hookaborted": "جیڑی تبدیلی تسی کرنا چاہی اے، اونوں اک ایکسٹنشن کنڈے نیں بند کردتا اے۔", - "api-error-http": "انٹرنیٹ ئلطی: سرور نال کوئی جوڑ نئیں۔", - "api-error-illegal-filename": "اس فائل دے ناں تے پابندی اے۔", - "api-error-internal-error": "اندر دی غلطی: تواڈے وکی تے چڑھاندیاں کوئی غلطی ہوئی اے۔", - "api-error-invalid-file-key": "اندر دی غلطی: فائل ناں لبی کچے سٹور ج", - "api-error-missingparam": "اندر دی غلطی: غیب پیرامیٹرز منگن تے۔", - "api-error-missingresult": "اندر دی غلطی: سعاب نئیں لاسکدے جے کاپی چلے گی۔", - "api-error-mustbeloggedin": "فائلاں اپلوڈ کرن واسطے توانوں لاگ ان کرنا ضروری اے۔", - "api-error-mustbeposted": "اندر دی غلطی: ایچ ٹیٹیپی پوسٹ چائیدی اے۔", - "api-error-noimageinfo": "فائل چڑھانا کامیاب، پر سرور نے فائل بارے سانوں کوئی دس نئیں پیجی۔", - "api-error-nomodule": "انٹنیٹ غلطی: فائل چڑھان والا موڈیول سیٹ ںئیں", - "api-error-ok-but-empty": "انٹرنیٹ غلطی: سرور ولوں کوئی جواب نئیں۔", - "api-error-overwrite": "اک ہونی فائل تے ہور لکھن دی اجازت نئیں۔", "api-error-stashfailed": "اندر دی غلطی: سرور کچیاں فائلاں نوں رکھن چ نکام۔", - "api-error-timeout": "سرور نے توقع رکھے ویلے ج جواب نئیں دتا۔", - "api-error-unclassified": "اک انجان غلطی ہوگئی اے۔", - "api-error-unknown-code": "انجان غلطی:\"$1\"", - "api-error-unknown-error": "اندر دی غلطی: کوئی چیز غلط ہوئی جدوں تسی فائل چڑھاندے سی۔", "api-error-unknown-warning": "انجان خبرداری: $1", "api-error-unknownerror": "انجان غلطی : \"$1\"۔", - "api-error-uploaddisabled": "فائل جڑھانا ایس وکی تے بند اے۔", - "api-error-verification-error": "اے فائل کرپٹ ہو سکدی یا فیر ایدا فارمیٹ غلط اے۔", "special-characters-group-latin": "لاطینی", "special-characters-group-latinextended": "ودویں لاطینی", "special-characters-group-ipa": "IPA", @@ -2642,5 +2628,6 @@ "special-characters-group-gujarati": "گجراتی", "special-characters-group-thai": "تھائی", "special-characters-group-lao": "لاؤ", - "special-characters-group-khmer": "کھیمر" + "special-characters-group-khmer": "کھیمر", + "mw-widgets-titleinput-description-redirect": "مڑ رجوع $1 نوں" } diff --git a/languages/i18n/ps.json b/languages/i18n/ps.json index ab2c9ff80a..fe83af4bd2 100644 --- a/languages/i18n/ps.json +++ b/languages/i18n/ps.json @@ -1120,7 +1120,7 @@ "uploaddisabledtext": "د دوتنې پورته کولو آسانتياوې ناچارن شوي.", "php-uploaddisabledtext": "په PHP کې دوتنې پورته کېدنې ناچارن شوي.\nلطفاً د file_uploads امستنې وڅارئ.", "uploadscripted": "دا دوتنه د HTML يا سکرېپټ کوډ لري چې کېدای شي په تېروتنه د جال يو کتنمل له خوا تفسير شوې وي.", - "uploadscriptednamespace": "د SVG دا دوتنه يو ناقانونه نومتشيال لري \"$1\".", + "uploadscriptednamespace": "د SVG دا دوتنه يو ناقانونه نومتشيال لري \"<nowiki>$1</nowiki>\".", "uploadinvalidxml": "د پورته شوې دوتنې XML نه شي تحليل کېدلی.", "uploadvirus": "دا دوتنه ويروس لري! تفصيل: $1", "upload-source": "سرچينيزه دوتنه", @@ -2505,21 +2505,9 @@ "feedback-thanks-title": "مننه!", "feedback-useragent": "کارن پلاوی:", "searchsuggest-search": "پلټل", - "api-error-badaccess-groups": "تاسې دې ويکي کې د دوتونو ورپورته کولو پرېښه نه لرۍ.", - "api-error-empty-file": "کومه دوتنه چې تاسې دلته سپارلې هغه تشه ده.", "api-error-emptypage": "د نوي تشو مخونو جوړولو پرېښنه نه شته.", - "api-error-file-too-large": "کومه دوتنه چې تاسې دلته سپارلې ډېره لويه ده.", - "api-error-filename-tooshort": "د دوتنې نوم ډېر لنډ دی.", - "api-error-filetype-banned": "په دې ډول دوتنې بنديز دی.", - "api-error-filetype-missing": "دوتنې نوم يو شاتاړی نه لري.", - "api-error-illegal-filename": "د دوتنې نوم نه دی پرېښل شوی.", - "api-error-mustbeloggedin": "د دوتنو د پورته کولو لپاره بايد تاسې غونډال کې ننوتلی اوسۍ.", - "api-error-unclassified": "يوه ناڅرگنده تېروتنه رامېنځته شوه.", - "api-error-unknown-code": "ناڅرگنده تېروتنه: \"$1\"", "api-error-unknown-warning": "ناڅرگنده گواښنه: \"$1\".", "api-error-unknownerror": "ناڅرگنده تېروتنه: \"$1\".", - "api-error-uploaddisabled": "په دې ويکي باندې پورته کېدنې ناچارنې شوي.", - "api-error-verification-error": "کېدای شي دا دوتنه خرابه وي او يا هم ناسم شاتاړی ولري.", "duration-seconds": "$1 {{PLURAL:$1|ثانيه|ثانيې}}", "duration-minutes": "$1 {{PLURAL:$1|دقيقه|دقيقې}}", "duration-hours": "$1 {{PLURAL:$1|گړۍ|گړۍ}}", diff --git a/languages/i18n/pt-br.json b/languages/i18n/pt-br.json index fc6fe92112..2250b88826 100644 --- a/languages/i18n/pt-br.json +++ b/languages/i18n/pt-br.json @@ -105,7 +105,8 @@ "Bruno.S.Alves 270", "!Silent", "Joao Xavier", - "Nahime2015" + "Nahime2015", + "Alex Great" ] }, "tog-underline": "Sublinhar links:", @@ -740,7 +741,7 @@ "selfredirect": "<strong>Aviso:</strong> Você esta redirecionando esta pagina para ela mesmo. Você pode ter especificado o caminho errado para redirecionar, ou você pode estar editando a pagina errada. Se você clicar \"{{int:savearticle}}\" novamente, o redirecionamento será criado de qualquer modo.", "missingcommenttext": "Por favor, introduzida um comentário abaixo.", "missingcommentheader": "'''Lembrete:''' Você não introduziu um assunto/título para este comentário.\nSe você clicar novamente \"{{int:savearticle}}\", a sua edição será salva sem um assunto/título.", - "summary-preview": "Previsão do resumo:", + "summary-preview": "Previsão do resumo de edição:", "subject-preview": "Previsão do assunto/título:", "previewerrortext": "Ocorreu um erro ao tentar pré-visualizar suas alterações.", "blockedtitle": "O usuário está bloqueado", @@ -766,7 +767,7 @@ "userpage-userdoesnotexist": "A conta \"<nowiki>$1</nowiki>\" não se encontra registrada.\nVerifique se deseja mesmo criar/editar esta página.", "userpage-userdoesnotexist-view": "A conta de usuário \"$1\" não está registrada.", "blocked-notice-logextract": "Este usuário está atualmente bloqueado.\nO registro de bloqueio mais recente é fornecido abaixo, para referência:", - "clearyourcache": "<strong>Nota:</strong> Após salvar, você pode ter que limpar o \"cache\" do seu navegador para ver as alterações.\n*<strong>Firefox / Safari:</strong> Pressione <em>Shift</em> enquanto clica <em>Recarregar</em>, ou pressione <em>Ctrl-F5</em> ou <em>Ctrl-R</em> (<em>⌘-R</em> no Mac)\n*<strong>Google Chorme:</strong> Pressione <em>Ctrl-Shift-R</em> (<em>⌘-Shift-R</em> no Mac)\n* <strong>Internet Explorer:</strong> Pressione<em>Ctrl</em> enquanto clica <em>Recarregar</em>, ou Pressione <em>Ctrl-F5</em>\n* <strong>Opera:</strong> Vá para <em>Menu → Configurações</em> (<em>Opera → Preferencias</em> no Mac) e depois para <em>Privacidade e Segurança → Limpar dados de navegação → Imagens e arquivos em cache</em>.", + "clearyourcache": "<strong>Nota:</strong> Após salvar, você pode ter que limpar o \"cache\" do seu navegador para ver as alterações.\n*<strong>Firefox / Safari:</strong> Pressione <em>Shift</em> enquanto clica <em>Recarregar</em>, ou pressione <em>Ctrl-F5</em> ou <em>Ctrl-R</em> (<em>⌘-R</em> no Mac)\n*<strong>Google Chrome:</strong> Pressione <em>Ctrl-Shift-R</em> (<em>⌘-Shift-R</em> no Mac)\n* <strong>Internet Explorer:</strong> Pressione<em>Ctrl</em> enquanto clica <em>Recarregar</em>, ou Pressione <em>Ctrl-F5</em>\n* <strong>Opera:</strong> Vá para <em>Menu → Configurações</em> (<em>Opera → Preferencias</em> no Mac) e depois para <em>Privacidade e Segurança → Limpar dados de navegação → Imagens e arquivos em cache</em>.", "usercssyoucanpreview": "'''Dica:''' Utilize o botão \"{{int:showpreview}}\" para testar seu novo CSS antes de salvar.", "userjsyoucanpreview": "'''Dica:''' Utilize o botão \"{{int:showpreview}}\" para testar seu novo JavaScript antes de salvar.", "usercsspreview": "'''Lembre-se de que você está apenas previsualizando o seu CSS particular.'''\n'''Ele ainda não foi salvo!'''", @@ -1048,6 +1049,7 @@ "search-interwiki-caption": "Projetos irmãos", "search-interwiki-default": "Resultados de $1:", "search-interwiki-more": "(mais)", + "search-interwiki-more-results": "Mais resultados", "search-relatedarticle": "Relacionado", "searchrelated": "relacionados", "searchall": "todos", @@ -1137,6 +1139,7 @@ "youremail": "Seu e-mail:", "username": "Nome de {{GENDER:$1|usuário|usuária|usuário(a)}}:", "prefs-memberingroups": "{{GENDER:$2|Membro}} {{PLURAL:$1|do grupo|dos grupos}}:", + "group-membership-link-with-expiry": "$1 (até $2)", "prefs-registration": "Hora de registro:", "yourrealname": "Nome verdadeiro:", "yourlanguage": "Língua:", @@ -1182,7 +1185,7 @@ "editinguser": "Modificando privilégios d{{GENDER:$1|o usuário|a usuária|o(a) usuário(a)}} <strong>[[User:$1|$1]]</Strong> $2", "viewinguserrights": "Visualizar os privilégios {{GENDER:$1|do usuário|da usuária}} <strong>[[User:$1|$1]]</strong> $2", "userrights-editusergroup": "Editar grupos {{GENDER:$1|do usuário|da usuária|do(a) usuário(a)}}", - "userrights-viewusergroup": "Ver grupos de usuários", + "userrights-viewusergroup": "Ver grupos de {{GENDER:$1|usuários}}", "saveusergroups": "Salvar grupos de{{GENDER:$1|usuário}}", "userrights-groupsmember": "Membro de:", "userrights-groupsmember-auto": "Membro implícito de:", @@ -1192,6 +1195,15 @@ "userrights-nodatabase": "O banco de dados $1 não existe ou não é um banco de dados local.", "userrights-changeable-col": "Grupos que pode alterar", "userrights-unchangeable-col": "Grupos que não pode alterar", + "userrights-expiry-current": "Expira a $1", + "userrights-expiry-none": "Não expira", + "userrights-expiry": "Expira em:", + "userrights-expiry-existing": "A proteção atual expirará às $3 de $2", + "userrights-expiry-othertime": "Outra duração:", + "userrights-expiry-options": "1 dia:1 day,1 semana:1 week,1 mês:1 month,3 meses:3 months,6 meses:6 months,1 ano:1 year", + "userrights-invalid-expiry": "O tempo de expiração para o grupo \"$1\" é inválido.", + "userrights-expiry-in-past": "O tempo de expiração para o grupo \"$1\" está no passado.", + "userrights-cannot-shorten-expiry": "Você não pode antecipar a expiração do grupo \"$1\". Somente usuários com permissão para adicionar e remover este grupo pode apresentar tempos de expiração.", "userrights-conflict": "Há um comflito de permissões de usuário! Por favor, revise e confirme as alterações novamente.", "group": "Grupo:", "group-user": "Usuários", @@ -1393,22 +1405,52 @@ "recentchanges-legend-plusminus": "(''±123'')", "recentchanges-submit": "Exibir", "rcfilters-activefilters": "Filtros ativos", + "rcfilters-restore-default-filters": "Restaurar filtros padrão", + "rcfilters-clear-all-filters": "Limpar todos os filtros", "rcfilters-search-placeholder": "Filtrar alterações 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-feedbacklink": "Forneça feedback sobre os novos filtros (beta)", + "rcfilters-highlightbutton-title": "Realçar os resultados", + "rcfilters-highlightmenu-title": "Selecione uma cor", "rcfilters-filterlist-noresults": "Nenhum filtro encontrado", + "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-filtergroup-authorship": "Editar autoria", "rcfilters-filter-editsbyself-label": "Suas próprias edições", "rcfilters-filter-editsbyself-description": "Edições por você.", "rcfilters-filter-editsbyother-label": "Edições de outros", "rcfilters-filter-editsbyother-description": "Edições criadas por outros usuários (não você.)", - "rcfilters-filtergroup-userExpLevel": "Nível de experiência do usuário", + "rcfilters-filtergroup-userExpLevel": "Nível de experiência (apenas para usuário registados)", "rcfilters-filter-userExpLevel-newcomer-label": "Recém-chegados", - "rcfilters-filter-userExpLevel-newcomer-description": "Editores muito novos: menos de 10 edições e 4 dias de atividade.", + "rcfilters-filter-userExpLevel-newcomer-description": "Menos de 10 edições e 4 dias de atividade.", "rcfilters-filter-userExpLevel-learner-label": "Aprendizes", "rcfilters-filter-userExpLevel-learner-description": "Mais dias de atividade e edições do que \"Novatos\", mas menos do que \"Usuários experientes\".", "rcfilters-filter-userExpLevel-experienced-label": "Usuários experientes", "rcfilters-filter-userExpLevel-experienced-description": "Mais de 30 dias de atividade e 500 edições.", + "rcfilters-filtergroup-automated": "Contribuições automatizadas", + "rcfilters-filter-bots-label": "Robô", + "rcfilters-filter-bots-description": "Edições feitas por ferramentas automatizadas.", + "rcfilters-filter-humans-label": "Humano (não bot)", + "rcfilters-filter-humans-description": "Edições feitas por editores humanos.", + "rcfilters-filtergroup-significance": "Significado", + "rcfilters-filter-minor-label": "Edições menores", + "rcfilters-filter-minor-description": "Edita o autor rotulado como menor.", + "rcfilters-filter-major-label": "Edições não menores", + "rcfilters-filter-major-description": "Edições não rotuladas como menores.", + "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 ....", + "rcfilters-filter-newpages-label": "Criações de páginas", + "rcfilters-filter-newpages-description": "Edições que fazem novas páginas.", + "rcfilters-filter-categorization-label": "Mudanças de categoria", + "rcfilters-filter-categorization-description": "Registros de páginas que estão sendo adicionadas ou removidas de categorias.", + "rcfilters-filter-logactions-label": "Acções registadas", + "rcfilters-filter-logactions-description": "Ações administrativas, criação de contas, eliminação de páginas, carregamentos ...", "rcnotefrom": "Abaixo {{PLURAL:$5|é a mudança|são as mudanças}} desde <strong>$3, $4</strong> (up to <strong>$1</strong> shown).", "rclistfrom": "Mostrar as novas alterações a partir das $2 de $3", "rcshowhideminor": "$1 edições menores", @@ -1542,7 +1584,7 @@ "uploaded-setting-handler-svg": "A configuração do atributo \"handler\" com destino remoto/de dados/<i>script</i> em arquivos SVG está bloqueada. Foi detetado <code>$1=\"$2\"</code> no arquivo SVG carregado.", "uploaded-remote-url-svg": "A configuração de qualquer atributo de estilo com um URL remoto em arquivos SVG está bloqueada. Foi detetado <code>$1=\"$2\"</code> no arquivo SVG carregado.", "uploaded-image-filter-svg": "Foi encontrado um filtro de imagem com o URL: <code><$1 $2=\"$3\"></code> no arquivo SVG carregado.", - "uploadscriptednamespace": "Este aruivo SVG contém um espaço nominal probido \"$1\"", + "uploadscriptednamespace": "Este aruivo SVG contém um espaço nominal probido \"<nowiki>$1</nowiki>\"", "uploadinvalidxml": "O XML no arquivo enviado não pôde ser analisado.", "uploadvirus": "O arquivo contém vírus!\nDetalhes: $1", "uploadjava": "Este é um arquivo ZIP que contém um arquivo .class de Java.\nNão é permitido o upload de arquivos Java já que eles podem contornar as restrições de segurança.", @@ -1919,8 +1961,10 @@ "apisandbox-sending-request": "Enviando solicitação de API ...", "apisandbox-loading-results": "Recebendo resultados da API ...", "apisandbox-results-error": "Ocorreu um erro ao carregar a resposta de consulta da API: $1.", - "apisandbox-request-params-json": "parâmetros JSON:", + "apisandbox-request-selectformat-label": "Mostrar dados do pedido como:", + "apisandbox-request-format-url-label": "Sequência de consulta de URL", "apisandbox-request-url-label": "URL solicitante:", + "apisandbox-request-json-label": "Pedido JSON:", "apisandbox-request-time": "Tempo do pedido: {{PLURAL:$1|$1 ms}}", "apisandbox-results-fixtoken": "Corrigir token e reenviar", "apisandbox-results-fixtoken-fail": "Falha ao buscar token \"$1\".", @@ -2062,7 +2106,7 @@ "emailccsubject": "Cópia de sua mensagem para $1: $2", "emailsent": "E-mail enviado", "emailsenttext": "Sua mensagem foi enviada.", - "emailuserfooter": "Esta mensagem foi enviada {{GENDER:$1|pelo usuários|pela usuária}} $1 para {{GENDER:$2|$2}} através da opção \"{{int:emailuser}}\" da wiki {{SITENAME}}. {{GENDER:$2|A sua}} resposta será enviada diretamente para {{GENDER:$1|o|a}} remetente original, e irá revelar-lhe {{GENDER:$2|o seu}} e-mail.", + "emailuserfooter": "Esta mensagem foi enviada {{GENDER:$1|pelo usuário|pela usuária}} $1 para {{GENDER:$2|$2}} através da opção “{{int:emailuser}}” do projeto {{SITENAME}}. {{GENDER:$2|A sua}} resposta será enviada diretamente para {{GENDER:$1|o|a}} remetente original, e revelar-lhe-á {{GENDER:$2|o seu}} endereço de e-mail.", "usermessage-summary": "Deixar mensagem de sistema.", "usermessage-editor": "Mensagens de sistema", "watchlist": "Páginas vigiadas", @@ -2698,7 +2742,7 @@ "creditspage": "Créditos da página", "nocredits": "Não há informações disponíveis sobre os créditos desta página.", "spamprotectiontitle": "Filtro de proteção contra spam", - "spamprotectiontext": "O texto que deseja salvar foi bloqueado pelo filtro de spam.\nIsso é provavelmente causado por um link para um site externo que está na lista negra.", + "spamprotectiontext": "O texto que desejava salvar foi bloqueado pelo filtro de ''spam''.\nProvavelmente isso foi causado por um link para um site externo que está na lista negra.", "spamprotectionmatch": "O seguinte texto ativou o filtro de spam: $1", "spambot_username": "MediaWiki limpeza de spam", "spam_reverting": "Revertendo para a última versão que não contém links para $1", @@ -3579,6 +3623,7 @@ "logentry-tag-update-logentry": "$1 {{GENDER:$2|atualizou}} etiquetas na entrada de registro $5 da página $3 ({{PLURAL:$7|adicionou}} $6; {{PLURAL:$9|removeu}} $8)", "rightsnone": "(nenhum)", "revdelete-summary": "resumo da edição", + "rightslogentry-temporary-group": "$1 (temporário, até $2)", "feedback-adding": "Adicionando os comentários na página...", "feedback-back": "Voltar", "feedback-bugcheck": "Perfeito! Apenas verifique se não é um dos [$1 bugs já conhecidos].", @@ -3603,56 +3648,12 @@ "feedback-useragent": "Agente de usuário:", "searchsuggest-search": "Pesquisar em {{SITENAME}}", "searchsuggest-containing": "páginas contendo…", - "api-error-autoblocked": "Seu endereço IP foi bloqueado automaticamente, porque ele foi usado por um usuário bloqueado.", - "api-error-badaccess-groups": "Você não tem permissão para enviar arquivos para este wiki.", "api-error-badtoken": "Erro interno: token inválido.", - "api-error-blocked": "Você foi bloqueado de editar.", - "api-error-copyuploaddisabled": "O upload por URL está desativado neste servidor.", - "api-error-duplicate": "Já {{PLURAL:$1|há outro arquivo|existem outros arquivos}} no site com o mesmo conteúdo", - "api-error-duplicate-archive": "Já {{PLURAL:$1|existiu outro arquivo|existiram outros arquivos}} neste site com o mesmo conteúdo que, no entanto, {{PLURAL:$1|foi removido|foram removidos}}.", - "api-error-empty-file": "O arquivo que você enviou está vazio.", "api-error-emptypage": "Não é permitido criar páginas novas vazias.", - "api-error-fetchfileerror": "Erro interno: ocorreu um problema indeterminado ao acessar o arquivo.", - "api-error-fileexists-forbidden": "Já existe um arquivo com o nome \"$1\". Não é possível substituí-lo.", - "api-error-fileexists-shared-forbidden": "Já existe, no repositório de arquivos partilhados, um arquivo com o nome \"$1\". Não é possível substituí-lo.", - "api-error-file-too-large": "O arquivo que você enviou é muito grande.", - "api-error-filename-tooshort": "O nome do arquivo é curto demais.", - "api-error-filetype-banned": "Este tipo do arquivo é proibido.", - "api-error-filetype-banned-type": "$1 {{PLURAL:$4|não é um tipo de arquivo permitido|não são tipos de arquivos permitidos}}. {{PLURAL:$3|O tipo de arquivo permitido é|Os tipos de arquivos permitidos são}} $2.", - "api-error-filetype-missing": "Falta a extensão de arquivo.", - "api-error-hookaborted": "A modificação que você tentou realizar foi abortada pelo hook de uma extensão.", - "api-error-http": "Erro interno: não foi possível conectar ao servidor.", - "api-error-illegal-filename": "O nome do arquivo não é permitido.", - "api-error-internal-error": "Erro interno: ocorreu algum erro ao processar o arquivo que você enviou ao wiki.", - "api-error-invalid-file-key": "Erro interno: o arquivo não foi encontrado no armazenamento temporário.", - "api-error-missingparam": "Erro interno: parâmetros em falta no pedido.", - "api-error-missingresult": "Erro interno: não foi possível determinar se a cópia foi feita.", - "api-error-mustbeloggedin": "Você precisa estar autenticado para enviar arquivos.", - "api-error-mustbeposted": "Erro interno: a solicitação requer HTTP POST", - "api-error-noimageinfo": "O upload foi concluído, mas o servidor não retornou informações sobre o arquivo.", - "api-error-nomodule": "Erro interno: o módulo de upload não está configurado.", - "api-error-ok-but-empty": "Erro interno: não há resposta do servidor.", - "api-error-overwrite": "Não é permitido sobrescrever um arquivo já existente.", - "api-error-ratelimited": "Você está tentando fazer upload de mais arquivos em um curto espaço de tempo do que este wiki permite.\nPor favor, tente novamente em alguns minutos.", - "api-error-stashfailed": "Erro interno: o servidor não conseguiu armazenar o arquivo temporário.", "api-error-publishfailed": "Erro interno: O servidor falhou ao publicar o arquivo temporário.", - "api-error-stasherror": "Houve um erro durante o upload do arquivo para a pilha.", - "api-error-stashedfilenotfound": "O arquivo escondido não foi encontrado ao tentar enviá-lo de seu esconderijo.", - "api-error-stashpathinvalid": "O caminho no qual o arquivo escondido deveria ter sido encontrado era inválido.", - "api-error-stashfilestorage": "Ocorreu um erro ao armazenar o arquivo em seu esconderijo.", - "api-error-stashzerolength": "O servidor não pôde esconder o arquivo, porque ele tinha zero de tamanho.", - "api-error-stashnotloggedin": "Você precisa estar logado para salvar arquivos no esconderijo.", - "api-error-stashwrongowner": "O arquivo que você estava tentando acessar no esconderijo não pertence a você.", - "api-error-stashnosuchfilekey": "O arquivo chave que você estava tentando acessar no esconderijo não existe.", - "api-error-timeout": "O servidor não respondeu dentro do tempo esperado.", - "api-error-unclassified": "Ocorreu um erro desconhecido", - "api-error-unknown-code": "Erro desconhecido: \"$1\"", - "api-error-unknown-error": "Erro interno: ocorreu um erro indeterminado ao tentar enviar o arquivo.", + "api-error-stashfailed": "Erro interno: o servidor não conseguiu armazenar o arquivo temporário.", "api-error-unknown-warning": "Aviso desconhecido: \"$1\".", "api-error-unknownerror": "Erro desconhecido: \"$1\".", - "api-error-uploaddisabled": "Este wiki está com o upload de arquivos desabilitado.", - "api-error-verification-error": "Este arquivo pode estar corrompido ou ter a extensão errada.", - "api-error-was-deleted": "Um arquivo deste nome foi carregado anteriormente e posteriormente excluído.", "duration-seconds": "$1 {{PLURAL:$1|segundo|segundos}}", "duration-minutes": "$1 {{PLURAL:$1|minuto|minutos}}", "duration-hours": "$1 {{PLURAL:$1|hora|horas}}", @@ -3774,6 +3775,7 @@ "mw-widgets-titleinput-description-new-page": "a página ainda não existe", "mw-widgets-titleinput-description-redirect": "redirecionar para $1", "mw-widgets-categoryselector-add-category-placeholder": "Adicionar uma categoria...", + "mw-widgets-usersmultiselect-placeholder": "Adicione mais...", "sessionmanager-tie": "Não é possível combinar vários tipos de autenticação de solicitação: $1.", "sessionprovider-generic": "$1 sessões", "sessionprovider-mediawiki-session-cookiesessionprovider": "Sessões baseadas em cookie", @@ -3905,7 +3907,7 @@ "usercssispublic": "Observação: As subpáginas CSS não devem conter dados confidenciais, pois são visíveis por outros usuários.", "restrictionsfield-badip": "Endereço IP ou intervalo inválido: $1", "restrictionsfield-label": "Intervalos IP permitidos:", - "restrictionsfield-help": "Um endereço IP ou intervalo CIDR por linha. Para ativar tudo, use<br><code>0.0.0.0/0</code><br><code>::/0</code>", + "restrictionsfield-help": "Um endereço IP ou intervalo CIDR por linha. Para ativar tudo, use\n<pre>0.0.0.0/0\n::/0</pre>", "revid": "revisão $1", "pageid": "ID da página $1" } diff --git a/languages/i18n/pt.json b/languages/i18n/pt.json index 1e4a89c02f..57498714e1 100644 --- a/languages/i18n/pt.json +++ b/languages/i18n/pt.json @@ -480,19 +480,12 @@ "login": "Entrar", "login-security": "Verificar a sua identidade", "nav-login-createaccount": "Entrar / criar conta", - "userlogin": "Criar uma conta ou entrar", - "userloginnocreate": "Entrar", "logout": "Sair", "userlogout": "Sair", "notloggedin": "Não autenticado", "userlogin-noaccount": "Não tem uma conta?", "userlogin-joinproject": "Junte-se ao projeto {{SITENAME}}", - "nologin": "Não possui uma conta? $1.", - "nologinlink": "Criar uma conta", "createaccount": "Criar conta", - "gotaccount": "Já possui uma conta? $1.", - "gotaccountlink": "Entrar", - "userlogin-resetlink": "Esqueceu-se do seu nome de utilizador ou da palavra-passe?", "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.", @@ -505,7 +498,6 @@ "createaccountmail": "Usar uma palavra passe aleatória e temporária e enviar 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)", - "createaccountreason": "Motivo:", "createacct-reason": "Motivo", "createacct-reason-ph": "Porque está a criar outra conta", "createacct-reason-help": "Mensagem mostrada no registo de criação de contas", @@ -601,7 +593,7 @@ "botpasswords-label-delete": "Eliminar", "botpasswords-label-resetpassword": "Redefinir palavra-passe", "botpasswords-label-grants": "Concessões de permissões aplicáveis:", - "botpasswords-help-grants": "As concessões de permissões permitem acesso a permissões já detidas pela sua conta de utilizador. Fazer uma concessão aqui não fornece acesso a quaisquer permissões que a usa conta de utilizador não possua. Consulte a [[Special:ListGrants|tabela de concessões]] para mais informação.", + "botpasswords-help-grants": "As concessões de permissões permitem acesso a permissões já detidas pela sua conta de utilizador. Fazer uma concessão aqui não fornece acesso a quaisquer permissões que a sua conta de utilizador não possua. Consulte a [[Special:ListGrants|tabela de concessões]] para mais informação.", "botpasswords-label-grants-column": "Concedido", "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?", @@ -704,7 +696,7 @@ "selfredirect": "<strong>Aviso:</strong> Está a redirecionar esta página para si mesma.\nPode ter especificado o destino errado para a página ou até a editar a página errada.\nSe clicar em \"{{int:savearticle}}\" novamente, o redirecionamento será criado na mesma.", "missingcommenttext": "Introduza um comentário abaixo, por favor.", "missingcommentheader": "<strong>Atenção:</strong> Não introduziu um assunto para este comentário.\nSe clicar novamente \"{{int:savearticle}}\", a sua edição será gravada sem assunto.", - "summary-preview": "Antevisão do resumo:", + "summary-preview": "Antevisão do resumo de edição:", "subject-preview": "Antevisão do assunto:", "previewerrortext": "Ocorreu um erro enquanto tentava antever as suas alterações.", "blockedtitle": "O utilizador está bloqueado", @@ -1012,6 +1004,7 @@ "search-interwiki-caption": "Projetos irmãos", "search-interwiki-default": "Resultados de $1:", "search-interwiki-more": "(mais)", + "search-interwiki-more-results": "mais resultados", "search-relatedarticle": "Relacionado", "searchrelated": "relacionados", "searchall": "todos", @@ -1101,6 +1094,7 @@ "youremail": "Correio eletrónico:", "username": "Nome de {{GENDER:$1|utilizador|utilizadora|utilizador(a)}}:", "prefs-memberingroups": "{{GENDER:$2|Membro}} {{PLURAL:$1|do grupo|dos grupos}}:", + "group-membership-link-with-expiry": "$1 (até $2)", "prefs-registration": "Hora de registo:", "yourrealname": "Nome verdadeiro:", "yourlanguage": "Língua:", @@ -1146,16 +1140,25 @@ "editinguser": "A modificar os privilégios {{GENDER:$1|do utilizador|da utilizadora|do(a) utilizador(a)}} <strong>[[User:$1|$1]]</strong> $2", "viewinguserrights": "A ver os privilégios {{GENDER:$1|do utilizador|da utilizadora}} <strong>[[User:$1|$1]]</strong> $2", "userrights-editusergroup": "Editar grupos {{GENDER:$1|do utilizador|da utilizadora}}", - "userrights-viewusergroup": "Ver grupos do utilizador", + "userrights-viewusergroup": "Ver grupos {{GENDER:$1|do utilizador|da utilizadora}}", "saveusergroups": "Gravar grupos {{GENDER:$1|do utilizador|da utilizadora|do(a) utilizador(a)}}", "userrights-groupsmember": "Membro de:", "userrights-groupsmember-auto": "Membro implícito de:", - "userrights-groups-help": "É possível alterar os grupos a que {{GENDER:$1|este utilizador|esta utilizadora|este(a) utilizador(a)}} pertence:\n* Uma caixa de seleção marcada significa que {{GENDER:$1|o utilizador|a utilizadora|o(a) utilizador(a)}} se encontra no grupo.\n* Uma caixa de seleção desmarcada significa que {{GENDER:$1|o utilizador|a utilizadora|o(a) utilizador(a)}} não se encontra no grupo.\n* Um asterisco (*) indica que não pode remover o grupo depois de o adicionar, ou vice-versa.", + "userrights-groups-help": "É possível alterar os grupos a que {{GENDER:$1|este utilizador|esta utilizadora}} pertence:\n* Uma caixa de seleção marcada significa que {{GENDER:$1|o utilizador|a utilizadora}} se encontra no grupo.\n* Uma caixa de seleção desmarcada significa que {{GENDER:$1|o utilizador|a utilizadora}} não se encontra no grupo.\n* Um asterisco (*) indica que não pode remover o grupo depois de o adicionar, ou vice-versa.\n* Um símbolo de cardinal (#) indica que só pode atrasar a data de expiração deste grupo; não a pode adiantar.", "userrights-reason": "Motivo:", "userrights-no-interwiki": "Não tem permissões para alterar os privilégios de utilizadores noutras wikis.", "userrights-nodatabase": "A base de dados $1 não existe ou não é uma base de dados local.", "userrights-changeable-col": "Grupos que pode alterar", "userrights-unchangeable-col": "Grupos que não pode alterar", + "userrights-expiry-current": "Expira a $1", + "userrights-expiry-none": "Não expira", + "userrights-expiry": "Expira a:", + "userrights-expiry-existing": "Prazo de expiração: $3, $2", + "userrights-expiry-othertime": "Outra duração:", + "userrights-expiry-options": "1 dia:1 day,1 semana:1 week,1 mês:1 month,3 meses:3 months,6 meses:6 months,1 ano:1 year", + "userrights-invalid-expiry": "O prazo de expiração para o grupo \"$1\" é inválido.", + "userrights-expiry-in-past": "O prazo de expiração para o grupo \"$1\" está no passado.", + "userrights-cannot-shorten-expiry": "Não pode adiantar a data de expiração do grupo \"$1\". Só os utilizadores com permissões para adicionar e remover este grupo podem adiantar datas de expiração.", "userrights-conflict": "Conflito entre alterações de privilégios de utilizador! Por favor, reveja e confirme as suas mudanças.", "group": "Grupo:", "group-user": "Utilizadores", @@ -1357,22 +1360,52 @@ "recentchanges-legend-plusminus": "(<em>±123</em>)", "recentchanges-submit": "Mostrar", "rcfilters-activefilters": "Filtros ativos", + "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-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-feedbacklink": "Dê-nos a sua opinião sobre os novos filtros (beta)", + "rcfilters-highlightbutton-title": "Realçar resultados", + "rcfilters-highlightmenu-title": "Selecionar uma cor", "rcfilters-filterlist-noresults": "Não foram encontrados filtros", + "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-filtergroup-authorship": "Editar autoria", "rcfilters-filter-editsbyself-label": "As suas próprias edições", "rcfilters-filter-editsbyself-description": "Edições suas.", "rcfilters-filter-editsbyother-label": "Edições de outros", "rcfilters-filter-editsbyother-description": "Edições criadas por outros utilizadores (não por si).", - "rcfilters-filtergroup-userExpLevel": "Nível de experiência do utilizador", + "rcfilters-filtergroup-userExpLevel": "Nível de experiência (apenas para utilizadores registados)", "rcfilters-filter-userExpLevel-newcomer-label": "Novatos", - "rcfilters-filter-userExpLevel-newcomer-description": "Editores muito recentes: menos de 10 edições e 4 dias de atividade.", + "rcfilters-filter-userExpLevel-newcomer-description": "Menos de 10 edições e 4 dias de atividade.", "rcfilters-filter-userExpLevel-learner-label": "Aprendizes", "rcfilters-filter-userExpLevel-learner-description": "Mais dias de atividade e edições do que \"Novatos\", mas menos do que \"Utilizadores experientes\".", "rcfilters-filter-userExpLevel-experienced-label": "Utilizadores experientes", "rcfilters-filter-userExpLevel-experienced-description": "Mais de 30 dias de atividade e 500 edições.", + "rcfilters-filtergroup-automated": "Contribuições automatizadas", + "rcfilters-filter-bots-label": "Robô", + "rcfilters-filter-bots-description": "Edições efectuadas por ferramentas automatizadas.", + "rcfilters-filter-humans-label": "Ser humano (não robô)", + "rcfilters-filter-humans-description": "Edições efectuadas por editores humanos.", + "rcfilters-filtergroup-significance": "Significado", + "rcfilters-filter-minor-label": "Edições menores", + "rcfilters-filter-minor-description": "Edições marcadas pelo autor como menores.", + "rcfilters-filter-major-label": "Edições não-menores", + "rcfilters-filter-major-description": "Edições não marcadas como menores.", + "rcfilters-filtergroup-changetype": "Tipo de alteração", + "rcfilters-filter-pageedits-label": "Edições da página", + "rcfilters-filter-pageedits-description": "Edições do conteúdo da wiki, de discussões, de descrições de categorias....", + "rcfilters-filter-newpages-label": "Criações de páginas", + "rcfilters-filter-newpages-description": "Edições que criam novas páginas.", + "rcfilters-filter-categorization-label": "Alterações de categoria", + "rcfilters-filter-categorization-description": "Registos de páginas que estão a ser adicionadas ou removidas das categorias.", + "rcfilters-filter-logactions-label": "Ações registadas", + "rcfilters-filter-logactions-description": "Ações administrativas, criação de contas, eliminação de páginas, carregamentos....", "rcnotefrom": "Abaixo {{PLURAL:$5|está a mudança|estão as mudanças}} desde <strong>$2</strong> (mostradas até <strong>$1</strong>).", "rclistfrom": "Mostrar as novas mudanças a partir das $2 de $3", "rcshowhideminor": "$1 edições menores", @@ -1506,7 +1539,7 @@ "uploaded-setting-handler-svg": "A configuração do atributo \"handler\" com destino remoto/de dados/<i>script</i> em ficheiros SVG está bloqueada. Foi detetado <code>$1=\"$2\"</code> no ficheiro SVG carregado.", "uploaded-remote-url-svg": "A configuração de qualquer atributo de estilo com um URL remoto em ficheiros SVG está bloqueada. Foi detetado <code>$1=\"$2\"</code> no ficheiro SVG carregado.", "uploaded-image-filter-svg": "Foi encontrado um filtro de imagem com o URL: <code><$1 $2=\"$3\"></code> no ficheiro SVG carregado.", - "uploadscriptednamespace": "Este ficheiro SVG contém um domínio que não é permitido \"$1\".", + "uploadscriptednamespace": "Este ficheiro SVG contém um domínio que não é permitido \"<nowiki>$1</nowiki>\".", "uploadinvalidxml": "Erro detectado na análise do XML do ficheiro carregado.", "uploadvirus": "O ficheiro contém um vírus! \nDetalhes: $1", "uploadjava": "Este é um ficheiro ZIP que contém um ficheiro .class de Java.\nNão é permitido o carregamento de ficheiros Java, porque estes podem contornar as restrições de segurança.", @@ -1882,8 +1915,10 @@ "apisandbox-sending-request": "A enviar solicitação de API...", "apisandbox-loading-results": "A receber resultados da API...", "apisandbox-results-error": "Ocorreu um erro ao carregar a resposta à consulta por API: $1", - "apisandbox-request-params-json": "Parâmetros JSON:", + "apisandbox-request-selectformat-label": "Mostrar dados do pedido como:", + "apisandbox-request-format-url-label": "Sequência de consulta da URL", "apisandbox-request-url-label": "URL do pedido:", + "apisandbox-request-json-label": "Pedido JSON:", "apisandbox-request-time": "Tempo de processamento: {{PLURAL:$1|$1 ms}}", "apisandbox-results-fixtoken": "Corrija o identificador e volte a submete-lo", "apisandbox-results-fixtoken-fail": "Não foi possível obter o identificador \"$1\".", @@ -2025,7 +2060,7 @@ "emailccsubject": "Cópia da sua mensagem para $1: $2", "emailsent": "Mensagem enviada", "emailsenttext": "A sua mensagem foi enviada.", - "emailuserfooter": "Esta mensagem foi enviada {{GENDER:$1|pelo utilizador|pela utilizadora}} $1 para {{GENDER:$2|$2}} através da opção \"{{int:emailuser}}\" da wiki {{SITENAME}}. {{GENDER:$2|A sua}} resposta será enviada diretamente para {{GENDER:$1|o|a}} remetente original, e irá revelar-lhe {{GENDER:$2|o seu}} endereço de correio eletrónico.", + "emailuserfooter": "Esta mensagem foi enviada {{GENDER:$1|pelo utilizador|pela utilizadora}} $1 para {{GENDER:$2|$2}} através da opção \"{{int:emailuser}}\" da wiki {{SITENAME}}. Se {{GENDER:$2|responder}} a esta mensagem, {{GENDER:$2|a sua}} resposta será enviada diretamente para {{GENDER:$1|o|a}} remetente original, e irá revelar-lhe {{GENDER:$2|o seu}} endereço de correio eletrónico.", "usermessage-summary": "Deixar mensagem de sistema.", "usermessage-editor": "Editor de mensagens de sistema", "watchlist": "Páginas vigiadas", @@ -2123,7 +2158,7 @@ "editcomment": "O resumo da edição era: <em$1</em>.", "revertpage": "Foram revertidas as edições de [[Special:Contributions/$2|$2]] ([[User talk:$2|disc]]) para a última revisão de [[User:$1|$1]]", "revertpage-nouser": "Foram revertidas as edições de um utilizador oculto para a última revisão de {{GENDER:$1|[[User:$1|$1]]}}", - "rollback-success": "Foram revertidas as edições de $1, com o conteúdo passando a estar como na última edição de $2.", + "rollback-success": "Foram revertidas as edições de {{GENDER:$3|$1}}; reposta a última edição de {{GENDER:$4|$2}}.", "rollback-success-notify": "Revertidas as edições de $1;\nMudança para a última revisão de $2. [$3 Mostrar alterações]", "sessionfailure-title": "Erro de sessão", "sessionfailure": "Foram detectados problemas com a sua sessão;\na operação foi cancelada como medida de proteção contra a interceptação de sessões.\nVolte à página anterior, recarregue-a e tente novamente.", @@ -2665,7 +2700,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": "A página que deseja gravar foi bloqueada pelo filtro de ''spam''.\nEste bloqueio foi provavelmente 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''.\nProvavelmente este bloqueio foi causado por uma ligação para um sítio externo que consta da lista negra.", "spamprotectionmatch": "O seguinte texto ativou o filtro de <i>spam</i>: $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", @@ -3545,7 +3580,7 @@ "logentry-tag-update-revision": "$1 {{GENDER:$2|atualizou}} as etiquetas na revisão $4 da página $3 ($6 {{PLURAL:$7|adicionadas}}; $8 {{PLURAL:$9|removidas}})", "logentry-tag-update-logentry": "$1 {{GENDER:$2|atualizou}} as etiquetas na entrada de registo $5 da página $3 ($6 {{PLURAL:$7|adicionadas}}; $8 {{PLURAL:$9|removidas}})", "rightsnone": "(nenhum)", - "revdelete-summary": "editar resumo", + "rightslogentry-temporary-group": "$1 (temporário, até $2)", "feedback-adding": "A acrescentar os comentários à página...", "feedback-back": "Retroceder", "feedback-bugcheck": "Perfeito! Verifique apenas que não é já um dos [$1 defeitos conhecidos].", @@ -3570,56 +3605,12 @@ "feedback-useragent": "Agente de utilizador:", "searchsuggest-search": "Pesquisar na wiki {{SITENAME}}", "searchsuggest-containing": "contendo...", - "api-error-autoblocked": "O seu endereço IP foi bloqueado automaticamente, pois foi utilizado por um utilizador bloqueado.", - "api-error-badaccess-groups": "Não tem permissão para enviar ficheiros para esta wiki.", "api-error-badtoken": "Erro interno: Chave incorrecta.", - "api-error-blocked": "Foi bloqueado de editar.", - "api-error-copyuploaddisabled": "O carregamento de ficheiros por URL não foi possibilitado neste servidor.", - "api-error-duplicate": "Já {{PLURAL:$1|existia outro ficheiro|existiam outros ficheiro}} na wiki com o mesmo conteúdo.", - "api-error-duplicate-archive": "Já {{PLURAL:$1|estava outro ficheiro|estavam outros ficheiros}} no site com o mesmo conteúdo, mas {{PLURAL:$1|foi eliminado|foram eliminados}}.", - "api-error-empty-file": "O ficheiro que enviou está vazio.", "api-error-emptypage": "Não é permitido criar páginas novas vazias.", - "api-error-fetchfileerror": "Erro interno: Ocorreu um problema indeterminado ao aceder ao ficheiro.", - "api-error-fileexists-forbidden": "Já existe um ficheiro com o nome \"$1\" e não pode ser substituído.", - "api-error-fileexists-shared-forbidden": "Já existe um ficheiro com o nome \"$1\" no repositório de ficheiros partilhados e não pode ser substituído.", - "api-error-file-too-large": "O ficheiro que enviou era demasiado grande.", - "api-error-filename-tooshort": "O nome do ficheiro é demasiado curto.", - "api-error-filetype-banned": "Este tipo de ficheiro é proibido.", - "api-error-filetype-banned-type": "$1 {{PLURAL:$4|não é um tipo de ficheiro permitido|não são tipos de ficheiro permitidos}}. {{PLURAL:$3|O tipo de ficheiro permitido é|Os tipos de ficheiro permitidos são}} $2.", - "api-error-filetype-missing": "Falta a extensão do ficheiro.", - "api-error-hookaborted": "A modificação que tentou fazer foi cancelada por uma extensão.", - "api-error-http": "Erro interno: Ocorreu um problema na ligação ao servidor.", - "api-error-illegal-filename": "Este nome de ficheiro não é permitido.", - "api-error-internal-error": "Erro interno: Ocorreu um erro indeterminado na wiki ao processar o ficheiro que enviou.", - "api-error-invalid-file-key": "Erro interno: O ficheiro não foi encontrado no armazenamento temporário.", - "api-error-missingparam": "Erro interno: Há parâmetros em falta no pedido.", - "api-error-missingresult": "Erro interno: Não foi possível determinar se a cópia foi feita.", - "api-error-mustbeloggedin": "Tem de iniciar sessão para enviar ficheiros.", - "api-error-mustbeposted": "Erro interno: O pedido necessita do HTTP POST.", - "api-error-noimageinfo": "O envio correu bem, mas o servidor não forneceu nenhuma informação sobre o ficheiro.", - "api-error-nomodule": "Erro interno: Não está definido nenhum módulo para o carregamento de ficheiros.", - "api-error-ok-but-empty": "Erro interno: o servidor não respondeu.", - "api-error-overwrite": "Não é permitido sobrescrever um ficheiro existente.", - "api-error-ratelimited": "Está a tentar carregar mais ficheiros do que esta wiki permite num espaço de tempo curto. Tente de novo dentro de alguns minutos, por favor.", - "api-error-stashfailed": "Erro interno: O servidor não conseguiu armazenar o ficheiro temporário.", "api-error-publishfailed": "Erro interno: Servidor não conseguiu publicar ficheiro temporário.", - "api-error-stasherror": "Ocorreu um erro no carregamento do ficheiro escondido.", - "api-error-stashedfilenotfound": "O ficheiro escondido não foi encontrado ao tentar carregá-lo.", - "api-error-stashpathinvalid": "O caminho no qual o ficheiro escondido deveria ter sido encontrado era inválido.", - "api-error-stashfilestorage": "Ocorreu um erro no carregamento do ficheiro escondido.", - "api-error-stashzerolength": "Não foi possível o servidor esconder o ficheiro, porque este tinha comprimento zero.", - "api-error-stashnotloggedin": "Tem de ter uma sessão iniciada para gravar ficheiros na área de ficheiros escondidos.", - "api-error-stashwrongowner": "O ficheiro a que estava a tentar aceder na área de ficheiros escondidos não lhe pertence.", - "api-error-stashnosuchfilekey": "O chave do ficheiro a que estava a tentar aceder na área de ficheiros escondidos não existe.", - "api-error-timeout": "O servidor não respondeu no prazo esperado.", - "api-error-unclassified": "Ocorreu um erro desconhecido", - "api-error-unknown-code": "Erro desconhecido: \"$1\"", - "api-error-unknown-error": "Erro interno: Ocorreu um erro indeterminado ao tentar receber o ficheiro.", + "api-error-stashfailed": "Erro interno: O servidor não conseguiu armazenar o ficheiro temporário.", "api-error-unknown-warning": "Aviso desconhecido: $1", "api-error-unknownerror": "Erro desconhecido: \"$1\".", - "api-error-uploaddisabled": "Esta wiki não está configurada para poder receber ficheiros.", - "api-error-verification-error": "Este ficheiro pode estar corrompido, ou ter a extensão errada.", - "api-error-was-deleted": "Um ficheiro com este nome foi carregado anteriormente e posteriormente eliminado.", "duration-seconds": "$1 {{PLURAL:$1|segundo|segundos}}", "duration-minutes": "$1 {{PLURAL:$1|minuto|minutos}}", "duration-hours": "$1 {{PLURAL:$1|hora|horas}}", @@ -3741,6 +3732,7 @@ "mw-widgets-titleinput-description-new-page": "a página ainda não existe.", "mw-widgets-titleinput-description-redirect": "redirecionar para $1", "mw-widgets-categoryselector-add-category-placeholder": "Adicionar uma categoria...", + "mw-widgets-usersmultiselect-placeholder": "Adicionar mais...", "sessionmanager-tie": "Não se pode combinar múltiplas solicitações de tipos de autenticação: $1.", "sessionprovider-generic": "Sessões $1", "sessionprovider-mediawiki-session-cookiesessionprovider": "sessões baseadas em cookie", @@ -3872,7 +3864,7 @@ "usercssispublic": "Nota: As subpáginas de CSS não devem conter dados confidenciais porque podem ser vistas por outros utilizadores.", "restrictionsfield-badip": "Endereço IP (ou gama de endereços IP) inválido: $1", "restrictionsfield-label": "Gamas de endereços IP permitidas:", - "restrictionsfield-help": "Um endereço IP ou uma gama CIDR por linha. Para ativar todos,\nuse<br><code>0.0.0.0/0</code><br><code>::/0</code>", + "restrictionsfield-help": "Um endereço IP ou uma gama CIDR por linha. Para ativar todos,\nuse: <pre>0.0.0.0/0\n::/0</pre>", "revid": "revisão $1", "pageid": "identificador de página $1" } diff --git a/languages/i18n/qqq.json b/languages/i18n/qqq.json index 2f16979702..c3a871f881 100644 --- a/languages/i18n/qqq.json +++ b/languages/i18n/qqq.json @@ -184,7 +184,9 @@ "Matěj Suchánek", "Chaduvari", "MarcoAurelio", - "Joao Xavier" + "Joao Xavier", + "Winstonyin", + "Jhertel" ] }, "sidebar": "{{notranslate}}", @@ -354,7 +356,7 @@ "search": "{{doc-special|Search}}\nNoun. Text of menu section shown on every page of the wiki above the search form.\n\nSee also:\n* {{msg-mw|Search}}\n* {{msg-mw|Accesskey-search}}\n* {{msg-mw|Tooltip-search}}\n{{Identical|Search}}", "search-ignored-headings": "Headings that will be ignored by search. You can translate the text, including \"Leave this line exactly as it is\". Some lines of this messages have one (1) leading space.", "searchbutton": "The button you can see in the sidebar, below the search input box. The \"Go\" button is {{msg-mw|Searcharticle}}.\n{{Identical|Search}}", - "go": "See also:\n* {{msg-mw|Go}}\n* {{msg-mw|Accesskey-search-go}}\n* {{msg-mw|Tooltip-search-go}}\n{{Identical|Go}}", + "go": "Appears next to the search button. Goes directly to the page with that name, if it exists.\n\nSee also:\n* {{msg-mw|Go}}\n* {{msg-mw|Accesskey-search-go}}\n* {{msg-mw|Tooltip-search-go}}\n{{Identical|Go}}", "searcharticle": "Button description in the search menu displayed on every page. The \"Search\" button is {{msg-mw|Searchbutton}}.\n{{Identical|Go}}", "history": "{{Identical|Page history}}", "history_short": "Text used on the history tab.\n\n{{Identical|History}}", @@ -510,7 +512,7 @@ "databaseerror-query": "Identifies, in the list of technical details, the [[wikipedia:SQL|SQL]] statement that failed.\nParameters:\n* $1 - SQL statement (shown within a box)\n{{Identical|Query}}", "databaseerror-function": "Identifies, in the list of technical details, the function that tried to execute the database query.\nParameters:\n* $1 - Name of function\n{{Identical|Function}}", "databaseerror-error": "Identifies, in the list of technical details, the error message the database server returned.\nParameters:\n* $1 - Error message from the database server, probably in English\n{{Identical|Error}}", - "transaction-duration-limit-exceeded": "Plain text error shown when DB updates take too long. Parameters:\n* $1 - time spent in database updates\n* $2 - maximum time allowed in database updates", + "transaction-duration-limit-exceeded": "Plain text error shown when DB updates take too long. Parameters:\n* $1 - time spent in database updates\n* $2 - maximum number of seconds allowed in database updates", "laggedslavemode": "Used as warning when getting the timestamp of the latest version, if in LaggedSlaveMode.", "readonly": "Used as title of error message when database is locked.", "enterlockreason": "For developers when locking the database", @@ -594,7 +596,7 @@ "userlogin-yourpassword": "In login & create account forms, label for password field.\n\nSee examples: [[Special:UserLogin]] and [{{canonicalurl:Special:UserLogin|type=signup}} Special:UserLogin?type=signup]\n{{Identical|Password}}", "userlogin-yourpassword-ph": "Placeholder text in login form for password field.\n\nSee examples: [[Special:UserLogin]] and [{{canonicalurl:Special:UserLogin|type=signup}} Special:UserLogin?type=signup]\n{{Identical|Enter password}}", "createacct-yourpassword-ph": "Placeholder text in create account form for password field.\n\nSee example: [{{canonicalurl:Special:UserLogin|type=signup}} Special:UserLogin?type=signup]\n{{Identical|Enter password}}", - "yourpasswordagain": "Since 1.22 no longer used in core, but may be used by some extensions. DEPRECATED", + "yourpasswordagain": "Label for field to re-enter password.", "createacct-yourpasswordagain": "In create account form, label for field to re-enter password\n\nSee example: [{{canonicalurl:Special:UserLogin|type=signup}} Special:UserLogin?type=signup]\n{{Identical|Confirm password}}", "createacct-yourpasswordagain-ph": "Placeholder text in create account form for re-enter password field.\n\nSee example: [{{canonicalurl:Special:UserLogin|type=signup}} Special:UserLogin?type=signup]", "userlogin-remembermypassword": "The text for a check box in [[Special:UserLogin]].", @@ -612,20 +614,13 @@ "login-security": "Used as the title of the login page when the user is already logged in but sent to reauthenticate before getting access to a feature with elevated security.", "nav-login-createaccount": "Shown to anonymous users in the upper right corner of the page. When you can't create an account, the message {{msg-mw|login}} is shown.\n{{Identical|Log in / create account}}", "loginprompt": "{{ignored}}", - "userlogin": "Since 1.22 no longer used in core, but may still be used by extensions. DEPRECATED\n\n{{Identical|Log in / create account}}", - "userloginnocreate": "Since 1.22 no longer used in core, but may still be used by some extensions. A variant of {{msg-mw|Userlogin}} when the user is not allowed to create a new account. DEPRECATED\n\n{{Identical|Log in}}", "logout": "Used as link text in your personal toolbox (upper right side).\n\nSee also:\n* {{msg-mw|Logout}}\n* {{msg-mw|Accesskey-pt-logout}}\n* {{msg-mw|Tooltip-pt-logout}}\n{{Identical|Log out}}", "userlogout": "{{doc-special|UserLogout|unlisted=1}}\n{{Identical|Log out}}", "userlogout-summary": "{{ignored}}", "notloggedin": "This message is displayed in the standard skin when not logged in. The message is placed above the login link in the top right corner of pages.\n\n{{Identical|Not logged in}}", "userlogin-noaccount": "In the [[Special:Userlogin]] form, this is the text prior to button inviting user to join project.\n{{Identical|Do not have an account}}", "userlogin-joinproject": "Text of button inviting user to create an account.\n\nSee example: [[Special:UserLogin]]", - "nologin": "Since 1.22 no longer used in core, but may be used by some extensions. DEPRECATED. Parameters:\n* $1 - a link to the account creation form, and the text of it is {{msg-mw|Nologinlink}}\n{{Identical|Do not have an account}}", - "nologinlink": "Since 1.22 no longer used in core, but may be used by some extensions. DEPRECATED.\n{{Identical|Create account}}", "createaccount": "{{doc-special|CreateAccount|unlisted=1}}\n{{Identical|Create account}}", - "gotaccount": "Since 1.22 no longer used in core, but may be used by some extensions. DEPRECATED. Parameter:\n* $1 - a link to the log in form, and the text of it is {{msg-mw|Gotaccountlink}}", - "gotaccountlink": "Since 1.22 no longer used in core, but may be used by some extensions. DEPRECATED.\n{{Identical|Log in}}", - "userlogin-resetlink": "Since 1.22 no longer used in core, but may be used by some extensions. DEPRECATED.", "userlogin-resetpassword-link": "Used as link text in the login form.\n\nThe link points to the local page [[Special:PasswordReset]].\n\nSee example: [[Special:UserLogin]]\n\nuserlogin-resetpassword-link may have to be shorter than the old {{msg-mw|userlogin-resetlink}}.\n{{Identical|Forgot your password}}", "helplogin-url": "{{doc-important|Do not translate the namespace name <code>Help</code>.}}\nUsed as name of the page that provides information about logging into the wiki.\n\nUsed as a link target in the message {{msg-mw|Userlogin-helplink}}.", "userlogin-helplink2": "Label for a link to login help.\n\nSee example: [[Special:UserLogin]]\n\nSee also:\n* {{msg-mw|Helplogin-url}}", @@ -639,7 +634,6 @@ "createaccountmail": "The label for the checkbox for creating a new account and sending the new password to the specified email address directly, as used on [[Special:CreateAccount]] when one user creates an account for another (if creating accounts by email is allowed).\n\nSee example: [{{canonicalurl:Special:UserLogin|type=signup}} Special:UserLogin?type=signup]", "createaccountmail-help": "Account creation API help message for the <code>mailpassword</code> parameter.", "createacct-realname": "In vertical-layout create account form, label for field to enter optional real name.", - "createaccountreason": "Since 1.22 no longer used in core, but may be used by some extensions. DEPRECATED\n\n{{Identical|Reason}}", "createacct-reason": "In create account form, label for field to enter reason to create an account when already logged-in.\n\nSee example: [{{canonicalurl:Special:UserLogin|type=signup}} Special:UserLogin?type=signup]\n{{Identical|Reason}}", "createacct-reason-ph": "Placeholder in vertical-layout create account form for reason field.\n\nSee example: [{{canonicalurl:Special:UserLogin|type=signup}} Special:UserLogin?type=signup]", "createacct-reason-help": "Account creation API help message for the <code>reason</code> parameter.", @@ -840,7 +834,7 @@ "sig_tip": "This is the text that appears when you hover the mouse over the second key from the right on the edit toolbar.\n{{Identical|Signature with timestamp}}", "hr_tip": "This is the text that appears when you hover the mouse over the first button on the right on the edit toolbar.", "summary": "The Summary text beside the edit summary field\n\nSee also:\n* {{msg-mw|Subject}}\nSee also:\n* {{msg-mw|Accesskey-summary}}\n* {{msg-mw|Tooltip-summary}}\n{{Identical|Summary}}", - "subject": "Used as label for input box in the EditPage page.\n\nSee also:\n* {{msg-mw|Summary}}\n{{Identical|Subject}}", + "subject": "Used as label for the section title input box when adding a new section on a talk page.\n\nSee also:\n* {{msg-mw|Summary}}\n{{Identical|Subject}}", "minoredit": "Text above Save page button in editor\n\nSee also:\n* {{msg-mw|Minoredit}}\n* {{msg-mw|Accesskey-minoredit}}\n* {{msg-mw|Tooltip-minoredit}}", "watchthis": "Text of checkbox above {{msg-mw|Showpreview}} button in editor.\n\nSee also:\n* {{msg-mw|Watchthis}}\n* {{msg-mw|Accesskey-watch}}\n* {{msg-mw|Tooltip-watch}}\n{{Identical|Watch this page}}", "savearticle": "Text on the button to create a new page. It should be an action which is short and makes clear that the effect is immediate and public.\n\nSee also {{msg-mw|showpreview}} and {{msg-mw|showdiff}} for the other buttons, and {{msg-mw|savechanges}} for the label for the button when the page is being modified.\n\nSee also:\n* {{msg-mw|Accesskey-publish}}\n* {{msg-mw|Tooltip-publish}}\n{{Identical|Save page}}", @@ -858,7 +852,7 @@ "missingcommenttext": "This message is shown, when the textbox by a new-section is empty.", "missingcommentheader": "Edit summary that is shown if you enable \"Prompt me when entering a blank summary\" and add a new section without headline to a talk page.\n\n\"Subject\" is {{msg-mw|subject}}.\n\nSee also:\n* {{msg-mw|Missingsummary}}\n* {{msg-mw|Savearticle}}", "summary-preview": "Preview of the edit summary, shown under the edit summary itself.\nShould match: {{msg-mw|summary}}.", - "subject-preview": "Should match {{msg-mw|subject}}", + "subject-preview": "Used as label for preview of the section title when adding a new section on a talk page.\n\nShould match {{msg-mw|subject}}.\n\nSee also:\n* {{msg-mw|Summary-preview}}\n\n{{Identical|Subject}}", "previewerrortext": "When a user has the editing preference LivePreview enabled, clicked the Preview or Show Changes button in the edit page and the action did not succeed.", "blockedtitle": "Used as title displayed for blocked users. The corresponding message body is one of the following messages:\n* {{msg-mw|Blockedtext|notext=1}}\n* {{msg-mw|Autoblockedtext|notext=1}}\n* {{msg-mw|Systemblockedtext}}", "blockedtext": "Text displayed to blocked users.\n\n\"email this user\" should be consistent with {{msg-mw|Emailuser}}.\n\nParameters:\n* $1 - the blocking sysop (with a link to his/her userpage)\n* $2 - the reason for the block\n* $3 - the current IP address of the blocked user\n* $4 - (Unused) the blocking sysop's username (plain text, without the link)\n* $5 - the unique numeric identifier of the applied autoblock\n* $6 - the expiry of the block\n* $7 - the intended target of the block (what the blocking user specified in the blocking form)\n* $8 - the timestamp when the block started\nSee also:\n* {{msg-mw|Grouppage-sysop}}\n* {{msg-mw|Autoblockedtext}}\n* {{msg-mw|Systemblockedtext}}", @@ -944,8 +938,8 @@ "permissionserrorstext-withaction": "This message is \"with action\" version of {{msg-mw|Permissionserrorstext}}.\n\nParameters:\n* $1 - the number of reasons that were found why the action cannot be performed\n* $2 - one of the action-* messages (for example {{msg-mw|action-edit}}) or other such messages tagged with {{tl|doc-action}} in their documentation\n\nPlease report at [[Support]] if you are unable to properly translate this message. Also see [[phab:T16246]] (now closed) for background.", "contentmodelediterror": "Error message shown when trying to edit an old revision with a content model different from that of the current revision\n* $1 - content model of the old revision\n* $2 - content model of the current revision", "recreate-moveddeleted-warn": "Warning shown when creating a page which has already been deleted. See for example [[Test]].", - "moveddeleted-notice": "Shown on top of a deleted page in normal view modus ([{{canonicalurl:Test}} example]).", - "moveddeleted-notice-recent": "Shown on top of a recently deleted page in normal view modus ([{{canonicalurl:Test}} example]).", + "moveddeleted-notice": "Shown on top of a deleted page in normal view modus ([{{canonicalurl:Test}} example]).\n\nSee also {{msg-mw|moveddeleted-notice-recent}}", + "moveddeleted-notice-recent": "Shown on top of a recently deleted page in normal view modus ([{{canonicalurl:Test}} example]).\n\nSee also {{msg-mw|moveddeleted-notice}}", "log-fulllog": "Used as link text.", "edit-hook-aborted": "Used as error message.\n\nSee also:\n* {{msg-mw|edit-gone-missing}}\n* {{msg-mw|edit-conflict}}\n* {{msg-mw|edit-no-change}}\n* {{msg-mw|edit-already-exists}}", "edit-gone-missing": "Used as error message.\n\nSee also:\n* {{msg-mw|edit-hook-aborted}}\n* {{msg-mw|edit-conflict}}\n* {{msg-mw|edit-no-change}}\n* {{msg-mw|edit-already-exists}}", @@ -1187,6 +1181,7 @@ "search-interwiki-default": "Parameters:\n* $1 - the hostname of the remote wiki from where the additional results listed below are returned", "search-interwiki-custom": "#REDIRECT [[MediaWiki:Wmf-search-interwiki-custom/qqq]]", "search-interwiki-more": "{{Identical|More}}", + "search-interwiki-more-results": "Label for a link that leads to more search results from a given wiki.", "search-relatedarticle": "This is a search result (and I guess search engine) dependent messages. I do not know how to trigger the feature. The message is displayed if the search result contains information that related pages can also be provided from the search engine. I assume this is \"More Like This\" functionality. Microsoft glossary defines MLT as \"A way to refine search by identifying the right set of documents and then locating similar documents. This allows the searcher to control the direction of the search and focus on the most fruitful lines of inquiry.\"[http://www.microsoft.com/enterprisesearch/en/us/search-glossary.aspx]\n{{Identical|Related}}", "searchrelated": "This is a search result (and I guess search engine) dependent messages. I do not know how to trigger the feature. The message is displayed if the search result contains information that related pages can also be provided from the search engine. I assume this is \"More Like This\" functionality. Microsoft glossary defines MLT as \"A way to refine search by identifying the right set of documents and then locating similar documents. This allows the searcher to control the direction of the search and focus on the most fruitful lines of inquiry.\"[http://www.microsoft.com/enterprisesearch/en/us/search-glossary.aspx]\n{{Identical|Related}}", "searchall": "{{Identical|All}}", @@ -1280,6 +1275,7 @@ "username": "Username field in [[Special:Preferences]]. $1 is the current user name for GENDER distinction (depends on sex setting).\n\n{{Identical|Username}}", "prefs-memberingroups": "This message is shown on [[Special:Preferences]], first tab.\n\nParameters:\n* $1 - number of user groups\n* $2 - the username for GENDER\nSee also:\n* {{msg-mw|Prefs-memberingroups-type}}", "prefs-memberingroups-type": "{{optional}}\nParameters:\n* $1 - list of group names\n* $2 - list of group member names. Label for these is {{msg-mw|Prefs-memberingroups}}", + "group-membership-link-with-expiry": "Used as part of a list of user groups, to show the time and date when a user's membership of a group expires. That is, they are a member of that group \"until\" the specified date and time.\n\nParameters:\n* $1 - group name\n* $2 - time and date of expiry\n* $3 - date of expiry\n* $4 - time of expiry", "prefs-registration": "Used in [[Special:Preferences]].", "prefs-registration-date-time": "{{optional}}\nUsed in [[Special:Preferences]]. Parameters are:\n* $1 date and time of registration\n* $2 date of registration\n* $3 time of registration", "yourrealname": "Used in [[Special:Preferences]], first tab.\n{{Identical|Real name}}", @@ -1339,6 +1335,16 @@ "userrights-changeable-col": "Used when editing user groups in [[Special:Userrights]].\n\nThe message is the head of a column of group assignments.\n\nParameters:\n* $1 - (Optional) for PLURAL use, the number of items in the column following the message. Avoid PLURAL, if your language can do without.", "userrights-unchangeable-col": "Used when editing user groups in [[Special:Userrights]]. The message is the head of a column of group assignments.\n\nParameters:\n* $1 - (Optional) for PLURAL use, the number of items in the column following the message. Avoid PLURAL, if your language allows that.", "userrights-irreversible-marker": "{{optional}}\nParameters:\n* $1 - group member", + "userrights-no-shorten-expiry-marker": "{{optional}}\nParameters:\n* $1 - group member", + "userrights-expiry-current": "Indicates when a user's membership of a user group expires.\n\nParameters:\n* $1 - time and date of expiry\n* $2 - date of expiry\n* $3 - time of expiry\n{{Identical|Expire}}", + "userrights-expiry-none": "Indicates that a user's membership of a user group lasts indefinitely, and does not expire.", + "userrights-expiry": "Used as a label for a form element which can be used to select an expiry date/time.\n{{Identical|Expire}}", + "userrights-expiry-existing": "Shows the existing expiry time in the drop down menu underneath the individual user right on Special:UserRights.\n\nParameters:\n* $1 - Date and time of the existing expiry\n* $2 - date of the existing expiry\n* $3 - time of the existing expiry\n\nSee also:\n* {{msg-mw|protect-existing-expiry}}", + "userrights-expiry-othertime": "{{Identical|Other time}}", + "userrights-expiry-options": "{{doc-important|Be careful: '''1 translation:1 english''', so the first part is the translation and the second part should stay in English.}}\nOptions for the duration of the user group membership. Example: See e.g. [[MediaWiki:Userrights-expiry-options/nl]] if you still don't know how to do it.\n\nSee also {{msg-mw|protect-expiry-options}}.", + "userrights-invalid-expiry": "Error message on [[Special:UserRights]].\n\nParameters:\n* $1 - group name", + "userrights-expiry-in-past": "Error message on [[Special:UserRights]] when the user types an expiry date that has already passed.\n\nParameters:\n* $1 - group name", + "userrights-cannot-shorten-expiry": "Error message on [[Special:UserRights]] when the user tries to move the expiry date to be closer to the present and they do not have permission to do so. \"Bring forward\" is a phrasal verb meaning \"move to an earlier time\".\n\nParameters:\n* $1 - group name", "userrights-conflict": "Shown on [[Special:UserRights]] if the target's rights have been changed since the form was loaded.", "group": "{{Identical|Group}}", "group-user": "{{doc-group|user}}\n{{Identical|User}}", @@ -1545,22 +1551,61 @@ "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-activefilters": "Title for the filters selection showing the active filters.", + "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-search-placeholder": "Placeholder for the filter search input.", - "rcfilters-invalid-filter": "A label for an ivalid filter.", + "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-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.", + "rcfilters-highlightmenu-help": "Tooltip for the highlight menu for individual filters.", "rcfilters-filterlist-noresults": "Message showing no results found for searching a filter.", + "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.", + "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\n\n{{doc-important|This is another typical example of ambiguity in the English language. Only the documentation will reveal that this message means \"(filter by) authorship of these edits\", not \"edit the authorship\". That is, \"edit\" is a modifying noun, not a verb.}}", "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-filter-userExpLevel-newcomer-label": "Label for the filter for showing edits made by new editors.", - "rcfilters-filter-userExpLevel-newcomer-description": "Description for the filter for showing edits made by new editors.", - "rcfilters-filter-userExpLevel-learner-label": "Label for the filter for showing edits made by learning editors.", - "rcfilters-filter-userExpLevel-learner-description": "Description for the filter for showing edits made by learning editors.", - "rcfilters-filter-userExpLevel-experienced-label": "Label for the filter for showing edits made by experienced editors.", - "rcfilters-filter-userExpLevel-experienced-description": "Description for the filter for showing edits made by experienced editors.", + "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-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.", + "rcfilters-filter-user-experience-level-learner-description": "Description for the filter for showing edits made by learning editors.", + "rcfilters-filter-user-experience-level-experienced-label": "Label for the filter for showing edits made by experienced editors.", + "rcfilters-filter-user-experience-level-experienced-description": "Description for the filter for showing edits made by experienced editors.", + "rcfilters-filtergroup-automated": "Title for the filter group for editor automation type.", + "rcfilters-filter-bots-label": "Label for the filter for showing edits made by automated tools.\n{{Identical|Bot}}", + "rcfilters-filter-bots-description": "Description for the filter for showing edits made by automated tools.", + "rcfilters-filter-humans-label": "Label for the filter for showing edits made by human editors.", + "rcfilters-filter-humans-description": "Description for the filter for showing edits made by human editors.", + "rcfilters-filtergroup-reviewstatus": "Title for the filter group about review status (in core this is whether it's been patrolled)", + "rcfilters-filter-patrolled-label": "Label for the filter for showing patrolled edits", + "rcfilters-filter-patrolled-description": "Label for the filter showing patrolled edits", + "rcfilters-filter-unpatrolled-label": "Label for the filter for showing unpatrolled edits", + "rcfilters-filter-unpatrolled-description": "Description for the filter for showing unpatrolled edits", + "rcfilters-filtergroup-significance": "Title for the filter group for edit significance.\n{{Identical|Significance}}", + "rcfilters-filter-minor-label": "Label for the filter for showing edits marked as minor.", + "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-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.", + "rcfilters-filter-newpages-label": "Label for the filter for showing edits that create a page.", + "rcfilters-filter-newpages-description": "Description for the filter for showing edits that create a page.", + "rcfilters-filter-categorization-label": "Label for the filter for showing edits adding or removing pages to categories.", + "rcfilters-filter-categorization-description": "Description for the filter for showing edits adding or removing pages to categories.", + "rcfilters-filter-logactions-label": "Label for the filter for showing logged actions.", + "rcfilters-filter-logactions-description": "Description for the filter for showing logged actions.", "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", "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}}.", "rcshowhideminor": "Option text in [[Special:RecentChanges]]. Parameters:\n* $1 - the \"show/hide\" command, with the text taken from either {{msg-mw|rcshowhideminor-show}} or {{msg-mw|rcshowhideminor-hide}}\n{{Identical|Minor edit}}", @@ -1752,31 +1797,31 @@ "upload-form-label-own-work-message-generic-foreign": "Message shown by default when a user affirms that they are allowed to upload a file to a remote wiki.", "upload-form-label-not-own-work-message-generic-foreign": "Message shown by default when a user cannot upload a file to a remote wiki.", "upload-form-label-not-own-work-local-generic-foreign": "Suggests uploading a file locally instead of to a remote wiki.", - "backend-fail-stream": "Parameters:\n* $1 - a filename", - "backend-fail-backup": "Parameters:\n* $1 - a filename", - "backend-fail-notexists": "Parameters:\n* $1 - a filename", - "backend-fail-hashes": "Definition of \"[[w:en:Hash_function|hashes]]\".", - "backend-fail-notsame": "Parametreler:\n* $1 bir dosya ismi.", - "backend-fail-invalidpath": "Parameters:\n* $1 - a storage path", - "backend-fail-delete": "Parameters:\n* $1 - a file path", - "backend-fail-describe": "Parameters:\n* $1 - a file path", - "backend-fail-alreadyexists": "Parameters:\n* $1 - a filename", - "backend-fail-store": "Parameters:\n* $1 - a filename\n* $2 - a storage path", - "backend-fail-copy": "Parameters:\n* $1 - a file path\n* $2 - a file path", - "backend-fail-move": "Parameters:\n* $1 - a file path\n* $2 - a file path", + "backend-fail-stream": "Parameters:\n* $1 - a filename\n{{Related|Backend-fail}}", + "backend-fail-backup": "Parameters:\n* $1 - a filename\n{{Related|Backend-fail}}", + "backend-fail-notexists": "Parameters:\n* $1 - a filename\n{{Related|Backend-fail}}", + "backend-fail-hashes": "Definition of \"[[w:en:Hash_function|hashes]]\".\n{{Related|Backend-fail}}", + "backend-fail-notsame": "Parameters:\n* $1 is a filename.\n{{Related|Backend-fail}}", + "backend-fail-invalidpath": "Parameters:\n* $1 - a storage path\n{{Related|Backend-fail}}", + "backend-fail-delete": "Parameters:\n* $1 - a file path\n{{Related|Backend-fail}}", + "backend-fail-describe": "Parameters:\n* $1 - a file path\n{{Related|Backend-fail}}", + "backend-fail-alreadyexists": "Parameters:\n* $1 - a filename\n{{Related|Backend-fail}}", + "backend-fail-store": "Parameters:\n* $1 - a filename\n* $2 - a storage path\n{{Related|Backend-fail}}", + "backend-fail-copy": "Parameters:\n* $1 - a file path\n* $2 - a file path\n{{Related|Backend-fail}}", + "backend-fail-move": "Parameters:\n* $1 - a file path\n* $2 - a file path\n{{Related|Backend-fail}}", "backend-fail-opentemp": "Used as error message.\n{{Related|Backend-fail}}", "backend-fail-writetemp": "Used as error message.\n{{Related|Backend-fail}}", "backend-fail-closetemp": "Used as error message.\n{{Related|Backend-fail}}", "backend-fail-read": "Used as error message. Parameters:\n* $1 - filename\n{{Related|Backend-fail}}", - "backend-fail-create": "Parameters:\n* $1 - a filename", - "backend-fail-maxsize": "Parameters:\n* $1 - destination storage path\n* $2 - max file size (in bytes)", - "backend-fail-readonly": "A \"[[:wikipedia:Front and back ends|backend]]\" is a system or component that ordinary users don't interact with directly and don't need to know about, and that is responsible for a distinct task or service - for example, a storage back-end is a generic system for storing data which other applications can use. Possible alternatives for back-end are \"system\" or \"service\", or (depending on context and language) even leave it untranslated.\n\nParameters:\n* $1 - name\n* $2 - reason for being read-only", - "backend-fail-synced": "Used as fatal error message.\n\nParameters:\n* $1 - file path\n\nA \"[[:wikipedia:Front and back ends|backend]]\" is a system or component that ordinary users don't interact with directly and don't need to know about, and that is responsible for a distinct task or service - for example, a storage back-end is a generic system for storing data which other applications can use. Possible alternatives for back-end are \"system\" or \"service\", or (depending on context and language) even leave it untranslated.", - "backend-fail-connect": "Used as fatal error message. Parameters:\n* $1 - backend name\n\nA \"[[:wikipedia:Front and back ends|backend]]\" is a system or component that ordinary users don't interact with directly and don't need to know about, and that is responsible for a distinct task or service - for example, a storage back-end is a generic system for storing data which other applications can use. Possible alternatives for back-end are \"system\" or \"service\", or (depending on context and language) even leave it untranslated.", - "backend-fail-internal": "Used as fatal error message. Parameters:\n* $1 - backend name\n\nA \"[[:wikipedia:Front and back ends|backend]]\" is a system or component that ordinary users don't interact with directly and don't need to know about, and that is responsible for a distinct task or service - for example, a storage back-end is a generic system for storing data which other applications can use. Possible alternatives for back-end are \"system\" or \"service\", or (depending on context and language) even leave it untranslated.", - "backend-fail-contenttype": "Used as fatal error message. Parameters:\n* $1 - a storage (file) path", - "backend-fail-batchsize": "Error message when the limit of operations to be done at once in the file backend was reached.\nParameters:\n* $1 - the number of operations attempted at once in this case\n* $2 - the maximum number of operations that can be attempted at once\n\nA \"[[:wikipedia:Front and back ends|backend]]\" is a system or component that ordinary users don't interact with directly and don't need to know about, and that is responsible for a distinct task or service - for example, a storage back-end is a generic system for storing data which other applications can use. Possible alternatives for back-end are \"system\" or \"service\", or (depending on context and language) even leave it untranslated.", - "backend-fail-usable": "Parameters:\n* $1 - the file name, including the path, formatted for the storage backend used", + "backend-fail-create": "Parameters:\n* $1 - a filename\n{{Related|Backend-fail}}", + "backend-fail-maxsize": "Parameters:\n* $1 - destination storage path\n* $2 - max file size (in bytes)\n{{Related|Backend-fail}}", + "backend-fail-readonly": "A \"[[:wikipedia:Front and back ends|backend]]\" is a system or component that ordinary users don't interact with directly and don't need to know about, and that is responsible for a distinct task or service - for example, a storage back-end is a generic system for storing data which other applications can use. Possible alternatives for back-end are \"system\" or \"service\", or (depending on context and language) even leave it untranslated.\n\nParameters:\n* $1 - name\n* $2 - reason for being read-only\n{{Related|Backend-fail}}", + "backend-fail-synced": "Used as fatal error message.\n\nParameters:\n* $1 - file path\n\nA \"[[:wikipedia:Front and back ends|backend]]\" is a system or component that ordinary users don't interact with directly and don't need to know about, and that is responsible for a distinct task or service - for example, a storage back-end is a generic system for storing data which other applications can use. Possible alternatives for back-end are \"system\" or \"service\", or (depending on context and language) even leave it untranslated.\n{{Related|Backend-fail}}", + "backend-fail-connect": "Used as fatal error message. Parameters:\n* $1 - backend name\n\nA \"[[:wikipedia:Front and back ends|backend]]\" is a system or component that ordinary users don't interact with directly and don't need to know about, and that is responsible for a distinct task or service - for example, a storage back-end is a generic system for storing data which other applications can use. Possible alternatives for back-end are \"system\" or \"service\", or (depending on context and language) even leave it untranslated.\n{{Related|Backend-fail}}", + "backend-fail-internal": "Used as fatal error message. Parameters:\n* $1 - backend name\n\nA \"[[:wikipedia:Front and back ends|backend]]\" is a system or component that ordinary users don't interact with directly and don't need to know about, and that is responsible for a distinct task or service - for example, a storage back-end is a generic system for storing data which other applications can use. Possible alternatives for back-end are \"system\" or \"service\", or (depending on context and language) even leave it untranslated.\n{{Related|Backend-fail}}", + "backend-fail-contenttype": "Used as fatal error message. Parameters:\n* $1 - a storage (file) path\n{{Related|Backend-fail}}", + "backend-fail-batchsize": "Error message when the limit of operations to be done at once in the file backend was reached.\nParameters:\n* $1 - the number of operations attempted at once in this case\n* $2 - the maximum number of operations that can be attempted at once\nBoth parameters are PLURAL supported\n\nA \"[[:wikipedia:Front and back ends|backend]]\" is a system or component that ordinary users don't interact with directly and don't need to know about, and that is responsible for a distinct task or service - for example, a storage back-end is a generic system for storing data which other applications can use. Possible alternatives for back-end are \"system\" or \"service\", or (depending on context and language) even leave it untranslated.\n{{Related|Backend-fail}}", + "backend-fail-usable": "Parameters:\n* $1 - the file name, including the path, formatted for the storage backend used\n{{Related|Backend-fail}}", "filejournal-fail-dbconnect": "Parameters:\n* $1 is the name of the \"[[:wikipedia:Front and back ends|backend]]\" that the file journal logs changes for.", "filejournal-fail-dbquery": "Parameters:\n* $1 is the name of the \"[[:wikipedia:Front and back ends|backend]]\" that the file journal logs changes for.", "lockmanager-notlocked": "Parameters:\n* $1 is a resource path (e.g. \"mwstore://media-public/a/ab/file.jpg\").", @@ -1999,7 +2044,7 @@ "uncategorizedimages-summary": "{{notranslate}}\nused in [[Special:Uncategorizedimages]]. [[mw:Manual:Interface/Special pages summary|mw manual]].", "uncategorizedtemplates": "{{doc-special|UncategorizedTemplates}}", "uncategorizedtemplates-summary": "{{doc-specialpagesummary|uncategorizedtemplates}}", - "uncategorized-categories-exceptionlist": "System message used as a list of exceptions for Special:UncategorizedCategories. {{notranslate}}", + "uncategorized-categories-exceptionlist": "{{optional}}\nSystem message used as a list of exceptions for Special:UncategorizedCategories.", "unusedcategories": "{{doc-special|UnusedCategories}}", "unusedcategories-summary": "{{doc-specialpagesummary|unusedcategories}}", "unusedimages": "{{doc-special|UnusedImages}}", @@ -2121,8 +2166,11 @@ "apisandbox-sending-request": "JavaScript message displayed while the request is being sent.", "apisandbox-loading-results": "JavaScript message displayed while the response is being read.", "apisandbox-results-error": "Displayed as an error message from JavaScript when the request failed.\n\nParameters:\n* $1 - Error message", - "apisandbox-request-params-json": "Label for text field display the request parameters as JSON.", - "apisandbox-request-url-label": "Label for the text field displaying the URL used to make this request.", + "apisandbox-request-selectformat-label": "Label for the format selector on the results page.", + "apisandbox-request-format-url-label": "Label for the menu item to select URL format.\n\nSee also:\n* {{msg-mw|apisandbox-request-selectformat-label}}\n* {{msg-mw|apisandbox-request-url-label}}", + "apisandbox-request-url-label": "Label for the text field displaying the URL used to make this request.\n\nSee also:\n* {{msg-mw|apisandbox-request-format-url-label}}", + "apisandbox-request-format-json-label": "Label for the menu item to select JSON format.\n\nSee also:\n* {{msg-mw|apisandbox-request-selectformat-label}}\n* {{msg-mw|apisandbox-request-json-label}}", + "apisandbox-request-json-label": "Label for text field display the request parameters as JSON.\n\nSee also:\n* {{msg-mw|apisandbox-request-format-json-label}}", "apisandbox-request-time": "Label and value for displaying the time taken by the request.\n\nParameters:\n* $1 - Time taken in milliseconds", "apisandbox-results-fixtoken": "JavaScript button label", "apisandbox-results-fixtoken-fail": "Displayed as an error message from JavaScript when a CSRF token could not be fetched.\n\nParameters:\n* $1 - Token type", @@ -2142,11 +2190,11 @@ "booksources-text": "Used in [[Special:BookSources/1]].\n\nThis message is followed by a list of links to other sites.\n\nSee also:\n* {{msg-mw|Booksources|title}}\n* {{msg-mw|Booksources-text|text}}", "booksources-invalid-isbn": "This message is displayed after an invalid ISBN is entered on [[Special:Booksources]].", "magiclink-tracking-rfc": "Name of the [[mw:Special:MyLanguage/Help:Tracking categories|tracking category]] where pages that use RFC magic links will be added.\n\nSee [https://en.wikipedia.org/wiki/Help:Magic_links#RFC Help:Magic links] for more information on RFC magic links.", - "magiclink-tracking-rfc-desc": "Description of the tracking category {{mw-msg|magiclink-tracking-rfc}}", + "magiclink-tracking-rfc-desc": "Description of the tracking category {{msg-mw|magiclink-tracking-rfc}}", "magiclink-tracking-pmid": "Name of the [[mw:Special:MyLanguage/Help:Tracking categories|tracking category]] where pages that use PMID magic links will be added.", - "magiclink-tracking-pmid-desc": "Description of the tracking category {{mw-msg|magiclink-tracking-pmid}}", + "magiclink-tracking-pmid-desc": "Description of the tracking category {{msg-mw|magiclink-tracking-pmid}}", "magiclink-tracking-isbn": "Name of the [[mw:Special:MyLanguage/Help:Tracking categories|tracking category]] where pages that use ISBN magic links will be added.", - "magiclink-tracking-isbn-desc": "Description of the tracking category {{mw-msg|magiclink-tracking-isbn}}", + "magiclink-tracking-isbn-desc": "Description of the tracking category {{msg-mw|magiclink-tracking-isbn}}", "rfcurl": "{{notranslate}}\nParameters:\n* $1 - RFC number\nSee also:\n* {{msg-mw|Pubmedurl}}", "pubmedurl": "{{notranslate}}\nParameters:\n* $1 - Pubmed number\nSee also:\n* {{msg-mw|Rfcurl}}", "specialloguserlabel": "Used in [[Special:Log]] as a label for an input field with which the log can be filtered for entries describing actions ''performed'' by the specified user. \"Carried out\" and \"done\" are possible alternatives for \"performed\".", @@ -2377,7 +2425,7 @@ "editcomment": "Only shown if there is an edit {{msg-mw|Summary}}. Parameters:\n* $1 - the edit summary", "revertpage": "Parameters:\n* $1 - username 1\n* $2 - username 2\n* $3 - (Optional) revision ID of the revision reverted to\n* $4 - (Optional) timestamp of the revision reverted to\n* $5 - (Optional) revision ID of the revision reverted from\n* $6 - (Optional) timestamp of the revision reverted from\nSee also:\n* {{msg-mw|Revertpage-nouser}}\n{{Identical|Revert}}", "revertpage-nouser": "This is a confirmation message a user sees after reverting, when the username of the version is hidden with RevisionDelete.\n\nIn other cases the message {{msg-mw|Revertpage}} is used.\n\nParameters:\n* $1 - username 1, can be used for GENDER\n* $2 - (Optional) username 2\n* $3 - (Optional) revision ID of the revision reverted to\n* $4 - (Optional) timestamp of the revision reverted to\n* $5 - (Optional) revision ID of the revision reverted from\n* $6 - (Optional) timestamp of the revision reverted from", - "rollback-success": "This message shows up on screen after successful revert (generally visible only to admins). $1 describes user whose changes have been reverted, $2 describes user which produced version, which replaces reverted version.\n{{Identical|Revert}}\n{{Identical|Rollback}}", + "rollback-success": "This message shows up on screen after successful revert (generally visible only to admins). Parameters:\n* $1 - user whose changes have been reverted\n* $2 - user who produced version, which replaces reverted version\n* $3 - the first user's name, can be used for GENDER\n* $4 - the second user's name, can be used for GENDER\n{{Identical|Revert}}\n{{Identical|Rollback}}", "rollback-success-notify": "Notification shown after a successful revert.\n* $1 - User whose changes have been reverted\n* $2 - User that made the edit that was restored\n* $3 - Url to the diff of the rollback\nSee also:\n* {{msg-mw|showdiff}}\n{{related|rollback-success}}\n{{Format|jquerymsg}}", "sessionfailure-title": "Used as title of the error message {{msg-mw|Sessionfailure}}.", "sessionfailure": "Used as error message.\n\nThe title for this error message is {{msg-mw|Sessionfailure-title}}.", @@ -4104,15 +4152,6 @@ "logentry-tag-update-revision": "{{Logentry|[[Special:Log/tag]]}}\n*$4 - revision ID\n* $6 - list of tags that were added, separated by {{msg-mw|Comma-separator}}\n* $7 - number of added tags\n* $8 - list of tags that were removed, separated by {{msg-mw|Comma-separator}}\n* $9 - number of removed tags", "logentry-tag-update-logentry": "{{Logentry|[[Special:Log/tag]]}}\n*$5 - log entry ID\n* $6 - list of tags that were added, separated by {{msg-mw|Comma-separator}}\n* $7 - number of added tags\n* $8 - list of tags that were removed, separated by {{msg-mw|Comma-separator}}\n* $9 - number of removed tags", "rightsnone": "Default rights for registered users.\n\n{{Identical|None}}", - "revdelete-logentry": "{{RevisionDelete}}\nThis is the message for the log entry in [[Special:Log/delete]] when changing visibility restrictions for page revisions.\n\nFollowed by the message {{msg-mw|revdelete-log-message}} in brackets.\n\nPreceded by the name of the user doing this task.\n\nParameters:\n* $1 - the page name\nSee also:\n* {{msg-mw|Logdelete-logentry}}", - "logdelete-logentry": "{{RevisionDelete}}\nThis is the message for the log entry in [[Special:Log/delete]] when changing visibility restrictions for log events.\n\nFollowed by the message {{msg-mw|logdelete-log-message}} in brackets.\n\nPreceded by the name of the user who did this task.\n\nParameters:\n* $1 - the log name in brackets\nSee also:\n* {{msg-mw|Revdelete-logentry}}", - "revdelete-content": "This message is used as parameter $1 in {{msg-mw|revdelete-hid}} and {{msg-mw|revdelete-unhid}} when hiding or unhiding the content of a revision or event.\n{{Identical|Content}}", - "revdelete-summary": "This message is used as parameter $1 in {{msg-mw|revdelete-hid}} and {{msg-mw|revdelete-unhid}} when hiding or unhiding the edit summary of a revision or event.\n{{Identical|Edit summary}}", - "revdelete-uname": "This message is used as parameter $1 in {{msg-mw|revdelete-hid}} and {{msg-mw|revdelete-unhid}} when hiding or unhiding the username for a revision or event.\n\n{{Identical|Username}}", - "revdelete-hid": "This message is used as <code>$1</code>:\n* in {{msg-mw|revdelete-log-message}} when hiding revisions\n* in {{msg-mw|logdelete-log-message}} when hiding information in the log entry about hiding revisions\nParameters:\n* $1 - any one of the following:\n** {{msg-mw|Revdelete-content}} (when hiding the page content)\n** {{msg-mw|Revdelete-summary}} (when hiding the edit summary)\n** {{msg-mw|Revdelete-uname}} (when hiding the user name)\n** a combination of these three messages\nSee also:\n* {{msg-mw|Revdelete-unhid}}", - "revdelete-unhid": "This message is used as <code>$1</code>:\n* in {{msg-mw|Revdelete-log-message}} when unhiding revisions\n* in {{msg-mw|Logdelete-log-message}} when unhiding information in the log entry about unhiding revisions\nParameters:\n* $1 - any one of the following:\n** {{msg-mw|Revdelete-content}} (when unhiding the page content)\n** {{msg-mw|Revdelete-summary}} (when unhiding the edit summary)\n** {{msg-mw|Revdelete-uname}} (when unhiding the user name)\n** a combination of these three messages\nSee also:\n* {{msg-mw|Revdelete-hid}}", - "revdelete-log-message": "This log message is used together with {{msg-mw|revdelete-logentry}} in the deletion or suppression logs when changing visibility restrictions for page revisions.\n\nParameters:\n* $1 - any one of the following\n** {{msg-mw|revdelete-hid}} (when hiding data)\n** {{msg-mw|revdelete-unhid}} (when unhiding data)\n** {{msg-mw|revdelete-restricted}} (when applying restrictions for sysops)\n** {{msg-mw|revdelete-unrestricted}} (when removing restrictions for sysops)\n** a combination of those messages\n* $2 - the number of revisions for which the restrictions are changed\n\nPlease note that the parameters in a log entry will appear in the log only in the default language of the wiki. View [[Special:Log]] for examples on translatewiki.net with English default language.\n\nSee also:\n* {{msg-mw|Logdelete-log-message}}", - "logdelete-log-message": "This log message appears in brackets after the message {{msg-mw|logdelete-logentry}} in the deletion or suppression logs when changing the visibility of a log entry for events. For a brief description of the process of changing the visibility of events and their log entries see this [http://www.mediawiki.org/wiki/RevisionDelete mediawiki explanation].\n\nParameters:\n* $1 - any one of the following\n** {{msg-mw|revdelete-hid}} (when hiding data)\n** {{msg-mw|revdelete-unhid}} (when unhiding data)\n** {{msg-mw|revdelete-restricted}} (when applying restrictions for sysops)\n** {{msg-mw|revdelete-unrestricted}} (when removing restrictions for sysops)\n** a combination of those messages\n* $2 - the number of events for which the restrictions are changed\n\nPlease note that the parameters in a log entry will appear in the log only in the default language of the wiki. View [[Special:Log]] for examples on translatewiki.net with English default language.\n\nSee also:\n* {{msg-mw|Revdelete-log-message}}", "deletedarticle": "This is a ''logentry'' message. Parameters:\n* $1 - deleted page name\n{{Identical|Deleted}}", "suppressedarticle": "Part of a [[mw:Manual:RevisionDelete|RevisionDelete]] log entry. Parameters:\n* $1 - suppressed page name\n{{Identical|Suppressed}}", "undeletedarticle": "This is a ''logentry'' message. Parameters:\n* $1 - restored (undeleted) page name", @@ -4127,6 +4166,7 @@ "newuserlog-autocreate-entry": "This message is used in the [[:mw:Extension:Newuserlog|new user log]] to mark an account that was created by MediaWiki as part of a [[:mw:Extension:CentralAuth|CentralAuth]] global account.", "rightslogentry": "This message is displayed in the [[Special:Log/rights|User Rights Log]] when a bureaucrat changes the user groups for a user.\n\nParameters:\n* $1 - the username\n* $2 - list of user groups or {{msg-mw|Rightsnone}}\n* $3 - list of user groups or {{msg-mw|Rightsnone}}\n\nThe name of the bureaucrat who did this task appears before this message.\n\nSimilar to {{msg-mw|Gur-rightslog-entry}}", "rightslogentry-autopromote": "This message is displayed in the [[Special:Log/rights|User Rights Log]] when a user is automatically promoted to a user group.\n\nParameters:\n* $1 - (Unused)\n* $2 - a comma separated list of old user groups or {{msg-mw|Rightsnone}}\n* $3 - a comma separated list of new user groups", + "rightslogentry-temporary-group": "This message is displayed in the [[Special:Log/rights|User Rights Log]] to show that a user group has been allocated temporarily.\n\nParameters:\n* $1 - group name\n* $2 - date and time of expiry\n* $3 - date of expiry\n* $4 - time of expiry", "feedback-adding": "Progress notice", "feedback-back": "Button to go back to the previous action in the feedback dialog.\n{{Identical|Back}}", "feedback-bugcheck": "Message that appears before the user submits a bug, reminding them to check for known bugs.\n\nParameters:\n* $1 - bug list page URL", @@ -4151,56 +4191,12 @@ "feedback-useragent": "A label denoting the user agent in the feedback that is posted to the feedback page.\n{{Identical|User agent}}", "searchsuggest-search": "Greyed out default text in the simple search box in the Vector skin. (It disappears and lets the user enter the requested search terms when the search box receives focus.)\n{{Identical|Search}}", "searchsuggest-containing": "Label used in the special item of the search suggestions list which gives the user an option to perform a full text search for the term.", - "api-error-autoblocked": "API error message that can be used for client side localisation of API errors.\n\nCf. {{msg-mw|Autoblockedtext}}.", - "api-error-badaccess-groups": "API error message that can be used for client side localisation of API errors.", "api-error-badtoken": "API error message that can be used for client side localisation of API errors.", - "api-error-blocked": "API error message that can be used for client side localisation of API errors.", - "api-error-copyuploaddisabled": "API error message that can be used for client side localisation of API errors.", - "api-error-duplicate": "API error message that can be used for client side localisation of API errors. Parameters:\n* $1 - a number of files", - "api-error-duplicate-archive": "API error message that can be used for client side localisation of API errors. Parameters:\n* $1 - a number of files", - "api-error-empty-file": "API error message that can be used for client side localisation of API errors.", "api-error-emptypage": "API error message that can be used for client side localisation of API errors.", - "api-error-fetchfileerror": "API error message that can be used for client side localisation of API errors.", - "api-error-fileexists-forbidden": "API error message that can be used for client side localisation of API errors.\n\nParameters:\n* $1 - filename\nSee also:\n* {{msg-mw|Api-error-fileexists-shared-forbidden}}", - "api-error-fileexists-shared-forbidden": "API error message that can be used for client side localisation of API errors.\n\nParameters:\n* $1 - filename\nSee also:\n* {{msg-mw|Api-error-fileexists-forbidden}}", - "api-error-file-too-large": "API error message that can be used for client side localisation of API errors.", - "api-error-filename-tooshort": "API error message that can be used for client side localisation of API errors.", - "api-error-filetype-banned": "API error message that can be used for client side localisation of API errors.", - "api-error-filetype-banned-type": "API error message that can be used for client side localisation of API errors.\n\n* $1 is the extension(s) of the file which cannot be uploaded\n* $2 is the list of file extensions that can be uploaded (Example: ''png, gif, jpg, jpeg, ogg, pdf, svg.'')\n* $3 is the number of allowed file formats (to be used for the PLURAL function)\n* $4 is the number of extensions that could not be uploaded (to be used for the PLURAL function)", - "api-error-filetype-missing": "The word \"extension\" refers to the part behind the last dot in a file name, that by convention gives a hint about the kind of data format which a files contents are in.", - "api-error-hookaborted": "The word \"extension\" here refers to a [[:mw:Manual:Extensions|MediaWiki Extension]] which extends the functionality of the basic wiki by adding something to its capabilities. \"… aborted by an extension\" implies that an operation could not be performed successfully or was not allowed to continue to its intended end.", - "api-error-http": "API error message that can be used for client side localisation of API errors.", - "api-error-illegal-filename": "API error message that can be used for client side localisation of API errors.", - "api-error-internal-error": "API error message that can be used for client side localisation of API errors.", - "api-error-invalid-file-key": "API error message that can be used for client side localisation of API errors.", - "api-error-missingparam": "API error message that can be used for client side localisation of API errors.", - "api-error-missingresult": "API error message that can be used for client side localisation of API errors.", - "api-error-mustbeloggedin": "API error message that can be used for client side localisation of API errors.", - "api-error-mustbeposted": "API error message that can be used for client side localisation of API errors.", - "api-error-noimageinfo": "API error message that can be used for client side localisation of API errors.", - "api-error-nomodule": "API error message that can be used for client side localisation of API errors.", - "api-error-ok-but-empty": "API error message that can be used for client side localisation of API errors.", - "api-error-overwrite": "API error message that can be used for client side localisation of API errors.", - "api-error-ratelimited": "API error message that can be used for client side localisation of API errors.\n\nCf. {{msg-mw|Actionthrottledtext}}", - "api-error-stashfailed": "API error message that can be used for client side localisation of API errors.", "api-error-publishfailed": "API error message that can be used for client side localisation of API errors.", - "api-error-stasherror": "API error message that can be used for client side localisation of API errors.", - "api-error-stashedfilenotfound": "API error message that can be used for client side localisation of API errors.", - "api-error-stashpathinvalid": "API error message that can be used for client side localisation of API errors.", - "api-error-stashfilestorage": "API error message that can be used for client side localisation of API errors.", - "api-error-stashzerolength": "API error message that can be used for client side localisation of API errors.", - "api-error-stashnotloggedin": "API error message that can be used for client side localisation of API errors.", - "api-error-stashwrongowner": "API error message that can be used for client side localisation of API errors.", - "api-error-stashnosuchfilekey": "API error message that can be used for client side localisation of API errors.", - "api-error-timeout": "API error message that can be used for client side localisation of API errors.", - "api-error-unclassified": "API error message that can be used for client side localisation of API errors.", - "api-error-unknown-code": "API error message that can be used for client side localisation of API errors.\n\nParameters:\n* $1 - may contain more error details\n{{Identical|Unknown error}}", - "api-error-unknown-error": "API error message that can be used for client side localisation of API errors.", + "api-error-stashfailed": "API error message that can be used for client side localisation of API errors.", "api-error-unknown-warning": "API error message that can be used for client side localisation of API errors. Parameters:\n* $1 is an unknown warning.", "api-error-unknownerror": "API error message that can be used for client side localisation of API errors.\n\nParameters:\n* $1 - an unknown error message\n{{Identical|Unknown error}}", - "api-error-uploaddisabled": "API error message that can be used for client side localisation of API errors.", - "api-error-verification-error": "The word \"extension\" refers to the part behind the last dot in a file name, that by convention gives a hint about the kind of data format which a files contents are in.", - "api-error-was-deleted": "API error message that can be used for client side localisation of API errors.", "duration-seconds": "Used as duration. Parameters:\n* $1 - number of seconds\n{{Related|Duration}}\n{{Identical|Second}}", "duration-minutes": "Used as duration. Parameters:\n* $1 - number of minutes\n{{Related|Duration}}\n{{Identical|Minute}}", "duration-hours": "Used as duration. Parameters:\n* $1 - number of hours\n{{Related|Duration}}\n{{Identical|Hour}}", @@ -4327,6 +4323,7 @@ "mw-widgets-titleinput-description-new-page": "Description label for a new page in the title input widget.", "mw-widgets-titleinput-description-redirect": "Description label for a redirect in the title input widget.", "mw-widgets-categoryselector-add-category-placeholder": "Placeholder displayed in the category selector widget after the capsules of already added categories.", + "mw-widgets-usersmultiselect-placeholder": "Placeholder displayed in the input field, where new usernames are entered", "sessionmanager-tie": "Used as an error message when multiple session sources are tied in priority.\n\nParameters:\n* $1 - List of dession type descriptions, from messages like {{msg-mw|sessionprovider-mediawiki-session-cookiesessionprovider}}.", "sessionprovider-generic": "Used to create a generic session type description when one isn't provided via the proper message. Should be phrased to make sense when added to a message such as {{msg-mw|cannotloginnow-text}}.\n\nParameters:\n* $1 - PHP classname.", "sessionprovider-mediawiki-session-cookiesessionprovider": "Description of the sessions provided by the CookieSessionProvider class, which use HTTP cookies. Should be phrased to make sense when added to a message such as {{msg-mw|cannotloginnow-text}}.", diff --git a/languages/i18n/qu.json b/languages/i18n/qu.json index 86abce67be..c0192d2772 100644 --- a/languages/i18n/qu.json +++ b/languages/i18n/qu.json @@ -493,8 +493,6 @@ "passwordreset-emaildisabled": "Kay wikipiqa e-chaski llamk'anakunaman ama nisqam.", "passwordreset-username": "Ruraqpa sutin:", "passwordreset-domain": "Duminyu:", - "passwordreset-capture": "Llalliwaq e-chaskita qhawayta munankichu?", - "passwordreset-capture-help": "Kay k'itichata ñit'iywan sananchaspaykiqa, mit'alla yaykuna rimayuq e-chaskita rikunki, hinaptiyki ruraqmanmi kachasqa kanqa.", "passwordreset-email": "E-chaski imamayta:", "passwordreset-emailtitle": "{{SITENAME}}-paq rakiqunamanta willakuna", "passwordreset-emailtext-ip": "Pipas (qamchiki, $1 IP huchhayuq tiyaymanta) {{SITENAME}}-paq ($4)\nrakiqunaykipaq yaykuna rimata kutichinatam mañakurqan. Kay qatiq ruraqpa {{PLURAL:$3|rakiqunanmi|rakiqunankunam}}\nkay e-chaski imamaytayuq kachkan:\n\n$2\n\nKay mit'alla yaykuna {{PLURAL:$3|rimaqa|rimakunaqa}} kunanmanta {{PLURAL:$5|huk p'unchawpi|$5 p'unchawpi}} mawk'ayanqam.\nYaykuspayki musuq yaykuna rimaykitam akllankiman. Pi wakiykipas kayta mañakurqaptinqa,\nicha qam ñawpaq yaykuna rimaykita yuyaspayki manaña wakinchayta munaspaykiqa,\nkay willayta mana qhawaspa mana imatapas ruraspa ñawpaq yaykuna rimaykiwanmi llamk'ayta atinki.", @@ -859,8 +857,6 @@ "saveprefs": "Allinkachinakunata waqaychay", "restoreprefs": "Tukuy kikinmanta allinkachinakunata kutichimuy (tukuy rakirikunapi)", "prefs-editing": "Llamk'apusqa", - "rows": "Sinrukuna:", - "columns": "Wachukuna:", "searchresultshead": "Maskay", "stub-threshold": "Kay hatun kaykamam <a href=\"#\" class=\"stub\">t'una qillqasqa t'inki</a> nisqa kachun (byte):", "stub-threshold-disabled": "Ama nisqa", @@ -946,8 +942,6 @@ "userrights-reason": "Kayrayku:", "userrights-no-interwiki": "Manam saqillasunkichu huk wikikunapi ruraqkunap hayñinkunata hukchayta.", "userrights-nodatabase": "$1 sutiyuq willañiqintinqa manam kanchu icha manam kayllapichu.", - "userrights-nologin": "Kamachiqpa rakiqunaykiwan [[Special:UserLogin|yaykunaykim]] tiyan ruraqkunap hayñinkunata rurapunaykipaq.", - "userrights-notallowed": "Qampa rakiqunaykiwanqa manam ruraqkunap hayñinkunata yapayta icha qichuyta atinkichu.", "userrights-changeable-col": "Hukchanayki huñukuna", "userrights-unchangeable-col": "Mana hukchanayki huñukuna", "userrights-conflict": "Ruraqpa hayñin hukchay tupanakuymi. Ama hina kaspa, hukchasqaykikunata musuqmanta quy.", @@ -1038,7 +1032,6 @@ "right-siteadmin": "Willañiqintinta hark'ay, paskaypas", "right-override-export-depth": "P'anqakunata hawaman quy, t'inkisqa p'anqakunatapas pichqa ñiqin t'inkipayasqakama", "right-sendemail": "Huk ruraqkunaman e-chaskita kachay", - "right-passwordreset": "Yaykuna rima kutichina e-chaskikunata qhaway", "newuserlogpage": "Rakiquna kamariy hallch'a", "newuserlogpagetext": "Kayqa ruraqkunap rakiqunankunata kamariymanta hallch'am.", "rightslog": "Ruraqpa hayñinkunap hukyasqankuna", @@ -1209,7 +1202,7 @@ "uploaddisabledtext": "Willañiqi churkuyqa manam saqillasqachu.", "php-uploaddisabledtext": "PHP-wan willañiqi churkuyqa hark'asqam. Ama hina kaspa, willañiqi churkuy allinkachinakunata llanchiy.", "uploadscripted": "Kay willañiqiqa wakichi icha HTML qillqayuqmi, llika wamp'unaqa pantalla unanchanmanchá.", - "uploadscriptednamespace": "Kay SVG willañiqiqa mana allin \"$1\" sutisuyuyuqmi.", + "uploadscriptednamespace": "Kay SVG willañiqiqa mana allin \"<nowiki>$1</nowiki>\" sutisuyuyuqmi.", "uploadinvalidxml": "Manam atinichu churkusqa willañiqipi XML-ta kuskiyta.", "uploadvirus": "Willañiqipiqa añawmi! Yuyay: $1", "uploadjava": "Kay ZIP willañiqiqa Java .class willañiqiyuqmi.\nJava churkuyqa manam saqillasqachu, qasikanapaq saywachasqa kanman karunchana tiyanman.", @@ -2888,44 +2881,12 @@ "feedback-thanks": "Añaychayki! Willapuyniykiqa \"[$2 $1]\" sutiyuq p'anqaman yapasqañam.", "searchsuggest-search": "Maskay", "searchsuggest-containing": "kaykunayuq: ...", - "api-error-badaccess-groups": "Kay wikipiqa willañiqikunata manam churkuyta atinkichu.", "api-error-badtoken": "Ukhupi pantasqa: Mana allinta sananchasqa.", - "api-error-copyuploaddisabled": "URL nisqawanqa kay sirwiqpi manam churkuyta atinki.", - "api-error-duplicate": "Kay tiyaypiqa huk {{PLURAL:$1|willañiqim|willañiqikunam}} kachkanñam kaqlla samiqniyuq kaq.", - "api-error-duplicate-archive": "Kay tiyaypiqa huk {{PLURAL:$1|willañiqim|willañiqikunam}} karqanñam kaqlla samiqniyuq kaq, kunantaq qullusqañam.", - "api-error-empty-file": "Kachasqayki willañiqiqa ch'usaqmi.", "api-error-emptypage": "Musuq ch'usaq p'anqakunata kamariyqa manam saqillasqachu.", - "api-error-fetchfileerror": "Ukhupi pantasqa: Willañiqita chaskiykachachkaptiyki ima mana allin kaqpas tukurqan.", - "api-error-fileexists-forbidden": "\"$1\" sutiyuq willañiqiqa kachkañam, manam huknachayta atinkichu.", - "api-error-fileexists-shared-forbidden": "\"$1\" sutiyuq willañiqiqa rakinakusqa willañiqi churanapi kachkañam, manam huknachayta atinkichu.", - "api-error-file-too-large": "Kachasqayki willañiqiqa nisyu hatunmi.", - "api-error-filename-tooshort": "Kay willañiqi sutiqa nisyu pisillam.", - "api-error-filetype-banned": "Kay willañiqi layaqa manam saqillasqachu.", - "api-error-filetype-banned-type": "$1 nisqaqa manam saqillasqachu willañiqi {{PLURAL:$4|laya|layakuna}}. Saqillasqa willañiqi {{PLURAL:$3|layaqa|layakunaqa}} kaymi: $2.", - "api-error-filetype-missing": "Kay willañiqi sutiqa manam k'askaqniyuqchu.", - "api-error-hookaborted": "Wakinchaykachasqaykitaqa mast'ari ch'iwinam puchukachirqan.", - "api-error-http": "Ukhupi pantasqa: Manam sirwiqwan t'inkinakuyta atinichu.", - "api-error-illegal-filename": "Kay willañiqi sutiqa manam saqillasqachu.", - "api-error-internal-error": "Ukhupi pantasqa: Wikipi churkuchkaptiyki ima mana allin kaqpas tukurqan.", - "api-error-invalid-file-key": "Ukhupi pantasqa: Mit'alla hallch'api willañiqiqa manam tarisqachu.", - "api-error-missingparam": "Ukhupi pantasqa: Mañakuypi manam kuskanachina tupukuna kanchu.", - "api-error-missingresult": "Ukhupi pantasqa: Manam yuqanchasqachu iskaychay aypasqachu.", - "api-error-mustbeloggedin": "Yaykunaykim tiyan willañiqikunata churkunaykipaq.", - "api-error-mustbeposted": "Ukhupi pantasqa: Mañakuypaq HTTP POST kanam tiyan.", - "api-error-noimageinfo": "Willañiqiqa churkusqañam, chaywanpas sirwiq manam willawanchu ima willañiqimantapas.", - "api-error-nomodule": "Ukhupi pantasqa: Manam kanchu churasqa churkuna wakina tupu.", - "api-error-ok-but-empty": "Ukhupi pantasqa: Sirwiqqa manam kutipanchu.", - "api-error-overwrite": "Kachkaqña willañiqita huknachayqa manam saqillasqachu.", - "api-error-stashfailed": "Ukhupi pantasqa: Sirwiqqa mit'alla willañiqita manam hallch'ayta atinchu.", "api-error-publishfailed": "Ukhupi pantasqa: Sirwiqqa mit'alla willañiqita manam uyanchayta atinchu.", - "api-error-timeout": "Suyakusqa mit'apiqa sirwiq manam kutiparqanchu.", - "api-error-unclassified": "Mana riqsisqa pantasqam tukurqan.", - "api-error-unknown-code": "Mana riqsisqa pantasqa: \"$1\".", - "api-error-unknown-error": "Ukhupi pantasqa: Churkuykachachkaptiyki ima mana allin kaqpas tukurqan.", + "api-error-stashfailed": "Ukhupi pantasqa: Sirwiqqa mit'alla willañiqita manam hallch'ayta atinchu.", "api-error-unknown-warning": "Mana riqsisqa yuyampay: \"$1\".", "api-error-unknownerror": "Mana riqsisqa pantasqa: \"$1\".", - "api-error-uploaddisabled": "Kay wikipiqa manam churkuyta atinkichu.", - "api-error-verification-error": "Kay willañiqiqa waqllisqachá, icha pantasqa k'askaqniyuqchá.", "duration-seconds": "$1 {{PLURAL:$1|sikundu|sikundukuna}}", "duration-minutes": "$1 {{PLURAL:$1|minutu|minutukuna}}", "duration-hours": "$1 {{PLURAL:$1|ura|urakuna}}", diff --git a/languages/i18n/ro.json b/languages/i18n/ro.json index 62f7dec853..685746e584 100644 --- a/languages/i18n/ro.json +++ b/languages/i18n/ro.json @@ -435,19 +435,12 @@ "login": "Autentificare", "login-security": "Verificați-vă identitatea", "nav-login-createaccount": "Creare cont / Autentificare", - "userlogin": "Creare cont / Autentificare", - "userloginnocreate": "Autentificare", "logout": "Închidere sesiune", "userlogout": "Închide sesiunea", "notloggedin": "Nu sunteți autentificat", "userlogin-noaccount": "Nu aveți cont încă?", "userlogin-joinproject": "Înscrieți-vă la {{SITENAME}}", - "nologin": "Nu aveți cont încă? $1.", - "nologinlink": "Creați-vă un cont de utilizator acum", "createaccount": "Creare cont", - "gotaccount": "Aveți deja un cont de utilizator? '''$1'''.", - "gotaccountlink": "Autentificați-vă", - "userlogin-resetlink": "Ați uitat datele de autentificare?", "userlogin-resetpassword-link": "V-ați uitat parola?", "userlogin-helplink2": "Ajutor la autentificare", "userlogin-loggedin": "Sunteți deja {{GENDER:$1|autentificat|autentificată}} ca {{GENDER:$1|$1}}.\nUtilizați formularul de mai jos pentru a vă autentifica cu alt nume de utilizator.", @@ -460,7 +453,6 @@ "createaccountmail": "Utilizează o parolă temporară aleasă la întâmplare și o trimite la adresa de e-mail indicată", "createaccountmail-help": "Poate fi folosit pentru a crea un cont pentru o altă persoană fără a cunoaște parola.", "createacct-realname": "Nume real (opțional)", - "createaccountreason": "Motiv:", "createacct-reason": "Motiv", "createacct-reason-ph": "De ce creați un alt cont", "createacct-reason-help": "Mesaj care apare în jurnalul de creare a conturilor", @@ -993,8 +985,6 @@ "saveprefs": "Salvează preferințele", "restoreprefs": "Restaurează toate valorile implicite (în toate secțiunile)", "prefs-editing": "Modificare", - "rows": "Rânduri:", - "columns": "Coloane:", "searchresultshead": "Parametri căutare", "stub-threshold": "Pragul pentru formatarea legăturilor către cioturi ($1):", "stub-threshold-sample-link": "exemplu", @@ -1218,6 +1208,7 @@ "action-deleterevision": "ștergeți această versiune", "action-deletelogentry": "ștergeți înregistrări din jurnal", "action-deletedhistory": "vizualizați istoricul șters a unei pagini", + "action-deletedtext": "vizualizați textul versiunii șterse", "action-browsearchive": "căutați pagini șterse", "action-undelete": "recuperați această pagină", "action-suppressrevision": "revizuiți și să restaurați versiuni ascunse", @@ -1393,7 +1384,7 @@ "uploaded-setting-handler-svg": "Sunt blocate fișierele SVG care setează atributul „handler” cu remote/data/script. S-a găsit <code>$1=„$2”</code> în fișierul SVG încărcat.", "uploaded-remote-url-svg": "Sunt blocate fișierele SVG care setează orice atribut de stil către adrese URL la distanță. S-a găsit <code>$1=„$2”</code> în fișierul SVG încărcat.", "uploaded-image-filter-svg": "S-a găsit filtru de imagine cu URL: <code><$1 $2=\"$3\"></code> în fișierul SVG încărcat.", - "uploadscriptednamespace": "Acest fișier SVG conține un spațiu de nume „$1” neautorizat.", + "uploadscriptednamespace": "Acest fișier SVG conține un spațiu de nume „<nowiki>$1</nowiki>” neautorizat.", "uploadinvalidxml": "Nu s-a putut analiza conținutul XML din fișierul încărcat.", "uploadvirus": "Fișierul conține un virus! Detalii: $1", "uploadjava": "Fișierul de față este o arhivă ZIP care conține un fișier de clasă Java.\nÎncărcarea fișierelor Java nu este permisă, întrucât pot evita restricțiile de securitate.", @@ -3364,7 +3355,6 @@ "logentry-tag-update-revision": "$1 {{GENDER:$2|a actualizat}} etichetele pentru versiunea $4 a paginii $3 ({{PLURAL:$7|adăugat}} $6; {{PLURAL:$9|șters}} $8)", "logentry-tag-update-logentry": "$1 {{GENDER:$2|a actualizat}} etichetele intrării din jurnal $5 a paginii $3 ({{PLURAL:$7|adăugat}} $6; {{PLURAL:$9|șters}} $8)", "rightsnone": "(niciunul)", - "revdelete-summary": "descrierea modificărilor", "feedback-adding": "Se adaugă părerea pe pagină...", "feedback-back": "Înapoi", "feedback-bugcheck": "Minunat! Trebuie doar să verificați dacă nu cumva problema a fost [$1 deja înregistrată].", @@ -3389,56 +3379,12 @@ "feedback-useragent": "Agent utilizator:", "searchsuggest-search": "Căutare", "searchsuggest-containing": "conținând...", - "api-error-autoblocked": "Adresa dumnevoastră IP a fost blocată automat, pentru că a fost folosită de un utilizator blocat.", - "api-error-badaccess-groups": "Nu aveți dreptul să încărcați fișiere pe acest wiki.", "api-error-badtoken": "Eroare internă: jeton greșit.", - "api-error-blocked": "Vi s-a blocat accesul la modificări.", - "api-error-copyuploaddisabled": "Încărcarea prin URL este dezactivată pe acest server.", - "api-error-duplicate": "Există {{PLURAL:$1|un alt fișier deja încărcat|alte fișiere deja încărcate}} cu același conținut.", - "api-error-duplicate-archive": "{{PLURAL:$1|A existat un alt fișier|Au existat alte fișiere}} cu același conținut pe site, dar {{PLURAL:$1|a fost|au fost}} șterse.", - "api-error-empty-file": "Fișierul încărcat de dumneavoastră este gol.", "api-error-emptypage": "Crearea paginilor noi, goale nu este permisă.", - "api-error-fetchfileerror": "Eroare internă: ceva nu a funcționat corect la prelucrarea fișierului.", - "api-error-fileexists-forbidden": "Un fișier cu numele „$1” există deja și nu poate fi suprascris.", - "api-error-fileexists-shared-forbidden": "Un fișier cu numele „$1” există deja în depozitul de fișiere partajate, și nu poate fi suprascris.", - "api-error-file-too-large": "Fișierul pe care l-ați trimis este prea mare.", - "api-error-filename-tooshort": "Numele fișierului este prea scurt.", - "api-error-filetype-banned": "Acest tip de fișiere este interzis.", - "api-error-filetype-banned-type": "$1 {{PLURAL:$4|este un tip de fișier nepermis|sunt tipuri de fișier nepermise}}. {{PLURAL:$3|Tip de fișier permis este|Tipuri de fișier permise sunt}} $2.", - "api-error-filetype-missing": "Fișierului îi lipsește extensia.", - "api-error-hookaborted": "Modificarea pe care ați încercat să o faceți a fost oprită de sesizarea unei extensii.", - "api-error-http": "Eroare internă: nu s-a reușit conectarea la server.", - "api-error-illegal-filename": "Numele acordat fișierului nu este permis.", - "api-error-internal-error": "Eroare internă: ceva nu a funcționat în timpul procesării încărcării.", - "api-error-invalid-file-key": "Eroare internă: fișierul nu a fost găsit în depozitul temporar.", - "api-error-missingparam": "Eroare internă: lipsesc parametrii cererii.", - "api-error-missingresult": "Eroare internă: nu s-a putut determina dacă copierea a reușit.", - "api-error-mustbeloggedin": "Trebuie să fiți autentificat pentru a încărca fișiere.", - "api-error-mustbeposted": "Eroare internă: cererea necesită metoda HTTP POST.", - "api-error-noimageinfo": "Încărcarea a reușit, dar serverul nu a dat nicio informație despre fișier.", - "api-error-nomodule": "Eroare internă: niciun modul de încărcare setat.", - "api-error-ok-but-empty": "Eroare internă: niciun răspuns de la server.", - "api-error-overwrite": "Nu este permisă suprascrierea unui fișier existent.", - "api-error-ratelimited": "Ați încercat să încărcați într-un interval de timp scurt mai multe fișiere decât permite acest wiki.\nÎncercați din nou peste câteva minute.", - "api-error-stashfailed": "Eroare internă: serverul nu a putut stoca fișierul temporar.", "api-error-publishfailed": "Eroare internă: serverul nu a putut publica fișierul temporar.", - "api-error-stasherror": "A apărut o eroare la încărcarea fișierului în depozitul temporar.", - "api-error-stashedfilenotfound": "Fișierul din depozitul temporar nu a fost găsit când s-a încercat încărcarea sa.", - "api-error-stashpathinvalid": "Calea unde ar fi trebuit să fie găsit fișierul din depozitul temporar nu este validă.", - "api-error-stashfilestorage": "A apărut o eroare la stocarea fișierului în depozitul temporar.", - "api-error-stashzerolength": "Serverul nu a putut depozita temporar fișierul, deoarece are o mărime egală cu zero.", - "api-error-stashnotloggedin": "Trebuie să vă autentificați pentru a salva fișiere în depozitul temporar.", - "api-error-stashwrongowner": "Fișierul pe care încercați să-l accesați din depozitul temporar nu vă aparține.", - "api-error-stashnosuchfilekey": "Cheia fișierului pe care încercați să-l accesați din depozitul temporar nu există.", - "api-error-timeout": "Serverul nu a răspuns în timp util.", - "api-error-unclassified": "A apărut o eroare necunoscută.", - "api-error-unknown-code": "Eroare necunoscută: „$1”", - "api-error-unknown-error": "Eroare internă: ceva nu a funcționat atunci când ați încercat să încărcați fișierul.", + "api-error-stashfailed": "Eroare internă: serverul nu a putut stoca fișierul temporar.", "api-error-unknown-warning": "Avertisment necunoscut: $1", "api-error-unknownerror": "Eroare necunoscută: „$1”.", - "api-error-uploaddisabled": "Încărcarea este dezactivată pe acest wiki.", - "api-error-verification-error": "Acest fișier ar putea fi corupt sau poate avea extensia greșită.", - "api-error-was-deleted": "Un fișier cu același nume a fost deja încărcat în trecut și ulterior șters.", "duration-seconds": "$1 {{PLURAL:$1|secundă|secunde|de secunde}}", "duration-minutes": "$1 {{PLURAL:$1|minut|minute|de minute}}", "duration-hours": "$1 {{PLURAL:$1|oră|ore|de ore}}", diff --git a/languages/i18n/roa-tara.json b/languages/i18n/roa-tara.json index 026e178e7f..a58a9db925 100644 --- a/languages/i18n/roa-tara.json +++ b/languages/i18n/roa-tara.json @@ -938,8 +938,6 @@ "saveprefs": "Reggistre", "restoreprefs": "Repristine tutte le 'mbostaziune origgenale", "prefs-editing": "Stoche a cange", - "rows": "Righe:", - "columns": "Culonne:", "searchresultshead": "Cirche", "stub-threshold": "Soglie pe collegamende stub de formattazione ($1):", "stub-threshold-sample-link": "esembie", @@ -1312,7 +1310,7 @@ "uploaded-hostile-svg": "Acchiate 'nu CSS insecure ndr'à l'elemende de stile d'u file SVG carecate.", "uploaded-event-handler-on-svg": "'A 'mbostazione de le attribute de gestione de l'evende <code>$1=\"$2\"</code> non ge se pò ffà cu le file SVG.", "uploaded-href-unsafe-target-svg": "Acchiate 'na destinazione href non secure <code><$1 $2=\"$3\"></code> jndr'à 'u file SVG carecate.", - "uploadscriptednamespace": "Stu file SVG tène 'nu namespace illegale '$1'", + "uploadscriptednamespace": "Stu file SVG tène 'nu namespace illegale '<nowiki>$1</nowiki>'", "uploadinvalidxml": "L'XML jndr'à 'u file carecate non ge pò essere analizzate.", "uploadvirus": "Alanga toje, 'u file condiene 'nu virus! Dettaglie: $1", "uploadjava": "'U file jè 'nu file de tipe ZIP ca condene 'nu file de classe Java.\n'U carecamende de le file Java non g'è permesse, purcé lore ponne causà l'aggiramende de le restriziune de sicurezze.", @@ -3381,52 +3379,12 @@ "feedback-useragent": "Utende agente:", "searchsuggest-search": "Cirche {{SITENAME}}", "searchsuggest-containing": "tène...", - "api-error-badaccess-groups": "Tu non ge puè carecà file sus a sta Uicchi.", "api-error-badtoken": "Errore inderne: Gettone errate.", - "api-error-copyuploaddisabled": "'U carecamende da URL jè disabbilitate sus a stu server.", - "api-error-duplicate": "{{PLURAL:$1|Stè 'n'otre file|Stonne otre file}} sus a 'u site cu 'u stesse condenute.", - "api-error-duplicate-archive": "{{PLURAL:$1|Stave 'n'otre file|Stavane otre file}} già sus a 'u site cu 'u stesse condenute, ma {{PLURAL:$1|ha state|onne state}} scangellate.", - "api-error-empty-file": "'U file ca tu è confermate ere vacande.", "api-error-emptypage": "Quanne se ne ccreje une, le pàggene vacande non ge sò permesse.", - "api-error-fetchfileerror": "Errore inderne: Quacchecose ha sciute stuèrte quanne ste analizzave 'u file.", - "api-error-fileexists-forbidden": "'Nu file cu 'u nome \"$1\" esiste, e non ge pò essere sovrascritte.", - "api-error-fileexists-shared-forbidden": "'Nu file cu 'u nome \"$1\" esiste jndr'à l'archivije de le file comune, e non ge pò essere sovrascritte.", - "api-error-file-too-large": "'U file ca tu è confermate jè troppe granne.", - "api-error-filename-tooshort": "'U nome d'u file jè troppe curte.", - "api-error-filetype-banned": "Stu tipe de file jè vietate.", - "api-error-filetype-banned-type": "$1 {{PLURAL:$4|ète 'nu tipe de file ca non g'è permesse|sonde tipe de file ca no sonde permesse}}. {{PLURAL:$3|'U tipe de file permesse ète|Le tipe de file permesse sonde}} $2.", - "api-error-filetype-missing": "'U file jè senze 'n'estenzione.", - "api-error-hookaborted": "'U cangiamende ca tu stè pruève a ffà ha state inderrotte da 'n'estenzione.", - "api-error-http": "Errore inderne: Non ge se riesce a collegà a 'u server", - "api-error-illegal-filename": "'U nome d'u file non g'è permesse.", - "api-error-internal-error": "Errore inderne: Quaccheccose ha sciute male mendre ca ste processamme 'u carecamende tune sus 'a uicchi.", - "api-error-invalid-file-key": "Errore inderne: 'U file non ge se iacchie jndr'à memorie temboranèe.", - "api-error-missingparam": "Errore inderne: Parametre mangande sus a richieste.", - "api-error-missingresult": "Errore inderne: Non ge se pò determinà ce 'a copie ha state fatte.", - "api-error-mustbeloggedin": "Tu a essere collegate pe carecà le file.", - "api-error-mustbeposted": "Errore inderne: 'A richieste vole HTTP POST.", - "api-error-noimageinfo": "'U carecamende ha riuscite, ma 'u server non ge n'ha date nisciuna 'mbormazione sus a 'u file.", - "api-error-nomodule": "Errore inderne: Nisciune module de carecamende 'mbostate.", - "api-error-ok-but-empty": "Errore inderne: Nisciune resposte da 'u server.", - "api-error-overwrite": "'A sovrascritture de 'nu file ca esiste non ge se pò fà.", - "api-error-stashfailed": "Errore inderne: 'U server ha fallite 'a reggistrazione de le file temboranèe.", "api-error-publishfailed": "Errore inderne: 'U server ha fallite 'a pubblecazione d'u file temboranèe.", - "api-error-stasherror": "Ha assute 'n'errore mendre ca carecave 'u file jndr'à 'u majazzine.", - "api-error-stashedfilenotfound": "'U file stipate non g'ha state acchiate quanne ste pruvave a carecarle jndr'à 'u majazzine.", - "api-error-stashpathinvalid": "'U percorse 'addò 'u file s'avesse acchià non g'è valide.", - "api-error-stashfilestorage": "Ha assute 'n'errore memorizzanne 'u file jndr'à 'u majazzine.", - "api-error-stashzerolength": "'U server non ge pò pigghiarse 'u file, purcé téne 'na lunghezze zero.", - "api-error-stashnotloggedin": "Tu a trasè pe reggistrà file jndr'à 'u majazzine de carecamende.", - "api-error-stashwrongowner": "'U file ca ste pruéve a pigghià da 'u majazzine non ge ste cchiù.", - "api-error-stashnosuchfilekey": "'A chiave d'u file ca ste pruéve a pigghià da 'u majazzine non g'esiste cchiù.", - "api-error-timeout": "'U server non g'ave resposte jndr'à 'u tiembe ca 'u spettave.", - "api-error-unclassified": "'N'errore scanusciute s'a verificate", - "api-error-unknown-code": "Errore scanusciute: \"$1\"", - "api-error-unknown-error": "Errore inderne: Quacche cose ha sciute storte quanne ste pruvave a carecà 'u file tune.", + "api-error-stashfailed": "Errore inderne: 'U server ha fallite 'a reggistrazione de le file temboranèe.", "api-error-unknown-warning": "Avvertimende scanusciute: $1", "api-error-unknownerror": "Errore scanusciute: \"$1\"", - "api-error-uploaddisabled": "Le carecaminde sonde disabbilitate sus a sta Uicchi.", - "api-error-verification-error": "Stu file pò essere scuasciate, o ave 'n'estenzione sbagliate.", "duration-seconds": "{{PLURAL:$1|seconde|seconde}}", "duration-minutes": "{{PLURAL:$1|minute|minute}}", "duration-hours": "$1 {{PLURAL:$1|ore}}", diff --git a/languages/i18n/ru.json b/languages/i18n/ru.json index 65f7ae0ff9..c0f76cb6a9 100644 --- a/languages/i18n/ru.json +++ b/languages/i18n/ru.json @@ -97,11 +97,16 @@ "SergeyButkov", "Irus", "Kareyac", - "Mailman" + "Mailman", + "Аль-Гимравий", + "Gamliel Fishkin", + "Ping08", + "Yuryleb", + "Redredsonia" ] }, "tog-underline": "Подчёркивание ссылок:", - "tog-hideminor": "Скрывать малые правки из списка свежих правок", + "tog-hideminor": "Скрывать малые изменения из списка свежих правок", "tog-hidepatrolled": "Скрывать патрулированные правки в списке свежих правок", "tog-newpageshidepatrolled": "Скрывать отпатрулированные страницы в списке новых страниц", "tog-hidecategorization": "Скрывать категоризацию страниц", @@ -117,7 +122,7 @@ "tog-watchdeletion": "Добавлять в список наблюдения удалённые мной страницы и файлы", "tog-watchuploads": "Добавлять закачанные мною файлы в список наблюдения", "tog-watchrollback": "Добавлять страницы, где я выполнил откат, в мой список наблюдения", - "tog-minordefault": "Помечать по умолчанию правки как малозначимые", + "tog-minordefault": "По умолчанию помечать правки как малые", "tog-previewontop": "Помещать предпросмотр перед окном редактирования", "tog-previewonfirst": "Показывать предпросмотр при переходе к редактированию", "tog-enotifwatchlistpages": "Уведомлять по электронной почте об изменениях страниц и файлов из списка наблюдения", @@ -234,7 +239,7 @@ "broken-file-category": "Страницы с неработающими файловыми ссылками", "about": "Описание", "article": "Статья", - "newwindow": " (в новом окне)", + "newwindow": "(в новом окне)", "cancel": "Отменить", "moredotdotdot": "Далее…", "morenotlisted": "Этот список может быть неполным.", @@ -265,6 +270,7 @@ "searcharticle": "Перейти", "history": "История", "history_short": "История", + "history_small": "история", "updatedmarker": "обновлено после моего последнего посещения", "printableversion": "Версия для печати", "permalink": "Постоянная ссылка", @@ -274,7 +280,7 @@ "edit": "Править", "edit-local": "Редактировать локальное описание", "create": "Создать", - "create-local": "Добавить локальное описание", + "create-local": "Создать локально", "editthispage": "Править эту страницу", "create-this-page": "Создать эту страницу", "delete": "Удалить", @@ -505,19 +511,12 @@ "login": "Войти", "login-security": "Подтвердите свою личность", "nav-login-createaccount": "Представиться / зарегистрироваться", - "userlogin": "Представиться или зарегистрироваться", - "userloginnocreate": "Войти", "logout": "Завершение сеанса", "userlogout": "Завершение сеанса", "notloggedin": "Вы не представились системе", "userlogin-noaccount": "Нет учётной записи?", "userlogin-joinproject": "Присоединиться к проекту", - "nologin": "Нет учётной записи? $1.", - "nologinlink": "Создать учётную запись", "createaccount": "Создать учётную запись", - "gotaccount": "Вы уже зарегистрированы? '''$1'''.", - "gotaccountlink": "Представьтесь", - "userlogin-resetlink": "Забыли данные для входа?", "userlogin-resetpassword-link": "Сбросить ваш пароль?", "userlogin-helplink2": "Помощь по входу", "userlogin-loggedin": "Вы уже вошли как {{GENDER:$1|$1}}.\nИспользуйте форму ниже, чтобы войти под другой учётной записью.", @@ -530,7 +529,6 @@ "createaccountmail": "Использовать сгенерированный случайным образом временный пароль и выслать его на указанный адрес электронной почты", "createaccountmail-help": "\nМожет использоваться, чтобы создать учетную запись для другого лица, не узнавая пароль.", "createacct-realname": "Настоящее имя (необязательно)", - "createaccountreason": "Причина:", "createacct-reason": "Причина", "createacct-reason-ph": "Зачем вы создаёте другую учетную запись", "createacct-reason-help": "Сообщение, отображаемое в журнале создания учётных записей", @@ -558,7 +556,7 @@ "nosuchuser": "Участника с именем «$1» не существует.\nИмена участников чувствительны к регистру букв.\nПроверьте правильность написания имени или [[Special:CreateAccount|создайте новую учётную запись]].", "nosuchusershort": "Не существует участника с именем «$1». Проверьте написание имени.", "nouserspecified": "Вы должны указать имя участника.", - "login-userblocked": "Этот участник заблокирован. Вход в систему не разрешён.", + "login-userblocked": "Участник заблокирован. Вход в систему запрещен.", "wrongpassword": "Введённый вами пароль неверен. Попробуйте ещё раз.", "wrongpasswordempty": "Пожалуйста, введите непустой пароль.", "passwordtooshort": "Пароль должен состоять не менее чем из $1 {{PLURAL:$1|символа|символов}}.", @@ -613,7 +611,7 @@ "changepassword-success": "Ваш пароль был изменён!", "changepassword-throttled": "Вы сделали слишком много попыток представиться системе.\nПожалуйста, подождите $1 перед тем, как попробовать снова.", "botpasswords": "Пароли ботов", - "botpasswords-summary": "<em>Пароли бота</em> позволяют получить доступ к учётной записи пользователя через API без использования логина и пароля главной учётной записи. Права участника при входе с паролем бота могут быть ограничены.\n\nЕсли Вы не знаете, зачем вам это, вероятно, лучше этого не делайте. Никто никогда не должен просить вас, чтобы вы создали и сообщили его.", + "botpasswords-summary": "<em>Пароли бота</em> позволяют получить доступ к учётной записи пользователя через API без использования логина и пароля главной учётной записи. Права участника при входе с паролем бота могут быть ограничены.\n\nЕсли Вы не знаете, зачем это нужно, воздержитесь от использования этой страницы. Никто никогда не должен просить вас, чтобы вы создали и сообщили его.", "botpasswords-disabled": "Пароли бота отключены.", "botpasswords-no-central-id": "Для использования паролей бота вы должны войти в централизованную учётную запись.", "botpasswords-existing": "Существующие пароли бота", @@ -727,11 +725,11 @@ "selfredirect": "<strong>Внимание:</strong> Вы создаёте перенаправление на ту же самую статью.\nВозможно, Вы выбрали неправильную целевую страницу для перенаправления или редактируете не ту страницу.\nЕсли Вы нажмёте кнопку «{{int:savearticle}}» ещё раз, перенаправление всё же будет создано.", "missingcommenttext": "Пожалуйста, введите ниже ваше сообщение.", "missingcommentheader": "<strong>Напоминание.</strong> Вы не указали тему/заголовок для этого комментария.\nПри повторном нажатии на кнопку «{{int:savearticle}}», ваша правка будет записана без заголовка.", - "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Пожалуйста, указывайте эти сведения в любых своих обращениях.", + "blockedtext": "<strong>Ваша учётная запись или IP-адрес заблокированы.</strong>\n\nБлокировка произведена администратором $1.\nУказана следующая причина: «<em>$2</em>».\n\n* Начало блокировки: $8\n* Окончание блокировки: $6\n* Цель блокировки: $7\n\nВы можете связаться с $1 или любым другим [[{{MediaWiki:Grouppage-sysop}}|администратором]], чтобы обсудить блокировку.\nОбратите внимание, что не сможете использовать функцию «письмо участнику», если в своих [[Special:Preferences|персональных настройках]] не задали или не подтвердили корректный адрес электронной почты, или если ваша блокировка включает запрет отправки писем подобным образом.\nВаш IP-адрес — $3, идентификатор блокировки — $5.\nПожалуйста, указывайте эти сведения в любых своих обращениях.", "autoblockedtext": "Ваш 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:<em>$2</em>\n\n* Начало блокировки: $8\n* Окончание блокировки: $6\n* Цель блокировки: $7\n\nВаш текущий IP-адрес $3.\nПожалуйста, указывайте все эти сведения в любых своих обращениях.", "blockednoreason": "причина не указана", @@ -752,7 +750,7 @@ "missing-revision": "Версия $1 страницы «{{FULLPAGENAME}}» не существует.\n\nЭто обычно бывает, если последовать по устаревшей ссылке на страницу, которая была удалена.\nПодробности могут быть в [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} журнале удалений].", "userpage-userdoesnotexist": "Учётной записи «<nowiki>$1</nowiki>» не существует. Убедитесь, что вы действительно желаете создать или изменить эту страницу.", "userpage-userdoesnotexist-view": "Не зарегистрировано учётной записи «$1».", - "blocked-notice-logextract": "Этот участник в данный момент заблокирован.\nНиже приведена последняя запись из журнала блокировок:", + "blocked-notice-logextract": "{{GENDER:$1|Этот участник|Эта участница}} в данный момент {{GENDER:$1|заблокирован|заблокирована}}.\nНиже приведена последняя запись из журнала блокировок:", "clearyourcache": "<strong>Замечание.</strong> Возможно, после сохранения вам придётся очистить кэш своего браузера, чтобы увидеть изменения.\n* <strong>Firefox / Safari:</strong> Удерживая клавишу <em>Shift</em>, нажмите на панели инструментов <em>Обновить</em> либо нажмите <em>Ctrl-F5</em> или <em>Ctrl-R</em> (<em>⌘-R</em> на Mac)\n* <strong>Google Chrome:</strong> Нажмите <em>Ctrl-Shift-R</em> (<em>⌘-Shift-R</em> на Mac)\n* <strong>Internet Explorer:</strong> Удерживая <em>Ctrl</em>, нажмите <em>Обновить</em> либо нажмите <em>Ctrl-F5</em>\n* <strong>Opera:</strong> Перейдите в <em>Menu → Настройки</em> (<em>Opera → Настройки</em> на Mac), а затем <em>Безопасность → Очистить историю посещений → Кэшированные изображения и файлы</em>", "usercssyoucanpreview": "'''Подсказка.''' Нажмите кнопку «{{int:showpreview}}», чтобы проверить свой новый CSS-файл перед сохранением.", "userjsyoucanpreview": "'''Подсказка.''' Нажмите кнопку «{{int:showpreview}}», чтобы проверить свой новый JS-файл перед сохранением.", @@ -786,7 +784,7 @@ "editpage-cannot-use-custom-model": "Модель содержимого этой страницы не может быть изменена.", "longpageerror": "'''ОШИБКА: записываемый вами текст имеет размер $1 {{PLURAL:$1|килобайт|килобайта|килобайт}}, что больше, чем установленный предел в $2 {{PLURAL:$2|килобайт|килобайта|килобайт}}. Страница не может быть сохранена.'''", "readonlywarning": "<strong>Предупреждение: База данных заблокирована в связи с процедурами обслуживания, поэтому вы не можете записать ваши изменения прямо сейчас.</strong>\nВозможно, вам следует скопировать этот текст в текстовый файл, чтобы сохранить его на будущее.\n\nСистемный администратор, заблокировавший базу данных, оставил следующее объяснение: $1", - "protectedpagewarning": "'''Предупреждение. Эта страница защищена от изменений, её могут редактировать только участники с полномочиями администраторов.'''\nНиже для справки приведена последняя запись журнала:", + "protectedpagewarning": "'''Предупреждение. Эта страница защищена от изменений, её могут редактировать только участники с полномочиями администратора.'''\nНиже для справки приведена последняя запись журнала:", "semiprotectedpagewarning": "'''Замечание.''' Эта страница была защищена; редактировать её могут только зарегистрированные участники.\nНиже для справки приведена последняя запись журнала:", "cascadeprotectedwarning": "<strong>Предупреждение:</strong> Данную страницу могут редактировать только участники с административными правами, поскольку она включена {{PLURAL:$1|1=в следующую страницу, для которой|в следующие страницы, для которых}} включена каскадная защита:", "titleprotectedwarning": "'''Предупреждение. Это название защищено. Создать эту страницу могут только участники с [[Special:ListGroupRights|соответствующими правами]].'''\nНиже для справки приведена последняя запись журнала:", @@ -861,8 +859,8 @@ "undo-nochange": "Правка, похоже, уже была отменена.", "undo-summary": "Отмена правки $1, сделанной [[Special:Contributions/$2|$2]] ([[User talk:$2|обсуждение]])", "undo-summary-username-hidden": "Отмена правки $1, сделанной участником, чьё имя скрыто", - "cantcreateaccount-text": "Создание учётных записей с этого IP-адреса ('''$1''') было заблокировано {{GENDER:$3|участником|участницей|}} [[User:$3|$3]].\n\n$3 {{GENDER:$3|указал|указала}} следующую причину: ''$2''.", - "cantcreateaccount-range-text": "{{GENDER:$3|Участник|Участница}} [[User:$3|$3]] {{GENDER:$3|установил|установила}} запрет на создание учётных записей из диапазона IP-адресов <strong>$1</strong>, включающего ваш IP-адрес (<strong>$4</strong>). \n\nБыла указана следующая причина: $2.", + "cantcreateaccount-text": "Создание учётных записей с этого IP-адреса (<strong>$1</strong>) было заблокировано {{GENDER:$3|участником|участницей|}} [[User:$3|$3]].\n\n$3 {{GENDER:$3|указал|указала}} следующую причину: <em>$2</em>.", + "cantcreateaccount-range-text": "{{GENDER:$3|Участник|Участница}} [[User:$3|$3]] {{GENDER:$3|установил|установила}} запрет на создание учётных записей для диапазона IP-адресов <strong>$1</strong>, включающего ваш IP-адрес (<strong>$4</strong>). \n\nБыла указана следующая причина: <em>$2</em>.", "viewpagelogs": "Показать журналы для этой страницы", "nohistory": "Для этой страницы история изменений отсутствует.", "currentrev": "Текущая версия", @@ -893,18 +891,18 @@ "rev-deleted-user": "(имя автора стёрто)", "rev-deleted-event": "(детали журнала удалены)", "rev-deleted-user-contribs": "[имя участника или IP-адрес удалены — правка скрыта со страницы вклада]", - "rev-deleted-text-permission": "Эта версия страницы была '''удалена'''.\nВозможно, объяснения даны в [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} журнале удалений].", - "rev-suppressed-text-permission": "Эта версия страницы была <strong>скрыта</strong>.\nОбъяснения удаления приведены в [{{fullurl:{{#Special:Log}}/suppress|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}}}} журнале сокрытий].\nПри желании вы можете [$1 просмотреть данную версию].", - "rev-deleted-text-view": "Эта версия страницы была '''удалена'''.\nВы можете просмотреть её. Объяснения удаления приведены в [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} журнале удалений].", - "rev-suppressed-text-view": "Эта версия страницы была '''скрыта'''.\nВы можете просмотреть её. Объяснения удаления приведены в [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} журнале сокрытий].", - "rev-deleted-no-diff": "Вы не можете просмотреть эту разницу версий, так как одна из версий страницы была '''удалена'''.\nВозможно, подробности можно найти в [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} журнале удалений].", - "rev-suppressed-no-diff": "Вы не можете просмотреть различия между этими версиями страницы, так как одна из них была '''удалена'''.", - "rev-deleted-unhide-diff": "Одна из версий страницы была '''удалена'''.\nПодробности можно найти в [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} журнале удалений].\nПри желании вы можете [$1 просмотреть разницу версий].", - "rev-suppressed-unhide-diff": "Одна из версий этого сравнения версий была '''скрыта'''.\nПодробности можно найти в [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} журнале сокрытий].\nПри желании вы можете [$1 просмотреть эту разницу версий].", - "rev-deleted-diff-view": "Одна из версий этого сравнения версий была '''удалена'''.\nВы можете просмотреть это сравнение. Подробности можно найти в [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} журнале удалений].", - "rev-suppressed-diff-view": "Одна из версий этого сравнения версий была '''скрыта'''.\nВы можете просмотреть это сравнение. Подробности можно найти в [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} журнале сокрытий].", + "rev-deleted-text-permission": "Эта версия страницы была '''удалена'''.\nПодробности приведены в [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} журнале удалений].", + "rev-suppressed-text-permission": "Эта версия страницы была <strong>скрыта</strong>.\nПодробности приведены в [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} журнале сокрытий].", + "rev-deleted-text-unhide": "Эта версия страницы была <strong>удалена</strong>.\nПодробности приведены в [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} журнале удалений].\nПри желании вы можете [$1 просмотреть данную версию].", + "rev-suppressed-text-unhide": "Эта версия страницы была <strong>скрыта</strong>.\nПодробности приведены в [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} журнале сокрытий].\nПри желании вы можете [$1 просмотреть данную версию].", + "rev-deleted-text-view": "Эта версия страницы была <strong>удалена</strong>.\nВы можете просмотреть её. Подробности приведены в [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} журнале удалений].", + "rev-suppressed-text-view": "Эта версия страницы была <strong>скрыта</strong>.\nВы можете просмотреть её. Подробности приведены в [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} журнале сокрытий].", + "rev-deleted-no-diff": "Вы не можете просмотреть эту разницу версий, так как одна из версий страницы была <strong>удалена</strong>.\nПодробности приведены в [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} журнале удалений].", + "rev-suppressed-no-diff": "Вы не можете просмотреть различия между этими версиями страницы, так как одна из них была <strong>удалена</strong>.", + "rev-deleted-unhide-diff": "Одна из версий страницы была <strong>удалена</strong>.\nПодробности приведены в [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} журнале удалений].\nПри желании вы можете [$1 просмотреть разницу версий].", + "rev-suppressed-unhide-diff": "Одна из версий этого сравнения версий была <strong>скрыта</strong>.\nПодробности приведены в [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} журнале сокрытий].\nПри желании вы можете [$1 просмотреть эту разницу версий].", + "rev-deleted-diff-view": "Одна из версий этого сравнения версий была <strong>удалена</strong>.\nВы можете просмотреть это сравнение. Подробности приведены в [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} журнале удалений].", + "rev-suppressed-diff-view": "Одна из версий этого сравнения версий была <strong>скрыта</strong>.\nВы можете просмотреть это сравнение. Подробности приведены в [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} журнале сокрытий].", "rev-delundel": "показать/скрыть", "rev-showdeleted": "показать", "revisiondelete": "Удалить / восстановить версии страницы", @@ -916,12 +914,12 @@ "revdelete-selected-text": "{{PLURAL:$1|Выбранная версия|Выбранные версии}} [[:$2]]:", "revdelete-selected-file": "{{PLURAL:$1|Выбранная версия файла|Выбранные версии файла}} [[:$2]]:", "logdelete-selected": "{{PLURAL:$1|1=Выбранная запись|Выбранные записи}} журнала:", - "revdelete-text-text": "Удалённые версии будут по-прежнему видны в истории страницы, но части их содержимого будут недоступны для участников.", - "revdelete-text-file": "Удалённые версии файла будут по-прежнему видны в истории страницы, но части их содержимого будут недоступны для участников.", - "logdelete-text": "Удалённые события в журнале будут по-прежнему видны в журналах, но части их содержимого будут недоступны для участников.", + "revdelete-text-text": "Удалённые версии будут по-прежнему видны в истории страницы, но определенные части их содержимого будут недоступны для участников.", + "revdelete-text-file": "Удалённые версии файла будут по-прежнему видны в истории страницы, но определенные части их содержимого будут недоступны для участников.", + "logdelete-text": "Удалённые события будут по-прежнему видны в журналах, но определенные части их содержимого будут недоступны для участников.", "revdelete-text-others": "Другие администраторы по-прежнему будут иметь возможность доступа к скрытому содержимому и смогут восстановить его, если не установлены дополнительные ограничения.", "revdelete-confirm": "Пожалуйста, подтвердите, что вы действительно желаете совершить это действие, осознаёте последствия, делаете это в соответствии с [[{{MediaWiki:Policy-url}}|правилами]].", - "revdelete-suppress-text": "Сокрытие может производиться '''только''' в следующих случаях:\n* Потенциально клеветническая информация\n* Неуместная личная информация\n*: ''домашний адрес, номера телефонов, номер паспорта и т. д.''", + "revdelete-suppress-text": "Сокрытие может производиться <strong>только</strong> в следующих случаях:\n* потенциально клеветническая информация\n* неуместная личная информация\n*: <em>домашний адрес, номера телефонов, номер паспорта и т. д.</em>", "revdelete-legend": "Установить ограничения:", "revdelete-hide-text": "Текст правки", "revdelete-hide-image": "Скрыть содержимое файла", @@ -1035,6 +1033,7 @@ "search-interwiki-caption": "Родственные проекты", "search-interwiki-default": "Результаты из $1:", "search-interwiki-more": "(ещё)", + "search-interwiki-more-results": "ещё результаты", "search-relatedarticle": "Связанный", "searchrelated": "связанный", "searchall": "все", @@ -1124,6 +1123,7 @@ "youremail": "Электронная почта:", "username": "{{GENDER:$1|Имя участника|Имя участницы}}:", "prefs-memberingroups": "{{GENDER:$2|Член|Член}} {{PLURAL:$1|1=группы|групп}}:", + "group-membership-link-with-expiry": "$1 (до $2)", "prefs-registration": "Время регистрации:", "yourrealname": "Настоящее имя:", "yourlanguage": "Язык интерфейса:", @@ -1134,7 +1134,7 @@ "badsig": "Неверная подпись. Проверьте корректность HTML-тегов.", "badsiglength": "Слишком длинная подпись.\nПодпись не должна превышать $1 {{PLURAL:$1|символа|символа|символов}}.", "yourgender": "Какое описание вам более подходит?", - "gender-unknown": "При упоминании вас программное обеспечение, когда это возможно, будет использовать гендерно-нейтральные слова", + "gender-unknown": "При упоминании вас, программное обеспечение, когда это возможно, будет использовать гендерно-нейтральные слова", "gender-male": "Он редактирует страницы вики", "gender-female": "Онa редактирует страницы вики", "prefs-help-gender": "Этот параметр задавать необязательно.\nДвижок использует это значение, чтобы обращаться к вам и упоминать вас в правильном грамматическом роде.\nЭта информация будет общедоступной.", @@ -1165,20 +1165,29 @@ "userrights": "Управление правами участника", "userrights-lookup-user": "Выбор участника", "userrights-user-editname": "Введите имя учётной записи:", - "editusergroup": "Загрузка групп участников", + "editusergroup": "Загрузить группы участников", "editinguser": "Изменение прав {{GENDER:$1|участника|участницы}} <strong>[[User:$1|$1]]</strong> $2", "viewinguserrights": "Просмотр прав {{GENDER:$1|участника|участницы}} <strong>[[User:$1|$1]]</strong> $2", - "userrights-editusergroup": "Изменение членства в группах", - "userrights-viewusergroup": "просмотр групп участника", + "userrights-editusergroup": "Изменение групп {{GENDER:$1|участника|участницы}}", + "userrights-viewusergroup": "Просмотр групп {{GENDER:$1|участника|участницы}}", "saveusergroups": "Сохранить группы {{GENDER:$1|участника|участницы}}", "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» задано в прошлом.", + "userrights-cannot-shorten-expiry": "Вы не можете перенести на более ранний срок дату истечения группы «$1». Только участники, имеющие право на добавление и удаление этой группы, могут перенести её на более ранний срок.", "userrights-conflict": "Конфликт изменения прав участника! Пожалуйста, проверьте и примените изменения заново.", "group": "Группа:", "group-user": "Участники", @@ -1205,24 +1214,24 @@ "right-createpage": "создание страниц, не являющихся обсуждениями", "right-createtalk": "создание страниц обсуждений", "right-createaccount": "создание новых учётных записей участников", - "right-autocreateaccount": "Автоматический вход с помощью внешней учётной записи участника", + "right-autocreateaccount": "автоматический вход с помощью внешней учётной записи участника", "right-minoredit": "простановка отметки «малое изменение»", "right-move": "переименование страниц", "right-move-subpages": "переименование страниц с их подстраницами", "right-move-rootuserpages": "переименование корневых страниц участников", "right-move-categorypages": "переименование страниц категорий", "right-movefile": "переименование файлов", - "right-suppressredirect": "переименование страницы без создания перенаправления со старого имени", + "right-suppressredirect": "подавление перенаправлений при переименовании страниц", "right-upload": "загрузка файлов", "right-reupload": "запись файлов поверх существующих", "right-reupload-own": "перезапись файлов тем же участником", "right-reupload-shared": "подмена файлов из общих хранилищ локальными", "right-upload_by_url": "загрузка файлов с адреса URL", - "right-purge": "очистка кэша страниц без страницы подтверждения", - "right-autoconfirmed": "нет ограничений по скорости на IP-адрес", - "right-bot": "считаться автоматическим процессом", + "right-purge": "очистка кэша страниц без подтверждения", + "right-autoconfirmed": "обход ограничений скорости на IP-адрес", + "right-bot": "автоматический процесс", "right-nominornewtalk": "отсутствие малых правок на страницах обсуждений включает режим новых сообщений", - "right-apihighlimits": "меньше ограничений на выполнение API-запросов", + "right-apihighlimits": "уменьшение ограничений на выполнение API-запросов", "right-writeapi": "использование API для записи", "right-delete": "удаление страниц", "right-bigdelete": "удаление страниц с длинными историями изменений", @@ -1251,17 +1260,17 @@ "right-editmyusercss": "редактирование своих пользовательских CSS-файлов", "right-editmyuserjs": "редактирование своих пользовательских JavaScript-файлов", "right-viewmywatchlist": "просмотр своего списка наблюдения", - "right-editmywatchlist": "редактирование своего списка наблюдения; обратите внимание, что некоторые действия будут добавлять страницы даже без такого права", + "right-editmywatchlist": "редактирование своего списка наблюдения", "right-viewmyprivateinfo": "просмотр собственных личных данных (например, адрес электронной почты, настоящее имя)", "right-editmyprivateinfo": "правка собственных личных данных (например, адрес электронной почты, настоящее имя)", "right-editmyoptions": "редактирование собственных предпочтений", - "right-rollback": "быстрый откат правок последнего участника на определенной странице", + "right-rollback": "быстрый откат правок последнего участника", "right-markbotedits": "отметка откатываемых правок как правок бота", - "right-noratelimit": "нет ограничений по скорости", + "right-noratelimit": "обход ограничений скорости", "right-import": "импорт страниц из других вики", "right-importupload": "импорт страниц через загрузку файлов", - "right-patrol": "отметка правок как отпатрулированных", - "right-autopatrol": "правки автоматически отмечаются как патрулированные", + "right-patrol": "патрулирование правок", + "right-autopatrol": "автоматическое патрулирование правок", "right-patrolmarks": "просмотр отметок о патрулировании в свежих правках", "right-unwatchedpages": "просмотр списка ненаблюдаемых страниц", "right-mergehistory": "объединение историй страниц", @@ -1337,19 +1346,19 @@ "action-browsearchive": "поиск удалённых страниц", "action-undelete": "восстановление страниц", "action-suppressrevision": "просмотр и восстановление скрытых версий страниц", - "action-suppressionlog": "просмотр этого частного журнала", - "action-block": "ограничивать возможность редактирования для этого участника", + "action-suppressionlog": "просмотр частного журнала", + "action-block": "блокировку участника", "action-protect": "изменение уровня защиты этой страницы", - "action-rollback": "быстрый откат изменений участника, который последним редактировал страницу", + "action-rollback": "быстрый откат изменений", "action-import": "импорт страниц из другой вики", "action-importupload": "импорт страниц из загруженного файла", "action-patrol": "отметка чужих правок как отпатрулированных", "action-autopatrol": "отметка своих правок как отпатрулированных", "action-unwatchedpages": "просмотр списка страниц, за которыми не следят", "action-mergehistory": "присоединение истории изменений этой страницы", - "action-userrights": "изменение всех прав участника", + "action-userrights": "изменение прав участника", "action-userrights-interwiki": "изменение прав участников в других вики", - "action-siteadmin": "блокировка и разблокировка базы данных", + "action-siteadmin": "блокировку и разблокировку базы данных", "action-sendemail": "отправка электронных писем", "action-editmyoptions": "редактирование своих настроек", "action-editmywatchlist": "редактирование вашего списка наблюдения", @@ -1380,22 +1389,53 @@ "recentchanges-legend-plusminus": "(''±123'')", "recentchanges-submit": "Показать", "rcfilters-activefilters": "Активные фильтры", + "rcfilters-restore-default-filters": "Восстановить фильтры по умолчанию", + "rcfilters-clear-all-filters": "Очистить все фильтры", "rcfilters-search-placeholder": "Последние изменения фильтров (просмотрите или начните вводить)", "rcfilters-invalid-filter": "Недопустимый фильтр", + "rcfilters-empty-filter": "Нет активных фильтров. Показываются все правки.", "rcfilters-filterlist-title": "Фильтры", + "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-userExpLevel-newcomer-label": "Новички", - "rcfilters-filter-userExpLevel-newcomer-description": "Совсем новые редакторы: менее 10 правок и 4 дней работы.", - "rcfilters-filter-userExpLevel-learner-label": "Учащиеся", - "rcfilters-filter-userExpLevel-learner-description": "Больше правок и дней работы, чем у 'новичков', но меньше, чем у 'опытных пользователей'.", - "rcfilters-filter-userExpLevel-experienced-label": "Опытные пользователи", - "rcfilters-filter-userExpLevel-experienced-description": "Более 30 дней активности и 500 правок.", + "rcfilters-filter-editsbyother-description": "Правки, сделанные другими участниками (не вами).", + "rcfilters-filtergroup-userExpLevel": "Уровня опыта (только для зарегистрированных участников)", + "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": "Более 30 дней активности и 500 правок.", + "rcfilters-filtergroup-automated": "Автоматизированные вклады", + "rcfilters-filter-bots-label": "Бот", + "rcfilters-filter-bots-description": "Правки, сделанные с помощью автоматизированных инструментов.", + "rcfilters-filter-humans-label": "Человек (не бот)", + "rcfilters-filter-humans-description": "Правки, внесённые редакторами.", + "rcfilters-filtergroup-significance": "Значение", + "rcfilters-filter-minor-label": "Малые правки", + "rcfilters-filter-minor-description": "Правки, которые автор пометил как малые.", + "rcfilters-filter-major-label": "Обычные правки", + "rcfilters-filter-major-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": "Административные действия, создания учётных записей, удаления страниц, загрузки файлов…", "rcnotefrom": "Ниже {{PLURAL:$5|указано изменение|перечислены изменения}} с <strong>$3, $4</strong> (показано не более <strong>$1</strong>).", "rclistfrom": "Показать изменения с $3 $2.", "rcshowhideminor": "$1 малые правки", @@ -1457,8 +1497,8 @@ "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* '''<code><nowiki>[[</nowiki>{{ns:file}}<nowiki>:File.jpg]]</nowiki></code>''' для вставки полной версии файла;\n* '''<code><nowiki>[[</nowiki>{{ns:file}}<nowiki>:File.png|200px|thumb|left|описание]]</nowiki></code>''' для вставки слева от текста уменьшенной до 200 пикселей по ширине версии файла с выводом под ним указанного описания;\n* '''<code><nowiki>[[</nowiki>{{ns:media}}<nowiki>:File.ogg]]</nowiki></code>''' для вставки ссылки на файл, без отображения его содержимого на странице.", + "upload-recreate-warning": "<strong>Внимание: файл с таким именем был удален или переименован.</strong>\n\nНиже представлены журналы удалений и переименований этой страницы:", + "uploadtext": "Воспользуйтесь этой формой для загрузки файлов на сервер.\nЧтобы просмотреть ранее загруженные файлы, обратитесь к [[Special:FileList|списку загруженных файлов]]. Загрузка файлов также записывается в [[Special:Log/upload|журнал загрузок]]; данные об удалённых файлах можно найти в [[Special:Log/delete|журнале удалений]].\n\nДля включения файла в статью вы можете использовать строки вида:\n* <strong><code><nowiki>[[</nowiki>{{ns:file}}<nowiki>:File.jpg]]</nowiki></code></strong> для вставки полной версии файла;\n* <strong><code><nowiki>[[</nowiki>{{ns:file}}<nowiki>:File.png|200px|thumb|left|описание]]</nowiki></code></strong> для вставки слева от текста уменьшенной до 200 пикселей по ширине версии файла с выводом под ним указанного описания;\n* <strong><code><nowiki>[[</nowiki>{{ns:media}}<nowiki>:File.ogg]]</nowiki></code></strong> для вставки ссылки на файл, без отображения его содержимого на странице.", "upload-permitted": "{{PLURAL:$2|Разрешённый тип|Разрешённые типы}} файлов: $1.", "upload-preferred": "{{PLURAL:$2|Предпочтительный тип|Предпочтительные типы}} файлов: $1.", "upload-prohibited": "{{PLURAL:$2|Запрещённый тип|Запрещённые типы}} файлов: $1.", @@ -1530,7 +1570,7 @@ "uploaded-setting-handler-svg": "SVG, который задаёт атрибут «handler» с помощью удалённого адреса/данных/скрипта, блокируется. Найдена конструкция <code>$1=\"$2\"</code> в загруженном SVG-файле.", "uploaded-remote-url-svg": "SVG, который задаёт любой атрибут стиля с помощью удалённого URL-адреса, блокируется. Найдена конструкция <code>$1=\"$2\"</code> в загруженном SVG-файле.", "uploaded-image-filter-svg": "В загруженном SVG-файле найден фильтр изображений с URL-адресом <code><$1 $2=\"$3\"></code>.", - "uploadscriptednamespace": "Этот SVG-файл содержит некорректное пространство имён '$1'", + "uploadscriptednamespace": "Этот SVG-файл содержит некорректное пространство имён '<nowiki>$1</nowiki>'", "uploadinvalidxml": "XML в загруженном файле не может быть проанализирован.", "uploadvirus": "Файл содержит вирус! См. $1", "uploadjava": "Файл представляет собой ZIP-архив, содержащий .class файл Java.\nЗагрузка Java-файлов не допускается из-за соображений безопасности.", @@ -1607,12 +1647,12 @@ "backend-fail-usable": "Не удалось прочитать или записать файл «$1» из-за нехватки прав или отсутствия нужных папок.", "filejournal-fail-dbconnect": "Не удалось подключиться к базе данных журнала для хранилища «$1».", "filejournal-fail-dbquery": "Не удалось обновить базу данных журнала для хранилища «$1».", - "lockmanager-notlocked": "Не удалось разблокировать \"$1\"; он не заблокирован.", + "lockmanager-notlocked": "Не удалось разблокировать «$1»; он не заблокирован.", "lockmanager-fail-closelock": "Не удалось закрыть файл блокировки для «$1».", "lockmanager-fail-deletelock": "Не удалось удалить файл блокировки для «$1».", "lockmanager-fail-acquirelock": "Не удалось добиться блокировки «$1».", "lockmanager-fail-openlock": "Не удалось открыть файл блокировки для «$1».", - "lockmanager-fail-releaselock": "Не удалось разблокировать \"$1\".", + "lockmanager-fail-releaselock": "Не удалось разблокировать «$1».", "lockmanager-fail-db-bucket": "Не удалось связаться с достаточным количеством баз блокировок в сегменте $1.", "lockmanager-fail-db-release": "Не удалось снять блокировку базы данных $1 .", "lockmanager-fail-svr-acquire": "Не удалось получить блокировку на сервере $1.", @@ -1651,7 +1691,7 @@ "upload-curl-error6": "Невозможно обратить по указанному адресу.", "upload-curl-error6-text": "Невозможно обратить по указанному адресу. Пожалуйста, проверьте, что адрес верен, а сайт доступен.", "upload-curl-error28": "Время, отведённое на загрузку, истекло", - "upload-curl-error28-text": "Сайт слишком долго не отвечает. Пожалуйста, проверьте что сайт работоспособен и после небольшого перерыва попробуйте ещё раз. Возможно, операцию следует провести в другое время, когда сайт менее нагружен.", + "upload-curl-error28-text": "Сайт слишком долго не отвечает. \nПожалуйста, проверьте что сайт работоспособен и после небольшого перерыва попробуйте ещё раз. Возможно, операцию следует провести в другое время, когда сайт менее нагружен.", "license": "Лицензирование:", "license-header": "Лицензирование", "nolicense": "Ничего не выбрано", @@ -1908,8 +1948,10 @@ "apisandbox-sending-request": "Отправка API-запроса…", "apisandbox-loading-results": "Получение API-результатов…", "apisandbox-results-error": "Произошла ошибка при загрузке API-ответа на запрос: $1.", - "apisandbox-request-params-json": "JSON-параметры:", + "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».", @@ -1982,7 +2024,7 @@ "listusers-blocked": "(заблокирован{{GENDER:$1||а}})", "activeusers": "Список активных участников", "activeusers-intro": "Это список участников, совершавших какие-либо действия за {{PLURAL:$1|последний $1 день|последние $1 дня|последние $1 дней|1=последний день}}.", - "activeusers-count": "$1 {{PLURAL:$1|правка|правки|правок}} за {{PLURAL:$3|$3 последний день|последние $3 дня|последние $3 дней|1=последний день}}", + "activeusers-count": "$1 {{PLURAL:$1|действие|действия|действий}} за {{PLURAL:$3|$3 последний день|последние $3 дня|последние $3 дней|1=последний день}}", "activeusers-from": "Показать участников, начиная с:", "activeusers-groups": "Отображать участников, принадлежащих к группам:", "activeusers-excludegroups": "Исключать участников, принадлежащих к группам:", @@ -2054,7 +2096,7 @@ "emailccsubject": "Копия вашего сообщения для $1: $2", "emailsent": "Письмо отправлено", "emailsenttext": "Ваше электронное сообщение отправлено.", - "emailuserfooter": "Это письмо было отправлено {{GENDER:$2|участнику|участнице}} $2 от {{GENDER:$1|участника|участницы}} $1 с помощью функции «{{int:emailuser}}» проекта {{SITENAME}}.\n{{GENDER:$2|Письмо}} будет отослано напрямую {{GENDER:$1|отправителю}}, так что {{GENDER:$2|ваш}} адрес электронной почты станет известен {{GENDER:$1|ему|ей}}.", + "emailuserfooter": "Это письмо было отправлено {{GENDER:$2|участнику|участнице}} $2 от {{GENDER:$1|участника|участницы}} $1 с помощью функции «{{int:emailuser}}» проекта {{SITENAME}}. Если {{GENDER:$2|вы}} ответите на это письмо, оно будет отослано напрямую {{GENDER:$1|отправителю}}, так что {{GENDER:$2|ваш}} адрес электронной почты станет известен {{GENDER:$1|ему|ей}}.", "usermessage-summary": "Оставить системное сообщение.", "usermessage-editor": "Системная доставка", "watchlist": "Список наблюдения", @@ -2134,7 +2176,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действуйте с осторожностью.", @@ -2152,7 +2194,7 @@ "editcomment": "Было дано описание изменения: <em>$1</em>.", "revertpage": "Откат правок [[Special:Contributions/$2|$2]] ([[User talk:$2|обсуждение]]) к версии [[User:$1|$1]]", "revertpage-nouser": "Откат правок (имя участника скрыто) к версии {{GENDER:$1|[[User:$1|$1]]}}", - "rollback-success": "Откачены правки $1; возврат к версии $2.", + "rollback-success": "Откачены правки {{GENDER:$3|$1}}; возврат к версии {{GENDER:$4|$2}}.", "rollback-success-notify": "Откачены правки $1; возврат к последней версии $2. [$3 Показать изменения]", "sessionfailure-title": "Ошибка сеанса", "sessionfailure": "Похоже, возникли проблемы с текущим сеансом работы;\nэто действие было отменено в целях предотвращения «захвата сеанса».\nПожалуйста, нажмите кнопку «Назад» и перезагрузите страницу, с которой вы пришли.", @@ -2300,7 +2342,7 @@ "sp-contributions-talk": "обсуждение", "sp-contributions-userrights": "управление правами участника", "sp-contributions-blocked-notice": "Этот участник в данный момент заблокирован. Ниже приведена последняя запись из журнала блокировок:", - "sp-contributions-blocked-notice-anon": "Этот IP-адрес в данный момент заблокирован.\nНиже приведена последняя запись из журнала блокировок:", + "sp-contributions-blocked-notice-anon": "Этот IP-адрес в данный момент заблокирован. Ниже приведена последняя запись из журнала блокировок:", "sp-contributions-search": "Поиск вклада", "sp-contributions-username": "IP-адрес или имя участника:", "sp-contributions-toponly": "Показывать только правки, являющиеся последними версиями", @@ -2322,7 +2364,7 @@ "whatlinkshere-hideredirs": "$1 перенаправления", "whatlinkshere-hidetrans": "$1 включения", "whatlinkshere-hidelinks": "$1 ссылки", - "whatlinkshere-hideimages": "$1 файловые ссылки", + "whatlinkshere-hideimages": "$1 файл{{PLURAL:$1|овая ссылка|овых ссылки|овых ссылок}}", "whatlinkshere-filters": "Фильтры", "whatlinkshere-submit": "Выполнить", "autoblockid": "Автоблокировка #$1", @@ -2430,7 +2472,7 @@ "sorbs_create_account_reason": "Ваш IP-адрес числится как открытый прокси в DNSBL. Вы не можете создать учётную запись.", "softblockrangesreason": "Анонимные правки не разрешены с вашего IP-адреса ($1). Пожалуйста, войдите в систему.", "xffblockreason": "Был заблокирован IP-адрес, присутствующий в заголовке X-Forwarded-For и принадлежащий либо вам, либо используемому вами прокси-серверу. Первоначальная причина блокировки была следующей: $1", - "cant-see-hidden-user": "Участник, которого вы пытаетесь заблокировать, уже заблокирован и скрыт. Поскольку у вас нет разрешения на работу по сокрытию участников, вы не можете просмотреть или изменить данную блокировку.", + "cant-see-hidden-user": "Участник, которого вы пытаетесь заблокировать, уже заблокирован и скрыт. Поскольку у вас недостаточно прав, вы не можете просмотреть детали.", "ipbblocked": "Вы не можете блокировать или разблокировать других участников, так как вы сами заблокированы", "ipbnounblockself": "Вы не можете разблокировать самого себя", "lockdb": "Сделать базу данных доступной только для чтения", @@ -2455,7 +2497,7 @@ "movepagetext": "Воспользовавшись нижеприведённой формой, вы переименуете страницу, одновременно переместив на новое место её журнал изменений.\nСтарое название станет перенаправлением на новое.\nВы можете автоматически обновить перенаправления, которые вели на старое название.\nЕсли вы этого не сделаете, пожалуйста, проверьте наличие [[Special:DoubleRedirects|двойных]] и [[Special:BrokenRedirects|разорванных перенаправлений]].\nВы отвечаете за то, чтобы ссылки продолжали и далее указывать туда, куда предполагалось.\n\nОбратите внимание, что страница <strong>не будет</strong> переименована, если уже существует страница с названием, идентичным выбранному, кроме случаев, когда такая страница пуста или представляет собой перенаправление, и при этом не имеет истории правок.\nЭто означает, что сделав ошибочное переименование, вы можете переименовать страницу обратно в то название, которое у неё только что было, но не можете случайно затереть существующую страницу.\n\n<strong>Примечание:</strong>\nПереименование популярных страниц может привести к масштабным и неожиданным изменениям.\nПожалуйста, прежде чем продолжать, убедитесь, что понимаете все возможные последствия.", "movepagetext-noredirectfixer": "Воспользовавшись формой ниже, вы переименуете страницу, одновременно переместив на новое место её журнал изменений.\nСтарое название станет перенаправлением на новое название.\nПожалуйста, проверьте наличие [[Special:DoubleRedirects|двойных]] и [[Special:BrokenRedirects|разорванных перенаправлений]].\nВы отвечаете за то, чтобы ссылки продолжали и далее указывать туда, куда предполагалось.\n\nОбратите внимание, что страница <strong>не будет</strong> переименована, если страница с новым названием уже существует, кроме случаев, если она пуста или представляет собой перенаправление, и при этом не имеет истории правок.\nЭто означает, что сделав ошибочное переименование, вы сможете переименовать страницу обратно в то название, которое у неё только что было, но не сможете случайно затереть существующую страницу.\n\n<strong>Примечание:</strong>\nПереименование может привести к масштабным и неожиданным изменениям для популярных страниц.\nПожалуйста, прежде чем продолжить, убедитесь, что понимаете все возможные последствия.", "movepagetalktext": "Если вы отметите этот пункт, связанная с ней страница обсуждения будет также автоматически переименована, если только уже не существует непустая страница обсуждения с таким же названием.\n\nВ этом случае вам нужно будет переименовать или объединить страницы вручную, если это необходимо.", - "moveuserpage-warning": "'''Внимание.''' Вы собираетесь переименовать страницу участника. Пожалуйста, обратите внимание, что переименована будет только страница, участник '''не''' будет переименован.", + "moveuserpage-warning": "<strong>Внимание:</strong> вы собираетесь переименовать страницу участника. Пожалуйста, обратите внимание, что переименована будет только страница, участник <strong>не</strong> будет переименован.", "movecategorypage-warning": "<strong>Предупреждение:</strong> Вы собираетесь переименовать страницу категории. Пожалуйста, обратите внимание, что будет переименована только эта страница, а все страницы старой категории <em>не</em> будут перекатегоризованы в новую.", "movenologintext": "Вы должны [[Special:UserLogin|представиться системе]],\nчтобы иметь возможность переименовать страницы.", "movenotallowed": "У вас нет разрешения переименовывать страницы.", @@ -2506,7 +2548,7 @@ "imageinvalidfilename": "Целевое имя файла ошибочно", "fix-double-redirects": "Исправить перенаправления, указывающие на прежнее название", "move-leave-redirect": "Оставить перенаправление", - "protectedpagemovewarning": "'''Предупреждение. Эта страница была защищена; переименовать её могут только участники с полномочиями администраторов.'''\nНиже для справки приведена последняя запись журнала:", + "protectedpagemovewarning": "'''Предупреждение. Эта страница была защищена; переименовать её могут только участники с полномочиями администратора.'''\nНиже для справки приведена последняя запись журнала:", "semiprotectedpagemovewarning": "'''Замечание.''' Эта страница была защищена; переименовать её могут только зарегистрированные участники.\nНиже для справки приведена последняя запись журнала:", "move-over-sharedrepo": "В общем хранилище существует [[:$1]]. Переименование файла в это название вызовет перекрытие файла из общего хранилища.", "file-exists-sharedrepo": "Выбранное имя файла уже используется в общем хранилище.\nПожалуйста, выберите другое имя.", @@ -2710,7 +2752,7 @@ "spam_blanking": "Все версии содержат ссылки на $1, очистка", "spam_deleting": "Все версии содержали ссылки на $1, производится удаление", "simpleantispam-label": "Анти-спам проверка.\n<strong>Не</strong> заполняйте это!", - "pageinfo-title": "Сведения по «$1»", + "pageinfo-title": "Сведения о странице «$1»", "pageinfo-not-current": "К сожалению, невозможно предоставить эту информацию для старых версий.", "pageinfo-header-basic": "Основные сведения", "pageinfo-header-edits": "История изменений", @@ -2810,8 +2852,8 @@ "file-info-png-looped": "закольцованный", "file-info-png-repeat": "проигрывается $1 {{PLURAL:$1|раз|раза|раз}}", "file-info-png-frames": "$1 {{PLURAL:$1|кадр|кадра|кадров}}", - "file-no-thumb-animation": "'''Примечание. По техническим причинам миниатюры этого файла не будет анимироваться.'''", - "file-no-thumb-animation-gif": "'''Примечание. По техническим причинам миниатюры подобных GIF-изображений высокого разрешения не анимируются.'''", + "file-no-thumb-animation": "<strong>Примечание: по техническим причинам миниатюры этого файла не будет анимироваться.</strong>", + "file-no-thumb-animation-gif": "<strong>Примечание: По техническим причинам миниатюры подобных GIF-изображений высокого разрешения не анимируются.</strong>", "newimages": "Галерея новых файлов", "imagelisttext": "Ниже представлен список из '''$1''' {{PLURAL:$1|файла|файлов}}, отсортированных $2.", "newimages-summary": "На этой служебной странице показаны недавно загруженные файлы.", @@ -3279,7 +3321,7 @@ "bitrate-gigabits": "$1 Гб/с", "bitrate-terabits": "$1 Тб/с", "lag-warn-normal": "Изменения, сделанные менее {{PLURAL:$1|$1 секунды|$1 секунд|1=секунды}} назад, могут не отображаться в этом списке.", - "lag-warn-high": "Из-за большого отставания в синхронизации серверов баз данных изменения, сделанные менее {{PLURAL:$1|$1 секунды|$1 секунд|1=секунды}} назад, могут не отображаться в этом списке.", + "lag-warn-high": "Из-за большого отставания в синхронизации серверов, в этом списке могут не отображаться изменения, сделанные менее {{PLURAL:$1|$1 секунды|$1 секунд|1=секунды}} назад.", "watchlistedit-normal-title": "Изменение списка наблюдения", "watchlistedit-normal-legend": "Удаление записей из списка наблюдения", "watchlistedit-normal-explain": "Ниже перечислены страницы, находящиеся в вашем списке наблюдения.\nДля удаления записей отметьте соответствующие позиции и нажмите кнопку «{{int:Watchlistedit-normal-submit}}».\nВы также можете [[Special:EditWatchlist/raw|править список как текст]].", @@ -3658,7 +3700,7 @@ "logentry-tag-update-revision": "$1 обновил{{GENDER:$2||а}} метки у версии $4 страницы $3 (добавлен{{PLURAL:$7|а|ы}} $6; удален{{PLURAL:$9|а|ы}} $8)", "logentry-tag-update-logentry": "$1 обновил{{GENDER:$2||а}} метки у записи журнала $5 страницы $3 (добавлен{{PLURAL:$7|а|ы}} $6; удален{{PLURAL:$9|а|ы}} $8)", "rightsnone": "(нет)", - "revdelete-summary": "описание изменений", + "rightslogentry-temporary-group": "$1 (временно, до $2)", "feedback-adding": "Добавление отзыва на страницу…", "feedback-back": "Назад", "feedback-bugcheck": "Прекрасно! Только проверьте, что в списке [$1 известных ошибок] нет подобной записи.", @@ -3683,56 +3725,12 @@ "feedback-useragent": "Браузер:", "searchsuggest-search": "Искать в {{grammar:prepositional|{{SITENAME}}}}", "searchsuggest-containing": "содержащие…", - "api-error-autoblocked": "Ваш IP-адрес был автоматически заблокирован, потому что он был использован заблокированным участником.", - "api-error-badaccess-groups": "Вам не разрешено загружать файлы в эту вики.", "api-error-badtoken": "Внутренняя ошибка: некорректный токен.", - "api-error-blocked": "Редактирование было для вас заблокировано.", - "api-error-copyuploaddisabled": "Загрузка по URL-адресу отключена на этом сервере.", - "api-error-duplicate": "Уже {{PLURAL:$1|существует другой файл|существуют другие файлы}} с таким же содержимым.", - "api-error-duplicate-archive": "Ранее на сайте {{PLURAL:$1|1уже существовал файл|существовали файлы}} с точно таким же содержанием, но {{PLURAL:$1|он был удалён|они были удалены}}.", - "api-error-empty-file": "Отправленный вами файл пуст.", "api-error-emptypage": "Не допускается создание новых пустых страниц.", - "api-error-fetchfileerror": "Внутренняя ошибка: что-то пошло не так при получении файла.", - "api-error-fileexists-forbidden": "Файл с именем «$1» уже существует и не может быть перезаписан.", - "api-error-fileexists-shared-forbidden": "Файл с именем «$1» уже существует в хранилище общих файлов и не может быть перезаписан.", - "api-error-file-too-large": "Отправленный вами файл слишком велик.", - "api-error-filename-tooshort": "Слишком короткое имя файла.", - "api-error-filetype-banned": "Этот тип файлов запрещён.", - "api-error-filetype-banned-type": "$1 — {{PLURAL:$4|1=запрещённый тип файла|запрещённые типы файлов}}. {{PLURAL:$3|1=Разрешённый тип файлов —|Разрешённые типы файлов:}} $2.", - "api-error-filetype-missing": "У этого файла отсутствует расширение.", - "api-error-hookaborted": "Изменение, которые вы пытались сделать, прервано обработчиком расширения.", - "api-error-http": "Внутренняя ошибка: не удаётся подключиться к серверу.", - "api-error-illegal-filename": "Недопустимое имя файла.", - "api-error-internal-error": "Внутренняя ошибка: что-то пошло не так при обработке вашей загрузки в вики.", - "api-error-invalid-file-key": "Внутренняя ошибка: файл во временном хранилище не найден.", - "api-error-missingparam": "Внутренняя ошибка: отсутствуют параметры по запросу.", - "api-error-missingresult": "Внутренняя ошибка: не удалось определить, успешно ли завершилось копирование.", - "api-error-mustbeloggedin": "Вы должны представиться системе для загрузки файлов.", - "api-error-mustbeposted": "Внутренняя ошибка: запрос требует инструкцию HTTP POST.", - "api-error-noimageinfo": "Загрузка завершилась успешно, но сервер не вернул никакой информации о файле.", - "api-error-nomodule": "Внутренняя ошибка: не настроен модуль загрузки.", - "api-error-ok-but-empty": "Внутренняя ошибка: нет ответа от сервера.", - "api-error-overwrite": "Не допускается замена существующего файла.", - "api-error-ratelimited": "Вы пытаетесь загрузить несколько файлов за более короткий промежуток времени, чем это позволено.\nПожалуйста, попробуйте ещё раз через несколько минут.", - "api-error-stashfailed": "Внутренняя ошибка: сервер не смог сохранить временный файл.", "api-error-publishfailed": "Внутренняя ошибка: сервер не смог сохранить временный файл.", - "api-error-stasherror": "При загрузке файла во временное хранилище произошла ошибка.", - "api-error-stashedfilenotfound": "При попытке загрузить файл из временного хранилища исходный файл не найден.", - "api-error-stashpathinvalid": "Путь, по которому должен располагаться файл, загруженный во временное хранилище, некорректен.", - "api-error-stashfilestorage": "При загрузке файла во временное хранилище произошла ошибка.", - "api-error-stashzerolength": "Сервер не может сохранить файл во временное хранилище, поскольку тот имеет нулевую длину.", - "api-error-stashnotloggedin": "Вы должны войти в систему, чтобы иметь возможность сохранить файл во временное хранилище.", - "api-error-stashwrongowner": "Файл, который вы пытались открыть во временном хранилище, принадлежит не вам.", - "api-error-stashnosuchfilekey": "Ключ файла, к которому вы пытались получить доступ во временном хранилище, не существует.", - "api-error-timeout": "Сервер не ответил за ожидаемое время.", - "api-error-unclassified": "Произошла неизвестная ошибка", - "api-error-unknown-code": "Неизвестная ошибка: «$1»", - "api-error-unknown-error": "Внутренняя ошибка: что-то пошло не так при попытке загрузить файл.", + "api-error-stashfailed": "Внутренняя ошибка: сервер не смог сохранить временный файл.", "api-error-unknown-warning": "Неизвестное предупреждение: «$1».", "api-error-unknownerror": "Неизвестная ошибка: «$1».", - "api-error-uploaddisabled": "В этой вики отключена возможность загрузки файлов.", - "api-error-verification-error": "Возможно, этот файл повреждён или имеет неправильное расширение.", - "api-error-was-deleted": "Файл с таким именем был уже ранее загружен и впоследствии удалён.", "duration-seconds": "$1 {{PLURAL:$1|секунда|секунды|секунд}}", "duration-minutes": "$1 {{PLURAL:$1|минута|минуты|минут}}", "duration-hours": "$1 {{PLURAL:$1|час|часа|часов}}", @@ -3854,6 +3852,7 @@ "mw-widgets-titleinput-description-new-page": "страница ещё не существует", "mw-widgets-titleinput-description-redirect": "перенаправление на $1", "mw-widgets-categoryselector-add-category-placeholder": "Добавить категорию…", + "mw-widgets-usersmultiselect-placeholder": "Добавить ещё…", "sessionmanager-tie": "Невозможно использовать одновременно несколько типов проверки подлинности запроса: $1.", "sessionprovider-generic": "$1 сессий", "sessionprovider-mediawiki-session-cookiesessionprovider": "сессий на основе куки", @@ -3987,7 +3986,7 @@ "usercssispublic": "Обратите внимание: подстраницы CSS не должны содержать конфиденциальные сведения, поскольку они доступны для просмотра другим участникам.", "restrictionsfield-badip": "Недопустимый IP-адрес или диапазон адресов: $1", "restrictionsfield-label": "Разрешённые диапазоны IP-адресов:", - "restrictionsfield-help": "По одному IP-адресу или CIDR-диапазону в строке. Чтобы разрешить всё, используйте <br /><code>0.0.0.0/0</code><br /><code>::/0</code>", + "restrictionsfield-help": "По одному IP-адресу или CIDR-диапазону в строке. Чтобы разрешить всё, используйте:<pre>0.0.0.0/0\n::/0</pre>", "revid": "версия $1", "pageid": "ID страницы $1" } diff --git a/languages/i18n/rue.json b/languages/i18n/rue.json index dbc7b57531..382019d1c7 100644 --- a/languages/i18n/rue.json +++ b/languages/i18n/rue.json @@ -11,7 +11,8 @@ "아라", "Dicto23456", "Macofe", - "Matma Rex" + "Matma Rex", + "KHMELNYTSKYIA" ] }, "tog-underline": "Підкреслёвати одказы:", @@ -228,7 +229,7 @@ "currentevents": "Актуалны подїї", "currentevents-url": "Project:Актуалны подїї", "disclaimers": "Вылучіня одповідности", - "disclaimerpage": "Project:Вылучіня одповідности", + "disclaimerpage": "Project:Відмова від відповідальності", "edithelp": "Поміч едітованя", "mainpage": "Головна сторінка", "mainpage-description": "Головна сторінка", @@ -371,19 +372,12 @@ "externaldberror": "Або ся стала хыба екстерной автентіфікачной датабазы, або не маєте дозволено мінити своє екстерне конто.", "login": "Приголошіня", "nav-login-createaccount": "Приголошіня / створїня конта", - "userlogin": "Приголошіня / створїня конта", - "userloginnocreate": "Приголошіня", "logout": "Одголосити", "userlogout": "Одголошіня", "notloggedin": "Не сьте приголошеный(а)", "userlogin-noaccount": "Не мате конто?", "userlogin-joinproject": "Придайте ся {{grammar:3sg|{{SITENAME}}}}", - "nologin": "До теперь не маєте конто? '''$1'''.", - "nologinlink": "Створити конто", "createaccount": "Вытворити конто", - "gotaccount": "Уж сьте реґістрованы? '''$1'''.", - "gotaccountlink": "Приголошіня", - "userlogin-resetlink": "Забыли сьте вашы даны на приголошіня?", "userlogin-resetpassword-link": "Забыли сьте гесло?", "userlogin-loggedin": "Уж сьте {{GENDER:$1|приголошеный|приголошена}} як $1.\nХоснуйте формулар долов жебы сьте ся приголосили як другый хоснователь.", "userlogin-createanother": "Створити інше конто", @@ -393,7 +387,6 @@ "createacct-another-email-ph": "Уведьте адресу електронічной пошты", "createaccountmail": "Схосновати дочасне гесло та загнати го на вказану адресу електронічной пошты", "createacct-realname": "Правдиве імя (не обовязково)", - "createaccountreason": "Причіна:", "createacct-reason": "Прічіна", "createacct-reason-ph": "Чом собі робите друге конто", "createacct-submit": "Створити конто", @@ -481,8 +474,6 @@ "passwordreset-emaildisabled": "Функції електронічной пошты были выпнуы на тій вікі.", "passwordreset-username": "Мено хоснователя:", "passwordreset-domain": "Домена:", - "passwordreset-capture": "Посмотрити выслїдный імейл?", - "passwordreset-capture-help": "Кідь означіте тото поличко, буде імейл (з дочасным геслом) оркем посланя хоснователёви указаный і вам.", "passwordreset-email": "Адреса електронічной пошты:", "passwordreset-emailtitle": "Детайлы конта на {{SITENAME}}", "passwordreset-emailtext-ip": "Дахто (може Вы, з IP адресы $1) попросив о наставлїня нового гесла до вашого конта на {{grammar:6sg|{{SITENAME}}}} ($4). З тов адресов {{PLURAL:$3|є повязане слїдуюче конто|суть повязаны слїдуючі конта}}:\n\n$2\n\n{{PLURAL:$3|Тото дочасне гесло стане неплатным|Тоты дочасны гесла стануть неплатныма}} {{PLURAL:$5|за день|за $5 днї|за $5 днїв}}.\nТеперь бы сьте ся мали приголосити і зволити собі нове гесло. Кідь тоту просьбу послав хтось другый або сьте собі на своє старе гесло спомянули і не хочете го змінити, можете тото повідомлїня іґноровати і дале хосновати старе гесло.", @@ -837,8 +828,6 @@ "saveprefs": "Уложыти", "restoreprefs": "Обновити вшыткы штандартны наставлїня (у вшыткых секціях)", "prefs-editing": "Едітованя", - "rows": "Рядкы:", - "columns": "Колонкы:", "searchresultshead": "Гляданя", "stub-threshold": "Поріг про форматованя одказу як <a href=\"#\" class=\"stub\">одказів на \"stub\"</a> (v bajtech):", "stub-threshold-disabled": "Выпнуте", @@ -926,12 +915,9 @@ "userrights-reason": "Причіна:", "userrights-no-interwiki": "Не маєте поволїня мінити права хоснователїв на іншых вікі.", "userrights-nodatabase": "Датабаза $1 не екзістує або не є місцёва.", - "userrights-nologin": "Мусите ся [[Special:UserLogin|приголосити]] на конто адміністратора, жебы сьте могли мінити права хоснователїв.", - "userrights-notallowed": "Вы не мате права придати або одстранити хосновательскы права.", "userrights-changeable-col": "Ґрупы, котры можете змінити", "userrights-unchangeable-col": "Ґрупы, котры не можете змінити", "userrights-conflict": "Конфлікт змін прав хоснователїв! Просиме, перевірьте зміны і потвердьте їх.", - "userrights-removed-self": "Вы успішно позбавили ся властных прав. Зато уж веце не мате приступ до той сторінкы.", "group": "Ґрупа:", "group-user": "Хоснователї", "group-autoconfirmed": "Автопотверджены хоснователї", @@ -1018,7 +1004,6 @@ "right-siteadmin": "Замыкана і одомыканя датабазы", "right-override-export-depth": "Експорт сторінок включаючі звязаны сторінкы з глубков до 5", "right-sendemail": "Посыланя пошты іншым хоснователям", - "right-passwordreset": "Перезераня імейлів про зміну гесла", "newuserlogpage": "Лоґ вытварянь хоснователїв", "newuserlogpagetext": "Тото є список ново реґістрованых хоснователїв.", "rightslog": "Лоґ хосновательскых прав", @@ -1852,7 +1837,7 @@ "blocklink": "заблоковати", "unblocklink": "одблоковати", "change-blocklink": "змінити блок", - "contribslink": "приспівкы", + "contribslink": "внесок", "emaillink": "послати імейл", "autoblocker": "Сьте были автоматічно блокованы, протоже здїляте IP-адресу з хоснователём „[[User:$1|$1]]“. Причіна блокованя того хоснователя: „$2“", "blocklogpage": "Запис блоковань", @@ -2682,7 +2667,7 @@ "version-license": "Ліценція", "version-ext-license": "Ліценція", "version-ext-colheader-name": "Росшырїня", - "version-ext-colheader-version": "Верзія", + "version-ext-colheader-version": "Версія", "version-ext-colheader-license": "Ліценція", "version-ext-colheader-description": "Попис", "version-ext-colheader-credits": "Авторы", @@ -2812,7 +2797,6 @@ "logentry-rights-rights-legacy": "$1 {{GENDER:$1|змінив|змінила}} членство в ґрупах про $3", "logentry-rights-autopromote": "$1 {{GENDER:$2|быв автоматічно переведеный|была автоматічно переведана}} з $4 на $5", "rightsnone": "(жадне)", - "revdelete-summary": "коментарь едітованя", "feedback-adding": "Коментарь ся придавать на сторінку…", "feedback-bugcheck": "Герешнї! Лем перевірьте, ці то не єдна з [$1 уж знамых хыб].", "feedback-bugnew": "Перевірив(а) єм то. Хочу повідомити нову хыбу.", @@ -2826,46 +2810,14 @@ "feedback-subject": "Предмет:", "feedback-submit": "Одослати", "feedback-thanks": "Дякуєме! Ваш коментарь быв приданый на сторінку „[$2 $1]“.", - "searchsuggest-search": "Глядати", + "searchsuggest-search": "Глядати {{SITENAME}}", "searchsuggest-containing": "обсягуючій...", - "api-error-badaccess-groups": "Не мате дозволено наладововати файлы на тоту вікі.", "api-error-badtoken": "Внутрїшня хыба: планый знак.", - "api-error-copyuploaddisabled": "Наладовованя з URL є на тім сервері заказане.", - "api-error-duplicate": "На тій вікі уж {{PLURAL:$1|екзістує другый файл|екзістують іншы файлы}} з такым самым обсягом.", - "api-error-duplicate-archive": "{{PLURAL:$1|быв другый файл|были даякы другы файлы}} з такым самым обсягом уж гев оперед {{PLURAL:$1|быв|были}}, але {{PLURAL:$1|быв змазаный|были змазаны}}.", - "api-error-empty-file": "Наладованый файл є порожнїй.", "api-error-emptypage": "Створїня новых, порожнїх сторінк неслободно.", - "api-error-fetchfileerror": "Внутрїшня хыба: трафила ся хыба під час обтриманя файлу.", - "api-error-fileexists-forbidden": "Файл з назвов „$1“ уж екзістує тай не годен го переписати.", - "api-error-fileexists-shared-forbidden": "файл з назвов „$1“ уж екзістує в сполочнім усховищу тай не годен го переписати.", - "api-error-file-too-large": "Наладованый файл є барз великый.", - "api-error-filename-tooshort": "Назва файлу є барз курта.", - "api-error-filetype-banned": "Тот тіп файлу є заказаный.", - "api-error-filetype-banned-type": "$1 {{PLURAL:$4|є недозволеный формат файлів|суть недозволены форматы файлів}}. {{PLURAL:$3|Дозволеный формат фалів є|Дозволены форматы файлів суть}} $2.", - "api-error-filetype-missing": "Тот файл не мать росшырїня.", - "api-error-hookaborted": "Пожадована вами зміна была одмітнута дакотрым росшырінём.", - "api-error-http": "Внутрїшня хыба: не вдало ся припоїти к серверу.", - "api-error-illegal-filename": "Тота назва файлу не є дозволена.", - "api-error-internal-error": "Внутрїшня хыба: притрафила ся хыба під час спрацованя вашого наладованого файлу.", - "api-error-invalid-file-key": "Внутрїшня хыба: файл ся не нашов в дочаснім усховіщі.", - "api-error-missingparam": "Внутрїшня хыба: хыбують параметры пожадавкы.", - "api-error-missingresult": "Внутрїшня хыба: не годен становити, ці копірованя было успішне.", - "api-error-mustbeloggedin": "Жебы наладовати файлы, мусите быти приголошеный.", - "api-error-mustbeposted": "Внутрїшня хыба: пожадавка мусить быти через HTTP POST.", - "api-error-noimageinfo": "Наладованя было успішне, але сервер не додав о файлї ниякы інформації.", - "api-error-nomodule": "Внутрїшня хыба: не є наставленый модул наладовованя.", - "api-error-ok-but-empty": "Внутрїшня хыба: сервер не одповідать.", - "api-error-overwrite": "Не є дозволене переписати екзістуючій файл.", - "api-error-stashfailed": "Внутрїшня хыба: серверу ся не вдало уложыти дочасный файл.", "api-error-publishfailed": "Внутрїшня хыба: серверови ся не вдало опубліковати дочасный файл.", - "api-error-timeout": "Сервер не одповідав в очекаванім часї.", - "api-error-unclassified": "Трафила ся незнама хыба.", - "api-error-unknown-code": "Незнама хыба: „$1“", - "api-error-unknown-error": "Внутрїшня хыба: трафила ся хыба при спробі о наладованя файлу.", + "api-error-stashfailed": "Внутрїшня хыба: серверу ся не вдало уложыти дочасный файл.", "api-error-unknown-warning": "Незнаме варованя: $1", "api-error-unknownerror": "Незнама хыба: „$1“", - "api-error-uploaddisabled": "Начітаваня файлів є на тій вікі выпнуте.", - "api-error-verification-error": "Файл є може пошкодженый, або мать плане росшырїня.", "duration-seconds": "$1 {{PLURAL:$1|секунда|секунды|секунд}}", "duration-minutes": "$1 {{PLURAL:$1|минуту|минуты|минут}}", "duration-hours": "$1 {{PLURAL:$1|година|годины|годин}}", diff --git a/languages/i18n/sa.json b/languages/i18n/sa.json index d96819ce58..0992814a89 100644 --- a/languages/i18n/sa.json +++ b/languages/i18n/sa.json @@ -526,8 +526,6 @@ "passwordreset-emaildisabled": "अस्मिन् विकि-जालस्थाने वि-पत्रसम्बद्धाः सेवाः असमर्थिताः सन्ति ।", "passwordreset-username": "सदस्यनाम:", "passwordreset-domain": "प्रदेशः :", - "passwordreset-capture": "परिणामस्वरूपनिर्मितानि वि-पत्राणि द्रष्टुम् इच्छति ?", - "passwordreset-capture-help": "अस्यां मञ्जूषायां यदि भवता अङ्क्यते तर्हि वि-पत्रम् (अस्थायिकूटशब्देन सह) दर्श्यते प्रेष्यते च ।", "passwordreset-email": "वि-पत्रसङ्केतः", "passwordreset-emailtitle": "{{SITENAME}} इत्यत्र योजकविषये", "passwordreset-emailtext-ip": "कोऽपि (कदाचित् भवान्/भवती, $1 अन्तर्जालसंविदः (from IP)) {{SITENAME}}($4) जालस्थानस्य कृते कूटशब्दपरिवर्तनस्य विनतिम् अकरोत् । अनेन वि-पत्रेण सह निम्न{{PLURAL:$3|योजकः सल्लग्नः अस्ति|योजकाः सल्लग्नाः सन्ति}} ।\n\n$2\n\n{{PLURAL:$5|चतुर्विंशतिघण्टासु|$5 दिनेषु}} {{PLURAL:$3|एषः अल्पकालीनकूटशब्दः निरस्तः भविष्यति|एते अल्पकालीनकूटशब्दाः निरस्ताः भविष्यन्ति}} ।\n\nअधुना प्रवेशं सम्प्राप्य कूटशब्दः परिवर्तनीयः एव । \n\nनिम्नकारणानि यदि सन्ति, तर्हि एनं सन्देशम् अवगण्यताम् ।\n\n१ कोऽपि अन्यः अत्र विनतिम् अकरोत् । \n२ पुरातनः कूटशब्दः भवतः/भवत्याः स्मरणे अस्ति ।\n३ भवान्/भवती कूटशब्दं परिवर्तयितुं नेच्छति ।", @@ -924,8 +922,6 @@ "saveprefs": "रक्ष्यताम्", "restoreprefs": "मूलव्यवस्थापनानुगुणं (default settings) सर्वे विकल्पाः भवन्तु (सर्वेषु विभागेषु)", "prefs-editing": "सम्पादनम्", - "rows": "पङ्कतयः :", - "columns": "स्तम्भाः :", "searchresultshead": "अन्वेषणम्", "stub-threshold": "<a href=\"#\" class=\"stub\">stub link</a> इत्यस्य प्रारूपणस्य (formatting) कृते प्रारम्भिकसोपानम् (अष्टकानि) :", "stub-threshold-disabled": "निष्क्रियः", @@ -1015,12 +1011,9 @@ "userrights-reason": "कारणम् :", "userrights-no-interwiki": "अन्यविकि-जालस्थानेषु योजकाधिकारं सम्पादयितुं ते अनुमतिः नास्ति ।", "userrights-nodatabase": "$1 दत्तांशनिधिः न विद्यते अथवा तु सः स्थानीयः नास्ति ।", - "userrights-nologin": "सदस्येभ्यः अधिकारं दातुं प्रबन्धकत्वेन प्रवेशः आवश्यकः । [[Special:UserLogin|प्रविश्यताम्]]", - "userrights-notallowed": "सदस्येभ्यः अधिकारं दातुं, योजकान् अपाकर्तुं च ते अनुमतिः नास्ति ।", "userrights-changeable-col": "परिवर्तनार्हाः समूहाः", "userrights-unchangeable-col": "परिवर्तयितुम् अनर्हाः समूहाः", "userrights-conflict": "सदस्याधिकारस्य परिवर्तनेषु अन्तर्विरोधः अस्ति ! कृपया स्वकृतानि परिवर्तनानि पुनरवलोक्य संरक्ष्यन्ताम् ।", - "userrights-removed-self": "भवता/भवत्या सफलतया स्वाधिकाराः अपाकृताः । अतः भवान्/भवती एतत् पृष्ठं द्रष्टुं न प्रभवति ।", "group": "समूहः :", "group-user": "सदस्याः", "group-autoconfirmed": "स्वदृढितयोजकाः", @@ -1110,7 +1103,6 @@ "right-siteadmin": "दत्तांशनिधिं किलतु, अकिलितं च करोतु", "right-override-export-depth": "यानि पुष्ठानि पञ्चस्तरपर्यन्तं संलग्नानि सन्ति, तेषां सर्वेषां निर्यातं करोतु ।", "right-sendemail": "अन्ययोजकेभ्यः वि-पत्रं प्रेषयतु", - "right-passwordreset": "निकुञ्चपुनारचितानां विद्युन्मानपत्राणाम् अवलोकनम् ।", "right-managechangetags": "दत्तांशात् [[Special:Tags|चिह्नानि]] निर्मीयन्ताम्, अपाक्रियन्तां च", "right-applychangetags": "[[Special:Tags|चिह्नानि]] एकस्य परिवर्तनेन सह प्रयुञ्जताम् ।", "right-changetags": "स्वतन्त्रसंस्करणे, प्रवेशावल्यां च [[Special:Tags|चिह्नानि]] ऐच्छितरीत्या स्थापयतु, निष्कासयतु च", @@ -1290,7 +1282,7 @@ "uploaddisabledtext": "उत्तारितसञ्चिकाः निष्क्रियाः ।", "php-uploaddisabledtext": "PHP मध्ये उत्तारितसञ्चिकाः निष्क्रियाः ।", "uploadscripted": "HTMLयुक्ताः अथवा लिपिसङ्केतयुक्ताः सञ्चिकाः जालदर्शिकया बाधिताः ।", - "uploadscriptednamespace": "\"$1\" इत्येत् अमान्यं नामावकाशं SVG सञ्चिकायां विद्यते ।", + "uploadscriptednamespace": "\"<nowiki>$1</nowiki>\" इत्येत् अमान्यं नामावकाशं SVG सञ्चिकायां विद्यते ।", "uploadinvalidxml": "उपारोहितसञ्चिकायां स्थितं XML व्याख्यायितं (parse) कर्तुं न शक्यते ।", "uploadvirus": "अस्यां सञ्चिकायां वैराणुः अस्ति । विवरणम् $1", "uploadjava": "इयं ZIP सञ्चिका अस्यां जावावर्गस्य सञ्चिकाः सन्ति । \nजावासञ्चिकाः उत्तरणं निषिद्धम् । यतः अनेन सुरक्षाबन्धाः शिथिलाः भवन्ति ।", @@ -3145,52 +3137,12 @@ "feedback-useragent": "योजकानुयोज्यः :", "searchsuggest-search": "अन्वेषणम्", "searchsuggest-containing": "विद्यन्ते......", - "api-error-badaccess-groups": "भवान् अस्यां वीक्यां सञ्चिकाः उत्तारयितुम् नानुमतः ।", "api-error-badtoken": "आन्तरिकदोषः : दुष्टप्रतीकः ।", - "api-error-copyuploaddisabled": "अस्मिन् वितारके युआर् एल् द्वारा उत्तारणं निष्क्रियम् ।", - "api-error-duplicate": "{{PLURAL:$1| अन्यसञ्चिकाः | सन्ति काश्चन अन्यसञ्चिकाः}} एकस्मिन् एव ।", - "api-error-duplicate-archive": "तत्र {{PLURAL:$1|आसीत् काश्चन अन्यसञ्चिकाः|काचन अन्यसञ्चिकाः}}, पूर्वमेव {{PLURAL:$1|यह was|they आसन्}} किन्तु अपनीताः ।", - "api-error-empty-file": "समर्पिता सञ्चिका रिक्ता आसीत् ।", "api-error-emptypage": "नूतनस्य रिक्तस्य पृष्ठस्य सर्जनं निषिद्धम् ।", - "api-error-fetchfileerror": "आन्तरिकदोषः : सञ्चिकायाः प्राप्त्यवसरे कश्चन दोषः जातः ।", - "api-error-fileexists-forbidden": "\"$1\" नामिका सञ्चिका पूर्वमेव विद्यते । पुनः तदुपरि लेखनम् अशक्यम् ।", - "api-error-fileexists-shared-forbidden": "\"$1\" इति नाम्नः सञ्चिका पूर्वमेव सञ्चिकाकोशे अस्ति । अधिलिखितं न स्यात् ।", - "api-error-file-too-large": "समर्पिता सञ्चिका सुदीर्घा अस्ति ।", - "api-error-filename-tooshort": "सञ्चिकानाम अतीव ह्रस्वम् अस्ति ।", - "api-error-filetype-banned": "ईदृशी सञ्चिका अनुरुद्धा ।", - "api-error-filetype-banned-type": "'''\".$1\"'''सञ्चिका {{PLURAL:$4|प्रकारस्य }} अनुमतिः नास्ति ।\nप्रकारसञ्चिकायाः{{PLURAL:$3|}} अनुमतिरस्ति $2।", - "api-error-filetype-missing": "अस्याः सञ्चिकायाः विस्तारः लुप्तः अस्ति ।", - "api-error-hookaborted": "भवतः संस्करणप्रयत्नः विस्तारेण अपसारितः ।", - "api-error-http": "आन्तरिकदोषः : वितारकस्य सम्पर्के असमर्थम् ।", - "api-error-illegal-filename": "सञ्चिकानामलेखनं नानुमतम् ।", - "api-error-internal-error": "आन्तरिकदोषः : वीक्यां भवतः उत्तारणावसरे काचनदोषः संवृत्तः ।", - "api-error-invalid-file-key": "आन्तरिकदोषः : अनित्यसञ्चिकाकोशे सञ्चिका न दृष्टा ।", - "api-error-missingparam": "आन्तरिकदोषः : अभ्यर्थनानुगुणं व्याप्तिः विलुप्ता ।", - "api-error-missingresult": "आन्तरिकदोषः : प्रतिकृतिः सफला इति निश्चिता नाभवत् ।", - "api-error-mustbeloggedin": "सञ्चिकायाः उपारोपणाय अन्तः प्रवेशः अनिवार्यः ।", - "api-error-mustbeposted": "आन्तरिकदोषः : HTTP प्रस्तोतुम् अभ्यर्थनम् आवश्यकम् ।", - "api-error-noimageinfo": "उत्तारणं सफलम् । किन्तु सञ्चिकाविषये वितारकः कामपि सूचनां न अयच्छतु ।", - "api-error-nomodule": "आन्तरिकदोषः : उत्तारणघटकः न व्यवस्थितः ।", - "api-error-ok-but-empty": "आन्तरिकदोषः : वितारकतः प्रतिस्पन्दः न प्राप्तः ।", - "api-error-overwrite": "वर्तमानसञ्चिकायाः पुनर्लेखनं नानुमतम् ।", - "api-error-stashfailed": "आन्तरिकदोषः : तात्कालिकसञ्चिकायाः रक्षणे वितारकः असमर्थः जातः ।", "api-error-publishfailed": "आन्तरिकदोषः : तात्कालिकसञ्चिकायाः रक्षणे वितरकः असमर्थः जातः ।", - "api-error-stasherror": "गोपनीयस्थाने सञ्चिकायाः उपारोहणकाले दोषः समुद्भूतः ।", - "api-error-stashedfilenotfound": "यदा गुहितस्थाने सञ्चिकाम् उपारोहणस्य प्रयासः कृतः, तदा गुहितसञ्चिका न प्राप्ता ।", - "api-error-stashpathinvalid": "गुहितस्थानस्य यः मार्गः प्रदत्तः, सः अमान्यः अस्ति ।", - "api-error-stashfilestorage": "गोपनीयस्थाने सञ्चिकायाः उपारोहणकाले दोषः समुद्भूतः ।", - "api-error-stashzerolength": "वितरकः गुहितसञ्चिकां नाप्रापत्, यतो हि तस्य दीर्घ्यं नासीत् ।", - "api-error-stashnotloggedin": "गुहितस्थाने सञ्चिकाम् उपारोहितुं भवान्/भवती प्रविश्यताम् ।", - "api-error-stashwrongowner": "यां सञ्चिकां भवान्/भवती गुहिकस्थाने उपारोहितुं प्रयासं करोति, सा भवतः/भवत्याः नास्ति ।", - "api-error-stashnosuchfilekey": "गुहितस्थानस्य यां सञ्चिकायाः तालिकां भवान्/भवती इच्छति, सा न विद्यते ।", - "api-error-timeout": "अपेक्षितावधौ वितारकेण प्रतिस्पन्दः न दर्शितः ।", - "api-error-unclassified": "कश्चन अज्ञातः दोषः जातः ।", - "api-error-unknown-code": "अज्ञातः दोषः \" $1 \"", - "api-error-unknown-error": "आन्तरिकदोषः : सञ्चिकायाः आरोपणावसरे कश्चन दोषः जातः ।", + "api-error-stashfailed": "आन्तरिकदोषः : तात्कालिकसञ्चिकायाः रक्षणे वितारकः असमर्थः जातः ।", "api-error-unknown-warning": "अज्ञातः प्रबोधः \"$1\"", "api-error-unknownerror": "अज्ञातः दोषः \" $1 \"", - "api-error-uploaddisabled": "अस्यां वीक्याम् आरोपणं निष्क्रिया कृता अस्ति ।", - "api-error-verification-error": "इयं सञ्चिका सदोषा स्यात् अथवा विस्तारः दोषयुक्तः स्यात् ।", "duration-seconds": "$1 {{PLURAL:$1|क्षणम्|क्षणानि}}", "duration-minutes": "$1 {{PLURAL:$1|निमेषः|निमेषाः}}", "duration-hours": "$1 {{PLURAL:$1|घण्टा|घण्टाः}}", diff --git a/languages/i18n/sah.json b/languages/i18n/sah.json index e1691aa198..8c3e93a0e9 100644 --- a/languages/i18n/sah.json +++ b/languages/i18n/sah.json @@ -184,6 +184,7 @@ "searcharticle": "Көрдөр", "history": "Устуоруйата", "history_short": "Устуоруйа", + "history_small": "устуоруйата", "updatedmarker": "тиһэх киириим кэнниттэн уларыйбыт", "printableversion": "Бэчээттииргэ аналлаах барыл", "permalink": "Куруук баар сигэ", @@ -403,11 +404,11 @@ "createacct-another-username-ph": "Ааккын суруй", "yourpassword": "Киирии тыла:", "userlogin-yourpassword": "Аһарык", - "userlogin-yourpassword-ph": "Киирии тылгын суруй", - "createacct-yourpassword-ph": "Киирии тылгын суруй", - "yourpasswordagain": "Киирии тылгын хатылаа:", - "createacct-yourpasswordagain": "Киирии тылгын бигэргэт", - "createacct-yourpasswordagain-ph": "Киирии тылгын хатылаа", + "userlogin-yourpassword-ph": "Аһарыккын суруй", + "createacct-yourpassword-ph": "Аһарыккын суруй", + "yourpasswordagain": "Аһарыккын хатылаа:", + "createacct-yourpasswordagain": "Аһарыккын бигэргэт", + "createacct-yourpasswordagain-ph": "Аһарыккын хатылаа", "userlogin-remembermypassword": "Тиһиликтэн тахсыма", "userlogin-signwithsecure": "Бигэ холбонуу", "cannotlogin-title": "Киирэр сатаммат", @@ -435,7 +436,7 @@ "gotaccount": "Бэлиэтэммитиҥ дуо? '''$1'''.", "gotaccountlink": "Аатыҥ", "userlogin-resetlink": "Киирэр тылгын умнубуккун дуо?", - "userlogin-resetpassword-link": "Киирии тылгын санаттараҕын дуо?", + "userlogin-resetpassword-link": "Аһарык тылгын санаттараҕын дуо?", "userlogin-helplink2": "Киирэргэ көмө", "userlogin-loggedin": "Маннык аатынан киирбиккин {{GENDER:$1|$1}}.\nАтын аатынан киирэргэ аллара көстөр форманы туһан.", "userlogin-reauth": "Тиһиккэ хат киирэн {{GENDER:$1|$1}} буоларгын бигэргэтиэхтээххин.", @@ -477,15 +478,15 @@ "nouserspecified": "Кыттааччы аатын киллэриэхтээххин.", "login-userblocked": "Бу кыттааччы бобуллубут. Тиһиккэ киирии көҥүллэммэт.", "wrongpassword": "Киирии тылыҥ сыыһалаах. Өссө киллэрэн көр.", - "wrongpasswordempty": "Киирии тылгын суруйбатаххын. Өссө киирэн көр.", + "wrongpasswordempty": "Аһарыккын суруйбатаххын. Хат киирэн көр.", "passwordtooshort": "Киирии тылыҥ наһаа кылгас.\nКырата {{PLURAL:$1|1 бэлиэлээх|$1 бэлиэлээх}} буолуохтаах.", "passwordtoolong": "Аһарык {{PLURAL:$1|1 бэлиэттэн|$1 бэлиэттэн}} уһун буолуо суохтаах.", "passwordtoopopular": "Элбэхтэ туттуллар аһарыктары туттар сатаммат. Бука диэн атын аһарыкта тал.", "password-name-match": "Аһарыгыҥ ааккыттан атын буолуохтаах.", "password-login-forbidden": "Маннык ааты уонна киирии тылы туһаныы бобуллар.", "mailmypassword": "Киирии тылы саҥардыы", - "passwordremindertitle": "{{SITENAME}} киирии тылын санатыы", - "passwordremindertext": "Ким эрэ (бадаҕа эн бу IP-аадырыстан: $1), {{SITENAME}} ($4) аһарыгын саҥаттан ыытыҥ диэбит.\n\"$2\" кыттааччы быстах аһарыга билигин маннык: \"$3\".\nӨскө маны эн чахчы көрдөөбүт буоллаххына, систиэмэҕэ саҥаттан киирэҥҥин аһарыккын уларытыаххын сөп.\nБыстах аһарык {{PLURAL:$5|биир хонук|$5 хонук устата}} үлэлиир.\n\nӨскөтүн аһарыгы саҥаттан көрдөөбөтөх буоллаххына,\nэбэтэр урукку аһарыккн өйдөөн кэлбит буоллаххына,\nбу суругу ааххайыма уонна урукку аһарыккын салгыы туһан.", + "passwordremindertitle": "{{SITENAME}} аһарык тылын санатыы", + "passwordremindertext": "Ким эрэ (бадаҕа Эн бу IP-аадырыстан: $1), {{SITENAME}} ($4) аһарыгын саҥаттан ыытыҥ диэбит.\n\"$2\" кыттааччы быстах аһарыга билигин маннык: \"$3\".\nӨскө маны эн чахчы көрдөөбүт буоллаххына, систиэмэҕэ саҥаттан киирэҥҥин аһарыккын уларытыаххын сөп.\nБыстах аһарык {{PLURAL:$5|биир хонук|$5 хонук устата}} үлэлиир.\n\nӨскөтүн аһарыгы саҥаттан көрдөөбөтөх буоллаххына,\nэбэтэр урукку аһарыккын өйдөөн кэлбит буоллаххына,\nбу суругу ааххайыма уонна урукку аһарыккын салгыы туһан.", "noemail": "\"$1\" ааттаах киһиэхэ эл. почтата ыйыллыбатах.", "noemailcreate": "Электроннай почтаҥ сөптөөх аадырыһын суруйуохтааххын", "passwordsent": "Саҥа аһарык тыл \"$1\" эл. почтатыгар ыытылынна.\nТиһиккэ киирэргэ саҥа аһарыгы туһан.", @@ -504,7 +505,7 @@ "accountcreated": "Саҥа аат иҥэрилиннэ", "accountcreatedtext": "[[{{ns:User}}:$1|$1]] ([[{{ns:User talk}}:$1|ыр.]]) бэлиэ аат оҥоһулунна.", "createaccount-title": "{{SITENAME}} бырайыакка саҥа аат оҥоруу", - "createaccount-text": "Ким эрэ {{SITENAME}} бырайыакка ($4) саҥа $2 ааты бэлиэтээбит. \"$2\" киирии тыла \"$3\". Билигин киирэн киирии тылгын уларытыаххын наада.\n\nСаҥа аат сыыһа оҥоһуллубут буоллаҕына тугу да гыныа суоххун сөп.", + "createaccount-text": "Ким эрэ {{SITENAME}} бырайыакка ($4) саҥа $2 ааты бэлиэтээбит. \"$2\" аһарыга \"$3\". Билигин киирэн аһарык тылгын уларытыахтаах эбиккин.\n\nСаҥа аат сыыһа оҥоһуллубут буоллаҕына тугу да гыныа суоххун сөп.", "login-throttled": "Ааккын аһара элбэхтик билиһиннэрэ сатаатыҥ.\nБука диэн $1 буолан баран өссө киирэн көрөөр.", "login-abort-generic": "Бу аатынан сатаан киирбэтиҥ - быһынна", "login-migrated-generic": "Эн бэлиэ-аатыҥ көһөрүллүбүт, онон урукку аатыҥ бу биикигэ суох буолбут эбит.", @@ -522,7 +523,7 @@ "changepassword": "Киирии тылы уларытарга", "resetpass_announce": "Түмүктүүргэ саҥа киирии тылла суруй.", "resetpass_text": "<!-- Тиэкиһи манна эбэн суруйуҥ -->", - "resetpass_header": "Аат киирии тылын уларытыы", + "resetpass_header": "Бэлиэ-аат аһарык тылын уларытыы", "oldpassword": "Эргэ аһарык:", "newpassword": "Саҥа аһарык:", "retypenew": "Саҥа киирии тылы хатылаа:", @@ -581,8 +582,8 @@ "passwordreset-domain": "Домен:", "passwordreset-email": "Электроннай почтата:", "passwordreset-emailtitle": "{{SITENAME}} бырайыакка аатын туһунан", - "passwordreset-emailtext-ip": "Ким эрэ (баҕар эн буолуо, бу IP-ттан $1) {{SITENAME}} ($4) бырайыакка киирии тылы уларытар туһунан ыйытык биэрбит.\nБу электрон аадырыһы кытта бу {{PLURAL:$3|аат ситимнээх|ааттар ситимнээхтэр}}:\n\n$2\n\nБу быстах кэмҥэ аналлаах {{PLURAL:$3|киирии тыл|кирии тыллар}} {{PLURAL:$5|биир күн үлэлиэҕэ|$5 күн үлэлиэхтэрэ}}.\nЭн тиһиликкэ ааккын этэн саҥа киирии тылы киллэриэхтээххин.\nӨскө бу ыйытыгы ыыппатах буоллаххына, эбэтэр урукку киирии тылгын өйдөөн кэлбит буоллаххына \nбу биллэриини ааххайыа суоххун сөп.\nОччоҕо урукку киирии тылыҥ оннунан хаалыа.", - "passwordreset-emailtext-user": "$1 диэн кыттааччы {{SITENAME}} ($4) бырайыакка киирии тылгын уларытар туһунан ыйытык ыыппыт.\nБу электрон аадырыһы кытта бу {{PLURAL:$3|аат ситимнээх|ааттар ситимнээхтэр}}\n\n$2\n\nБу быстах кэмҥэ аналлаах {{PLURAL:$3|киирии тыл|кирии тыллар}} {{PLURAL:$5|биир күн үлэлиэҕэ|$5 күн үлэлиэхтэрэ}}.\nЭн тиһиликкэ ааккын этэн саҥа киирии тылы киллэриэхтээххин.\nӨскө бу ыйытыгы ыыппатах буоллаххына, эбэтэр урукку киирии тылгын өйдөөн кэлбит буоллаххына \nбу биллэриини ааххайыа суоххун сөп.\nОччоҕо урукку киирии тылыҥ оннунан хаалыа.", + "passwordreset-emailtext-ip": "Ким эрэ (баҕар Эн буолуо, бу IP-ттан $1) {{SITENAME}} ($4) бырайыакка аһарык тылы уларытар туһунан ыйытык биэрбит.\nБу электрон аадырыһы кытта бу {{PLURAL:$3|аат ситимнээх|ааттар ситимнээхтэр}}:\n\n$2\n\nБу быстах кэмҥэ аналлаах {{PLURAL:$3|аһарык|аһарык тыллар}} {{PLURAL:$5|биир күн үлэлиэҕэ|$5 күн үлэлиэхтэрэ}}.\nЭн тиһиликкэ ааккын этэн саҥа аһарык тылы киллэриэхтээххин.\nӨскө бу ыйытыгы ыыппатах буоллаххына, эбэтэр урукку аһарык тылгын өйдөөн кэлбит буоллаххына \nбу биллэриини ааххайыа суоххун сөп.\nОччоҕо урукку аһарык тылыҥ оннунан хаалыа.", + "passwordreset-emailtext-user": "$1 диэн кыттааччы {{SITENAME}} ($4) бырайыакка аһарыккын уларытар туһунан ыйытык ыыппыт.\nБу электрон аадырыһы кытта бу {{PLURAL:$3|аат ситимнээх|ааттар ситимнээхтэр}}\n\n$2\n\nБу быстах кэмҥэ аналлаах {{PLURAL:$3|аһарык|аһарыктар}} {{PLURAL:$5|биир күн үлэлиэҕэ|$5 күн үлэлиэхтэрэ}}.\nЭн тиһиликкэ ааккын этэн саҥа киирии тылы киллэриэхтээххин.\nӨскө бу ыйытыгы ыыппатах буоллаххына, эбэтэр урукку аһарыккын өйдөөн кэлбит буоллаххына \nбу биллэриини ааххайыа суоххун сөп.\nОччоҕо урукку аһарыгыҥ оннунан хаалыа.", "passwordreset-emailelement": "Кыттааччы: \n$1\n\nБыстах аһарык тыл: \n$2", "passwordreset-emailsentemail": "Өскө бу Эн ааккар баайыллыбыт аадырыс буоллаҕына, аһарык тылы уларытар туһунан сурук барыа.", "passwordreset-emailsentusername": "Өскө бу аакка баайыллыбыт аадырыс баар буоллаҕына, аһарык тылы уларытар туһунан сурук онно барыа.", @@ -652,6 +653,7 @@ "blockedtitle": "Кыттааччы уларытар кыаҕа быһылынна", "blockedtext": "'''Эн аатыҥ эбэтэр IP-аадырыһыҥ бобулуннулар.'''\n\nБоппут киһи $1.\nТөрүөтэ: ''«$2»''.\n\n*Бобуллубут: $8\n*Бобуу болдьоҕо: $6\n*Бобулунна: $7\n\nЭн $1 диэн киһиэхэ эбэтэр атын [[{{MediaWiki:Grouppage-sysop}}|администраатарга]] суруйан быһаарсыаххын сөп.\nБолҕой, өскө регистрацияламматах буоллаххына, эбэтэр эл. аадырыскын [[Special:Preferences|бигэргэппэтэх]] буоллаххына, эбэтэр сурук суруйарыҥ бобуллубут буоллаҕына администраатарга суруйар кыаҕыҥ суох.\nЭн IP-аадырыһыҥ — $3, бобуу нүөмэрэ — #$5.\nОну суруккар киллэрээр.", "autoblockedtext": "Эн IP-аадырыскын ханнык эрэ бу бырайыакка кыттÐ°Ñ€Ð° бобуллубут киһи туһана сылдьыбыт, онон бу IP-аадырыс бобуулаах. Боппут администраатар ($1) ол төрүөтүн маннык суруйбут:\n\n:''$2''\n\n*Бобуллубут: $8\n*Бобуу болдьоҕо: $6\n*Бобулунна: $7\n\nЭн $1 диэн киһиэхэ эбэтэр атын [[{{MediaWiki:Grouppage-sysop}}|администраатарга]] сурук суруйан быһаарсыаххын сөп.\n\nБолҕой, өскө регистрацияламматах буоллаххына, эбэтэр эл. аадырыскын [[Special:Preferences|бигэргэппэтэх]] буоллаххына, эбэтэр сурук суруйарыҥ бобуллубут буоллаҕына администраатарга суруйар кыаҕыҥ суох.\n\nIP-аадырыһыҥ $3, бобуу нүөмэрэ — #$5.\nОну суруккар киллэрээр.", + "systemblockedtext": "Бэлиэ-ааккын эбэтэр IP-аадырыскын MediaWiki хааччахтаабыт.\nЫйыллыбыт төрүөтэ:\n\n:<em>$2</em>\n\n* Хааччах саҕаланыыта: $8\n* Хааччах уһуллуута: $6\n* Бүөлээһин соруга: $7\n\nЭн билиҥҥи IP-аадырыһыҥ $3.\nБыһаарсар буоллаххына, бу сибидиэнньэлэри этээр дуу.", "blockednoreason": "биир да биричиинэ сөп түбэспэт", "whitelistedittext": "Улатыаххын баҕарар буоллаххына маны $1 гын.", "confirmedittext": "Уларытарга эл. почтаҥ аадырыһын бигэргэтиэхтээххин. Бастаан [[Special:Preferences|манна]] киирэн бэйэн ааккын уонна эл. почтаҕын суруй. Онтон эл. аадырыскын бигэргэт.", @@ -1059,7 +1061,7 @@ "prefs-help-gender": "Маны туруорар булгуччута суох. \nБырагыраамма сорох дьоҥҥо туһаайыллыбыт биллэриилэригэр эбэтэр кинилэргэ сыһыаннаах этиилэригэр кытааччы дьахтарыттан эбэтэр эр киһититтэн көрөн этии тутулун уларытан биэриэн сөп. \nТуора дьоҥҥо көстөр бэлиэтээһин.", "email": "Почта", "prefs-help-realname": "Сурукка киирбит аатыҥ булгуччута суох. Суруйдаххына ааптар быһыытынан ыйыллар буолуоҥ.", - "prefs-help-email": "Электроннай аадырыһы суруйар булгуччута суох, ол эрээри киирии тылгын умуннаххына санатарга көмөлөһүө.", + "prefs-help-email": "Электроннай аадырыһы суруйар булгуччута суох, ол эрээри аһарык тылгын умуннаххына санатарга көмөлөһүө.", "prefs-help-email-others": "Эбии. Атын кыттааччылар Эйигин кытта электроннай почтаҕын билбэккэ эрэ суруйсар кыахтаныахтара.", "prefs-help-email-required": "E-mail баар буолуохтаах.", "prefs-info": "Сүрүн сибидиэнньэлэр", @@ -1297,8 +1299,20 @@ "recentchanges-legend-heading": "<strong>Легендата:</strong>", "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (өссө көр: [[Special:NewPages|Саҥа сирэйдэр тиһиктэрэ]])", "recentchanges-submit": "Көрдөр", + "rcfilters-activefilters": "Холбоммут сиидэлэр", + "rcfilters-search-placeholder": "Сиидэлэри кэнники уларытыы (көр биитэр киллэр)", + "rcfilters-invalid-filter": "Сатаммат сиидэ", "rcfilters-filterlist-title": "Сиидэ", "rcfilters-filterlist-noresults": "Сиидэ көстүбэтэ", + "rcfilters-filtergroup-authorship": "Ааптарын уларытыы", + "rcfilters-filter-editsbyself-label": "Эн тус бэйэҥ уларытыыларыҥ", + "rcfilters-filter-editsbyself-description": "Бэйэҥ уларытыыларыҥ.", + "rcfilters-filter-editsbyother-label": "Атыттар уларытыылара.", + "rcfilters-filter-editsbyother-description": "Атыттар уларытыылара (Эйиэнэ буолбатах).", + "rcfilters-filtergroup-userExpLevel": "Кыттааччы уопутун таһымынан", + "rcfilters-filter-userExpLevel-newcomer-label": "Саҥа киирбиттэр", + "rcfilters-filter-userExpLevel-newcomer-description": "Отой саҥалар: 10 көннөрүүттэн аҕыйаҕы оҥорбуттар уонна бэлиэтэмиттэрэ 4 хоно иликтэр.", + "rcfilters-filter-userExpLevel-learner-label": "Үөрэнээччилэр", "rcnotefrom": "Манна {{PLURAL:$5|уларытыы көрдөрүлүннэ|уларытыылар көһүннүлэр}} баччаттан <strong>$3, $4</strong> (баччаттан элбэх көстүбэт <strong>$1</strong>).", "rclistfrom": "Бу кэм $3 $2 кэнниттэн оҥоһуллубуттары көрдөр", "rcshowhideminor": "$1 кыра уларыйыылары", @@ -1432,7 +1446,7 @@ "uploaded-setting-handler-svg": "«Handler» атрибууту аадырыс/дааннай/скрипт көмөтүнэн быһаарар SVG хааччахтаммыт. Угуллубут SVG-билэҕэ <code>$1=\"$2\"</code> конструкция көстүбүт.", "uploaded-remote-url-svg": "Тэйиччи URL-лунан атрибууттуур SVG хааччахтаммыт. Киллэриллибит SVG-билэҕэ <code>$1=\"$2\"</code> көстүбүт.", "uploaded-image-filter-svg": "Хачайдаммыт SVG-билэҕэ маннык URL-аадырыстаах ойуу сиидэтэ көстүбүт <code><$1 $2=\"$3\"></code>.", - "uploadscriptednamespace": "Бу SVG-билэ алҕастаах аат даллаах эбит: '$1'", + "uploadscriptednamespace": "Бу SVG-билэ алҕастаах аат даллаах эбит: '<nowiki>$1</nowiki>'", "uploadinvalidxml": "Хачайдаммит билэҕэ XML анаалыстанар кыаҕа суох.", "uploadvirus": "Бу билэ вирустаах! Көр: $1", "uploadjava": "Билэ Java .class билэлээх ZIP-архыып эбит.\nКуттал суох буолбатын диэн Java-билэрэри манна угар бобуллар.", @@ -3487,56 +3501,12 @@ "feedback-useragent": "Браузерым:", "searchsuggest-search": "{{SITENAME}} иһигэр көрдөөһүн", "searchsuggest-containing": "тыл баар ыстатыйалара...", - "api-error-autoblocked": "Эн IP-аадырыһыҥ бүөлэммит кыттааччы туттубутун иһин хааччахтаммыт.", - "api-error-badaccess-groups": "Эн бу биикигэ билэ киллэрэриҥ хааччахтаммыт.", "api-error-badtoken": "Ис алҕас: Омсолоох токен.", - "api-error-blocked": "Уларытар кыаххын быспыттар эбит.", - "api-error-copyuploaddisabled": "URL көмөтүнэн киллэрии бу сиэрбэргэ араарыллыбыт.", - "api-error-duplicate": "Маннык иһинээҕилээх атын {{PLURAL:$1|билэ баар|билэлэр бааллар}} эбит", - "api-error-duplicate-archive": "Урут ситим-сиргэ маннык иһинээҕилээх {{PLURAL:$1|билэ баар|билэлэр бааллар}} этэ, ол гынан баран {{PLURAL:$1|сотуллубута|сотуллубуттара}}.", - "api-error-empty-file": "Ыыппыт билэҥ кураанах.", "api-error-emptypage": "Саҥа кураанах сирэйи оҥорор табыллыбат.", - "api-error-fetchfileerror": "Ис алҕас: билэни ыларга туох эрэ сатаммата.", - "api-error-fileexists-forbidden": "Маннык \"$1\" ааттаах билэ хайыы үйэ баар уонна хат суруллар кыаҕа суох эбит.", - "api-error-fileexists-shared-forbidden": "«$1» диэн ааттаах билэ уопсай харайар сиргэ баар уонна хат суруллар кыаҕа суох эбит.", - "api-error-file-too-large": "Ыыппыт билэҥ наһаа улахан эбит.", - "api-error-filename-tooshort": "Билэҥ аата наһаа кылгас.", - "api-error-filetype-banned": "Маннык көрүҥнээх билэлэр бобуулаахтар.", - "api-error-filetype-banned-type": "$1 — {{PLURAL:$4|билэ бобуллубут көрүҥэ|билэ бобуллубут көрүҥнэрэ}}. \nКөҥүллэммит билэ {{PLURAL:$3|көрүҥэ маннык|көрүҥнэрэ манныктар}}: $2.", - "api-error-filetype-missing": "Бу билэ тэнитиитэ (расширение) суох эбит.", - "api-error-hookaborted": "Эн киллэрбит уларытыыгын кэҥэтии таҥастааччыта оннугар төннөрбүт.", - "api-error-http": "Ис алҕас: Сиэрбэргэ холбонор табыллыбата.", - "api-error-illegal-filename": "Билэ маннык ааттанара сатаммат.", - "api-error-internal-error": "Ис алҕас: биикигэ угаары гыммыккар туох эрэ сатаммата.", - "api-error-invalid-file-key": "Ис алҕас: Быстах уурар сиргэ билэ көстүбэтэ.", - "api-error-missingparam": "Ис алҕас: Көрдөбүл туруоруулара суохтар эбит.", - "api-error-missingresult": "Ис алҕас: Хатылааһын сатаммыта-сатамматаҕа биллибэтэ.", - "api-error-mustbeloggedin": "Билэни киллэрэргэ бастаан ааккын этиэхтээххин.", - "api-error-mustbeposted": "Ис алҕас: HTTP POST алҕастаах.", - "api-error-noimageinfo": "Хачайдааһын сөпкө түмүктэннэ эрээри, сиэрбэр билэ туһунан тугу да биллэрбэтэ.", - "api-error-nomodule": "Ис алҕас: хачайдыыр муодул туруоруута суох.", - "api-error-ok-but-empty": "Ис алҕас: сиэрбэртэн хоруй кэлбэтэ.", - "api-error-overwrite": "Баар билэни уларытар сатаммат.", - "api-error-ratelimited": "Наһаа элбэх билэни кылгас кэм иһигэр уга сатаатыҥ.\nТохтуу түһэн баран хатылаан көрөөр.", - "api-error-stashfailed": "Ис алҕас: сиэрбэр быстах кэмҥэ оҥоһуллубут билэни кыайан бигэргэппэтэх.", "api-error-publishfailed": "Ис алҕас: сиэрбэр быстах билэни кыайан бигэргэппэтэх.", - "api-error-stasherror": "Билэни угарга алҕас таҕыста.", - "api-error-stashedfilenotfound": "Хачайданыахтаах билэ быстах уурар сиргэ көстүбэтэ.", - "api-error-stashpathinvalid": "Билэ сытыахтаах быстах уурар сирин суола алҕастаах.", - "api-error-stashfilestorage": "Билэни быстах угар сиргэ угарга алҕас таҕыста.", - "api-error-stashzerolength": "Сиэрбэр билэни быстах угар сиргэ харайар кыаҕа суох, тоҕо диэтэххэ уһуна нуул.", - "api-error-stashnotloggedin": "Билэни быстах сиргэ харайарга бастаан ааккынан киириэхтээххин.", - "api-error-stashwrongowner": "Арыйа сатаабыт билэҥ эйиэнэ буолбатах эбит.", - "api-error-stashnosuchfilekey": "Быстах уурар сиргэ сытар билэҕэ киирэ сатаабыт күлүүһүҥ суох эбит.", - "api-error-timeout": "Сиэрбэр кэтэһэр кэмҥэ хоруйдаабата.", - "api-error-unclassified": "Биллибэт алҕас таҕыста", - "api-error-unknown-code": "Биллибэт алҕас: «$1»", - "api-error-unknown-error": "Ис алҕас: билэни киллэрии кэмигэр туох эрэ сатаммата.", + "api-error-stashfailed": "Ис алҕас: сиэрбэр быстах кэмҥэ оҥоһуллубут билэни кыайан бигэргэппэтэх.", "api-error-unknown-warning": "Биллибэт сэрэтии: $1", "api-error-unknownerror": "Биллибэт алҕас: $1", - "api-error-uploaddisabled": "Бу биикигэ хачайдыыр араарыллыбыт эбит.", - "api-error-verification-error": "Бу билэ алдьаммыт эбэтэр табыгаһа суох кэҥэтиилээх.", - "api-error-was-deleted": "Маннык ааттаах билэ урут баар буола сылдьыбыт, онтон сотуллубут эбит.", "duration-seconds": "$1 сөкүүндэ", "duration-minutes": "$1 мүнүүтэ", "duration-hours": "$1 чаас", diff --git a/languages/i18n/scn.json b/languages/i18n/scn.json index 807dbfc79c..d74cacfab1 100644 --- a/languages/i18n/scn.json +++ b/languages/i18n/scn.json @@ -520,8 +520,6 @@ "passwordreset-emaildisabled": "Li funziunalità di e-mail foru disattivati nta sta wiki.", "passwordreset-username": "Nomu utenti:", "passwordreset-domain": "Duminiu:", - "passwordreset-capture": "Ammustrari lu missaggiu e-mail chi veni cumpostu?", - "passwordreset-capture-help": "Si attivi sta casedda, lu missaggiu e-mail (câ password timpurània) veni ammustratu a tìa sparti chi veni mannatu a l'utenti.", "passwordreset-email": "Nnirizzu di posta elittrònica:", "passwordreset-emailtitle": "Dittagghî dû cuntu supra a {{SITENAME}}", "passwordreset-emailtext-ip": "Quarchidunu (prubbabbilmenti tu, dô nnirizzu IP $1) fici n'addumannata pi l'azziramentu dâ tò password pi {{SITENAME}} ($4). {{PLURAL:$3|Lu cuntu utenti siguenti è assuciatu|Li cunti utenti siguenti sù assuciati}} cu stu nnirizzu di posta elittrònica:\n\n$2\n\n{{PLURAL:$3|Sta password timpurània|Sti password timpurànii}} scàdinu tra {{PLURAL:$5|un jornu|$5 jorna}}.\nOra tu avissi a tràsiri e scègghiri na password nova. Si fu quarchidun'àutru a fari st'addumannata e nun tu, o si t'arricurdasti la tò password origginali e nun la voi canciari cchiù, poi gnurari stu missaggiu e cuntinuari a adupirari la tò password vecchia.", @@ -920,8 +918,6 @@ "saveprefs": "Sarva", "restoreprefs": "Riprìstina tutti li mpustazzioni pridifinuti (nta tutti li sizzioni)", "prefs-editing": "Canciamentu", - "rows": "Righi:", - "columns": "Culonni:", "searchresultshead": "Arricerca", "stub-threshold": "Sogghia pi furmattari nu liami comu bozza ($1):", "stub-threshold-sample-link": "esempiu", @@ -1012,12 +1008,9 @@ "userrights-reason": "Mutivu:", "userrights-no-interwiki": "Nun hai lu pirmissu di canciari li dritti di l'utenti nta l'àutri wiki.", "userrights-nodatabase": "La basi di dati $1 nun esisti o nun è lucali.", - "userrights-nologin": "Hai a [[Special:UserLogin|tràsiri]] cûn cuntu d'amministraturi pi putiri assignari li dritti di l'utenti.", - "userrights-notallowed": "Nun hai lu pirmissu di agghiùnciri o livari dritti a l'utenti.", "userrights-changeable-col": "Gruppi chi si ponnu canciari", "userrights-unchangeable-col": "Gruppi chi nun si ponnu canciari", "userrights-conflict": "Cunflittu di canciamentu dî dritti di l'utenti! Pi favuri cuntrolla e cunferma li tò canciamenti.", - "userrights-removed-self": "Arriniscisti a livàriti li tò stissi dritti. Pi chistu, nun hai cchiù l'accessu a sta pàggina.", "group": "Gruppu:", "group-user": "Utenti", "group-autoconfirmed": "Utenti autu-cunfirmati", @@ -1107,7 +1100,6 @@ "right-siteadmin": "Bluccari e sbluccari la basi di dati", "right-override-export-depth": "Espurtari pàggini cu li pàggini culligati nfina ô quintu liveddu", "right-sendemail": "Mannari missaggi di posta elittrònica a l'àutri utenti", - "right-passwordreset": "Taliari li missaggi di posta elittrònica d'azziramentu dî password", "right-managechangetags": "Criari e cancillari [[Special:Tags|etichetti]] dâ basi di dati", "right-applychangetags": "Appizzari [[Special:Tags|etichetti]] ntê propî canciamenti", "right-changetags": "Agghiùnciri e livari a piaciri [[Special:Tags|etichetti]] dî virsioni e dî vuci di riggistru", @@ -1297,7 +1289,7 @@ "uploaded-setting-handler-svg": "Lu còdici SVG ca mposta l'attribbutu \"handler\" a na distinazzioni rimota/data/script veni bluccatu. Fu attruvatu <code>$1=\"$2\"</code> ntô file SVG carricatu.", "uploaded-remote-url-svg": "Lu còdici SVG ca mposta n'attribbutu style qualegghiè versu di n'URL rimota veni bluccatu. Fu attruvatu <code>$1=\"$2\"</code> ntô file SVG carricatu.", "uploaded-image-filter-svg": "Fu attruvatu nu filtru di mmàggini cu URL <code><$1 $2=\"$3\"></code> ntô file SVG carricatu.", - "uploadscriptednamespace": "Stu file SVG cunteni nu namespace nun cunzintutu, \"$1\".", + "uploadscriptednamespace": "Stu file SVG cunteni nu namespace nun cunzintutu, \"<nowiki>$1</nowiki>\".", "uploadinvalidxml": "L'XML ntô file carricatu nun potti èssiri analizzatu sintatticamenti.", "uploadvirus": "Lu file cunteni un virus!\nDittagghî: $1", "uploadjava": "Stu file è n'archiviu ZIP chi cunteni nu file .class Java.\nCarricari file Java nun è cunzintutu pirchì pirmèttinu d'aggirari li ristrizzioni di sicurizza.", @@ -3196,52 +3188,12 @@ "feedback-useragent": "Aggenti di l'utenti:", "searchsuggest-search": "Arricerca", "searchsuggest-containing": "chi cunteni...", - "api-error-badaccess-groups": "Nun hai lu pirmissu di carricari file nta sta wiki.", "api-error-badtoken": "Erruri nternu: Token sbagghiatu", - "api-error-copyuploaddisabled": "Lu carricamentu a pàrtiri d'URL è disattivatu nta stu server.", - "api-error-duplicate": "Già {{PLURAL:$1|c'è n'àutru file]|ci sunnu àutri file]}} supra ô situ chi {{PLURAL:$1|havi|hannu}} lu stissu cuntinutu.", - "api-error-duplicate-archive": "{{PLURAL:$1|C'era n'àutru file|C'èranu àutri file}} supra ô situ c'{{PLURAL:$1|avìa|avìanu}} lu stissu cuntinutu, ma {{PLURAL:$1|fu cancillatu|foru cancillati}}.", - "api-error-empty-file": "Lu file chi mannasti era vacanti.", "api-error-emptypage": "Criari pàggini novi e vacanti nun è cunzintutu.", - "api-error-fetchfileerror": "Erruri nternu: Quarchi cosa nun funziunau mentri chi si carricava lu file.", - "api-error-fileexists-forbidden": "Nu file chi si chiama \"$1\" già esisti, e nun si pò suprascrìviri.", - "api-error-fileexists-shared-forbidden": "Nu file chi si chiama \"$1\" già esisti ntô dipòsitu cunnivisu, e nun si pò suprascrìviri.", - "api-error-file-too-large": "Lu file chi mannasti era troppu grossu.", - "api-error-filename-tooshort": "Lu nomu dû file è troppu curtu.", - "api-error-filetype-banned": "Stu tipu di file è sbannutu.", - "api-error-filetype-banned-type": "$1 {{PLURAL:$4|nun è un tipu di file cunzintutu|nun sù tipi di file cunzintuti}}. {{PLURAL:$3|Lu tipu di file cunzintutu è|Li tipi di file cunzintuti sunnu}} $2.", - "api-error-filetype-missing": "Ô nomu dû file ci ammanca l'estinzioni.", - "api-error-hookaborted": "Lu canciamentu chi stavi pruvannu a fari fu annullatu di n'estinzioni.", - "api-error-http": "Erruri nternu: Mpussìbbili culligàrisi ô server.", - "api-error-illegal-filename": "Lu nomu dû file nun è cunzintutu.", - "api-error-internal-error": "Erruri nternu: Quarchi cosa nun funziunau mentri chi si stava travagghiannu lu tò carricamentu supra â wiki.", - "api-error-invalid-file-key": "Erruri nternu: Lu file nun fu attruvatu ntâ mimurizzazzioni timpurània.", - "api-error-missingparam": "Erruri nternu: Ammàncanu paràmitri nta l'addumannata.", - "api-error-missingresult": "Erruri nternu: Nun fu pussìbbili capiri si la copia arriniscìu.", - "api-error-mustbeloggedin": "Hai a aviri trasutu pi carricari file.", - "api-error-mustbeposted": "Erruri nternu: L'addumannata havi bisognu di POST HTTP.", - "api-error-noimageinfo": "Lu carricamentu arriniscìu, pirò lu server nun ni desi nudda nfurmazzioni a prupòsitu dû file.", - "api-error-nomodule": "Erruri nternu: nun fu mpustatu lu mòdulu di carricamentu", - "api-error-ok-but-empty": "Erruri ntenru: nudda risposta dû server", - "api-error-overwrite": "Suprascriviri nu file ca nun esisti nun è cunsitutu", - "api-error-stashfailed": "Erruri nternu: lu server nun arrinisciu a mimurizzari lu ducumentu timpuraniu", "api-error-publishfailed": "Erruri nternu: Lu server nun arriniscìu a pubblicari lu file timpuràniu.", - "api-error-stasherror": "Ci fu n'erruri ntô carricari lu file nta l'ammucciagghia.", - "api-error-stashedfilenotfound": "Lu file nun fu attruvatu nta l'ammucciagghia duranti lu tintativu di carricamentu a pàrtiri di l'ammucciagghia.", - "api-error-stashpathinvalid": "Lu caminu unni avissi avutu a èssiri lu file nta l'ammucciagghia nun era vàlidu.", - "api-error-stashfilestorage": "Ci fu n'erruri ntô mimurizzari lu file nta l'ammucciagghia.", - "api-error-stashzerolength": "Lu server nun potti mèttiri lu file nta l'ammucciagghia, pirchì avìa lunghizza zeru.", - "api-error-stashnotloggedin": "Hai a aviri trasutu pi sarvari file nta l'ammucciagghia.", - "api-error-stashwrongowner": "Lu file nta l'ammucciagghia chi pruvasti a pigghiari nun t'apparteni.", - "api-error-stashnosuchfilekey": "Lu file nta l'ammucciagghia chi pruvasti a pigghiari nun esisti.", - "api-error-timeout": "Lu server nun arrispunniu ntô tempu privistu", - "api-error-unclassified": "S'avvirificau n'erruri scanusciutu", - "api-error-unknown-code": "Erruri scanusciuti: \"$1$\".", - "api-error-unknown-error": "Erruri nternu: Quarchi cosa nun funziunau ntô tintativu di carricari lu tò file.", + "api-error-stashfailed": "Erruri nternu: lu server nun arrinisciu a mimurizzari lu ducumentu timpuraniu", "api-error-unknown-warning": "Avvisu scanusciutu: \"$1\".", "api-error-unknownerror": "Erruri scanusciutu: \"$1\".", - "api-error-uploaddisabled": "Lu carricamentu è disattivatu nta sta wiki.", - "api-error-verification-error": "Lu file purrìa èssiri ruinatu, o puru aviri la stinzioni sbagghiata.", "duration-seconds": "$1 {{PLURAL:$1|sicunnu|sicunni}}", "duration-minutes": "$1 {{PLURAL:$1|minutu|minuti}}", "duration-hours": "$1 {{PLURAL:$1|ura|uri}}", diff --git a/languages/i18n/sco.json b/languages/i18n/sco.json index a94b562362..0931c4a14c 100644 --- a/languages/i18n/sco.json +++ b/languages/i18n/sco.json @@ -23,7 +23,8 @@ "Matma Rex", "Aursani", "V6rg", - "C.R." + "C.R.", + "Anomie" ] }, "tog-underline": "Unnerline airtins:", @@ -406,19 +407,12 @@ "login": "Log in", "login-security": "Verify yer identity", "nav-login-createaccount": "Log in / cræft aen accoont", - "userlogin": "Cræft aen accoont or log in", - "userloginnocreate": "Log in.", "logout": "Log oot", "userlogout": "Log oot", "notloggedin": "Naw loggit in", "userlogin-noaccount": "Dinna hae aen accoont?", "userlogin-joinproject": "Jyn {{SITENAME}}", - "nologin": "Dinna hae aen accoont? $1.", - "nologinlink": "Cræft aen accoont", "createaccount": "Creaut accoont", - "gotaccount": "Awreadie hae aen accoont? $1.", - "gotaccountlink": "Log in", - "userlogin-resetlink": "Fergotten yer login details?", "userlogin-resetpassword-link": "Fergot yer password?", "userlogin-helplink2": "Heelp wi loggin in", "userlogin-loggedin": "Ye'r awreadie loggit in as {{GENDER:$1|$1}}.\nUise the form ablow tae log in as anither uiser.", @@ -430,7 +424,6 @@ "createacct-another-email-ph": "Enter wab-mail address", "createaccountmail": "Uise ae temporarie random passwaird n send it til the speceefied wab-mail address", "createacct-realname": "Real name (optional).", - "createaccountreason": "Raison:", "createacct-reason": "Raison", "createacct-reason-ph": "Why ar ye creating anither accoont", "createacct-reason-help": "Message shawn in the accoont creation log", @@ -528,8 +521,6 @@ "passwordreset-emaildisabled": "Wab-mail features hae been disabled oan this wiki.", "passwordreset-username": "Uisername:", "passwordreset-domain": "Domain:", - "passwordreset-capture": "See the ootcomin e-mail?", - "passwordreset-capture-help": "Gif ye check this kist, the e-mail (wi the temperie passwaird) will be shawn til ye n be sent til the uiser ava.", "passwordreset-email": "Wab-mail address:", "passwordreset-emailtitle": "Accoont details oan {{SITENAME}}", "passwordreset-emailtext-ip": "Somebodie (likely ye, fae IP address $1) requested ae reset o yer passwaird fer {{SITENAME}} ($4). The follaein uiser {{PLURAL:$3|accoont is|accoonts ar}}\nassociated wi this wab-mail address:\n\n$2\n\n{{PLURAL:$3|This temperie passwaird|Thir temperie passwairds}} will expire in {{PLURAL:$5|yin day|$5 days}}.\nYe shid log in n chuise ae new passwaird nou. Gif some ither bodie makit this request, or gif ye'v mynded yer oreeginal passwaird, n ye nae longer\nwish tae chynge it, ye can ignore this message n continue uisin yer auld passwaird.", @@ -911,8 +902,6 @@ "saveprefs": "Hain preferences", "restoreprefs": "Restore aw defaut settins (in aw sections)", "prefs-editing": "Eeditin", - "rows": "Raws:", - "columns": "Columns:", "searchresultshead": "Rake ootcome settins", "stub-threshold": "Threeshaud fer <a href=\"#\" class=\"stub\">stub airtin</a> formattin (bytes):", "stub-threshold-disabled": "Disablt", @@ -1002,12 +991,9 @@ "userrights-reason": "Raison:", "userrights-no-interwiki": "Ye dinna hae permission tae eedit uiser richts oan ither wikis.", "userrights-nodatabase": "Database $1 disna exeest or isna local.", - "userrights-nologin": "Ye maun [[Special:UserLogin|log in]] wi aen admeenistrater accoont tae assign uiser richts.", - "userrights-notallowed": "Ye dinna hae permeession tae eik or remuiv uiser richts.", "userrights-changeable-col": "Groops that ye can chynge", "userrights-unchangeable-col": "Groops ye canna chynge", "userrights-conflict": "Conflict o uiser richts chynges! Please luikower n confirm yer chynges.", - "userrights-removed-self": "Ye'v successfulie remuived yer ain richts. N sae, ye'r naw langer able tae access this page.", "group": "Groop:", "group-user": "Uisers", "group-autoconfirmed": "Autæconfirmed uisers", @@ -1097,7 +1083,6 @@ "right-siteadmin": "Lock n lowse the database", "right-override-export-depth": "Export pages incluidin linked pages up til ae depth o 5", "right-sendemail": "Send Wab-mail til ither uisers", - "right-passwordreset": "See passwaird reset wab-mails", "newuserlogpage": "Uiser cræftin log", "newuserlogpagetext": "This is ae log o uiser cræftins.", "rightslog": "Uiser richts log", @@ -1271,7 +1256,7 @@ "uploaddisabledtext": "File uplaids ar disabled.", "php-uploaddisabledtext": "File uplaids ar disabled in PHP.\nPlease check the file_uploads settin.", "uploadscripted": "This file hauds HTML or script code that micht be wranglie interpretit bi ae wab brouser.", - "uploadscriptednamespace": "This SVG file contains aen illegal namespace \"$1\"", + "uploadscriptednamespace": "This SVG file contains aen illegal namespace \"<nowiki>$1</nowiki>\"", "uploadinvalidxml": "The XML in the uplaided file coudna be parsed.", "uploadvirus": "The file hauds a virus! Details: $1", "uploadjava": "The file is ae ZIP file that contains ae Java .class file.\nUplaidin Java files isna permitit cause thay can cause secureetie restreections tae be bypassed.", @@ -2997,7 +2982,6 @@ "logentry-managetags-delete": "$1 {{GENDER:$2|deletit}} the tag \"$4\" (remuived frae $5 {{PLURAL:$5|reveesion or log entry|reveesions an/or log entries}})", "log-name-tag": "Tag log", "rightsnone": "(nane)", - "revdelete-summary": "eedit the ootline", "feedback-adding": "Eikin feedback til page...", "feedback-bugcheck": "Wunnerfu! Just check that it's na awreadie yin o the [$1 knawn bugs].", "feedback-bugnew": "Ah checkt. Report ae new bug", @@ -3013,52 +2997,12 @@ "feedback-thanks": "Thanks! Yer feedback haes been posted til the page \"[$2 $1]\".", "searchsuggest-search": "Rake", "searchsuggest-containing": "containin...", - "api-error-badaccess-groups": "Ye'r na permittit tae uplaid files til this wiki.", "api-error-badtoken": "Inby mistak: Bad token.", - "api-error-copyuploaddisabled": "Uplaidin bi URL is disabled oan this server.", - "api-error-duplicate": "Thaur {{PLURAL:$1|is anither file|ar some ither files}} awreadie oan the site wi the same content.", - "api-error-duplicate-archive": "Thaur {{PLURAL:$1|wis anither file|were some ither files}} awreadie oan the site wi the same content, but {{PLURAL:$1|it wis|thay were}} delytit.", - "api-error-empty-file": "The file that ye haunnit in wis tuim.", "api-error-emptypage": "Cræftin new, tuim pages isna permittit.", - "api-error-fetchfileerror": "Internal mistak: Sommit went wrang while fetchin the file.", - "api-error-fileexists-forbidden": "Ae file wi the name \"$1\" awreadie exeests, n canna be owerwritten.", - "api-error-fileexists-shared-forbidden": "Ae file wi the name \"$1\" awreadie exeests in the shaired file reposeetair, n canna be owerwritten.", - "api-error-file-too-large": "The file that ye haunnit in wis ower muckle.", - "api-error-filename-tooshort": "The filename is ower short.", - "api-error-filetype-banned": "This type o file is banned.", - "api-error-filetype-banned-type": "$1 {{PLURAL:$4|isna ae permittit file type|arna permittit file types}}. Permittit {{PLURAL:$3|file type is|file types ar}} $2.", - "api-error-filetype-missing": "The filename is missin aen extension.", - "api-error-hookaborted": "The modeefication that ye gave makin ae gae wis abortit bi aen extension.", - "api-error-http": "Internal mistak: Onable tae connect til server.", - "api-error-illegal-filename": "The filename isna permitit.", - "api-error-internal-error": "Internal mistak: Sommit went wrang wi processin yer uplaid oan the wiki.", - "api-error-invalid-file-key": "Internal mistak: File wisna foond in temparie storage.", - "api-error-missingparam": "Internal mistak: Missin boonds oan request.", - "api-error-missingresult": "Internal mistak: Coudna determine gif the copie succeeded.", - "api-error-mustbeloggedin": "Ye maun be loggit in tae uplaid files.", - "api-error-mustbeposted": "Internal mistak: Request needs HTTP POST.", - "api-error-noimageinfo": "The uplaid succeeded, bit the server didna gie us onie information aneat the file.", - "api-error-nomodule": "Internal mistak: Naw uplaid module set.", - "api-error-ok-but-empty": "Internal mistak: Naw response fae server.", - "api-error-overwrite": "Owerwritin aen exeestin file isna permitit.", - "api-error-stashfailed": "Internal mistak: Server failed tae store temparie file.", "api-error-publishfailed": "Internal mistak: Server failed tae publeesh temparie file.", - "api-error-stasherror": "Thaur wis ae mistak while uplaidin the file tae stash.", - "api-error-stashedfilenotfound": "The stashed file wis no foond whan attemptin tae uplaid it fae the stash.", - "api-error-stashpathinvalid": "The path that the stashed file shid hae been foond at wis no valid.", - "api-error-stashfilestorage": "Thaur wis ae mistak in storin the file in the stash.", - "api-error-stashzerolength": "The server coudna stash the file, cause it haed zero langth.", - "api-error-stashnotloggedin": "Ye maun be loggit in tae hain files in the uplaid stash.", - "api-error-stashwrongowner": "The file that ye were attemptin tae access in the stash disna belang tae ye.", - "api-error-stashnosuchfilekey": "The file key that ye were attemptin tae access in the stash disna exeest.", - "api-error-timeout": "The server didna respond wiin the expectit time.", - "api-error-unclassified": "Aen onkent mistake occurred.", - "api-error-unknown-code": "Onknawn mistak: \"$1\".", - "api-error-unknown-error": "Internal mistak: Sommit went wrang whan uplaidin yer file.", + "api-error-stashfailed": "Internal mistak: Server failed tae store temparie file.", "api-error-unknown-warning": "Onknawn warnishment: \"$1\".", "api-error-unknownerror": "Onknawn mistak: \"$1\".", - "api-error-uploaddisabled": "Uplaidin is disabled oan this wiki.", - "api-error-verification-error": "This file micht be rotten, or hae the wrang extension.", "duration-seconds": "$1 {{PLURAL:$1|seicont|seiconts}}", "duration-minutes": "$1 {{PLURAL:$1|minute|minutes}}", "duration-hours": "$1 {{PLURAL:$1|hoor|hoors}}", diff --git a/languages/i18n/sd.json b/languages/i18n/sd.json index 037258d3a5..95495576ca 100644 --- a/languages/i18n/sd.json +++ b/languages/i18n/sd.json @@ -738,8 +738,6 @@ "prefs-rendering": "حليو", "saveprefs": "سانڍيو", "prefs-editing": "سنوارڻ", - "rows": "قطارون:", - "columns": "ڪالمَ:", "searchresultshead": "ڳولا", "stub-threshold-sample-link": "نمونو", "stub-threshold-disabled": "غيرفعال", @@ -1072,6 +1070,7 @@ "sharedupload-desc-here": "ھي فائيل $1 مان آھي Û½ ٻين رٿائن پاران Ù¾Ú» استعمال ٿي سگھي ٿو. تشريح انجي [[$2 جو تشريحي صفحو]] ھيٺان ڏنل آھي.", "uploadnewversion-linktext": "هن فائيل جو نئون پرت چاڙهيو", "shared-repo-from": "$1 کان", + "shared-repo-name-wikimediacommons": "وڪيميڊيا ڪامنز", "upload-disallowed-here": "توھان ھن فائيل مٿان لکي نہ ٿا سگھو.", "filerevert-comment": "سبب:", "filerevert-submit": "واپس ورايو", @@ -1102,6 +1101,7 @@ "statistics-articles": "موادي صفحا", "statistics-pages": "صفحا", "statistics-files": "چاڙهيل فائيل", + "statistics-edits": "{{SITENAME}} جي ÙºÚ¾Ú» کان صفحن Û¾ ڪيل سموريون ترميمون", "statistics-edits-average": "سراسري ترميمون في صفحو", "statistics-users": "کاتيدار [[Special:ListUsers|يُوزرس]]", "statistics-users-active": "سرگرم يُوزرس", @@ -1762,9 +1762,6 @@ "feedback-submit": "جمع ڪرايو", "feedback-thanks-title": "توهان جي مهرباني!", "searchsuggest-search": "ڳوليو {{SITENAME}}", - "api-error-filename-tooshort": "فائيل‌نانءَُ هيڪاندو ننڍو آهي.", - "api-error-unclassified": "ڪا اڻجاتل چُڪَ واقع ٿي.", - "api-error-unknown-code": "اڻڄاتل چُڪَ: \"$1\".", "api-error-unknown-warning": "اڻڄاتل چتاءُ: \"$1\".", "api-error-unknownerror": "اڻڄاتل چُڪَ: \"$1\".", "expand_templates_output": "نتيجو", diff --git a/languages/i18n/sdh.json b/languages/i18n/sdh.json index 86d1f669a2..5676eee44e 100644 --- a/languages/i18n/sdh.json +++ b/languages/i18n/sdh.json @@ -81,6 +81,7 @@ "mypage": "پەڕە", "mytalk": "وەتوویش", "navigation": "ڕێدەرکردن", + "and": " و", "qbfind": "پیا بکە", "qbbrowse": "بگەرد", "qbedit": "وێراشتە", @@ -91,8 +92,10 @@ "actions": "کردارەگان", "namespaces": "شوونناوەگان", "variants": "شێوەزارەگان", + "navigation-heading": "منۆێ ڕێدەرکردن", "errorpagetitle": "غەڵەت", "returnto": "بەورەو ئڕاێ $1.", + "tagline": "لە {{SITENAME}}", "help": "یارمەتی", "search": "مینە", "searchbutton": "مینە", @@ -123,6 +126,7 @@ "jumptonavigation": "ڕێدەرکردن", "jumptosearch": "مینە", "aboutsite": "سەبارەت وە {{SITENAME}}", + "aboutpage": "Project:لەوارەی", "copyrightpage": "{{ns:project}}:مافەیل لەوەرگرتن", "currentevents": "ڕووداوەیل ئێرەنگەیی", "currentevents-url": "Project:ڕووداوەیل ئێرەنگەیی", @@ -163,6 +167,7 @@ "nstab-mediawiki": "پەیام", "nstab-help": "پەڕەێ کۆمەک", "nstab-category": "پول", + "mainpage-nstab": "دەسپێک", "missing-article": "دەیتابەیسەگە نەتۊەنست دەق پەڕەێگ وە ناو «$1» $2 پێیابکەێد Ú© ئەشێ پێیابکردیاتاد.\n\nئیە فرەتر لە مدووێ وەدۊاچین بەستیارێگ جیاواز یادیرۆک کۆنەێ پەڕەێگ سڕیاێ ڕوو دەێد.\n\nئەگەر لەێوا نیە، ئەوە گەھا گرفتێگ لەێ نەرمامێرە پێیاکردیەسە.\nتکایە ئیە وە ئاماژەدان وە ناونیشان URLـەگەیەو وە [[Special:ListUsers/sysop|وەڕێوەوەرێگ]] ڕاپۆرت بدە.", "missingarticle-rev": "(نسخە#: $1)", "badtitle": "ناونیشان خراو", @@ -199,6 +204,7 @@ "loginlanguagelabel": "زوان: $1", "pt-login": "بچووە ناو", "pt-login-button": "بچووە ناو", + "pt-createaccount": "ھەژمار درس بکە", "oldpassword": "تێپەڕوشەێ قەدیمی:", "newpassword": "تێپەڕوشەێ نوو:", "retypenew": "تێپەڕوشەێ نوو دوبارە بنۊسەو:", @@ -296,6 +302,7 @@ "searchprofile-images-tooltip": "مینە ئڕاێ پەڕگەگان", "searchprofile-everything-tooltip": "لە گشت ناوەرۆکێگ مینە بکە (تەنانەت پەڕەگان وتوویشیش)", "searchprofile-advanced-tooltip": "مینە لەناو شوونناوە دڵخوازەگان", + "search-result-size": "$1 ({{PLURAL:$2|یەک وشە|$2 وشە}})", "search-redirect": "(ڕەوانەکەر $1)", "search-section": "(بەش $1)", "search-suggest": "ئایا مەبەستت ئیە بۊ: $1", @@ -325,6 +332,7 @@ "group-all": "(گشت)", "right-read": "خوەنین پەڕەگان", "right-edit": "وێراشتەکردن پەڕەگان", + "right-writeapi": "ئەوکاربردن API ئەڕاێ نۊساین", "newuserlogpage": "پێرست درسکردن ئەوکاربەر", "action-edit": "ئەی پەڕە وێراشتە بکە", "nchanges": "$1 {{PLURAL:$1|گووڕانکاری}}", @@ -344,9 +352,13 @@ "rcshowhidepatr": "وێراشتە نەگەردیاێەگان $1", "rcshowhidemine": "وێراشتەگانم $1", "rclinks": "دۊایین $1 گووڕانکاری $2 ڕووژ ویەردە نیشان بدە<br />$3", + "diff": "جیاوازی", "hist": "دیرۆک", "hide": "بشارەو", "minoreditletter": "بێجگە", + "newpageletter": "ن", + "boteditletter": "بۆت", + "rc-change-size-new": "$1 {{PLURAL:$1|بایت}} پاش گووڕانکاری", "rc-enhanced-expand": "وردەکاریەگان نیشان بدە", "rc-enhanced-hide": "وردەکاریەگان بشارەو", "recentchangeslinked": "گووڕانکاریە پەیوەندیدارەگان", @@ -387,6 +399,7 @@ "statistics-pages": "پەڕەیل", "pageswithprop-submit": "بچوو", "brokenredirects-edit": "وێراشتە", + "nbytes": "$1 {{PLURAL:$1|بایت|بایت}}", "prefixindex": "گشت پەڕەگان وە پێشگرەو", "protectedpages-page": "پەڕە", "protectedpages-unknown-timestamp": "نەناسریاێ", @@ -435,6 +448,7 @@ "undelete-show-file-submit": "بەڵێ", "namespace": "شوونناوەگان", "invert": "ھەڵوژیاێەگان وەزێزەو بکە", + "blanknamespace": "(سەرەکی)", "contributions": "بەشدارییەگان {{GENDER:$1|ئەوکاربەر}}", "contributions-title": "بەشداریەگان ئەوکاربەر $1", "mycontris": "بەشداریەیل", @@ -495,6 +509,7 @@ "tooltip-pt-mycontris": "پێرست بەشداریەیلت", "tooltip-pt-login": "پێشنیار ئەوپیت کریەێد بچیدە ناو؛ ھەرچەن زووری نیە", "tooltip-pt-logout": "دەرچین", + "tooltip-pt-createaccount": "داوەت لەلیت بووت Ú© ھەژمارێگ درس بکەیت و بچیتە ناو، هەرچەن ئیە وە مەیل خوەتە", "tooltip-ca-talk": "وەتوویش سەبارەت وە ناوەڕۆک پەڕە", "tooltip-ca-edit": "تۊەنی وێراشتەێ ئەی پەڕەیە بکەید. تکایە وەر لە پاشدەسکردن دوگمەێ پێشدۊنن ئەوکاربوەێن.", "tooltip-ca-addsection": "بەشێگ نوو دەس پی بکە", @@ -521,12 +536,13 @@ "tooltip-feed-atom": "خواردەمەنی ئەتۆم ئڕاێ ئەی پەڕە", "tooltip-t-contributions": "پێرست بەشداریەگان ئەی ئەوکاربەر", "tooltip-t-emailuser": "ئیمەیلێگ بنارە ئڕاێ ئەی ئەوکاربەرە", + "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-special": "ئیە پەڕەێگ تایبەتە و وێراشتە نیەکریەێت", "tooltip-ca-nstab-project": "دۊنن پەڕەێ پرۆژە", "tooltip-ca-nstab-image": "دۊنن پەڕەێ پەڕگە", "tooltip-ca-nstab-template": "دۊنن قاڵبەگە", @@ -541,6 +557,7 @@ "tooltip-rollback": "«گەڕانن» گووڕانکاری/گووڕانکاریەگان ئەی پەڕە وە یەک کرتە گەڕانێدەو ئڕاێ دۊایین بەشداریکەر", "tooltip-undo": "«بەتاڵکردن» ئەی گووڕانکاریە گووڕنێدەو و فۆرم وێراشتەکردن لە شێوەی پێشدۊنن وازەو کەێد. ئەی جوورە پووڕێد مدووێگ لە کورتەێ وێراشتە بنۊسریەێد.", "tooltip-summary": "کۆرتەێگ لە لی بنۊسە", + "pageinfo-toolboxlink": "زانیاری پەڕە", "pageinfo-redirectsto-info": "زانیاری", "pageinfo-contentpage-yes": "بەڵێ", "pageinfo-protect-cascading-yes": "بەڵێ", @@ -550,6 +567,9 @@ "file-nohires": "رەزۆلوشن سەرتر لەیە لە وەردەستەو نیە.", "svg-long-desc": "پەڕگەێ SVG، وە ناو $1 × $2 پیکسڵ، قەوارەێ پەڕگە: $3", "show-big-image": "پەڕگەێ رەسەن", + "show-big-image-preview": "قەوارەێ ئەی پێشدۊنینە: $1.", + "show-big-image-other": "{{PLURAL:$2|ڕزێلووشن|ڕزێلووشنەیل}} تر: $1.", + "show-big-image-size": "$1 لە $2 پیکسەڵ", "ilsubmit": "مینە", "bad_image_list": "فۆرمەت وە شێوەێ خوارەسە:\n\nتەنیا ئەو باوەتەیلە Ú© پێرست کریانە (واتە ئەو ھێڵەیلە Ú© وە * دەس پێ کەن) لە وەر چاون.\nیەکەم بەسیار لە سەر ھەر ھێڵێگ، ئەشێ بەسیار فایلێگ خراو بوود.\nگشت بەسیارەگان دۊاێ ئەوە لە ئەو ھێڵە، چۊ نائاسایی(ئستسنا) تیەنە ئەژمار.", "metadata": "متادەیتا", @@ -599,13 +619,15 @@ "specialpages": "پەڕە تایوەتەگان", "external_image_whitelist": " #ئەی ھێڵە ھەر وە ئەی جوورە Ú© ھەس، وەر بدەین<pre>\n#رستە وەنەزمەگان (regular expression) (تەنیا ئەو بەشە کە لە نێوان // جێ گرێد) لە خوارەو بنەین\n#ئیانە وەرد نیشانی ئینترنتی وێنەیل دەرەکی بەسیار دریای (hotlinked) چەترگیەن (تەتبیق دریەن).\n#ئەوانە Ú© چەترگیانە، چۊ وێنە نیشان دریەن؛ وەگەرنە تەنیا بەسیارێگ وە وێنە نیشان دەریەێد.\n#ئەو ھێڵەیلە وە # دەس پێ کەن، جوور شرۆڤە (comments) گیریەنە وەر چەو\n#ئەی ھێڵەیلە وە گەورە و بۊچگی پیتەگان ھەستیارە (case-insensitive)\n\n#گشت رستە وەنەزمەگان (regex) لە ژۊەر ئەی ھێڵە بنەین. ئەی ھێڵ ھەر وە ئەی جوورە کە ھەس، وەر بدەین</pre>", "tag-filter": "پاڵووین [[Special:Tags|تاگ]]:", + "tag-list-wrapper": "([[Special:Tags|{{PLURAL:$1|تاگ|تاگەیل}}]]: $2)", "tags-active-yes": "بەڵێ", "tags-active-no": "نە", "tags-edit": "وێراشتە", "htmlform-no": "نە", "htmlform-yes": "بەڵێ", + "logentry-newusers-create": "ھەژمار ئەوکاربەری $1 {{GENDER:$2|درس کریا}}", "feedback-message": "پەیام:", - "searchsuggest-search": "مینە", + "searchsuggest-search": "لە {{SITENAME}} مینە بکە", "expand_templates_ok": "باشە", "pagelang-name": "پەڕە", "pagelang-language": "زوان", diff --git a/languages/i18n/ses.json b/languages/i18n/ses.json index c3817d5fa2..687d41f69c 100644 --- a/languages/i18n/ses.json +++ b/languages/i18n/ses.json @@ -498,8 +498,6 @@ "passwordreset-emaildisabled": "Bataga alhaaley n' ka kaŋ wikiyoo ga.", "passwordreset-username": "Goykaw maa:", "passwordreset-domain": "Zunbudoo:", - "passwordreset-capture": "Cebe batagaa kaŋ hun woo ra?", - "passwordreset-capture-help": "Nda war na bataa woo Å¡ilbay, batagaa (nda Å¡iiyan Å¡ennikufal) ga cebe war se nd'a ga sanbandi goykaa do.", "passwordreset-email": "Bataga aderesu:", "passwordreset-emailtitle": "Kontu Å¡ilbawey {{SITENAME}} ga", "passwordreset-emailtext-ip": "Boro foo (sanda war da, nda IP aderesu $1) ceeci ka war\n Å¡enniufaloo barmay {{SITENAME}} ($4) se. Goykaa woo {{PLURAL:$3|kontoo ti}\n kaŋ ga hanga bataga aderesoo woo:\n\n $2\n\n{{PLURAL:$3|Å iiyan Å¡ennikufaloo woo|Å iiyan Å¡ennikufaley wey}} ga buu {{PLURAL:$5|zaari foo|zaari}} ra.\nWar ga hima ka huru nda Å¡ennifulal taaga dam sohõ. Nda boro waani ka ceeci ka woo tee\n nda war honga war Å¡ennikufal žeenaa, nda war Å¡i boona koyne\n ka Å¡ennikufal barmay,\n war ga hin ka Å¡aawaroo woo murayy nda soobay ka goy nda war\n Å¡ennikufal žeenaa. \\", @@ -884,8 +882,6 @@ "saveprefs": "Gaabu", "restoreprefs": "Tilasu kayandiyaney kul yeeti (dunbey kul ra)", "prefs-editing": "Goo ma fasal", - "rows": "Sorrawey:", - "columns": "Soofey:", "searchresultshead": "Ceeci", "stub-threshold": "Å iifa <a href=\"#\" class=\"stub\">zaa dobu</a> takari kayandiyan (cebsi hinna) se:", "stub-threshold-disabled": "Ga kay", @@ -978,13 +974,10 @@ "userrights-reason": "Dalil:", "userrights-no-interwiki": "War Å¡i nda fonda ka goykaw alhakey fasal wiki tanayaŋ ga.", "userrights-nodatabase": "Bayhayhugu $1 Å¡i bara wal'a Å¡ii gandaa ra. \\", - "userrights-nologin": "War ga hima ka [[Special:UserLogin|huru]] nda juwalkaw kontu ka goykaw alhakey noo.", - "userrights-notallowed": "War Å¡i nda fondo ka goykey alhakey dam wala k'i kaa.", "userrights-changeable-col": "Kondawey kaŋ war ga hin k'i barmay", "userrights-unchangeable-col": "Kondawey kaŋ war ga hin k'i barmay", "userrights-irreversible-marker": "$1*", "userrights-conflict": "Cerehooyan goykaw alhadey barmawey ra! Taare war barmawey guna boryo nd'a tabatandi.", - "userrights-removed-self": "War na war alhakey kaa ka timme. AdiÅ¡i, war Å¡i hin ka duu moɲoo woo koyne.", "group": "Konday:", "group-user": "Goykey", "group-autoconfirmed": "Goykaw boŋtabatantey", @@ -1073,7 +1066,6 @@ "right-siteadmin": "Bayrahugoo kufal nd'a feeri", "right-override-export-depth": "Moɲey kaataray kaŋ ra moo dobantey hala guusu 5 alkadar ga", "right-sendemail": "Bataga sanba goykaw taney do", - "right-passwordreset": "Å ennikufal yeetiyan batagawey guna", "newuserlogpage": "Goykaw teeyan ceebandu tiira", "newuserlogpagetext": "Goykaw teeyaney ceebandu tiira ti woo.", "rightslog": "Goykaw alhakey ceebandu tiira", @@ -1247,7 +1239,7 @@ "uploaddisabledtext": "Tuku zijandiyaney n' ka kay.", "php-uploaddisabledtext": "Tuku zijandiyaney n' ka kay PHP ra.\nTaare file_uploads kayandiyanoo koroÅ¡i.", "uploadscripted": "Tukoo woo goo nda HTML wala Å¡igira aÅ¡ariya kaŋ ga hima kaŋ maanaa dere interneti ceecikaw se.", - "uploadscriptednamespace": "SVC tukoo woo goo nda maafarru \"$1\" kaŋ Å¡i alhukum ra.", + "uploadscriptednamespace": "SVC tukoo woo goo nda maafarru \"<nowiki>$1</nowiki>\" kaŋ Å¡i alhukum ra.", "uploadinvalidxml": "XML kaŋ goo tuku zijantaa ra mana hin ka fesu-fesandi.", "uploadvirus": "Tukoo goo nda wirisi!\nÅ ilbayhayey: $1", "uploadjava": "Tukoo ti ZIP tuku kaŋ goo nda Java .class tuku.\nJava tukey zijandiyan Å¡i duu fondo zama i ga hin ka saajaw-sahãnte jejebuhayey hoo.", @@ -3161,52 +3153,12 @@ "feedback-thanks": "Foo nda goy! War willandoo n' ka wallafandi \"[$2 $1]\" moɲoo ga.", "searchsuggest-search": "Ceeci", "searchsuggest-containing": "goo nda…", - "api-error-badaccess-groups": "War Å¡i nda fondo ka tukey zijandi wikiyoo woo ga.", "api-error-badtoken": "Kunahere firka: Tokore laala.", - "api-error-copyuploaddisabled": "URL zijandiyan n' ka kay ferÅ¡ikaa woo ga.", - "api-error-duplicate": "{{PLURAL:$1|ti ti tuku tana $2}} kaŋ ga bara interneti nungoo ga ka ben nda gundakuna follokaa da.", - "api-error-duplicate-archive": "{{PLURAL:$1|ti ti tuku tana}} kaŋ ga bara interneti nungoo ga ka ben nda gundakuna follokaa da, amma {{PLURAL:$1|an' ka|in' ka}} tuusandi.", - "api-error-empty-file": "Tukoo kaŋ war n'a sanba mma koonu.", "api-error-emptypage": "Boro Å¡i hin ka moo taaga, koonuyaŋ tee.", - "api-error-fetchfileerror": "Kunahere firka: Haya foo mana boori tuku zaayan waate.", - "api-error-fileexists-forbidden": "Tuku nda \"$1\" maa ga bara ka ben, nda haya Å¡i hin ka hantumandi a boŋ.", - "api-error-fileexists-shared-forbidden": "Tuku nda \"$1\" maa ga bara ka ben tuku jiÅ¡idoo žemnate ra, nda haya Å¡i hin ka hantumandi a boŋ.", - "api-error-file-too-large": "Tukoo kaŋ war n'a sanba mma hansa ka beeri.", - "api-error-filename-tooshort": "Tukumaaɲoo ga hansa ka duura.", - "api-error-filetype-banned": "Tuku dumoo woo n' ka barrandi.", - "api-error-filetype-banned-type": "$1 {{PLURAL:$4|manti tuku dumi duɲante|manti tuku dumi duɲanteyaŋ}}. {{PLURAL:$3|Tuku dumi ti|Tuku dumi ti}} $2 ka duɲe.", - "api-error-filetype-missing": "Dobuyan foo ga kuma tukumaaɲoo ra.", - "api-error-hookaborted": "Dobuyan foo na barmayyanoo kaŋ war ceeci k'a tee say.", - "api-error-http": "Kunahere firka: Å i hin ka dobu ferÅ¡ikaa ga.", - "api-error-illegal-filename": "Tukumaaɲoo Å¡i nda fondo.", - "api-error-internal-error": "Kunahere firka: Haya foo mana boori kaŋ war ga soobay ka haya zijandi wikiyoo ga.", - "api-error-invalid-file-key": "Kunahere firka: Tukoo mana duwandi waati-duura jiÅ¡idoo ra.", - "api-error-missingparam": "Kunahere firka: Kayandiyan hãantey ga kuma.", - "api-error-missingresult": "Kunahere firka: Mana hin ka tabatandi wala bereyanoo tee ka boori.", - "api-error-mustbeloggedin": "War ga hima ka huru to tukey zijandey. \\", - "api-error-mustbeposted": "Kunahere firka: Hãayan ga HTTP WALLAFIYAN waažibandi. \\", - "api-error-noimageinfo": "Zijandiyanoo boori, amma ferÅ¡ikaa man'ir noo alhabar kul tukoo ga.", - "api-error-nomodule": "Kunahere firka: Zijandiyan dunbu kul mana kayandi.", - "api-error-ok-but-empty": "Kunahere firka: Zaabi kul Å¡i hun ferÅ¡ikaa do.", - "api-error-overwrite": "Boro Å¡i hin ka hantum tuku barante boŋ.", - "api-error-stashfailed": "Kunahere firka: FerÅ¡ika mongu ka waati-duura tuku yeeti.", "api-error-publishfailed": "Kunahere firka: FerÅ¡ika mongu ka waati-duura tuku wallafi.", - "api-error-stasherror": "Firka bangay kaŋ tuku ga zijandi titilaa boŋ.", - "api-error-stashedfilenotfound": "Tuku titilantaa mana duwandi waatoo kaŋ boro ceeci k'a zijandi ka hun titilaa ga.", - "api-error-stashpathinvalid": "Fondaa kaŋ ga tuku titilantaa hima ka duwandi Å¡i boori.", - "api-error-stashfilestorage": "Firka bangay waatoo kaŋ tukoo ga jisandi titilaa ra.", - "api-error-stashzerolength": "FerÅ¡ikaa mana hin ka tukoo deke, zama nga kuuyanoo ti yaada.", - "api-error-stashnotloggedin": "War ga hima ka tukey gaabu zijandi titilaa ra.", - "api-error-stashwrongowner": "War Å¡i tukoo din may kaŋ war cindi k'a ceeci titilaa ra.", - "api-error-stashnosuchfilekey": "Tukoo kaŋ war cindi k'a ceeci titilaa ra Å¡i bara.", - "api-error-timeout": "FerÅ¡ikaa mana tuuru waatoo kaŋ ga hima ra.", - "api-error-unclassified": "Firka Å¡ibayante bangay.", - "api-error-unknown-code": "Firka Å¡ibayante: \"$1\".", - "api-error-unknown-error": "Kunahere firka: Haya foo mana boori kaŋ war ceeci ka war tukoo zijandi.", + "api-error-stashfailed": "Kunahere firka: FerÅ¡ika mongu ka waati-duura tuku yeeti.", "api-error-unknown-warning": "Yaamar Å¡ibayante: \"$1\".", "api-error-unknownerror": "Firka Å¡ibayante: \"$1\".", - "api-error-uploaddisabled": "Zijandiyan n' ka kay wikiyoo woo ga. \\", - "api-error-verification-error": "A ga hin ka tee tukoo woo laybu, wal'a goo nda dobuyan laala.", "duration-seconds": "{{PLURAL:$1|Segondu}} $1", "duration-minutes": "{{PLURAL:$1|Miniti}} $1", "duration-hours": "{{PLURAL:$1|Guuru}} $1", diff --git a/languages/i18n/sh.json b/languages/i18n/sh.json index 6e3d91c545..b5b80bc517 100644 --- a/languages/i18n/sh.json +++ b/languages/i18n/sh.json @@ -12,7 +12,9 @@ "KWiki", "Matma Rex", "Srdjan m", - "Conquistador" + "Conquistador", + "Xð", + "Сербијана" ] }, "tog-underline": "Podvuci linkove:", @@ -129,7 +131,7 @@ "category_header": "Stranice u kategoriji \"$1\"", "subcategories": "Potkategorije", "category-media-header": "Medijske datoteke u kategoriji \"$1\"", - "category-empty": "''Ova kategorija trenutno ne sadrži članke ni medijske datoteke.''", + "category-empty": "<em>Ova kategorija trenutno ne sadrži članke ni medijske datoteke.</em>", "hidden-categories": "{{PLURAL:$1|Sakrivena kategorija|Sakrivene kategorije}}", "hidden-category-category": "Sakrivene kategorije", "category-subcat-count": "{{PLURAL:$2|Ova kategorija ima sljedeću $1 potkategoriju.|Ova kategorija ima {{PLURAL:$1|sljedeće potkategorije|sljedećih $1 potkategorija}}, od $2 ukupno.}}", @@ -198,7 +200,7 @@ "unprotectthispage": "Promijeni zaÅ¡titu za ovu stranicu", "newpage": "Nova stranica / Нова страница", "talkpage": "Razgovaraj o ovoj stranici - Разговарај о овој страници", - "talkpagelinktext": "Razgovor", + "talkpagelinktext": "razgovor", "specialpage": "Posebna stranica", "personaltools": "Lični alati", "articlepage": "Vidi stranicu sadržaja", @@ -323,7 +325,7 @@ "internalerror_info": "Interna greÅ¡ka: $1", "internalerror-fatal-exception": "Fatalna greÅ¡ka tipa \"$1\"", "filecopyerror": "Ne može se kopirati \"$1\" na \"$2\".", - "filerenameerror": "Ne može se promjeniti ime datoteke \"$1\" u \"$2\".", + "filerenameerror": "Ne mogu preimenovati datoteku \"$1\" u \"$2\".", "filedeleteerror": "Ne može se izbrisati datoteka \"$1\".", "directorycreateerror": "Nije moguće napraviti direktorijum \"$1\".", "directoryreadonlyerror": "Direktorij \"$1\" je samo za čitanje.", @@ -400,19 +402,12 @@ "externaldberror": "DoÅ¡lo je do greÅ¡ke pri vanjskoj autorizaciji baze podataka ili vam nije dopuÅ¡teno osvježavanje VaÅ¡eg vanjskog korisničkog računa.", "login": "Prijavi me - Пријави ме", "nav-login-createaccount": "Prijavi se / Registruj se", - "userlogin": "Prijavi se / Пријави се", - "userloginnocreate": "Prijavi se", "logout": "Odjava", "userlogout": "Odjavi se / Одјави се", "notloggedin": "Niste prijavljeni", "userlogin-noaccount": "Nemate račun?", "userlogin-joinproject": "Pridružite se {{SITENAME}}", - "nologin": "Nemate korisničko ime? '''$1'''.", - "nologinlink": "Izradi račun", "createaccount": "Izradi račun", - "gotaccount": "Imate račun? '''$1'''.", - "gotaccountlink": "Prijavite se / Пријавите се", - "userlogin-resetlink": "Zaboravili ste detalje vaÅ¡e prijave?", "userlogin-resetpassword-link": "Zaboravili ste lozinku?", "userlogin-helplink2": "Pomoć pri prijavljivanju", "userlogin-loggedin": "Već ste prijavljeni kao {{GENDER:$1|$1}}.\nKoristite donji obrazac da biste se prijavili kao drugi korisnik.", @@ -423,7 +418,6 @@ "createacct-another-email-ph": "Postavite E-mail adresu", "createaccountmail": "Koristite privremenu, slučajno stvorenu Å¡ifru/lozinku i poÅ¡aljite na navedenu adrеsu e-poÅ¡te", "createacct-realname": "Stvarno ime (opcionalno)", - "createaccountreason": "Razlog:", "createacct-reason": "Razlog", "createacct-reason-ph": "ZaÅ¡to stvarate novi račun", "createacct-submit": "Stvorite svoj račun", @@ -518,8 +512,6 @@ "passwordreset-emaildisabled": "Postavke E-maila su deaktivirane na ovoj wiki.", "passwordreset-username": "Korisničko ime:", "passwordreset-domain": "Domena:", - "passwordreset-capture": "Pogledati krajnji e-mail?", - "passwordreset-capture-help": "Ako označite ovu kućicu, e-mail s privremenom lozinkom će biti prikazana i poslata korisniku.", "passwordreset-email": "E-mail adresa:", "passwordreset-emailtitle": "Detalji računa na {{SITENAME}}", "passwordreset-emailtext-ip": "Netko (vjerovatno Vi, s IP adrese $1) je zatražio resetiranje vaÅ¡e lozinke/zaporke {{SITENAME}} ($4). Sljedeći {{PLURAL:$3|račun korisnika je|računi korisnika su}}\npovezani s ovom e-mail adresom:\n\n$2\n\n{{PLURAL:$3|Ova privremena lozinka|Ove privremene lozinke}} će isteći za {{PLURAL:$5|jedan dan|$5 dana}}.\nTrebate se prijaviti i odabrati novu lozinku. Ako je neko drugi napravio ovaj\nzahtjev, ili ako ste se sjetili VaÅ¡e početne lozinke, a ne želite je promijeniti, \nmožete zanemariti ovu poruku i nastaviti koristiti staru lozinku.", @@ -566,6 +558,7 @@ "minoredit": "Ovo je manje uređenje", "watchthis": "Prati ovu stranicu", "savearticle": "Spremi stranicu", + "savechanges": "Sačuvaj - Сачувај", "publishpage": "Objavi stranicu", "publishchanges": "Objavi izmjene", "preview": "Pregled", @@ -921,8 +914,6 @@ "saveprefs": "Snimi postavke", "restoreprefs": "Vrati sve na podrazumijevano (u svim odjeljcima)", "prefs-editing": "Uređivanje", - "rows": "Redova:", - "columns": "Kolona:", "searchresultshead": "Postavke rezultata pretrage", "stub-threshold": "Prag za formatiranje linkova ka stranicama u začetku ($1):", "stub-threshold-sample-link": "uzorak", @@ -973,7 +964,7 @@ "badsig": "LoÅ¡ sirovi potpis.\nProvjerite HTML tagove.", "badsiglength": "VaÅ¡ potpis je predug.\nMora biti manji od $1 {{PLURAL:$1|znaka|znaka|znakova}}.", "yourgender": "Kako želite da se predstavite?", - "gender-unknown": "Kad vas spominje, softver će pokuÅ¡ati koristiti srednji rod kad god je to moguće", + "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 ove preferencije nije obavezno.\nSoftver koristi ovu vrijednost kako bi vam se obratio i spomenuo vas drugima koristeći vaÅ¡ gramatički rod.\nOva informacija će biti javna.", @@ -1014,12 +1005,9 @@ "userrights-reason": "Razlog:", "userrights-no-interwiki": "Nemate dopuÅ¡tenja da uređujete korisnička prava na drugim wikijima.", "userrights-nodatabase": "Baza podataka $1 ne postoji ili nije lokalna baza.", - "userrights-nologin": "Morate se [[Special:UserLogin|prijaviti]] sa administratorskim računom da bi ste mogli postavljati korisnička prava.", - "userrights-notallowed": "VaÅ¡ račun nema privilegije da dodaje ili oduzima prava korisnika.", "userrights-changeable-col": "Grupe koje možete mijenjati", "userrights-unchangeable-col": "Grupe koje ne možete mijenjati", "userrights-conflict": "Sukob u izmjeni korisničkih prava! Molimo da razmotrite i potvrdite VaÅ¡e promjene.", - "userrights-removed-self": "UspjeÅ¡no ste uklonili vlastite prava. Zbog toga viÅ¡e niste u stanju pristupiti ovoj stranici.", "group": "Grupa:", "group-user": "Korisnici", "group-autoconfirmed": "Potvrđeni korisnici", @@ -1109,7 +1097,6 @@ "right-siteadmin": "Zaključavanje i otključavanje baze podataka", "right-override-export-depth": "Izvoz stranica uključujući povezane stranice do dubine od 5 linkova", "right-sendemail": "Slanje e-maila drugim korisnicima", - "right-passwordreset": "Pregled e-maila za obnavljanje lozinke", "right-managechangetags": "Napravi i briÅ¡i [[Special:Tags|oznake]] iz baze podataka", "right-applychangetags": "Primijeni [[Special:Tags|oznake]] na nečije izmjene", "right-changetags": "Dodavanje ili uklanjanje raznih [[Special:Tags|oznaka]] na pojedinačnim verzijama i unosima zapisnika", @@ -1307,7 +1294,7 @@ "uploaded-setting-handler-svg": "SVG datoteka koja koristi atribut \"handler\" sa udaljenom/podatkovnoj/skriptnom vrijednosti je blokirana. Pronađeno <code>$1=\"$2\"</code> u postavljenoj SVG datoteci.", "uploaded-remote-url-svg": "SVG datoteka koja postavlja stilski atribut koristeći se vanjskim linkom je blokiranja. Pronađeno <code>$1=\"$2\"</code> u postavljenoj SVG datoteci.", "uploaded-image-filter-svg": "Pronađen slikovni filter sa URLom: <code><$1 $2=\"$3\"></code> u postavljenoj SVG datoteci.", - "uploadscriptednamespace": "Ova SVG datoteka sadrži pogreÅ¡an imenski prostor „$1“", + "uploadscriptednamespace": "Ova SVG datoteka sadrži pogreÅ¡an imenski prostor „<nowiki>$1</nowiki>“", "uploadinvalidxml": "XML u postavljenoj datoteci nije mogao biti parsiran.", "uploadvirus": "Fajl sadrži virus! Detalji: $1", "uploadjava": "Datoteka je ZIP datoteka koja sadrži Java .class datoteku.\nPostavljanje Java datoteka nije dopuÅ¡teno, jer one mogu prouzrokovati zaobilaženje sigurnosnih ograničenja.", @@ -3027,7 +3014,6 @@ "logentry-rights-autopromote": "$1 {{GENDER:$2|je automatski unaprijeđen|je automatski unaprijeđena}} iz $4 u $5", "logentry-upload-upload": "$1 {{GENDER:$2|postavio|postavila}} je $3", "rightsnone": "(nema)", - "revdelete-summary": "sažetak izmjene", "feedback-adding": "Dodajem povratne informacije na stranicu...", "feedback-bugcheck": "Izvrsno! Molimo provjerite da se ne radi o nekom [$1 poznatom \"bugu\"].", "feedback-bugnew": "Provereno. Prijavi novu greÅ¡ku", @@ -3043,44 +3029,12 @@ "feedback-thanks": "Hvala! VaÅ¡a povratna informacija je postavljena na stranicu „[$2 $1]“.", "searchsuggest-search": "Traži", "searchsuggest-containing": "sadrži...", - "api-error-badaccess-groups": "Nemate ovlasti da postavljate datoteke na ovoj wiki.", "api-error-badtoken": "UnutraÅ¡nja greÅ¡ka: token nije ispravan.", - "api-error-copyuploaddisabled": "Postavljanja putem URL-a su onemogućena na ovom serveru.", - "api-error-duplicate": "Već postoji {{PLURAL:$1|druga datoteka|druge datoteke}} na ovoj stranici sa istim sadržajem", - "api-error-duplicate-archive": "{{PLURAL:$1|Postojala je druga datoteka|Postojale su neke druge datoteke}} na sajtu sa istim sadržajem, ali {{PLURAL:$1|je obrisana|su obrisane}}.", - "api-error-empty-file": "Datoteka koju ste poslali je bila prazna.", "api-error-emptypage": "Stvaranje novih praznih stranica nije dozvoljeno.", - "api-error-fetchfileerror": "UnutraÅ¡nja greÅ¡ka: pojavio se neki problem pri dobijanju podataka o datoteci.", - "api-error-fileexists-forbidden": "Već postoji datoteka s imenom „$1“ i ne može da se zamijeni.", - "api-error-fileexists-shared-forbidden": "Već postoji datoteka s imenom „$1“ u zajedničkoj riznici i ne može da se zamijeni.", - "api-error-file-too-large": "Datoteka koju ste poslali je bila prevelika.", - "api-error-filename-tooshort": "Ime datoteke je prekratko.", - "api-error-filetype-banned": "Ova vrsta datoteke je zabranjena.", - "api-error-filetype-banned-type": "$1 {{PLURAL:$4|je zabranjena vrsta datoteke|su zabranjene vrste datoteka}}. {{PLURAL:$3|Dozvoljena je|Dozvoljene su}} $2.", - "api-error-filetype-missing": "Datoteci nedostaje nastavak.", - "api-error-hookaborted": "Izmjena koji ste pokuÅ¡ali načiniti je otkazana preko \"kuke\" proÅ¡irenja mediawiki softvera.", - "api-error-http": "UnutraÅ¡nja greÅ¡ka: ne može se spojiti na server.", - "api-error-illegal-filename": "Ime datoteke nije dopuÅ¡teno.", - "api-error-internal-error": "UnutraÅ¡nja greÅ¡ka: pojavio se neki problem sa obradom vaÅ¡eg postavljanja na wiki.", - "api-error-invalid-file-key": "UnutraÅ¡nja greÅ¡ka: datoteka nije pronađena u privremenom skladiÅ¡tu.", - "api-error-missingparam": "UnutraÅ¡nja greÅ¡ka: nedostaju parametri u zahtjevu.", - "api-error-missingresult": "UnutraÅ¡nja greÅ¡ka: ne može se otkriti da li je kopiranje uspjelo.", - "api-error-mustbeloggedin": "Morate biti prijavljeni da biste postavljali datoteke.", - "api-error-mustbeposted": "UnutraÅ¡nja greÅ¡ka: ne koristi se ispravan HTTP metod.", - "api-error-noimageinfo": "Postavljanje je uspjelo, ali server nam nije dao nikakvu informaciju o datoteci.", - "api-error-nomodule": "UnutraÅ¡nja greÅ¡ka: nije postavljen modul za postavljanje.", - "api-error-ok-but-empty": "UnutraÅ¡nja greÅ¡ka: nema odgovora od servera.", - "api-error-overwrite": "Pisanje preko postojeće datoteke nije dopuÅ¡teno.", - "api-error-stashfailed": "UnutraÅ¡nja greÅ¡ka: server nije mogao da spremi privremenu datoteku.", "api-error-publishfailed": "UnutraÅ¡nja greÅ¡ka: server nije mogao da spremi privremenu datoteku.", - "api-error-timeout": "Server nije odgovorio unutar očekivanog vremena.", - "api-error-unclassified": "Desila se nepoznata greÅ¡ka", - "api-error-unknown-code": "Nepoznata greÅ¡ka: \"$1\"", - "api-error-unknown-error": "UnutraÅ¡nja greÅ¡ka: desila se neka greÅ¡ka pri pokuÅ¡aju postavljanja vaÅ¡e datoteke.", + "api-error-stashfailed": "UnutraÅ¡nja greÅ¡ka: server nije mogao da spremi privremenu datoteku.", "api-error-unknown-warning": "Nepoznato upozorenje: $1", "api-error-unknownerror": "Nepoznata greÅ¡ka: \"$1\"", - "api-error-uploaddisabled": "Postavljanje je onemogućeno na ovoj wiki.", - "api-error-verification-error": "Ova datoteka je možda oÅ¡tećenja ili ima pogreÅ¡an nastavak.", "duration-seconds": "$1 {{PLURAL:$1|sekunda|sekunde}}", "duration-minutes": "$1 {{PLURAL:$1|minuta|minuta}}", "duration-hours": "$1 {{PLURAL:$1|sat|sati}}", diff --git a/languages/i18n/shn.json b/languages/i18n/shn.json index eafaea62c2..fd6462a2d0 100644 --- a/languages/i18n/shn.json +++ b/languages/i18n/shn.json @@ -129,7 +129,7 @@ "category_header": "ၼႃႈလိၵ်ႈၼႂ်းလိူင်ႈ \"$1\"", "subcategories": "ၵိင်ႇၽႄလိူင်ႈ", "category-media-header": "သိုဝ်ႇၼႂ်းလိူင်ႈ \"$1\"", - "category-empty": "<em> လိူင်ႈဢၼ်ၼႆႉ ၸင်ႇၼႆႉ ဢမ်ႇမီးၼႃႈလိၵ်ႈ ဢမ်ႇၼၼ် သိုဝ်ႈဢီႈသင်ဝႆႉ</em>", + "category-empty": "<em> လိူင်ႈဢၼ်ၼႆႉ ယၢမ်းလဵဝ် ဢမ်ႇပႆႇမီး ၼႃႈလိၵ်ႈ ဢမ်ႇၼၼ် သိုဝ်ႇသင်ဝႆႉ</em>", "hidden-categories": "{{PLURAL:$1|လိူင်ႈဢၼ်လပ်ႉဝႆႉ |လိူင်ႈၸိူဝ်း ဢၼ်လပ်ႉဝႆႉ}}", "hidden-category-category": "လိူင်ႈ ဢၼ်လပ်ႉသိူင်ႇဝႆႉ", "category-subcat-count": "{{PLURAL:$2|ၼႂ်းလိူင်ႈဢၼ်ၼႆႉ မီးၵိင်ႇၽႄလိူင်ႈၼႆႉ ၸိူင်ႉၼႆၵွၺ်း|ၼႂ်းလိူင်ႈၼႆႉ မီး This category has the following {{PLURAL:$1|ၵိင်ႇၽႄလိူင်ႈ|$1 ၵိင်ႇၽႄလိူင်ႈတင်းလၢႆး}}, ၼႂ်းၵႃႊ $2 တင်းသဵင်ႈတင်းမူတ်း}}", @@ -174,6 +174,7 @@ "searcharticle": "သိုပ်ႇၵႂႃႇ", "history": "ပိုၼ်းၼႃႈလိၵ်ႈ", "history_short": "ပိုၼ်း", + "history_small": "ပိုၼ်း", "updatedmarker": "ပဵၼ်ဢၢပ်ႉတိတ်ႉဝႆႉ ၸဵမ်မိူဝ်ႈၶႃႈၵႂႃႇဢႅဝ်ႇၵမ်းလိုၼ်းသုတ်း", "printableversion": "တွၼ်ႈတႃႇဢိတ်ႇဢွၵ်ႇ", "permalink": "ႁဵင်းၵွင်ႉ မၼ်ႈၵိုမ်း", @@ -198,7 +199,7 @@ "unprotectthispage": "လႅၵ်ႈလၢႆႊ ၵၢၼ်ႁေႉၵင်ႈ ၼႃႈလိၵ်ႈၼႆႉ", "newpage": "ၼႃႈလိၵ်ႈမႂ်ႇ", "talkpage": "ဢုပ်ႇလိူၺ်ႈ ၼႃႈလိၵ်ႈၼႆႉ", - "talkpagelinktext": "တွၼ်ႊဢုပ်ႇ", + "talkpagelinktext": "တွၼ်ႈဢုပ်ႇ", "specialpage": "ၼႃႈလိၵ်ႈ ၶိုၵ်ႉတွၼ်း", "personaltools": "ၶိူင်ႈ​သုၼ်ႇ​လဵ​ဝ်", "articlepage": "တူၺ်း ၼႃႈလိၵ်ႈ ၼမ်းၼႂ်း", @@ -206,6 +207,7 @@ "views": "လူတူၺ်း", "toolbox": "ၶိူင်ႈၵမ်ႉၵႅမ်", "tool-link-userrights": "လႅၵ်ႈလၢႆႈ {{GENDER:$1|ၽူႈၸႂ်ႉတိုဝ်း}} ၸုမ်း", + "tool-link-userrights-readonly": "တူၺ်း {{GENDER:$1|ၽူႈၸႂ်ႉတိုဝ်း}} ၸုမ်း", "tool-link-emailuser": "သူင်ႇဢီးမေးလ်ဢၼ်ၼႆႉ {{GENDER:$1|ၽူႈၸႂ်ႉတိုဝ်း}}", "userpage": "တူၺ်းၼႃႈလိၵ်ႈၽူႈၸႂ်ႉတိုဝ်း", "projectpage": "တူၺ်းၼႃႈလိၵ်ႈ ပရေႃးၵျႅၵ်ႉ", @@ -267,7 +269,7 @@ "viewsourceold": "တူၺ်း ငဝ်ႈငႃႇ", "editlink": "မႄးထတ်း", "viewsourcelink": "တူၺ်း ငဝ်ႈငႃႇ", - "editsectionhint": "မူၼ်ႉမႄး တွၼ်ႊ :$1", + "editsectionhint": "မူၼ်ႉမႄး တွၼ်ႈ :$1", "toc": "ၼမ်းၼႂ်း", "showtoc": "ၼႄ", "hidetoc": "သိူင်ႇ", @@ -317,7 +319,7 @@ "enterlockreason": "ပေႃႉသႂ်ႇပၼ် လွင်ႈတၢင်းတႃႇ တေၶတ်းဝႆႉ၊ ႁႂ်ႈပႃးပၼ် ၸဵမ်ၶၢဝ်းယၢမ်း လၢမ်းဢၼ်ဝႃႈ လွင်ႈၶတ်းဝႆႉၼႆႉ တေဢၢပ်ႈၶိုၼ်းပိုတ်ႇပၼ် မိူဝ်ႈလႂ် ဢၼ်ဝႃႈၼၼ်ႉ။", "readonlytext": "ယွင်ၶေႃႈမုၼ်းၼႆႉ ယၢမ်းလဵဝ် ထုၵ်ႇၶတ်းဝႆႉတႃႇ တေထႅမ်သႂ်ႇဢၼ်မႂ်ႇ လႄႈ တႃႇမူၼ်ႉမႄး တၢင်ႇလွင်ႈတၢင်ႇၸိူဝ်း၊ မၼ်းတေဢၢပ်ႈပဵၼ်လူၺ်ႈ လွင်ႈဝႃႈ တိုၵ်ႉမူၼ်ႉမႄး ယွင်ၶေႃႈမုၼ်း ၼင်ႇၵႆႉႁဵတ်း။ ဝၢႆးသေၼၼ်ႉတႄႉ တေၶိုၼ်းႁဵတ်းၵၢၼ် မိူၼ်ၵဝ်ႇယူႇ။\n\nဢၼ်ပဵၼ် ၽူႈၵုမ်းၵမ်ပိူင်ႈသၢင်ႈ ၵေႃႉဢၼ်လႆႈ ၶတ်းၼႆႉဝႆႉၼၼ်ႉ မၼ်းပၼ်လွင်ႈသပ်းလႅင်းဝႆႉဝႃႈ : $1", "missing-article": "ယွင်ၶေႃႈမုၼ်း ဢမ်ႇသွၵ်ႈႁႃႁၼ်လႆႈ ၽိုၼ်ၼႃႈလိၵ်ႈ ဢၼ်ထုၵ်ႇလီသွၵ်ႈထူပ်းႁၼ် ဢၼ်မီးၸိုဝ်ႈဝႃႈ \"$1\" $2 ။\n\nၼႆႉမၼ်းဢၢပ်ႈပဵၼ်ဝႆႉ ဢၼ်ၸိူဝ်းၼၼ်ႉ မၼ်းၵဝ်ႇၵႄႇၼႃႇလႄႈသင် ဢၼ်ပဵၼ် ပိုၼ်းႁဵင်းၵွင်ႉ ၸူးၼႃႈလိၵ်ႈၼၼ်ႉ ထုၵ်ႇမွတ်ႇပႅတ်ႈယဝ်ႉလႄႈသင် ​ၼႆဢေႃႈ။\n\nပေႃးဢမ်ႇၸႂ်ၸိူင်ႉၼၼ်တႄႉ ၸဝ်ႈၵဝ်ႇ တေလႆႈႁၼ် လွင်ႈယုင်ႈယၢင်ႈၼႆႉ တေၼႄဝႆႉ တီႈၼႂ်း သွပ်ႉၾ်ဝႄး ယူႇ။\nၶႅၼ်းတေႃႈ လဝ်ႈထိုင်ၼႆႉၸူး ၵႃႈတီႈ [[Special:ListUsers/sysop|administrator]] သေ မၢႆတွင်းဝႆႉပႃး ႁဵင်းလိၵ်ႈ URL မၼ်းသေၶႃႈလႄႈ။", - "missingarticle-rev": "(ၵၢၼ်ၶူၼ်ႉၶိုၼ်း#: $1)", + "missingarticle-rev": "(ၶူၼ်ႉၶႆႈ#: $1)", "missingarticle-diff": "(ၼိူင်း: $1, $2)", "readonly_lag": "ယွင်ၶေႃႈမုၼ်းၼႆႉ မၼ်းထုၵ်ႇၶတ်းၵႂႃႇ ႁင်းမၼ်း ၽွင်းမိူဝ်ႈ သႃႇပိူဝ်ႇယွင်ၶေႃႈမုၼ်း ဢၼ်ၵႅမ်မၼ်း ထုၵ်ႇတီႉၸပ်းၸူး သႃႇပိူဝ်ႇ​ယွင်ၶေႃႈမုၼ်း ငဝ်ႈမၼ်း။", "nonwrite-api-promise-error": "ဢၼ်ပဵၼ်​ႁူဝ်ၶေႃႈ HTTP ၼင်ႇ 'Promise-Non-Write-API-Action' ၼၼ်ႉထုၵ်ႇ သူင်ႇၸူးယဝ်ႉသေတႃႉ လွင်ႈတုၵ်းယွၼ်း မၼ်းတႄႉ တိုၵ်ႉမီးယူႇတီႈ API write module ။", @@ -337,7 +339,7 @@ "cannotdelete": "ၼႃႈလိၵ်ႈ ဢမ်ႇၼၼ် ၾၢႆႇ \"$1\" ၼႆႉ ဢမ်ႇၸၢင်ႈ မွတ်ႇပႅတ်ႈလႆႈ။\nမၼ်းဢၢပ်ႈပဵၼ် ၵူၼ်းသေၵေႃႉၵေႃႉ မွတ်ႇပႅတ်ႈၵႂႃႇယဝ်ႉ။", "cannotdelete-title": "ဢမ်ႇၸၢင်ႈ မွတ်ႇပႅတ်ႈ ၼႃႈ လိၵ်ႈ \"$1\"", "delete-hook-aborted": "လွင်ႈမွတ်ႇပႅတ်ႈ ထုၵ်ႇ ၵိုတ်းပႅတ်ႈ။\nမၼ်းဢမ်ႇမီး လွင်ႈ သပ်းလႅင်းၼႄသင်ဝႆႉ။", - "no-null-revision": "ဢမ်ႇၸၢင်ႈၵေႃႇသၢင်ႈ တူဝ်ၶူၼ်ႉၶိုၼ်းပဝ်ႇမႂ်ႇ တွၼ်ႈတႃႇ ၼႃႈလိၵ်ႈ \"$1\"", + "no-null-revision": "ဢမ်ႇၸၢင်ႈၵေႃႇသၢင်ႈ တူဝ်ၶူၼ်ႉၶႆႈပဝ်ႇမႂ်ႇ တွၼ်ႈတႃႇ ၼႃႈလိၵ်ႈ \"$1\"", "badtitle": "ႁူဝ်ၶေႃႈႁၢႆႉၸႃႉ", "badtitletext": "ႁူဝ်ၶေႃႈ ၼႃႈလိၵ်ႈဢၼ် တုၵ်းယွၼ်းဝႆႉၼႆႉ မၼ်းဢမ်ႇၸႂ်ႉလႆႈ၊ ပဝ်ႇဝႆ့ ဢမ်ႇၼၼ် မၼ်းၵွင်ႉၽိတ်းပိူင်ႈဝႆႉတင်း ၽႃႇသႃႇၵႂၢမ်းတၢင်ႇဢၼ် ဢမ်ႇၼၼ် ႁူဝ်ၶေႃႈၼႂ်းၼႃႈလိၵ်ႈ ဝီႇၶီႇၼႆ့။", "title-invalid-empty": "ၼႃႈလိၵ်ႈဢၼ်တုၵ်းယွၼ်းမႃးၼၼ်ႉ မၼ်းဢမ်ႇပႃးဝႆႉႁူဝ်ၶေႃႈမၼ်း ဢမ်ႇၼၼ် မၼ်းတေပႃးဝႃႈ ၸိုဝ်ႈဢၼ်ပဵၼ် လွၵ်းပဝ်ႇဝႆႉၼၼ်ႉၵူၺ်း။", @@ -367,6 +369,7 @@ "invalidtitle-knownnamespace": "ႁူဝ်ၶေႃႈ ၽိတ်းပိူင်ႈဝႆႉ ၸွမ်းၼင်ႇ လွၵ်းၸိုဝ်ႈ \"$2\" လႄႈ တူဝ်လိၵ်ႈ \"$3\"", "invalidtitle-unknownnamespace": "ႁူဝ်ၶေႃႈ ၽိတ်းပိူင်ႈဝႆႉ ၸွမ်းၼင်ႇ ဢမ်ႇလႆႈႁူႉ တၢင်းၼမ်လွၵ်းၸိုဝ်ႈ $1 လႄႈ တူဝ်လိၵ်ႈ \"$2\"", "exception-nologin": "ဢမ်ႇလႆႈၶဝ်ႈဝႆ့", + "virus-unknownscanner": "ဢမ်ႇႁူႉၸၵ်း တူဝ်ၶႃႈမႅင်း:", "cannotlogoutnow-title": "ဢမ်ႇၸၢင်ႈ လွၵ်ႉဢွၵ်ႇ ယၢမ်းလဵဝ်", "cannotlogoutnow-text": "တေဢမ်ႇၸၢင်ႈ လွၵ်ႉၶဝ်ႈ ၽွင်းမိူဝ်ႈၸႂ်ႉ $1", "welcomeuser": "ႁပ်ႉတွၼ်ႈယူႇ, $1!", @@ -398,8 +401,8 @@ "nav-login-createaccount": "လွၵ်ႉဢိၼ်ႇ / သၢင်ႈဢၶွင်ႉ", "userlogin": "လွၵ်ႉဢိၼ်ႇ / သၢင်ႈဢၶွင်ႉ", "userloginnocreate": "လွၵ်ႉဢိၼ်ႇ", - "logout": "လွၵ်ႉဢဝ်ႉ", - "userlogout": "လွၵ်ႉဢဝ်ႉ", + "logout": "လွၵ်ႉဢွၵ်ႉ", + "userlogout": "လွၵ်ႉဢွၵ်ႉ", "notloggedin": "ဢမ်ႇလႆႈၶဝ်ႈဝႆ့", "userlogin-noaccount": "ပႆႇပႃႈမီးဢၶွင်ႉႁႃႉ?", "userlogin-joinproject": "ႁူမ်ႈ {{SITENAME}}", @@ -482,7 +485,7 @@ "pt-login-button": "လွၵ်ႉဢိၼ်ႇ", "pt-login-continue-button": "သိုပ်ၶဝ်ႈလွၵ်ႉဢိၼ်ႇ", "pt-createaccount": "ၵေႃႇသၢင်ႈဢၶွင်ႉ", - "pt-userlogout": "လွၵ်ႉဢဝ်ႉ", + "pt-userlogout": "လွၵ်ႉဢွၵ်ႉ", "php-mail-error-unknown": "ဢမ်ႇႁူႉ လွင်ႈၽိတ်းပိူင်ႈ ၵႃႈတီႈ PHP's mail() function ၼၼ်ႉ။", "user-mail-no-addy": "ဢမ်ႇပႃး ႁဵင်းလိၵ်ႈဢီးမေးလ်သေ ၶတ်းၸႂ်သူင်ႇ ဢီးမေးလ်", "user-mail-no-body": "ၶတ်းၸႂ်သူင်ႇဢီးမေးလ် လူၺ်ႈ လွင်ႈတၢင်းပဝ်ႇ ဢမ်ႇၼၼ် ပွင်ႈလိၵ်ႈ ဢၼ်ဢမ်ႇမီး တီႈပွင်ႇ", @@ -516,7 +519,7 @@ "botpasswords-updated-body": "ၶေႃႈလပ်ႉပွတ်ႉ တွၼ်ႈတႃႇ ၸိုဝ်ႈပွတ်ႉ \"$1\" ဢၼ်ပဵၼ်ၶွင် ၽူႈၸႂ်ႉတိုဝ်း \"$2\" ၼၼ်ႉ ပဵၼ် ဢၢပ်ႉတိတ်ႉယဝ်ႈ။", "botpasswords-deleted-title": "ၶေႃႈလပ်ႉပွတ်ႉၼၼ်ႉ မွတ်ႇပႅတ်ႈယဝ်ႉယဝ်ႈ။", "botpasswords-deleted-body": "ၶေႃႈလပ်ႉပွတ်ႉ တွၼ်ႈတႃႇ ၸိုဝ်ႈပွတ်ႉ \"$1\" ဢၼ်ပဵၼ်ၶွင် ၽူႈၸႂ်ႉတိုဝ်း \"$2\" ၼၼ်ႉ မွတ်ႇပႅတ်ႈယဝ်ႉယဝ်ႈ။", - "botpasswords-newpassword": "ၶေႃႈလပ်ႉဢၼ်မႂ်ႇ တႃႇတေၶဝ်ႈ လွၵ်ႉဢိၼ်ႇၸွမ်း <strong>$1</strong> ပဵၼ် <strong>$2</strong>. <em>ၶႅၼ်းတေႃႈ မၢႆတွင်းၼႆႉဝႆႉ တွၼ်ႈတႃႇ ပဵၼ် ၽိုၼ်ဢိင်မိူဝ်းၼႃႈ</em>", + "botpasswords-newpassword": "ၶေႃႈလပ်ႉဢၼ်မႂ်ႇ တႃႇတေၶဝ်ႈ လွၵ်ႉဢိၼ်ႇၸွမ်း <strong>$1</strong> ပဵၼ် <strong>$2</strong>. <em>ၶႅၼ်းတေႃႈ မၢႆတွင်းၼႆႉဝႆႉ တွၼ်ႈတႃႇ ပဵၼ် ၽိုၼ်ဢိင်မိူဝ်းၼႃႈ</em><br>(တွၼ်ႈတႃႇ ပွတ်ႉၸိူဝ်းဢၼ်ၵဝ်ႇ ဢၼ်လူဝ်ႇ ၸိုဝ်ႈလွၵ်ႉဢိၼ်ႇ ဢၼ်တေလႆႈမိူၼ်ၵၼ်တင်း ၸိုဝ်ႈၽူႈၸႂ်ႉတိုဝ်း၊ ၸဝ်ႈၵဝ်ႇၸၢင်ႈၸႂ်ႉ <strong>$3</strong> ၼင်ႇ ၸိုဝ်ႈၽူႈၸႂ်ႉတိုဝ်း လႄႈ <strong>$4</strong>ၼင်ႇ ၶေႃႈလပ်ႉ)", "botpasswords-no-provider": "ၵၼ်တူဝ်ၵမ်ႉထႅမ်ၶေႃႈလပ်ႉပွတ်ႉၼႆ မၼ်းဢမ်ႇၸႂ်ႉလႆႈ။", "botpasswords-restriction-failed": "ၵၼ်ၵႅတ်ႇၶေႃႈလပ်ႉပွတ်ႉ ၼႆႉ ႁႄႉၵင်ႈလွင်ႈ လွၵ်ႉဢိၼ်ႇဢၼ်ၼႆႉ။", "botpasswords-invalid-name": "ၸိုဝ်ႈၽူႈၸႂ်ႉတိုဝ်ႈ ဢၼ်မၵ်းမၼ်ႈဝႆႉၼႆႉ မၼ်းဢမ်ႇၶဝ်ႈပႃးဝႆႉ တူဝ်ၸႅၵ်ႇၶေႃႈလပ်ႉ ပွတ်ႉ (\"$1\") ။", @@ -536,13 +539,12 @@ "passwordreset-emaildisabled": "ၽၢင်ႁဵတ်းၵၢၼ် ဢီးမေးလ် ထုၵ်ႇဢိုတ်းဝႆႉ ၵႃႈတီႈ ဝီႇၶီႇၼႆႉ။", "passwordreset-username": "ၸိုဝ်ႈၽူႈၸႂ်ႉတိုဝ်း", "passwordreset-domain": "တူဝ်ႇမဵင်း :", - "passwordreset-capture": "တေတူၺ်း ဢီးမေးလ်ၽွၼ်းလႆႈ?", - "passwordreset-capture-help": "ပေႃးၸဝ်ႈၵဝ်ႇ ၶိုၼ်ႇလွၵ်ႈၼႆႉၼႆ ဢီးမေးလ် (ဢၼ်ၸႂ်ႉၶေႃႈလပ်ႉၸူဝ်ႈၵႅပ်ႉ) တေၼႄဝႆႉဝႃႈ မၼ်းသူင်ႇၸူး ၽူႈၸႂ်ႉတိုဝ်း ဝႆႉယဝ်ႉ ၼႆဢေႃႈ.", "passwordreset-email": "ႁဵင်းလိၵ်ႈ ဢီးမေးလ် :", "passwordreset-emailtitle": "လွင်ႈႁူဝ်ယွႆႈ ဢၶွင်ႉ ၵႃႈတီႈ {{SITENAME}}", "passwordreset-emailelement": "ၸိုဝ်ႈၽူႈၸႂ်ႉတိုဝ်း:\n$1\n\nၶေႃႈလပ်ႉ ၸူဝ်ႈၵႅပ်ႉ:\n$2", "passwordreset-emailsentemail": "ႁဵင်းလိၵ်ႈ ဢီးမေးလ်ဢၼ်ၼႆႉၼႆႉ မၼ်းၵပ်းၵၢႆႇၵၼ်တင်း ဢၶွင်ႉၸဝ်ႈၵဝ်ႇ၊ ဢၼ်ပဵၼ် ဢီးမေးလ် တႃႇတင်ႈၶိုၼ်းမၢႆလပ်ႉၼၼ်ႉ တေထုၵ်ႇသူင်ႇၸူးယူႇ.", "passwordreset-emailsentusername": "ႁဵင်းလိၵ်ႈ ဢီးမေးလ်ဢၼ်ၼႆႉၼႆႉ မၼ်းၵပ်းၵၢႆႇၵၼ်တင်း ၸိုဝ်ႈၽူႈၸႂ်ႉတိုဝ်း ဢၼ်ၼႆႉ၊ ဢၼ်ပဵၼ် ဢီးမေးလ် တႃႇတင်ႈၶိုၼ်းမၢႆလပ်ႉၼၼ်ႉ တေထုၵ်ႇသူင်ႇၸူးယူႇ.", + "passwordreset-nosuchcaller": "ၽူႈႁွင်ႉမႃး ဢမ်ႇမီးဝႆႉ:$1", "passwordreset-invalidemail": "ႁဵင်းလိၵ်ႈ ဢီႈမေးလ် ၽိတ်းဝႆႉ။", "passwordreset-nodata": "ၸိုဝ်ႈၽူႈၸႂ်ႉတိုဝ်းလႄႈ ႁဵင်းလိၵ်ႈဢီးမေးလ် ဢမ်ႇလႆႈၵမ်ႉထႅမ်ဝႆႉ သေဢၼ်။", "changeemail": "လႅၵ်ႈလၢႆႈ ဢမ်ႇၼၼ် ထွၼ်ပႅတ်ႈ ႁဵင်းလိၵ်ႈ ဢီးမေးလ်", @@ -615,7 +617,7 @@ "editingsection": "မႄးထတ်း $1 (ၵၼ်)", "editconflict": "မႄးထတ်း လွင်ႈယုင်ႈယၢင်ႈ : $1", "yourtext": "လိၵ်ႈၸဝ်ႈၵဝ်ႇ", - "storedversion": "ၵၢၼ်ၶူၼ်ႉလူ ဢၼ်ဢဝ်ၶိုၼ်း", + "storedversion": "ၵၢၼ်ၶူၼ်ႉၶႆႈ ဢၼ်ဢဝ်ၶိုၼ်း", "yourdiff": "ၸိူဝ်းပႅၵ်ႇပိူင်ႈ", "longpageerror": "<strong>လွင်ႈၽိတ်းပိူင်ႈ : လိၵ်ႈၸိူဝ်းဢၼ်ၸဝ်ႈၵဝ်ႇ မၵ်းမၼ်ႈသႂ်ႇပၼ်မႃးၼၼ်ႉ တၢင်းယၢဝ်းမၼ်း မီး {{PLURAL:$1|ၼိုင်ႈ kilobyte|$1 kilobytes}}, မၼ်းတိူဝ်းယၢဝ်ၢးလိူဝ်သေ {{PLURAL:$2|ၼိုင်ႈ kilobyte|$2 kilobytes}}.</strong>\nမၼ်းတေဢမ်ႇၸၢင်ႈ သိမ်းဝႆႉပၼ်လႆႈ။", "readonlywarning": "<strong>ၽၢင်ႉ : ယွင်ၶေႃႈမုၼ်းၼႆႉ ထုၵ်ႇၶတ်းဝႆႉ တွၼ်ႈတႃႇ ၵၢၼ်မူၼ်ႉ​​မေး၊ ယွၼ်ႉၼၼ်လႄႈ ၸဝ်ႈၵဝ်ႇ တေဢမ်ႇၸၢင်ႈ သိမ်းဝႆႉ ၵၢၼ်လႅၵ်ႈလၢႆႈ ၸဝ်ႈၵဝ်ႇ ယၢမ်းလဵဝ်</strong>\nၸဝ်ႈဝ်ႇ တေလူဝ်ႇ ထုတ်ႇ ၵေႃႇပီႇ သေ ပႃႉသႂ်ႇ ၽဵတ်ႉသႂ်ႇဝႆႉ တီႈၼႂ်း ၾၢႆႇလိၵ်ႈ သေ သိမ်းဝႆႉ တွၼ်ႈတႃႇၶိုၼ်းၸႂ်ႉဝၢႆးလင်။\nၵေႃႉၵုမ်းထိင်ပိူင်သၢင်ႈ ၵေႃႉဢၼ်ၶတ်းဝႆႉၼႆႉ မၼ်းပၼ်လွင်ႈတၢင်းမၼ်းဝႆႉဝႃႈ : $1", @@ -635,7 +637,7 @@ "permissionserrors": "ၵၢၼ်လူတ်းပွႆႇ ၽိတ်းပိူင်ႈ", "permissionserrorstext": "ၸဝ်ႈၵဝ်ႇဢမ်ႇမီးသုၼ်ႇ တႃႇႁဵတ်းဢၼ်ၼၼ်ႉ၊ ယွၼ်ႉပိူဝ်ႈဝႃႈ {{PLURAL:$1|လွင်ႈတၢင်း|လွင်ႈတၢင်းၸိူဝ်း}} ၼႆႉ:", "permissionserrorstext-withaction": "ၸဝ်ႈၵဝ်ႇဢမ်ႇမီးသုၼ်ႇ တႃႇ $2, တွၼ်ႈတႃႇ ၸိူဝ်း ဢၼ်ပဵၼ် {{PLURAL:$1|reason|လွင်ႈတၢင်း}}:", - "contentmodelediterror": "ၸဝ်ႈၵဝ်ႇတေဢမ်ႇၸၢင်ႈ မႄးထတ်း ၵၢၼ်ၶူၼ်ႉလူဢၼ်ၼႆႉ၊ ယွၼ်ႉပိူဝ်ႈဝႃႈ ၽၢင်တူဝ် ၶေႃႈၶဝ်ႈပႃး မၼ်းၼႆႉပဵၼ် <code>$1</code>, ဢၼ် ပႅၵ်ႇပိူင်ႈၵၼ်တၢင်း ၽၢင်တူဝ် ၶေႃႈၶဝ်ႈပႃး ၶွင်ႈၼႃႈလိၵ်ႈ <code>$2</code> ၼႆႉ။", + "contentmodelediterror": "ၸဝ်ႈၵဝ်ႇတေဢမ်ႇၸၢင်ႈ မႄးထတ်း ၵၢၼ်ၶူၼ်ႉၶႆႈၼႆႉ၊ ယွၼ်ႉပိူဝ်ႈဝႃႈ ၽၢင်တူဝ် ၶေႃႈၶဝ်ႈပႃး မၼ်းၼႆႉပဵၼ် <code>$1</code>, ဢၼ် ပႅၵ်ႇပိူင်ႈၵၼ်တၢင်း ၽၢင်တူဝ် ၶေႃႈၶဝ်ႈပႃး ၶွင်ႈၼႃႈလိၵ်ႈ <code>$2</code> ၼႆႉ။", "recreate-moveddeleted-warn": "<strong>ၶေႃႈၽၢင်ႉပၼ် : ၸဝ်ႈၵဝ်ႇ ၶိုၼ်းၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈ ဢၼ်လႆႈ မွတ်ႇပႅတ်ႈၵႂႃႇဝႆႉၼၼ်ႉ။</strong>\n\nၸဝ်ႈၵဝ်ႇ ထုၵ်ႇလီဝူၼ်ႉတူၺ်းဝႃႈ ၸွင်ႇမၼ်းသၢင်ႇထုၵ်ႇ တွၼ်ႈတႃႇတေသိုပ်ႇ မႄးထတ်း ၼႃႈလိၵ်ႈၼႆႉဢၼ်ဝႃႈၼၼ်ႉ။\nသဵၼ်ႈလၢႆ မွတ်ႇပႅတ်ႈလႄႈ ၶၢႆႉဢွင်ႈ တွၼ်ႈတႃႇၼႃႈလိၵ်ႈၼႆႉ ၵမ်ႉထႅမ်ဝႆႉပၼ် ၵႃႈတီႈၼႆႈ တွၼ်ႈတႃႇ ႁႂ်းငၢႆႈလူမ်ၸႂ် :", "moveddeleted-notice": "ၼႃႈလိၵ်ႈၼႆႉ မွတ်ႇပႅတ်ႈၵႂႃႇယဝ်ႉ။ လွင်ႈမွတ်ႇပႅတ်ႈလႄႈ လွင်ႈၶၢႆႉသၢႆမၢႆ တွၼ်ႈတႃႇ ၼႃႈလိၵ်ႈၼႆႉ ၵမ်ႉထႅမ်ဝႆႉပၼ် ၼင်ႇပႃႈတႂ်ႈၼႆႉယူႇ။ မၼ်းပဵၼ် တွၼ်ႈတႃႇ ႁဵတ်းၽိုၼ်ဢိင်ယဝ်ႉ။", "moveddeleted-notice-recent": "ယိၼ်းၶီၸွမ်ႈယူႇ၊ ၼႃႈလိၵ်ႈၼႆႉ တိုၵ်ႉႁႃထုၵ်ႇမွတ်ႇပႅတ်ႈ (ၼႂ်းၶၢဝ်းတၢင်း မိူဝ်ႈပူၼ်ႉမႃး 24 ၸူဝ်ႈမူင်း) ၼႆႉၵူၺ်း။ သဵၼ်ႈမၢႆ မွတ်ႇပႅတ်ႈ လႄႈ ၶၢႆႉဢွင်ႈတီႈ ၸိူဝ်းၼၼ်ႉ လႆႈၵမ်ႉထႅမ်ဝႆႉပၼ်ၼင်ႇၽၢႆႇတႂ်ႈ ႁႂ်ႈၸၢင်ႈပဵၼ် ၵၢၼ်ၽိုၼ်ဢိင်။", @@ -651,6 +653,8 @@ "defaultmessagetext": "လိၵ်ႈၶေႃႈၶၢဝ်ႇ ပိူင်ႇၵႅဝ်ႈ", "invalid-content-data": "ၶေႃႈမုၼ်းၶဝ်ႈပႃး ၽိတ်းပိူင်ႈဝႆႉ", "content-not-allowed-here": "\"$1\" ၶေႃႈၶဝ်ႈပႃးၼႆႉ ဢမ်ႇၶႂၢင်းပၼ်ဝႆႉ တီႈၼႃႈ လိၵ်ႈ [[$2]]", + "editpage-invalidcontentmodel-title": "ပိူင်ႈၵေႃႇသၢင်ႈ လမ်းၼႂ်း ဢမ်ႇၵမ်ႉထႅမ်ဝႆႉ", + "editpage-invalidcontentmodel-text": "ပိူင်ၵေႃႇသၢင်ႈ လမ်းၼႂ်း \"$1\" ဢမ်ႇလႆႈၵမ်ႉထႅမ်ဝႆႉ", "editpage-notsupportedcontentformat-title": "ပိူင်ၶေႃႈၶဝ်ႈပႃး ၼႆႉ ဢမ်ႇၵမ်ႉထႅမ်ဝႆႉပၼ်။", "editpage-notsupportedcontentformat-text": "ပိူင်ၶေႃႈၶဝ်ႈပႃး $1 ၼႆႉ မၼ်းဢမ်ႇလႆႈ ၵမ်ႉထႅမ်ဝႆႉပၼ် တင်း ၽၢင်တူဝ် ၶေႃႈၶဝ်ႈပႃး $2", "content-model-wikitext": "လိၵ်ႈဝီႇၶီႇ", @@ -661,13 +665,13 @@ "post-expand-template-inclusion-warning": "<strong>ၶေႃႈၽၢင်ႉ</strong> - ပိူင်ဢဝ်မႃးႁူမ်ႈၼၼ်ႉယႂ်ႇပူၼ်ႉၼႃႇ။\nပိူင်မၢင်ၼႃႈတေဢမ်ႇႁူမ်ႈပႃးၸွမ်း။", "viewpagelogs": "တူၺ်းသၢႆမၢႆ တွၼ်ႈတႃႇၼႃႈလိၵ်ႈၼႆႉ", "nohistory": "တီႈၼႆႈ ဢမ်ႇမီး ပိုၼ်းထတ်းသၢင်ႈ တွၼ်ႈတႃႇၼႃႈလိၵ်ႈၼႆႉ", - "currentrev": "ၵၢၼ်ၶူၼ်ႉလူ ၵမ်းလိုၼ်းသုတ်း", - "currentrev-asof": "ၵၢၼ်ၶူၼ်ႉလူ ၵမ်းလိုၼ်းသုတ်းၼင်ႇ $1", - "revisionasof": "ၶိုၼ်းၶူၼ်ႉလူၼင်ႇ $1", - "revision-info": "ၶူၼ်ႉလူၼင်ႇ $1 ၼင်ႇ {{GENDER:$6|$2}}$7", - "previousrevision": "← ၸိူဝ်းဢၼ်ၵဝ်ႇ", + "currentrev": "ၵၢၼ်ၶူၼ်ႉၶႆႈ ၵမ်းလိုၼ်းသုတ်း", + "currentrev-asof": "ၵၢၼ်ၶူၼ်ႉၶႆႈ ၵမ်းလိုၼ်းသုတ်း မိူဝ်ႈ $1", + "revisionasof": "ၶိုၼ်းၶူၼ်ႉၶႆႈၼင်ႇ $1", + "revision-info": "{{GENDER:$6|$2}}$7 ၵေႃႉ ၶူၼ်ႉၶႆႈမိူဝ်ႈ $1", + "previousrevision": "← လွင်ႈၶူၼ်ႉၶႆႈ ဢၼ်ၵဝ်ႇ", "nextrevision": "ၵၢၼ်ၶူၼ်ႉလူဢၼ်မႂ်ႇ", - "currentrevisionlink": "ၵၢၼ်ၶူၼ်ႉလူ ၵမ်းလိုၼ်းသုတ်း", + "currentrevisionlink": "ၵၢၼ်ၶူၼ်ႉၶႆႈ ၵမ်းလိုၼ်းသုတ်း", "cur": "ယၢမ်းလဵဝ်", "next": "ၵႂႃႇၼႃႈ", "last": "ဢွၼ်တၢင်း", @@ -679,44 +683,44 @@ "histlast": "မႂ်ႇသုတ်း", "historysize": "({{PLURAL:$1|1 ပၢႆႉ|$1 ပၢႆႉ}})", "historyempty": "(ပဝ်ႇ)", - "history-feed-title": "ပိုၼ်းၶူၼ်ႉလူ", + "history-feed-title": "ပိုၼ်းၶူၼ်ႉၶႆႈ", "history-feed-description": "ပိုၼ်းၶူၼ်ႉလူ တႃႇၼႃႈလိၵ်ႈၼႆႉ ၵႃႈတီႈၼိူဝ် ဝီႇၶီႇ", "history-feed-item-nocomment": "$1 တီႈ $2", - "history-edit-tags": "မႄးထတ်း ၶႅပ်းတိင် ၶွင် ၶူၼ်ႉလူၸိူဝ်းလိူၵ်ႈဝႆႉၼၼ်ႉ။", + "history-edit-tags": "မႄးထတ်း ၶႅပ်းတိင် ၶွင် ၶူၼ်ႉၶႆႈၸိူဝ်းလိူၵ်ႈဝႆႉၼၼ်ႉ။", "rev-deleted-comment": "(ႁူဝ်ႁုပ်ႈၵၢၼ်ထတ်းသၢင် ထွၼ်ဢွၵ်ႇပႅတ်ႈယဝ်ႉ)", "rev-deleted-user": "(ၸိုဝ်ႈၽူႈၸႂ်ႉတိုဝ်း ထွၼ်ဢွၵ်ႇပႅတ်ႈယဝ်ႉ)", "rev-deleted-event": "(သဵၼ်ႈမၢႆ ႁူဝ်ယွႆႈ ထွၼ်ဢွၵ်ႇပႅတ်ႈယဝ်ႉ)", "rev-deleted-user-contribs": "[ၸိုဝ်ႈၽူႈၸႂ်ႉတိုဝ်း ဢမ်ႇၼၼ် မၢႆဢၢႆႇပီႇ ထွၼ်ဢွၵ်ႇပႅတ်ႈယဝ်ႉ - ၵၢၼ်မႄးထတ်း ၸိူဝ်းၼၼ်ႉ ထုၵ်ႇလပ်ႉဝႆႉ ၵႃႈတီႈ ၵၢၼ်ႁူမ်ႈသၢင်ႈ]", - "rev-deleted-text-permission": "ၼႃႈလိၵ်ႈၶူၼ်ႉလူၼႆႉ ထုၵ်ႇ <strong>မွတ်ႇပႅတ်ႈ</strong>ယဝ်ႉ။\nလွင်ႈႁူဝ်ယွႆႈမၼ်း တေၸၢင်ႈႁၼ်လႆႈ ၵႃႈတီႈ [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} deletion log] ၼႆႈၶႃႈ။", - "rev-suppressed-text-permission": "ၼႃႈလိၵ်ႈ ၶူၼ်ႉလူဢၼ်ၼႆႉ ထုၵ်ႇ <strong>တဵၵ်းၵိုတ်း</strong> ပႅတ်ႈယဝ်ႉ။\nလွင်ႈႁူဝ်ယွႆႈမၼ်း တေၸၢင်ႈႁၼ်လႆႈ ၵႃႈတီႈ [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} suppression log] ၼႆႈယူႇ။", - "rev-deleted-text-unhide": "ၼႃႈလိၵ်ႈၶူၼ်ႉလူၼႆႉ ထုၵ်ႇ <strong>မွတ်ႇပႅတ်ႈ</strong>ယဝ်ႉ။\nလွင်ႈႁူဝ်ယွႆႈမၼ်း တေၸၢင်ႈႁၼ်လႆႈ ၵႃႈတီႈ [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} deletion log] ၼႆႈၶႃႈ။\nပေႃးဝႃႈ ၸဝ်ႈၵဝ်ႇ တိုၵ်ႉမီးၵၢင်ၸႂ် ၶႂ်ႈသိုပ်ႇ ႁဵတ်းၵႂႃႇၼႆ ၸဝ်ႈၵဝ်ႇ တိုၵ်ႉ [$1 တူၺ်း လွင်ႈၶူၼ်ႉလူၼႆႉ] ။", - "rev-suppressed-text-unhide": "ၼႃႈလိၵ်ႈ ၶူၼ်ႉလူဢၼ်ၼႆႉ ထုၵ်ႇ <strong>တဵၵ်းၵိုတ်း</strong> ပႅတ်ႈယဝ်ႉ။\nလွင်ႈႁူဝ်ယွႆႈမၼ်း တေၸၢင်ႈႁၼ်လႆႈ ၵႃႈတီႈ [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} suppression log] ၼႆႈယူႇ။\nပေႃးဝႃႈ ၸဝ်ႈၵဝ်ႇ တိုၵ်ႉမီးၵၢင်ၸႂ် ၶႂ်ႈသိုပ်ႇ ႁဵတ်းၵႂႃႇၼႆ ၸဝ်ႈၵဝ်ႇ တိုၵ်ႉ [$1 တူၺ်း လွင်ႈၶူၼ်ႉလူၼႆႉ] ။", - "rev-deleted-text-view": "ၼႃႈလိၵ်ႈ ၶူၼ်ႉလူဢၼ်ၼႆႉ ထုၵ်ႇ <strong>မွတ်ႇပႅတ်ႈ</strong> ၵႂႃႇယဝ်ႉ။\nၸဝ်ႈၵဝ်ႇတိုၵ်ႉၸၢင်ႈတူၺ်ႈမၼ်းသေ လွင်ႈႁူဝ်ယွႆႈမၼ်းတႄႉ တေၸၢင်ႈႁၼ်လႆႈ ၵႃႈတီႈ [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} deletion log] ၼႆႈယူႇ။", - "rev-suppressed-text-view": "ၼႃႈလိၵ်ႈ ၶူၼ်ႉလူဢၼ်ၼႆႉ ထုၵ်ႇ <strong>တဵၵ်းၵိုတ်း</strong> ပႅတ်ႈယဝ်ႉ။\nၸဝ်ႈၵဝ်ႇတိုၵ်ႉၸၢင်ႈတူၺ်းသေ လွင်ႈႁူဝ်ယွႆႈမၼ်း တေၸၢင်ႈႁၼ်လႆႈ ၵႃႈတီႈ [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} suppression log] ၼႆႈယူႇ။", - "rev-deleted-no-diff": "ၸဝ်ႈၵဝ်ႇ တေဢမ်ႇၸၢင်ႈတူၺ်း လွင်ႈပႅၵ်ႇပိူင်ႈဢၼ်ၼႆႉ၊ ယွၼ်ႉပိူဝ်ႈဝႃႈ ၼႂ်ႈၵႃႈ ၵၢၼ်ၶူၼ်ႉလူဢၼ်ၼိုင်ႈၼႆႉ ထုၵ်ႇ<strong>မွတ်ႇပႅတ်ႈ</strong> ၵႂႃႇယဝ်ႉ။\nလွင်ႈႁူဝ်ယွႆႈမၼ်း တေၸၢင်ႈႁၼ်လႆႈ ၵႃႈတီႈ [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} deletion log] ၼႆႈယူႇ။", + "rev-deleted-text-permission": "ၼႃႈလိၵ်ႈၶူၼ်ႉၶႆႈၼႆႉ ထုၵ်ႇ <strong>မွတ်ႇပႅတ်ႈ</strong>ယဝ်ႉ။\nလွင်ႈႁူဝ်ယွႆႈမၼ်း တေၸၢင်ႈႁၼ်လႆႈ ၵႃႈတီႈ [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} deletion log] ၼႆႈၶႃႈ။", + "rev-suppressed-text-permission": "ၼႃႈလိၵ်ႈ ၶူၼ်ႉၶႆႉဢၼ်ၼႆႉ ထုၵ်ႇ <strong>တဵၵ်းၵိုတ်း</strong> ပႅတ်ႈယဝ်ႉ။\nလွင်ႈႁူဝ်ယွႆႈမၼ်း တေၸၢင်ႈႁၼ်လႆႈ ၵႃႈတီႈ [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} suppression log] ၼႆႈယူႇ။", + "rev-deleted-text-unhide": "ၼႃႈလိၵ်ႈၶူၼ်ႉၶႆႈၼႆႉ ထုၵ်ႇ <strong>မွတ်ႇပႅတ်ႈ</strong>ယဝ်ႉ။\nလွင်ႈႁူဝ်ယွႆႈမၼ်း တေၸၢင်ႈႁၼ်လႆႈ ၵႃႈတီႈ [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} deletion log] ၼႆႈၶႃႈ။\nပေႃးဝႃႈ ၸဝ်ႈၵဝ်ႇ တိုၵ်ႉမီးၵၢင်ၸႂ် ၶႂ်ႈသိုပ်ႇ ႁဵတ်းၵႂႃႇၼႆ ၸဝ်ႈၵဝ်ႇ တိုၵ်ႉ [$1 တူၺ်း လွင်ႈၶူၼ်ႉလူၼႆႉ] ။", + "rev-suppressed-text-unhide": "ၼႃႈလိၵ်ႈ ၶူၼ်ႉၶႆႈဢၼ်ၼႆႉ ထုၵ်ႇ <strong>တဵၵ်းၵိုတ်း</strong> ပႅတ်ႈယဝ်ႉ။\nလွင်ႈႁူဝ်ယွႆႈမၼ်း တေၸၢင်ႈႁၼ်လႆႈ ၵႃႈတီႈ [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} suppression log] ၼႆႈယူႇ။\nပေႃးဝႃႈ ၸဝ်ႈၵဝ်ႇ တိုၵ်ႉမီးၵၢင်ၸႂ် ၶႂ်ႈသိုပ်ႇ ႁဵတ်းၵႂႃႇၼႆ ၸဝ်ႈၵဝ်ႇ တိုၵ်ႉ [$1 တူၺ်း လွင်ႈၶူၼ်ႉၶႆႈၼႆႉ] ။", + "rev-deleted-text-view": "ၼႃႈလိၵ်ႈ ၶူၼ်ႉၶႆႈဢၼ်ၼႆႉ ထုၵ်ႇ <strong>မွတ်ႇပႅတ်ႈ</strong> ၵႂႃႇယဝ်ႉ။\nၸဝ်ႈၵဝ်ႇတိုၵ်ႉၸၢင်ႈတူၺ်ႈမၼ်းသေ လွင်ႈႁူဝ်ယွႆႈမၼ်းတႄႉ တေၸၢင်ႈႁၼ်လႆႈ ၵႃႈတီႈ [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} deletion log] ၼႆႈယူႇ။", + "rev-suppressed-text-view": "ၼႃႈလိၵ်ႈ ၶူၼ်ႉၶႆႈဢၼ်ၼႆႉ ထုၵ်ႇ <strong>တဵၵ်းၵိုတ်း</strong> ပႅတ်ႈယဝ်ႉ။\nၸဝ်ႈၵဝ်ႇတိုၵ်ႉၸၢင်ႈတူၺ်းသေ လွင်ႈႁူဝ်ယွႆႈမၼ်း တေၸၢင်ႈႁၼ်လႆႈ ၵႃႈတီႈ [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} suppression log] ၼႆႈယူႇ။", + "rev-deleted-no-diff": "ၸဝ်ႈၵဝ်ႇ တေဢမ်ႇၸၢင်ႈတူၺ်း လွင်ႈပႅၵ်ႇပိူင်ႈဢၼ်ၼႆႉ၊ ယွၼ်ႉပိူဝ်ႈဝႃႈ ၼႂ်ႈၵႃႈ ၵၢၼ်ၶူၼ်ႉၶႆႈဢၼ်ၼိုင်ႈၼႆႉ ထုၵ်ႇ<strong>မွတ်ႇပႅတ်ႈ</strong> ၵႂႃႇယဝ်ႉ။\nလွင်ႈႁူဝ်ယွႆႈမၼ်း တေၸၢင်ႈႁၼ်လႆႈ ၵႃႈတီႈ [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} deletion log] ၼႆႈယူႇ။", "rev-suppressed-no-diff": "ၸဝ်ႈၵဝ်ႇ တေဢမ်ႇၸၢင်ႈတူၺ်း လွင်ႈပႅၵ်ႇပိူင်ႈဢၼ်ၼႆႉ၊ ယွၼ်ႉပိူဝ်ႈဝႃႈ ၼႂ်ႈၵႃႈ ၵၢၼ်ၶူၼ်ႉလူဢၼ်ၼိုင်ႈၼႆႉ ထုၵ်ႇ<strong>မွတ်ႇပႅတ်ႈ</strong> ၵႂႃႇယဝ်ႉ။", - "rev-deleted-unhide-diff": "ၸဝ်ႈၵဝ်ႇ တေဢမ်ႇၸၢင်ႈတူၺ်း လွင်ႈပႅၵ်ႇပိူင်ႈဢၼ်ၼႆႉ၊ ယွၼ်ႉပိူဝ်ႈဝႃႈ ၼႂ်ႈၵႃႈ ၵၢၼ်ၶူၼ်ႉလူဢၼ်ၼိုင်ႈၼႆႉ ထုၵ်ႇ<strong>မွတ်ႇပႅတ်ႈ</strong> ၵႂႃႇယဝ်ႉ။\nလွင်ႈႁူဝ်ယွႆႈမၼ်း တေၸၢင်ႈႁၼ်လႆႈ ၵႃႈတီႈ [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} deletion log] ၼႆႈယူႇ။\nပေႃးၸဝ်ႈၵဝ်ႇတိုၵ်ႉၶႂ်ႈ သိုပ်ႇႁဵတ်းၵႂႃႇယူႇၼႆ ၸဝ်ႈၵဝ်ႇတေၸၢင်ႈ [$1တူၺ်း လွင်ႈပႅၵ်ႈပိူင်ႈ] ၼႆႉလႆႈ။", + "rev-deleted-unhide-diff": "ၸဝ်ႈၵဝ်ႇ တေဢမ်ႇၸၢင်ႈတူၺ်း လွင်ႈပႅၵ်ႇပိူင်ႈဢၼ်ၼႆႉ၊ ယွၼ်ႉပိူဝ်ႈဝႃႈ ၼႂ်ႈၵႃႈ ၵၢၼ်ၶူၼ်ႉၶႆႈဢၼ်ၼိုင်ႈၼႆႉ ထုၵ်ႇ<strong>မွတ်ႇပႅတ်ႈ</strong> ၵႂႃႇယဝ်ႉ။\nလွင်ႈႁူဝ်ယွႆႈမၼ်း တေၸၢင်ႈႁၼ်လႆႈ ၵႃႈတီႈ [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} deletion log] ၼႆႈယူႇ။\nပေႃးၸဝ်ႈၵဝ်ႇတိုၵ်ႉၶႂ်ႈ သိုပ်ႇႁဵတ်းၵႂႃႇယူႇၼႆ ၸဝ်ႈၵဝ်ႇတေၸၢင်ႈ [$1တူၺ်း လွင်ႈပႅၵ်ႈပိူင်ႈ] ၼႆႉလႆႈ။", "rev-suppressed-unhide-diff": "ၼႂ်းၵႃႈ ၵၢၼ်ၶူၼ်ႉလူ လွင်ႈပႅၵ်ႇပိူင်ႈ ဢၼ်ၼိုင်ႈၼႆႉ ထုၵ်ႇ <strong>တဵၵ်းၵိုတ်း</strong> ၵႂႃႇယဝ်ႉ။\nႁူဝ်ယွႆႈမၼ်း တေၸၢင်ႈႁၼ်လႆႈ ၵႃႈတီႈ [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} suppression log] ၼႆႈယူႇ။\nပေႃးၸဝ်ႈၵဝ်ႇတိုၵ်ႉၶႂ်ႈ သိုပ်ႇႁဵတ်းၵႂႃႇယူႇၼႆ ၸဝ်ႈၵဝ်ႇတေၸၢင်ႈ [$1တူၺ်း လွင်ႈပႅၵ်ႈပိူင်ႈ] ၼႆႉလႆႈ။", - "rev-deleted-diff-view": "ၼႂ်းၵႃႈ ၵၢၼ်ၶူၼ်ႉလူ လွင်ႈပႅၵ်ႇပိူင်ႈ ဢၼ်ၼႆႉၼႆႉ ထုၵ်ႇ <strong>မွတ်ႇပႅတ်ႈ</strong>ၵႂႃႇယဝ်ႉ။\nၸဝ်ႈၵဝ်ႇၸၢင်ႈတူၺ်းလႆႈ လွင်ႈပႅၵ်ႇပိူင်ႈသေ လွင်ႈႁူဝ်ယွႆႈမၼ်းတႄႉ တေၸၢင်ႈႁၼ်လႆႈၵႃႈတီႈ [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} deletion log] ၼႆႈယူႇ။", + "rev-deleted-diff-view": "ၼႂ်းၵႃႈ ၵၢၼ်ၶူၼ်ႉၶႆႈ လွင်ႈပႅၵ်ႇပိူင်ႈ ဢၼ်ၼႆႉၼႆႉ ထုၵ်ႇ <strong>မွတ်ႇပႅတ်ႈ</strong>ၵႂႃႇယဝ်ႉ။\nၸဝ်ႈၵဝ်ႇၸၢင်ႈတူၺ်းလႆႈ လွင်ႈပႅၵ်ႇပိူင်ႈသေ လွင်ႈႁူဝ်ယွႆႈမၼ်းတႄႉ တေၸၢင်ႈႁၼ်လႆႈၵႃႈတီႈ [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} deletion log] ၼႆႈယူႇ။", "rev-suppressed-diff-view": "ၼႂ်းၵႃႈ ၵၢၼ်ၶူၼ်ႉလူ လွင်ႈပႅၵ်ႇပိူင်ႈ ဢၼ်ၼႆႉၼႆႉ ထုၵ်ႇ <strong>တဵၵ်းၵိုတ်း</strong> ၵႂႃႇယဝ်ႉ။\nၸဝ်ႈၵဝ်ႇ ၸၢင်ႈတူၺ်း လွင်ႈပႅၵ်ႇပိူင်ႈသေ လွင်ႈႁူဝ်ယွႆႈမၼ်းတႄႉ တေၸၢင်ႈႁၼ်လႆႈ ၵႃႈတီႈ [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} suppression log] ၼႆႈယူႇ။", "rev-delundel": "ၼႄ/သိူင်ႇ", "rev-showdeleted": "ၼႄ", - "revisiondelete": "မွတ်ႇပႅတ်ႈ/ ဢမ်ႇမွတ်ႇ ၵၢၼ်ၶူၼ်ႉလူ", + "revisiondelete": "မွတ်ႇပႅတ်ႈ/ ဢမ်ႇမွတ်ႇ ၵၢၼ်ၶူၼ်ႉၶႆႈ", "revdelete-nooldid-title": "ၵၢၼ်ၶူၼ်ႉလူ ဢၼ်ယိူင်းၸူးၼၼ်ႉ ၽိတ်းဝႆႉ", "revdelete-no-file": "ၾၢႆႇဢၼ်မၵ်းမၼ်ႈဝႆႉၼၼ်ႉ မၼ်းဢမ်ႇလႆႈမီးဝႆႉ", - "revdelete-show-file-confirm": "ၸဝ်ႈၵဝ်ႇ လပ်ႉလွင်းယဝ်ႉႁႃႈဝႃႈ တေၶႂ်ႈတူၺ်း ၵၢၼ်ၶူၼ်ႉလူ ၶွင်ၾၢႆႇ ဢၼ်လႆႈမွတ်ႇပႅတ်ႈၵႂႃႇၼၼ်ႉ။ \"<nowiki>$1</nowiki>\" ၵႃႇတီႈ $2 တေႃႇ $3?", + "revdelete-show-file-confirm": "ၸဝ်ႈၵဝ်ႇ လပ်ႉလွင်းယဝ်ႉႁႃႈဝႃႈ တေၶႂ်ႈတူၺ်း ၵၢၼ်ၶူၼ်ႉၶႆႈ ၶွင်ၾၢႆႇ ဢၼ်လႆႈမွတ်ႇပႅတ်ႈၵႂႃႇၼၼ်ႉ။ \"<nowiki>$1</nowiki>\" ၵႃႇတီႈ $2 တေႃႇ $3?", "revdelete-show-file-submit": "ၸႂ်ႈယဝ်ႉ", - "revdelete-selected-text": "{{PLURAL:$1|ၵၢၼ်ၶူၼ်ႉလူ ဢၼ်လိူၵ်ႈဝႆႉ|ၵၢၼ်ၶူၼ်ႉလူ ၸိူဝ်းလိူၵ်ႈဝႆႉ}} ၶွင် [[:$2]]:", + "revdelete-selected-text": "{{PLURAL:$1|ၵၢၼ်ၶူၼ်ႉၶႆႈ ဢၼ်လိူၵ်ႈဝႆႉ|ၵၢၼ်ၶူၼ်ႉၶႆႈ ၸိူဝ်းလိူၵ်ႈဝႆႉ}} ၶွင် [[:$2]]:", "revdelete-selected-file": "{{PLURAL:$1|ၾၢႆပိူဝ်းသျိၼ်း ဢၼ်လိူၵ်ႈဝႆႉ|ၾၢႆႇပိူဝ်းသျိၼ်း ၸိူဝ်းလိူၵ်ႈဝႆႉ}} ၶွင် [[:$2]]:", "logdelete-selected": "{{PLURAL:$1|သဵၼ်ႈမၢႆ လွင်ႈႁဵတ်းသၢင်ႈ ဢၼ်လိူၵ်ႈဝႆႉ|သဵၼ်ႈမၢႆ လွင်ႈႁဵတ်းသၢင်ႈ ၸိူဝ်းလိူၵ်ႈဝႆႉ}}:", - "revdelete-text-text": "ၵၢၼ်ၶူၼ်ႉလူ ဢၼ်မွတ်ႇပႅတ်ႈၵႂႃႇၼၼ်ႉ မၼ်း​တိုၵ်ႉတေ ဢွၵ်ႇၼႄဝႆႉၵႃႈတီႈ ပိုၼ်း ၼႃႈလိၵ်ႈ၊ ၵူၺ်းၵႃႈဝႃႈ ၶေႃႈၶဝ်ႈပႃး ဢၼ်ၵိုၵ်းဝႆႉမၼ်းၼၼ်ႉတႄႉ တေဢမ်ႇၸၢင်ႈဢဝ်ၸႂ်ႉလႆႈၵႃႈတီႈ ၵူၼ်းတင်းၼမ်ယဝ်ႉ။", + "revdelete-text-text": "ၵၢၼ်ၶူၼ်ႉၶႆႈ ဢၼ်မွတ်ႇပႅတ်ႈၵႂႃႇၼၼ်ႉ မၼ်း​တိုၵ်ႉတေ ဢွၵ်ႇၼႄဝႆႉၵႃႈတီႈ ပိုၼ်း ၼႃႈလိၵ်ႈ၊ ၵူၺ်းၵႃႈဝႃႈ ၶေႃႈၶဝ်ႈပႃး ဢၼ်ၵိုၵ်းဝႆႉမၼ်းၼၼ်ႉတႄႉ တေဢမ်ႇၸၢင်ႈဢဝ်ၸႂ်ႉလႆႈၵႃႈတီႈ ၵူၼ်းတင်းၼမ်ယဝ်ႉ။", "revdelete-text-file": "ၾၢႆႇပိူဝ်းသျိၼ်း ဢၼ်မွတ်ႇပႅတ်ႈၵႂႃႇၼၼ်ႉ မၼ်း​တိုၵ်ႉတေ ဢွၵ်ႇၼႄဝႆႉၵႃႈတီႈ ပိုၼ်း ၾၢႆႇ၊ ၵူၺ်းၵႃႈဝႃႈ ၶေႃႈၶဝ်ႈပႃး ဢၼ်ၵိုၵ်းဝႆႉမၼ်းၼၼ်ႉတႄႉ တေဢမ်ႇၸၢင်ႈဢဝ်ၸႂ်ႉလႆႈၵႃႈတီႈ ၵူၼ်းတင်းၼမ်ယဝ်ႉ။", "logdelete-text": "သဵၼ်ႈမၢႆ လွင်ႈႁဵတ်းသၢင်ႈ ဢၼ်လႆႈမွတ်ႇပႅတ်ႈၵႂႃႇၼၼ်ႉ မၼ်း​တိုၵ်ႉတေ ဢွၵ်ႇၼႄဝႆႉၵႃႈတီႈ သဵၼ်ႈမၢႆ၊ ၵူၺ်းၵႃႈဝႃႈ ၶေႃႈၶဝ်ႈပႃး ဢၼ်ၵိုၵ်းဝႆႉမၼ်းၼၼ်ႉတႄႉ တေဢမ်ႇၸၢင်ႈဢဝ်ၸႂ်ႉလႆႈၵႃႈတီႈ ၵူၼ်းတင်းၼမ်ယဝ်ႉ။", "revdelete-text-others": "သင်ၸိူဝ်ႉဝႃႈ ဢမ်ႇလႆႈ မၵ်ႈသႂ်ႇဝႆႉ လွင်ႈႁႄႉတၢပ်ႈသင်ၼႆတႄႉ ၽူႈၵုမ်းထိင်း မၢင်ၸိူဝ်းၼႆႉ တိုၵ်ႉတေဢဝ်ၸႂ်ႉလႆႈ ၶေႃႈၶဝ်ႈပႃး ဢၼ်လပ်ႉဝႆႉသေ တႃႇတေၶိုၼ်းဢမ်ႇမွတ်ႇ ဢၼ်ၼၼ်ႉ။", "revdelete-confirm": "ၶႅၼ်းတေႃႈ ၼႄႉၼွၼ်းပၼ်ဝႃႈ ၸဝ်ႈၵဝ်ႇ ယိူင်းဢၢၼ်း ၶႂ်ႈႁဵတ်းဢၼ်ၼႆႉယူႇတႄႉ ဢၼ်ဝႃႈၼၼ်ႉ၊ ယဝ်ႉၵေႃႈ ၸဝ်ႈၵဝ်ႇႁူႉပွင်ႇပႃးဝႃႈ လွင်ႈတေသိုပ်ႇပဵၼ်ၸွမ်းၽၢႆႇလင်လႄႈ လွင်ႈဝႃႈၸဝ်ႈၵဝ်ႇ ႁဵတ်းဢၼ်ၼႆႉၸွမ်းၼင်ႇ လွင်ႈလႆႈၸႂ်ၵၼ်တင်း \n [[{{MediaWiki:Policy-url}}|the policy]].", "revdelete-suppress-text": "လွင်ႈတဵၵ်းၵိုတ်း ၼႆႉ <strong>ထုၵ်ႇလီ ၸႂ်ႉ</strong> တွၼ်ႈတႃႇ လွင်ႈတၢင်း ၸိူင်ႉၼင်ႇ ပႃႈတႂ်ႈၼႆႉၵူၺ်း။\n* ၶေႃႈပူင်လွၼ်ႉၶၢဝ်ႇ ဢၼ်ဢၢပ်ႈပဵၼ်လႆႈ\n* လွၼ်ႉၶၢဝ်ႇသုၼ်ႇတူဝ် ဢၼ်ဢမ်ႇဢၢပ်ႈ သၢင်ႇတေႃႇ\n*: <em>ႁဵင်းလိၵ်ႈႁိူၼ်း လႄႈ မၢႆၾူင်း၊ မၢႆၶႅပ်းၽၢင်တူဝ် ၸၵႂႃႇၸိူဝ်းၼႆႉ</em>", "revdelete-legend": "မၵ်းသႂ်ႇပၼ် လွင်ႈႁႄႉၵင်ႈ တႃႇႁၼ်လႆႈ", - "revdelete-hide-text": "လိၵ်ႈၶူၼ်ႉလူ", + "revdelete-hide-text": "လိၵ်ႈၶူၼ်ႉၶႆႈ", "revdelete-hide-image": "လပ်ႉ ၶေႃႈပႃးၼႂ်း ၾၢႆႇ", "revdelete-hide-name": "လပ်ႉ ၶေႃႈယိူင်း လႄႈ ၽၢင်ၵိုၵ်း", "revdelete-hide-comment": "မႄးထတ်း ႁုဝ်ႁုပ်ႈ", @@ -726,9 +730,9 @@ "revdelete-radio-set": "လပ်ႉဝႆႉ", "revdelete-radio-unset": "ႁၼ်လႆႈ", "revdelete-suppress": "တဵၵ်းၵိုတ်းၶေႃႈမုၼ်း ၸိူဝ်းလုၵ်ႈတီႈ ၽူႈၵုမ်းၵၢၼ်ၶဝ် လႄႈ တၢင်ႇၸိူဝ်း", - "revdelete-unsuppress": "ထွၼ်ပႅတ်ႈ လွင်ႈၵႅတ်ႇႁႄႉ ဢၼ်မီးတီႈ ၵၢၼ်ၶူၼ်ႉလူ ဢၼ်ဢဝ်ဝႆႉၶိုၼ်းၼၼ်ႉ။", + "revdelete-unsuppress": "ထွၼ်ပႅတ်ႈ လွင်ႈၵႅတ်ႇႁႄႉ ဢၼ်မီးတီႈ ၵၢၼ်ၶူၼ်ႉၶႆႈ ဢၼ်ဢဝ်ဝႆႉၶိုၼ်းၼၼ်ႉ။", "revdelete-log": "လွင်ႈတၢင်း :", - "revdelete-submit": "သိုပ်ႇႁဵတ်း တွၼ်ႈတႃႇ {{PLURAL:$1|ၵၢၼ်ၶူၼ်ႉလူ|ၵၢၼ်ၶူၼ်ႉလူၸိူဝ်း}}ဢၼ်လိူၵ်ႈဝႆႉ", + "revdelete-submit": "သိုပ်ႇႁဵတ်း တွၼ်ႈတႃႇ {{PLURAL:$1|ၵၢၼ်ၶူၼ်ႉၶႆႈ|ၵၢၼ်ၶူၼ်ႉၶႆႈ.}}ဢၼ်လိူၵ်ႈဝႆႉ", "revdelete-success": "လွင်ႈႁၼ်လႆႈ ၵၢၼ်ၶူၼ်ႉလူၼႆႉ ပဵၼ် ဢၢပ်ႉတိတ်ႉၵႂႃႇယဝ်ႉ။", "revdelete-failure": "လွင်ႈႁၼ်လႆႈ ၵၢၼ်ၶူၼ်ႉလူၼႆႉ ဢမ်ႇပႆႇပဵၼ် ဢၢပ်ႉတိတ်ႉလႆႈ။\n$1", "logdelete-success": "မၵ်းသႂ်ႇ လွင်ႈႁၼ်လႆႈ သဵၼ်ႈမၢႆ", @@ -739,15 +743,15 @@ "revdelete-otherreason": "တၢင်ႇၸိူဝ်း / လွင်ႈတၢင်း ထႅမ်သႂ်ႇထႅင်ႈ", "revdelete-reasonotherlist": "လွင်ႈတၢင်းတၢင်ႇၸိူဝ်း", "revdelete-edit-reasonlist": "မႄးထတ်း လွင်ႈတၢင်း တႃႇမွတ်ႇ", - "revdelete-offender": "ၽူႈတႅမ်ႈ ၶေႃႈၶူၼ်ႉဢၢၼ်ႇ :", + "revdelete-offender": "ၽူႈတႅမ်ႈ ၶေႃႈၶူၼ်ႉၶႆႈ :", "suppressionlog": "သဵၼ်ႈမၢႆ တဵၵ်းၵိုတ်း", "mergehistory": "ပိုၼ်းၸိူဝ်း ႁူမ်ႈၼႃႈလိၵ်ႈ", - "mergehistory-box": "ဢဝ်ၶေႃႈၶူၼ်ႉဢၢၼ်ႇၶွင် သွင်ၼႃႈလိၵ်ႈၼႆႉ ႁူမ်ႈၵၼ်", + "mergehistory-box": "ဢဝ်ၶေႃႈၶူၼ်ႉၶႆႈတီႈ သွင်ၼႃႈလိၵ်ႈၼႆႉ ႁူမ်ႈၵၼ်", "mergehistory-from": "ၼႃႈလိၵ်ႈ ငဝ်ႈငႃႇ :", "mergehistory-into": "ၼႃႈလိၵ်ႈ ယိူင်းၸူး :", "mergehistory-list": "ပိုၼ်းမႄးထတ်း ဢၼ်ၸၢင်ႈႁူမ်ႈလႆႈ", "mergehistory-go": "ၼႄပၼ် ၵၢၼ်မႄးထတ်း ဢၼ်ၸၢင်ႈႁူမ်ႈၵၼ်လႆႈ", - "mergehistory-submit": "ၶေႃႈၶူၼ်ႉဢၢၼ်ႇ ႁူမ်ႈၵၼ်", + "mergehistory-submit": "ၶေႃႈၶူၼ်ႉၶႆႈ ႁူမ်ႈၵၼ်", "mergehistory-empty": "ၶေႃႈၶူၼ်ႉဢၢၼ်ႇ ဢၼ်တေၸၢင်ႈႁူမ်ႈၵၼ်လႆႈၼၼ်ႉ ဢမ်ႇမီး", "mergehistory-fail-bad-timestamp": "မိၵ်ႈၶၢဝ်းယၢမ်း ၼႆႉဢမ်ႇၸႂ်ႉလႆႈ", "mergehistory-fail-invalid-source": "ၼႃးလိၵ်ႈငဝ်ႈငႃႇ ၼႆႉ ဢမ်ႇၸႂ်ႉလႆႈ။", @@ -764,16 +768,16 @@ "mergelog": "သဵၼ်ႈမၢႆ ႁူမ်ႈၵၼ်", "revertmerge": "ၶိုၼ်းၸႅၵ်ႇဢွၵ်ႇ", "mergelogpagetext": "သဵၼ်ႈမၢႆ ၸိူဝ်းမီးတႂ်ႈၼႆႉ မၼ်းပဵၼ် သဵၼ်ႈမၢႆ ဢၼ်တိုၵ်ႉဢဝ်ပိုၼ်း ၼႃႈလိၵ်ႈဢၼ်ၼိုင်ႈ ၵႂႃႇလေႃႈၵၼ် ထႅင်ႈတၢင်ႇဢၼ်။", - "history-title": "ပိုၼ်းၶူၼ်ႉလူတွၼ်ႈတႃႇ \"$1\"", - "difference-title": "လွင်ႈပႅၵ်ႇပိူင်ႈ ၼႂ်းၵႄႈ လွင်ႈၶူၼ်ႉလူ တင်း \"$1\"", + "history-title": "ပိုၼ်းၶူၼ်ႉၶႆႈတွၼ်ႈတႃႇ \"$1\"", + "difference-title": "လွင်ႈပႅၵ်ႇပိူင်ႈ ၼႂ်းၵႄႈ လွင်ႈၶူၼ်ႉၶႆႈ တီႈ \"$1\"", "difference-title-multipage": "လွင်ႈပႅၵ်ႇပိူင်ႈ ၼႂ်းၵႄႈ ၼႃႈလိၵ်ႈ \"$1\" လႄႈ \"$2\"", "difference-multipage": "(လွင်ႈပႅၵ်ႇပိူင်ႈ ၼႂ်းၵႄႈ ၼႃႈလိၵ်ႈ)", "lineno": "ထႅဝ် $1:", - "compareselectedversions": "ၼိူင်းၵၼ်တူၺ်း ၶေႃႈၶူၼ်ႉဢၢၼ်ႇ ၸိူဝ်းလိူၵ်ႈဝႆႉ", - "showhideselectedversions": "လႅၵ်ႈလၢႆႈ ၵၢၼ်ႁၼ်လႆႈ ၶွင် ၶေႃႈၶူၼ်ႉဢၢၼ်ႇ ၸိူဝ်းလိူၵ်ႈဝႆႉ", + "compareselectedversions": "ၼိူင်းၵၼ်တူၺ်း ၶေႃႈၶူၼ်ႉၶႆႈ ၸိူဝ်းလိူၵ်ႈဝႆႉ", + "showhideselectedversions": "လႅၵ်ႈလၢႆႈ ၵၢၼ်ႁၼ်လႆႈ ၶွင် ၶေႃႈၶူၼ်ႉၶႆႈ ၸိူဝ်းလိူၵ်ႈဝႆႉ", "editundo": "ၶိုၼ်ၶိုၼ်း", "diff-empty": "(ဢမ်ႇမီးလွင်ႈပႅၵ်ႇပိူင်ႈ)", - "diff-multi-sameuser": "({{PLURAL:$1|လွင်ႈမႄး ပၢၼ်ၵၢင် |$1 လွင်ႈၸိူဝ်းမႄး ပၢၼ်ၵၢင်}} ​ပေႃးတႃႇ ၽူႈၸႂ်တိုဝ်းမိူၼ်ၵၼ် တေဢမ်ႇၼႄပၼ်)", + "diff-multi-sameuser": "({{PLURAL:$1|လွင်ႈၶူၼ်ႉၶႆႈ ပၢၼ်ၵၢင် |$1 လွင်ႈၶူၼ်ႉၶႆႈ ပၢၼ်ၵၢင်}} ​ပေႃးတႃႇ ၽူႈၸႂ်တိုဝ်းမိူၼ်ၵၼ် တေဢမ်ႇၼႄပၼ်)", "searchresults": "ၶူၼ်ႉႁႃၺႃး", "searchresults-title": "ၶူၼ်ႉႁႃၺႃးတွၼ်ႈတႃႇ \"$1\"", "titlematches": "ႁူဝ်ၶေႃႈ ၼႃႈလိၵ်ႈ ၶူပ်းၵၼ်ယူႇ", @@ -797,13 +801,14 @@ "searchprofile-everything-tooltip": "သွၵ်ႈႁႃလမ်းၼႂ်းတင်းမူတ်း (ဢိၵ်ႇပႃးၼႃႈလိၵ်ႈ ဢုပ်ႇဢူဝ်း)", "searchprofile-advanced-tooltip": "သွၵ်ႈႁႃတီႈၼႂ်း ဢွင်ႈတီႈၸိုဝ်ႈႁင်းတူဝ်", "search-result-size": "$1 ({{PLURAL:$2|1 ၶေႃႈ|$2 ၶေႃႈ}})", - "search-redirect": "(ပိၼ်ႇသဵၼ်ႈတၢင်းၸူး $1)", + "search-redirect": "(ပိၼ်ႇဝၢႆႇမႃးတီႈ $1)", "search-section": "(တွၼ်ႈၵၼ် $1)", "search-category": "(တွၼ်ႈၵၼ် $1)", "search-suggest": "ၶႂ်ႈဝႃႈ $1 - ၼႆႁႃႉ", "search-interwiki-caption": "ၼႃႈၵၢၼ် ပီႈၼွင်ႉၵၼ်", "search-interwiki-default": "ၽွၼ်းလႆႈ ၵႃႈတီႈ $1 :", "search-interwiki-more": "(လိူဝ်)", + "search-interwiki-more-results": "ၽွၼ်းလႆႈ ဢၼ်ၼမ်လိူဝ်", "search-relatedarticle": "ၸိူဝ်းၵပ်းၵၢႆႇ", "searchrelated": "ၸိူဝ်းၵပ်းၵၢႆႇ", "searchall": "တင်းမူတ်း", @@ -847,8 +852,6 @@ "saveprefs": "ၵဵပ်းသိမ်း", "restoreprefs": "ၶိုၼ်းတမ်း ၵၢၼ်တင်ႈတင်းမူတ်း ႁႂ်ႈမိူၼ်ၵဝ်ႇၶိုၼ်း (ၵႃႈတီႈ တွၼ်ႈၵၼ်ၵူႈဢၼ်)", "prefs-editing": "တိုၵ်ႉမႄးထတ်းယူႇ", - "rows": "သၢႆတမ်း :", - "columns": "သၢႆၸုၵ်း :", "searchresultshead": "ၶူၼ်ႉႁႃ", "stub-threshold-sample-link": "တူဝ်ယၢင်ႇ", "stub-threshold-disabled": "ဢိုတ်းဝႆႉ", @@ -857,7 +860,7 @@ "recentchangescount": "တၢင်းၼမ်ၵၢၼ်မႄးထတ်း ဢၼ်တေၼႄဝႆႉၼင်ႇ ပိူင်ၵႅဝ်ႈ :", "prefs-help-recentchangescount": "ၼႆ့မၼ်းၶဝ်ႈပႃးဝႆႉ လွင်ႈလႅၵ်ႈလၢႆႈ မႂ်ႇမႂ်ႇ၊ ပိုၼ်းၼႃႈလိၵ်ႈ လႄႈ သဵၼ်ႈမၢႆ။", "savedprefs": "လွင်ႈလႆႈၸႂ်ၸဝ်ႈၵဝ်ႇၸိူဝ်းၼၼ်ႉ ထုၵ်ႇသိမ်းဝႆႉပၼ်ယဝ်ႉ။", - "savedrights": "သုၼ်ႇလႆႈၽူႈၸႂ်ႉတိုဝ်း {{GENDER:$1|$1}} ၼႆႉ ထုၵ်ႇသိမ်းဝႆႉပၼ်ယဝ်ႉ။", + "savedrights": "ၸုမ်းၽူႈၸႂ်ႉတိုဝ်း {{GENDER:$1|$1}} ၼႆႉ ထုၵ်ႇသိမ်းဝႆႉပၼ်ယဝ်ႉ။", "timezonelegend": "ၼႃႈလိၼ် ၶၢဝ်းယၢမ်း :", "localtime": "ၶၢဝ်းယၢဝ်း ၼႂ်းမိူင်း :", "timezoneuseserverdefault": "ၸႂ်ႉပိူင်ၵႅဝ်ႈ ဝီႇၶီႇ ($1)", @@ -915,22 +918,21 @@ "prefs-diffs": "လွင်ႈပႅၵ်ႇပိူင်ႈ", "prefs-help-prefershttps": "ငဝ်ႈၵုမ်းၵၢၼ်ၼႆႉ ပေႃးဝႃႈ ၶိုၼ်းၶဝ်ႈလွၵ်ႉဢိၼ်ႇထႅင်ႈၵမ်းၼင်ႇ ၸင်ႇတေလႅၵ်ႈလၢႆႈ။", "userrights": "လွင်ႈၸတ်းၵၢၼ်သုၼ်ႈလႆႈ ၽူႈၸႂ်ႉတိုတ်း", - "userrights-lookup-user": "ၸတ်းၵၢၼ် ၸုမ်းၽူႈၸႂ်ႉတိုဝ်း", + "userrights-lookup-user": "လိူၵ်ႈ ၽူႈၸႂ်ႉတိုဝ်း", "userrights-user-editname": "ပေႃႇသႂ်ႇပၼ် ၸိုဝ်ႈၽူႈၸႂ်ႉတိုဝ်း :", - "editusergroup": "မႄးထတ်း {{GENDER:$1|ၽူႈၸႂ်ႉတိုဝ်း}} ၸုမ်း", + "editusergroup": "ပိုတ်ႇၸုမ်း ၽူႈၸႂ်ႉတိုဝ်း", "editinguser": "လႅၵ်ႈလၢႆႈသုၼ်ႇလႆႈ ၽူႈၸႂ်ႉတိုဝ်း ၶွင် {{GENDER:$1|ၽူႈၸႂ်ႉတိုဝ်း}} <strong>[[User:$1|$1]]</strong> $2", - "userrights-editusergroup": "မႄးထတ်းၸိူဝ်းၸုမ်း ၽူႈၸႂ်ႉတိုဝ်း", + "userrights-editusergroup": "မႄးထတ်း ၸုမ်း{{GENDER:$1|ၽူႈၸႂ်ႉတိုဝ်း}}", + "userrights-viewusergroup": "တူၺ်း ၸုမ်း {{GENDER:$1|ၽူႈၸႂ်ႉတိုဝ်း}}", "saveusergroups": "သိမ်း ၸိူဝ်းၸုမ်း {{GENDER:$1|ၽူႈၸႂ်ႉတိုဝ်း}}", - "userrights-groupsmember": "ၽူႈၶဝ်ႈၸုမ်း ၶွင် :", - "userrights-groupsmember-auto": "ၽူႈၶဝ်ႈၸုမ်းပႃးဝႆႉ ၶွင် :", + "userrights-groupsmember": "ၽူႈၶဝ်ႈၸုမ်း တီႈ :", + "userrights-groupsmember-auto": "ၽူႈၶဝ်ႈၸုမ်းပႃးဝႆႉ တီႈ :", "userrights-reason": "လွင်ႈတၢင်း :", "userrights-no-interwiki": "ၸဝ်ႈၵဝ်ႇ ဢမ်ႇမီးသုၼ်ႇၶႂၢင်းပၼ် တွၼ်ႈတႃႇ မႄးထတ်း သုၼ်ႇၽူႈၸႂ်ႉတိုဝ်းၵႃႈတီႈဝီႇၶီႇ တၢင်ႇဢၼ်။", "userrights-nodatabase": "ယွင်ၶေႃႈမုၼ်း $1 ၼႆႉဢမ်ႇမီး ဢမ်ႇၼၼ် မၼ်းဢမ်ႇၸႂ်ႈ လူဝ်ႇၵႄႇ။", - "userrights-notallowed": "ၸဝ်ႈၵဝ်ႇဢမ်ႇလႆႈမီးသုၼ်ႇၶႂၢင်းပၼ် တွၼ်ႈတႃႇ တေထႅမ်သႂ်ႇ ဢမ်ႇၼၼ် ထွၼ်ပႅတ်ႈ သုၼ်ႇလႆႈ ၽူႈၸႂ်ႉတိုဝ်း", "userrights-changeable-col": "ၸုမ်း ၸိူဝ်းၸဝ်ႈၵဝ်ႇ ၸၢင်ႈလႅၵ်ႈလၢႆႈ", "userrights-unchangeable-col": "ၸုမ်း ၸိူဝ်းၸဝ်ႈၵဝ်ႇ ဢမ်ႇၸၢင်ႈလႅၵ်ႈလၢႆႈ", "userrights-conflict": "လွင်ႈလႅၵ်ႈလၢႆႈ သုၼ်ႇၽူႈၸႂ်ႉတိုဝ်းၼၼ်ႉ မီးလွင်ႈယုင်ႈယၢင်ႈဝႆႉ။ ၶႅၼ်းတေႃႈ ၶိုၼ်းထတ်းတူၺ်းပၼ် သေ ၶိုၼ်းၼႄႉၼွၼ်းပၼ် လွင်ႈလႅၵ်ႈလၢႆႈၸဝ်ႈၵဝ်ႇလႄႈ။", - "userrights-removed-self": "ၸဝ်ႈၵဝ်ႇထွၼ်ပႅတ်ႇ သုၼ်ႇလႆႈတူဝ်ၸဝ်ႈၵဝ်ႇ။ ယွၼ်ႉၼၼ်လႄႈ ၸဝ်ႈၵဝ်ႇ တေဢမ်ႇၸၢင်ႈၶဝ်ႈၸႂ်ႉ ၼႃႈလိၵ်ႈၼႆႉလႆႈယဝ်ႉ။", "group": "ၸုမ်း :", "group-user": "ၽူႈၸႂ်ႉတိုဝ်း", "group-autoconfirmed": "ၽူႈၸႂ်ႉတိုဝ်း ၸိူဝ်းၼႄႉၼွၼ်းတူဝ်ႁင်းၵူၺ်း", @@ -973,12 +975,12 @@ "right-delete": "မွတ်ႇပႅတ်ႈ ၼႃႈလိၵ်ႈ", "right-bigdelete": "မွတ်ႇပႅတ်ႈၼႃႈ ဢၼ်ၸိူၵ်းမီးဝႆႉ ပိုၼ်းယႂ်ႇၵႂၢင်ႈ", "right-deletelogentry": "မွတ်ႇပႅတ်ႈ လႄႈ ဢမ်ႇမွတ်ႇပႅတ်ႈ သဵၼ်ႈမၢႆသႂ်ႇသေ မၵ်းမၼ်ႈဝႆႉ", - "right-deleterevision": "မွတ်ႇပႅတ်ႈ လႄႈ ဢမ်ႇမွတ်ႇပႅတ်ႈ ပိူဝ်းသျိၼ်းၼႃႈလိၵ်ႈ ၸိူဝ်းမၵ်းမၼ်ႈဝႆႉ", + "right-deleterevision": "မွတ်ႇပႅတ်ႈ လႄႈ ဢမ်ႇမွတ်ႇပႅတ်ႈ ၶေႃႈၶူၼ်ႉၶႆႈၼႃႈလိၵ်ႈ ၸိူဝ်းမၵ်းမၼ်ႈဝႆႉ", "right-deletedhistory": "တူၺ်း ပိုၼ်းၸိူဝ်းသႂ်ႇဝႆႉ ဢၼ်လႆႈမွတ်ႇပႅတ်ႈၵႂႃႇ၊ ဢမ်ႇတၢပ်ႈလူဝ်ႇ လိၵ်ႈဢၼ်ၵွင်ႉၵၢႆႇ ၶဝ်ဝႆႉ။", - "right-deletedtext": "တူၺ်း လိၵ်ႈၸိူဝ်းမွတ်ႇပႅတ်ႈဝႆႉ​လႄႈ လႅၵ်ႈလၢႆႈပၼ် ၼႂ်းၵႄႈ ပိူဝ်းသျိၼ်း ၸိူဝ်းမွတ်ႇပႅတ်ႈဝႆႉ။", + "right-deletedtext": "တူၺ်း လိၵ်ႈၸိူဝ်းမွတ်ႇပႅတ်ႈဝႆႉ​လႄႈ လႅၵ်ႈလၢႆႈပၼ် ၼႂ်းၵႄႈ ၶေႃႈၶူၼ်ႉၶႆႈ ၸိူဝ်းမွတ်ႇပႅတ်ႈဝႆႉ။", "right-browsearchive": "ၶူၼ်ႉႁႃ ၼႃႈလိၵ်ႈ ၸိူဝ်းမွတ်ႇပႅတ်ႈၵႂႃႇ", "right-undelete": "ဢဝ်ၶိုၼ်း ၼႃႈလိၵ်ႈ", - "right-suppressrevision": "တူၺ်း၊ သိူင်ႇလပ်ႉ လႄႈ ၼႄၶိုၼ်း ၶေႃႈၶူၼ်ႉလူ ၼႃႈလိၵ်ႈၸိူဝ်းမၵ်းမၼ်ႈဝႆႉ ၵႃႈတီႈ ၽူႈၸႂ်ႉတိုဝ်း သေၵေႃႉၵေႃႉ", + "right-suppressrevision": "တူၺ်း၊ သိူင်ႇလပ်ႉ လႄႈ ၼႄၶိုၼ်း ၶေႃႈၶူၼ်ႉၶႆႈ ၼႃႈလိၵ်ႈၸိူဝ်းမၵ်းမၼ်ႈဝႆႉ ၵႃႈတီႈ ၽူႈၸႂ်ႉတိုဝ်း သေၵေႃႉၵေႃႉ", "right-viewsuppressed": "တူၺ်း ၶေႃႈၶူၼ်ႉလူ ဢၼ်သိူင်ႇဝႆႉ ၵႃႈတီႈ ၽူႈၸႂ်ႉတိုဝ်း သေၵေႃႉၵေႃႉ", "right-suppressionlog": "တူၺ်း သဵၼ်ႈမၢႆႇ သုၼ်ႇတူဝ်", "right-block": "​ႁႄႉတတ်း ၽူႈၸႂ်ႉတိုဝ်းတၢင်ႇၸိူဝ်း ၵႃႈတီႈ ၵၢၼ်မႄးထတ်း", @@ -1007,7 +1009,6 @@ "right-userrights-interwiki": "မႄးထတ်း သုၼ်ႇလႆႈ ၽူႈၸႂ်ႉတိုဝ်း ၸိူဝ်းပဵၼ် ၽူႈၸႂ်ႉတိုဝ်း ဢၼ်မီးဝႆႉယူႇ ၵႃႈတီႈၼိူဝ် ဝီႇၶီႇတၢင်ႇၸိူဝ်း", "right-siteadmin": "ၶတ်းသေႃး လႄႈ ဢမ်ႇၶတ်းသေႃး ယွင်ၶေႃႈမုၼ်း", "right-sendemail": "သူင်ႇဢီးမေးလ်ၸူး ၽူႈၸႂ်ႉတိုဝ်း တၢင်ႇၸိူဝ်း", - "right-passwordreset": "တူၺ်း ဢီးမေး တင်ႈၶိုၼ်း ၶေႃႈလပ်ႉ", "right-managechangetags": "ၵေႃႇသၢင်ႈ လႄႈ (ဢမ်ႇ) တူင်ႉတိုၼ်ႇ [[Special:Tags|tags]]", "right-deletechangetags": "မွတ်ႇပႅတ်ႈ [[Special:Tags|tags]] ၵႃႈတီႈ ယွင်ၶေႃႈမုၼ်း", "grant-generic": "\"$1\" ထုပ်ႉႁေႃႇ သုၼ်ႇလႆႈ", @@ -1019,7 +1020,7 @@ "grant-blockusers": "ၽူႈၸႂ်ႉတိုဝ်း ၸိူဝ်းႁႄႉတတ်း လႄႈ ဢမ်ႇႁႄႉတတ်း", "grant-createaccount": "ၵေႃႇသၢင်ႈဢၶွင်ႉ", "grant-createeditmovepage": "ၵေႃႇသၢင်ႈ၊ မႄးထတ်း လႄႈ ၶၢႆႉဢွင်ႈ ၼႃႈလိၵ်ႈ", - "grant-delete": "မွတ်ႇ ၼႃႈလိၵ်ႈ၊ ၶူၼ်ႉလူ လႄ သဵၼ်ႈမၢႆ သႂ်ႇၶဝ်ႈ", + "grant-delete": "မွတ်ႇ ၼႃႈလိၵ်ႈ၊ ၶူၼ်ႉၶႆႈ လႄ သဵၼ်ႈမၢႆ သႂ်ႇၶဝ်ႈ", "grant-editinterface": "မႄးထတ်း လွၵ်းၸိုဝ်ႈ သိုဝ်ႇၶၢဝ်ႇဝီႇၶီႇ လႄႈ ၽူႈၸႂ်ႉတိုဝ်း CSS/JavaScript", "grant-editmycssjs": "မႄးထတ်း ၽူႈၸႂ်ႉတိုဝ်း CSS/JavaScript ၸဝ်ႈၵဝ်ႇ", "grant-editmyoptions": "မႄးထတ်း ငဝ်ႈၵုမ်းပိူင် ၽူႈၸႂ်ႉတိုဝ်း ၶွင်ၸဝ်ႈၵဝ်ႇ", @@ -1027,7 +1028,7 @@ "grant-editpage": "မႄးထတ်း ၼႃႈလိၵ်ႈ မီးယူႇ ယၢမ်းလဵဝ်ၼႆႉ", "grant-editprotected": "မႄးထတ်း ၼႃႈလိၵ်ႈၸိူဝ်း ႁႄႉၵင်ႈဝႆႉ", "grant-highvolume": "ၵၢၼ်မႄးထတ်း ဢၼ်ယႂ်ႇၵႂၢင်ႈ", - "grant-oversight": "လပ်ႉဝႆႉ ၽူႈၸႂ်ႉတိုဝ်း လႄႈ တဵၵ်းတဵင် ၶေႃႈၶူၼ်ႉလူ", + "grant-oversight": "လပ်ႉဝႆႉ ၽူႈၸႂ်ႉတိုဝ်း လႄႈ တဵၵ်းတဵင် ၶေႃႈၶူၼ်ႉၶႆႈ", "grant-sendemail": "သူင်ႇဢီးမေးလ်ၸူး ၽူႈၸႂ်ႉတိုဝ်း တၢင်ႇၸိူဝ်း", "grant-uploadeditmovefile": "လူတ်ႇၶိုၼ်ႈ၊ တၢင်တီႈ လႄႈ ၶၢႆႉၾၢႆႇ", "grant-uploadfile": "လူတ်ႇၶိုၼ်ႈ ၾၢႆႇဢၼ်မႂ်ႇ", @@ -1057,22 +1058,25 @@ "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-import": "ဢဝ်ၼႃႈလိၵ်ႈ ၸိူဝ်းလုၵ်ႉၵႃႈတီႈ ဝီႇၶီႇတၢင်ႇၸိူဝ်း သႂ်ႇၶဝ်ႈ", "action-importupload": "ဢဝ်ၼႃႈလိၵ်ႈၸိူဝ်း ၵႃႈတီႈၾၢႆႇလူတ်ႇၶိုၼ်ႈၼၼ်ႉ သႂ်ႇၶဝ်ႈ", + "action-patrol": "မၢႆ လွင်ႈမႄးထတ်း တၢင်ႇၸိူဝ်း ၼင်ႇ ထုၵ်ႇပႂ်ႉတူၺ်း", + "action-autopatrol": "လွင်ႈမႄးထတ်းၸဝ်ႈၵဝ်ႇ မၢႆဝႆႉယဝ်ႉၼင်ႇ ထုၵ်ႇပႂ်ႉတူၺ်း", "action-unwatchedpages": "တူၺ်းသဵၼ်ႈမၢႆ ၼႃႈလိၵ်ႈတူၺ်း ဢမ်ႇပႆႇလႆႈတူၺ်းဝႆႉၼၼ်ႉ", "action-mergehistory": "ဢဝ်ပိုၼ်းၶွင်ၼႃႈလိၵ်ႈ ႁူမ်ႈၵၼ်", "action-userrights": "မႄးထတ်းသုၼ်ႇလႆႈ တႃႇၽူႈၸႂ်ႉတိုဝ်း တင်းသဵင်ႈ", "action-userrights-interwiki": "မႄးထတ်း သုၼ်ႇလႆႈ ၽူႈၸႂ်ႉတိုဝ်း ၸိူဝ်းပဵၼ် ၽူႈၸႂ်ႉတိုဝ်း ဢၼ်မီးဝႆႉယူႇ ၵႃႈတီႈၼိူဝ် ဝီႇၶီႇတၢင်ႇၸိူဝ်း", "action-siteadmin": "ၶတ်းသေႃး လႄႈ ဢမ်ႇၶတ်းသေႃး ယွင်ၶေႃႈမုၼ်း", "action-sendemail": "သူင်ႇ ဢီးမေးလ်", + "action-editmyoptions": "မႄးထတ်း ငဝ်ႈၵုမ်းပိူင် ၸဝ်ႈၵဝ်ႇ", "action-editmywatchlist": "မႄးထတ်း သဵၼ်ႈမၢႆပႂ်ႉတူၺ်းၸဝ်ႈၵဝ်ႇ", "action-viewmywatchlist": "တူၺ်း သဵၼ်ႈမၢႆပႂ်ႉတူၺ်း ႁင်းၶွင်ၵဝ်ႇ", "action-viewmyprivateinfo": "တူၺ်း လွၼ်ႉၶၢဝ်ႇသုၼ်ႇတူဝ် ၸဝ်ႈၵဝ်ႇ", @@ -1080,7 +1084,9 @@ "action-editcontentmodel": "မႄးထတ်း ၽၢင်ႁၢင်ႈတူဝ်ၶဝ်ႈပႃး ၶွင်ၼႃႈလိၵ်ႈ", "action-managechangetags": "ၵေႃႇသၢင်ႈ လႄႈ (ဢမ်ႇ)တူင်ႉတိုၼ်ႇ တူဝ်တိင်", "action-applychangetags": "တိင်ၸပ်းၸွမ်းၼင်ႇ လွင်ႈလႅၵ်ႈလၢႆႈၸဝ်ႈၵဝ်ႇ", + "action-changetags": "ထႅမ်သႂ်ႇ လႄႈ ထွၼ်ပႅတ်ႈတိင်ၸိူဝ်းလႃႈလီႈ ၸပ်းသႂ်ႇဝႆႉ တီႈ ၵၢၼ်ၶူၼ်ႉၶႆႈ ဢၼ်လႂ် ဢၼ်ၼၼ်ႉလႄႈ သဵၼ်ႈမၢႆတင်းသဵင်ႈ။", "action-deletechangetags": "မွတ်ႇပႅတ်ႈ တိင်ႇၸိူဝ်းမီးယူႇ ၵႃႈတီႈ ယွင်ၶေႃႈမုၼ်း", + "action-purge": "လၢႆႈလၢင်ႉ ၼႃႈလိၵ်ႈၼႆႉ", "nchanges": "$1 {{PLURAL:$1|လႅၵ်ႈလၢႆႈ|ၸိူဝ်းလႅၵ်ႈလၢႆႈ}}", "enhancedrc-since-last-visit": "$1 {{PLURAL:$1|ၸဵမ်မိူဝ်ႈ ၵႂႃႇဢႅတ်ႇပွၵ်ႈၵမ်းလိုၼ်း}}", "enhancedrc-history": "ပိုၼ်း", @@ -1096,6 +1102,47 @@ "recentchanges-legend-heading": "<strong>ဢပုမ်ႇ:</strong>", "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (တူၺ်းပႃးထႅင်ႈ [[Special:NewPages|သဵၼ်ႈမၢႆ ၼႃႈလိၵ်ႈဢၼ်မႂ်ႇ]])", "recentchanges-submit": "ၼႄ", + "rcfilters-activefilters": "တူဝ်ထွင် ဢၼ်တူင်ႉၼိုင်", + "rcfilters-restore-default-filters": "ဝႆႉၶိုၼ်း တူဝ်ထွင် ပိူင်ၵႅဝ်ႈ", + "rcfilters-clear-all-filters": "ၽဵဝ်ႈလၢင်ႉ တူဝ်ထွင်တင်းမူတ်း", + "rcfilters-search-placeholder": "ထွင်ဢဝ် လွင်ႈလႅၵ်ႈလၢႆႈ ၸိူဝ်းႁဵတ်းၵႂႃႇ (ပိုတ်ႇႁႃ ဢမ်ႇၼၼ် တႄႇပေႃႉ)", + "rcfilters-invalid-filter": "ထွင်ႁႃ ၽိတ်းပိူင်ႈ", + "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-userExpLevel-newcomer-label": "ၵူၼ်းၼႃႈမႂ်ႇ", + "rcfilters-filter-userExpLevel-newcomer-description": "ဢေႇလိူဝ် ၵၢၼ်မႄးထတ်း ႑႐ ဢၼ် လႄႈ လွင်ႈတူင်ႉၼိုင် တႃႇသီႇဝၼ်း", + "rcfilters-filter-userExpLevel-learner-label": "ၽူႈလဵပ်ႈႁဵၼ်း", + "rcfilters-filter-userExpLevel-learner-description": "ၵၢၼ်တူင်ႉၼိုင်လႄႈ ၵၢၼ်မႄးထတ်း ဝၼ်းမၼ်း ၼမ်လိူဝ်သေ \"ၵူၼ်းၼႃႈမႂ်ႇ\"သေတႃႉ ဝၼ်းမၼ်းတိုၵ်ႉဢေႇလိူဝ်သေ \"ၽူႈၸႂ်ႉတိုဝ်း ၸိူဝ်းမီးတူဝ်ထူပ်း\"။", + "rcfilters-filter-userExpLevel-experienced-label": "ၽူႈၸႂ်ႉတိုဝ်း ၸိူဝ်းမီးတူဝ်ထူပ်း", + "rcfilters-filter-userExpLevel-experienced-description": "လွင်ႈတူင်ႉၼိုင် ၼမ်လိူဝ် ႓႐ ဝၼ်း လႄႈ လွင်ႈမႄးထတ်း ႕႐႐ ။", + "rcfilters-filtergroup-automated": "ၶဝ်ႈႁူမ်ႈႁင်းၵႂႃႇႁင်းမၼ်း", + "rcfilters-filter-bots-label": "ပွတ်ႉ", + "rcfilters-filter-bots-description": "ၶိူင်ႈႁဵတ်းႁင်းၶေႃ ၵေႃႉႁဵတ်းသၢင်ႈဝႆႉ လွင်ႈမႄးထတ်း", + "rcfilters-filter-humans-label": "ၵူၼ်း (ဢမ်ႇၸႂ်ႈပွတ်ႉ)", + "rcfilters-filter-humans-description": "ၽူႈမႄးထတ်း ပဵၼ်ၵူၼ်း ၵေႃႉ ႁဵတ်း ၵၢၼ်မႄးထတ်း။", + "rcfilters-filtergroup-significance": "လွင်ႈယိူင်းဢၢၼ်း", + "rcfilters-filter-minor-label": "လွင်ႈမူၼ်ႉမႄး ဢိတ်းဢီႈ", + "rcfilters-filter-minor-description": "မႄးထတ်း ၽူႈတႅမ်ႈလိၵ်ႈ ဢၼ်မၢႆၸပ်းဝႆႉၼင်ႇ တွၼ်ႈဢွၼ်ႇ။", + "rcfilters-filter-major-label": "ဢမ်ႇမီး ၵၢၼ်မႄးထွၼ်း တွၼ်ႈဢွၼ်ႇ", + "rcfilters-filter-major-description": "မႄးထတ်း ဢၼ်ဢမ်ႇမၢႆၸပ်းဝႆႉၼင်ႇ တွၼ်ႈဢွၼ်ႇ။", + "rcfilters-filtergroup-changetype": "လိူင်ႈ လွင်ႈလႅၵ်ႈလၢႆႈ", + "rcfilters-filter-pageedits-label": "မႄးထတ်းၼႃႈလိၵ်ႈ", + "rcfilters-filter-pageedits-description": "မႄးထတ်းၸူး လမ်းၼႂ်းဝီႇၶီႇ၊ လွင်ႈဢုပ်ႇဢူဝ်း၊ ၶေႃႈသပ်းလႅင်း တွၼ်ႈၵၼ်...", + "rcfilters-filter-newpages-label": "လွင်ႈၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈ", + "rcfilters-filter-newpages-description": "မႄးထတ်း ဢၼ်ႁဵတ်းပဵၼ် ၼႃႈလိၵ်ႈဢၼ်မႂ်ႇ", + "rcfilters-filter-categorization-label": "လႅၵ်ႈလၢႆႈ တွၼ်ႈၵၼ်", "rclistfrom": "ၼႄ လွင်ႈ​လႅၵ်ႈလၢႆႈဢၼ်မႂ်ႇ တႄႇတီႈ $2, $3", "rcshowhideminor": "$1 လွင်ႈမူၼ်ႉမႄး ဢိတ်းဢီႈ", "rcshowhideminor-show": "ၼႄ", @@ -1194,6 +1241,7 @@ "watchthisupload": "ပႂ်ႉတူၺ်းၾၢႆႇဢၼ်ၼႆႉ", "upload-dialog-title": "လူတ်ႇၶိုၼ်ႈၾၢႆႇ", "upload-dialog-button-cancel": "ဢမ်ႇႁဵတ်း", + "upload-dialog-button-back": "ႁူၼ်လင်", "upload-dialog-button-done": "ယဝ်ႉ", "upload-dialog-button-save": "ၵဵပ်းသိမ်း", "upload-dialog-button-upload": "လူတ်ႇၶိုၼ်ႈ", @@ -1228,7 +1276,7 @@ "backend-fail-connect": "ဢမ်ႇၸၢင်ႈၵွင်ႉသိုပ်ႇၸူး ဢွင်ႈသိမ်းသုတ်းလင် \"$1\" ။", "backend-fail-internal": "လွင်ႈၽိတ်းပိူင်ႈ ဢၼ်ဢမ်ႇႁူႉလွင်ႈမၼ်း လႆႈပဵၼ်ဝႆႉ ၵႃႈတီႈၼႂ်း ဢွင်ႈသိမ်းသုတ်းလင် \"$1\" ။", "backend-fail-contenttype": "ဢမ်ႇၸၢင်ႈတႅပ်းတတ်းလိူင်ႈၾၢႆႇ ဢၼ်တႃႇတေသိမ်းၵႃႈတီႈ \"$1\" ။", - "backend-fail-batchsize": "ဢွင်ႈတီႈသိမ်းသုတ်းလင် ထုၵ်ႇပၼ်ဝႆႉ ၸုမ်းၾၢႆႇ $1 ၾၢႆႇ\n{{PLURAL:$1|ၵၢၼ်ႁဵတ်း|ၵၢၼ်ႁဵတ်း}}; တီႈမၵ်းၶၢၼ်းမၼ်းပဵၼ် $2\n{{PLURAL:$2|ၵၢၼ်ႁဵတ်း|ၵၢၼ်ႁဵတ်း}}.", + "backend-fail-batchsize": "ဢွင်ႈတီႈသိမ်းသုတ်းလင် ထုၵ်ႇပၼ်ဝႆႉ ၸုမ်းၾၢႆႇ $1 ၾၢႆႇ\n{{PLURAL:$1|ၵၢၼ်ႁဵတ်း}}; တီႈမၵ်းၶၢၼ်းမၼ်းပဵၼ် $2\n{{PLURAL:$2|ၵၢၼ်ႁဵတ်း}}။", "backend-fail-usable": "ဢမ်ႇၸၢင်ႈလူ ဢမ်ႇၼၼ် ဢမ်ႇၸၢင်ႈတႅမ်ႈ ၾၢႆႇ \"$1\" ယွၼ်ႉပိူဝ်ႈဝႃႈ ၵၢၼ်လူတ်းပွႆႇ ဢမ်ႇတဵမ်ထူၼ်ႈ ဢမ်ႇၼၼ် ႁၢမ်းဝႆႉ ဢွင်ႈတီႈသိမ်း။", "filejournal-fail-dbconnect": "ဢမ်ႇၸၢင်ႈၵွင်ႉသိုပ်ႇၸူး ယေးၶေႃႈမုၼ်း ၵျႃႇၼႄႇ တွၼ်ႈတႃႇ ဢွင်ႈတီႈသိမ်းသုတ်းလင် \"$1\" ။", "filejournal-fail-dbquery": "ဢမ်ႇၸၢင်ႈဢၢပ်ႉတိတ်ႉ ယေးၶေႃႈမုၼ်း ၵျႃႇၼႄႇ တွၼ်ႈတႃႇ ဢွင်ႈတီႈသိမ်းသုတ်းလင် \"$1\" ။", @@ -1302,7 +1350,7 @@ "filehist-help": "တဵၵ်းၼိူဝ် ဝၼ်းထိ/ၶၢဝ်းယၢမ်း တႃႇႁၼ်ၾၢႆႇ ၼႂ်းဝၼ်းၼၼ်ႉ", "filehist-deleteall": "မွတ်ႇပႅတ်ႈမူတ်း", "filehist-deleteone": "မွတ်ႇပႅတ်ႈ", - "filehist-revert": "ပိၼ်ႇပွၵ်ႈၶိုၼ်း", + "filehist-revert": "ပိၼ်ႈၶိုၼ်း", "filehist-current": "ယၢမ်းလဵဝ်", "filehist-datetime": "ဝၼ်းထီႉ/ၶၢဝ်းယၢမ်း", "filehist-thumb": "ႁၢင်ႈလဵၵ်ႉ", @@ -1328,13 +1376,13 @@ "shared-repo-from": "လုၵ်ႉတီႈ $1", "shared-repo": "ယွင်ဢၼ်ၽႄႈၸႂ်ႉဝႆႉ", "upload-disallowed-here": "ၸဝ်ႈၵဝ်ႇတေဢမ်ႇၸၢင်ႈ တႅမ်တၢင်သႂ်ႇၼိူဝ် ၾၢႆႇဢၼ်ၼႆႉ", - "filerevert": "ၶူၼ်ႉပိၼ်ၸူး $1", + "filerevert": "ပိၼ်ႈၶိုၼ်းၸူး $1", "filerevert-legend": "ၶူၼ်ႉပိၼ်ႇၾၢႆႇ", - "filerevert-intro": "ၸဝ်ႈၵဝ်ႇ ၶူၼ်ႉပိၼ်ႇတေၶူၼ်ႉပိၼ်ႇ ၾၢႆႇ <strong>[[Media:$1|$1]]</strong> ၸူး [$4 မၢႆဢွၵ်ႇ ၼင်ႇ $3, $2].", + "filerevert-intro": "ၸဝ်ႈၵဝ်ႇတေပိၼ်ႈၶိုၼ်း ၾၢႆႇ <strong>[[Media:$1|$1]]</strong> ၸူး [$4 မၢႆဢွၵ်ႇ ၼင်ႇ $3, $2].", "filerevert-comment": "လွင်ႈတၢင်း :", - "filerevert-defaultcomment": "ၶူၼ်ႉပိၼ်ႇ ၸူး မၢႆဢွၵ်ႇ ၼင်ႇ $2, $1 ($3)", + "filerevert-defaultcomment": "ပိၼ်ႈၶိုၼ်း ၸူး မၢႆဢွၵ်ႇ ၼင်ႇ $2, $1 ($3)", "filerevert-submit": "ၶူၼ်ႉပိၼ်ႇ", - "filerevert-success": "<strong>[[Media:$1|$1]]</strong>ၼႆႉထုၵ်ႇၶူၼ်ႉပိၼ်ႇၸူး [$4 မၢႆဢွၵ်ႇၼင်ႇ ၶွင် $3, $2].", + "filerevert-success": "<strong>[[Media:$1|$1]]</strong>ၼႆႉထုၵ်ႇပိၼ်ႈၶိုၼ်းၸူး [$4 မၢႆဢွၵ်ႇၼင်ႇ ၶွင် $3, $2].", "filedelete": "မွတ်ႇပႅတ်ႈ $1", "filedelete-legend": "မွတ်ႇပႅတ်ႈ ၾၢႆႇ", "filedelete-intro": "ၸဝ်ႈၵဝ်ႇ တေမွတ်ႇပႅတ်ႈၾၢႆႇ <strong>[[Media:$1|$1]]</strong> ဢၼ်ၵိုၵ်းဝႆႉ ပိုၼ်းမၼ်းတင်းသဵင်ႈတင်းမူတ်း။", @@ -1360,7 +1408,7 @@ "unusedtemplates": "လွၵ်းပိူင် ဢၼ်ဢမ်ႇၸႂ်ႉဝႆႉ", "unusedtemplateswlh": "ႁဵင်းၵွင်ႉ တၢင်ႇၸိူဝ်း", "randompage": "ဢဝ်ၼႃႈလိၵ်ႈသၢင်ႇထုၵ်ႇဝႃႈ", - "randompage-nopages": "တၢင်းၽၢႆႇတႂ်ႈၼၼ်ႉ ဢမ်ႇမီးဝႆႉ ၼႃႈလိၵ်ႈသင်\n{{PLURAL:$2|လွၵ်းၸိုဝ်ႈ|လွၵ်းၸိုဝ်ႈ}}: $1.", + "randompage-nopages": "တၢင်းၽၢႆႇတႂ်ႈၼၼ်ႉ ဢမ်ႇမီးဝႆႉ ၼႃႈလိၵ်ႈသင်\n{{PLURAL:$2|လွၵ်းၸိုဝ်ႈ}}: $1 ။", "randomincategory": "ၼႃႈလိၵ်ႈၵမ်ႉသၢင်ႇတေႃႇ ၵႃႈတီႈၼႂ်း လိူင်ႈ", "randomincategory-invalidcategory": "\"$1\" ၼႆႉ ပဵၼ်ၸိုဝ်ႈလိူင်ႈ ဢၼ်ဢမ်ႇပဵၼ်လႆႈ။", "randomincategory-nopages": "မၼ်းဢမ်ႇမီးဝႆ ၼႃႈလိၵ်ႈသင် ၵႃႈတီႈၼႂ်း [[:Category:$1|$1]] လိူင်ႈ။", @@ -1402,14 +1450,14 @@ "withoutinterwiki-summary": "ၼႃႈလိၵ်ႈၸိူဝ်းပႃႈတႂ်ႈၼႆႉ မၼ်းဢမ်ႇၵွင်ႉဝႆႉၸူး မၢႆဢွၵ်ႇၽႃႇသႃႇၵႂၢမ်း တၢင်ႇၸိူဝ်း", "withoutinterwiki-legend": "တူဝ်ၼမ်းၼႃႈ", "withoutinterwiki-submit": "ၼႄ", - "fewestrevisions": "ၼႃႈလိၵ်ႈၸိူဝ်းမီး ၶေႃႈၶူၼ်ႉႁႃ ဢၼ်ဢေႇသေပိူၼ်ႈ", + "fewestrevisions": "ၼႃႈလိၵ်ႈၸိူဝ်းမီး ၶေႃႈၶူၼ်ႉၶႆႈ ဢၼ်ဢေႇသေပိူၼ်ႈ", "nbytes": "$1 {{PLURAL:$1|ၿႆႉ|ၿႆႉ}}", "ncategories": "{{PLURAL:$1|လိူင်ႈ|လိူင်ႈတင်းလၢႆ}}", "ninterwikis": "$1 {{PLURAL:$1|ဝီႇၶီႇၽၢႆႇၼႂ်း|ဝီႇၶီႇၸိူဝ်းၽၢႆႇၼႂ်း}}", "nlinks": "$1 {{PLURAL:$1|ႁဵင်းၵွင်ႉ|ႁဵင်းၵွင်ႉၼမ်}}", "nmembers": "$1 {{PLURAL:$1|member|ၽူႈၶဝ်ႈၸုမ်း}}", "nmemberschanged": "$1 → $2 {{PLURAL:$1|member|ၽူႈၶဝ်ႈၸုမ်း}}", - "nrevisions": "$1 {{PLURAL:$1|​ၶေႃႈၶူၼ်ႉလူ|ၶေႃႈၶူၼ်ႉလူ}}", + "nrevisions": "$1 {{PLURAL:$1|​ၶေႃႈၶူၼ်ႉၶႆႈ|ၶေႃႈၶူၼ်ႉၶႆႈ}}", "nimagelinks": "ၸႂ်ႈဝႆႉ တီႈ $1 {{PLURAL:$1|page|ၼႃႈလိၵ်ႈ}}", "ntransclusions": "ၸႂ်ႉဝႆႉၵႃႈတီႈၼိူဝ် $1 {{PLURAL:$|page|ၼႃႈလိၵ်ႈ}}", "specialpage-empty": "တွၼ်ႈတႃႇ ၶေႃႈပွင်ႇၼႄ ဢၼ်ၼႆႉၼႆႉ မၼ်းဢမ်ႇမီး ၽွၼ်းလႆႈ။", @@ -1434,7 +1482,7 @@ "mostcategories": "ၼႃႈလိၵ်ႈၸိူဝ်း မီးလိူင်ႈၼမ်သေပိူၼ်ႈ", "mostimages": "ၾၢႆႇ ၸိူဝ်းမီး ႁဵင်းၵွင်ႉၸူး ၼမ်သေပိူၼ်ႈ", "mostinterwikis": "ၼႃႈလိၵ်ႈ ၸိူဝ်းမီး ဝီႇၶီႇၼႂ်ႈ ၼမ်သေပိူၼ်ႈ", - "mostrevisions": "ၼႃႈလိၵ်ႈၸိူဝ်းမီး ၶေႃႈၶူၼ်ႉလူ ဢၼ်ၼမ်သေပိူၼ်ႈ", + "mostrevisions": "ၼႃႈလိၵ်ႈၸိူဝ်းမီး ၶေႃႈၶူၼ်ႉၶႆႈ ဢၼ်ၼမ်သေပိူၼ်ႈ", "prefixindex": "ၼႃႈလိၵ်ႈတင်းသဵင်ႈ ၸိူဝ်းဢၼ်ပႃး တူဝ်ၼမ်းၼႃႈ", "prefixindex-namespace": "ၼႃႈလိၵ်ႈတင်းသဵင်ႈ ဢၼ်ပႃး တူဝ်ၼမ်းၼႃႈ ($1 လွၵ်းၸိုဝ်ႈ)", "prefixindex-submit": "ၼႄ", @@ -1528,15 +1576,182 @@ "allpagessubmit": "ၶူၼ်ႉႁႃ", "allpagesprefix": "ၼႃးလိၵ်ႈဢၼ်ၼႄ ဢိၵ်ႇတင်း ၶေႃႈလူင်ႈၼႃႈ", "categories": "လိူင်ႈ", + "sp-deletedcontributions-contribs": "လွင်ႈၶဝ်ႈႁူမ်ႈ", + "linksearch": "သွၵ်ႈႁႃ ႁဵင်းၵွင်ႉၽၢႆႇၼွၵ်ႈ", + "linksearch-pat": "လၢႆးသွၵ်ႈႁႃႈ :", + "linksearch-ns": "ဢွင်ႈတီႈၸိုဝ်ႈ", + "linksearch-ok": "ၶူၼ်ႉႁႃ", + "linksearch-line": "$1 ၼႆႉ ၵွင်ႉဝႆႉၵႃႈတီႈ $2", + "listusersfrom": "ၼႄပၼ် ၽူႈၸႂ်ႉတိုဝ်း ၸိူဝ်းတႄႇမႃးတီႈ :", + "listusers-submit": "ၼႄ", + "listusers-noresult": "ဢမ်ႇႁၼ် ၽူႈၸႂ်ႉတိုဝ်း", + "listusers-blocked": "(ႁႄႉတတ်းဝႆႉ)", + "activeusers": "သဵၼ်ႈမၢႆ ၽူႈၸႂ်ႉတိုဝ်း ၸိူဝ်းတူင်ႉၼိုင်", + "activeusers-intro": "ၼႆႉတႄႉပဵၼ် သဵၼ်ႈမၢႆၽူႈၸႂ်ႉတိုဝ်း ၵေႃႉၸိူဝ်းဢၼ်မီး လွင်ႈတူင်ႉၼိုင် ၼႂ်းၵႄႈ ၵမ်းလိုၼ်းသုတ်း $1 {{PLURAL:$1|ဝၼ်း|ဝၼ်းလိူဝ်}}.", + "activeusers-count": "$1 {{PLURAL:$1|တူင်ႉၼိုင်|တူင်ႉၼိုင််}} in the last {{PLURAL:$3|ဝၼ်း|$3 ဝၼ်း}}", + "activeusers-from": "ၼႄပၼ် ၽူႈၸႂ်ႉတိုဝ်း ၸိူဝ်းတႄႇမႃးတီႈ :", + "activeusers-groups": "ၼႄပၼ် ၽူႈၸႂ်ႉတိုဝ်း ၸိူဝ်းပိူင်ႇၸူးၸုမ်း:", + "activeusers-excludegroups": "ပၢၵ်ႈဝႆႉ ၽူႈၸႂ်ႉတိုဝ်း ၸိူဝ်းပိူင်ႇၸူးၸုမ်း:", + "activeusers-noresult": "ဢမ်ႇႁၼ် ၽူႈၸႂ်ႉတိုဝ်း", + "activeusers-submit": "ၼႄပၼ် ၽူႈၸႂ်ႉတိုဝ်း ၸိူဝ်းမီးလွင်ႈတူင်ႉၼိုင်", + "listgrouprights": "သုၼ်ႇၸုမ်းၽူႈၸႂ်ႉတိုဝ်း", + "listgrouprights-summary": "ၸိူဝ်းၽၢႆႇတႂ်ႈၼႆႉ ပဵၼ်သဵၼ်ႈမၢႆၸုမ်းၽူႈၸႂ်ႉတိုဝ်း ၸိူဝ်းဢၼ်မၵ်းမၢႆဝႆႉတီႈ ဝီႇၶီႇဢၼ်ၼႆႉ၊ မၵ်းမၼ်ႈဝႆႉပၼ်ၸွမ်း သုၼ်ႇႁဵတ်းတွၼ်ႈတႃႇၶဝ်။ ၸိူဝ်းၼၼ်ႉတႄႉ တေၸၢင်ႈပဵၼ်လႆႈ [[{{MediaWiki:Listgrouprights-helppage}}|လွၼ်ႉၶၢဝ်ႇ ၸိူဝ်းထႅမ်သႂ်ႇဝႆႉ​ထႅင်ႈ]]", + "listgrouprights-key": "ၶေႃႈၶႆႈလၢတ်ႈ:\n* <span class=\"listgrouprights-granted\">သုၼ်ႇ ဢၼ်ၶႂၢင်းပၼ်ဝႆႉ</span>\n* <span class=\"listgrouprights-revoked\">သုၼ် ဢၼ်ယႃႉပႅတ်ႈဝႆႉ</span>", + "listgrouprights-group": "ၸုမ်း :", + "listgrouprights-rights": "သုၼ်ႇ", + "listgrouprights-helppage": "ၸွႆႈထႅမ်:သုၼ်ႇၸုမ်း", + "listgrouprights-members": "(သဵၼ်ႈမၢႆ ၽူႈၸႂ်ႉတိုဝ်း)", + "listgrouprights-addgroup": "ထႅမ်သႂ်ႇ {{PLURAL:$2|ၸုမ်း|ၸုမ်း.}}: $1", + "listgrouprights-removegroup": "ထွၼ်ပႅတ်ႈ {{PLURAL:$2|ၸုမ်း|ၸုမ်း.}}: $1", + "listgrouprights-addgroup-all": "ထႅမ်သႂ်ႇ ၸုမ်းတင်းသဵင်ႈ", + "listgrouprights-removegroup-all": "ထွၼ်ပႅတ်ႈ ၸုမ်းတင်းသဵင်ႈ", + "listgrouprights-addgroup-self": "ထႅမ် {{PLURAL:$2|ၸုမ်း|ၸုမ်း.}} သႂ်ႇၸူး ဢၶွင်ႉၶွင်ၸဝ်ႈၵဝ်ႇ: $1", + "listgrouprights-removegroup-self": "ထွၼ်ပႅတ်ႈ {{PLURAL:$2|ၸုမ်း}} ၵႃႈတီႈ ဢၶွင်ႉၶွင်ၸဝ်ႈၵဝ်ႇ: $1", + "listgrouprights-addgroup-self-all": "ထႅမ်ၸုမ်းတင်းသဵင်ႈ သႂ်ႇတီႈ ဢၶွင်ႉၶွင်ၸဝ်ႈၵဝ်ႇ", + "listgrouprights-removegroup-self-all": "ထွၼ်ၸုမ်းတင်းသဵင်ႈပႅတ်ႈ ၵႃႈတီႈ ဢၶွင်ႉၶွင်ၸဝ်ႈၵဝ်ႇ", + "listgrouprights-namespaceprotection-header": "လွင်ႈမၵ်းၶၢၼ်း ဢွင်ႈၸိုဝ်ႈ", + "listgrouprights-namespaceprotection-namespace": "ဢွင်ႈတီႈၸိုဝ်ႈ", + "listgrouprights-namespaceprotection-restrictedto": "သုၼ်ႇ ၸိူဝ်းပၼ်သုၼ်ႇ ၽူႈၸႂ်ႉတိုဝ်း တွၼ်ႈတႃႇမႄးထတ်း", + "listgrants": "ပၼ်သုၼ်ႇ", + "listgrants-summary": "ၸိူဝ်းၽၢႆႇတႂ်ႈၼႆႉ ပဵၼ်သဵၼ်ႈမၢႆ ၸိူဝ်းပၼ်သုၼ်ႇ ဢၼ်ဢိၵ်ႇတင်း သုၼ်ႇႁဵတ်းလႆႈ တႃႇ ၽူႈၸႂ်ႉတိုဝ်း။ ၽူႈၸႂ်ႉတိုဝ်းၶဝ် ၸၢင်ႈၼႄႉၼွၼ်းပၼ်ဢႅပ်ႉ တွၼ်ႈတႃႇၸႂ်ႉတိုဝ်း ဢၶွင်ႉၶွင်ၶဝ်၊ ၵူၺ်းၵႃႈဝႃႈ ဢိင်ၼိူဝ် ၽူႈၸႂ်ႉတိုဝ်း ပၼ်သုၼ်ႇဢႅပ်ႉၵႃႈႁိုဝ်ၵေႃႈ တေမီး လွင်ႈမၵ်းၶၢၼ်းမွၵ်ႈၼၼ်ႉ။ ဢႅပ်ႉၼိုင်ႈဢၼ်ၼႆႉ မၼ်းတေၸၢင်ႈ ႁဵတ်းသၢင်ႇၼင်ႇ တူဝ်ၽူႈၸႂ်ႉတိုဝ်းသေတႃႉ မၼ်းတေဢမ်ႇမီးသုၼ်ႇၸႂ်ႉၼင်ႇ တူဝ်ၽူႈၸႂ်ႉတိုဝ်း ၸၢင်ႈၸႂ်ႉၼၼ်ႉ။\nၼၼ်ႉတႄႉ တေၸၢင်ႈပဵၼ်လႆႈ [[{{MediaWiki:Listgrouprights-helppage}}|လွၼ်ႉၶၢဝ်ႇ ဢၼ်ထႅမ်သႂ်ႇဝႆႉထႅင်ႈ]] ဢၼ်ၵပ်းၵၢႆႇလူၺ်ႈ သုၼ်ႇဢၼ်လႂ်ဢၼ်ၼၼ်ႉ။", + "listgrants-grant": "ပၼ်သုၼ်ႇ", + "listgrants-rights": "သုၼ်ႇ", + "trackingcategories": "တွၼ်ႈၵၼ် ၸွမ်းႁွႆး", + "trackingcategories-msg": "တွၼ်ႈၵၼ် ၸွမ်းႁွႆး", + "trackingcategories-name": "ၸိုဝ်ႈ လိၵ်ႈပွင်ႇၶၢဝ်ႇ", + "restricted-displaytitle-ignored": "ၼႃႈလိၵ်ႈ ၸိူဝ်းၶၢမ်ႈဝႆႉ တႃႇၼႄႁူဝ်ၶေႃႈ", + "restricted-displaytitle-ignored-desc": "ၼႃႈလိၵ်ႈ ဢၼ်ၶၢမ်ႈဝႆႉ <code><nowiki>{{DISPLAYTITLE}}</nowiki></code> ယွၼ်ႉပိူဝ်ႈဝႃႈ မၼ်းဢမ်ႇမီး လွင်ႈငမ်ႇမႅၼ်ႈၵၼ်တင်း ႁူဝ်ၶေႃႈတႄႉတႄႉ ၶွင်ၼႃႈလိၵ်ႈ။", + "trackingcategories-nodesc": "​ၶေႃႈသပ်းလႅင်း ဢမ်ႇၶဝ်ႈပႃးဝႆႉ။", + "trackingcategories-disabled": "တွၼ်ႈၵၼ်ၼႆ့ ဢိုတ်းၸႂ်ႉဝႆႉ", + "mailnologin": "ဢမ်ႇသူင်ႇ ႁဵင်းလိၵ်ႈ", + "mailnologintext": "ၸဝ်ႈၵဝ်ႇ တေလႆႈ [[Special:UserLogin|လွၵ်ႉဢိၼ်ႇ]]ဝႆႉ သေ တီႈၼႂ်း [[Special:Preferences|preferences]]ၼၼ်ႉ တေလႆႈမီး ႁဵင်းလိၵ်ႈ ဢီးမေးလ် ၸဝ်ႈၵဝ်ႇ ဢၼ်ၸႂ်ႉလႆႈ တွၼ်ႈတႃႇသူင်ႇ ဢီးမေးလ်ၸူး ၽူႈၸႂ်ႉတိုဝ်းတၢင်ႇၵေႃႉ။", + "emailuser": "သူင်ႇဢီးမေးလ်ၸူး ၽူႈၸႂ်ႉတိုဝ်းၵေႃႉၼႆႉ", + "emailuser-title-target": "သူင်ႇဢီးမေးလ်ဢၼ်ၼႆႉ {{GENDER:$1|ၽူႈၸႂ်ႉတိုဝ်း}}", + "emailuser-title-notarget": "ၽူႈၸႂ်ႉတိုဝ်း ဢီးမေးလ်", + "defemailsubject": "{{SITENAME}} ဢီးမေးလ်ၵႃႈတီႈ ၽူႈၸႂ်ႉတိုဝ်း \"$1\"", + "usermaildisabled": "ဢီးမေးလ် ၽူႈၸႂ်ႉတိုဝ်း ဢိုတ်းၸႂ်ႉဝႆႉ", + "usermaildisabledtext": "ၸဝ်ႈၵဝ်ႇ တေဢမ်ႇၸၢင်ႈသူင်ႇ ဢီးမေးလ်ၸူး ၽူႈၸႂ်ႉတိုဝ်းတၢင်ႇၵေႃႉ ၸိူဝ်းမီးဝႆႉ တီႈၼိူဝ် ဝီႇၶီႇၼႆႉ", + "noemailtitle": "ဢမ်ႇမီး ႁဵင်းလိၵ်ႈဢီးမေးလ်", + "noemailtext": "ၽူႈၸႂ်ႉတိုဝ်းၵေႃႉၼႆႉ ဢမ်ႇလႆႈမၵ်းမၼ်ႈဝႆႉ ႁဵင်းလိၵ်ႈဢီးမေးလ် ဢၼ်ၸႂ်ႉလႆႈ။", + "nowikiemailtext": "ၽူႈၸႂ်ႉတိုဝ်းၵေႃႉၼႆႉ ထုၵ်ႇလိူၵ်ႈဝႆႉ တွၼ်ႈတႃႇ ဢမ်ႇႁၢပ်ႉဢဝ် ဢီးမေးလ် ၵႃႈတီႈ ၽူႈၸႂ်ႉတိုဝ်း တၢင်ႇၸိူဝ်း။", + "emailnotarget": "ဢမ်ႇမီးဝႆႉ ဢမ်ႇၼၼ် ၸိုဝ်ႈၽူႈၸႂ်ႉတိုဝ်း ၽိတ်းပိူင်ႈဝႆႉတွၼ်ႈတႃႇ ၽူႈႁပ်ႉဢဝ်။", + "emailtarget": "ထႅမ်သႂ်ႇပၼ် ၸိုဝ်ႈၽူႈၸႂ်ႉတိုဝ်း တႃႇ ၽူႈႁပ်ႉဢဝ်", + "emailusername": "ၸိုဝ်ႈၽူႈၸႂ်ႉတိုဝ်း :", + "emailusernamesubmit": "တၢင်ႇၼႄ", + "email-legend": "သူင်ႇဢီးမေးလ်ၸူး ၽူႈၸႂ်ႉတိုဝ်း {{SITENAME}} တၢင်ႇၸိူဝ်း", + "emailfrom": "မႃးတီႈ :", + "emailto": "ထိုင်:", + "emailsubject": "လွင်ႈတၢင်း :", + "emailmessage": "ၶေႃႈၽၢၵ်ႇ", + "emailsend": "သူင်ႇ", + "emailccme": "ဢဝ်ၶေႃႈၽၢၵ်ႇၵဝ်ၶႃႈ ၶိုၼ်းထုတ်ႇသူင်ႇဢီးမေးလ်ပၼ် ၵဝ်ၶႃႈ", + "emailccsubject": "ထုတ်ႇဢဝ် ၶေႃႈၽၢၵ်ႇၸဝ်ႈၵဝ်ႇၸူး $1: $2", + "emailsent": "ဢီးမေးလ် သူင်ႇယဝ်ႉယဝ်ႈ", + "emailsenttext": "ဢီးမေးလ်ၸဝ်ႈၵဝ်ႇ ထုၵ်ႇသူင်ႇပၼ်ၵႂႃႇယဝ်ႉ။", + "emailuserfooter": "ဢီးမေးလ်ၼႆႉ \"{{int:emailuser}}\" ၵၢၼ်တီႈ {{SITENAME}} ၵေႃႉ {{GENDER:$1|သူင်ႇ}} $1 ၸူး {{GENDER:$2|$2}}။ သင်ၸိူဝ်ႉဝႃႈ {{GENDER:$2|ၸဝ်ႈၵဝ်ႇ}} ၶႂ်ႈတွပ်ႇပၼ်ၶိုၼ်း ဢီးမေးလ်ဢၼ်ၼႆႉၼႆ ဢီးမေးလ် {{GENDER:$2|ၸဝ်ႈၵဝ်ႇ}} တေထုၵ်ႇ သူင်ႇပၼ်ၵႂႃႇၸူး {{GENDER:$1|ၽူႈသူင်ႇ ၵေႃႉငဝ်ႈတိုၼ်း}}၊ ႁဵင်းလိၵ်ႈဢီးမေးလ် {{GENDER:$2|ၸဝ်ႈၵဝ်ႇ}} တေၵႂႃႇ ဢွၵ်ႇၼႄတီႈ {{GENDER:$1|ၶဝ်}}ယဝ်ႈ။", + "usermessage-editor": "တူဝ်သူင်ႇၶေႃႈၶၢဝ်ႇ ပိူင်သၢင်ႈ", + "watchlist": "�သဵၼ်ႈမၢႆပႂ်ႉတူၺ်း", "mywatchlist": "သဵၼ်ႈမၢႆပႂ်ႉတူၺ်း", + "watchlistfor2": "တွၼ်ႈတႃႇ $1 $2", + "nowatchlist": "တီႈၼႂ်း သဵၼ်ႈမၢႆပႂ်ႉတူၺ်းၸဝ်ႈၵဝ်ႇၼၼ်ႉ ဢမ်ႇမီးဝႆႉသင်။", + "watchlistanontext": "ၶႅၼ်းတေႃႈ လွၵ်ႉဢိၼ်ႇ တွၼ်ႈတႃႇတူၺ်း ဢမ်ႇၼၼ် မႄးထတ်း လွင်ႈတၢင်း ၸိူဝ်းမီး တီႈ သဵၼ်ႈမၢႆပႂ်ႉတူၺ်း ၸဝ်ႈၵဝ်ႇ။", + "watchnologin": "ဢမ်ႇလႆႈၶဝ်ႈလွၵ်ႉဢိၼ်ႇဝႆ့", + "addwatch": "ထႅမ်သႂ်ႇၸူး သဵၼ်ႈမၢႆ ပႂ်ႉတူၺ်း", "watch": "ပႂ်ႉတူၺ်း", + "watchlist-hide": "သိူင်ႇ", + "watchlist-submit": "ၼႄ", + "wlshowtime": "ပွင်ႈၶၢဝ်းယၢမ်း တွၼ်ႈတႃႇ ဢွၵ်ႇၼႄ:", + "wlshowhideminor": "လွင်ႈမူၼ်ႉမႄး ဢိတ်းဢီႈ", + "wlshowhidebots": "ပွတ်ႉ", + "wlshowhideliu": "ၽူႈၸႂ်ႉတိုဝ်း ၸိူဝ်းတၢင်ႇမၢႆၽၢင်ဝႆႉ", + "wlshowhideanons": "ၽူႈၸႂ်ႉတိုဝ်း ၸိူဝ်းဢမ်ႇသႂ်ႇၸိုဝ်ႈ", + "wlshowhidepatr": "ၵၢၼ်မႄးထတ်း ဢၼ်ထုၵ်ႇပႂ်ႉတူၺ်း", + "wlshowhidemine": "ၵၢၼ်မႄးထတ်း ၵဝ်ၶႃႈ", + "wlshowhidecategorization": "ပၢႆးၼႃႈလိၵ်ႈ", + "watchlist-options": "ၵၼ်လိူၵ်ႈသၢင်ႈ တူဝ်ပႂ်ႉတူၺ်း", + "watching": "တိုၵ်ႉတူၺ်းယူႇ...", + "unwatching": "ဢမ်ႇတူၺ်းဝႆႉ...", + "enotif_impersonal_salutation": "{{SITENAME}} ၽူႈၸႂ်ႉတိုဝ်း", + "enotif_subject_deleted": "ၼႃႈလိၵ်ႈ {{SITENAME}} $1 ၼႆႉ ထုၵ်ႇ $2 ၵေႃႉ {{GENDER:$2|မူတ်ႇပႅတ်ႈ}} ဢေႃႈ။", + "enotif_subject_created": "ၼႃႈလိၵ်ႈ {{SITENAME}} $1 ၼႆႉ ထုၵ်ႇ $2 ၵေႃႉ {{GENDER:$2|ၵေႃႇသၢင်ႈဝႆႉ}} ဢေႃႈ", + "enotif_subject_moved": "ၼႃႈလိၵ်ႈ {{SITENAME}} $1 ၼႆႉ ထုၵ်ႇ $2 ၵေႃႉ {{GENDER:$2|ၶၢႆႉဝႆႉ}} ဢေႃႈ", + "enotif_subject_restored": "ၼႃႈလိၵ်ႈ {{SITENAME}} $1 ၼႆႉ ထုၵ်ႇ $2 ၵေႃႇ {{GENDER:$2|ဝႆႉတမ်းၶိုၼ်း}} ဢေႃႈ", + "enotif_subject_changed": "ၼႃႈလိၵ်ႈ {{SITENAME}} $1 ၼႆႉ ထုၵ်ႇ $2 ၵေႃႉ {{GENDER:$2|လႅၵ်ႈလၢႆႈဝႆႉ}} ဢေႃႈ", + "enotif_body_intro_deleted": "ၼႃႈလိၵ်ႈ {{SITENAME}} $1 ၼႆႉ ထုၵ်ႇ $2 ၵေႃႇ {{GENDER:$2|မွတ်ႇပႅတ်ႈဝႆႉ}} မိူဝ်ႈ $PAGEEDITDATE ၼၼ်ႉ၊ တူၺ်း တီႈ $3.", + "enotif_body_intro_created": "ၼႃႈလိၵ်ႈ {{SITENAME}} $1 ၼႆႉ ထုၵ်ႇ $2 ၵေႃႉ {{GENDER:$2|ၵေႃႇသၢင်ႈဝႆႉ}} မိူဝ်ႈ $PAGEEDITDATEၼၼ်ႉ၊ တွၼ်ႈတႃႇ ၵၢၼ်ၶူၼ်ႉၶႆႈ ယၢမ်းလဵဝ်ၼႆႉၼႆ တူၺ်းတီႈ $3 ၼၼ်ႉၶႃႈလႄႈ။", + "enotif_body_intro_moved": "ၼႃႈလိၵ်ႈ {{SITENAME}} $1 ၼႆႉ ထုၵ်ႇ $2 ၵေႃႉ {{GENDER:$2|ၶၢႆႉဝႆႉ}} မိူဝ်ႈ $PAGEEDITDATE ၼၼ်ႉ၊ တွၼ်ႈတႃႇ ၵၼ်ၶိုၼ်းဢၢၼ်ႇဢၼ် ယၢမ်းလဵဝ်ၼႆႉၼႆ တူၺ်းတီႈ $3 ၼၼ်ႉၶႃႈလႄႈ။", + "enotif_body_intro_restored": "ၼႃႈလိၵ်ႈ {{SITENAME}} $1 ၼႆႉ ထုၵ်ႇ $2 ၵေႃႉ {{GENDER:$2|တမ်းဝႆႉၶိုၼ်း}} မိူဝ်ႈ $PAGEEDITDATE ၼၼ်ႉ၊ တွၼ်ႈတႃႇ ၵၢၼ်ၶူၼ်ႉၶႆႈ ယၢမ်းလဵဝ်ၼႆႉၼႆတူၺ်း တီႈ $3 ၼၼ်ႉၶႃႈလႄႈ။", + "enotif_body_intro_changed": "ၼႃးလိၵ်ႈ {{SITENAME}} $1 ၼႆႉ ထုၵ်ႇ $2 ၵေႃႉ {{GENDER:$2|လႅၵ်ႈလၢႆႈဝႆႉ}} မိူဝ်ႈ $PAGEEDITDATE ၼၼ်ႉ၊ တွၼ်ႈတႃႇ ၵၼ်ၶိုၼ်းဢၢၼ်ႇဢၼ် ယၢမ်းလဵဝ်ၼႆႉၼႆ တူၺ်းတီႈ $3 ၼၼ်ႉၶႃႈလႄႈ။", + "enotif_lastvisited": "ၸဵမ်မိူဝ်ႈ ဝၢႆးသေ ၸဝ်ႈၵဝ်ႇ မႃးဢႅဝ်ႇ ပွၵ်ႇလိုၼ်းသုတ်းၼၼ်ႉ မီးလွင်ႈလႅၵ်ႈလၢႆႈသင်ၼႆ တူၺ်းတီႈ $1 ၼႆႈၶႃႈလႄႈ။", + "enotif_lastdiff": "တွၼ်ႈတႃႇတူၺ်း လွင်ႈလႅၵ်ႈလၢႆႈဢၼ်ၼႆႉ တူၺ်း တီႈ $1 ၼႆႈၶႃႈလႄႈ။", + "enotif_anon_editor": "ၽူႈၸႂ်ႉတိုဝ်း ဢမ်ႇသႂ်ႇၸိုဝ်ႈ $1", + "deletepage": "မွတ်ႇပႅတ်ႈ ၼႃႈလိၵ်ႈ", + "confirm": "ၼႄႉၼွၼ်း", + "excontent": "လမ်းၼႂ်း ပဵၼ်: \"$1\"", + "excontentauthor": "လမ်းၼႂ်း ပဵၼ်: \"$1\", လႄႈ ၽူႈၶဝ်ႈႁူမ်ႈၼႆႉသမ်ႉပဵၼ် \"[[Special:Contributions/$2|$2]]\" ([[User talk:$2|တွၼ်ႈဢုပ်ႇ]])", + "exbeforeblank": "လမ်းၼႂ်း မိူဝ်ႈပႆႇပဝ်ႇဝႆႉၼၼ်ႉပဵၼ် : \"$1\"", + "delete-confirm": "မွတ်ႇပႅတ်ႈ $1", + "delete-legend": "မွတ်ႇပႅတ်ႈ", + "historywarning": "<strong>ၶေႃႈၽၢင်ႉ:</strong> ၼႃႈလိၵ်ႈ ဢၼ်ၸဝ်ႈၵဝ်ႇဝႃႈ တေမွတ်ႇပႅတ်ႈၼၼ်ႉ မၼ်းမီးဝႆႉပိုၼ်း $1 {{PLURAL:$1|ၶူၼ်ႉၶႆႈ|ၶူၼ်ႉၶႆႈ.}}:", + "historyaction-submit": "ၼႄ", "dellogpage": "မွတ်ႇပႅတ်ႈ သၢႆမၢႆ", + "reverted": "ပိၼ်ႈၶိုၼ်းၸူး မၢႆဢွၵ်ႇ ၸိူဝ်းဢွၵ်ႇၸဝ်ႉ", "rollbacklink": "ထွႆပွၵ်ႈၶိုၼ်း", "rollbacklinkcount": "ၵိင်ႈၶိုၼ်းလင် $1 {{PLURAL:$1|edit|မႄးထတ်း}}", + "cantrollback": "ဢမ်ႇၸၢင်ႈ ပိၼ်ႈၶိုၼ်း လွင်ႈမႄးထတ်း;\nၽူႈၶဝ်ႈႁူမ်ႈ ​ၵမ်းလိုၼ်းသုတ်းၼႆႉ မၼ်းၵူၺ်းပဵၼ် ၽူႈတႅမ်ႈလိၵ်ႈ တႃႇ ၼႃႈလိၵ်ႈၼႆႉ။", + "revertpage": " [[Special:Contributions/$2|$2]] ([[User talk:$2|တွၼ်ႈဢုပ်ႇ]]) ၵေႃႉပိၼ်ႈၶိုၼ်း လွင်ႈမႄးထတ်း ၸူး မၢႆဢွၵ်ႇ ၵမ်းလိုၼ်းသုတ်း ဢၼ် [[User:$1|$1]] ၵေႃႉႁဵတ်းဝႆႉ", + "rollback-success": "$1 ၵေႃႉ ပိၼ်ႈၶိုၼ်း လွင်ႈမႄးထတ်း ;\n$2 လႅၵ်ႈလၢႆႈဝႆႉၸူး လွင်ႈၶူၼ်ႉၶႆႈ ၵမ်းလိုၼ်းသုတ်း။", + "changecontentmodel": "လႅၵ်ႈလၢႆႈ ပိူင်ၵေႃႇသၢင်ႈ လမ်းၼႂ်း ၶွင်ၼႃႈလိၵ်ႈ", + "changecontentmodel-legend": "လႅၵ်ႈလၢႆႈ ပိူင်ႈၵေႃႇသၢင်ႈ လမ်းၼႂ်း", + "changecontentmodel-title-label": "ႁူဝ်ၶေႃႈ ၼႃႈလိၵ်ႈ", + "changecontentmodel-model-label": "ပိူင်ၵေႃႇသၢင်ႈ လမ်းၼႂ်း ဢၼ်မႂ်ႇ", + "changecontentmodel-reason-label": "လွင်ႈတၢင်း :", + "changecontentmodel-submit": "လႅၵ်ႈလၢႆႈ", + "changecontentmodel-success-title": "ပိူင်ၵေႃႇသၢင်ႈ လမ်းၼႂ်း ထုၵ်ႇလႅၵ်ႈလၢႆႈဝႆႉယဝ်ႉ", + "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": "ၼႃႈလိၵ်ႈၼႆႉ ၼႄသဵၼ်ႈမၢႆ လွင်ႈလႅၵ်ႈလၢႆႈၸူး ပိူင်ၵေႃႇသၢင်ႈ လမ်းၼႂ်း ၶွင်ၼႃႈလိၵ်ႈ လႄႈ ၼႃႈလိၵ်ႈ ၸိူဝ်းဢၼ် ၵေႃႇသၢင်ႈဝႆႉတင်း ပိူင်ၵေႃႇသၢင်ႈ လမ်းၼႂ်း တၢင်ႇဢၼ် ဢၼ်ၸိူဝ်းလိူဝ်သေ ပိူင်ၵႅဝ်ႈ။", + "logentry-contentmodel-new": "$1 {{GENDER:$2|ၵေႃႇသၢင်ႈဝႆႉ}} ၼႃႈလိၵ်ႈ $3 ဢၼ်ၸႂ်ႉတိုဝ်းဝႆႉ ပိူင်ၵေႃႇသၢင်ႈ လမ်းၼႂ်း \"$5\" ဢၼ်ဢမ်ႇၸႂ်ႈ ပိူင်ၵႅဝ်ႈ", + "logentry-contentmodel-change": "$1 {{GENDER:$2|လႅၵ်ႈလၢႆႈဝႆႉ}} ပိူင်ၵေႃႇသၢင်ႈ လမ်းၼႂ်း ၶွင်ႈၼႃႈလိၵ်ႈ $3 တႄႇ \"$4\" တေႃႇ \"$5\"", + "logentry-contentmodel-change-revertlink": "ပိၼ်ႈၶိုၼ်း", + "logentry-contentmodel-change-revert": "ပိၼ်ႈၶိုၼ်း", "protectlogpage": "မၢႆတမ်း ၵၢၼ်ႁေႉၵင်ႈ", - "undeleterevisions": "$1 {{PLURAL:$1|revision|revisions}} မွတ်ႇပႅတ်ႈယဝ်ႉ", + "protect-default": "ၶႂၢင်းပၼ် ၽူႈၸႂ်ႉတိုဝ်း တၢင်းသဵင်ႈ", + "protect-fallback": "ၶႂၢင်းပၼ် ၽူႈၸႂ်ႉတိုဝ်း ဢၼ်တင်း လွင်ႈၶႂၢင်းပၼ် \"$1\" ၼၼ်ႉၵူၺ်း", + "protect-level-autoconfirmed": "ၶႂၢင်းပၼ် ၽူႈၸႂ်ႉတိုဝ်း ဢၼ်ၼႄႉၼွၼ်းႁင်းၵူၺ်းၼၼ်ႉ ၵူၺ်း", + "protect-level-sysop": "ၶႂၢင်းပၼ် ၽူႈၵုမ်းၵၢၼ်ၵူၺ်း", + "protect-othertime": "တၢင်ႇၶၢဝ်း :", + "protect-othertime-op": "တၢင်ႇၶၢဝ်း", + "restriction-edit": "မႄးထတ်း", + "restriction-move": "ၶၢႆႉ", + "restriction-create": "ၵေႃႇသၢင်ႈ", + "restriction-upload": "လူတ်ႇၶိုၼ်ႈ", + "restriction-level-sysop": "ႁႄႉၵၼ်ဝႆႉ တဵမ်ထူၼ်ႈ", + "restriction-level-autoconfirmed": "ႁႄႉၵင်ႈဝႆႉ ၵမ်ႈၽွင်ႈ", + "restriction-level-all": "ၵူႈၸၼ်ႉထၢၼ်ႈ", + "undelete": "တူၺ်းၼႃႈလိၵ်ႈ ၸိူဝ်းမွတ်ႇဝႆႉ", + "undeletepage": "တူၺ်း လႄႈ ဝႆႉၶိုၼ်း ၼႃႈလိၵ်ႈၸိူဝ်းမွတ်ႇဝႆႉ", + "undeletepagetitle": "<strong>ၽၢႆႇတႂ်ႈၼႆႉ ၶဝ်ႈပႃးဝႆႉ လွင်ႈၶူၼ်ႉၶႆႈ ၸိူဝ်းမွတ်ႇဝႆႉ [[:$1|$1]]</strong>.", + "viewdeletedpage": "တူၺ်းၼႃႈလိၵ်ႈ ၸိူဝ်းမွတ်ႇဝႆႉ", + "undelete-fieldset-title": "ၶိုၼ်းဝႆႉ လွင်ႈၶူၼ်ႉၶႆႈ", + "undeleterevisions": "$1 {{PLURAL:$1|ၶူၼ်ႉၶႆႈ|ၶူၼ်ႉၶႆႈ.}} မွတ်ႇပႅတ်ႈယဝ်ႉ", + "undelete-revision": "လွင်ႈၶူၼ်ႉၶႆႈ ၸိူဝ်းဢၼ် $3 ၵေႃႉမွတ်ႇဝႆႉ ၶွင်ႇ $1 (ၼင်ႇ $4, တီႈ $5)", + "undelete-nodiff": "ဢမ်ႇႁၼ် လွင်ႈၶူၼ်ႉၶႆႈ ဢၼ်ပူၼ်ႉမႃး။", + "undeletebtn": "ဝႆႉၶိုၼ်း", "undeletelink": "တူၺ်း/ၶိုၼ်းမိူၼ်ၵဝ်ႇ", "undeleteviewlink": "တူၺ်း", + "undeleteinvert": "လွင်ႈလိူၵ်ႈသၢင်ႈ ပိၼ်ႈၽူၼ်", + "undeletecomment": "လွင်ႈတၢင်း :", + "undeletedrevisions": "{{PLURAL:$1|1 ၶူၼ်ႉၶႆႈ|$1 ၸိူဝ်းၶူၼ်ႉၶႆႉ}} ဢဝ်ဝႆႉၶိုၼ်းယဝ်ႉ", + "undeletedfiles": "ဝႆႉၶိုၼ်း {{PLURAL:$1|1 ၾၢႆႇ}} ယဝ်ႉ", + "undelete-search-title": "ၶူၼ်ႉႁႃ ၼႃႈလိၵ်ႈ ၸိူဝ်းမွတ်ႇဝႆႉ", + "undelete-search-box": "ၶူၼ်ႉႁႃ ၼႃႈလိၵ်ႈ ၸိူဝ်းမွတ်ႇဝႆႉ", + "undelete-search-prefix": "ၼႄ ၼႃႈလိၵ်ႈ ၸိူဝ်းတႄႇဝႆႉတင်း :", + "undelete-search-submit": "ၶူၼ်ႉႁႃ", "namespace": "ဢွင်ႈတီႈၸိုဝ်ႈ", "invert": "ပဵၼ်ႇၽၢႆႇ လွင်ႈလိူၵ်ႈသၢင်ႈ", "tooltip-invert": "လိူၵ်ႈပၼ် လွၵ်းၼႆႉဝႃႈ တႃႇတေလပ်ႉဝႆႉ လွင်ႈလႅၵ်ႈလၢႆႈ ဢၼ်ႁဵတ်းၸူး ၼႃႈလိၵ်ႈၸိူဝ်းၼႆႉ ၸွမ်းၼင်ႇ ၸိုဝ်ႈ ၸိူဝ်းလိူၵ်ႈဝႆႉ (လႄႈ ၸွမ်းၼင်ႇၸိုဝ်ႈ ၸိူဝ်းဢၼ်လိူၵ်ႈဝႆႉယဝ်ႉၼၼ်ႉ)", @@ -1548,10 +1763,28 @@ "anoncontribs": "လွင်ႈၶဝ်ႈႁူမ်ႈ", "month": "တႄႇဢဝ်လိူၼ် (လႄႈ ဢၼ်ပူၼ်ႉမႃး):", "year": "တႄႇဢဝ်ပီ (လႄႈ ဢၼ်ပူၼ်ႉမႃး):", + "sp-contributions-newbies-sub": "တွၼ်ႈတႃႇဢၶွင်ႉ ဢၼ်မႂ်ႇ", + "sp-contributions-blocklog": "မၢႆတမ်းၵၢၼ်​ႁေႉတတ်း", + "sp-contributions-suppresslog": "လွင်ႈၶဝ်ႈႁူမ်ႈ {{GENDER:$1|ၽူႈၸႂ်ႉတိုဝ်း}} ဢၼ်ႁူမ်ႇလပ်ႉဝႆႉ", + "sp-contributions-deleted": "လွင်ႈၶဝ်ႈႁူမ်ႈ {{GENDER:$1|ၽူႈၸႂ်ႉတိုဝ်း}} ဢၼ်မွတ်ႇဝႆႉ", + "sp-contributions-uploads": "လူတ်ႇၶိုၼ်ႈ", + "sp-contributions-logs": "မၢႆတမ်း", + "sp-contributions-talk": "တွၼ်ႈဢုပ်ႇ", + "sp-contributions-userrights": "လွင်ႈၸတ်းၵၢၼ်သုၼ်ႈလႆႈ ၽူႈၸႂ်ႉတိုတ်း", + "sp-contributions-blocked-notice": "ၽူႈၸႂ်ႉတိုဝ်းၵေႃႉၼႆႉ ထုၵ်ႇတတ်းၶၢတ်ႇဝႆႉဢေႃႈ ယၢမ်းလဵဝ်။\nသဵၼ်ႈမၢႆတတ်းၶၢတ်ႇ ၵမ်းလိုၼ်းသုတ်းၼႆႉ ၼႄဝႆႉယူႇၵႃႈတီႈ သဵၼ်ႈမၢႆၽိုၼ်ဢိင် ပႃႈတႂ်ႈၼႆႉ။", + "sp-contributions-blocked-notice-anon": "ၽူႈၸႂ်ႉတိုဝ်းၵေႃႉၼႆႉ ထုၵ်ႇတတ်းၶၢတ်ႇဝႆႉဢေႃႈ ယၢမ်းလဵဝ်။\nသဵၼ်ႈမၢႆတတ်းၶၢတ်ႇ ၵမ်းလိုၼ်းသုတ်းၼႆႉ ၼႄဝႆႉယူႇၵႃႈတီႈ သဵၼ်ႈမၢႆၽိုၼ်ဢိင် ပႃႈတႂ်ႈၼႆႉ။", + "sp-contributions-search": "ၶူၼ်ႉႁႃ တႃႇ လွင်ႈၶဝ်ႈႁူမ်ႈ", + "sp-contributions-username": "ႁဵၼ်းလိၵ်ႈ ဢၢႆႇၽီ ဢမ်ႇၼၼ် ၸိုဝ်ႈၽူႈၸႂ်ႉတိုဝ်း :", + "sp-contributions-toponly": "ၵူၺ်းၼႄပၼ် ၵၢၼ်မႄးထတ်း ၸိူဝ်းၶူၼ်ႉၶႆႈ ၵမ်းလိုၼ်းသုတ်း", + "sp-contributions-newonly": "ၵူၺ်းၼႄပၼ် ၵၢၼ်မႄးထတ်း ၸိူဝ်းပဵၼ် လွင်ႈၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈ", + "sp-contributions-hideminor": "သိူင်ႇဝႆႉ လွင်ႈမႄးထတ်း ဢိတ်းဢီႈ", + "sp-contributions-submit": "ၶူၼ်ႉႁႃ", "whatlinkshere": "ႁဵင်းၵွင်ႉ ဢၼ်မီးတီႈၼႆႉ ပဵၼ်သင်", "whatlinkshere-title": "ၼႃႈလိၵ်ႈၸိူဝ်းလိင်ႉၸူး \"$1\"", "whatlinkshere-page": "ၼႃႈလိၵ်ႈ", "linkshere": "ၼႃႈလိၵ်ႈၽၢႆႇတႂ်ႈၼႆႉ မၼ်းၵွင်ႉသၢၼ် ဝႆႉၸူး <strong>[[:$1]]</strong>:", + "nolinkshere": "ဢမ်ႇမီးၼႃႈလိၵ်ႈ ၸိူဝ်းၵွင်ႉၸူး<strong>[[:$1]]</strong>.", + "nolinkshere-ns": "ဢမ်ႇမီးၼႃႈလိၵ်ႈ ၸိူဝ်းၵွင်ႉၸူး <strong>[[:$1]]</strong>တီႈၼႂ်း လွၵ်းၸိုဝ်ႈ ဢၼ်လိူၵ်ႈဝႆႉၼၼ်ႉ။", "isredirect": "ပိၼ်ႇႁူဝ်ၼႃႈလိၵ်ႈ", "istemplate": "တူဝ်ၶဝ်ႈပႃး", "isimage": "ၾၢႆႇၵွင်ႉ", @@ -1561,31 +1794,249 @@ "whatlinkshere-hideredirs": "$1 လၢႆႈၽၢႆႇ", "whatlinkshere-hidetrans": "သိူင်ႇတူဝ်ၶဝ်ႈပႃး", "whatlinkshere-hidelinks": "$1 လိင်ႉၵွင်ႉ", + "whatlinkshere-hideimages": "$1 ၾၢႆႇၵွင်ႉ", "whatlinkshere-filters": "တူဝ်ထွင်", + "whatlinkshere-submit": "သိုပ်ႇၵႂႃႇ", + "autoblockid": "ႁႄႉတတ်းႁင်းမႂ်း #$1", + "block": "ႁႄႉတတ်း ၽူႈၸႂ်ႉတိုဝ်း", + "unblock": "ပိုတ်ႇႁႄႉတတ်း ၽူႈၸႂ်ႉတိုဝ်း", + "blockip": "ႁႄႉတတ်း {{GENDER:$1|ၽူႈၸႂ်ႉတိုဝ်း}}", + "blockip-legend": "ႁႄႉတတ်း ၽူႈၸႂ်ႉတိုဝ်း", + "ipaddressorusername": "ႁဵၼ်းလိၵ်ႈ ဢၢႆႇၽီ ဢမ်ႇၼၼ် ၸိုဝ်ႈၽူႈၸႂ်ႉတိုဝ်း :", + "ipbexpiry": "ၶၢဝ်းယၢမ်းသုတ်းသဵင်ႈ:", + "ipbreason": "လွင်ႈတၢင်း :", + "ipbreason-dropdown": "*လွင်ႈတၢင်းႁႄႉတတ်း ဢၼ်ၵဵဝ်ႈလူၺ်ႈတင်းၼမ်\n** ထႅမ်သႂ်ႇ လွၼ်ႉၶၢဝ်ႇ ဢၼ်ၽိတ်းပိူင်ႈ\n** ထွၼ်ပႅတ်ႈ ၸိူဝ်းၶဝ်ႈပႃး ၼႂ်းၼႃႈလိၵ်ႈ\n** ႁဵတ်းႁဵင်းၵွင်ႉဢၼ်မီးမႅင်း တီႈၽၢႆႇၼွၵ်ႈ\n** ထႅမ်သႂ်ႇ ဢၼ်ဢမ်ႇမီးလွင်ႈမီးတၢင်း/လွင်ႈဢူၼ်ဢၢၼ် တီႈၼႂ်းၼႃႈလိၵ်ႈ\n** လွင်ႈႁဵတ်းသၢင်ႈ တၢင်းလွၵ်ႇငိူတ်ႈ/ပၼ်လွင်ႈတၢင်းသုၵ်ႉယုင်ႈၸႂ်\n** လူလၢႆ ဢၶွင်ႉလၢႆဢၼ်\n** ၸႂ်ႉဝႆႉၸိုဝ်ႈၽူႈၸႂ်ႉတိုဝ်း မဵဝ်းဢမ်ႇႁပ်ႉၶၢမ်ႇလႆႈ", + "ipb-hardblock": "ႁႄႉၵၼ် ၽူႈၸႂ်ႉတိုဝ်း ၸိူဝ်းလွၵ်ႉဢိၼ်ႇဝႆႉ ၵႃႈတီႈ ၵၢၼ်မႄးထတ်း ၵႃႈတီႈ ႁဵင်းလိၵ်ႈ ဢၢႆႇၽီႇဢၼ်ၼႆႉ", + "ipbcreateaccount": "ႁႄႉၵင်ႈ လွင်ႈၵေႃႇသၢင်ႈ ဢၶွင်ႉ", + "ipbemailban": "ႁႄႉၵင်ႈ လွင်ႈၽူႈၸႂ်ႉတိုဝ်း သူင်ႇဢီးမေးလ်", + "ipbenableautoblock": "ႁႄႉတတ်း ႁဵင်းလိၵ်ႈဢၢႆႇၽီႇ ဢၼ်ၽူႈၸႂ်ႉတိုဝ်းၵေႃႉၼႆႉ ၸႂ်ႉၵႂႃႇၵမ်းလိုၼ်းသုတ်း လႄႈ ၸိူဝ်းၵပ်းၵၢႆႇ ႁဵင်းလိၵ်ႈ ဢၢႆႇၽီႇ ဢၼ်ၶဝ် ၶတ်းၸႂ်တႃႇတေ မႄးထတ်း ၵႃႈတီႈ", + "ipbsubmit": "ႁႄႉတတ်း ၽူႈၸႂ်ႉတိုဝ်းၵေႃႉၼႆႉ", + "ipbother": "တၢင်ႇၶၢဝ်း :", + "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", + "ipbhidename": "သိူင်ႇ ၸိုဝ်ႈၽူႈၸႂ်ႉတိုဝ်ႈ ၵႃႈတီႈ ၵၢၼ်မႄးထတ်းလႄႈ သဵၼ်ႈမၢႆ", + "ipbwatchuser": "တူၺ်းၼႃႈလိၵ်ႈ ၽူႈၸႂ်ႉတိုဝ်းလႄႈ ၼႃႈလိၵ်ႈဢုပ်ႇဢူဝ်းၵၼ် တွၼ်ႈတႃႇ ၽူႈၸႂ်ႉတိုဝ်းၵေႃႉၼႆႉ", + "ipb-disableusertalk": "ႁႄႉၵၼ် ၽူႈၸႂ်ႉတိုဝ်းၵေႃႉၼႆႉ ၽွင်းမိူဝ်ႈ မၼ်းထုၵ်ႇႁႄႉတတ်းဝႆႉ ယႃႇႁႂ်ႈ မၼ်းမႄးထတ်းလႆႈ ၼႃႈလိၵ်ႈ ဢုပ်ႇဢူဝ်း ႁင်းၶဝ်", + "ipb-change-block": "ၶိုၼ်းႁႄႉတတ်း ၽူႈၸႂ်ႉတိုဝ်း ၸိူဝ်းၸႂ်ႉ ၵၢၼ်ႈတင်ႈၸိူဝ်းၼႆႉ", + "ipb-confirm": "ၼႄႉၼွၼ်း လွင်ႈႁႄႉတတ်း", + "badipaddress": "ႁဵင်းလိၵ်ႈ ဢၢႆႇၽီႇ ၽိတ်းပိူင်ႈဝႆႉ", + "blockipsuccesssub": "လွင်ႈႁႄႉတတ်း ၶႅမ်ႉလႅပ်ႈယဝ်ႉ", + "blockipsuccesstext": "[[Special:Contributions/$1|$1]] ထုၵ်ႇႁႄႉတတ်းဝႆႉယဝ်ႉ။<br />\nတူၺ်း [[Special:BlockList|သဵၼ်ႈမၢႆႁႄႉတတ်း]] တွၼ်ႈတႃႇ ၶိုၼ်းလိုမ်ႉတူၺ်း လွင်ႈႁႄႉတတ်း။", + "ipb-blockingself": "ၸဝ်ႈၵဝ်ႇ တေႁႄႉတတ်းတူဝ်ၸဝ်ႈၵဝ်ႇ! လွင်ႈဝႃႈ တေႁဵၼ်းၼၼ်ၼၼ်ႉ ​ၸဝ်ႈၵဝ်ႇ ၼႄႉၼွၼ်းယဝ်ႉႁႃႉ?", + "ipb-confirmhideuser": "ၸဝ်ႈၵဝ်ႇ တေႁႄႉတတ်း ၽူႈၸႂ်ႉတိုဝ်း ဢၼ်ပိုတ်ႇၸႂ်ႉဝႆႉ \"သိူင်ႇၽူႈၸႂ်ႉတိုဝ်း\"။ ဢၼ်ၼႆႉ မၼ်းတေႁူမ်ႇ ၸိုဝ်ႈၽူႈၸႂ်ႉတိုဝ်းၼႆႉဝႆႉ ၵႃႈတီႈသဵၼ်ႈမၢႆတင်းသဵင်ႈလႄႈ တီႈသဵၼ်ႈၶပ်ႉ။ ၸဝ်ႈၵဝ်ႇ လပ်ႉလွင်းဝႃႈ တေႁဵတ်းၼၼ်ယူႇႁႃႉ?", + "ipb-confirmaction": "သင်ၸိူဝ်ႉဝႃႈ ၸဝ်ႈၵဝ်ႇ လပ်ႉလွင်း​လီဝႃႈ ၶႂ်ႈႁဵတ်းၼၼ်ယူႇၼႆၸိုင် ၶႅၼ်းတေႃႈၵႂႃႇ ပၼ်မၢႆၶၼ် တီႈ လွၵ်း \"{{int:ipb-confirm}}\" ဢၼ်မီးၽၢႆႇတႂ်ႈၼၼ်ႉလႄႈ။", + "ipb-edit-dropdown": "မႄးထတ်း လွင်ႈတၢင်း ႁႄႉတတ်း", + "ipb-unblock-addr": "ဢမ်ႇႁႄႉတတ်း $1", + "ipb-unblock": "ဢမ်ႇႁႄႉတတ်း ၸိုဝ်ႈၽူႈၸႂ်ႉတိုဝ်း ဢမ်ႇၼၼ်ႉ ႁဵင်းလိၵ်ႈ ဢၢႆႇၽီႇ", + "ipb-blocklist": "တူၺ်း ၸိူဝ်းႁႄႉတတ်းဝႆႉ ယၢမ်းလဵဝ်", + "ipb-blocklist-contribs": "ၶဝ်ႈႁူမ်ႈတႃႇ {{GENDER:$1|$1}}", + "ipb-blocklist-duration-left": "ၵိုတ်း $1", + "unblockip": "ဢမ်ႇႁႄႉတတ်း ၽူႈၸႂ်ႉတိုဝ်း", + "unblockiptext": "တွၼ်ႈတႃႇ ဝႆႉၶိုၼ်း ၵၢၼ်သုၼ်ႇတႅမ်ႈ ဢၼ်လႆႈ ႁႄႉတတ်းဝႆႉ ႁဵင်းလိၵ်ႈ ဢမ်ႇၼၼ် ၽူႈၸႂ်ႉတိုဝ်းၼၼ်ႉၼႆ ၸႂ်ႉပၼ် လွၵ်ႈထႅမ်သဵၼ်ႈ ၽၢႆႇတႂ်ႈၼႆႉလႄႈ။", + "ipusubmit": "ထွၼ်ပႅတ်ႈ လွင်ႈႁႄႉတတ်းဢၼ်ၼႆႉ�", + "unblocked": "[[User:$1|$1]] ၼႆႉ ထုၵ်ႇဢမ်ႇႁႄႉတတ်းယဝ်ႉ။��", + "unblocked-range": "$1 ၼႆႉ ထုၵ်ႇဢမ်ႇႁႄႉတတ်းယဝ်ႉ။�������", + "unblocked-id": "လွင်ႈႁႄႉတတ်း $1 ၼႆႉ ထုၵ်ႇထွၼ်ပႅတ်ႈယဝ်ႉ။���", + "unblocked-ip": "[[Special:Contributions/$1|$1]] ၼႆႉ ထုၵ်ႇဢမ်ႇႁႄႉတတ်းယဝ်ႉ။", + "blocklist": "ၽူႈၸႂ်ႉတိုဝ်း ၸိူဝ်းႁႄႉတတ်းဝႆႉ�", + "ipblocklist": "ၽူႈၸႂ်ႉတိုဝ်း ၸိူဝ်းႁႄႉတတ်းဝႆႉ�", + "ipblocklist-legend": "သွၵ်ႈႁႃ ၽူႈၸႂ်ႉတိုဝ်း ဢၼ်ထုၵ်ႇႁႄႉတတ်းဝႆႉ�", + "blocklist-userblocks": "သိူင်ႇဢၶွင်ႉ ႁႄႉတတ်း�", + "blocklist-tempblocks": "သိူင်ႇ လွင်ႈႁႄႉတတ်းၸူဝ်ႈၵႅပ်ႉ", + "blocklist-addressblocks": "သိူင်ႇ လွင်ႈႁႄႉတတ်း ဢၢႆႇၽီႇဢၼ်လဵဝ်", + "blocklist-rangeblocks": "သိူင်ႇလွင်ႈႁႄႉတတ်း ၶပ်ႉယႆ�", + "blocklist-timestamp": "ၸုမ်ႈၶၢဝ်းယၢမ်း", + "blocklist-target": "တီႈယိူင်း", + "blocklist-expiry": "ဢႃႇယုသဵင်ႈ", + "blocklist-by": "လွင်ႈႁႄႉတတ်း ၽူႈၵုမ်းၵၢၼ်", + "blocklist-params": "ႁႄႉတတ်း ပိူင်မၵ်းမၼ်ႈ�", + "blocklist-reason": "လွင်ႈတၢင်း", + "ipblocklist-submit": "ၶူၼ်ႉႁႃ", + "ipblocklist-localblock": "လွင်ႈႁႄႉတတ်း ၼႂ်းလူဝ်ႇၵႄႇ�", + "ipblocklist-otherblocks": " {{PLURAL:$1|block|လွင်ႈႁႄႉတတ်း}} တၢင်ႇၸိူဝ်း", + "infiniteblock": "ဢမ်ႇမီးတီႈသုတ်း�", + "expiringblock": "ဢႃႇယုတေသဵင်ႈ ပေႃး $1 ၶၢဝ်းယၢမ်း $2�", + "anononlyblock": "တႃႇဢၼ်ဢမ်ႇမီးၸိုဝ်ႈ ၵူၺ်း�", + "noautoblockblock": "ဢိုတ်းၸႂ်ႉ လွင်ႈႁႄႉတတ်းႁင်းၵူၺ်း", + "createaccountblock": "ဢိုတ်းၸႂ်ႉ ​လွင်ႈၵေႃႇသၢင်ႈ ဢၶွင်ႉ", + "emailblock": "ဢိုတ်းၸႂ်ႉ ဢီးမေးလ်", + "blocklist-nousertalk": "ဢမ်ႇၸၢင်ႈမႄးထတ်း ၼႃႈလိၵ်ႈဢုပ်ႇၵုမ် ၸဝ်ႈၵဝ်ႇ", + "ipblocklist-empty": "သဵၼ်ႈမၢႆ ႁႄႉတတ်း ပဝ်ႇဝႆႉ။", + "ipblocklist-no-results": "ႁဵင်းလိၵ်ႈ ဢၢႆႇၽီ ဢမ်ႇၼၼ် ၸိုဝ်ႈၽူႈၸႂ်ႉတိုဝ်း ဢၼ်တုၵ်းယွၼ်းဝႆႉၼၼ်ႉ ဢမ်ႇလႆႈ ႁႄႉတႄးဝႆႉ။�", "blocklink": "ႁႄႉတတ်း", "unblocklink": "ဢမ်ႇႁႄႉႁၢမ်ႈ", + "change-blocklink": "လႅၵ်ႈလၢႆႈလွင်ႈႁႄႉတတ်း�", "contribslink": "ၶဝ်ႈႁူမ်ႈ", + "emaillink": "�သူင်ႇ ဢီးမေးလ်", + "autoblocker": "ယွၼ်ႉပိူဝ်ႈဝႃႈ ႁဵင်းလိၵ်ႈဢၢႆႇၽီႇၸဝ်ႈၵဝ်ႇၼႆႉ ထုၵ်ႇၸႂ်ႉဝႆႉ ၼင်ႇ \"[[User:$1|$1]]\" လႄႈ ထုၵ်ႉႁႄးတတ်းၵႂႃႇ ႁင်းမၼ်း။\nလွင်ႈတၢင်း ဢၼ်ပၼ်ဝႆႉ တွၼ်ႈတႃႇ ႁႄႉတတ်း $1 ၼႆႉတႄႉ ပဵၼ် \"$2\"�", + "blocklogpage": "�မၢႆတမ်းၵၢၼ်ႁႄႉတတ်း", + "blocklog-showlog": "ၽူႈၸႂ်ႉတိုဝ်းၵေႃႉၼႆႉ မိူဝ်ႈပူၼ်ႉမႃး ယၢမ်ႈထုၵ်ႇႁႄႉတတ်းဝႆႉယဝ်ႉ။\nမၢႆတမ်းၵၢၼ်ႁႄႉတတ်း တွၼ်ႈတႃႇဢိင်ပိုင်ႈၼၼ်ႉ ၵမ်ႉထႅမ်ဝႆႉပၼ် ၽၢႆႇတႂ်ႈၼႆႉယူႇ :�", + "blocklog-showsuppresslog": "ၽူႈၸႂ်ႉတိုဝ်းၵေႃႉၼႆႉ မိူဝ်ႈပူၼ်ႉမႃး ယၢမ်ႈထုၵ်ႁႄႉတတ်းလႄႈ ထုၵ်ႇသိူင်ႇဝႆႉ။\nမၢႆတမ်းႁူမ်ႇဝႆႉ တွၼ်ႈတႃႇပိုင်ႈဢိင်ၼၼ်ႉ ၼႄဝႆႉပၼ် ၼင်ႇၽၢႆႇတႂ်ႈၼႆႉ :�", + "blocklogentry": "[[$1]] ၵေႃႉထုၵ်ႇႁႄႉတတ်းဝႆႉ တႃႇၶၢဝ်းယၢမ်းတေသုတ်းသဵင်ႈ $2 $3", + "reblock-logentry": "ၵၢၼ်တင်ႈ လွင်ႈႁႄႉတတ်း ဢၼ်လႅၵ်ႈလၢႆႈဝႆႉ တွၼ်ႈတႃႇ [[$1]] တင်း လွင်ႈၶၢဝ်းယၢမ်း သုတ်းသဵင်ႈ ၶွင် $2 $3", + "unblocklogentry": "ဢမ်ႇႁႄႉတတ်း $1", + "block-log-flags-anononly": "ၽူႈၸႂ်ႉတိုဝ်း ၸိူဝ်းဢမ်ႇသႂ်ႇၸိုဝ်ႈၼၼ်ႉၵူၺ်း", + "block-log-flags-nocreate": "ဢိုတ်းၸႂ်ႉ ​လွင်ႈၵေႃႇသၢင်ႈ ဢၶွင်ႉ", + "block-log-flags-noautoblock": "ဢိုတ်းၸႂ်ႉ လွင်ႈႁႄႉတတ်းႁင်းၵူၺ်း", + "block-log-flags-noemail": "ဢိုတ်းၸႂ်ႉ ဢီးမေးလ်", + "block-log-flags-nousertalk": "ဢမ်ႇၸၢင်ႈမႄးထတ်း ၼႃႈလိၵ်ႈဢုပ်ႇၵုမ် ၸဝ်ႈၵဝ်ႇ", + "block-log-flags-angry-autoblock": "ပိုတ်ႇၸႂ်ႉ လွင်ႈႁႄႉတတ်းႁင်းၵူၺ်း ဢၼ်ယုၵ်ႉသုင်ဝႆႉ", + "block-log-flags-hiddenname": "ၸိုဝ်ႈၽူႈၸႂ်ႉတိုဝ်း သိူင်ႇဝႆႉ", + "range_block_disabled": "လွင်ႈ ၽူႈၵုမ်းၵၢၼ် ႁဵတ်းလႆႈ တႃႇၵေႃႇသၢင်ႈ ၶွပ်ႇဝိူင်းႁႄႉတတ်းၼၼ်ႉ ထုၵ်ႇဢိုတ်းၸႂ်ႉဝႆႉ။", + "ipb_expiry_invalid": "ၶၢဝ်းယၢမ်းသုတ်းသဵင်ႈ ၽိတ်းပိူင်ႈဝႆႉ။", + "ipb_expiry_old": "ၶၢဝ်းယၢမ်းသုတ်းသဵင်ႈၼႆႉ မီးဝႆႉ တီႈၶၢဝ်းပူၼ်ႉမႃး။", + "ipb_expiry_temp": "လွင်ႈႁႄႉတတ်း ၸိုဝ်ႈၽူႈၸႂ်ႉတိုဝ်း ဢၼ်သိူင်ႇဝႆႉၼၼ်ႉ တေလႆႈပဵၼ် ဢၼ်မၼ်ႈၵိုမ်း။", + "ipb_hide_invalid": "ဢမ်ႇၸၢင်ႈႁူမ်ႇလပ်ႉဝႆႉ ဢၶွင်ႉဢၼ်ၼႆႉ; မၼ်းမီးလိူဝ်ဝႆႉ {{PLURAL:$1|လွင်ႈမႄးထတ်း ဢၼ်ၼိုင်ႈ|$1 လွင်ႈမႄးထတ်းတင်းၼမ်}}။", + "ipb_already_blocked": "\"$1\" ၼႆႉ ထုၵ်ႇ ႁႄႉတတ်းဝႆႉယဝ်ႉ။", + "ipb-needreblock": "$1 ၼႆႉ ထုၵ်ႇႁႄႉတတ်းဝႆႉယဝ်ႉ။ ၸွင်ႇၸဝ်ႈၵဝ်ႇ ၶႂ်ႈလႅၵ်ႈလၢႆႈ ၵၼ်တင်ႈႁိုဝ်?", + "ipbnounblockself": "ၸဝ်ႈၵဝ်ႇ ဢမ်ႇမီးသုၼ်ႇ တွၼ်ႈတႃႇ ပိုတ်ႇသေႃးၶိုၼ်းတႃႇၸဝ်ႈၵဝ်ႇ။", + "lockdb": "ၶတ်းယွင်ၶေႃႈမုၼ်း", + "unlockdb": "ပိုတ်ႇသေႃး ယွင်ၶေႃႈမုၼ်း", + "lockdbtext": "လွင်ႈၶတ်းသေႃး ယွင်ၶေႃႈမုၼ်းၼႆႉ မၼ်းတေယင်ႉၵိုတ်းဝႆႉၸူဝ်ႈၵႅပ်ႉ ၵပ်းၵၢႆႇလူၺ်ႈ လွင်ႈၽူႈၸႂ်ႉတိုဝ်းတင်းသဵင်ႈ မႄးထတ်းၼႃႈလိၵ်ႈ၊ လႅၵ်ႈလၢႆႈ ငဝ်ႈၵုမ်းပိူင်ၶဝ်၊ မႄးထတ်း သဵၼ်ႈမၢႆပႂ်ႉတူၺ်းၶဝ် လႄႈ ၸိူဝ်းဢၼ်တေလူဝ်ႇ လႅၵ်ႈလၢႆႈ တီႈၼႂ်း ယွင်ၶေႃႈမုၼ်းၼၼ်ႉ။ ၶႅၼ်းတေႃႈ ၸဝ်ႈၵဝ်ႇ ၼႄ့ၼွၼ်းဝႃႈ ၸဝ်ႈၵဝ်ႇယိူင်းဢၢၼ်းဝႃႈ ၶႂ်ႈႁဵတ်းသင် ၼႆသေ သင်ၸိူဝ်ႉဝႃႈ လွင်ႈမႄးၶိုၼ်းၸဝ်ႈၵဝ်ႇ ယဝ်ႉတူဝ်ႈယဝ်ႉၼႆ ၸဝ်ႈၵဝ်ႇ တေၸၢင်ႈၶိုၼ်း ပိုတ်ႇသေႃး ယွင်ၶေႃႈမုၼ်းလႆႈယူႇ။", + "unlockdbtext": "လွင်ႈပိုတ်ႇသေႃး ယွင်ၶေႃႈမုၼ်းၼႆႉ မၼ်းတေဝႆႉၶိုၼ်း လွင်ႈႁဵတ်းသၢင်ႈလႆႈ ၵပ်းၵၢႆႇလူၺ်ႈ ၽူႈၸႂ်ႉတိုဝ်းၶဝ် မႄးထတ်းၼႃႈလိၵ်ႈ၊ လႅၵ်ႈလၢႆႈ ငဝ်ႈၵုမ်းပိူင်ၶဝ်၊ မႄးထတ်း သဵၼ်ႈမၢႆ ပႂ်ႉတူၺ်းၶဝ် လႄႈ ၸိူဝ်းဢၼ်တေလူဝ်ႇ လႅၵ်ႈလၢႆႈ တီႈၼႂ်း ယွင်ၶေႃႈမုၼ်းၼၼ်ႉ။ ၶႅၼ်းတေႃႈ ၸဝ်ႈၵဝ်ႇ ၼႄ့ၼွၼ်းဝႃႈ ၸဝ်ႈၵဝ်ႇယိူင်းဢၢၼ်းဝႃႈ ၶႂ်ႈႁဵတ်းသင် ဢၼ်ဝႃႈၼၼ်ႉ။", + "lockconfirm": "ၸႂ်ႈယဝ်ႉ။ ၵဝ်ၶႃႈ ၶႂ်ႈၶတ်းသေႃး ယွင်ၶေႃႈမုၼ်း တႄႉတႄႉဢေႃႈ။", + "unlockconfirm": "ၸႂ်ႈယဝ်ႉ၊ ၵဝ်ၶႃႈ ၶႂ်ႈပိုတ်ႇသေႃး ယွင်ၶေႃႈမုၼ်း တႄႉတႄႉဢေႃႈ။", + "lockbtn": "ၶတ်းယွင်ၶေႃႈမုၼ်း", + "unlockbtn": "ပိုတ်ႇသေႃး ယွင်ၶေႃႈမုၼ်း", + "locknoconfirm": "ၸဝ်ႈၵဝ်ႇ ဢမ်ႇလႆႈပၼ်မၢႆမႅၼ်ႈ တီႈတိူၵ်ႈၼႄႉၼွၼ်း။", + "lockdbsuccesssub": "ၶတ်းသေႃး ယွင်ၶေႃႈမုၼ်း ၶႅမ်ႉလႅပ်ႈယဝ်ႉ။", + "unlockdbsuccesssub": "လွင်ႈၶတ်းသေႃး ယွင်ၶေႃႈမုၼ်း ထွၼ်ပႅတ်ႈယဝ်ႉယဝ်ႈ", + "lockdbsuccesstext": "ၶတ်းသေႃး ယွင်ၶေႃႈမုၼ်း ဝႆႉယဝ်ႉယဝ်ႈ<br />\nဝၢႆးသေ လွင်ႈမႄးၶိုၼ်း ၸဝ်ႈၵဝ်ႇၼၼ်ႉ ယဝ်ႉတူဝ်ႈယဝ်ႈၼႆ ယႃႇပေလိုမ်း တႃႇ [[Special:UnlockDB|ထွၼ်ပႅတ်ႈ သေႃး]] ။", + "unlockdbsuccesstext": "ပိုတ်ႇသေႃး ယွင်ၶေႃႈမုၼ်း ဝႆႉယဝ်ႉယဝ်ႈ။", + "lockfilenotwritable": "ၾၢႆႇၶတ်းသေႃး ယွင်ၶေႃႈမုၼ်းၼၼ်ႉ ဢမ်ႇၸၢင်ႈၶဝ်ႈတႅမ်ႈလႆႈ။\nလုၵ်ႉတီႈ သႃႇပိူဝ်ႇဝႅမ်ႉ သေ ဢၼ်ၼႆႉ မၼ်းလူဝ်ႇၶဝ်ႈတႅမ်ႈလႆႈတီႈ ၶတ်းသေႃး ဢမ်ႇၼၼ် ပိုတ်ႇသေႃး ယွင်ၶေႃႈမုၼ်းဢေႃႈ။", + "databaselocked": "ယွင်ၶေႃႈမုၼ်းၼႆႉ ပေႃးၶတ်းသေႃးဝႆႉယဝ်ႉ။", + "databasenotlocked": "ယွင်ၶေႃႈမုၼ်းၼႆႉ ဢမ်ႇလႆႈၶတ်းသေႃးဝႆႉ။", + "lockedbyandtime": "( {{GENDER:$1|$1}} ၵေႃႉ မိူဝ်ႈ $2 ၶၢဝ်းယၢမ်း $3)", + "move-page": "ၶၢႆႉ $1", + "move-page-legend": "ၶၢႆႉၼႃႈလိၵ်ႈ", + "movenologintext": "တွၼ်ႈတႃႇၶၢႆႉၼႃႈလိၵ်ႈၼႆႉ ၸဝ်ႈၵဝ်ႇ တေလႆႈပဵၼ် ၽူႈၸႂ်ႉတိုဝ်း ဢၼ်တၢင်ႇ မၢႆၽၢင်ယဝ်ႉလႄႈ တေလႆႈ [[Special:UserLogin|ၶဝ်ႈလွၵ်ႉဢိၼ်ႇဝႆႉ]]။", + "movenotallowed": "ၸဝ်ႈၵဝ်ႇ ဢမ်ႇမီးသုၼ်ႇ တွၼ်ႈတႃႇၶၢႆႉ ၼႃႈလိၵ်ႈ။", + "movenotallowedfile": "ၸဝ်ႈၵဝ်ႇ ဢမ်ႇမီးသုၼ်ႇ တွၼ်ႈတႃႇ ၶၢႆႉၾၢႆႇ။", + "cant-move-user-page": "ၸဝ်ႈၵဝ်ႇ ဢမ်ႇမီးသုၼ်ႇ တွၼ်ႈတႃႇၶၢႆႉ ၼႃႈလိၵ်ႈ ၽူႈၸႂ်ႉတိုဝ်း (ယၢၼ်ဢဝ်တီႈ ၼႃႈလိၵ်ႈၽႄ)။", + "cant-move-to-user-page": "ၸဝ်ႈၵဝ်ႇ ဢမ်ႇမီးသုၼ်ႇ တွၼ်ႈတႃႇၶၢႆႉ ၼႃႈလိၵ်ႈၸူး ၼႃႈလိၵ်ႈ ၽူႈၸႂ်ႉတိုဝ်း (လိူဝ်သေ ၸူး ၼႃႈလိၵ်ႈၽႄ ၽူႈၸႂ်ႉတိုဝ်း)။", + "cant-move-category-page": "ၸဝ်ႈၵဝ်ႇဢမ်ႇမီးသုၼ်ႇ တွၼ်ႈတႃႇၶၢႆႉ ၼႃႈလိၵ်ႈလိူင်ႈ။", + "cant-move-to-category-page": "ၸဝ်ႈၵဝ်ႇ ဢမ်ႇမီးသုၼ်ႇ တွၼ်ႈတႃႇၶၢႆႉ ၼႃႈလိၵ်ႈၸူး ၼႃႈလိၵ်ႈလိူင်ႈ။", + "cant-move-subpages": "ၸဝ်ႈၵဝ်ႇ ဢမ်ႇမီးသုၼ်ႇ တႃႇၶၢႆႉ ၼႃႈလိၵ်ႈၽႄ။", + "namespace-nosubpages": "ဢွင်ႈၸိုဝ်ႈ \"$1\" ဢမ်ႇၶႂၢင်းပၼ် ၼႃႈလိၵ်ႈၽႄ။", + "newtitle": "ႁူဝ်ၶေႃႈ ဢၼ်မႂ်ႇ :", + "move-watch": "တူၺ်း ၼႃႈလိၵ်ႈငဝ်ႈငႃႇ လႄႈ ၼႃႈလိၵ်ႈယိူင်းၸူး", + "movepagebtn": "ၶၢႆႉၼႃႈလိၵ်ႈ", + "pagemovedsub": "ၶၢႆႉၶႅမ်ႉလႅပ်ႈၵႂႃႇယဝ်ႉ", + "movepage-moved": "<strong>\"$1\" ၶၢႆႉၸူး \"$2\"</strong> ယဝ်ႉယဝ်ႈ", "movelogpage": "ၶၢႆႉသၢႆမၢႆ", - "revertmove": "ပိၼ်ႇပွၵ်ႈၶိုၼ်း", + "movenosubpage": "ၼႃးလိၵ်ႈဢၼ်ၼႆ့ ဢမ်ႇမီးဝႆႉ ၼႃႈလိၵ်ႈၽႄ။", + "movereason": "လွင်ႈတၢင်း :", + "revertmove": "ပိၼ်ႈၶိုၼ်း", + "delete_and_move_confirm": "ၸႂ်ႈယဝ်ႉ၊ မွတ်ႇပႅတ်ႈ ၼႃႈလိၵ်ႈ", + "delete_and_move_reason": "မွတ်ႇပႅတ်ႈၼႆႉ တွၼ်ႈတႃႇႁဵတ်း သၢႆတၢင်း တႃႇၶၢႆႉမႃးတီႈ \"[[$1]]\"", + "immobile-source-namespace": "ဢမ်ႇၸၢင်ႈၶၢႆႉ ၼႃႈလိၵ်ႈၸိူဝ်း မီႈတီႈၼႂ်း လွၵ်းၸိုဝ်ႈ \"$1\"။", + "immobile-target-namespace": "ဢမ်ႇၸၢင်ႈၶၢႆႉ ၼႃႈလိၵ်ႈ ၶဝ်ႈၸူးတီႈၼႂ်း ဢွင်ႈၸိုဝ်ႈ \"$1\"။", + "immobile-target-namespace-iw": "ႁဵင်းၵွင်ႉဝီႇၶီႇၸူမ် ၼႆႉ မၼ်းပဵၼ် တီႈယိူင်းၽိတ်းပိူင်ႈ တွၼ်ႈတႃႇ ၶၢႆႉၼႃႈလိၵ်ႈ။", + "immobile-source-page": "ၼႃႈလိၵ်ႈၼႆႉ မၼ်းပဵၼ် ဢၼ်ဢမ်ႇၶၢႆႉလႆႈ။", + "immobile-target-page": "ဢမ်ႇၸၢင်ႈၶၢႆႉၸူး ႁူဝ်ၶေႃႈ ဢွင်ႈတီႈဝႆႉဢၼ်ၼၼ်ႉ။", + "imagenocrossnamespace": "ဢမ်ႇၸၢင်ႈၶၢႆႉၾၢႆႇၸူး ဢွင်ႈၸိုဝ်း ဢမ်ႇမီးၾၢႆႇ။", + "nonfile-cannot-move-to-file": "ဢမ်ႇၸၢင်ႈၶၢႆႉ ဢၼ်ဢမ်ႇမီးၾၢႆႇ ၸူး လွၵ်းၸိုဝ်ႈၾၢႆႇ။", + "imagetypemismatch": "သၢႆလင်ၾၢႆႇဢၼ်မႂ်ႇၼႆႉ မၼ်းဢမ်ႇၶူပ်းၵၼ်တတ်း လိူင်ႈသႅၼ်းမၼ်း။", + "imageinvalidfilename": "ၸိုဝ်ႈၾၢႆႇဢၼ်ယိူင်းၸူးၼၼ်ႉ မၼ်းၽိတ်းပိူင်ႈ။", "export": "သူင်ႇၼႃႈလိၵ်ႈဢွၵ်ႇ", + "exportall": "သူင်ႇဢွၵ်ႇ ၼႃႈလိၵ်ႈတင်းမူတ်း", + "export-submit": "သူင်ႇဢွၵ်ႇ", + "export-addcattext": "ထႅမ်သႂ်ႇ ၼႃႈလိၵ်ႈ ၵႃႈတီႈ တွၼ်ႈၵၼ်:", + "export-addcat": "ထႅမ်သႂ်ႇ", + "export-addnstext": "ထႅမ်သႂ်ႇ ၼႃႈလိၵ်ႈ ၵႃႈတီႈ ဢွင်ႈၸိုဝ်ႈ:", + "export-addns": "ထႅမ်သႂ်ႇ", + "export-download": "သိမ်းၼင်ႇၾၢႆႇ", + "export-templates": "ၶဝ်ႈပႃး လွၵ်းပိူင်", + "export-pagelinks": "ၶဝ်ႈပႃး ၼႃႈလိၵ်ႈ ၸိူဝ်းၵွင်ႉၸူးဝႆႉ လွင်ႈလိုၵ်ႉလမ်ႇၶွင် :", + "export-manual": "ထႅမ်သႂ်ႇ ၼႃႈလိၵ်ႈ ႁင်းၸဝ်ႈၵဝ်ႇ:", + "allmessages": "ၶေႃႈၶၢဝ်ႇ ပိူင်သၢင်ႈ", + "allmessagesname": "ၸိုဝ်ႈ", + "allmessagesdefault": "လိၵ်ႈၶေႃႈၶၢဝ်ႇ ပိူင်ႇၵႅဝ်ႈ", + "allmessagescurrent": "လိၵ်ႈၶေႃႈၶၢဝ်ႇ ယၢမ်းလဵဝ်", + "allmessagestext": "ဢၼ်ၼႆႉၼႆႉ ပဵၼ် သဵၼ်ႈမၢႆၶွင် ၶေႃႈၶၢဝ်ႇပိူင်သၢင်ႈ ဢၼ်ၸႂ်ႉလႆႈ တီႈၼႂ်း လွၵ်းၸိုဝ်ႈ ဝီႇၶီႇမီႇတီႇယႃႇ။ ၶႅၼ်းတေႃႈ ဢႅဝ်ႇလႄႇတူၺ်း [https://www.mediawiki.org/wiki/Special:MyLanguage/Localisation MediaWiki Localisation] လႄႈ သင်ၸိူဝ်ႉဝႃႈ ၸဝ်ႈၵဝ်ႇ မီးၵၢင်ၸႂ် တွၼ်ႈတႃႇ ၶဝ်ႈႁူမ်ႈ ဢၼ်ၵဵဝ်ႇလူၺ်ႈ လွင်ႈပိၼ်ႇၽႃႇသႃႇ ဝီႇၶီႇမီႇတီႇယႃႇ [https://translatewiki.net translatewiki.net] ။", + "allmessagesnotsupportedDB": "ၼႃႈလိၵ်ႈၼႆႉ တေဢမ်ႇၸၢင်ႈၸႂ်ႉ ယွၼ်ႉပိူဝ်ႈဝႃႈ <strong>$wgUseDatabaseMessages</strong>ၼႆႉ ထုၵ်ႇဢိုတ်းၸႂ်ႉဝႆႉ။", + "allmessages-filter-legend": "တူဝ်ထွင်", + "allmessages-filter": "ထွင်ၼင်ႇ သၢႆငၢႆ လွင်ႈမႄးၵမ်ႉၸႂ်:", + "allmessages-filter-unmodified": "ဢၼ်ဢမ်ႇမူၼ်ႉမႄးဝႆႉ", + "allmessages-filter-all": "တင်းမူတ်း", + "allmessages-filter-modified": "မူၼ်ႉမႄးဝႆႉ", + "allmessages-prefix": "ထွင်တူၺ်းၼင်ႇ ၶေႃႈလူင်ႈၼႃႈ:", + "allmessages-language": "ၽႃႇသႃႇၵႂၢမ်း :", + "allmessages-filter-submit": "သိုပ်ႇၵႂႃႇ", + "allmessages-filter-translate": "ပိၼ်ႇၽႃႇသႃႇ", "thumbnail-more": "ႁၢင်ႈယႂ်ႇ", + "filemissing": "ၾၢႆႇႁၢႆဝႆႉ", + "thumbnail_error": "လွင်ႈၵေႃႇသၢင်ႈ ၵၢၼ်ၽိတ်းပိူင်ႈ ၽိုၼ်လိၵ်ႈ : $1", + "thumbnail_error_remote": "ၶေႃႈၶၢဝ်ႇ လွင်ႈၽိတ်းပိူင်ႈ ၵႃႈတီႈ $1: $2", + "djvu_page_error": "ၼႃႈလိၵ်ႈ DjVu ပူၼ်ႉဢွၵ်ႇၶွပ်ႇ", + "djvu_no_xml": "ဢမ်ႇၸၢင်ႈ ႁွင်ႉဢဝ် XML တွၼ်ႈတႃႇ ၾၢႆႇ DjVu", + "thumbnail-temp-create": "ဢမ်ႇၸၢင်ႈၵေႃႇသၢင်ႈ ၾၢႆႇၽိုၼ်လိၵ်ႈ ၸူဝ်ႈၵႅပ်ႉ", + "thumbnail-dest-create": "ဢမ်ႇၸၢင်ႈသိမ်း ၽိုၼ်လိၵ်ႈ ၸူး ဢွင်ႈတီႈဝႆႉ", + "thumbnail_invalid_params": "ၶေႃႈၵိုၵ်း ၽိုၼ်လိၵ်ႈ ၽိတ်းပိူင်ႈဝႆႉ", + "thumbnail_toobigimagearea": "ၾၢႆႇ ဢၼ်သႅၼ်းမႂ်း ယႂ်ႇလိူဝ်သေ $1", + "thumbnail_dest_directory": "တႃႇၵေႃႇသၢင်ႈ ၾူဝ်ႇတႃႇ ဢွင်ႈတီႈဝႆႉၼၼ်ႉ ၽိတ်းပိူင်ႈဝႆႉ", + "thumbnail_image-type": "ပိူၼ်သႅၼ်း ၶႅပ်းႁၢင်ႈ ဢမ်ႇၵမ်ႉထႅမ်ဝႆႉ", + "thumbnail_gd-library": "လွင်ႈႁၢင်ႈပွင် ႁူင်းႁွမ်တွမ် GD ဢမ်ႇယဝ်ႉတူဝ်ႈ: ၵၢၼ်သၢင်ႈ $1 ႁၢမ်းဝႆႉ", + "thumbnail_image-missing": "ၾၢႆႇဢၢပ်ႈလႅပ်ႈႁၢႆဝႆႉ : $1", + "thumbnail_image-failure-limit": "တွၼ်ႈတႃႇၶိုၼ်းတုမ်ႉတွပ်ႇပၼ် ၽိုၼ်လိၵ်ႈ ၼၼ်ႉ လွင်ႈၶတ်းၸႂ်မၼ်း လူႉလႅဝ်ၵႂႃႇ ၼမ်ၼႃႇဢႃးလႃး ($1 ဢမ်ႇၼၼ် ၼမ်လိူဝ်)။ ဝၢႆးလင်မႃး ၶႅၼ်းတေႃႈ ၶိုၼ်းၶတ်းၸႂ်တူၺ်းထႅင်ႈ လႄႈ။", + "import": "သႂ်ႇၶဝ်ႈ ၼႃႈလိၵ်ႈ", + "importinterwiki": "ဢဝ်ၼႃႈလိၵ်ႈ ၸိူဝ်းလုၵ်ႉၵႃႈတီႈ ဝီႇၶီႇတၢင်ႇၸိူဝ်း သႂ်ႇၶဝ်ႈ", + "import-interwiki-text": "လိူၵ်ႈပၼ် ဝီႇၶီႇလႄႈ ႁူဝ်ၶေႃႈ ၼႃႈလိၵ်ႈ တွၼ်ႈတႃႇ သႂ်ႇၶဝ်ႈ။\nဝၼ်းထီႉ ၶူၼ်ႉၶႆႉလႄႈ ၸိုဝ်ႈ ၽူႈမႄးထတ်း ၼၼ်ႉ တေဢဝ်သိမ်းဝႆႉ။\nၸိူဝ်းဢၼ်ဢဝ်တီႈ ဝီႇၶီႇတၢင်ႇၸိူဝ်း မႃးသႂ်ႇၼၼ်ႉ တေမၢႆတမ်းဝႆႉ ၵႃႈတီႈ [[Special:Log/import|import log]] ။", + "import-interwiki-sourcewiki": "ငဝ်ႈငႃႇ ဝီႇၶီႇ:", + "import-interwiki-sourcepage": "ငဝ်ႈငႃႇ ၼႃႈလိၵ်ႈ:", + "import-interwiki-history": "ထုတ်ႇဢဝ် ပိုၼ်းၶူၼ်ႉၶႆႈတင်းသဵင်ႈ တွၼ်ႈတႃႇ ၼႃႈလိၵ်ႈၼႆႉ", + "import-interwiki-templates": "ၶဝ်ႈပႃး လွၵ်းပိူင်တင်းသဵင်ႈ", + "import-interwiki-submit": "သႂ်ႇၶဝ်ႈ", + "import-mapping-default": "သႂ်ႇၶဝ်ႈၸူး ဢွင်ႈဝႆႉ ပိူင်ၵႅဝ်ႈ", + "import-mapping-namespace": "သႂ်ႇၶဝ်ႈၸူး ဢွင်ႈၸိုဝ်ႈ:", + "import-mapping-subpage": "သႂ်ႇၶဝ်ႈၼင်ႇ ၼႃႈလိၵ်ႈၽႄ ၶွင် ၼႃႈလိၵ်ႈၽၢႆႇတႂ်ႈၼႆႉ:", + "import-upload-filename": "ၸိုဝ်ႈၾၢႆႇ:", + "import-comment": "ၶေႃႈႁၼ်ထိုင်:", + "importtext": "ၶႅၼ်းတေႃႈ ၸႂ်ႉတိုဝ်း [[Special:Export|export utility]] သေ လုၵ်ႉတီႈ ငဝ်ႈငႃႇ ဝီႇၶီႇ​ သူင်ႇၾၢႆႇဢွၵ်ႇ။\nသိမ်းဢၼ်ၼႆႉ ၸူးတီႈ ၶွမ်ႇပိဝ်ႇတႃႇၸဝ်ႈၵဝ်ႇလႄႈ လူတ်ႇၶိုၼ်ႈဢၼ်ၼႆႉ တီႈၼႆႈ။", + "importstart": "တိုၵ်ႉဢဝ် ၼႃႈလိၵ်ႈသႂ်ႇယူႇ...", + "import-revision-count": "$1 {{PLURAL:$1|ၶူၼ်ႉၶႆႈ}}", + "importnopages": "ဢမ်ႇမီးၼႃႈလိၵ်ႈ ၸိူဝ်းတႃႇသႂ်ႇၶဝ်ႈ", + "imported-log-entries": "သႂ်ႇၶဝ်ႈယဝ်ႉ $1 {{PLURAL:$1|မၢႆတမ်း ၶေႃႈသႂ်ႇၶဝ်ႈ}}.", + "importfailed": "လွင်ႈသႂ်ႇၶဝ်ႈ ဢမ်ႇၶႅမ်ႉလႅပ်ႈ: <nowiki>$1</nowiki>", + "importunknownsource": "ဢမ်ႇႁူႉပိူင်သႅၼ်း ငဝ်ႈငႃႇ သႂ်ႇၶဝ်ႈ", + "importcantopen": "ဢမ်ႇၸၢင်ႈပိုတ်ႇ ၾၢႆႇသႂ်ႇၶဝ်ႈ", + "importbadinterwiki": "ႁဵင်းၵွင်ႉ ဝီႇၶီႇၸူမ် ဢၼ်ဢမ်ႇလီ", + "importsuccess": "သႂ်ႇၶဝ်ႈ ယဝ်ႉတူဝ်ႈယဝ်ႈ!", + "importnosources": "တီႈဢၼ်မၵ်းမၼ်ႈဝႆႉ တႃႇသႂ်ႇၶဝ်ႈၼၼ်ႉ မၼ်းဢမ်ႇမီး ဝီႇၶီႇ လႄႈ လွင်ႈလူတ်ႇၶိုၼ်ႈ ပိုၼ်းၵမ်းသိုဝ်ႈၼၼ်ႉ ထုၵ်ႇဢိုတ်းၸႂ်ႉဝႆႉ။", + "importnofile": "ၾၢႆႇသႂ်ႇၶဝ်ႈ ဢမ်ႇလႆႈလူတ်ႇၶိုၼ်ႈဝႆႉ။", + "importuploaderrorsize": "လွင်ႈလူတ်ႇၶိုၼ်ႈ ၾၢႆႇသႂ်ႇၶဝ်ႈ ဢမ်ႇၶႅမ်ႉလႅပ်ႈ။\nၾၢႆႇၼၼ်ႉ ယႂ်ႇပူၼ်ႉလိူဝ် သႅၼ်းလူတ်ႇၶိုၼ်ႈ ဢၼ်ၶႂၢင်းပၼ်ဝႆႉ။", + "importuploaderrortemp": "လွင်ႈလူတ်ႇၶိုၼ်ႈ ၾၢႆႇသႂ်ႇၶဝ်ႈ ဢမ်ႇၶႅမ်ႉလႅပ်ႈ။\nၾူဝ်ႈတႃႇၸႂ်ႉတူဝ်ႈၵႅမ်ႉၼၼ်ႉ ႁၢႆဝႆႉ။", + "import-parse-failure": "ပွင်ႈသႂ်ႇၶဝ်ႈ XML ဢမ်ႇၶႅမ်ႉလႅပ်ႈ", + "import-noarticle": "ဢမ်ႇမီးၼႃႈလိၵ်ႈ ၸိူဝ်းတႃႇသႂ်ႇၶဝ်ႈ!", + "import-nonewrevisions": "ဢမ်ႇမီးၶေႃႈၶူၼ်ႉၶႆႈ ဢၼ်သႂ်ႇၶဝ်ႈဝႆႉ (ၶဝ်ႈၸိူဝ်းၼၼ်ႉ ပၼ်ဝႆႉယဝ်ႉ ႁိုဝ်ဢမ်ႇၼၼ် ထုၵ်ႇၶၢမ်ႈပႅတ်ႈ ယွၼ်ႉမီးလွင်ႈၽိတ်းပိူင်ႈ)။", + "xml-error-string": "$1 တီႈ ထႅဝ် $2, ယွင်း $3 (byte $4): $5", + "import-upload": "လူတ်ႇၶိုၼ်ႈ ၶေႃႈမုၼ်း XML", + "importlogpage": "သႂ်ႇၶဝ်ႈ မၢႆတမ်း", + "javascripttest": "လွင်ႈၵူတ်ႇထတ်း JavaScript", + "javascripttest-pagetext-unknownaction": "\"$1\" လွင်ႈတူင်ႉၼိုင် ဢၼ်ဢမ်ႇႁူႉၸၵ်း။", + "javascripttest-qunit-intro": "တူၺ်း [$1 ၽိုၼ်လိၵ်ႈ လွင်ႈၵူတ်ႇထတ်း] တီႈ mediawiki.org ။", "tooltip-pt-userpage": "ၼႃႈလိၵ်ႈသုၼ်ႇတူဝ်ၸဝ်ႈၵဝ်ႇ", + "tooltip-pt-anonuserpage": "ၼႃႈလိၵ်ႈ ၽူႈၸႂ်ႉတိုဝ်း တွၼ်ႈတႃႇ ႁဵင်းလိၵ်ႈဢၢႆႇၽီႇ ဢၼ်ၸဝ်ႈၵဝ်ႇ တိုၵ်ႉမႄးထတ်း ၼင်ႇ", "tooltip-pt-mytalk": "ၼႃႈလိၵ်ႈသပ်းလႅင်းၸဝ်ႈၵဝ်ႇ", + "tooltip-pt-anontalk": "လွင်ႈဢုပ်ႇဢူဝ်း ၵပ်းၵၢႆႇလွင်ႈမႄးထတ်း ၵႃႈတီႈ ႁဵင်းလိၵ်ႈဢၢႆႇၽီႇဢၼ်ၼႆႉ", "tooltip-pt-preferences": "{{GENDER:|ၸဝ်ႈၵဝ်ႇ}} ငဝ်ႈၵုမ်းပိူင်", "tooltip-pt-watchlist": "သဵၼ်ႈမၢႆၼႃႈလိၵ်ႈ ဢၼ်ပႂ်ႉတူၺ်း တႃႇလႅၵ်ႈလၢႆႈ", "tooltip-pt-mycontris": "သဵၼ်ႈမၢႆ ၶေႃႈလိၵ်ႈၸဝ်ႈၵဝ်ႇ", + "tooltip-pt-anoncontribs": "သဵၼ်ႈမၢႆ လွင်ႈမႄးထတ်း ၸိူဝ်းႁဵတ်းဝႆႉ ၵႃႈတီႈ ႁဵင်းလိၵ်ႈ ဢၢႆႇၽီႇဢၼ်ၼႆႉ", "tooltip-pt-login": "ဢမ်ႇလွၵ်ႉဢိၼ်ႇၵေႃႈမူၼ်ႉမႄးလႆႈ ၵူၺ်း တိုၵ်းသူၼ်းႁႂ်ႈလွၵ်ႉဢိၼ်ႇ", - "tooltip-pt-logout": "လွၵ်ႉဢဝ်ႉ", + "tooltip-pt-logout": "လွၵ်ႉဢွၵ်ႉ", "tooltip-pt-createaccount": "ၸဝ်ႈၵဝ်ႇထုၵ်ႇပၼ်ႁႅင်း တွၼ်ႈတႃႇၵေႃႇသၢင်ႈ ဢၶွင်ႉလႄႈ လွၵ်ႉဢိၼ်ႇ။ ႁူမ်ႈဝႃႈၼၼ်သေတႃႉ ဢမ်ႇၸႂ်ႈဝႃႈ ဢမ်ႇႁဵတ်းဢမ်ႇလႆႈၼင်ႇၵဝ်ႇ။", "tooltip-ca-talk": "ဢုပ်ႇဢူဝ်းလွင်ႈပႃးဝႆႉၼႂ်းၼႃႈလိၵ်ႈ", "tooltip-ca-edit": "မႄးထတ်း ၼႃးလိၵ်ႈၼႆႉ", "tooltip-ca-addsection": "တႄႇပွတ်းတွၼ်ႈမႂ်ႇ", "tooltip-ca-viewsource": "ၼႃႈ​လိၵ်ႈ​ၼႆႉ ထုၵ်ႇ​ႁေႉ​ၵင်ႈ​ဝႆႉ။ သူ​ၸၢင်ႊ​တူၺ်း​ င​ဝ်ႈငႃႇမၼ်းလႆႈ", - "tooltip-ca-history": "လွင်ႈၶူၼ်ႉလူဢၼ်ပူၼ်ႉမႃး တႃႇၼႃႈလိၵ်ႈၼႆႉ", + "tooltip-ca-history": "လွင်ႈၶူၼ်ႉၶႆႈဢၼ်ပူၼ်ႉမႃး တႃႇၼႃႈလိၵ်ႈၼႆႉ", "tooltip-ca-protect": "ႁေႉၵင်ႈ ၼႃႈလိၵ်ႈၼႆႉ", + "tooltip-ca-unprotect": "လႅၵ်ႈလၢႆႈ လွင်ႈႁႄႉၵင်ႈ ၶွင်ၼႃႈလိၵ်ႈၼႆႉ", "tooltip-ca-delete": "ယႃႉ ၼႃႈလိၵ်ႈၼႆႉ", + "tooltip-ca-undelete": "ဢဝ်လွင်ႈမႄးထတ်း ဢၼ်ယဝ်ႉၼၼ်ႉ ဝႆႉၶိုၼ်းၸူး ၼႃႈလိၵ်ႈၼႆႉ၊ မိူဝ်ႈၼႃႈလိၵ်ႈၼၼ်ႉ ပႆႇတၼ်းထုၵ်ႇမွတ်ႇပႅတ်ႈၼၼ်ႉ။", "tooltip-ca-move": "ၶၢႆႉ ၼႃႈလိၵ်ႈၼႆႉ", "tooltip-ca-watch": "ဢဝ်ၼႃႈလိၵ်ႈၼႆႉ သႂ်ႇၼႂ်းသဵၼ်ႈမၢႆပႂ်ႉတူၺ်း", + "tooltip-ca-unwatch": "ထွၼ်ပႅတ်ႈ ၼႃႈလိၵ်ႈၼႆႉ ၵႃႈတီႈ သဵၼ်ႈမၢႆပႂ်ႉတူၺ်း ၸဝ်ႈၵဝ်ႇ", "tooltip-search": "ၶူၼ်ႉႁႃ {{SITENAME}}", "tooltip-search-go": "သင်ဝႃႈ မီးဝႆႉၸိုဝ်ႈ ၵႂႃႇၸူးၼႃႈလိၵ်ႈၸွမ်းၼင်ႇၸိုဝ်ႈၼႆႉ", "tooltip-search-fulltext": "​ႁႃ​ပၼ် ၼႃႈ​လိၵ်ႈ ဢၼ်​ပႃး​တူဝ်​လိၵ်ႈ ၸိူ​ဝ်းၼႆႉလႄႈ", @@ -1601,25 +2052,85 @@ "tooltip-t-recentchangeslinked": "ၵၢၼ်လႅၵ်ႈလၢႆႈၼႂ်းၼႃႈလိၵ်ႈ ဢၼ်လုၵ်ႉတီႈၼႃႈလိၵ်ႈၼႆႉသေ လိင်ႉဝႆႉ", "tooltip-feed-atom": "ၾိတ်ႉဢတွမ်ႊ(Atom) ၶွင်ႈၼႃႈလိၵ်ႈၼႆႉ", "tooltip-t-contributions": "သဵၼ်ႈမၢႆလွင်ႈၶဝ်ႈႁူမ်ႈ တွၼ်ႈတႃႇ {{GENDER:$1|ၽူႈၸႂ်ႉတိုဝ်းၼႆ့}}", + "tooltip-t-emailuser": "သူင်ႇ ဢီးမေးလ်ၸူး {{GENDER:$1|ၽူႈၸႂ်ႉတိုဝ်း ၵေႃႉၼႆႉ}}", + "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": "တူၺ်း ၼႃႈလိၵ်ႈသိုဝ်ႇ", "tooltip-ca-nstab-special": "ၼႃႈလိၵ်ႈၼႆႉပဵၼ် ၼႃႈလိၵ်ႈၶိုၵ်ႉတွၼ်း၊ ၸဝ်ႈၵဝ်ႇ တေဢမ်ႇၸၢင်ႈ မႄး​ထတ်းႁင်း ၸဝ်ႈၵဝ်ႇ ၶေႃၶေႃ။", "tooltip-ca-nstab-project": "တူၺ်းၼႃႈလိၵ်ႈ ပရေႃးၵျႅၵ်ႉ", "tooltip-ca-nstab-image": "တူၺ်းၼႃႈလိၵ်ႈၾၢႆႇ", + "tooltip-ca-nstab-mediawiki": "တူၺ်း ၶေႃႈၶၢဝ်ႇ ပိူင်သၢင်ႈ", "tooltip-ca-nstab-template": "တူၺ်း ပိူင်တမ်း", + "tooltip-ca-nstab-help": "တူၺ်းၼႃႈလိၵ်ႈ ၸွႆႈထႅမ်", "tooltip-ca-nstab-category": "တူၺ်းလိူင်ႈမၼ်း", + "tooltip-minoredit": "မၢႆဢၼ်ၼႆႉၼင်ႇ လွင်ႈမႄးထတ်း ဢိတ်းဢီႈ", "tooltip-save": "ၵဵပ်းသိမ်း လွင်ႈလႅၵ်ႈလၢႆႈ", + "tooltip-publish": "ပိုတ်ႇဢွၵ်ႇ လွင်ႈလႅၵ်ႈလၢႆႈၸဝ်ႈၵဝ်ႇ", "tooltip-preview": "လူင်ႈၼႃႈတူၺ်း လွင်ႈလႅၵ်ႈလၢႆႈၸဝ်ႈၵဝ်ႇ၊ ၶႅၼ်းတေႃႈၸႂ်ႉပၼ် မိူဝ်ႈပႆႇသိမ်း", "tooltip-diff": "ၼႄပၼ် လွင်ႈလႅၵ်ႈလၢႆႈ ၸိူဝ်းၸဝ်ႈၵဝ်ႇ ႁဵတ်းၵႂႃႇတီႈ တူဝ်လိၵ်ႈ", - "tooltip-rollback": "\"ႁူၼ်လင်ၶိုၼ်း\" ၼႆႉ မၼ်းတေဢဝ် ၼႃႈလိၵ်ႈၼႆႉ ၶိုၼ်းပိၼ်ႇဝၢႆႇၸူး ၸွမ်းၼင်ႇ ၽူႈႁူမ်ႈသၢင်ႈ ၵေႃႉလိုၼ်းသုတ်းၼၼ်ႉ ထတ်းသၢင်မႃး။", + "tooltip-compareselectedversions": "တူၺ်း လွင်ႈပႅၵ်ႇပိူင်ႈ ၼႂ်းၵႄႈ လွင်ႈၶူၼ်ႉဢၢၼ်ႇသွင်ဢၼ် ဢၼ်လိူၵ်ႈဝႆႉ ၶွင်ၼႃႈလိၵ်ႈၼႆႉ", + "tooltip-watch": "ဢဝ်ၼႃႈလိၵ်ႈၼႆႉ သႂ်ႇၼႂ်းသဵၼ်ႈမၢႆပႂ်ႉတူၺ်းၸဝ်ႈၵဝ်ႇ", + "tooltip-watchlistedit-normal-submit": "ထွၼ်ပႅတ်ႈ ႁူဝ်ၶေႃႈ", + "tooltip-watchlistedit-raw-submit": "ဢၢပ်ႉတိတ်ႉ သဵၼ်ႈမၢႆပႂ်ႉတူၺ်း", + "tooltip-recreate": "ႁူမ်ႈဝႃႈ မၼ်းထုၵ်ႇမွတ်ႇပႅတ်ႈယဝ်ႉၵေႃႈ ၶိုၼ်းၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈ", + "tooltip-upload": "တႄႇလူတ်ႇၶိုၼ်ႈ", + "tooltip-rollback": "\"ႁူၼ်လင်ၶိုၼ်း\" ၼႆႉ မၼ်းတေဢဝ် ၼႃႈလိၵ်ႈၼႆႉ ပိၼ်ႈၶိုၼ်းၸူး ၸွမ်းၼင်ႇ ၽူႈႁူမ်ႈသၢင်ႈ ၵေႃႉလိုၼ်းသုတ်းၼၼ်ႉ မႄးထတ်းမႃး။", "tooltip-undo": "\"Undo\" ၼႆ့ မၼ်းတေဢဝ် ၵၢၼ်ထတ်းသၢင်ဢၼ်ၼႆႉ ၶိုၼ်းပိၼ်ႇၸူးသေ ၶိုၼ်းပၼ် ပၼ် လၢႆးတူၺ်းလူင်ႈၼႃႈ တႃႇၵၢၼ်ထတ်းသၢင်ႈဢၼ်ၼႆႉ။ မၼ်းတေႁဵတ်းႁႂ်ႈၸဝ်ႈၵဝ်ႇ ထႅမ်သႂ်ႇ လွင်ႈတၢင်းမၼ်း ၵႃႈတီႈ လွၵ်းႁူဝ်ႁုပ်ႇမၼ်းၼၼ်ႉယူႇ။", + "tooltip-preferences-save": "သိမ်း ငဝ်ႈၵုမ်းပိူင်", "tooltip-summary": "ထႅမ်သႂ်ႇ ၶေႃႈသပ်းလႅင်း ဢၼ်ၵႅပ်ႈ", + "anonymous": "{{PLURAL:$1|ၽူႈၸႂ်ႉတိုဝ်း}} ဢၼ်ဢမ်ႇမီးၸိုဝ်ႈ ၶွင် {{SITENAME}}", + "siteuser": "{{SITENAME}} ၽူႈၸႂ်ႉတိုဝ်း $1", + "anonuser": "{{SITENAME}} ၽူႈၸႂ်ႉတိုဝ်း ဢၼ်ဢမ်ႇမီးၸိုဝ်ႈ $1", + "lastmodifiedatby": "ၼႃႈလိၵ်ႈၼႆႉ ထုၵ်ႇ $3 ၵေႃႉမူၼ်ႉမႄးဝႆႉမိူဝ်ႈ $2, $1။", + "spam_reverting": "လွင်ႈပိၼ်ႈၶိုၼ်း လွင်ႈၶူၼ်ႉၶႆႈ ၵမ်းလိုၼ်းသုတ်းၼၼ်ႉ မၼ်းဢမ်ႇၶဝ်ႈပႃးဝႆႉ ႁဵင်းၵွင်ႉ ဢၼ်ၵွင်ႉၸူး $1", "simpleantispam-label": "ၵူတ်ႇထတ်း Anti-spam.\n<strong>ယႃႇပေ</strong>ထႅမ်ဢၼ်ၼႆႉသႂ်ႇ!", + "pageinfo-header-basic": "�လွၼ်ႉၶၢဝ်ႈ ပိုၼ်ႉထၢၼ်", + "pageinfo-header-edits": "ပိုၼ်းမႄးထတ်း", + "pageinfo-header-restrictions": "လွင်ႈႁႄႉၵင်ႈၼႃႈလိၵ်ႈ", + "pageinfo-header-properties": "ၼမ်ႉၸႂ်ႉ ၼႃႈလိၵ်ႈ", + "pageinfo-display-title": "ဢွၵ်ႇၼႄ ႁူဝ်ၶေႃႈ", + "pageinfo-default-sort": "​သေႃးၸႅၼ်ႇ ပိူင်ၵႅဝ်ႈ", + "pageinfo-length": "တၢင်းယၢဝ်း ၼႃႈလိၵ်ႈ (ၼင်ႇ bytes)", + "pageinfo-article-id": "မၢႆၽၢင် ၼႃႈလိၵ်ႈ", + "pageinfo-language": "ၽႃႇသႃႇ လမ်းၼႂ်း ၼႃႈလိၵ်ႈ", + "pageinfo-language-change": "လႅၵ်ႈလၢႆႈ", + "pageinfo-content-model": "ပိူင်ၵေႃႇသၢင်ႈ လမ်းၼႂ်း ၼႃႈလိၵ်ႈ", + "pageinfo-content-model-change": "လႅၵ်ႈလၢႆႈ", + "pageinfo-robot-index": "ၶႂၢင်းပၼ်ဝႆႉ", + "pageinfo-robot-noindex": "ဢမ်ႇၶႂၢင်းပၼ်ဝႆႉ", + "pageinfo-watchers": "တၢင်းၼမ် ၽူႈတူၺ်းၼႃႈလိၵ်ႈ", + "pageinfo-visiting-watchers": "တၢင်းၼမ်ၽူႈၶဝ်ႈတူၺ်း ၼႃႈလိၵ်ႈ ၵေႃႉဢၼ် တိုၵ်ႉႁႃၶဝ်ႈဢႅဝ်တီႈ လွင်ႈမႄးထတ်း ၸိူဝ်းပႆႇပေႃးႁိုင်", + "pageinfo-few-watchers": "ဢေႇလိူဝ်သေ $1 {{PLURAL:$1|ၽူႈၶဝ်ႈတူၺ်း}}", + "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": "လွၼ်ႉၶၢဝ်ႇ", + "pageinfo-contentpage": "ၼပ်ႉဢၢၼ်ႇဝႆႉၼင်ႇ ၼႃႈလိၵ်ႈလမ်းၼႂ်း", + "pageinfo-contentpage-yes": "ၸႂ်ႈယဝ်ႉ", + "pageinfo-protect-cascading": "လွင်ႈႁႄႉၵင်ႈၼႆႉ လႆႈလူင်းယူႇတီႈၼႆ", + "pageinfo-protect-cascading-yes": "ၸႂ်ႈယဝ်ႉ", + "pageinfo-protect-cascading-from": "လွင်ႈႁႄႉၵင်ႈၼႆႉ လႆလူင်းယူႇတီႈၼႆႈ", + "pageinfo-category-info": "လွၼ်ႉၶၢဝ်ႇ ထၢၼ်ႈၵၼ်", + "pageinfo-category-total": "တၢင်းၼမ် ၽူႈၶဝ်ႈၸုမ်း", + "pageinfo-category-pages": "တၢင်းၼမ်ၼႃႈလိၵ်ႈ", + "pageinfo-category-subcats": "တၢင်းၼမ် ထၢၼ်ႈၵၼ်ၽႄ", + "pageinfo-category-files": "တၢင်းၼမ်ၾၢႆႇ", + "pageinfo-user-id": "မၢႆတူဝ် ၽူႈၸႂ်ႉတိုဝ်း", + "markaspatrolleddiff": "မၢႆဝႆႉၼင်ႇ ပႂ်ႉယၢမ်း", + "markaspatrolledtext": "မၢႆဝႆႉၼႃႈလိၵ်ႈၼင်ႇ ပႂ်ႉယၢမ်း", + "markedaspatrolled": "မၢႆဝႆႉၼင်ႇ ပႂ်ႉယၢမ်း", "previousdiff": "ၵၢၼ်မႄးထတ်း ဢၼ်ၵဝ်ႇ", "nextdiff": "ထတ်းသၢင်ႈဢၼ်မႂ်ႇမႂ်ႇ", "file-info-size": "$1 × $2 pixels, တၢင်းလဵၵ်ႉတၢင်းယႂ်ႇ ၾၢႆႇ: $3, ယိူင်ႈ MIME: $4", @@ -1629,6 +2140,29 @@ "show-big-image-preview": "သႅၼ်းတႃႇတူၺ်းလူင်ႈၼႃႈ: $1.", "show-big-image-other": " {{PLURAL:$2|resolution|resolutions}}: $1 တၢင်ႇဢၼ်", "show-big-image-size": "$1 × $2 ၽိၵ်ႉသိူဝ်ႇ", + "ilsubmit": "ၶူၼ်ႉႁႃ", + "bydate": "ၼင်ႇ ဝၼ်းထီႉ", + "sp-newimages-showfrom": "ၼႄ ၾၢႆႇဢၼ်မႂ်ႇ ၸိူဝ်းတႄႇ မႃးမိူဝ်ႈ $2, $1", + "seconds": "{{PLURAL:$1|$1 ၶိတ်ႇ}}", + "minutes": "{{PLURAL:$1|$1 မဵတ်ႉ}}", + "hours": "{{PLURAL:$1|$1 မူင်း}}", + "days": "{{PLURAL:$1|$1 ဝၼ်း}}", + "weeks": "{{PLURAL:$1|$1 ဝူင်ႈ}}", + "months": "{{PLURAL:$1|$1 လိူၼ်}}", + "years": "{{PLURAL:$1|$1 ပီ}}", + "ago": "ပူၼ်ႉမႃး $1", + "just-now": "တိုၵ်ႉႁႃယၢမ်းလဵဝ်", + "hours-ago": "မိူဝ်ႈပူၼ်ႉမႃႈ $1 {{PLURAL:$1|မူင်း}}", + "minutes-ago": "မိူဝ်ႈပူၼ်ႉမႃး $1 {{PLURAL:$1|မဵတ်ႉ}}", + "seconds-ago": "မိူဝ်ႈပူၼ်ႉမႃး $1 {{PLURAL:$1|ၶိတ်ႇ}}", + "monday-at": "ဝၼ်းၸၼ် မိူဝ်ႈ $1", + "tuesday-at": "ဢၢင်းၵၢင်း မိူဝ်ႈ $1", + "wednesday-at": "ဝၼ်းပုတ်ႉ မိူဝ်ႈ $1", + "thursday-at": "ဝၼ်းၽတ်း မိူဝ်ႈ $1", + "friday-at": "ဝၼ်းသုၵ်း မိူဝ်ႈ $1", + "saturday-at": "ဝၼ်းသဝ် မိူဝ်ႈ $1", + "sunday-at": "ဝၼ်းဢႃးတိတ်ႉ မိူဝ်ႈ $1", + "yesterday-at": "မိူဝ်ႈဝႃး မိူဝ်ႈ $1", "metadata": "ၶေႃႈမုၼ်းၼႅပ်ႇ", "metadata-help": "ၾၢႆႇဢၼ်ၼႆႉ မၼ်းၶဝ်ႈပႃးဝႆႉလွၼ်ႉၶၢဝ်ႇ ထႅမ်သႂ်ႇမႂ်ႇ၊ ဢၼ်ဢၢပ်ႈထုၵ်ႉတီႈ ၵွင်ႈထႆႇ digital ဢမ်ႇၼၼ် တူဝ်ၵူတ်ႇ scanner ​ထႅမ်သႂ်ႇသေ သၢင်ႈဝႆႉ ဢမ်ႇၼၼ် လႅၵ်ႈလၢႆႈဝႆႉ။\nသင်ၸိူဝ်ႉၾၢႆႇဢၼ်ၼႆႉ ထုၵ်ႇမႄးၶိုၼ်းဝႆႉၵႃႈတီႈ ၾၢႆႇငဝ်ႈတိုၼ်းမၼ်းၼႆ ၼႂ်းၵႃႈ ၸဝ်ႈၵဝ်ႇမႄးဝႆႉၼၼ်ႉ မၼ်းတေဢမ်ႇထၢင်ႇႁၢင်ႈလႆႈ ၵူႈလွင်ႈ။", "metadata-fields": "ၸိူဝ်းပဵၼ် လွၵ်းၶေႃႈမုၼ်းႁူဝ်ယွႆႈ တႃႇၶႅပ်းႁၢင်ႈ ဢၼ်မီးဝႆႉတီႈၼႂ်း ၶေႃႈၶၢဝ်ႇပွတ်း message ၼႆႉၼႆ မၼ်းတေၶဝ်ႈပႃးဝႆႉ ၵႃႈတီႈ ၼႃႈလိၵ်ႈၶႅပ်းႁၢင်ႈ ဢၼ်တေၼႄပၼ် ၽွင်းမိူဝ်ႈ လွၵ်းၶေႃႈမုၼ်းႁူဝ်ယွႆႈ လၼ်ႇၼႄပၼ်။\nဢၼ်ၵိုတ်းလိူဝ်ၸိူဝ်းၼၼ်ႉတႄႉ တေထုၵ်ႇလပ်ႉဝႆႉ ၸွမ်းၼင်ႇ ပိူင်ၵႅဝ်ႈမၼ်း။\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", @@ -1644,10 +2178,40 @@ "exif-datetimeoriginal": "ဝၼ်းလႄႈၶၢဝ်းယၢမ်း တမ်ႈတီႈ ၶေႃႈမုၼ်းမႂ်ႇ", "exif-datetimedigitized": "ဝၼ်းထီႉလႄႈ ၶၢဝ်းယၢမ်းတႃႇ digitizing", "exif-orientation-1": "သႃမၺ်း", + "exif-exposureprogram-1": "မိုဝ်းႁဵတ်း", + "exif-dc-contributor": "ၽူႈၶဝ်ႈႁူမ်ႈ", "namespacesall": "တင်းမူတ်း", "monthsall": "တင်းမူတ်း", + "confirm-rollback-top": "တေပိၼ်ႈၶိုၼ်း လွင်ႈမႄးထတ်း ၼႃႈလိၵ်ႈဢၼ်ၼႆႉၼႄႇ?", + "watchlistedit-normal-title": "မႄးထတ်း သဵၼ်ႈမၢႆပႂ်ႉတူၺ်း", + "watchlistedit-normal-legend": "ထွၼ်ပႅတ်ႈ ႁူဝ်ၶေႃႈ တမ်ႈတီႈ သဵၼ်ႈမၢႆမႂ်ႉတူၺ်း", + "watchlistedit-normal-submit": "ထွၼ်ပႅတ်ႈ ႁူဝ်ၶေႃႈ", "watchlistedit-normal-done": "{{PLURAL:$1|A single title was|$1 titles were}} ဢဝ်ဢွၵ်ႇ တမ်ႈတီႈ သဵၼ်ႈဢၼ်ၸဝ်ႈၵဝ်ႇ ပႂ်ႉတူၺ်း", + "watchlistedit-raw-title": "မႄးထတ်း သဵၼ်ႈမၢႆပႂ်ႉတူၺ်းပိူင်လိူင်း", + "watchlistedit-raw-legend": "မႄးထတ်း သဵၼ်ႈမၢႆပႂ်ႉတူၺ်းပိူင်လိူင်း", + "watchlistedit-raw-titles": "ႁူဝ်ၶေႃႈ :", + "watchlistedit-raw-submit": "ဢၢပ်ႉတိတ်ႉ သဵၼ်ႈမၢႆပႂ်ႉတူၺ်း", + "watchlistedit-raw-done": "သဵၼ်ႈမၢႆပႂ်ႉတူၺ်းၸဝ်ႈၵဝ်ႇ ႁဵတ်းဢၢပ်ႉတိတ်ႉယဝ်ႉယဝ်ႈ", + "watchlistedit-raw-added": "{{PLURAL:$1|1 ႁူဝ်ၶေႃႈ ထုၵ်ႇ}} ထႅမ်သႂ်ႇဝႆႉ:", + "watchlistedit-raw-removed": "{{PLURAL:$1|1 ႁူဝ်ၶေႃႈထုၵ်ႇ}} ထွၼ်ပႅတ်ႈဝႆႉ:", + "watchlistedit-clear-title": "လၢင်ႉပႅတ်ႈ သဵၼ်ႈမၢႆပႂ်ႉတူၺ်း", + "watchlistedit-clear-legend": "လၢင်ႉပႅတ်ႈ သဵၼ်ႈမၢႆပႂ်ႉတူၺ်း", + "watchlistedit-clear-explain": "ႁူဝ်ၶေႃႈ တင်းသဵင်ႈၸိူဝ်းၼႆႉ တေထုၵ်ႇထွၼ်ပႅတ်ႈ ၵႃႈတီႈ သဵၼ်ႈမၢႆတူၺ်း ၸဝ်ႈၵဝ်ႇ", + "watchlistedit-clear-titles": "ႁူဝ်ၶေႃႈ :", + "watchlistedit-clear-submit": "လၢင်ႉပႅတ်ႈ ​သဵၼ်ႈမၢႆတူၺ်း (ဢၼ်ၼႆႉပဵၼ် ၶေႃႈၵိုၵ်း)", + "watchlistedit-clear-done": "သဵၼ်ႈမၢႆတူၺ်း ၸဝ်ႈၵဝ်ႇ ၽဵဝ်ႈလၢင်ႉယဝ်ႉယဝ်ႈ။", + "watchlistedit-clear-removed": "{{PLURAL:$1|1 ႁူဝ်ၶေႃႈ ထုၵ်ႇ}} ထွၼ်ပႅတ်ႈယဝ်ႉ:", + "watchlistedit-too-many": "တီႈၼႆႈၼႆႉ မီးၼႃႈလိၵ်ႈၼမ်ၼႃ တွၼ်ႈတႃႇတေဢွၵ်ႇၼႄ။", + "watchlisttools-clear": "လၢင်ႉပႅတ်ႈ သဵၼ်ႈမၢႆပႂ်ႉတူၺ်း", + "watchlisttools-view": "တူၺ်း ၸိူဝ်းလႅၵ်ႈလၢႆႈ ဢၼ်သၢင်ႇထုၵ်ႇ", + "watchlisttools-edit": "တူၺ်း လႄႈ မႄးထတ်း သဵၼ်ႈမၢႆတူၺ်း", + "watchlisttools-raw": "မႄးထတ်း သဵၼ်ႈမၢႆတူၺ်း ပိူင်လိူင်း", "signature": "[[{{ns:user}}:$1|$2]] ([[{{ns:user_talk}}:$1|talk]])", + "timezone-local": "လူဝ်ၵႂ်ႇ", + "version": "မၢႆဢွၵ်ႇ", + "version-extensions": "သၢႆလင် ၸိူဝ်းဢူၼ်းသႂ်ႇဝႆႉ�", + "version-skins": "ၽိဝ်ၼင် ၸိူဝ်းဢူၼ်းသႂ်ႇဝႆႉ�", + "version-specialpages": "�ၼႃႈလိၵ်ႈ ၶိုၵ်ႉတွၼ်း", "specialpages": "ၼႃႈလိၵ်ႈ ၶိုၵ်ႉတွၼ်း", "tag-filter": "ၶတ်းလိူၵ်ႈဢဝ်[[Special:Tags|Tag]]:", "tag-list-wrapper": "([[Special:Tags|{{PLURAL:$1|Tag|Tags}}]]: $2)", @@ -1655,6 +2219,8 @@ "logentry-move-move": "$1 {{GENDER:$2|ၶၢႆႉယဝ်ႉ}} ၼႃႈလိၵ်ႈ $3 တေႃႇ $4", "logentry-newusers-create": "ဢၶွင်ႉၽူႈၸႂ်ႉတိုဝ်း $1 ၼႆႉ လႆႈ {{GENDER:$2|ၵေႃႇသၢင်ႈယဝ်ႉ}}", "logentry-upload-upload": "$1 {{GENDER:$2|လူတ်ႇၶိုၼ်ႈၵႂႃႇယဝ်ႉ}} $3", - "searchsuggest-search": "ၶူၼ်ႉႁႃ", - "mw-widgets-dateinput-no-date": "ပႆႇလိူၵ်ႈဝၼ်းယၢမ်း" + "searchsuggest-search": "ၶူၼ်ႉႁႃ {{SITENAME}}", + "mw-widgets-dateinput-no-date": "ပႆႇလိူၵ်ႈဝၼ်းယၢမ်း", + "revid": "ၶူၼ်ႉၶႆႈ $1", + "pageid": "မၢႆၽၢင် ၽိုၼ်လိၵ်ႈ $1" } diff --git a/languages/i18n/si.json b/languages/i18n/si.json index 59a3ba6700..fd9f5a5d24 100644 --- a/languages/i18n/si.json +++ b/languages/i18n/si.json @@ -429,19 +429,12 @@ "login": "පිවිසෙන්න", "login-security": "ඔබේ අනන්‍යතාවය තහවුරු කරන්න", "nav-login-createaccount": "පිවිසෙන්න / නව ගිණුමක් තනන්න", - "userlogin": "පිවිසෙන්න / නව ගිණුමක් තනන්න", - "userloginnocreate": "ප්‍රවිෂ්ට වන්න", "logout": "නික්මීම", "userlogout": "නික්මීම", "notloggedin": "ප්‍රවිසී නැත", "userlogin-noaccount": "ගිණුමක් නොමැතිද?", "userlogin-joinproject": "{{SITENAME}} හා එක්වන්න", - "nologin": "ඔබ හට ගිණුමක් නොමැතිද? '''$1'''.", - "nologinlink": "ගිණුමක් තනන්න", "createaccount": "අලුත් ගිණුමක් තනන්න", - "gotaccount": "දැනටමත් ගිණුමක් තිබේද? $1.", - "gotaccountlink": "පිවිසෙන්න", - "userlogin-resetlink": "ඔබේ පිවිසුම් තොරතුරු අමතකද?", "userlogin-resetpassword-link": "ඔබේ මුරපදය නැති වුනාද?", "userlogin-helplink2": "ගිණුම වෙත පිවිසීම සඳහා උදවු", "userlogin-loggedin": "ඔබ දැනටමත් {{GENDER:$1|}} ලෙස පිවිසී ඇත.\nනව පරිශීලකයෙකු ලෙස ඇතුළු වීමට පහත ආකෘතිය පුරවන්න.", @@ -452,7 +445,6 @@ "createacct-another-email-ph": "ඊ මේල් ලිපිනය ඇතුළත් කරන්න.", "createaccountmail": "තාවකාලික අහුඹු මුර පදයක් භාවිතා කර එය පහත දක්වා ඇති විද්යුත් තැපැල් ලිපිනයට යවන්න", "createacct-realname": "නියම නම (වෛකල්පීය)", - "createaccountreason": "හේතුව:", "createacct-reason": "හේතුව", "createacct-reason-ph": "ඔබ තවත් ගිණුමක් තනන්නේ කුමක් නිසාද", "createacct-submit": "ඔබේ ගිණුම තනන්න", @@ -555,8 +547,6 @@ "passwordreset-emaildisabled": "විද්‍යුත් තැපැල් පහසුකම මෙම විකි ය සඳහා අවලංගු කොට ඇත.", "passwordreset-username": "පරිශීලක නාමය:", "passwordreset-domain": "වසම:", - "passwordreset-capture": "ප්‍රතිපලදායක විද්‍යුත් තැපෑල නරඹනවාද?", - "passwordreset-capture-help": "ඔබ මෙම කොටුව සලකුණු කලොත්, විද්‍යුත් තැපෑලක් (තාවකාලික මුරපදය සමඟ) ඔබට සහ යවන පුද්ගලයට දිස්වනු ඇත.", "passwordreset-email": "විද්‍යුත්-තැපැල් ලිපිනය:", "passwordreset-emailtitle": "{{SITENAME}}යෙහි ගිණුම් තොරතුරු", "passwordreset-emailtext-ip": "කවුරුන්හෝ (බොහෝවිට ඔබ, $1 අන්තර්ජාල ලිපිනය භාවිතයෙන්) {{SITENAME}} ($4) සඳහා ඔබගේ ගිණුම් විස්තර සිහිකැඳවීමක් ඉල්ලා ඇත. පහත පරිශීලක {{PLURAL:$3|ගිණුම|ගිණුම්}}\nමෙම විද්‍යුත් තැපැල් ලිපිනය හා සමගින් ආශ්‍රය වෙයි.\n\n$2\n\n{{PLURAL:$3|මෙම තාවකාලික මුරපදය|මෙම තාවකාලික මුරපද}} {{PLURAL:$5|එක් දිනයක්|දින $5 ක්}} ගෙවුනු විට ඉකුත් වනු ඇත.\nඔබ දැන් ප්‍රවිෂ්ට වී නව මුරපදයක් තෝරාගත යුතුයි. වෙන යම් අයෙක් මෙම ඉල්ලීම කර ඇත්නම් හෝ, ඔබගේ මුල් මුරපදය ඔබගේ මතකයට පැමිණ ඇති නම් හා, එය වෙනස් කිරීමට ඔබ හට තවදුරටත් අවශ්‍ය නොවේ නම්, ඔබ විසින් මෙම පණිවුඩය නොසලකා හැර පැරණි මුරපදය තවදුරටත් පාවිච්චි කළ හැක.", @@ -955,8 +945,6 @@ "saveprefs": "සුරැකුම", "restoreprefs": "පෙරනිමි සැකසුම් සියල්ලම යළි-පිහිටුවන්න", "prefs-editing": "සංස්කරණය කිරීම්", - "rows": "පේළි:", - "columns": "තීරු:", "searchresultshead": "ගවේෂණය", "stub-threshold": "<a href=\"#\" class=\"stub\">කොට සබැඳි</a> ආකෘතිකරණය සඳහා සීමකය (බයිට්):", "stub-threshold-sample-link": "නියැදිය", @@ -1050,13 +1038,10 @@ "userrights-reason": "හේතුව:", "userrights-no-interwiki": "අනෙකුත් විකියන්හි පරිශීලක හිමිකම් සංස්කරණය කිරීමට ඔබහට අවසර නොමැත.", "userrights-nodatabase": "$1 දත්ත-ගබඩාව නොපවතියි හෝ ස්ථානීක නොවෙයි.", - "userrights-nologin": "පරිශීලක හිමිකම් ප්‍රදානය කරනු වස්, ඔබ පරිපාලක ගිණුමකින් [[Special:UserLogin|පුවිෂ්ට විය]] යුතුය.", - "userrights-notallowed": "පරිශීලක හිමිකම් එක් කිරීමට හෝ ඉවත් කිරීමට ඔබට අවසර නැත.", "userrights-changeable-col": "ඔබට වෙනස් කල හැකි කණ්ඩායම්", "userrights-unchangeable-col": "ඔබට වෙනස් කල නොහැකි කණ්ඩායම්", "userrights-irreversible-marker": "$1*", "userrights-conflict": "පරිශීලක හිමිකම් වෙනස්කම් ගැටුම්! සමාලෝචනය සහ ඔබේ වෙනස්කම් සනාථ කරන්න.", - "userrights-removed-self": "ඔබ සාර්ථකව ඔබේ ම හිමිකම් ඉවත් කර ඇත. ඒ නිසා, ඔබ තවදුරටත් මෙම පිටුව වෙත පිවිසිය හැකි ය.", "group": "කණ්ඩායම:", "group-user": "පරිශීලකයෝ", "group-autoconfirmed": "ස්වයංක්‍රීයව-චිරස්ථිතවූ පරිශීලකයෝ", @@ -1146,7 +1131,6 @@ "right-siteadmin": "දත්ත-ගබඩාව අවුරන්න හා ඇවුරුම ඉවත් කරන්න", "right-override-export-depth": "5වන මට්ටම දක්වා සබැඳි පිටු ද සහිතව පිටු නිර්යාත කරන්න", "right-sendemail": "අනෙක් පරිශීලකයන්ට ඊ-ලිපි යවන්න", - "right-passwordreset": "මුරපද යලි සැකසීම් විද්‍යුත් තැපෑලයන් නරඹන්න", "right-managechangetags": "දත්ත සමුදාය සිට [[Special:Tags|ඇමුණුම්]] නිර්මාණය කර මකා", "right-applychangetags": "ඉල්ලුම් කරන්න කෙනෙකුගේ වෙනස්කම් සමග, [[Special:Tags|ඇමිණුම්]]", "right-changetags": "තනි තනි අනුවාදයන් සහ ලඝු සටහන් ඇතුළත් කිරීම් මත අත්තනෝමතික [[Special:Tags|ඇමිණුම්]] එකතු හෝ ඉවත්", @@ -1332,7 +1316,7 @@ "uploaddisabledtext": " {{SITENAME}} හි ගොනු උඩුගත කිරීම් අක්‍රීය කර ඇත.", "php-uploaddisabledtext": "PHP හි ගොනු උඩුගතකිරීම් අක්‍රීය කොට ඇත.\nකරුණාකර ගොනු_උඩුගතකිරීම් පරිස්ථිතිය පරික්ෂා කර බලන්න.", "uploadscripted": "වෙබ් බ්‍රවුසරයක් මගින් සාවද්‍ය ලෙස අර්ථ පැහැදිය හැකි HTML හෝ ලේඛන ක්‍රම තේතයක් මෙම ගොනුවේ අඩංගු වේ.", - "uploadscriptednamespace": "මෙම SVG ගොනුව නීති විරෝධී නාම අවකාශය ටැග පෙරහන: \"$1\" අඩංගු වේ.", + "uploadscriptednamespace": "මෙම SVG ගොනුව නීති විරෝධී නාම අවකාශය ටැග පෙරහන: \"<nowiki>$1</nowiki>\" අඩංගු වේ.", "uploadinvalidxml": "උඩුගත දී මෙම XML කියවූ කළ නොහැකි විය.", "uploadvirus": "මෙම ගොනුවෙහි වයිරසයක් අඩංගුය! විස්තර: $1", "uploadjava": "මෙය ZIP ගොනුවක් වන අතර ජාවා .class ගොනු අඩංගු වෙයි.\nජාවා ගොනු උඩුගත කිරීම සදහා අවසර ලබා නොදේ, මන්ද ඒවා ආරක්ෂිත අවහිරතා මගහැර යාමට හේතු විය හැක.", @@ -1999,6 +1983,7 @@ "sp-contributions-search": "දායකත්ව පිළිබඳ ගවේෂණය කරන්න", "sp-contributions-username": "පරිශීලක නාමය හෝ IP ලිපිනය:", "sp-contributions-toponly": "නවතම අනුවාදයන් වන සංස්කරණයන් පමණක් පෙන්වයි", + "sp-contributions-newonly": "පිටු නිර්මාණය කිරීම් වන සංස්කරණ පමණක් පෙන්වන්න", "sp-contributions-submit": "සොයන්න", "whatlinkshere": "මෙතනට සබැඳෙන්නේ කුමක්ද", "whatlinkshere-title": "\"$1\" වෙත සබැ‍ඳෙන පිටු", @@ -3147,7 +3132,6 @@ "logentry-newusers-autocreate": "$1 පරිශීලක ගිණුම ස්වංක්‍රීයව {{GENDER:$2|නිර්මිතය}}", "logentry-upload-upload": "$1 විසින් $3 {{GENDER:$2|උඩුගත කරන ලදී}}", "rightsnone": "(කිසිවක් නොමැත)", - "revdelete-summary": "සංස්කරණ සාරාංශය", "feedback-adding": "ප්‍රතිචාරය පිටුවට එක් කරමින් ...", "feedback-bugcheck": "කදිමයි! දැන් එය දැනටමත් [$1 හඳුනාගත් දෝෂ]වල තිබේ දැයි පිරික්සන්න.", "feedback-bugnew": "මම පරික්ෂා කළා. නව දෝෂය වාර්තා කරන්න", @@ -3163,41 +3147,11 @@ "feedback-useragent": "පරිශීලක නියෝජිත:", "searchsuggest-search": "ගවේශණය කරන්න", "searchsuggest-containing": "ඇතුළත් වෙමින් පවතී...", - "api-error-badaccess-groups": "මෙම විකියට ගොනු උඩුගතකිරීම සඳහා ඔබට අවසර නැත.", "api-error-badtoken": "අභ්‍යන්තර දෝෂය: නොසුදුසු ටෝකනය.", - "api-error-copyuploaddisabled": "URL මඟින් උඩුගතකිරීම මෙම සර්වරයේදී අක්‍රීය කොට තිබේ.", - "api-error-duplicate": "එකම අන්තර්ගතය සමඟ මෙවැනිම {{PLURAL:$1|වෙනත් ගොනු $2 ක්|වෙනත් ගොනු $2 ක්}} අඩවිය තුල දැනටමත් පවතියි.", - "api-error-duplicate-archive": "එකම අන්තර්ගතය සමඟ මෙවැනිම {{PLURAL:$1|වෙනත් ගොනු ක්|වෙනත් ගොනු ක්}} අඩවිය තුල දැනටමත් තිබුනා, නමුත් {{PLURAL:$1|ඒක|ඒවා}} මකා දමා ඇත.", - "api-error-empty-file": "ඔබ ඉදිරිපත්කල ගොනුව හිස් එකකි.", "api-error-emptypage": "නවතම එකක් තනමින්, හිස් පිටුවලට ඉඩ නොදේ.", - "api-error-fetchfileerror": "අභ්‍යන්තර දෝෂය: ගොනුව පැමිණවීම අතරතුරදී කුමක්දෝ වැරදුණා.", - "api-error-file-too-large": "ඔබ විසින් යොමන ලද ගොනුව පමණට වඩා විශෘලය.", - "api-error-filename-tooshort": "ගොනු නාමය කෙටි වැඩියි.", - "api-error-filetype-banned": "මෙම වර්ගයේ ගොනු තහනම් කර ඇත.", - "api-error-filetype-banned-type": "$1 යනු {{PLURAL:$4|අවසරලත් ගොනු වර්ගයක්|අවසරලත් ගොනු වර්ගයන්}} නොවේ. අවසරලත් {{PLURAL:$3|ගොනු වර්ගය|ගොනු වර්ගයන්}} වන්නේ $2.", - "api-error-filetype-missing": "මෙම ගොනුවට විස්තීරණය මග හරි ඇත.", - "api-error-hookaborted": "ඔබ සිදු කරන්නට ගිය වෙනස්කම විස්තීර්ණ කොක්කක් මඟින් රෝධනය කරන ලදී.", - "api-error-http": "අභ්‍යන්තර දෝෂය: සර්වරය වෙත සම්බන්ධ විය නොහැක.", - "api-error-illegal-filename": "ගොනුනාමයට ඉඩ දෙනු නොලැබේ.", - "api-error-internal-error": "අභ්‍යන්තර දෝෂය: ඔබේ උඩුගත කිරීම විකියේදී ක්‍රියානනය කිරීමේදී කුමක්දෝ වැරදුණා.", - "api-error-invalid-file-key": "අභ්‍යන්තර දෝෂය: තාවකාලික භාවිතයේ ගොනුව හමුනොවුණි.", - "api-error-missingparam": "අභ්‍යන්තර දෝෂය: අයදුමෙහි මගහැරුණු පරාමිතීන්.", - "api-error-missingresult": "අභ්‍යන්තර දෝෂය: පිටපත් කිරීම සාර්ථකදැයි නිර්ණය කල නොහැක.", - "api-error-mustbeloggedin": "ගොනු උඩුගත කිරීම සඳහා ඔබ ප්‍රවිෂ්ට වී තිබිය යුතුයි.", - "api-error-mustbeposted": "අභ්‍යන්තර දෝෂය: අයදුම සඳහා HTTP POST අවශ්‍යයි.", - "api-error-noimageinfo": "සාර්ථකව උඩුගත කරන ලදී, නමුත් ගොනුව පිලිබඳ කිසිම තොරතුරක් සර්වරය අප වෙත ලබා දී නොමැත.", - "api-error-nomodule": "අභ්‍යන්තර දෝෂය: උඩුගත කෙරුම් මොඩියුලයන් සකසා නොමැත.", - "api-error-ok-but-empty": "අභ්‍යන්තර දෝෂය: සර්වරයෙන් ප්‍රතිචාරයක් නොමැත.", - "api-error-overwrite": "දැනටමත් තිබෙන ගොනුවක් යටපත් කෙරුමට ඉඩදෙනු නොලැබේ.", "api-error-stashfailed": "අභ්‍යන්තර දෝෂය: තාවකාලික ගොනුව සුරක්ෂිත කිරීමට සර්වරයට නොහැකි වුනි.", - "api-error-timeout": "බලාපොරොත්තු වූ කාලය තුල ස\"වරය ප්‍රතිචාර නොදක්වන ලදී.", - "api-error-unclassified": "හඳුනා නොගත් දෝෂයක් ඇතිවිය.", - "api-error-unknown-code": "නොදත් දෝෂය: \"$1\"", - "api-error-unknown-error": "අභ්‍යන්තර දෝෂය: ඔබ මෙම ගොනුව උඩුගත කිරීමට තැත් කිරීමේදී කුමක්දෝ වැරදුණා.", "api-error-unknown-warning": "නොදත් අවවාදය: $1", "api-error-unknownerror": "හඳුනාගත නොහැකි දෝෂය: \"$1\".", - "api-error-uploaddisabled": "මෙම විකියෙහි උඩුගතකිරීම අක්‍රිය කොට ඇත.", - "api-error-verification-error": "මෙම ගොනුව පළුදුවී හෝ එයට වැරදි විස්තිර්ණයක් (extension) ඇතුවා වියහැක.", "duration-seconds": "{{PLURAL:$1|තත්පර|තත්පර}} $1 ක්", "duration-minutes": "{{PLURAL:$1|මිනිත්තු|මිනිත්තු}} $1 ක්", "duration-hours": "{{PLURAL:$1|පැය|පැය}} $1 ක්", diff --git a/languages/i18n/sk.json b/languages/i18n/sk.json index c8103b6f62..006d23e3d7 100644 --- a/languages/i18n/sk.json +++ b/languages/i18n/sk.json @@ -34,7 +34,8 @@ "Mikulas1", "Hromoslav", "Matma Rex", - "LacoR" + "LacoR", + "Xð" ] }, "tog-underline": "PodčiarkovaÅ¥ odkazy:", @@ -200,6 +201,7 @@ "searcharticle": "ÍsÅ¥ na", "history": "História stránky", "history_short": "História", + "history_small": "história", "updatedmarker": "aktualizované od mojej poslednej návÅ¡tevy", "printableversion": "Verzia na tlač", "permalink": "Trvalý odkaz", @@ -224,7 +226,7 @@ "unprotectthispage": "ZmeniÅ¥ stav ochrany tejto stránky", "newpage": "Nová stránka", "talkpage": "Diskusia k stránke", - "talkpagelinktext": "Diskusia", + "talkpagelinktext": "diskusia", "specialpage": "Å peciálna stránka", "personaltools": "Osobné nástroje", "articlepage": "ZobraziÅ¥ stránku", @@ -232,6 +234,7 @@ "views": "Zobrazenia", "toolbox": "Nástroje", "tool-link-userrights": "ZmeniÅ¥ používateľské skupiny {{GENDER:$1|tohoto použivateľa|tejto používateľky}}", + "tool-link-userrights-readonly": "ZobraziÅ¥ {{GENDER:$1|používateľské}} skupiny", "tool-link-emailuser": "PoslaÅ¥ e-mail {{GENDER:$1|tomuto používateľovi|tejto používateľke}}", "userpage": "ZobraziÅ¥ stránku používateľa", "projectpage": "ZobraziÅ¥ projektovú stránku", @@ -437,19 +440,12 @@ "login": "PrihlásiÅ¥", "login-security": "Overte svoju identitu", "nav-login-createaccount": "Prihlásenie / vytvorenie účtu", - "userlogin": "Prihlásenie / vytvorenie účtu", - "userloginnocreate": "PrihlásiÅ¥", "logout": "OdhlásiÅ¥", "userlogout": "OdhlásiÅ¥", "notloggedin": "Neprihlásený/á", "userlogin-noaccount": "Nemáte eÅ¡te účet?", "userlogin-joinproject": "Pridajte sa k {{GRAMMAR:lokál|{{SITENAME}}}}", - "nologin": "Nemáte eÅ¡te účet? $1.", - "nologinlink": "VytvoriÅ¥ nový účet", "createaccount": "VytvoriÅ¥ nový účet", - "gotaccount": "Máte už vytvorený účet? '''$1'''.", - "gotaccountlink": "PrihlásiÅ¥", - "userlogin-resetlink": "Zabudli ste svoje prihlasovacie údaje?", "userlogin-resetpassword-link": "Zabudli ste heslo?", "userlogin-helplink2": "Pomoc s prihlásením", "userlogin-loggedin": "Ste už {{GENDER:$1|prihlasený|prihlásená}} ako $1.\nPomocou formulára nižšie sa môžete prihlásiÅ¥ ako iný používateľ.", @@ -462,7 +458,6 @@ "createaccountmail": "PoužiÅ¥ dočasné náhodné heslo a poslaÅ¥ ho na uvedenú emailovú adresu", "createaccountmail-help": "Môže byÅ¥ použité na vytvorenie účtu pre inú osobu bez prezradenia hesla.", "createacct-realname": "Skutočné meno (nepovinné)", - "createaccountreason": "Dôvod:", "createacct-reason": "Dôvod", "createacct-reason-ph": "Prečo si vytvárate ďalší účet", "createacct-reason-help": "Správa zobrazená v knihe nových používateľov", @@ -601,6 +596,11 @@ "passwordreset-emailelement": "Používateľské meno: \n$1\n\nDočasné heslo:\n$2", "passwordreset-emailsentemail": "Pokiaľ je toto e-mailová adresa zaregistrovaná k vášmu účtu, bude na ňu zaslaný e-mail pre získanie nového hesla.", "passwordreset-emailsentusername": "Pokiaľ je prísluÅ¡ná mailová adresa zaregistrovaná, bude na ňu zaslaný e-mail s novým heslom.", + "passwordreset-nocaller": "Musí byÅ¥ uvedený volajúci", + "passwordreset-nosuchcaller": "Volajúci neexistuje: $1", + "passwordreset-ignored": "ŽiadosÅ¥ o nové heslo nebola spracovaná. Možno nie je nakonfigurovaný žiaden poskytovateľ?", + "passwordreset-invalidemail": "Neplatná e-mailová adresa", + "passwordreset-nodata": "Nebolo zadané používateľské meno ani e-mailová adresa", "changeemail": "ZmeniÅ¥ alebo odstrániÅ¥ e-mailovú adresu", "changeemail-header": "Vyplňte tento formulár, ak chcete zmeniÅ¥ svoju emailovú adresu. Ak chcete odstrániÅ¥ priradenie akejkoľvek emailovej adresy k vášmu účtu, nechajte pri odosielaní formulára emailovú adresu nevyplnenú", "changeemail-no-info": "Na prístup k tejto stránke musíte byÅ¥ prihlásený.", @@ -662,6 +662,7 @@ "blockedtitle": "Používateľ je zablokovaný", "blockedtext": "'''VaÅ¡e používateľské meno alebo IP adresa bola zablokovaná.'''\n\nZablokoval vás správca $1. Udáva tento dôvod:<br />''$2''\n\n* Blokovanie začalo: $8\n* Blokovanie vyprší: $6\n* Kto mal byÅ¥ zablokovaný: $7\n\nMôžete kontaktovaÅ¥ $1 alebo s jedného z ďalších [[{{MediaWiki:Grouppage-sysop}}|správcov]] a prediskutovaÅ¥ blokovanie.\nUvedomte si, že nemôžete použiÅ¥ funkciu „{{int:Emailuser}}“, pokiaľ nemáte registrovanú platnú e-mailovú adresu vo svojich [[Special:Preferences|nastaveniach]].\nVaÅ¡a IP adresa je $3 a ID blokovania je #$5.\nProsím, uveďte oba tieto údaje do každej správy, ktorú posielate.", "autoblockedtext": "VaÅ¡a IP adresa bola automaticky zablokovaná, pretože ju používa iný používateľ, ktorého zablokoval $1.\nUdaný dôvod zablokovania:\n\n:''$2''\n\n* Blokovanie začalo: $8\n* Blokovanie vyprší: $6\n* Blokovanie sa týka: $7\n\nAk potrebujete informácie o blokovaní, môžete kontaktovaÅ¥ $1 alebo niektorého iného\n[[{{MediaWiki:Grouppage-sysop}}|správcu]].\n\nPozn.: Nemôžete použiÅ¥ funkciu „{{int:emailuser}}“, ak ste si vo svojich\n[[Special:Preferences|používateľských nastaveniach]] nezaregistrovali platnú emailovú adresu.\n\nVaÅ¡a aktuálna IP adresa je $3. ID vášho blokovania je $5.\nProsím, uveďte tieto podrobnosti v akýchkoľvek otázkach, ktoré sa opýtate.", + "systemblockedtext": "VaÅ¡a IP adresa bola automaticky zablokovaná.\nUdaný dôvod zablokovania:\n\n:<em>$2</em>\n\n* Blokovanie začalo: $8\n* Blokovanie vyprší: $6\n* Blokovanie sa týka: $7\n\nVaÅ¡a aktuálna IP adresa je $3.\nProsím, uveďte tieto podrobnosti v akýchkoľvek otázkach, ktoré sa opýtate.", "blockednoreason": "nebol uvedený dôvod", "whitelistedittext": "Aby ste mohli upravovaÅ¥ stránky, musíte sa $1", "confirmedittext": "Pred úpravami stránok musíte potvrdiÅ¥ vaÅ¡u emailovú adresu. Prosím, nastavte a overte svoju emailovú adresu v [[Special:Preferences|používateľských nastaveniach]].", @@ -814,7 +815,7 @@ "rev-deleted-comment": "(zhrnutie úprav odstránené)", "rev-deleted-user": "(používateľské meno odstránené)", "rev-deleted-event": "(činnosÅ¥ odstránená zo záznamu)", - "rev-deleted-user-contribs": "[používateľské meno alebo IP adresa odstránená - úprava skrytá pred prispievateľmi]", + "rev-deleted-user-contribs": "[používateľské meno alebo IP adresa odstránené – úprava skrytá pred prispievateľmi]", "rev-deleted-text-permission": "Táto revízia stránky bola '''zmazaná'''.\nPodrobnosti nájdete v [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} zázname mazaní].", "rev-suppressed-text-permission": "Táto revízia stránky bola <strong>potlačená</strong>. Podrobnosti nájdete v [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} zázname potlačení].", "rev-deleted-text-unhide": "Táto revízia stránky bola <strong>zmazaná</strong>.\nPodrobnosti nájdete v [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} zázname mazaní].\nAko správca máte stále možnosÅ¥ [$1 zobraziÅ¥ túto revíziu] ak chcete.", @@ -950,6 +951,7 @@ "search-interwiki-caption": "Sesterské projekty", "search-interwiki-default": "Výsledky z $1:", "search-interwiki-more": "(viac)", + "search-interwiki-more-results": "ďalÅ¡ie výsledky", "search-relatedarticle": "Súvisiace", "searchrelated": "súvisiace", "searchall": "vÅ¡etko", @@ -966,7 +968,8 @@ "powersearch-remember": "ZapamätaÅ¥ si výber pre budúce vyhľadávania", "search-external": "Externé vyhľadávanie", "searchdisabled": "Prepáčte! Fulltextové vyhľadávanie bolo dočasne vypnuté z dôvodu preÅ¥aženia. Zatiaľ môžete použiÅ¥ hľadanie pomocou Google, ktoré vÅ¡ak nemusí byÅ¥ aktuálne.", - "search-error": "Pri hľadaní sa vyskytla chyba:$1", + "search-error": "Pri hľadaní doÅ¡lo k chybe: $1", + "search-warning": "Pri hľadaní doÅ¡lo k varovaniu: $1", "preferences": "Nastavenia", "mypreferences": "Nastavenia", "prefs-edits": "Počet úprav:", @@ -998,8 +1001,6 @@ "saveprefs": "UložiÅ¥ nastavenia", "restoreprefs": "ObnoviÅ¥ vÅ¡etky predvolené nastavenia (vo vÅ¡etkých sekciách)", "prefs-editing": "Úpravy", - "rows": "Riadky:", - "columns": "Stĺpce:", "searchresultshead": "Vyhľadávanie", "stub-threshold": "Prah formátovania odkazu ako výhonok ($1):", "stub-threshold-sample-link": "príklad", @@ -1028,7 +1029,7 @@ "timezoneregion-indian": "Indický oceán", "timezoneregion-pacific": "Tichý oceán", "allowemail": "PovoliÅ¥ prijímanie e-mailov od iných používateľov", - "prefs-searchoptions": "Hľadanie", + "prefs-searchoptions": "Vyhľadávanie", "prefs-namespaces": "Menné priestory", "default": "predvolený", "prefs-files": "Súbory", @@ -1036,10 +1037,11 @@ "prefs-custom-js": "Vlastný JS", "prefs-common-css-js": "Spoločné CSS/JS pre vÅ¡etky témy:", "prefs-reset-intro": "Túto stránku môžete použiÅ¥ na vrátenie predvolených hodnôt vaÅ¡ich nastavení.\nTúto operáciu nemožno vrátiÅ¥.", - "prefs-emailconfirm-label": "Overenie e-emailu:", + "prefs-emailconfirm-label": "Overenie e-mailu:", "youremail": "Váš e-mail²", "username": "{{GENDER:$1|Používateľské meno}}:", "prefs-memberingroups": "{{GENDER:$2|Člen|Členovia}} {{PLURAL:$1|skupiny|skupín}}:", + "group-membership-link-with-expiry": "$1 (do $2)", "prefs-registration": "Čas registrácie:", "yourrealname": "Skutočné meno *:", "yourlanguage": "Jazyk:", @@ -1083,7 +1085,9 @@ "userrights-user-editname": "Zadajte meno používateľa:", "editusergroup": "UpraviÅ¥ skupiny {{GENDER:$1|používateľa|používateľky}}", "editinguser": "Zmena práv používateľa '''[[User:$1|$1]]''' $2", + "viewinguserrights": "Prehliadanie práv {{GENDER:$1|používateľa|používateľky}} <strong>[[User:$1|$1]]</strong> $2", "userrights-editusergroup": "UpraviÅ¥ skupiny používateľa", + "userrights-viewusergroup": "ZobraziÅ¥ {{GENDER:$1|používateľské}} skupiny", "saveusergroups": "UložiÅ¥ skupiny {{GENDER:$1|používateľa|používateľky}}", "userrights-groupsmember": "{{GENDER:$2|Člen|Členka}} {{PLURAL:$1|skupiny|skupín}}:", "userrights-groupsmember-auto": "Implicitne {{GENDER:$2|člen|členka}} {{PLURAL:$1|skupiny|skupín}}:", @@ -1096,7 +1100,7 @@ "userrights-conflict": "Konflikt zmien práv používateľov! Prosím, skontrolujte ho a potvrďte svoje zmeny.", "group": "Skupina:", "group-user": "Používatelia", - "group-autoconfirmed": "zaregistrovaní používatelia", + "group-autoconfirmed": "Automaticky schválení používatelia", "group-bot": "Boti", "group-sysop": "Správcovia", "group-bureaucrat": "Byrokrati", @@ -1109,7 +1113,7 @@ "group-bureaucrat-member": "{{GENDER:$1|byrokrat|byrokratka|byrokrat}}", "group-suppress-member": "{{GENDER:$1|dozorca|dozorkyňa|dozorca}}", "grouppage-user": "{{ns:project}}:Používatelia", - "grouppage-autoconfirmed": "{{ns:project}}:Zaregistrovaní používatelia", + "grouppage-autoconfirmed": "{{ns:project}}:Automaticky schválení používatelia", "grouppage-bot": "{{ns:project}}:Boti", "grouppage-sysop": "{{ns:project}}:Správcovia", "grouppage-bureaucrat": "{{ns:project}}:Byrokrati", @@ -1133,7 +1137,7 @@ "right-reupload-shared": "NahrávaÅ¥ lokálne súbory, ktoré majú prednosÅ¥ pred zdieľaným úložiskom", "right-upload_by_url": "NahrávaÅ¥ súbor z URL adresy", "right-purge": "ČistiÅ¥ vyrovnávaciu pamäť stránky bez potvrdzovacej stránky", - "right-autoconfirmed": "Neovplyvnený obmedzeniami na základe IP adresy", + "right-autoconfirmed": "Neovplyvnený rýchlostnými limitmi na základe IP adresy", "right-bot": "ByÅ¥ považovaný za automatický proces", "right-nominornewtalk": "Pri drobných úpravách diskusnej stránky nevypisovaÅ¥ hlásenie o nových správach", "right-apihighlimits": "PoužívaÅ¥ vyÅ¡Å¡ie limity v požiadavkách API", @@ -1245,7 +1249,9 @@ "action-writeapi": "použiÅ¥ API na zápis", "action-delete": "zmazaÅ¥ túto stránku", "action-deleterevision": "zmazaÅ¥ túto revíziu", + "action-deletelogentry": "mazaÅ¥ záznamy", "action-deletedhistory": "zobraziÅ¥ históriu zmazaných revízií tejto stránky", + "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", @@ -1263,6 +1269,7 @@ "action-userrights-interwiki": "upravovaÅ¥ práva používateľov na iných wiki", "action-siteadmin": "zamykaÅ¥ alebo odomykaÅ¥ databázu", "action-sendemail": "posielaÅ¥ e-maily", + "action-editmyoptions": "meniÅ¥ svoje používateľské nastavenia", "action-editmywatchlist": "upraviÅ¥ zoznam sledovaných stránok", "action-viewmywatchlist": "zobraziÅ¥ zoznam sledovaných stránok", "action-viewmyprivateinfo": "zobraziÅ¥ vaÅ¡e súkromné údaje", @@ -1350,7 +1357,7 @@ "upload_directory_read_only": "Webový server nemôže zapisovaÅ¥ do adresára pre nahrávanie ($1).", "uploaderror": "Chyba pri nahrávaní", "upload-recreate-warning": "'''Upozornenie: Súbor s týmto názvom bol zmazaný alebo presunutý.'''\n\nĎalÅ¡ie informácie si môžete pozrieÅ¥ v zázname zmazaní a presunutí:", - "uploadtext": "Tento formulár použite na nahrávanie súborov.\nUž nahrané súbory môžete zobraziÅ¥ alebo hľadaÅ¥ v [[Special:FileList|zozname nahraných súborov]]. Nahrávania a mazania sa tiež zaznamenávajú v [[Special:Log/upload|zázname nahrávaní]].\n\nNa začlenenie obrázka do stránky použite odkaz v tvare\n\n* '''<nowiki>[[</nowiki>{{ns:file}}<nowiki>:Súbor.jpg]]</nowiki>''' - použije sa plná verzia obrázka\n* '''<nowiki>[[</nowiki>{{ns:file}}<nowiki>:Súbor.png|alternatívny text]]</nowiki>''' - vykreslí sa v šírke 200 pixelov s okrajom, na ľavom okraji, s popisom v „alt” texte.\n* '''<nowiki>[[</nowiki>{{ns:media}}<nowiki>:Súbor.ogg]]</nowiki>''' - priamy odkaz na súbor (nezobrazí obrázok na stránke)", + "uploadtext": "Tento formulár použite na nahrávanie súborov.\nUž nahrané súbory môžete zobraziÅ¥ alebo hľadaÅ¥ v [[Special:FileList|zozname nahraných súborov]]. Nahrávania a mazania sa tiež zaznamenávajú v [[Special:Log/upload|zázname nahrávaní]].\n\nPre vloženie obrázka do stránky použite odkaz v tvare:\n* '''<nowiki>[[</nowiki>{{ns:file}}<nowiki>:Súbor.jpg]]</nowiki>''' – vloží sa originál obrázka,\n* '''<nowiki>[[</nowiki>{{ns:file}}<nowiki>:Súbor.png|náhľad|Popis]]</nowiki>''' – vloží sa zmenÅ¡ený náhľad s rámikom a popisom,\n* '''<nowiki>[[</nowiki>{{ns:media}}<nowiki>:Súbor.ogg]]</nowiki>''' – vloží sa odkaz na súbor (bez zobrazenia obrázku na stránke)", "upload-permitted": "{{PLURAL:$2|Povolený formát súboru|Povolené typy súborov}}: $1.", "upload-preferred": "{{PLURAL:$2|Uprednostňovaný formát súboru|Uprednostňované typy súborov}}: $1.", "upload-prohibited": "{{PLURAL:$2|Zakázaný formát súboru|Zakázané formáty súborov}}: $1.", @@ -2031,15 +2038,15 @@ "protect-locked-dblock": "Nie je možné zmeniÅ¥ úroveň ochrany z dôvodu aktívneho zámku databázy.\nTu sú aktuálne nastavenia stránky '''$1''':", "protect-locked-access": "Váš účet nemá oprávnenie meniÅ¥ úroveň ochrany stránky.\nTu sú aktuálne nastavenia stránky '''$1''':", "protect-cascadeon": "Táto stránka je momentálne zamknutá, lebo je vložená v {{PLURAL:$1|nasledovnej stránke, ktorá má|nasledovných stránkach, ktoré majú}} zapnutú kaskádovú ochranu. Zmeny úrovne ochrany tejto stránky neovplyvnia kaskádovú ochranu.", - "protect-default": "PovoliÅ¥ vÅ¡etkých používateľov", - "protect-fallback": "PovoliÅ¥ iba používateľov s oprávnením „$1“", - "protect-level-autoconfirmed": "PovoliÅ¥ iba používateľov s potvrdeným emailom", - "protect-level-sysop": "PovoliÅ¥ iba správcov", + "protect-default": "PovoliÅ¥ vÅ¡etkým", + "protect-fallback": "PovoliÅ¥ iba používateľom s oprávnením „$1“", + "protect-level-autoconfirmed": "PovoliÅ¥ iba automaticky schváleným používateľom", + "protect-level-sysop": "PovoliÅ¥ iba správcom", "protect-summary-cascade": "kaskáda", "protect-expiring": "vyprší o $1 (UTC)", "protect-expiring-local": "vyprší $1", "protect-expiry-indefinite": "na neurčito", - "protect-cascade": "Kaskádové zamknutie - chrániÅ¥ vÅ¡etky stránky použité na tejto stránke.", + "protect-cascade": "Zamknúť aj stránky použité na tejto stránke (kaskádový zámok)", "protect-cantedit": "Nemôžete zmeniÅ¥ úrovne ochrany tejto stránky, pretože nemáte oprávnenie ju upravovaÅ¥.", "protect-othertime": "Iný čas:", "protect-othertime-op": "iný čas", @@ -2179,7 +2186,7 @@ "ipb-confirm": "PotvrdiÅ¥ blokovanie", "badipaddress": "IP adresa má nesprávny formát.", "blockipsuccesssub": "Zablokovanie bolo úspeÅ¡né", - "blockipsuccesstext": "[[Special:Contributions/$1|$1]] bol zablokovaný.<br />\n[[Special:BlockList|IP block list]] obsahuje zoznam blokovaní.", + "blockipsuccesstext": "[[Special:Contributions/$1|$1]] {{GENDER:$1|bol zablokovaný|bola zablokovaná}}.<br />\nPre prehľad blokov pozri [[Special:BlockList|zoznam zablokovaných používateľov]].", "ipb-blockingself": "Chystáte sa zablokovaÅ¥ sám seba! Ste si istí, že to chcete urobiÅ¥?", "ipb-confirmhideuser": "Chystáte sa zablokovaÅ¥ používateľa so zapnutou funkciou „skryÅ¥ používateľa“. Tým sa potlačí meno používateľa vo vÅ¡etkých zoznamoch a záznamoch. Ste si istí, že chcete urobiÅ¥?", "ipb-confirmaction": "Ak ste si {{GENDER:|istý|istá|istí}}, že to chcete urobiÅ¥, zaÅ¡krtnite prepínač „{{int:ipb-confirm}}“ nižšie.", @@ -2258,6 +2265,7 @@ "proxyblockreason": "VaÅ¡a IP adresa bola zablokovaná, pretože je otvorená proxy. Prosím kontaktujte vášho internetového poskytovateľa alebo technickú podporu a informujte ich o tomto vážnom bezpečnostnom probléme.", "sorbsreason": "VaÅ¡a IP adresa je vedená ako nezabezpečený proxy server v DNSBL.", "sorbs_create_account_reason": "VaÅ¡a IP adresa je vedená ako nezabezpečený proxy server v databáze DNSBL, ktorú používa {{SITENAME}}. Nemôžete si vytvoriÅ¥ účet.", + "softblockrangesreason": "Anonymné príspevky z vaÅ¡ej IP adresy ($1) nie sú povolené. Prosím prihláste sa.", "xffblockreason": "IP adresa prítomná v hlavičke X-Forwarded-For patriaca buď vám alebo proxy serveru, ktorý používate, je zablokovaná. Pôvodný dôvod zablokovania bol: $1", "cant-see-hidden-user": "Používateľ, ktorého sa pokúšate zablokovaÅ¥ už bol zablokovaný a skrytý. Pretože nemáte právo hideuser, nemôžete vidieÅ¥ ani upravovaÅ¥ blokovanie používateľa.", "ipbblocked": "Nemôžete zablokovaÅ¥ ani odblokovaÅ¥ iných používateľov, pretože ste sami zablokovaní", @@ -2293,6 +2301,8 @@ "cant-move-to-user-page": "Nemáte oprávnenie presunúť stránku na stránku používateľa (iba na podstránku používateľa).", "cant-move-category-page": "Nemáte oprávnenie presúvaÅ¥ stránky kategórií.", "cant-move-to-category-page": "Nemáte oprávnenie presunúť stránku na stránku kategórie.", + "cant-move-subpages": "Nemáte oprávnenie presúvaÅ¥ podstránky.", + "namespace-nosubpages": "V mennom priestore „$1“ nie sú podstránky povolené.", "newtitle": "Nový názov:", "move-watch": "SledovaÅ¥ túto stránku", "movepagebtn": "Presunúť stránku", @@ -2545,6 +2555,7 @@ "pageinfo-length": "Dĺžka stránky (v bajtoch)", "pageinfo-article-id": "ID stránky", "pageinfo-language": "Jazyk obsahu stránky", + "pageinfo-language-change": "zmeniÅ¥", "pageinfo-content-model": "Model obsahu stránky", "pageinfo-content-model-change": "zmeniÅ¥", "pageinfo-robot-policy": "Indexovanie robotmi", @@ -2639,7 +2650,9 @@ "newimages-legend": "Filter", "newimages-label": "Názov súboru (alebo jeho časÅ¥):", "newimages-showbots": "ZobraziÅ¥ súbory nahrané botmi", + "newimages-hidepatrolled": "SkryÅ¥ preverené nahratia súborov", "noimages": "Niet čo zobraziÅ¥.", + "gallery-slideshow-toggle": "Prepnúť náhľady", "ilsubmit": "HľadaÅ¥", "bydate": "podľa dátumu", "sp-newimages-showfrom": "ZobraziÅ¥ nové súbory počínajúc $2, $1", @@ -3022,7 +3035,7 @@ "confirmemail_needlogin": "Musíte sa $1 na potvrdenie vaÅ¡ej emailovaj adresy.", "confirmemail_success": "VaÅ¡a e-mailová adresa bola potvrdená. Môžete sa prihlásiÅ¥ a využívaÅ¥ wiki.", "confirmemail_loggedin": "VaÅ¡a e-mailová adresa bola potvrdená.", - "confirmemail_subject": "{{SITENAME}} - potvrdenie e-mailovej adresy", + "confirmemail_subject": "{{SITENAME}} – potvrdenie e-mailovej adresy", "confirmemail_body": "Niekto, pravdepodobne vy z IP adresy $1, zaregistroval účet\n„$2“ s touto e-mailovou adresou na {{GRAMMAR:lokál|{{SITENAME}}}}.\n\nPre potvrdenie, že tento účet skutočne patrí vám a pre aktivovanie\ne-mailových funkcií na {{GRAMMAR:lokál|{{SITENAME}}}}, otvorte tento odkaz vo vaÅ¡om prehliadači:\n\n$3\n\nAk ste to *neboli* vy, otvorte tento odkaz,\nčím zrušíte potvrdenie emailovej adresy:\n\n$5\n\nTento potvrdzovací kód vyprší $4.", "confirmemail_body_changed": "Niekto, pravdepodobne vy, z IP adresy $1,\nzmenil e-mailovú adresu účtu „$2“ na túto adresu na {{GRAMMAR:lokál|{{SITENAME}}}}.\n\nAby ste potvrdili, že tento účet skutočne patrí vám a znova\naktivovali funkcie emailu na{{GRAMMAR:lokál|{{SITENAME}}}},\notvorte nasledovný odkaz v prehliadači:\n\n$3\n\nAk vám účet *nepatrí*, otvorte namiesto toho tento odkaz,\nktorý zruší potvrdenie emailovej adresy:\n\n$5\n\nPlatnosÅ¥ tohoto potvrdzovacieho kódu vyprší $4.", "confirmemail_body_set": "Niekto, pravdepodobne vy, z IP adresy $1\nnastavil e-mailovú adresu účtu „$2“ na túto adresu na {{GRAMMAR:genitív|{{SITENAME}}}}.\n\nAk chcete potvrdiÅ¥, že tento účet skutočne patrí vám a aktivovaÅ¥\ne-mailové funkcie na {{GRAMMAR:genitív|{{SITENAME}}}}, otvorte tento odkaz vo vaÅ¡om prehliadači:\n\n$3\n\nAk účet nie je *nepatrí* patrí k vám, nasledujte tento odkaz,\nktorý zruší potvrdenie e-mailovej adresy:\n\n$5\n\nPlatnosÅ¥ tohto potvrdzovacieho kódu vyprší $4.", @@ -3270,6 +3283,7 @@ "htmlform-time-placeholder": "HH:MM:SS", "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-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", @@ -3319,7 +3333,6 @@ "log-name-tag": "Záznam značiek", "log-description-tag": "Táto stránka zobrazuje doplnenia a odobratia [[Special:Tags|značiek]] stránok a protokolovacích záznamov používateľmi. Zoznam nezahŕňa označenia stránok, ktoré boli súčasÅ¥ou editačnej úpravy, zmazania alebo obdobnej akcie.", "rightsnone": "(žiadne)", - "revdelete-summary": "zhrnutie úprav", "feedback-adding": "Pridáva sa komentár na stránku...", "feedback-back": "Späť", "feedback-bugcheck": "Skvelé! Teraz len skontrolujte, či to nie je jedna z už [$1 známych chýb].", @@ -3343,46 +3356,12 @@ "feedback-useragent": "Prehliadač:", "searchsuggest-search": "HľadaÅ¥", "searchsuggest-containing": "obsahuje...", - "api-error-autoblocked": "VaÅ¡e IP adresa bola automaticky zablokovaná, pretože ju používal zablokovaný používateľ.", - "api-error-badaccess-groups": "Nemáte oprávnenie nahrávaÅ¥ súbory na tejto wiki.", "api-error-badtoken": "Vnútorná chyba: Zlý token.", - "api-error-blocked": "MožnosÅ¥ editovaÅ¥ vám bola zablokovaná.", - "api-error-copyuploaddisabled": "Nahrávanie z URL je na tomto serveri zakázané.", - "api-error-duplicate": "{{PLURAL:$1|ďalší súbor|ďalÅ¡ie súbory}} s rovnakým obsahom už na tejto wiki existujú", - "api-error-duplicate-archive": "{{PLURAL:$1|ďalší súbor|ďalÅ¡ie súbory}} s rovnakým obsahom už na tejto wiki existoval, ale {{PLURAL:$1|bol zmazaný|boli zmazané}}.", - "api-error-empty-file": "Súbor, ktorý ste poslali bol prázdny.", "api-error-emptypage": "Vytváranie nových, prázdnych stránok nie je dovolené.", - "api-error-fetchfileerror": "Vnútorná chyba: Niečo pokazilo počas sÅ¥ahovania súboru.", - "api-error-fileexists-forbidden": "Súbor s názvom „$1“ už existuje a nie je možné prepísaÅ¥ ho.", - "api-error-fileexists-shared-forbidden": "Súbor s názvom „$1“ už neexistuje v repozitári zdieľaných súborov a nie je možné prepísaÅ¥ ho.", - "api-error-file-too-large": "Súbor, ktorý ste poslali bol príliÅ¡ veľký.", - "api-error-filename-tooshort": "Názov súboru je príliÅ¡ krátky.", - "api-error-filetype-banned": "Tento typ súboru je zakázaný.", - "api-error-filetype-banned-type": "$1 {{PLURAL:$4|nie je povolený typ súboru|nie sú povolené typy súboru}}. {{PLURAL:$3|Povolený typ súborov je|Povolené typy súborov sú}} $2.", - "api-error-filetype-missing": "Súboru chýba prípona.", - "api-error-hookaborted": "Zmena, ktorú ste sa pokúsili vykonaÅ¥ bola zruÅ¡ená prípojným bodom rozšírenia.", - "api-error-http": "Vnútorná chyba: Nepodarilo sa pripojiÅ¥ k serveru.", - "api-error-illegal-filename": "Názov súboru nie je povolený.", - "api-error-internal-error": "Vnútorná chyba: Niečo pokazilo pri spracovaní súboru, ktorý ste nahrávali na wiki.", - "api-error-invalid-file-key": "Vnútorná chyba: Súbor sa nenaÅ¡iel v dočasnom úložisku.", - "api-error-missingparam": "Vnútorná chyba: Chýbajú parametre požiadavky.", - "api-error-missingresult": "Vnútorná chyba: Nepodarilo sa určiÅ¥, či kopírovanie prebehlo úspeÅ¡ne.", - "api-error-mustbeloggedin": "Aby ste mohli nahrávaÅ¥ súbory, musíte sa prihlásiÅ¥", - "api-error-mustbeposted": "Vnútorná chyba: Požiadavka vyžaduje HTTP POST.", - "api-error-noimageinfo": "Nahranie sa podarilo, ale server nám nedal žiadne informácie o súbore.", - "api-error-nomodule": "Vnútorná chyba: Nebol nastavený žiaden nahrávací modul.", - "api-error-ok-but-empty": "Vnútorná chyba: Žiadna odpoveď zo servera.", - "api-error-overwrite": "Prepísanie existujúceho súboru nie je povolené.", - "api-error-stashfailed": "Vnútorná chyba: Serveru sa nepodarilo uložiÅ¥ dočasný súbor.", "api-error-publishfailed": "Vnútorná chyba: Serveru sa nepodarilo publikovaÅ¥ dočasný súbor.", - "api-error-timeout": "Server neodpovedal v očakávanom čase.", - "api-error-unclassified": "Vyskytla sa neznáma chyba.", - "api-error-unknown-code": "Neznáma chyba: „$1“", - "api-error-unknown-error": "Vnútorná chyba: Niečo pokazilo pri pokuse nahraÅ¥ váš súbor.", + "api-error-stashfailed": "Vnútorná chyba: Serveru sa nepodarilo uložiÅ¥ dočasný súbor.", "api-error-unknown-warning": "Neznáme upozornenie: $1", "api-error-unknownerror": "Neznáma chyba: „$1“", - "api-error-uploaddisabled": "Nahrávanie je na tejto wiki zakázané.", - "api-error-verification-error": "Tento súbor môže byÅ¥ poÅ¡kodený, alebo má zlú príponu.", "duration-seconds": "$1 {{PLURAL:$1|sekunda|sekundy|sekúnd}}", "duration-minutes": "$1 {{PLURAL:$1|minúta|minúty|minút}}", "duration-hours": "$1 {{PLURAL:$1|hodina|hodiny|hodín}}", @@ -3424,6 +3403,7 @@ "pagelang-language": "Jazyk", "pagelang-use-default": "PoužiÅ¥ predvolený jazyk", "pagelang-select-lang": "VybraÅ¥ jazyk", + "pagelang-reason": "Dôvod", "pagelang-submit": "OdoslaÅ¥", "right-pagelang": "ZmeniÅ¥ jazyk stránky", "action-pagelang": "meniÅ¥ jazyk stránky", diff --git a/languages/i18n/sl.json b/languages/i18n/sl.json index 3ef2782ba6..f11dc06a8a 100644 --- a/languages/i18n/sl.json +++ b/languages/i18n/sl.json @@ -13,7 +13,8 @@ "Skalcaa", "Janezdrilc", "Matma Rex", - "NegativeTwelveDollars" + "NegativeTwelveDollars", + "Xð" ] }, "tog-underline": "Podčrtavanje povezav:", @@ -206,7 +207,7 @@ "unprotectthispage": "Spremeni zaščito strani", "newpage": "Nova stran", "talkpage": "Pogovorite se o strani", - "talkpagelinktext": "Pogovor", + "talkpagelinktext": "pogovor", "specialpage": "Posebna stran", "personaltools": "Osebna orodja", "articlepage": "Prikaže članek", @@ -421,19 +422,12 @@ "login": "Prijava", "login-security": "Potrdite svojo identiteto", "nav-login-createaccount": "Prijavite se / registrirajte se", - "userlogin": "Prijavite se / registrirajte se", - "userloginnocreate": "Prijava", "logout": "Odjava", "userlogout": "Odjava", "notloggedin": "Niste prijavljeni", "userlogin-noaccount": "Nimate uporabniÅ¡kega računa?", "userlogin-joinproject": "Pridružite se {{GRAMMAR:dajalnik|{{SITENAME}}}}", - "nologin": "Å e nimate uporabniÅ¡kega računa? $1!", - "nologinlink": "Registrirajte se", "createaccount": "Registracija", - "gotaccount": "Račun že imate? $1.", - "gotaccountlink": "Prijavite se", - "userlogin-resetlink": "Ste pozabili svoje prijavne podatke?", "userlogin-resetpassword-link": "Ste pozabili svoje geslo?", "userlogin-helplink2": "Pomoč pri prijavi", "userlogin-loggedin": "Prijavljeni ste že kot {{GENDER:$1|$1}}.\nUporabite spodnji obrazec, da se prijavite kot drug uporabnik.", @@ -446,7 +440,6 @@ "createaccountmail": "Ustvari začasno naključno geslo in ga poÅ¡lji na spodaj navedeni e-poÅ¡tni naslov", "createaccountmail-help": "Se lahko uporablja za ustvarjanje računa za drugo osebo brez da bi vedeli geslo.", "createacct-realname": "Pravo ime (izbirno)", - "createaccountreason": "Razlog:", "createacct-reason": "Razlog", "createacct-reason-ph": "Zakaj ustvarjate drug račun", "createacct-reason-help": "Sporočilo, prikazano v dnevniku ustvarjanja računov", @@ -645,7 +638,7 @@ "selfredirect": "<strong>Opozorilo:</strong> Stran preusmerjate na samo nase.\nMorda ste za cilj preusmeritve navedli napačno stran ali pa morda urejate napačno stran.\nČe ponovno kliknete »{{int:savearticle}}«, bomo preusmeritev vseeno ustvarili.", "missingcommenttext": "Prosimo, vpiÅ¡ite v spodnje polje komentar.", "missingcommentheader": "<strong>Opozorilo:</strong> Niste vnesli zadeve za ta komentar.\nČe boste ponovno kliknili »{{int:savearticle}}«, bo vaÅ¡e urejanje shranjeno brez nje.", - "summary-preview": "Predogled povzetka", + "summary-preview": "Predogled povzetka urejanja:", "subject-preview": "Predogled zadeve:", "previewerrortext": "Med poskusom prikaza predogleda vaÅ¡ih sprememb je priÅ¡lo do napake.", "blockedtitle": "Uporabnik je blokiran", @@ -953,6 +946,7 @@ "search-interwiki-caption": "Sorodni projekti", "search-interwiki-default": "Rezultati s strani $1:", "search-interwiki-more": "(več)", + "search-interwiki-more-results": "več zadetkov", "search-relatedarticle": "Podobno", "searchrelated": "povezano", "searchall": "vse", @@ -1043,6 +1037,7 @@ "username": "{{GENDER:$1|UporabniÅ¡ko|Uporabničino}} ime:", "prefs-memberingroups": "{{GENDER:$2|Član|Članica}} {{PLURAL:$1|naslednje skupine|naslednjih skupin}}:", "prefs-memberingroups-type": "$1", + "group-membership-link-with-expiry": "$1 (do $2)", "prefs-registration": "Registriran od:", "yourrealname": "Pravo ime:", "yourlanguage": "Jezik:", @@ -1087,17 +1082,26 @@ "editusergroup": "Naloži uporabniÅ¡ke skupine", "editinguser": "Urejanje pravic {{GENDER:$1|uporabnika|uporabnice}} <strong>[[User:$1|$1]]</strong> $2", "viewinguserrights": "Ogledovanje uporabniÅ¡kih pravic {{GENDER:$1|uporabnika|uporabnice}} <strong>[[User:$1|$1]]</strong> $2", - "userrights-editusergroup": "Urejanje uporabniÅ¡kih skupin", - "userrights-viewusergroup": "Ogled skupin uporabnikov", + "userrights-editusergroup": "Urejanje {{GENDER:$1|uporabnikovih|uporabničinih}} skupin", + "userrights-viewusergroup": "Ogled {{GENDER:$1|uporabnikovih|uporabničinih}} skupin", "saveusergroups": "Shrani {{GENDER:$1|uporabnikove|uporabničine}} skupine", "userrights-groupsmember": "Član skupine:", "userrights-groupsmember-auto": "Posreden član:", - "userrights-groups-help": "Spreminjate lahko skupine uporabnika:\n* Obkljukano polje pomeni uporabnika, ki je v skupini\n* Odkljukano polje pomeni uporabnika, ki ni v skupini\n* Zvezdica (*) kaže, da uporabnika ne boste mogli odstraniti iz skupine, ko ga vanjo dodate oz. obratno.", + "userrights-groups-help": "Spreminjate lahko skupine uporabnika:\n* Obkljukano polje pomeni uporabnika, ki je v skupini\n* Odkljukano polje pomeni uporabnika, ki ni v skupini\n* Zvezdica (*) kaže, da uporabnika ne boste mogli odstraniti iz skupine, ko ga vanjo dodate oz. obratno.\n* Lojtra (#) kaže, da lahko čas poteka te skupine postavite samo nazaj; ne morete ga postaviti naprej.", "userrights-reason": "Razlog:", "userrights-no-interwiki": "Za urejanje pravic uporabnikov na drugih wikijih nimate dovoljenja.", "userrights-nodatabase": "Podatkovna baza $1 ne obstaja ali ni lokalna.", "userrights-changeable-col": "Skupine, ki jih lahko spremenite", "userrights-unchangeable-col": "Skupine, ki jih ne morete spremeniti", + "userrights-expiry-current": "Poteče $1", + "userrights-expiry-none": "Ne poteče", + "userrights-expiry": "Poteče:", + "userrights-expiry-existing": "Obstoječ čas poteka: $3, $2", + "userrights-expiry-othertime": "Drug čas:", + "userrights-expiry-options": "1 dan:1 day,1 teden:1 week,1 mesec:1 month,3 mesece:3 months,6 mesecev:6 months,1 leto:1 year", + "userrights-invalid-expiry": "Čas poteka skupine »$1« ni veljaven.", + "userrights-expiry-in-past": "Čas poteka skupine »$1« je v preteklosti.", + "userrights-cannot-shorten-expiry": "Časa poteka skupine »$1« ne morete prestaviti naprej. Samo uporabniki z dovoljenjem za dodajanje ali odstranitev te supine lahko prestavijo čase poteka naprej.", "userrights-conflict": "Spor sprememb uporabniÅ¡kih pravic! Prosimo, da pregledate in potrdite svoje spremembe.", "group": "Skupina:", "group-user": "Uporabniki", @@ -1289,31 +1293,70 @@ "recentchanges-summary": "Na tej strani lahko spremljate najnovejÅ¡e spremembe wikija.", "recentchanges-noresult": "V podanem obdobju nobena sprememba ne ustreza tem merilom.", "recentchanges-feed-description": "Spremljajte zadnje spremembe wikija prek tega vira.", - "recentchanges-label-newpage": "s tem urejanjem je uporabnik ustvaril novo stran", - "recentchanges-label-minor": "manjÅ¡e urejanje", - "recentchanges-label-bot": "urejanje je izvedel bot", + "recentchanges-label-newpage": "To urejanje je ustvarilo novo stran", + "recentchanges-label-minor": "To je manjÅ¡e urejanje", + "recentchanges-label-bot": "Urejanje je izvedel bot", "recentchanges-label-unpatrolled": "Urejanje Å¡e ni bilo pregledano", - "recentchanges-label-plusminus": "uporabnik je velikost strani spremenil za tolikÅ¡no Å¡tevilo bajtov", + "recentchanges-label-plusminus": "Uporabnik je velikost strani spremenil za tolikÅ¡no Å¡tevilo bajtov", "recentchanges-legend-heading": "<strong>Legenda:</strong>", "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (glej tudi [[Special:NewPages|seznam novih strani]])", "recentchanges-submit": "Prikaži", "rcfilters-activefilters": "Dejavni filtri", + "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-invalid-filter": "Neveljaven filter", + "rcfilters-empty-filter": "Ni dejavnih filtrov. Prikazani so vsi prispevki.", "rcfilters-filterlist-title": "Filtri", + "rcfilters-filterlist-feedbacklink": "Podajte povratne informacije o novih (preizkusnih) filtrih", + "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-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 »Neregistrirani« ni dejaven, saj njegov učinek {{PLURAL:$2|izniči naslednji filter|izničita naslednja filtra|izničijo naslednji filtri}} IzkuÅ¡nje, ki {{PLURAL:$2|najde|najdeta|najdejo}} samo registrirane uporabnike: $1", "rcfilters-filtergroup-authorship": "Uredi avtorstvo", "rcfilters-filter-editsbyself-label": "VaÅ¡a lastna urejanja", "rcfilters-filter-editsbyself-description": "VaÅ¡a urejanja.", "rcfilters-filter-editsbyother-label": "Urejanja drugih", "rcfilters-filter-editsbyother-description": "Urejanja, ki so jih naredili drugi uporabniki (ne vi).", - "rcfilters-filtergroup-userExpLevel": "Stopnja uporabnikove izkuÅ¡enosti", - "rcfilters-filter-userExpLevel-newcomer-label": "Novinci", - "rcfilters-filter-userExpLevel-newcomer-description": "Zelo novi sodelavci: manj kot 10 urejanj in 4 dni dejavnosti.", - "rcfilters-filter-userExpLevel-learner-label": "Učenci", - "rcfilters-filter-userExpLevel-learner-description": "Več dni dejavnosti in urejanj kot »Novinci«, vendar manj kot »IzkuÅ¡eni uporabniki«.", - "rcfilters-filter-userExpLevel-experienced-label": "IzkuÅ¡eni uporabniki", - "rcfilters-filter-userExpLevel-experienced-description": "Več kot 30 dni dejavnosti in 500 urejanj.", + "rcfilters-filtergroup-userExpLevel": "Stopnja izkuÅ¡enosti (samo za registrirane uporabnike)", + "rcfilters-filtergroup-user-experience-level-conflicts-unregistered": "Filter ni dejaven, saj najde samo registrirane uporabnike in zato filter »Neregistrirani« izniči njegov učinek.", + "rcfilters-filtergroup-user-experience-level-conflicts-unregistered-global": "Filter »Neregistrirani« je v sporu z enim ali več filtrov IzkuÅ¡nje. Filtri IzkuÅ¡nje najdejo samo registrirane uporabnike. Filtri v sporu so zgoraj označeni kot nedejavni.", + "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-learner-label": "Učenci", + "rcfilters-filter-user-experience-level-learner-description": "Več dni dejavnosti in urejanj kot »Novinci«, vendar manj kot »IzkuÅ¡eni uporabniki«.", + "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-filtergroup-automated": "Samodejni prispevki", + "rcfilters-filter-bots-label": "Bot", + "rcfilters-filter-bots-description": "Urejanja, narejena s samodejnimi orodji.", + "rcfilters-filter-humans-label": "Človek (ne bot)", + "rcfilters-filter-humans-description": "Urejanja, ki so jih izvedli uredniki ljudje.", + "rcfilters-filtergroup-reviewstatus": "Stanje pregleda", + "rcfilters-filter-patrolled-label": "Nadzorovano", + "rcfilters-filter-patrolled-description": "Urejanja, ki so označena kot nadzorovana.", + "rcfilters-filter-unpatrolled-label": "Nenadzorovano", + "rcfilters-filter-unpatrolled-description": "Urejanja, ki niso označena kot nadzorovana.", + "rcfilters-filtergroup-significance": "Pomembnost", + "rcfilters-filter-minor-label": "ManjÅ¡e urejanje", + "rcfilters-filter-minor-description": "Urejanja, ki jih je avtor označil kot manjÅ¡a.", + "rcfilters-filter-major-label": "NemanjÅ¡a urejanja", + "rcfilters-filter-major-description": "Urejanja, ki niso označena kot manjÅ¡a.", + "rcfilters-filtergroup-changetype": "Vrsta spremembe", + "rcfilters-filter-pageedits-label": "Urejanja strani", + "rcfilters-filter-pageedits-description": "Urejanja vsebine wikija, razprave, opisi kategorij ...", + "rcfilters-filter-newpages-label": "Ustvarjanja strani", + "rcfilters-filter-newpages-description": "Urejanja, ki ustvarijo nove strani.", + "rcfilters-filter-categorization-label": "Spremembe kategorij", + "rcfilters-filter-categorization-description": "Zapisi o straneh, ki so bila dodana ali odstranjena iz kategorij.", + "rcfilters-filter-logactions-label": "Zabeležena dejanja", + "rcfilters-filter-logactions-description": "Administrativna dejanja, ustvarjanja računov, izbrisi strani, nalaganja ...", "rcnotefrom": "{{PLURAL:$5|Navedena je sprememba|Navedeni sta spremembi|Navedene so spremembe}} od <strong>$3 $4</strong> dalje (prikazujem jih do <strong>$1</strong>).", "rclistfrom": "Prikaži spremembe od $3 $2 naprej", "rcshowhideminor": "$1 manjÅ¡a urejanja", @@ -1447,7 +1490,7 @@ "uploaded-setting-handler-svg": "SVG, ki nastavi atribut »handler« z oddaljenim/podatkovnim/skriptom ciljem, je blokiran. V naloženi datoteki SVG smo naÅ¡li <code>$1=\"$2\"</code>.", "uploaded-remote-url-svg": "SVG, ki določi katerikoli slogovni atribut z oddaljenim URL-jem, je blokiran. V naloženi datoteki SVG smo naÅ¡li <code>$1=\"$2\"</code>.", "uploaded-image-filter-svg": "V naloženi datoteki SVG smo naÅ¡li slikovni filter z URL-jem: <code><$1 $2=\"$3\"></code>.", - "uploadscriptednamespace": "Datoteka SVG vsebuje nedovoljen imenski prostor »$1«", + "uploadscriptednamespace": "Datoteka SVG vsebuje nedovoljen imenski prostor »<nowiki>$1</nowiki>«", "uploadinvalidxml": "XML v naloženi datoteki ne moremo razčleniti.", "uploadvirus": "Datoteka vsebuje virus!\nPodrobnosti: $1", "uploadjava": "Datoteka je datoteka ZIP, ki vsebuje javansko datoteko .class.\nNalaganje javanskih datotek ni dovoljeno, ker je z njimi mogoče obiti varnostne omejitve.", @@ -1824,8 +1867,10 @@ "apisandbox-sending-request": "PoÅ¡iljanje zahteve API ...", "apisandbox-loading-results": "Prejemanje zahteve API ...", "apisandbox-results-error": "Med nalaganjem odgovora poizvedbe API je priÅ¡lo do napake: $1.", - "apisandbox-request-params-json": "Parametri JSON:", + "apisandbox-request-selectformat-label": "Prikaži zahtevane podatke kot:", + "apisandbox-request-format-url-label": "Niz poizvedbe URL", "apisandbox-request-url-label": "URL zahteve:", + "apisandbox-request-json-label": "Zahteva JSON:", "apisandbox-request-time": "Trajanje zahteve: {{PLURAL:$1|$1 ms}}", "apisandbox-results-fixtoken": "Popravite žeton in ponovno poÅ¡ljite", "apisandbox-results-fixtoken-fail": "Pridobivanje žetona »$1« je spodletelo.", @@ -1967,7 +2012,7 @@ "emailccsubject": "Kopija tvojega sporočila iz $1: $2", "emailsent": "E-pismo je poslano!", "emailsenttext": "E-pismo je poslano.", - "emailuserfooter": "To e-poÅ¡tno sporočilo je {{GENDER:$1|poslal|poslala|poslal(-a)}} $1 uporabniku {{GENDER:$2|$2}} s funkcijo »{{int:emailuser}}« na {{GRAMMAR:dative|{{SITENAME}}}}. {{GENDER:$2|VaÅ¡e}} e-poÅ¡tno sporočilo bo poslano neposredno {{GENDER:$1|izvornemu poÅ¡iljatelju|izvorni poÅ¡iljateljici}}, kar {{GENDER:$1|mu|ji}} bo razkrilo {{GENDER:$2|vaÅ¡}} e-poÅ¡tni naslov.", + "emailuserfooter": "To e-poÅ¡tno sporočilo je {{GENDER:$1|poslal|poslala|poslal(-a)}} $1 uporabniku {{GENDER:$2|$2}} s funkcijo »{{int:emailuser}}« na {{GRAMMAR:dative|{{SITENAME}}}}. Če odgovorite na to sporočilo, bo {{GENDER:$2|vaÅ¡e}} e-poÅ¡tno sporočilo poslano neposredno {{GENDER:$1|izvornemu poÅ¡iljatelju|izvorni poÅ¡iljateljici}}, kar {{GENDER:$1|mu|ji}} bo razkrilo {{GENDER:$2|vaÅ¡}} e-poÅ¡tni naslov.", "usermessage-summary": "Pusti sistemsko sporočilo.", "usermessage-editor": "Sistemski sporočevalec", "watchlist": "Spisek nadzorov", @@ -2065,7 +2110,7 @@ "editcomment": "Povzetek urejanja je bil: <em>$1</em>.", "revertpage": "vrnitev sprememb uporabnika [[Special:Contributions/$2|$2]] ([[User talk:$2|pogovor]]) na zadnje urejanje uporabnika [[User:$1|$1]]", "revertpage-nouser": "vrnitev sprememb skritega uporabnika na zadnjo redakcijo {{GENDER:$1|[[User:$1|$1]]}}", - "rollback-success": "Razveljavljene spremembe uporabnika $1;\nvrnjeno na urejanje uporabnika $2.", + "rollback-success": "Razveljavljene spremembe {{GENDER:$3|uporabnika|uporabnice}} $1;\nvrnjeno na urejanje {{GENDER:$4|uporabnika|uporabnice}} $2.", "rollback-success-notify": "Povrnili smo urejanja $1;\nspremenjeno nazaj na zadnjo redakcijo $2. [$3 Prikaži spremembe]", "sessionfailure-title": "Neuspeh seje", "sessionfailure": "VaÅ¡a prijava ni uspela; da bi preprečili ugrabitev seje, je bilo dejanje preklicano. Prosimo, izberite »Nazaj« in ponovno naložite stran, s katere prihajate, nato poskusite znova.", @@ -3488,7 +3533,7 @@ "logentry-tag-update-revision": "$1 je {{GENDER:$2|posodobil|posodobila|posodobil(-a)}} oznake redakcije $4 strani $3 ({{PLURAL:$7|dodano}} $6; {{PLURAL:$9|odstranjeno}} $8)", "logentry-tag-update-logentry": "$1 je {{GENDER:$2|posodobil|posodobila|posodobil(-a)}} oznake dnevniÅ¡kega vnosa $5 strani $3 ({{PLURAL:$7|dodano}} $6; {{PLURAL:$9|odstranjeno}} $8)", "rightsnone": "(nobeno)", - "revdelete-summary": "povzetek urejanja", + "rightslogentry-temporary-group": "$1 (začasno, do $2)", "feedback-adding": "Dodajanje povratne informacije na stran ...", "feedback-back": "Nazaj", "feedback-bugcheck": "Izvrstno! Samo preverite, da ne gre za enega od [$1 že znanih hroščev].", @@ -3513,56 +3558,12 @@ "feedback-useragent": "UporabniÅ¡ki agent:", "searchsuggest-search": "Iskanje po {{GRAMMAR:dajalnik|{{SITENAME}}}}", "searchsuggest-containing": "vsebujoč ...", - "api-error-autoblocked": "VaÅ¡ IP-naslov smo samodejno blokirali, saj ga je uporabljal blokiran uporabnik.", - "api-error-badaccess-groups": "Nalaganje datotek na ta wiki vam ni dovoljeno.", "api-error-badtoken": "Notranja napaka: slab žeton.", - "api-error-blocked": "Urejanje vam je preprečeno.", - "api-error-copyuploaddisabled": "Nalaganje preko URL je na tem strežniku onemogočeno.", - "api-error-duplicate": "Na strani že {{PLURAL:$1|obstaja druga datoteka|obstajata drugi datoteki|obstajajo druge datoteke}} z enako vsebino.", - "api-error-duplicate-archive": "Na strani {{PLURAL:$1|je že bila druga datoteka|sta že bili drugi datoteki|so že bile nekatere druge datoteke}} z enako vsebino, vendar {{PLURAL:$1|je bila izbrisana|sta bili izbrisani|so bile izbrisane}}.", - "api-error-empty-file": "Poslana datoteka je prazna.", "api-error-emptypage": "Ustvarjanje novih, praznih strani ni dovoljeno.", - "api-error-fetchfileerror": "Notranja napaka: pri pridobivanju datoteke je nekaj Å¡lo narobe.", - "api-error-fileexists-forbidden": "Datoteka »$1« že obstaja in je ni mogoče prepisati.", - "api-error-fileexists-shared-forbidden": "Datoteka »$1« že obstaja v skupnem skladišču datotek in je ni mogoče prepisati.", - "api-error-file-too-large": "Poslana datoteka je prevelika.", - "api-error-filename-tooshort": "Ime datoteke je prekratko.", - "api-error-filetype-banned": "Ta vrsta datoteke je prepovedana.", - "api-error-filetype-banned-type": "$1 {{PLURAL:$4|ni dovoljena datotečna vrsta|nista dovoljeni datotečni vrsti|niso dovoljene datotečne vrste}}. {{PLURAL:$3|Dovoljena datotečna vrsta je|Dovoljeni datotečni vrsti sta|Dovoljene datotečne vrste so}} $2.", - "api-error-filetype-missing": "Datoteki manjka končnica.", - "api-error-hookaborted": "Spremembo, ki ste jo poskuÅ¡ali narediti, je prekinila razÅ¡iritev.", - "api-error-http": "Notranja napaka: ni mogoče vzpostaviti povezave s strežnikom.", - "api-error-illegal-filename": "Ime datoteke ni dovoljeno.", - "api-error-internal-error": "Notranja napaka: pri obdelovanju vaÅ¡e datoteke, naložene na wiki, je nekaj Å¡lo narobe.", - "api-error-invalid-file-key": "Notranja napaka: datoteke ni bilo mogoče najti v začasni hrambi.", - "api-error-missingparam": "Notranja napaka: manjkajoči parametri ob zahtevi.", - "api-error-missingresult": "Notranja napaka: ni bilo mogoče določiti, če je kopiranje uspelo.", - "api-error-mustbeloggedin": "Za nalaganje datotek morate biti prijavljeni.", - "api-error-mustbeposted": "V tem programju je hrošč; ne uporablja pravilne metode HTTP.", - "api-error-noimageinfo": "Nalaganje je uspelo, vendar nam strežnik ni dal nobenih informacij o datoteki.", - "api-error-nomodule": "Notranja napaka: modul nalaganja ni izbran.", - "api-error-ok-but-empty": "Notranja napaka: strežnik se ne odziva.", - "api-error-overwrite": "Prepisovanje obstoječe datoteke ni dovoljeno.", - "api-error-ratelimited": "PoskuÅ¡ate naložiti več datotek v kratkem časovnem obdobju kot to dovoljuje ta wiki. Prosimo, poskusite znova čez nekaj minut.", - "api-error-stashfailed": "Notranja napaka: strežnik ni uspel shraniti začasne datoteke.", "api-error-publishfailed": "Notranja napaka: strežnik ni uspel objaviti začasne datoteke.", - "api-error-stasherror": "Pri nalaganju datoteke v hrambo je priÅ¡lo do napake.", - "api-error-stashedfilenotfound": "Datoteke iz skrite shrambe med poskusom nalaganja iz skrite shrambe nismo naÅ¡li.", - "api-error-stashpathinvalid": "Pot, na kateri naj bi bila datoteka iz skrite shrambe, ni veljavna.", - "api-error-stashfilestorage": "Pri shranjevanju datoteke v skrito shrambo je priÅ¡lo do napake.", - "api-error-stashzerolength": "Strežnik ni mogel dati datoteke v skrito shrambo, ker ima ničelno dolžino.", - "api-error-stashnotloggedin": "Da lahko shranite datoteke v skrito shrambo nalaganja, morate biti prijavljeni.", - "api-error-stashwrongowner": "Datoteka, do katere ste poskuÅ¡ali dostopati v skriti shrambi, ne pripada vam.", - "api-error-stashnosuchfilekey": "Datoteka, do katere ste poskuÅ¡ali dostopati v skriti shrambi, ne obstaja.", - "api-error-timeout": "Strežnik se ni odzval v pričakovanem času.", - "api-error-unclassified": "PriÅ¡lo je do neznane napake", - "api-error-unknown-code": "Neznana napaka: »$1«", - "api-error-unknown-error": "Notranja napaka: pri poskusu nalaganja vaÅ¡e datoteke je nekaj Å¡lo narobe.", + "api-error-stashfailed": "Notranja napaka: strežnik ni uspel shraniti začasne datoteke.", "api-error-unknown-warning": "Neznano opozorilo: »$1«.", "api-error-unknownerror": "Neznana napaka: »$1«.", - "api-error-uploaddisabled": "Nalaganje je onemogočeno na tem wikiju.", - "api-error-verification-error": "Ta datoteka je morda poÅ¡kodovana ali ima napačno končnico.", - "api-error-was-deleted": "Datoteko s tem imenom je v preteklosti nekdo že naložil, ampak je bila nato izbrisana.", "duration-seconds": "$1 {{PLURAL:$1|sekunda|sekundi|sekunde|sekund}}", "duration-minutes": "$1 {{PLURAL:$1|minuta|minuti|minute|minut}}", "duration-hours": "$1 {{PLURAL:$1|ura|uri|ure|ur}}", @@ -3684,6 +3685,7 @@ "mw-widgets-titleinput-description-new-page": "stran Å¡e ne obstaja", "mw-widgets-titleinput-description-redirect": "preusmeritev na $1", "mw-widgets-categoryselector-add-category-placeholder": "Dodaj kategorijo ...", + "mw-widgets-usersmultiselect-placeholder": "Dodaj več ...", "sessionmanager-tie": "Ne morem združiti več vrst overitvenih zahtev: $1.", "sessionprovider-generic": "sej $1", "sessionprovider-mediawiki-session-cookiesessionprovider": "sej, ki temeljijo na piÅ¡kotkih", @@ -3815,7 +3817,7 @@ "usercssispublic": "Pomnite: Podstrani CSS naj ne vsebujejo zaupnih podatkov, saj so vidne tudi drugim uporabnikom.", "restrictionsfield-badip": "Neveljaven IP-naslov ali obseg: $1", "restrictionsfield-label": "Dovoljeni IP-obsegi:", - "restrictionsfield-help": "En IP-naslov ali CIDR-območje na vrstico. Da omogočite vse, uporabite<br><code>0.0.0.0/0</code><br><code>::/0</code>", + "restrictionsfield-help": "En IP-naslov ali CIDR-območje na vrstico. Da omogočite vse, uporabite:\n<pre>0.0.0.0/0\n::/0</pre>", "revid": "redakcija $1", "pageid": "ID strani $1" } diff --git a/languages/i18n/sq.json b/languages/i18n/sq.json index bc986081a4..92680493d1 100644 --- a/languages/i18n/sq.json +++ b/languages/i18n/sq.json @@ -198,6 +198,7 @@ "searcharticle": "Shko", "history": "Historiku i faqes", "history_short": "Historiku", + "history_small": "historiku", "updatedmarker": "përditësuar që nga vizita ime e fundit", "printableversion": "Versioni i printueshëm", "permalink": "Lidhje e përhershme", @@ -466,7 +467,7 @@ "nocookieslogin": "{{SITENAME}} shfrytëzon \"cookies\" për identifikimin e përdoruesve.\nYou nuk lejoni shfrytëzimin e \"cookies\".\nJu lutemi, lejoni shfrytëzimin e \"cookies\" dhe provojeni përsëri.", "nocookiesfornew": "Llogaria e përdoruesit nuk u krijua, pasi ne nuk mund të konfirmojmë burimin e tij.\nSigurohuni që ju lejoni shfrytëzimin e \"cookies\", rifreskoni këtë faqe dhe provojen përsëri.", "noname": "Nuk keni dhënë një emër përdoruesi të pranueshëm.", - "loginsuccesstitle": "Identifikim i suksesshëm", + "loginsuccesstitle": "I/e identifikuar", "loginsuccess": "'''Ju tani jeni identifikuar tek {{SITENAME}} si \"$1\".'''", "nosuchuser": "Nuk ka ndonjë përdorues me emrin \"$1\".\nKontrolloni shkrimin ose [[Special:CreateAccount|hapni një llogari të re]].", "nosuchusershort": "Nuk ka asnjë përdorues me emrin \"$1\".", @@ -902,8 +903,6 @@ "saveprefs": "Ruaj parapëlqimet", "restoreprefs": "Rikthe të gjitha të dhënat e mëparshme", "prefs-editing": "Redaktimi", - "rows": "Rreshta:", - "columns": "Kollona:", "searchresultshead": "Kërkimi", "stub-threshold": "Kufiri për formatin e <a href=\"#\" class=\"stub\">lidhjeve cung</a> (B):", "stub-threshold-sample-link": "shembull", @@ -2878,43 +2877,11 @@ "feedback-thanks-title": "Ju faleminderit!", "searchsuggest-search": "Kërko", "searchsuggest-containing": "përmban ...", - "api-error-badaccess-groups": "Ju nuk lejoheni të ngarkoni skeda në këtë wiki.", "api-error-badtoken": "Gabim i brendshëm: Shenjë e keqe.", - "api-error-copyuploaddisabled": "Ngarkimi nga URL-ja është çaktivizuar në këtë server.", - "api-error-duplicate": "{{PLURAL:$1|Ekziston një skedë tjetër|Ekzistojnë disa skeda të tjera}} me të njëjtën përmbajtje.", - "api-error-duplicate-archive": "{{PLURAL:$1|Ekzistonte një skedë tjetër|Ekzistonin disa skeda të tjera}} me të njëjtën përmbajtje, por {{PLURAL:$1|ajo është|ato janë}} fshirë.", - "api-error-empty-file": "Skeda që paraqitët ishte bosh.", "api-error-emptypage": "Nuk lejohet krijimi i faqeve të reja bosh.", - "api-error-fetchfileerror": "Gabim i brendshëm: Diçka shkoi keq gjatë marrjes së skedës.", - "api-error-fileexists-forbidden": "Një skedar me emrin \"$1\" tashmë ekziston dhe nuk mund të mbishkruhet.", - "api-error-fileexists-shared-forbidden": "Një skedar me emrin \"$1\" tashmë ekziston në depon për skedarët e shpërndarë dhe nuk mund të mbishkruhet.", - "api-error-file-too-large": "Skeda që paraqitët ishte shumë e madhe.", - "api-error-filename-tooshort": "Emri i skedës është shumë i shkurtër.", - "api-error-filetype-banned": "Ky lloj i skedës është përjashtuar.", - "api-error-filetype-banned-type": "$1 {{PLURAL:$4|nuk është një lloj i skedës së lejuar|nuk janë lloje të lejuara të skedave}}. {{PLURAL:$3|Lloji i lejuar i skedës është|Llojet e lejuara të skedave janë}} $2.", - "api-error-filetype-missing": "Skedës i mungon një shtesë.", - "api-error-hookaborted": "Modifikimi që provuat të bëni u ndërpre nga një goditje shtese.", - "api-error-http": "Gabim i brendshëm: Nuk mund të lidhet me serverin.", - "api-error-illegal-filename": "Emri i skedës nuk lejohet.", - "api-error-internal-error": "Gabim i brendshëm: Diçka shkoi keq me procesimin e ngarkimit tuaj në wiki.", - "api-error-invalid-file-key": "Gabim i brendshëm: Skeda nuk u gjet në ruajtjen e përkohshme.", - "api-error-missingparam": "Gabim i brendshëm: Mungesë e parametrave në kërkesë.", - "api-error-missingresult": "Gabim i brendshëm: Nuk mund të përcaktohet nëse kopjimi doli me sukses.", - "api-error-mustbeloggedin": "Ju duhet të identifikoheni për të ngarkuar skeda.", - "api-error-mustbeposted": "Gabim i brendshëm: Kërkesa kërkon HTTP POST.", - "api-error-noimageinfo": "Ngarkimi u krye me sukses, por serveri nuk na dha ndonjë informacion për këtë skedë.", - "api-error-nomodule": "Gabim i brendshëm: Nuk ka modul ngarkimi të vendosur.", - "api-error-ok-but-empty": "Gabim i brendshëm: Nuk ka përgjigje nga serveri.", - "api-error-overwrite": "Mbishkrimi i një skede ekzistuese nuk lejohet.", "api-error-stashfailed": "Gabim i brendshëm: Serveri nuk arriti të ruajë skedën e përkohshme.", - "api-error-timeout": "Serveri nuk u përgjigj gjatës kohës që pritej.", - "api-error-unclassified": "Një gabim i panjohur ndodhi.", - "api-error-unknown-code": "Gabim i panjohur: \"$1\"", - "api-error-unknown-error": "Gabim i brendshëm: Diçka shkoi gabim kur provuat të ngarkoni skedën tuaj.", "api-error-unknown-warning": "Paralajmërim i panjohur: $1", "api-error-unknownerror": "Gabim i papërcaktuar: \"$1\".", - "api-error-uploaddisabled": "Ngarkimi është i çaktivizuar në këte wiki.", - "api-error-verification-error": "Skeda mund të jetë e korruptuar ose ka shtesë të gabuar.", "duration-seconds": "$1 {{PLURAL:$1|sekondë|sekonda}}", "duration-minutes": "$1 {{PLURAL:$1|minutë|minuta}}", "duration-hours": "$1 {{PLURAL:$1|orë|orë}}", diff --git a/languages/i18n/sr-ec.json b/languages/i18n/sr-ec.json index e7b4cf4521..e9a5788c30 100644 --- a/languages/i18n/sr-ec.json +++ b/languages/i18n/sr-ec.json @@ -31,7 +31,8 @@ "Macofe", "Сербијана", "Xð", - "Matma Rex" + "Matma Rex", + "Zoranzoki21" ] }, "tog-underline": "Подвлачење веза:", @@ -198,12 +199,13 @@ "searcharticle": "Иди", "history": "Историја странице", "history_short": "Историја", + "history_small": "историја", "updatedmarker": "ажурирано од моје последње посете", "printableversion": "За штампање", "permalink": "Трајна веза", "print": "Штампај", "view": "Погледај", - "view-foreign": "Види на $1", + "view-foreign": "Види на пројекту $1", "edit": "Уреди", "edit-local": "Уреди локални опис", "create": "Направи", @@ -410,6 +412,8 @@ "virus-scanfailed": "неуспешно скенирање (код $1)", "virus-unknownscanner": "непознати антивирус:", "logouttext": "<strong>Одјављени сте.</strong>\n\nИмајте на уму да неке странице могу наставити да се приказују као да сте још пријављени, све док не очистите привремену меморију свог прегледача.", + "cannotlogoutnow-title": "Одјава тренутно није могућа", + "cannotlogoutnow-text": "Одјава није могућа током употребе $1.", "welcomeuser": "Добро дошли, $1!", "welcomecreation-msg": "Ваш налог је отворен.\nНе заборавите да промените своја [[Special:Preferences|подешавања]].", "yourname": "Корисничко име:", @@ -429,21 +433,14 @@ "password-change-forbidden": "Не можете да промените лозинку на овом викију.", "externaldberror": "Дошло је до грешке при препознавању базе података или немате овлашћења да ажурирате свој спољни налог.", "login": "Пријави ме", - "login-security": "Ваерификација вашег индентитета", + "login-security": "Верификација вашег индентитета", "nav-login-createaccount": "Пријава/регистрација", - "userlogin": "Пријава/регистрација", - "userloginnocreate": "Пријава", "logout": "Одјава", "userlogout": "Одјава", "notloggedin": "Нисте пријављени", "userlogin-noaccount": "Немате налог?", "userlogin-joinproject": "Отворите га", - "nologin": "Немате налог? Идите на страницу $1.", - "nologinlink": "Отварање налога", "createaccount": "Отвори налог", - "gotaccount": "Већ имате налог? Идите на страницу „$1“.", - "gotaccountlink": "Пријава", - "userlogin-resetlink": "Заборавили сте податке за пријаву?", "userlogin-resetpassword-link": "Заборавили сте лозинку?", "userlogin-helplink2": "Помоћ при пријављивању", "userlogin-loggedin": "Већ сте пријављени као {{GENDER:$1|$1}}.\nКористите доњи образац да бисте се пријавили као други корисник.", @@ -455,7 +452,6 @@ "createacct-another-email-ph": "Унесите имејл адресу", "createaccountmail": "Користите привремену, случајно створену лозинку и пошаљите на наведену имејл адресу", "createacct-realname": "Право име (опционо)", - "createaccountreason": "Разлог:", "createacct-reason": "Разлог", "createacct-reason-ph": "Зашто правите још један налог?", "createacct-submit": "Отвори налог", @@ -534,6 +530,7 @@ "changepassword-success": "Ваша лозинка је успешно промењена!", "changepassword-throttled": "Превише пута сте покушали да се пријавите.\nМолимо вас да сачекате $1 пре него што покушате поново.", "botpasswords": "Лозинке ботова", + "botpasswords-disabled": "Лозинке ботова су онемогућене.", "botpasswords-label-appid": "Име бота:", "botpasswords-label-create": "Направи", "botpasswords-label-update": "Ажурирај", @@ -604,8 +601,8 @@ "hr_tip": "Водоравна линија (користити ретко)", "summary": "Опис измене:", "subject": "Тема:", - "minoredit": "мања измена", - "watchthis": "надгледај ову страницу", + "minoredit": "Ово је мања измена", + "watchthis": "Надгледај ову страницу", "savearticle": "Сачувај страницу", "savechanges": "Сачувај измене", "publishpage": "Објави страницу", @@ -620,7 +617,7 @@ "selfredirect": "<strong>Упозорење:</strong> преусмеравате ову страницу на њу саму.\nМожда вам је одредишна страница погрешна или уређујете погрешну страницу.\nАко још једном притиснете „{{int:savearticle}}“ преусмерење ће свеједно бити направљено.", "missingcommenttext": "Унесите коментар испод.", "missingcommentheader": "<strong>Напомена:</strong> нисте унели наслов овог коментара.\nАко поново кликнете на „{{int:savearticle}}“, ваша измена ће бити сачувана без наслова.", - "summary-preview": "Преглед описа:", + "summary-preview": "Преглед описа измене:", "subject-preview": "Преглед теме:", "previewerrortext": "Догодила се грешка приликом приказивања ваших измена.", "blockedtitle": "Корисник је блокиран", @@ -673,8 +670,8 @@ "nonunicodebrowser": "'''Упозорење: ваш прегледач не подржава уникод.'''\nПромените га пре него што почнете с уређивањем.", "editingold": "<strong>Упозорење: уређујете застарелу измену ове странице.</strong>\nАко је сачувате, све новије измене ће бити изгубљене.", "yourdiff": "Разлике", - "copyrightwarning": "Имајте на уму да се сви доприноси на овом викију сматрају као објављени под лиценцом $2 (више на $1).\nАко не желите да се ваши текстови мењају и размењују без ограничења, онда их не шаљите овде.<br />\nИсто тако обећавате да сте ви аутор текста, или да сте га умножили с извора који је у јавном власништву.\n'''Не шаљите радове заштићене ауторским правима без дозволе!'''", - "copyrightwarning2": "Имајте на уму да се сви доприноси на овом викију могу мењати, враћати или брисати од других корисника.\nАко не желите да се ваши текстови слободно мењају и расподељују, не шаљите их овде.<br />\nИсто тако обећавате да сте ви аутор текста, или да сте га умножили с извора који је у јавном власништву (више на $1).\n'''Не шаљите радове заштићене ауторским правима без дозволе!'''", + "copyrightwarning": "Имајте на уму да се сви доприноси на овом викију сматрају као објављени под лиценцом $2 (више на $1).\nАко не желите да се ваши текстови мењају и размењују без ограничења, онда их не шаљите овде.<br />\nИсто тако обећавате да сте ви аутор текста, или да сте га умножили с извора који је у јавном власништву.\n<strong>Не шаљите радове заштићене ауторским правима без дозволе!</strong>", + "copyrightwarning2": "Имајте на уму да се сви доприноси на овом викију могу мењати, враћати или брисати од других корисника.\nАко не желите да се ваши текстови слободно мењају и расподељују, не шаљите их овде.<br />\nИсто тако обећавате да сте ви аутор текста, или да сте га умножили с извора који је у јавном власништву (више на $1).\n<strong>Не шаљите радове заштићене ауторским правима без дозволе!</strong>", "editpage-cannot-use-custom-model": "Модел садржаја ове странице се не може променити.", "longpageerror": "'''Грешка: текст који сте унели је величине {{PLURAL:$1|један килобајт|$1 килобајта|$1 килобајта}}, што је веће од {{PLURAL:$2|дозвољеног једног килобајта|дозвољена $2 килобајта|дозвољених $2 килобајта}}.'''\nСтраница не може бити сачувана.", "readonlywarning": "<strong>Упозорење: база података је закључана ради одржавања, тако да тренутно нећете моћи да сачувате измене.</strong>\nМожда бисте желели сачувати текст за касније у некој текстуалној датотеци.\n\nСистемски администратор је навео следеће објашњење: $1", @@ -767,7 +764,7 @@ "last": "разл", "page_first": "прва", "page_last": "последња", - "histlegend": "Избор разлика: изаберите кутијице измена за упоређивање и притисните ентер или дугме на дну.<br />\nОбјашњење: <strong>({{int:cur}})</strong> – разлика с тренутном изменом,\n<strong>({{int:last}})</strong> – разлика с претходном изменом, <strong>{{int:minoreditletter}}</strong> – мала измена", + "histlegend": "Избор разлика: изаберите кутијице измена за упоређивање и притисните ентер или дугме на дну.<br />\nОбјашњење: <strong>({{int:cur}})</strong> = разлика с тренутном изменом, <strong>({{int:last}})</strong> = разлика с претходном изменом, <strong>{{int:minoreditletter}}</strong> = мала измена", "history-fieldset-title": "Преглед историје", "history-show-deleted": "Само обрисано", "histfirst": "најстарије", @@ -877,7 +874,7 @@ "difference-multipage": "(разлике између страница)", "lineno": "Ред $1:", "compareselectedversions": "Упореди изабране измене", - "showhideselectedversions": "Прикажи/сакриј изабране измене", + "showhideselectedversions": "Промени видљивост изабраних измена", "editundo": "поништи", "diff-empty": "(Нема разлике)", "diff-multi-sameuser": "({{PLURAL:$1|Једна међуизмена истог корисника није приказана|$1 међуизмене истог корисника није приказано|$1 међуизмена истог корисника није приказано}})", @@ -928,8 +925,8 @@ "powersearch-legend": "Напредна претрага", "powersearch-ns": "Тражи у следећим именским просторима:", "powersearch-togglelabel": "Изабери:", - "powersearch-toggleall": "све", - "powersearch-togglenone": "ништа", + "powersearch-toggleall": "Све", + "powersearch-togglenone": "Ништа", "powersearch-remember": "Запамти мој избор за будуће претраге", "search-external": "Спољна претрага", "searchdisabled": "Претрага је онемогућена.\nУ међувремену можете тражити преко Гугла.\nУпамтите да његови пописи овог викија могу бити застарели.", @@ -975,7 +972,7 @@ "prefs-help-recentchangescount": "Подразумева скорашње измене, историје страница и дневнике.", "prefs-help-watchlist-token2": "Ово је тајни кључ за веб-довод Вашег списка надгледања. \nСвако ко зна овај кључ биће у могућности да види Ваша надгледања; стога, кључ немојте одавати никоме. \nАко је потребно, кључ можете [[Special:ResetTokens|ресетовати]].", "savedprefs": "Ваша подешавања су сачувана.", - "savedrights": "Корисничка права за {{GENDER:$1|$1}} су сачувана.", + "savedrights": "Корисничке групе за {{GENDER:$1|$1}} су сачуване.", "timezonelegend": "Временска зона:", "localtime": "Локално време:", "timezoneuseserverdefault": "подразумеване вредности ($1)", @@ -1046,17 +1043,17 @@ "prefswarning-warning": "Променили сте ваша подешавања али нисте их још сачували.\nАко не притиснете „$1“ ваша подешавања ће бити изгубљена.", "prefs-tabs-navigation-hint": "Савет: можете користити типке са левом и десном стрелицом за кретање кроз картице.", "userrights": "Управљање корисничким правима", - "userrights-lookup-user": "Управљање корисничким групама", + "userrights-lookup-user": "Изабери корисника", "userrights-user-editname": "Корисничко име:", - "editusergroup": "Уреди {{GENDER:$1|корисничке}} групе", + "editusergroup": "Учитај корисничке групе", "editinguser": "Мењате корисничка права {{GENDER:$1|корисника|кориснице}} <strong>[[User:$1|$1]]</strong> $2", "viewinguserrights": "Корисничка права {{GENDER:$1|корисника|кориснице}} <strong>[[User:$1|$1]]</strong> $2", - "userrights-editusergroup": "Промена корисничких група", - "userrights-viewusergroup": "Преглед корисничких група", + "userrights-editusergroup": "Промена {{GENDER:$1|корисничких}} група", + "userrights-viewusergroup": "Преглед {{GENDER:$1|корисничких}} група", "saveusergroups": "Сачувај {{GENDER:$1|корисничке}} групе", "userrights-groupsmember": "Члан:", "userrights-groupsmember-auto": "Подразумевано члан и:", - "userrights-groups-help": "Можете променити групе којима овај корисник припада.\n* Означен квадратић означава да се корисник налази у тој групи.\n* Неозначен квадратић означава да се корисник не налази у тој групи.\n* Звездица означава да не можете уклонити групу ако је додате и обратно.", + "userrights-groups-help": "Можете променити групе којима овај корисник припада.\n* Означен квадратић означава да се корисник налази у тој групи.\n* Неозначен квадратић означава да се корисник не налази у тој групи.\n* Звездица (*) означава да не можете уклонити групу ако је додате и обратно.\n* Тараба (#) означава да једино можете одложити време истека ове групе; не можете га убрзати.", "userrights-reason": "Разлог:", "userrights-no-interwiki": "Немате овлашћења да мењате корисничка права на другим викијима.", "userrights-nodatabase": "База података $1 не постоји или није локална.", @@ -1090,11 +1087,11 @@ "right-createtalk": "прављење страница за разговор", "right-createaccount": "отварање нових корисничких налога", "right-minoredit": "означавање измена мањим", - "right-move": "премештање страница", + "right-move": "Премештање страница", "right-move-subpages": "премештање страница с њиховим подстраницама", "right-move-rootuserpages": "премештање основних корисничких страница", - "right-move-categorypages": "премештање категорија", - "right-movefile": "премештање датотека", + "right-move-categorypages": "Премештање категорија", + "right-movefile": "Премештање датотека", "right-suppressredirect": "премештање страница без остављања преусмерења", "right-upload": "Отпремање датотека", "right-reupload": "замењивање постојећих датотека", @@ -1203,11 +1200,11 @@ "action-upload_by_url": "отпремање ове датотеке преко веб-адресе", "action-writeapi": "писање АПИ-ја", "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": "мењање степена заштите ове странице", @@ -1247,8 +1244,11 @@ "recentchanges-legend-heading": "<strong>Легенда:</strong>", "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} ([[Special:NewPages|списак нових страница]])", "recentchanges-submit": "Прикажи", - "rcfilters-filter-userExpLevel-newcomer-label": "Новајлије", - "rcfilters-filter-userExpLevel-experienced-label": "Искусни корисници", + "rcfilters-restore-default-filters": "Враћање подразумеваних филтера", + "rcfilters-clear-all-filters": "Уклони све филтере", + "rcfilters-empty-filter": "Нема активних филтера. Сви доприноси су приказани.", + "rcfilters-filter-user-experience-level-newcomer-label": "Новајлије", + "rcfilters-filter-user-experience-level-experienced-label": "Искусни корисници", "rcnotefrom": "Испод {{PLURAL:$5|је измена|су измене}} од <strong>$3, $4</strong> (до <strong>$1</strong> приказано).", "rclistfrom": "Прикажи нове измене почев од $2 $3", "rcshowhideminor": "$1 мање измене", @@ -1277,7 +1277,7 @@ "hist": "ист", "hide": "Сакриј", "show": "Прикажи", - "minoreditletter": " м", + "minoreditletter": "м", "newpageletter": "Н", "boteditletter": "б", "unpatrolledletter": "!", @@ -1298,9 +1298,9 @@ "recentchangeslinked-page": "Назив странице:", "recentchangeslinked-to": "Прикажи измене страница које су повезане с датом страницом", "recentchanges-page-added-to-category": "[[:$1]] је додата у категорију", - "recentchanges-page-added-to-category-bundled": "[[:$1]] и још [[Special:WhatLinksHere/$1|{{PLURAL:$2|једна страница|$2 странице}}]] су додате у категорију", + "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|једна страница|$2 странице}}]] су уклоњене из категорије", + "recentchanges-page-removed-from-category-bundled": "[[:$1]] је уклоњена из категорије, [[Special:WhatLinksHere/$1|ова страница је повезана са другим страницама]]", "autochange-username": "Медијавики аутоматска измена", "upload": "Отпреми датотеку", "uploadbtn": "Отпреми датотеку", @@ -1377,7 +1377,7 @@ "uploaded-event-handler-on-svg": "Није дозвољено постављање атрибута који контролишу догађаје <code>$1=\"$2\"</code> у SVG датотекама.", "uploaded-href-unsafe-target-svg": "Пронађен href са несигурном метом <code><$1 $2=\"$3\"></code> у постављеној SVG датотеци.", "uploaded-animate-svg": "Пронађена „animate“ ознака која можда мења href користећи се „from“ атрибутом <code><$1 $2=\"$3\"></code> у постављеној SVG датотеци.", - "uploadscriptednamespace": "Ова SVG датотека садржи погрешан именски простор „$1“", + "uploadscriptednamespace": "Ова SVG датотека садржи погрешан именски простор „<nowiki>$1</nowiki>“", "uploadvirus": "Датотека садржи вирус!\nДетаљи: $1", "uploadjava": "Датотека је формата ZIP који садржи јава .class елемент.\nСлање јава датотека није дозвољено јер оне могу изазвати заобилажење сигурносних ограничења.", "upload-source": "Изворна датотека", @@ -1419,7 +1419,7 @@ "backend-fail-hashes": "Не могу да добијем дисперзије датотеке за упоређивање.", "backend-fail-notsame": "Већ постоји неистоветна датотека – $1.", "backend-fail-invalidpath": "$1 није исправна путања за складиштење.", - "backend-fail-delete": "Не могу да обришем датотеку $1.", + "backend-fail-delete": "Не могу да обришем датотеку „$1”.", "backend-fail-describe": "Не могу да променим метаподатке за датотеку „$1“.", "backend-fail-alreadyexists": "Датотека $1 већ постоји.", "backend-fail-store": "Не могу да сместим датотеку $1 у $2.", @@ -1721,6 +1721,7 @@ "booksources-search": "Претражи", "booksources-text": "Испод се налази списак веза ка сајтовима који се баве продајом нових и половних књига, а који би могли имати додатне податке о књигама које тражите:", "booksources-invalid-isbn": "Наведени ISBN број није исправан. Проверите да није дошло до грешке при умножавању из првобитног извора.", + "magiclink-tracking-isbn": "Странице са ISBN магичним везама", "specialloguserlabel": "Извршилац:", "speciallogtitlelabel": "Циљ (наслов или {{ns:user}}:корисничко име):", "log": "Дневници", @@ -1728,13 +1729,13 @@ "all-logs-page": "Сви јавни дневници", "alllogstext": "Скупни приказ свих доступних историја овог викија.\nМожете сузити приказ одабирући врсту историје, корисничког имена или тражене странице.", "logempty": "Нема пронађених уноса у дневнику.", - "log-title-wildcard": "Тражи наслове који почињу с овим текстом", + "log-title-wildcard": "Претражи наслове који почињу са овим текстом", "showhideselectedlogentries": "Прикажи/сакриј изабране догађаје", "log-edit-tags": "Уреди ознаке изабраних уноса у дневницима", "checkbox-select": "Изабери: $1", - "checkbox-all": "све", - "checkbox-none": "ништа", - "checkbox-invert": "обрни", + "checkbox-all": "Све", + "checkbox-none": "Ништа", + "checkbox-invert": "Обрни", "allpages": "Све странице", "nextpage": "Следећа страница ($1)", "prevpage": "Претходна страница ($1)", @@ -1831,7 +1832,7 @@ "emailccsubject": "Копија ваше поруке кориснику $1: $2", "emailsent": "Имејл је послат", "emailsenttext": "Ваша имејл порука је послата.", - "emailuserfooter": "Овај имејл је {{GENDER:$1|послао|послала}} $1 {{GENDER:$2|кориснику|корисници}} $2 помоћу „{{int:emailuser}}“ с викија {{SITENAME}}.", + "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", @@ -1870,7 +1871,7 @@ "wlshowhidecategorization": "категоризацију страница", "watchlist-options": "Поставке списка надгледања", "watching": "Надгледање…", - "unwatching": "Прекидање надгледања…", + "unwatching": "Уклањање са списка надгледања...", "watcherrortext": "Дошло је до грешке при промени поставки вашег списка надгледања за „$1“.", "enotif_reset": "Означи све странице као посећене", "enotif_impersonal_salutation": "{{SITENAME}} корисник", @@ -1893,7 +1894,7 @@ "deletepage": "Обриши страницу", "confirm": "Потврди", "excontent": "садржај је био: „$1“", - "excontentauthor": "садржај је био: „$1“, а једини уредник [[Special:Contributions/$2|$2]] ([[User talk:$2|разговор]])", + "excontentauthor": "садржај је био: „$1“, а једини уредник „[[Special:Contributions/$2|$2]]“ ([[User talk:$2|разговор]])", "exbeforeblank": "садржај пре брисања је био: „$1“", "delete-confirm": "Брисање странице „$1“", "delete-legend": "Обриши", @@ -1926,7 +1927,7 @@ "editcomment": "Опис измене: <em>$1</em>.", "revertpage": "Враћене измене [[Special:Contribs/$2|$2]] ([[User talk:$2|разговор]]) на последњу измену корисника [[User:$1|$1]]", "revertpage-nouser": "Враћене су измене скривеног корисника на последњу измену {{GENDER:$1|корисника|кориснице}} [[User:$1|$1]]", - "rollback-success": "Враћене су измене {{GENDER:$1|корисника|кориснице}} $1\nна последњу измену {{GENDER:$2|корисника|кориснице}} $2.", + "rollback-success": "Враћене су измене {{GENDER:$1|корисника|кориснице}} {{GENDER:$3|$1}}\nна последњу измену {{GENDER:$2|корисника|кориснице}} {{GENDER:$4|$2}}.", "sessionfailure-title": "Сесија је окончана", "sessionfailure": "Изгледа да постоји проблем с вашом сесијом;\nова радња је отказана да би се избегла злоупотреба.\nВратите се на претходну страницу, поново је учитајте и покушајте поново.", "changecontentmodel": "Промени модел садржаја странице", @@ -1944,7 +1945,7 @@ "logentry-contentmodel-change": "$1 је {{GENDER:$2|променио|променила}} модел садржаја странице $3 из „$4“ у „$5“", "logentry-contentmodel-change-revertlink": "врати", "logentry-contentmodel-change-revert": "врати", - "protectlogpage": "Дневник закључавања", + "protectlogpage": "Дневник заштите", "protectlogtext": "Испод је списак заштићених страница.\nПогледајте [[Special:ProtectedPages|списак заштићених страница]] за више детаља.", "protectedarticle": "је заштитио „[[$1]]“", "modifiedarticleprotection": "промењен степен заштите за „[[$1]]“", @@ -1971,7 +1972,7 @@ "protect-locked-dblock": "Степени заштите се не могу мењати јер је активна база података закључана.\nОво су поставке странице '''$1''':", "protect-locked-access": "Немате овлашћења за мењање степена заштите странице.\nОво су тренутне поставке странице '''$1''':", "protect-cascadeon": "Ова страница је тренутно заштићена јер се налази на {{PLURAL:$1|страници која има|страницама које имају}} преносиву заштиту.\nМожете да промените степен заштите, али то неће утицати на преносиву заштиту.", - "protect-default": "Допуштено свима", + "protect-default": "Допуштено свим корисницима", "protect-fallback": "Дозвољено само корисницима са дозволом „$1“", "protect-level-autoconfirmed": "Допуштено само аутоматски потврђеним корисницима", "protect-level-sysop": "Допуштено само администраторима", @@ -1995,8 +1996,8 @@ "minimum-size": "Најмања величина", "maximum-size": "Највећа величина:", "pagesize": "(бајтови)", - "restriction-edit": "уређивање", - "restriction-move": "премештање", + "restriction-edit": "Уређивање", + "restriction-move": "Премештање", "restriction-create": "прављење", "restriction-upload": "отпремање", "restriction-level-sysop": "потпуно заштићено", @@ -2160,7 +2161,7 @@ "ipblocklist-no-results": "Тражена ИП адреса или корисничко име није блокирано.", "blocklink": "блокирај", "unblocklink": "деблокирај", - "change-blocklink": "промени блокирање", + "change-blocklink": "промени блокаду", "contribslink": "доприноси", "emaillink": "пошаљи имејл", "autoblocker": "Аутоматски сте блокирани јер делите ИП адресу с корисником/цом [[User:$1|$1]].\nРазлог блокирања: „$2“", @@ -2255,8 +2256,8 @@ "delete_and_move_confirm": "Да, обриши страницу", "delete_and_move_reason": "Обрисано да се ослободи место за премештање из „[[$1]]“", "selfmove": "Изворни и одредишни наслови су истоветни;\nне могу да преместим страницу преко саме себе.", - "immobile-source-namespace": "Не могу да преместим странице у именском простору „$1“", - "immobile-target-namespace": "Не могу да преместим странице у именском простору „$1“", + "immobile-source-namespace": "Не могу преместити странице у именски простор „$1“.", + "immobile-target-namespace": "Не могу преместити странице у именски простор „$1“.", "immobile-target-namespace-iw": "Међувики веза није исправно одредиште за премештање странице.", "immobile-source-page": "Ова страница се не може преместити.", "immobile-target-page": "Не могу да преместим на жељени наслов.", @@ -2294,7 +2295,7 @@ "allmessages-filter-legend": "Филтер", "allmessages-filter": "Филтрирај по стању:", "allmessages-filter-unmodified": "неизмењене", - "allmessages-filter-all": "све", + "allmessages-filter-all": "Све", "allmessages-filter-modified": "измењене", "allmessages-prefix": "Филтрирај по префиксу:", "allmessages-language": "Језик:", @@ -2445,7 +2446,7 @@ "group-bot.js": "/* Јаваскрипт постављен овде ће се учитати само за ботове */", "group-sysop.js": "/* Јаваскрипт постављен овде ће се учитати само за системске операторе */", "group-bureaucrat.js": "/* Јаваскрипт постављен овде ће се учитати само за бирократе */", - "anonymous": "Анонимни {{PLURAL:$1|корисник|корисници}} на пројекту {{SITENAME}}", + "anonymous": "Анонимни {{PLURAL:$1|корисник|корисници}} пројекта {{SITENAME}}", "siteuser": "{{SITENAME}} корисник $1", "anonuser": "{{SITENAME}} анониман корисник $1", "lastmodifiedatby": "Ову страницу је последњи пут {{GENDER:$4|изменио|изменила|изменио}} $3, $1 у $2.", @@ -3075,7 +3076,7 @@ "autoredircomment": "Преусмерење на [[$1]]", "autosumm-new": "Нова страница: $1", "autosumm-newblank": "Направљена празна страница", - "size-bytes": "$1 B", + "size-bytes": "$1 {{PLURAL:$1|бајт|бајта|бајтова}}", "size-kilobytes": "$1 kB", "size-megabytes": "$1 MB", "size-gigabytes": "$1 GB", @@ -3103,7 +3104,7 @@ "watchlistedit-clear-removed": "{{PLURAL:$1|1 наслов је уклоњен|$1 наслова су уклоњена|$1 наслова је уклоњено}}:", "watchlistedit-too-many": "Има превише страница за приказ овде.", "watchlisttools-clear": "испразни списак надгледања", - "watchlisttools-view": "прикажи сродне измене", + "watchlisttools-view": "Прикажи сродне измене", "watchlisttools-edit": "прикажи и уреди списак надгледања", "watchlisttools-raw": "измени сиров списак надгледања", "iranian-calendar-m1": "Фарвардин", @@ -3334,7 +3335,7 @@ "htmlform-user-not-exists": "<strong>$1</strong> не постоји.", "htmlform-user-not-valid": "<strong>$1</strong> није исправно корисничко име.", "logentry-delete-delete": "$1 је {{GENDER:$2|обрисао|обрисала}} страницу $3", - "logentry-delete-delete_redir": "$1 је {{GENDER:$2|обрисао|обрисала}} преусмерење $3 преснимавањем", + "logentry-delete-delete_redir": "$1 је {{GENDER:$2|обрисао|обрисала}} преусмерење $3 преписивањем", "logentry-delete-restore": "$1 је {{GENDER:$2|вратио|вратила}} страницу $3", "logentry-delete-event": "$1 је {{GENDER:$2|променио|променила}} видљивост {{PLURAL:$5|1=догађаја|$5 догађаја}} у дневнику $3: $4", "logentry-delete-revision": "$1 је {{GENDER:$2|променио|променила}} видљивост {{PLURAL:$5|1=једне измене|$5 измене|$5 измена}} на страници $3: $4", @@ -3395,7 +3396,6 @@ "log-name-tag": "Дневник ознака", "log-description-tag": "Овај дневник приказује додавање/уклањање [[Special:Tags|ознака]] на појединачне измене или уносе у дневницима. Овај дневник не приказује означавање када су она део уређивања, брисања или неке друге радње.", "rightsnone": "(нема)", - "revdelete-summary": "опис измене", "feedback-adding": "Додајем повратну информацију на страницу…", "feedback-back": "Назад", "feedback-bugcheck": "Одлично! Проверите да ли је грешка [$1 позната од пре].", @@ -3415,44 +3415,12 @@ "feedback-thanks-title": "Хвала вам!", "searchsuggest-search": "Претрага", "searchsuggest-containing": "садржи...", - "api-error-badaccess-groups": "Није вам дозвољено да отпремате датотеке на овај вики.", "api-error-badtoken": "Унутрашња грешка: неисправан жетон.", - "api-error-copyuploaddisabled": "Отпремање путем адресе је онемогућено на овом серверу.", - "api-error-duplicate": "Већ {{PLURAL:$1|1=постоји друга датотека|постоје друге датотеке}} с истим садржајем.", - "api-error-duplicate-archive": "{{PLURAL:$1|Постојала је друга датотека|Постојале су друге датотеке}} с истим садржајем, али {{PLURAL:$1|је обрисана|су обрисане}}.", - "api-error-empty-file": "Послата датотека је празна.", "api-error-emptypage": "Стварање нових празних страница није дозвољено.", - "api-error-fetchfileerror": "Унутрашња грешка: дошло је до грешке при добављању датотеке.", - "api-error-fileexists-forbidden": "Већ постоји датотека с именом „$1“ и не може да се замени.", - "api-error-fileexists-shared-forbidden": "Већ постоји датотека с именом „$1“ у заједничкој ризници и не може да се замени.", - "api-error-file-too-large": "Послата датотека је превелика.", - "api-error-filename-tooshort": "Назив датотеке је прекратак.", - "api-error-filetype-banned": "Ова врста датотеке је забрањена.", - "api-error-filetype-banned-type": "$1 {{PLURAL:$4|је забрањена врста датотеке|су забрањене врсте датотека}}. {{PLURAL:$3|Дозвољена је|Дозвољене су}} $2.", - "api-error-filetype-missing": "Датотеци недостаје наставак.", - "api-error-hookaborted": "Измена је одбачена од куке за проширења.", - "api-error-http": "Унутрашња грешка: не могу да се повежем са сервером.", - "api-error-illegal-filename": "Назив датотеке је забрањен.", - "api-error-internal-error": "Унутрашња грешка: дошло је до грешке при обрађивању датотеке на викију.", - "api-error-invalid-file-key": "Унутрашња грешка: не могу да пронађем датотеку у привременом складишту.", - "api-error-missingparam": "Унутрашња грешка: недостају параметри у захтеву.", - "api-error-missingresult": "Унутрашња грешка: не могу да утврдим да ли је умножавање успело.", - "api-error-mustbeloggedin": "Морате бити пријављени да бисте отпремали датотеке.", - "api-error-mustbeposted": "Унутрашња грешка: не користи се исправан HTTP метод.", - "api-error-noimageinfo": "Отпремање је успело, али сервер није дао никакав податак о датотеци.", - "api-error-nomodule": "Унутрашња грешка: није постављен модул за отпремање.", - "api-error-ok-but-empty": "Унутрашња грешка: сервер не одговара.", - "api-error-overwrite": "Замењивање постојеће датотеке је забрањено.", - "api-error-stashfailed": "Унутрашња грешка: сервер не може да сачува привремену датотеку.", "api-error-publishfailed": "Унутрашња грешка: сервер није успео да објави привремену датотеку.", - "api-error-timeout": "Сервер није одговорио у очекивано време.", - "api-error-unclassified": "Дошло је до непознате грешке", - "api-error-unknown-code": "Непозната грешка: „$1“", - "api-error-unknown-error": "Унутрашња грешка: дошло је до грешке при отпремању датотеке.", - "api-error-unknown-warning": "Непознато упозорење: $1", + "api-error-stashfailed": "Унутрашња грешка: сервер не може да сачува привремену датотеку.", + "api-error-unknown-warning": "Непознато упозорење: „$1”.", "api-error-unknownerror": "Непозната грешка: „$1“.", - "api-error-uploaddisabled": "Отпремање је онемогућено на овом викију.", - "api-error-verification-error": "Датотека је оштећена или има неисправан наставак.", "duration-seconds": "$1 {{PLURAL:$1|секунд|секунде|секунди}}", "duration-minutes": "$1 {{PLURAL:$1|минут|минута|минута}}", "duration-hours": "$1 {{PLURAL:$1|сат|сата|сати}}", @@ -3480,7 +3448,7 @@ "expand_templates_remove_nowiki": "Поништава ефекат <nowiki> тагова у приказу чланака", "expand_templates_generate_xml": "Прикажи XML стабло", "expand_templates_generate_rawhtml": "Прикажи сиров HTML", - "expand_templates_preview": "Приказ", + "expand_templates_preview": "Претпреглед", "pagelang-name": "Страница", "pagelang-language": "Језик", "pagelang-select-lang": "Изабери језик", @@ -3509,24 +3477,25 @@ "json-error-syntax": "Грешка у синтакси", "headline-anchor-title": "Веза до овог одељка", "special-characters-group-latin": "Латиница", - "special-characters-group-latinextended": "проширена латиница", + "special-characters-group-latinextended": "Проширена латиница", "special-characters-group-ipa": "ИПА", - "special-characters-group-symbols": "симболи", - "special-characters-group-greek": "грчки", - "special-characters-group-cyrillic": "ћирилица", - "special-characters-group-arabic": "арапски", - "special-characters-group-arabicextended": "проширени арапски", + "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-persian": "персијски", - "special-characters-group-hebrew": "хебрејски", - "special-characters-group-bangla": "бенгалски", - "special-characters-group-tamil": "тамилски", - "special-characters-group-telugu": "телугу", - "special-characters-group-sinhala": "синхалски", - "special-characters-group-gujarati": "гуџарати", - "special-characters-group-devanagari": "деванагари", - "special-characters-group-thai": "тајландски", - "special-characters-group-lao": "лаоски", - "special-characters-group-khmer": "кмерски", + "special-characters-group-hebrew": "Хебрејски", + "special-characters-group-bangla": "Бенгалски", + "special-characters-group-tamil": "Тамилски", + "special-characters-group-telugu": "Телугу", + "special-characters-group-sinhala": "Синхалски", + "special-characters-group-gujarati": "Гуџарати", + "special-characters-group-devanagari": "Деванагари", + "special-characters-group-thai": "Тајландски", + "special-characters-group-lao": "Лаоски", + "special-characters-group-khmer": "Кмерски", "mw-widgets-dateinput-no-date": "Датум није изабран", "mw-widgets-dateinput-placeholder-day": "ГГГГ-ММ-ДД", "mw-widgets-dateinput-placeholder-month": "ГГГГ-ММ", @@ -3545,7 +3514,7 @@ "log-action-filter-protect": "Тип закључавања:", "log-action-filter-rights": "Тип промене корисничких права:", "log-action-filter-upload": "Тип отпремања:", - "log-action-filter-all": "све", + "log-action-filter-all": "Све", "log-action-filter-block-block": "блокирање", "log-action-filter-block-reblock": "измена блокирања", "log-action-filter-block-unblock": "деблокирање", @@ -3559,7 +3528,7 @@ "log-action-filter-managetags-activate": "активирање ознаке", "log-action-filter-managetags-deactivate": "деактивирање ознаке", "log-action-filter-move-move": "премештање без преснимавања преусмерења", - "log-action-filter-move-move_redir": "премештање са преснимавањем преусмерења", + "log-action-filter-move-move_redir": "Премештање са преписивањем преусмерења", "log-action-filter-newusers-create": "отворио анониман корисник", "log-action-filter-newusers-create2": "отворио регистрован корисник", "log-action-filter-newusers-autocreate": "аутоматски отворен", @@ -3568,7 +3537,7 @@ "log-action-filter-protect-protect": "закључавање", "log-action-filter-protect-modify": "измена закључавања", "log-action-filter-protect-unprotect": "уклањање закључавања", - "log-action-filter-protect-move_prot": "премештање заштите", + "log-action-filter-protect-move_prot": "Премештање заштите", "log-action-filter-rights-rights": "ручно", "log-action-filter-rights-autopromote": "аутоматски", "log-action-filter-upload-upload": "Ново отпремање", diff --git a/languages/i18n/sr-el.json b/languages/i18n/sr-el.json index 735e419238..8e9ca3c218 100644 --- a/languages/i18n/sr-el.json +++ b/languages/i18n/sr-el.json @@ -22,7 +22,8 @@ "Macofe", "Сербијана", "Xð", - "Matma Rex" + "Matma Rex", + "Mega Aleksandar" ] }, "tog-underline": "Podvlačenje veza:", @@ -40,6 +41,7 @@ "tog-watchdefault": "Dodaj stranice i datoteke koje izmenim u spisak nadgledanja", "tog-watchmoves": "Dodaj stranice i datoteke koje premestim u spisak nadgledanja", "tog-watchdeletion": "Dodaj stranice i datoteke koje obriÅ¡em u spisak nadgledanja", + "tog-watchuploads": "Dodaj datoteke koje otpremim u spisak nadgledanja", "tog-watchrollback": "Dodaj stranice na kojima sam vratio izmene u spisak nadgledanja", "tog-minordefault": "Označavaj sve izmene kao manje", "tog-previewontop": "Prikaži pregled pre okvira za uređivanje", @@ -49,9 +51,9 @@ "tog-enotifminoredits": "PoÅ¡alji mi imejl i za manje izmene u stranicama i datotekama", "tog-enotifrevealaddr": "Prikaži moju imejl adresu u porukama obaveÅ¡tenja", "tog-shownumberswatching": "Prikaži broj korisnika koji nadgledaju", - "tog-oldsig": "Tekući potpis:", + "tog-oldsig": "Potpis:", "tog-fancysig": "Smatraj potpis kao vikitekst (bez samopovezivanja)", - "tog-uselivepreview": "Koristi trenutan pregled", + "tog-uselivepreview": "Koristi trenutni pregled", "tog-forceeditsummary": "Upozori me kada ne unesem opis izmene", "tog-watchlisthideown": "Sakrij moje izmene sa spiska nadgledanja", "tog-watchlisthidebots": "Sakrij izmene botova sa spiska nadgledanja", @@ -64,9 +66,9 @@ "tog-ccmeonemails": "PoÅ¡alji mi kopije imejlova koje poÅ¡aljem drugim korisnicima", "tog-diffonly": "Ne prikazuj sadržaj stranice ispod razlika", "tog-showhiddencats": "Prikaži skrivene kategorije", - "tog-norollbackdiff": "Izostavi razliku nakon izvrÅ¡enog vraćanja", + "tog-norollbackdiff": "Ne prikazuj razliku nakon izvrÅ¡enog vraćanja", "tog-useeditwarning": "Upozori me kada napuÅ¡tam stranicu sa nesačuvanim promenama", - "tog-prefershttps": "Uvek koristi sigurnu konekciju kada sam prijavljen.", + "tog-prefershttps": "Uvek koristi bezbednu konekciju dok sam prijavljen.", "underline-always": "uvek podvlači", "underline-never": "nikad ne podvlači", "underline-default": "prema temi ili pregledaču", @@ -137,11 +139,13 @@ "october-date": "$1. oktobar", "november-date": "$1. novembar", "december-date": "$1. decembar", + "period-am": "prepodne", + "period-pm": "popodne", "pagecategories": "{{PLURAL:$1|Kategorija|Kategorije}}", "category_header": "Stranice u kategoriji „$1“", "subcategories": "Potkategorije", "category-media-header": "Datoteke u kategoriji „$1“", - "category-empty": "<div style=\"margin:2em 1em 0 1em; padding:0.5em; border:1px solid #AAA; text-align:center;\">''Ova kategorija trenutno ne sadrži stranice ili datoteke.''</div>", + "category-empty": "<em>Ova kategorija trenutno ne sadrži stranice ili datoteke.</em>", "hidden-categories": "{{PLURAL:$1|Sakrivena kategorija|Sakrivene kategorije}}", "hidden-category-category": "Skrivene kategorije", "category-subcat-count": "{{PLURAL:$2|1=Ova kategorija sadrži samo sledeću potkategoriju.|Ova kategorija ima {{PLURAL:$1|1=sledeću potkategoriju|sledeće $1 potkategorije|sledećih $1 potkategorija}}, od ukupno $2.}}", @@ -159,7 +163,7 @@ "newwindow": "(otvara se u novom prozoru)", "cancel": "Otkaži", "moredotdotdot": "ViÅ¡e…", - "morenotlisted": "Ova lista nije kompletna.", + "morenotlisted": "Ova lista je možda nepotpuna", "mypage": "Stranica", "mytalk": "Razgovor", "anontalk": "Razgovor", @@ -181,17 +185,19 @@ "tagline": "Izvor: {{SITENAME}}", "help": "Pomoć", "search": "Pretraga", + "search-ignored-headings": "#<!-- ovu liniju ostavite kakva jeste --> <pre>\n# Naslovi koji će biti ignorisani upitom\n# Promene su vidljive odmah nakon Å¡to stranica sa naslovom bude popisana\n# Možete iznuditi ponovno popisivanje sa \"null\" promenom\n# Sintaksa je sledeća:\n# * Svaka vrsta koja započinje \"#\" znakom pa sve do kraja je komentar\n# * Svaka ne prazna vrsta je tačan naslov za zanemariti, u tačnom obliku\nReference\nSpoljaÅ¡nje veze\nPogledajte\n#</pre> <!-- ovu liniju ostavite kakva jeste -->", "searchbutton": "Pretraži", "go": "Idi", "searcharticle": "Idi", "history": "Istorija stranice", "history_short": "Istorija", + "history_small": "istorija", "updatedmarker": "ažurirano od moje poslednje posete", "printableversion": "Za Å¡tampanje", "permalink": "Trajna veza", "print": "Å tampaj", "view": "Pogledaj", - "view-foreign": "Vidi na $1", + "view-foreign": "Vidi na projektu $1", "edit": "Uredi", "edit-local": "Uredi lokalni opis", "create": "Napravi", @@ -217,6 +223,9 @@ "talk": "Razgovor", "views": "Pregledi", "toolbox": "Alatke", + "tool-link-userrights": "Promeni {{GENDER:$1|korisnik}} grupe", + "tool-link-userrights-readonly": "Prikaži {{GENDER:$1|korisnik}} grupe", + "tool-link-emailuser": "PoÅ¡alji e-poruku {{GENDER:$1|korisnik}}", "userpage": "Pogledaj korisničku stranicu", "projectpage": "Pogledaj stranicu projekta", "imagepage": "Pogledaj stranicu datoteke", @@ -240,6 +249,8 @@ "pool-timeout": "Istek vremena čeka na zaključavanje", "pool-queuefull": "Red je pun zahteva", "pool-errorunknown": "Nepoznata greÅ¡ka", + "pool-servererror": "Brojač fonda trenutno nije dostupan ($1)", + "poolcounter-usage-error": "GreÅ¡ka tokom upotrebe: $1", "aboutsite": "O projektu {{SITENAME}}", "aboutpage": "Project:O nama", "copyright": "Sadržaj je dostupan pod licencom $1 osim ako je drugačije navedeno.", @@ -324,6 +335,7 @@ "databaseerror-query": "Upit: $1", "databaseerror-function": "Funkcija: $1", "databaseerror-error": "GreÅ¡ka: $1", + "transaction-duration-limit-exceeded": "Zbog izbegavanja velikih kopirajućih zaostajanja, ova transakcija je prekinuta zbog toga Å¡to je trajanje zapisivanja ($1) premaÅ¡ilo ($2) sekundi ograničenja. \nUkoliko menjate puno artikala odjednom, pokuÅ¡ajte sa viÅ¡e manjih operacija.", "laggedslavemode": "<strong>Upozorenje:</strong> stranica je možda zastarela.", "readonly": "Baza podataka je zaključana", "enterlockreason": "Unesite razlog za zaključavanje, uključujući i vreme otključavanja", @@ -334,6 +346,7 @@ "readonly_lag": "Baza podataka je automatski zaključana da bi se sekundarni serveri baze podataka uskladili s glavnim.", "internalerror": "UnutraÅ¡nja greÅ¡ka", "internalerror_info": "UnutraÅ¡nja greÅ¡ka: $1", + "internalerror-fatal-exception": "Kritični izuzetak tipa $1", "filecopyerror": "Ne mogu da umnožim datoteku „$1“ u „$2“.", "filerenameerror": "Ne mogu da preimenujem datoteku „$1“ u „$2“.", "filedeleteerror": "Ne mogu da obriÅ¡em datoteku „$1“.", @@ -347,8 +360,13 @@ "cannotdelete": "Ne mogu da obriÅ¡em stranicu ili datoteku „$1“.\nVerovatno ju je neko drugi obrisao.", "cannotdelete-title": "Ne mogu da obriÅ¡em stranicu „$1“", "delete-hook-aborted": "Brisanje je prekinula kuka.\nNije dato nikakvo obrazloženje.", + "no-null-revision": "Nije moguće napraviti \"null\" reviziju za stranicu $1", "badtitle": "Neispravan naslov", "badtitletext": "Naslov stranice je neispravan, prazan ili je međujezički ili međuviki naslov pogreÅ¡no povezan.\nMožda sadrži znakove koji se ne mogu koristiti u naslovima.", + "title-invalid-empty": "Zatraženi naslov strane je prazan ili sadrži samo razmak.", + "title-invalid-utf8": "Zatraženi naslov stranice sadrži nevažeći UTF-8 niz.", + "title-invalid-interwiki": "Zatraženi naslov stranice sadrži \"interwiki\" vezu koja ne može biti upotrebljenja za naslove.", + "title-invalid-talk-namespace": "Zatraženi naslov strane se odnosi na stranicu za razgovor koja ne može da postoji.", "title-invalid-characters": "Traženi naslov ima nevažeće karaktere: „$1“.", "perfcached": "Sledeći podaci su keÅ¡irani i mogu biti zastareli. KeÅ¡ sadrži najviÅ¡e {{PLURAL:$1|jedan rezultat|$1 rezultata|$1 rezultata}}.", "perfcachedts": "Sledeći podaci su keÅ¡irani i poslednji put su ažurirani $2 u $3. U keÅ¡u {{PLURAL:$4|1=je dostupan najviÅ¡e jedan rezultat|su dostupna najviÅ¡e $4 rezultata|je dostupno najviÅ¡e $4 rezultata}}.", @@ -403,19 +421,12 @@ "externaldberror": "DoÅ¡lo je do greÅ¡ke pri prepoznavanju baze podataka ili nemate ovlašćenja da ažurirate svoj spoljni nalog.", "login": "Prijavi me", "nav-login-createaccount": "Prijava/registracija", - "userlogin": "Prijava/registracija", - "userloginnocreate": "Prijava", "logout": "Odjava", "userlogout": "Odjava", "notloggedin": "Niste prijavljeni", "userlogin-noaccount": "Nemate nalog?", "userlogin-joinproject": "Otvorite ga", - "nologin": "Nemate nalog? Idite na stranicu $1.", - "nologinlink": "Otvaranje naloga", "createaccount": "Otvori nalog", - "gotaccount": "Već imate nalog? Idite na stranicu „$1“.", - "gotaccountlink": "Prijava", - "userlogin-resetlink": "Zaboravili ste podatke za prijavu?", "userlogin-resetpassword-link": "Zaboravili ste lozinku?", "userlogin-helplink2": "Pomoć pri prijavljivanju", "userlogin-loggedin": "Već ste prijavljeni kao {{GENDER:$1|$1}}.\nKoristite donji obrazac da biste se prijavili kao drugi korisnik.", @@ -426,7 +437,6 @@ "createacct-another-email-ph": "Unesite imejl adresu", "createaccountmail": "Koristite privremenu, slučajno stvorenu lozinku i poÅ¡aljite na navedenu adresu elektronske poÅ¡te", "createacct-realname": "Pravo ime (opciono)", - "createaccountreason": "Razlog:", "createacct-reason": "Razlog", "createacct-reason-ph": "ZaÅ¡to pravite joÅ¡ jedan nalog?", "createacct-submit": "Otvori nalog", @@ -569,8 +579,8 @@ "hr_tip": "Vodoravna linija (koristiti retko)", "summary": "Opis izmene:", "subject": "Tema:", - "minoredit": "manja izmena", - "watchthis": "nadgledaj ovu stranicu", + "minoredit": "Ovo je manja izmena", + "watchthis": "Nadgledaj ovu stranicu", "savearticle": "Sačuvaj stranicu", "savechanges": "Sačuvaj izmene", "publishpage": "Objavi stranicu", @@ -721,7 +731,7 @@ "last": "razl", "page_first": "prva", "page_last": "poslednja", - "histlegend": "Izbor razlika: izaberite kutijice izmena za upoređivanje i pritisnite enter ili dugme na dnu.<br />\nObjaÅ¡njenje: <strong>({{int:cur}})</strong> – razlika s trenutnom izmenom,\n<strong>({{int:last}})</strong> – razlika s prethodnom izmenom, <strong>{{int:minoreditletter}}</strong> – mala izmena", + "histlegend": "Izbor razlika: izaberite kutijice izmena za upoređivanje i pritisnite enter ili dugme na dnu.<br />\nObjaÅ¡njenje: <strong>({{int:cur}})</strong> = razlika s trenutnom izmenom, <strong>({{int:last}})</strong> = razlika s prethodnom izmenom, <strong>{{int:minoreditletter}}</strong> = mala izmena", "history-fieldset-title": "Pregled istorije", "history-show-deleted": "Samo obrisane", "histfirst": "najstarije", @@ -829,7 +839,7 @@ "difference-multipage": "(razlike između stranica)", "lineno": "Red $1:", "compareselectedversions": "Uporedi izabrane izmene", - "showhideselectedversions": "Prikaži/sakrij izabrane izmene", + "showhideselectedversions": "Promeni vidljivost izabranih izmena", "editundo": "poniÅ¡ti", "diff-empty": "(Nema razlike)", "diff-multi-sameuser": "({{PLURAL:$1|Jedna međuizmena istog korisnika nije prikazana|$1 međuizmene istog korisnika nije prikazano|$1 međuizmena istog korisnika nije prikazano}})", @@ -880,8 +890,8 @@ "powersearch-legend": "Napredna pretraga", "powersearch-ns": "Traži u sledećim imenskim prostorima:", "powersearch-togglelabel": "Izaberi:", - "powersearch-toggleall": "sve", - "powersearch-togglenone": "niÅ¡ta", + "powersearch-toggleall": "Sve", + "powersearch-togglenone": "NiÅ¡ta", "powersearch-remember": "Zapamti moj izbor za buduće pretrage", "search-external": "Spoljna pretraga", "searchdisabled": "Pretraga je onemogućena.\nU međuvremenu možete tražiti preko Gugla.\nUpamtite da njegovi popisi ovog vikija mogu biti zastareli.", @@ -917,8 +927,6 @@ "saveprefs": "Sačuvaj", "restoreprefs": "Vrati sve na podrazumevano (u svim odeljcima)", "prefs-editing": "Uređivanje", - "rows": "Redova:", - "columns": "Kolona", "searchresultshead": "Pretraga", "stub-threshold": "Prag za oblikovanje veze kao klice ($1):", "stub-threshold-sample-link": "primer", @@ -960,7 +968,7 @@ "username": "{{GENDER:$1|Korisničko ime}}:", "prefs-memberingroups": "{{PLURAL:$1|Grupa|Grupe}}:", "prefs-memberingroups-type": "$1", - "prefs-registration": "Vreme upisa:", + "prefs-registration": "Vreme registracije:", "prefs-registration-date-time": "$1", "yourrealname": "Pravo ime:", "yourlanguage": "Jezik:", @@ -1042,11 +1050,11 @@ "right-createtalk": "pravljenje stranica za razgovor", "right-createaccount": "otvaranje novih korisničkih naloga", "right-minoredit": "označavanje izmena manjim", - "right-move": "premeÅ¡tanje stranica", + "right-move": "PremeÅ¡tanje stranica", "right-move-subpages": "premeÅ¡tanje stranica s njihovim podstranicama", "right-move-rootuserpages": "premeÅ¡tanje osnovnih korisničkih stranica", - "right-move-categorypages": "premeÅ¡tanje kategorija", - "right-movefile": "premeÅ¡tanje datoteka", + "right-move-categorypages": "PremeÅ¡tanje kategorija", + "right-movefile": "PremeÅ¡tanje datoteka", "right-suppressredirect": "premeÅ¡tanje stranica bez ostavljanja preusmerenja", "right-upload": "Otpremanje datoteka", "right-reupload": "zamenjivanje postojećih datoteka", @@ -1208,7 +1216,7 @@ "hist": "ist", "hide": "Sakrij", "show": "Prikaži", - "minoreditletter": " m", + "minoreditletter": "m", "newpageletter": "N", "boteditletter": "b", "unpatrolledletter": "!", @@ -1299,7 +1307,7 @@ "uploaddisabledtext": "Otpremanje datoteka je onemogućeno.", "php-uploaddisabledtext": "Otpremanje datoteka je onemogućeno u PHP-u.\nProverite podeÅ¡avanja file_uploads.", "uploadscripted": "Datoteka sadrži HTML ili skriptni kod koji može biti pogreÅ¡no protumačen od strane pregledača.", - "uploadscriptednamespace": "Ova SVG datoteka sadrži pogreÅ¡an imenski prostor „$1“", + "uploadscriptednamespace": "Ova SVG datoteka sadrži pogreÅ¡an imenski prostor „<nowiki>$1</nowiki>“", "uploadvirus": "Datoteka sadrži virus!\nDetalji: $1", "uploadjava": "Datoteka je formata ZIP koji sadrži java .class element.\nSlanje java datoteka nije dozvoljeno jer one mogu izazvati zaobilaženje sigurnosnih ograničenja.", "upload-source": "Izvorna datoteka", @@ -1340,7 +1348,7 @@ "backend-fail-hashes": "Ne mogu da dobijem disperzije datoteke za upoređivanje.", "backend-fail-notsame": "Već postoji neistovetna datoteka – $1.", "backend-fail-invalidpath": "$1 nije ispravna putanja za skladiÅ¡tenje.", - "backend-fail-delete": "Ne mogu da obriÅ¡em datoteku $1.", + "backend-fail-delete": "Ne mogu da obriÅ¡em datoteku „$1”.", "backend-fail-describe": "Ne mogu da promenim metapodatke za datoteku „$1“.", "backend-fail-alreadyexists": "Datoteka $1 već postoji.", "backend-fail-store": "Ne mogu da smestim datoteku $1 u $2.", @@ -1638,6 +1646,7 @@ "booksources-search": "Pretraži", "booksources-text": "Ispod se nalazi spisak veza ka sajtovima koji se bave prodajom novih i polovnih knjiga, a koji bi mogli imati dodatne podatke o knjigama koje tražite:", "booksources-invalid-isbn": "Navedeni ISBN broj nije ispravan. Proverite da nije doÅ¡lo do greÅ¡ke pri umnožavanju iz prvobitnog izvora.", + "magiclink-tracking-isbn": "Stranice sa ISBN magičnim vezama", "specialloguserlabel": "IzvrÅ¡ilac:", "speciallogtitlelabel": "Cilj (naslov ili {{ns:user}}:korisničko ime):", "log": "Dnevnici", @@ -1645,13 +1654,13 @@ "all-logs-page": "Svi javni dnevnici", "alllogstext": "Skupni prikaz svih dostupnih istorija ovog vikija.\nMožete suziti prikaz odabirući vrstu istorije, korisničkog imena ili tražene stranice.", "logempty": "Nema pronađenih unosa u dnevniku.", - "log-title-wildcard": "Traži naslove koji počinju s ovim tekstom", + "log-title-wildcard": "Pretraži naslove koji počinju sa ovim tekstom", "showhideselectedlogentries": "Prikaži/sakrij izabrane događaje", "log-edit-tags": "Uredi oznake izabranih unosa u dnevnicima", "checkbox-select": "Izaberi: $1", - "checkbox-all": "sve", - "checkbox-none": "niÅ¡ta", - "checkbox-invert": "obrni", + "checkbox-all": "Sve", + "checkbox-none": "NiÅ¡ta", + "checkbox-invert": "Obrni", "allpages": "Sve stranice", "nextpage": "Sledeća stranica ($1)", "prevpage": "Prethodna stranica ($1)", @@ -1787,7 +1796,7 @@ "wlshowhidecategorization": "kategorizaciju stranica", "watchlist-options": "Postavke spiska nadgledanja", "watching": "Nadgledanje…", - "unwatching": "Prekidanje nadgledanja…", + "unwatching": "Uklanjanje sa spiska nadgledanja...", "watcherrortext": "DoÅ¡lo je do greÅ¡ke pri promeni postavki vaÅ¡eg spiska nadgledanja za „$1“.", "enotif_reset": "Označi sve stranice kao posećene", "enotif_impersonal_salutation": "{{SITENAME}} korisnik", @@ -1860,7 +1869,7 @@ "logentry-contentmodel-change": "$1 je {{GENDER:$2|promenio|promenila}} model sadržaja stranice $3 iz „$4“ u „$5“", "logentry-contentmodel-change-revertlink": "vrati", "logentry-contentmodel-change-revert": "vrati", - "protectlogpage": "Dnevnik zaključavanja", + "protectlogpage": "Dnevnik zaÅ¡tite", "protectlogtext": "Ispod je spisak zaÅ¡tićenih stranica.\nPogledajte [[Special:ProtectedPages|spisak zaÅ¡tićenih stranica]] za viÅ¡e detalja.", "protectedarticle": "je zaÅ¡titio „[[$1]]“", "modifiedarticleprotection": "promenjen stepen zaÅ¡tite za „[[$1]]“", @@ -1884,7 +1893,7 @@ "protect-locked-dblock": "Stepeni zaÅ¡tite se ne mogu menjati jer je aktivna baza podataka zaključana.\nOvo su postavke stranice '''$1''':", "protect-locked-access": "Nemate ovlašćenja za menjanje stepena zaÅ¡tite stranice.\nOvo su trenutne postavke stranice '''$1''':", "protect-cascadeon": "Ova stranica je trenutno zaÅ¡tićena jer se nalazi na {{PLURAL:$1|stranici koja ima|stranicama koje imaju}} prenosivu zaÅ¡titu.\nMožete da promenite stepen zaÅ¡tite, ali to neće uticati na prenosivu zaÅ¡titu.", - "protect-default": "DopuÅ¡teno svima", + "protect-default": "DopuÅ¡teno svim korisnicima", "protect-fallback": "Dozvoljeno samo korisnicima sa dozvolom „$1“", "protect-level-autoconfirmed": "DopuÅ¡teno samo automatski potvrđenim korisnicima", "protect-level-sysop": "DopuÅ¡teno samo administratorima", @@ -1908,8 +1917,8 @@ "minimum-size": "Najmanja veličina", "maximum-size": "Najveća veličina:", "pagesize": "(bajtovi)", - "restriction-edit": "uređivanje", - "restriction-move": "premeÅ¡tanje", + "restriction-edit": "Uređivanje", + "restriction-move": "PremeÅ¡tanje", "restriction-create": "pravljenje", "restriction-upload": "otpremanje", "restriction-level-sysop": "potpuno zaÅ¡tićeno", @@ -2071,7 +2080,7 @@ "ipblocklist-no-results": "Tražena IP adresa ili korisničko ime nije blokirano.", "blocklink": "blokiraj", "unblocklink": "deblokiraj", - "change-blocklink": "promeni blokiranje", + "change-blocklink": "promeni blokadu", "contribslink": "doprinosi", "emaillink": "poÅ¡alji imejl", "autoblocker": "Automatski ste blokirani jer delite IP adresu s korisnikom/com [[User:$1|$1]].\nRazlog blokiranja: „$2“", @@ -2165,8 +2174,8 @@ "delete_and_move_confirm": "Da, obriÅ¡i stranicu", "delete_and_move_reason": "Obrisano da se oslobodi mesto za premeÅ¡tanje iz „[[$1]]“", "selfmove": "Izvorni i odrediÅ¡ni naslovi su istovetni;\nne mogu da premestim stranicu preko same sebe.", - "immobile-source-namespace": "Ne mogu da premestim stranice u imenskom prostoru „$1“", - "immobile-target-namespace": "Ne mogu da premestim stranice u imenskom prostoru „$1“", + "immobile-source-namespace": "Ne mogu premestiti stranice u imenski prostor „$1“.", + "immobile-target-namespace": "Ne mogu premestiti stranice u imenski prostor „$1“.", "immobile-target-namespace-iw": "Međuviki veza nije ispravno odrediÅ¡te za premeÅ¡tanje stranice.", "immobile-source-page": "Ova stranica se ne može premestiti.", "immobile-target-page": "Ne mogu da premestim na željeni naslov.", @@ -2204,7 +2213,7 @@ "allmessages-filter-legend": "Filter", "allmessages-filter": "Filtriraj po stanju:", "allmessages-filter-unmodified": "neizmenjene", - "allmessages-filter-all": "sve", + "allmessages-filter-all": "Sve", "allmessages-filter-modified": "izmenjene", "allmessages-prefix": "Filtriraj po prefiksu:", "allmessages-language": "Jezik:", @@ -2338,7 +2347,7 @@ "tooltip-watchlistedit-raw-submit": "Ažuriraj spisak", "tooltip-recreate": "Ponovo napravite stranicu iako je obrisana", "tooltip-upload": "Započnite otpremanje", - "tooltip-rollback": "Opcija „Vrati“ vraća izmene poslednjeg korisnika", + "tooltip-rollback": "„Vrati“ vraća izmene poslednjeg korisnika jednim klikom", "tooltip-undo": "PoniÅ¡tava ovu izmenu i otvara obrazac za uređivanje.", "tooltip-preferences-save": "Sačuvaj postavke", "tooltip-summary": "Unesite kratak opis", @@ -2354,7 +2363,7 @@ "group-bot.js": "/* Javaskript postavljen ovde će se učitati samo za botove */", "group-sysop.js": "/* Javaskript postavljen ovde će se učitati samo za sistemske operatore */", "group-bureaucrat.js": "/* Javaskript postavljen ovde će se učitati samo za birokrate */", - "anonymous": "Anonimni {{PLURAL:$1|korisnik|korisnici}} na projektu {{SITENAME}}", + "anonymous": "Anonimni {{PLURAL:$1|korisnik|korisnici}} projekta {{SITENAME}}", "siteuser": "{{SITENAME}} korisnik $1", "anonuser": "{{SITENAME}} anoniman korisnik $1", "lastmodifiedatby": "Ovu stranicu je poslednji put {{GENDER:$4|izmenio|izmenila|izmenio}} $3, $1 u $2.", @@ -2977,7 +2986,7 @@ "autoredircomment": "Preusmerenje na [[$1]]", "autosumm-new": "Nova stranica: $1", "autosumm-newblank": "Napravljena prazna stranica", - "size-bytes": "$1 B", + "size-bytes": "$1 {{PLURAL:$1|bajt|bajta|bajtova}}", "size-kilobytes": "$1 kB", "size-megabytes": "$1 MB", "size-gigabytes": "$1 GB", @@ -3005,7 +3014,7 @@ "watchlistedit-clear-removed": "{{PLURAL:$1|1 naslov je uklonjen|$1 naslova su uklonjena|$1 naslova je uklonjeno}}:", "watchlistedit-too-many": "Ima previÅ¡e stranica za prikaz ovde.", "watchlisttools-clear": "isprazni spisak nadgledanja", - "watchlisttools-view": "prikaži srodne izmene", + "watchlisttools-view": "Prikaži srodne izmene", "watchlisttools-edit": "prikaži i uredi spisak nadgledanja", "watchlisttools-raw": "izmeni sirov spisak nadgledanja", "iranian-calendar-m1": "Farvardin", @@ -3234,6 +3243,7 @@ "htmlform-user-not-exists": "<strong>$1</strong> ne postoji.", "htmlform-user-not-valid": "<strong>$1</strong> nije ispravno korisničko ime.", "logentry-delete-delete": "$1 je {{GENDER:$2|obrisao|obrisala}} stranicu $3", + "logentry-delete-delete_redir": "$1 je {{GENDER:$2|obrisao|obrisala}} preusmerenje $3 prepisivanjem", "logentry-delete-restore": "$1 je {{GENDER:$2|vratio|vratila}} stranicu $3", "logentry-delete-event": "$1 je {{GENDER:$2|promenio|promenila}} vidljivost {{PLURAL:$5|1=događaja|$5 događaja}} u dnevniku $3: $4", "logentry-delete-revision": "$1 je {{GENDER:$2|promenio|promenila}} vidljivost {{PLURAL:$5|1=jedne izmene|$5 izmene|$5 izmena}} na stranici $3: $4", @@ -3294,7 +3304,6 @@ "log-name-tag": "Dnevnik oznaka", "log-description-tag": "Ovaj dnevnik prikazuje dodavanje/uklanjanje [[Special:Tags|oznaka]] na pojedinačne izmene ili unose u dnevnicima. Ovaj dnevnik ne prikazuje označavanje kada su ona deo uređivanja, brisanja ili neke druge radnje.", "rightsnone": "(nema)", - "revdelete-summary": "opis izmene", "feedback-adding": "Dodajem povratnu informaciju na stranicu…", "feedback-back": "Nazad", "feedback-bugcheck": "Odlično! Proverite da li je greÅ¡ka [$1 poznata od pre].", @@ -3314,44 +3323,12 @@ "feedback-thanks-title": "Hvala vam!", "searchsuggest-search": "Pretraga", "searchsuggest-containing": "sadrži...", - "api-error-badaccess-groups": "Nije vam dozvoljeno da otpremate datoteke na ovaj viki.", "api-error-badtoken": "UnutraÅ¡nja greÅ¡ka: neispravan žeton.", - "api-error-copyuploaddisabled": "Otpremanje putem adrese je onemogućeno na ovom serveru.", - "api-error-duplicate": "Već {{PLURAL:$1|1=postoji druga datoteka|postoje druge datoteke}} s istim sadržajem.", - "api-error-duplicate-archive": "{{PLURAL:$1|Postojala je druga datoteka|Postojale su druge datoteke}} s istim sadržajem, ali {{PLURAL:$1|je obrisana|su obrisane}}.", - "api-error-empty-file": "Poslata datoteka je prazna.", "api-error-emptypage": "Stvaranje novih praznih stranica nije dozvoljeno.", - "api-error-fetchfileerror": "UnutraÅ¡nja greÅ¡ka: doÅ¡lo je do greÅ¡ke pri dobavljanju datoteke.", - "api-error-fileexists-forbidden": "Već postoji datoteka s imenom „$1“ i ne može da se zameni.", - "api-error-fileexists-shared-forbidden": "Već postoji datoteka s imenom „$1“ u zajedničkoj riznici i ne može da se zameni.", - "api-error-file-too-large": "Poslata datoteka je prevelika.", - "api-error-filename-tooshort": "Naziv datoteke je prekratak.", - "api-error-filetype-banned": "Ova vrsta datoteke je zabranjena.", - "api-error-filetype-banned-type": "$1 {{PLURAL:$4|je zabranjena vrsta datoteke|su zabranjene vrste datoteka}}. {{PLURAL:$3|Dozvoljena je|Dozvoljene su}} $2.", - "api-error-filetype-missing": "Datoteci nedostaje nastavak.", - "api-error-hookaborted": "Izmena je odbačena od kuke za proÅ¡irenja.", - "api-error-http": "UnutraÅ¡nja greÅ¡ka: ne mogu da se povežem sa serverom.", - "api-error-illegal-filename": "Naziv datoteke je zabranjen.", - "api-error-internal-error": "UnutraÅ¡nja greÅ¡ka: doÅ¡lo je do greÅ¡ke pri obrađivanju datoteke na vikiju.", - "api-error-invalid-file-key": "UnutraÅ¡nja greÅ¡ka: ne mogu da pronađem datoteku u privremenom skladiÅ¡tu.", - "api-error-missingparam": "UnutraÅ¡nja greÅ¡ka: nedostaju parametri u zahtevu.", - "api-error-missingresult": "UnutraÅ¡nja greÅ¡ka: ne mogu da utvrdim da li je umnožavanje uspelo.", - "api-error-mustbeloggedin": "Morate biti prijavljeni da biste otpremali datoteke.", - "api-error-mustbeposted": "UnutraÅ¡nja greÅ¡ka: ne koristi se ispravan HTTP metod.", - "api-error-noimageinfo": "Otpremanje je uspelo, ali server nije dao nikakav podatak o datoteci.", - "api-error-nomodule": "UnutraÅ¡nja greÅ¡ka: nije postavljen modul za otpremanje.", - "api-error-ok-but-empty": "UnutraÅ¡nja greÅ¡ka: server ne odgovara.", - "api-error-overwrite": "Zamenjivanje postojeće datoteke je zabranjeno.", - "api-error-stashfailed": "UnutraÅ¡nja greÅ¡ka: server ne može da sačuva privremenu datoteku.", "api-error-publishfailed": "UnutraÅ¡nja greÅ¡ka: server nije uspeo da objavi privremenu datoteku.", - "api-error-timeout": "Server nije odgovorio u očekivano vreme.", - "api-error-unclassified": "DoÅ¡lo je do nepoznate greÅ¡ke", - "api-error-unknown-code": "Nepoznata greÅ¡ka: „$1“", - "api-error-unknown-error": "UnutraÅ¡nja greÅ¡ka: doÅ¡lo je do greÅ¡ke pri otpremanju datoteke.", + "api-error-stashfailed": "UnutraÅ¡nja greÅ¡ka: server ne može da sačuva privremenu datoteku.", "api-error-unknown-warning": "Nepoznato upozorenje: $1", "api-error-unknownerror": "Nepoznata greÅ¡ka: „$1“.", - "api-error-uploaddisabled": "Otpremanje je onemogućeno na ovom vikiju.", - "api-error-verification-error": "Datoteka je oÅ¡tećena ili ima neispravan nastavak.", "duration-seconds": "$1 {{PLURAL:$1|sekund|sekunde|sekundi}}", "duration-minutes": "$1 {{PLURAL:$1|minut|minuta|minuta}}", "duration-hours": "$1 {{PLURAL:$1|sat|sata|sati}}", @@ -3378,7 +3355,7 @@ "expand_templates_remove_nowiki": "PoniÅ¡tava efekat <nowiki> tagova u prikazu članaka", "expand_templates_generate_xml": "Prikaži XML stablo", "expand_templates_generate_rawhtml": "Prikaži sirov HTML", - "expand_templates_preview": "Prikaz", + "expand_templates_preview": "Pretpregled", "pagelang-name": "Stranica", "pagelang-language": "Jezik", "pagelang-select-lang": "Izaberi jezik", @@ -3405,30 +3382,34 @@ "json-error-syntax": "GreÅ¡ka u sintaksi", "headline-anchor-title": "Veza do ovog odeljka", "special-characters-group-latin": "Latinica", - "special-characters-group-latinextended": "proÅ¡irena latinica", + "special-characters-group-latinextended": "ProÅ¡irena latinica", "special-characters-group-ipa": "IPA", "special-characters-group-symbols": "Simboli", - "special-characters-group-greek": "grčki", - "special-characters-group-cyrillic": "ćirilica", - "special-characters-group-arabic": "arapski", - "special-characters-group-arabicextended": "proÅ¡ireni arapski", + "special-characters-group-greek": "Grčki", + "special-characters-group-greekextended": "ProÅ¡ireni grčki", + "special-characters-group-cyrillic": "Ćirilica", + "special-characters-group-arabic": "Arapski", + "special-characters-group-arabicextended": "ProÅ¡ireni arapski", "special-characters-group-persian": "persijski", - "special-characters-group-hebrew": "jevrejsko", - "special-characters-group-bangla": "Bangla", - "special-characters-group-tamil": "tamilski", - "special-characters-group-telugu": "telugu", - "special-characters-group-sinhala": "sinhalski", + "special-characters-group-hebrew": "Hebrejski", + "special-characters-group-bangla": "Bengalski", + "special-characters-group-tamil": "Tamilski", + "special-characters-group-telugu": "Telugu", + "special-characters-group-sinhala": "Sinhalski", "special-characters-group-gujarati": "Gudžarati", - "special-characters-group-devanagari": "devanagari", - "special-characters-group-thai": "tajlandski", - "special-characters-group-lao": "laoski", - "special-characters-group-khmer": "kmerski", + "special-characters-group-devanagari": "Devanagari", + "special-characters-group-thai": "Tajlandski", + "special-characters-group-lao": "Laoski", + "special-characters-group-khmer": "Kmerski", "mw-widgets-dateinput-no-date": "Datum nije izabran", "mw-widgets-dateinput-placeholder-day": "GGGG-MM-DD", "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", "randomrootpage": "Slučajna korenska stranica", + "log-action-filter-all": "Sve", + "log-action-filter-move-move_redir": "PremeÅ¡tanje sa prepisivanjem preusmerenja", + "log-action-filter-protect-move_prot": "PremeÅ¡tanje zaÅ¡tite", "log-action-filter-upload-upload": "Novo otpremanje", "authmanager-email-label": "Imejl", "authmanager-email-help": "Imejl adresa", diff --git a/languages/i18n/sv.json b/languages/i18n/sv.json index a97279056a..1f128e8454 100644 --- a/languages/i18n/sv.json +++ b/languages/i18n/sv.json @@ -242,6 +242,7 @@ "searcharticle": "GÃ¥ till", "history": "Sidhistorik", "history_short": "Historik", + "history_small": "historik", "updatedmarker": "uppdaterad sedan senaste besöket", "printableversion": "Utskriftsvänlig version", "permalink": "Permanent länk", @@ -480,19 +481,12 @@ "login": "Logga in", "login-security": "Verifiera din identitet", "nav-login-createaccount": "Logga in / skapa konto", - "userlogin": "Logga in / skapa konto", - "userloginnocreate": "Logga in", "logout": "Logga ut", "userlogout": "Logga ut", "notloggedin": "Inte inloggad", "userlogin-noaccount": "Har du inget konto?", "userlogin-joinproject": "GÃ¥ med i {{SITENAME}}", - "nologin": "Har du inget konto? $1.", - "nologinlink": "Skapa ett konto", "createaccount": "Skapa ett konto", - "gotaccount": "Har du redan ett konto? '''$1'''.", - "gotaccountlink": "Logga in", - "userlogin-resetlink": "Har du glömt dina inloggningsuppgifter?", "userlogin-resetpassword-link": "Glömt ditt lösenord?", "userlogin-helplink2": "Hjälp med inloggning", "userlogin-loggedin": "Du är redan inloggad som {{GENDER:$1|$1}}.\nAnvänd formuläret nedan för att logga in som en annan användare.", @@ -505,7 +499,6 @@ "createaccountmail": "Använd ett tillfälligt slumpvis valt lösenord och skicka det till den angivna e-postadressen", "createaccountmail-help": "Kan användas för att skapa ett konto Ã¥t en annan person utan att kunna lösenordet.", "createacct-realname": "Riktigt namn (valfritt)", - "createaccountreason": "Orsak:", "createacct-reason": "Orsak", "createacct-reason-ph": "Varför du skapar ett annat konto", "createacct-reason-help": "Meddelande som visas i loggen för skapade konton", @@ -704,8 +697,8 @@ "selfredirect": "<strong>Varning:</strong> Du omdirigerar denna sida till sig själv.\nDu kanske angav fel mÃ¥l för din omdirigering, eller redigerar fel sida.\nOm du klickar pÃ¥ \"{{int:savearticle}}\" igen kommer omdirigeringen att skapas trots detta.", "missingcommenttext": "Var god och skriv in en kommentar nedan.", "missingcommentheader": "<strong>PÃ¥minnelse:</strong> Du har inte skrivit nÃ¥got ämne för den här kommentaren.\nOm du trycker pÃ¥ \"{{int:savearticle}}\" igen kommer din redigering sparas utan rubrik.", - "summary-preview": "Förhandsgranskning av sammanfattning:", - "subject-preview": "Rubrikförhandsgranskning:", + "summary-preview": "Förhandsgranskning av redigeringssammanfattning:", + "subject-preview": "Förhandsgranskning av ämne:", "previewerrortext": "Ett fel uppstod när dina ändringar skulle förhandsgranskas.", "blockedtitle": "Användaren är blockerad", "blockedtext": "'''Din IP-adress eller ditt användarnamn är blockerat.'''\n\nBlockeringen utfördes av $1 med motiveringen: ''$2''.\n\n* Blockeringen startade: $8\n* Blockeringen gäller till: $6.\n* Blockeringen var avsedd för: $7.\n\nDu kan kontakta $1 eller nÃ¥gon annan av [[{{MediaWiki:Grouppage-sysop}}|administratörerna]] för att diskutera blockeringen.\nOm du är inloggad och har uppgivit en e-postadress i dina [[Special:Preferences|inställningar]] sÃ¥ kan du använda funktionen 'Skicka e-post till den här användaren', sÃ¥vida du inte blivit blockerad frÃ¥n funktionen.\n\nDin IP-adress är $3 och blockerings-ID är #$5.\nVänligen ange informationen ovan i alla förfrÃ¥gningar som du gör i ärendet.", @@ -1013,6 +1006,7 @@ "search-interwiki-caption": "Systerprojekt", "search-interwiki-default": "Resultat frÃ¥n $1:", "search-interwiki-more": "(mer)", + "search-interwiki-more-results": "fler resultat", "search-relatedarticle": "Relaterad", "searchrelated": "relaterad", "searchall": "alla", @@ -1102,6 +1096,7 @@ "youremail": "E-post:", "username": "{{GENDER:$1|Användarnamn}}:", "prefs-memberingroups": "{{GENDER:$2|Medlem}} av {{PLURAL:$1|gruppen|grupperna}}:", + "group-membership-link-with-expiry": "$1 (tills $2)", "prefs-registration": "Registreringstid:", "yourrealname": "Riktigt namn:", "yourlanguage": "SprÃ¥k:", @@ -1146,17 +1141,26 @@ "editusergroup": "Läs in användargrupper", "editinguser": "Ändrar rättigheter för {{GENDER:$1|användaren}} <strong>[[User:$1|$1]]</strong> $2", "viewinguserrights": "Visar rättigheter för {{GENDER:$1|användaren}} <strong>[[User:$1|$1]]</strong> $2", - "userrights-editusergroup": "Ändra användargrupper", - "userrights-viewusergroup": "Visa användargrupper", + "userrights-editusergroup": "Ändra {{GENDER:$1|användargrupper}}", + "userrights-viewusergroup": "Visa {{GENDER:$1|användargrupper}}", "saveusergroups": "Spara {{GENDER:$1|användargrupper}}", "userrights-groupsmember": "Medlem i:", "userrights-groupsmember-auto": "Implicit medlem av:", - "userrights-groups-help": "Du kan ändra vilka grupper denna användare är medlem i.\n* En ikryssad ruta betyder användaren är medlem i den gruppen.\n* En okryssad ruta betyder att användaren inte är medlem i den gruppen.\n* En asterisk (*) markerar att du inte kan ta bort gruppen när du har lagt till den, eller vice versa.", + "userrights-groups-help": "Du kan ändra vilka grupper denna användare är medlem i.\n* En ikryssad ruta betyder användaren är medlem i den gruppen.\n* En okryssad ruta betyder att användaren inte är medlem i den gruppen.\n* En asterisk (*) betyder att du inte kan ta bort gruppen när du har lagt till den, eller vice versa.\n* Ett nummertecken (#) betyder att du endast kan flytta tillbaka förfallotiden för denna grupp; du kan inte flytta fram den.", "userrights-reason": "Anledning:", "userrights-no-interwiki": "Du har inte behörighet att ändra användarrättigheter pÃ¥ andra wikis.", "userrights-nodatabase": "Databasen $1 finns inte eller sÃ¥ är den inte lokal.", "userrights-changeable-col": "Grupper du kan ändra", "userrights-unchangeable-col": "Grupper du inte kan ändra", + "userrights-expiry-current": "Förfaller $1", + "userrights-expiry-none": "Förfaller inte", + "userrights-expiry": "Förfaller:", + "userrights-expiry-existing": "Befintlig förfallotid: $3, $2", + "userrights-expiry-othertime": "Annan tid:", + "userrights-expiry-options": "1 dag:1 dag,1 vecka:1 vecka,1 mÃ¥nad:1 mÃ¥nad,3 mÃ¥nader:3 mÃ¥nader,6 mÃ¥nader:6 mÃ¥nader,1 Ã¥r:1 Ã¥r", + "userrights-invalid-expiry": "Förfallotiden för gruppen \"$1\" är ogiltig.", + "userrights-expiry-in-past": "Förfallotiden för gruppen \"$1\" är i det förflutna.", + "userrights-cannot-shorten-expiry": "Du kan inte flytta fram förfallotiden för gruppen \"$1\". Endast användare med behörighet att lägga till och ta bort denna grupp kan flytta fram förfallodatum.", "userrights-conflict": "Konflikt vid ändringar av användarrättigheter! Var god granska och bekräfta dina ändringar.", "group": "Grupp:", "group-user": "Användare", @@ -1358,22 +1362,52 @@ "recentchanges-legend-plusminus": "(''±123'')", "recentchanges-submit": "Visa", "rcfilters-activefilters": "Aktiva filter", + "rcfilters-restore-default-filters": "Återställ standardfilter", + "rcfilters-clear-all-filters": "Rensa alla filter", "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-feedbacklink": "Ge Ã¥terkoppling pÃ¥ nya (beta)filter", + "rcfilters-highlightbutton-title": "Markera resultat", + "rcfilters-highlightmenu-title": "Välj en färg", "rcfilters-filterlist-noresults": "Inga filter hittades", + "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-filtergroup-authorship": "Redigera författarskap", "rcfilters-filter-editsbyself-label": "Dina egna redigeringar", "rcfilters-filter-editsbyself-description": "Redigeringar av dig.", "rcfilters-filter-editsbyother-label": "Redigeringar av andra", - "rcfilters-filter-editsbyother-description": "Redigeringar som har skapats av andra användare (inte dig.)", - "rcfilters-filtergroup-userExpLevel": "ErfarenhetsnivÃ¥ för användare", + "rcfilters-filter-editsbyother-description": "Redigeringar som har skapats av andra användare (inte dig).", + "rcfilters-filtergroup-userExpLevel": "ErfarenhetsnivÃ¥ (endast för registrerade användare)", "rcfilters-filter-userExpLevel-newcomer-label": "Nykomlingar", - "rcfilters-filter-userExpLevel-newcomer-description": "Väldigt nya redigerare: färre än 10 redigeringar och 4 dagars aktivitet.", + "rcfilters-filter-userExpLevel-newcomer-description": "Färre än 10 redigeringar och 4 dagars aktivitet.", "rcfilters-filter-userExpLevel-learner-label": "Nybörjare", "rcfilters-filter-userExpLevel-learner-description": "Fler dagars aktivitet och redigeringar än \"Nybörjare\" men färre än \"Erfarna användare\".", "rcfilters-filter-userExpLevel-experienced-label": "Erfarna användare", "rcfilters-filter-userExpLevel-experienced-description": "Fler än 30 dagars aktivitet och 500 redigeringar.", + "rcfilters-filtergroup-automated": "Automatiserade bidrag", + "rcfilters-filter-bots-label": "Bot", + "rcfilters-filter-bots-description": "Redigeringar gjorda av automatiserade verktyg.", + "rcfilters-filter-humans-label": "Människa (inte bot)", + "rcfilters-filter-humans-description": "Redigeringar gjorda av mänskliga redigerare.", + "rcfilters-filtergroup-significance": "Betydelse", + "rcfilters-filter-minor-label": "Mindre redigeringar", + "rcfilters-filter-minor-description": "Redigeringar som är märkta som mindre.", + "rcfilters-filter-major-label": "Icke-mindre redigeringar", + "rcfilters-filter-major-description": "Redigeringar som inte är märkta som mindre.", + "rcfilters-filtergroup-changetype": "Typ av ändring", + "rcfilters-filter-pageedits-label": "Sidredigeringar", + "rcfilters-filter-pageedits-description": "Redigeringar till wikiinnehÃ¥ll, diskussioner, kategoribeskrivningar...", + "rcfilters-filter-newpages-label": "Sidskapande", + "rcfilters-filter-newpages-description": "Redigeringar som skapade nya sidor.", + "rcfilters-filter-categorization-label": "Kategoriändringar", + "rcfilters-filter-categorization-description": "Poster av sidor som läggs till eller tas bort frÃ¥n kategorier.", + "rcfilters-filter-logactions-label": "Loggade Ã¥tgärder", + "rcfilters-filter-logactions-description": "Administrativa Ã¥tgärder, kontoskapande, sidraderingar, uppladdningar....", "rcnotefrom": "Nedan visas {{PLURAL:$5|ändringen|ändringar}} sedan <strong>$3, $4</strong> (upp till <strong>$1</strong> ändringar visas).", "rclistfrom": "Visa nya ändringar frÃ¥n och med $2 $3", "rcshowhideminor": "$1 mindre ändringar", @@ -1507,7 +1541,7 @@ "uploaded-setting-handler-svg": "SVG som anger \"handler\"-attributet med remote/data/skript är blockerat. Hittade <code>$1=\"$2\"</code> i den uppladdade SVG-filen.", "uploaded-remote-url-svg": "SVG som anger style-attributet med en fjärr-URL är blockerat. Hittade <code>$1=\"$2\"</code> i den uppladdade SVG-filen.", "uploaded-image-filter-svg": "Hittade bildfilter med URL: <code><$1 $2=\"$3\"></code> i den uppladdade SVG-filen.", - "uploadscriptednamespace": "Denna SVG-fil innehÃ¥ller den ogiltiga namnrymden \"$1\".", + "uploadscriptednamespace": "Denna SVG-fil innehÃ¥ller den ogiltiga namnrymden \"<nowiki>$1</nowiki>\".", "uploadinvalidxml": "XML-koden i den uppladdade filen kunde inte tolkas.", "uploadvirus": "Filen innehÃ¥ller virus! Detaljer: $1", "uploadjava": "Filen är en ZIP-fil som innehÃ¥ller en Java .class-fil.\nUppladdning av Java filer tillÃ¥ts inte eftersom de kan orsaka att säkerhetsbegränsningar kan kringgÃ¥s.", @@ -1885,8 +1919,10 @@ "apisandbox-sending-request": "Skickar API-begäran...", "apisandbox-loading-results": "Hämtar API-resultat...", "apisandbox-results-error": "Ett fel uppstod när API-förfrÃ¥gans svar lästes in: $1.", - "apisandbox-request-params-json": "JSON-parametrar:", + "apisandbox-request-selectformat-label": "Visa begärd data som:", + "apisandbox-request-format-url-label": "URL-frÃ¥gesträng", "apisandbox-request-url-label": "Begärd URL:", + "apisandbox-request-json-label": "Begär JSON:", "apisandbox-request-time": "Tid för begäran: {{PLURAL:$1|$1 ms}}", "apisandbox-results-fixtoken": "Korrigera nyckeln och skicka igen", "apisandbox-results-fixtoken-fail": "Misslyckades att hämta nyckeln \"$1\".", @@ -2028,7 +2064,7 @@ "emailccsubject": "Kopia av ditt meddelande till $1: $2", "emailsent": "E-post har nu skickats", "emailsenttext": "Ditt e-postmeddelande har skickats", - "emailuserfooter": "Detta e-postmeddelande {{GENDER:$1|skickades}} av $1 till {{GENDER:$2|$2}} med funktionen \"{{int:emailuser}}\" pÃ¥ {{SITENAME}}. {{GENDER:$2|Ditt}} e-postmeddelande kommer att skickas direkt till {{GENDER:$1|den ursprungliga avsändaren}}, vilket kommer avslöja {{GENDER:$2|din}} e-postadress för {{GENDER:$1|honom|henne|hen}}.", + "emailuserfooter": "Detta e-postmeddelande {{GENDER:$1|skickades}} av $1 till {{GENDER:$2|$2}} med funktionen \"{{int:emailuser}}\" pÃ¥ {{SITENAME}}. Om {{GENDER:$2|du}} svarar pÃ¥ detta e-postmeddelande kommer {{GENDER:$2|ditt}} e-postmeddelande att skickas direkt till {{GENDER:$1|den ursprungliga avsändaren}}, vilket kommer avslöja {{GENDER:$2|din}} e-postadress för {{GENDER:$1|honom|henne|hen}}.", "usermessage-summary": "Lämnar systemmeddelande.", "usermessage-editor": "Systemmeddelare", "watchlist": "Bevakningslista", @@ -2126,7 +2162,7 @@ "editcomment": "Redigeringskommentaren var: <em>$1</em>.", "revertpage": "Återställde redigeringar av [[Special:Contributions/$2|$2]] ([[User talk:$2|användardiskussion]]) till senaste versionen av [[User:$1|$1]]", "revertpage-nouser": "Återställde redigeringar av en dold användare till den senaste versionen av {{GENDER:$1|[[User:$1|$1]]}}", - "rollback-success": "Återställde ändringar av $1;\nändrade tillbaka till senaste version av $2.", + "rollback-success": "Återställde ändringar av {{GENDER:$3|$1}};\nändrade tillbaka till senaste versionen av {{GENDER:$4|$2}}.", "rollback-success-notify": "Återställde ändringar av $1;\nändrade tillbaka till senaste sidversion av $2. [$3 Visa ändringar]", "sessionfailure-title": "Sessionsfel", "sessionfailure": "NÃ¥got med din session som inloggad är pÃ¥ tok. Din begärda Ã¥tgärd har avbrutits, för att förhindra att nÃ¥gon kapar din session. Klicka pÃ¥ \"Tillbaka\" i din webbläsare och ladda om den sida du kom ifrÃ¥n. Försök sedan igen.", @@ -3558,7 +3594,7 @@ "logentry-tag-update-revision": "$1 {{GENDER:$2|uppdaterade}} märken pÃ¥ sidversionen $4 för sidan $3 ({{PLURAL:$7|lade till}} $6; {{PLURAL:$9|tog bort}} $8)", "logentry-tag-update-logentry": "$1 {{GENDER:$2|uppdaterade}} märken pÃ¥ loggposten $5 för sidan $3 ({{PLURAL:$7|lade till}} $6; {{PLURAL:$9|tog bort}} $8)", "rightsnone": "(inga)", - "revdelete-summary": "sammanfattning", + "rightslogentry-temporary-group": "$1 (temporärt, tills $2)", "feedback-adding": "Ge feedback till sida...", "feedback-back": "Tillbaka", "feedback-bugcheck": "Jättebra! Bara kontrollera att det inte är en av de [$1 kända buggarna].", @@ -3583,56 +3619,12 @@ "feedback-useragent": "Användaragent:", "searchsuggest-search": "Sök pÃ¥ {{SITENAME}}", "searchsuggest-containing": "innehÃ¥ller...", - "api-error-autoblocked": "Din IP-adress har blockerats automatiskt eftersom den har använts av en blockerad användare.", - "api-error-badaccess-groups": "Du fÃ¥r inte ladda upp filer till denna wiki.", "api-error-badtoken": "Internt fel: felaktig nyckel.", - "api-error-blocked": "Du har blockerats frÃ¥n att redigera.", - "api-error-copyuploaddisabled": "Uppladdning via URL är inaktiverat pÃ¥ den här servern.", - "api-error-duplicate": "Det finns redan {{PLURAL:$1|en annan fil|andra filer}} pÃ¥ webbplatsen med samma innehÃ¥ll.", - "api-error-duplicate-archive": "Det fanns redan {{PLURAL:$1|en annan fil|nÃ¥gra andra filer}} pÃ¥ webbplatsen med samma innehÃ¥ll, men {{PLURAL:$1|den har|de har}} raderats.", - "api-error-empty-file": "Filen du skickade var tom.", "api-error-emptypage": "Det är inte tillÃ¥tet att skapa nya, tomma sidor.", - "api-error-fetchfileerror": "Internt fel: nÃ¥got gick fel vid hämtningen av filen.", - "api-error-fileexists-forbidden": "En fil med namnet \"$1\" finns redan och kan inte skrivas över.", - "api-error-fileexists-shared-forbidden": "En fil med namnet \"$1\" finns redan i det delade filarkivet och kan inte skrivas över.", - "api-error-file-too-large": "Filen du skickade var för stor.", - "api-error-filename-tooshort": "Filnamnet är för kort.", - "api-error-filetype-banned": "Denna typ av fil är förbjuden.", - "api-error-filetype-banned-type": "$1 är inte {{PLURAL:$4|en tillÃ¥ten filtyp|tillÃ¥tna filtyper}}. {{PLURAL:$3|TillÃ¥ten filtyp|TillÃ¥tna filtyper}} är $2.", - "api-error-filetype-missing": "Filnamnet saknar en filändelse.", - "api-error-hookaborted": "Ändringen du försökte göra avbröts av en extension hook.", - "api-error-http": "Internt fel: Det gick inte att ansluta till servern.", - "api-error-illegal-filename": "Filnamnet är inte tillÃ¥tet.", - "api-error-internal-error": "Internt fel: NÃ¥got gick fel med bearbetningen av din uppladdning pÃ¥ wikin.", - "api-error-invalid-file-key": "Internt fel: filen hittades inte i tillfällig lagring.", - "api-error-missingparam": "Internt fel: Det saknas parametrar i begäran.", - "api-error-missingresult": "Internt fel: Kunde inte avgöra om kopieringen lyckades.", - "api-error-mustbeloggedin": "Du mÃ¥ste vara inloggad för att kunna ladda upp filer.", - "api-error-mustbeposted": "Det finns en bugg i detta program, det använder inte rätt HTTP-metod.", - "api-error-noimageinfo": "Uppladdningen lyckades, men servern gav oss inte nÃ¥gon information om filen.", - "api-error-nomodule": "Internt fel: Ingen uppladdningsmodul uppsatt.", - "api-error-ok-but-empty": "Internt fel: Inget svar frÃ¥n servern.", - "api-error-overwrite": "Det är inte tillÃ¥tet att skriva över en befintlig fil.", - "api-error-ratelimited": "Du försöker ladda upp fler filer inom en kortare tidsrymd än denna wiki tillÃ¥ter.\nFörsök igen om nÃ¥gra minuter.", - "api-error-stashfailed": "Internt fel: servern kunde inte lagra temporär fil.", "api-error-publishfailed": "Internt fel: Servern kunde inte publicera temporär fil.", - "api-error-stasherror": "Ett fel uppstod under uppladdningen av filen till mellanlagringsfilen.", - "api-error-stashedfilenotfound": "Den temporära filen kunde inte hittas när den skulle laddas upp frÃ¥n den temporära lagringsytan.", - "api-error-stashpathinvalid": "Den sökväg där den temporära filen skulle ha hittats var ogiltig.", - "api-error-stashfilestorage": "Ett fel uppstod under lagringen av filen i den temporära lagringsytan.", - "api-error-stashzerolength": "Servern kunde inte lagra filen temporärt eftersom den har noll längd.", - "api-error-stashnotloggedin": "Du mÃ¥ste vara inloggad för att spara filer till den temporära ytan för uppladdningar.", - "api-error-stashwrongowner": "Filen du försöker komma Ã¥t i det temporära lagringsutrymmet tillhör inte dig.", - "api-error-stashnosuchfilekey": "Filnyckeln som du försökte komma Ã¥t i den temporära lagringsytan existerar inte.", - "api-error-timeout": "Servern svarade inte inom förväntad tid.", - "api-error-unclassified": "Ett okänt fel uppstod.", - "api-error-unknown-code": "Okänt fel: \"$1\".", - "api-error-unknown-error": "Internt fel: nÃ¥got gick fel när vi försökte ladda upp din fil.", + "api-error-stashfailed": "Internt fel: servern kunde inte lagra temporär fil.", "api-error-unknown-warning": "Okänd varning: \"$1\".", "api-error-unknownerror": "Okänt fel: \"$1\".", - "api-error-uploaddisabled": "Uppladdning är inaktiverad pÃ¥ denna wiki.", - "api-error-verification-error": "Denna fil kan vara skadad eller har fel filändelse.", - "api-error-was-deleted": "En fil med detta namn har tidigare laddats upp och sedan raderats.", "duration-seconds": "$1 {{PLURAL:$1|sekund|sekunder}}", "duration-minutes": "$1 {{PLURAL:$1|minut|minuter}}", "duration-hours": "$1 {{PLURAL:$1|timme|timmar}}", @@ -3754,6 +3746,7 @@ "mw-widgets-titleinput-description-new-page": "sidan existerar inte ännu", "mw-widgets-titleinput-description-redirect": "omdirigerar till $1", "mw-widgets-categoryselector-add-category-placeholder": "Lägg till en kategori...", + "mw-widgets-usersmultiselect-placeholder": "Lägg till fler...", "sessionmanager-tie": "Kan inte kombinera flera begäransautentiseringstyper: $1.", "sessionprovider-generic": "$1-sessioner", "sessionprovider-mediawiki-session-cookiesessionprovider": "cookiebaserade sessioner", @@ -3885,7 +3878,7 @@ "usercssispublic": "Observera: CSS-undersidor bör inte innehÃ¥lla konfidentiella uppgifter eftersom de kan ses av andra användare.", "restrictionsfield-badip": "Ogiltig IP-adress eller intervall: $1", "restrictionsfield-label": "TillÃ¥tna IP-intervall:", - "restrictionsfield-help": "En IP-adress eller CIDR-intervall per rad. För att aktivera allting, använd<br><code>0.0.0.0/0</code><br><code>::/0</code>", + "restrictionsfield-help": "En IP-adress eller CIDR-intervall per rad. För att aktivera allting, använd<br /><code>0.0.0.0/0</code><br /><code>::/0</code>", "revid": "sidversion $1", "pageid": "sid-ID $1" } diff --git a/languages/i18n/sw.json b/languages/i18n/sw.json index 44b15e871d..c4148dfe5a 100644 --- a/languages/i18n/sw.json +++ b/languages/i18n/sw.json @@ -517,8 +517,6 @@ "passwordreset-emaildisabled": "Vipengee vya barua pepe vimelemazwa katika wiki hii.", "passwordreset-username": "Jina la mtumiaji:", "passwordreset-domain": "Miliki", - "passwordreset-capture": "Ioneshe barua-pepe itakayotumwa?", - "passwordreset-capture-help": "Iwapo utatia alama kisanduku hiki, barua-pepe (pamoja na nenosiri la muda) litaoneshwa kwako na vilevile litatumwa kwa mtumiaji.", "passwordreset-email": "Anwani ya barua pepe:", "passwordreset-emailtitle": "Maelezo ya akaunti kwenye {{SITENAME}}", "passwordreset-emailtext-ip": "Kuna mtu (huenda ikawa ni wewe, kutoka anwani ya IP $1) aliyeomba neno la siri la akaunti yako liwekwe upya katika {{SITENAME}} ($4). {{PLURAL:$3|Akaunti inayofuata imeunganishwa|Akaunti zinazofuata zimeunganishwa}} na anwani ya barua pepe hii:\n\n$2\n\n{{PLURAL:$3|Neno la siri hili litakwisha|Maneno ya siri haya yatakwisha}} baada ya siku {{PLURAL:$5|$5}}.\nUnafaa kuingia sasa na uchague neno jipya la siri. Kama mtu mwingine ameomba hili, au ikiwa umekumbuka neno lako la siri na hutaki kulibadilisha tena, basi usijali ujumbe huu, na uendelee kutumia neno la siri lako la zamani.", @@ -887,8 +885,6 @@ "saveprefs": "Hifadhi", "restoreprefs": "Rudisha mapendekezo ya msingi(katika sehemu zote)", "prefs-editing": "Kuhariri", - "rows": "Mistari:", - "columns": "Safu:", "searchresultshead": "Kutafuta", "stub-threshold": "Kiwango cha juu cha kuonyesha kiungo kama <a href=\"#\" class=\"stub\">kiungo kinachoelekea mbegu</a> (baiti):", "stub-threshold-disabled": "Imelemazwa", @@ -974,12 +970,9 @@ "userrights-reason": "Sababu:", "userrights-no-interwiki": "Huna ruhusa ya kuhariri haki za mtumiaji kwenye wiki zingine.", "userrights-nodatabase": "Hakuna hifadhidata inayoitwa $1 au haimo katiko jumuia hii ya wiki.", - "userrights-nologin": "Lazima [[Special:UserLogin|uingie ndani]] ya akaunti ya mkabidhi ili kupanga haki za mtumiaji.", - "userrights-notallowed": "Hauna ruhusa ya kupea au kunyimana haki za mtumiaji.", "userrights-changeable-col": "Makundi unayoweza kuyabadilisha", "userrights-unchangeable-col": "Makundi usiyoweza kuyabadilisha", "userrights-conflict": "Mgongano wa haki za mtumiaji! Tafadhali pitia na uthibitishe mabadiliko yako.", - "userrights-removed-self": "Umefanikiwa kundoa haki zako mwenyewe. Kwa hivo, hauna uwezo wa kupata ukurasa huu.", "group": "Kundi:", "group-user": "Watumiaji", "group-autoconfirmed": "Watumiaji waliothibitishwa na tarakilishi", @@ -1067,7 +1060,6 @@ "right-siteadmin": "Kufunga na kufungua hifadhidata", "right-override-export-depth": "Kuuza nje kurasa ikiwa ni pamoja na kurasa zilizounganishwa hadi kina cha 5", "right-sendemail": "Kutuma barua-pepe kwa watumiaji wengine", - "right-passwordreset": "Onesha barua pepe zinazoweka neno la siri upya", "right-managechangetags": "Unda na ufute [[Special:Tags|tags]] kutoka kwa hifadhidata", "right-applychangetags": "Weka [[Special:Tags|tags]] pamoja na mabadiliko yangu", "newuserlogpage": "Kumbukumbu za kuanzisha akaunti za watumiaji", @@ -1239,7 +1231,7 @@ "uploaddisabledtext": "Upakiaji wa mafaili umelemazwa.", "php-uploaddisabledtext": "Upakiaji wa mafaili umelemazwa katika PHP.\nTafadhali utazame kipimo cha file_uploads.", "uploadscripted": "Faili hili lina HTML au misimbo ambazo labda itaeleweka vibaya na kivinjari.", - "uploadscriptednamespace": "Faili ya SVG iko na jina batili \"$1\".", + "uploadscriptednamespace": "Faili ya SVG iko na jina batili \"<nowiki>$1</nowiki>\".", "uploadinvalidxml": "XML katika faili iliyopakiwa haikuchanganuliwa.", "uploadvirus": "Faili lina kirusi!\nMaelezo mengine: $1", "uploadjava": "Faili ZIP hili lina faili Java .class humo ndani.\nHairuhusiki kupakia mafaili ya Java, kwa sababu yanawezesha kusababisha vizuio vya usalama kuzungukwa.", @@ -2455,16 +2447,9 @@ "feedback-thanks-title": "Asante!", "searchsuggest-search": "Kutafuta", "searchsuggest-containing": "ya maneno...", - "api-error-empty-file": "Faili ulilowasilisha ni tupu.", "api-error-emptypage": "Kutengeneza mpya, kurasa tupu hazikubaliwi", - "api-error-filename-tooshort": "Jina la faili ni fupi mno.", - "api-error-filetype-banned": "Aina hili la faili hairuhusiwi.", - "api-error-illegal-filename": "Jina hilo la faili haliruhusiwi.", - "api-error-unclassified": "Ilitokea hitilafu isiyojulikana.", - "api-error-unknown-code": "Hitilafu isiyojulikana: \"$1\".", "api-error-unknown-warning": "Ilani isiojulikana: \"$1\".", "api-error-unknownerror": "Hitlafu isiyojulikana: \"$1\".", - "api-error-uploaddisabled": "Kupakia kumelemazwa katika wiki hii.", "duration-seconds": "{{PLURAL:$1|sekunde}} $1", "duration-minutes": "{{PLURAL:$1|dakika}} $1", "duration-hours": "{{PLURAL:$1|saa|masaa}} $1", diff --git a/languages/i18n/ta.json b/languages/i18n/ta.json index 8d17d4d85b..1c99b9eb0d 100644 --- a/languages/i18n/ta.json +++ b/languages/i18n/ta.json @@ -69,6 +69,7 @@ "tog-watchdefault": "நான் தொகுக்கும் பக்கங்கள் மற்றும் கோப்புகளை என் கவனிப்புப் பட்டியலில் சேர்", "tog-watchmoves": "நான் நகர்த்தும் பக்கங்கள் மற்றும் கோப்புகளை என் கவனிப்புப் பட்டியலில் சேர்.", "tog-watchdeletion": "நான் நீக்கும் பக்கங்கள் மற்றும் கோப்புகளை என் கவனிப்புப் பட்டியலில் சேர்", + "tog-watchuploads": "நான் பதிவேற்றும் புதிய கோப்புகளை எனது கவனிப்புப் பட்டியலில் சேர்க்கவும்", "tog-watchrollback": "நான் பின்மாற்றம் செய்த எனது கவனிப்பு பட்டியலில் பக்கங்களை சேர்", "tog-minordefault": "இயல்பிருப்பாக அனைத்து தொகுப்புகளையும் சிறியது எனக் குறித்துக்கொள்.", "tog-previewontop": "தொகுப்புப் பெட்டிக்கு முன்பு முன்தோற்றத்தைக் காட்டு", @@ -93,7 +94,7 @@ "tog-ccmeonemails": "ஏனைய பயனர்களுக்கு நான் அனுப்பும் மின்னஞ்சல்களின் நகலொன்றை எனக்கு அனுப்பு", "tog-diffonly": "மாற்றங்களை ஒப்பிடும் போது அதன் கீழ் பக்க உள்ளடக்கத்தைக் காட்டாதே", "tog-showhiddencats": "மறைக்கப்பட்ட பகுப்புகளைக் காட்டு", - "tog-norollbackdiff": "முன்பிருந்த நிலைக்குக் கொண்டுவந்தபின் வித்தியாசங்களை விட்டுவிடவும் (காட்டத்தேவையில்லை).", + "tog-norollbackdiff": "முன்பிருந்த நிலைக்குக் கொண்டுவந்தபின் வித்தியாசங்களை காட்டத்தேவையில்லை", "tog-useeditwarning": "தொகுத்துக் கொண்டிருக்கும் பக்கத்தை சேமிக்காமல் வெளியேறினால் எனக்கு எச்சரிக்கை செய்", "tog-prefershttps": "புகுபதிகை செய்யும்போது எப்போதுமே பாதுகாப்பான இணைப்பை பயன்படுத்தவும்", "underline-always": "எப்பொழுதும்", @@ -217,6 +218,7 @@ "searcharticle": "செல்", "history": "பக்க வரலாறு", "history_short": "வரலாறு", + "history_small": "வரலாறு", "updatedmarker": "எனது கடைசி வருகைக்குப் பின் இற்றைப்படுத்தப்பட்டது", "printableversion": "அச்சுக்குகந்த பதிப்பு", "permalink": "நிலையான இணைப்பு", @@ -448,6 +450,7 @@ "password-change-forbidden": "நீங்கள் விக்கிகளில் கடவுச் சொற்களை மாற்ற முடியாது", "externaldberror": "வெளி உறுதிப்படுத்தலில் ஏற்பட்ட தவறு காரணமாக உங்கள் வெளி கணக்கை இற்றைப்படுத்த முடியாது.", "login": "புகுபதிகை", + "login-security": "தங்கள் அடையாளத்தை உறுதிப்படுத்தவும்", "nav-login-createaccount": "புகுபதிகை/பயனர் கணக்கு தொடக்கம்", "userlogin": "புகுபதிகை/பயனர் கணக்கு தொடக்கம்", "userloginnocreate": "புகுபதிகை", @@ -477,6 +480,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|பக்கம்|பக்கங்கள்}}", @@ -534,6 +539,7 @@ "createacct-another-realname-tip": "உண்மையான பெயர் கட்டாயமற்றது.\nநீங்கள் இதை கொடுத்தால் உங்கள் ஆக்கங்களுக்கான உரிமையளிப்புகளின் போது இது பயன்படும்.", "pt-login": "உள்நுழை", "pt-login-button": "புகுபதிகை", + "pt-login-continue-button": "உள்நுழைவை தொடரவும்", "pt-createaccount": "புதிய கணக்கை உருவாக்கவும்", "pt-userlogout": "விடுபதிகை", "php-mail-error-unknown": "PHP 's mail() செயல்பாட்டில் அறியப்படாத பிழை.", @@ -546,7 +552,7 @@ "newpassword": "புதிய கடவுச்சொல்:", "retypenew": "புதிய கடவுச்சொல்லை மீண்டும் தட்டச்சிடு", "resetpass_submit": "கடவுச்சொல்லை பதிவுசெய்து புகுபதிகை செய்", - "changepassword-success": "உங்களது கடவுச்சொல் வெற்றிகரமாக மாற்றப்பட்டுள்ளது!", + "changepassword-success": "உங்கள் கடவுச்சொல் மாற்றப்பட்டது!", "changepassword-throttled": "தாங்கள் மிக அண்மையில் பலமுறை புகுபதிகை செய்ய முயற்சி செய்துள்ளீர்கள்.\nமீண்டும் முயற்சிக்கும் முன் $1 காத்திருக்கவும்.", "botpasswords": "தானியங்கி கடவுச்சொற்கள்", "botpasswords-disabled": "தானியங்கி கடவுச்சொற்கள் பயன்பாட்டில் இல்லை.", @@ -567,17 +573,18 @@ "botpasswords-insert-failed": "\"$1\" என்ற தானியங்கி பெயரை இணைக்க முடியவில்லை. ஏற்கனவே இருக்குமோ?", "botpasswords-update-failed": "\"$1\" என்ற தானியங்கி பெயரை புதிப்பிக்க முடியவில்லை. அது நீக்கப்பட்டதா?", "botpasswords-created-title": "தானியங்கி கடவுச்சொல் உருவாக்கப்பட்டது.", - "botpasswords-created-body": "\"$1\"-க்கான தானியங்கி கடவுச்சொல் முழுமையாக உருவாக்கப்பட்டது.", + "botpasswords-created-body": "\"$2\" பயனரின் \"$1\"-க்கான தானியங்கி கடவுச்சொல் முழுமையாக உருவாக்கப்பட்டது.", "botpasswords-updated-title": "தானியங்கி கடவுச்சொல் புதுப்பிக்கப்பட்டது", - "botpasswords-updated-body": "\"$1\" தானியங்கி கடவுச்சொல் முழுமையாக புதிப்பிக்கப்பட்டது.", + "botpasswords-updated-body": "\"$2\" பயனரின் \"$1\" தானியங்கி கடவுச்சொல் முழுமையாக புதிப்பிக்கப்பட்டது.", "botpasswords-deleted-title": "தானியங்கி கடவுச்சொல் நீக்கப்பட்டது", - "botpasswords-deleted-body": "\"$1\"-க்கான தானியங்கி கடவுச்சொல் நீக்கப்பட்டது.", + "botpasswords-deleted-body": "\"$2\" பயனரின் \"$1\"-க்கான தானியங்கி கடவுச்சொல் நீக்கப்பட்டது.", "botpasswords-newpassword": "<strong>$1</strong>-இற்கு புகுபதிகை செய்வதற்கான புதிய கடவுச்சொல் <strong>$2</strong> ஆகும். <em>தயவு செய்து வருங்கால மேற்கோளுக்கு இதனை பதிக.</em><br>(பழைய முகவர்கள் பயனாளர் பெயரை உள்ளீட்டிற்கு பயன்படுத்தலாம், மேலும் நீங்கள் <strong>$3</strong> ஐ பயனாளர் பெயராகவும் <strong>$4</strong> ஐ கடவுச்சொல்லாகவும் பயன்படுத்தலாம்.)", "botpasswords-no-provider": "தானியங்கிகடவுச்சொல்அமர்வுவழங்குநர் பயன்பாட்டில் இல்லை.", "botpasswords-restriction-failed": "தானியங்கி கடவுச்சொல் புகுபதிகை செய்ய தடுக்கிறது.", "botpasswords-invalid-name": "தானியங்கி கடவுச்சொல் பிரிப்பானை (\"$1\") குறிக்கப்பட்ட பயனர் பெயர் கொண்டிருக்கவில்லை.", "botpasswords-not-exist": "\"$1\" என்ற பயனர் \"$2\" என்ற தானியங்கி கடவுச்சொல்லை கொண்டிருக்கவில்லை.", "resetpass_forbidden": "கடவுச்சொற்கள் மாற்றப்பட முடியாது", + "resetpass_forbidden-reason": "கடவுச்சொற்கள் மாற்றப்பட முடியாது:$1", "resetpass-no-info": "இப்பக்கத்தை நேரடியாக அணுகுவதற்கு நீங்கள் புகுபதிகை செய்திருக்கவேண்டும்.", "resetpass-submit-loggedin": "கடவுச்சொல்லை மாற்று", "resetpass-submit-cancel": "விட்டுவிடு", @@ -603,6 +610,8 @@ "passwordreset-emailelement": "பயனர் பெயர்: \n$1\n\nதற்காலிகக் கடவுச்சொல்: \n$2", "passwordreset-emailsentemail": "இது உங்கள் கணக்கிற்கான பதிவு செய்யப்பட்ட மின்னஞ்சலாயின், கடவுச்சொல் மீட்டமைக்கும் மின்னஞ்சல் அனுப்பப்படும்", "passwordreset-emailsentusername": "இது உங்கள் கணக்கிற்கான பதிவு செய்யப்பட்ட மின்னஞ்சலாயின், கடவுச்சொல் மீட்டமைக்கும் மின்னஞ்சல் அனுப்பப்படும்", + "passwordreset-invalidemail": "செல்லுபடியற்ற அஞ்சல் முகவரி", + "passwordreset-nodata": "பயனர் பெயர் மற்றும் மின்னஞ்சல் முகவரி கொடுக்கப்படவில்லை", "changeemail": "மின்னஞ்சல் முகவரியை மாற்று / நீக்கு", "changeemail-header": "இந்த படிவத்தை உங்கள் மின்னஞ்சல் முகவரியை மாற்ற பூர்த்தி செய்யவும். நீங்கள் இந்த மாற்றத்தை உறுதிசெய்ய உங்கள் கடவுச்சொல்லை உள்ளிட வேண்டிவரும். உங்கள் கணக்கிலிருந்து ஏதாவது மின்னஞ்சலை நீக்க விரும்பினால், படிவத்தை சமர்ப்பிக்கும்போது மின்னஞ்சல் முகவரியை காலியாக விடவும்.", "changeemail-no-info": "இப்பக்கத்தை நேரடியாக அணுகுவதற்கு நீங்கள் புகுபதிகை செய்திருக்கவேண்டும்.", @@ -757,6 +766,7 @@ "content-model-css": "சிஎஸ்எஸ்", "content-json-empty-object": "காலி பொருள்", "content-json-empty-array": "காலி அணி", + "deprecated-self-close-category": "தவறாக சுய மூடப்பட்ட HTML குறிச்சொற்களை பயன்படுத்தும் பக்கங்கள்", "duplicate-args-category": "வார்ப்புரு அழைப்பில் ஒத்த விவாதங்களை கொண்ட பக்கங்கள்", "duplicate-args-category-desc": "இப்பக்கம் விவாதங்களின் ஒத்த வடிவங்களைப் பயன்படுத்தும் வார்ப்புருக்களை, எடுத்துக்காட்டக <code><nowiki>{{foo|bar=1|bar=2}}</nowiki></code> or <code><nowiki>{{foo|bar|1=baz}}</nowiki></code> கொண்டுள்ளது.", "expensive-parserfunction-warning": "எச்சரிக்கை: இப்பக்கம் அதிகளவு இலக்கணப் பாகுபடுத்திச் சார்புகளைக் கொண்டுள்ளது.\n\nஇது $2 {{PLURAL:$2|சார்புக்கும்|சார்புகளுக்கும் }} குறைவான இலக்கணப் பாகுபடுத்திச் சார்புகளைக் கொண்டிருக்க வேண்டும், ஆனால் தற்போது இதில் {{PLURAL:$1|$1 சார்பு|$1 சார்புகள்}} உள்ளன.", @@ -891,8 +901,10 @@ "mergehistory-empty": "இணைக்கப்படக்கூடிய திருத்தங்கள் எதுவுமில்லை.", "mergehistory-done": "$1 பக்கத்தின் {{PLURAL:$3|ஒரு திருத்தம்|$3 திருத்தங்கள்}} வெற்றிகரமாக [[:$2]] பக்கத்தில் இணைக்கப்பட்ட{{PLURAL:$3|து|ன}}.", "mergehistory-fail": "வரலாற்றை இணைக்க முடியவில்லை. அருள் கூர்ந்து நேரங்களை ஒரு முறை சரி பார்க்கவும்.", + "mergehistory-fail-bad-timestamp": "செல்லுப்படியாகாத நேர முத்திரை.", "mergehistory-fail-invalid-source": "மூலப்பக்கம் பயன்பாட்டில் இல்லை.", "mergehistory-fail-invalid-dest": "இலக்குப் பக்கம் செல்லுபடியற்றது.", + "mergehistory-fail-permission": "வரலாறுகளை ஒன்றினைக்க தேவையாக அதிகாரங்கள் இல்லை.", "mergehistory-fail-toobig": "$1 அளவுக்கு மேல் வரலாறு இணைப்பு செய்ய இயலவில்லை {{PLURAL:$1|revision|திருத்தங்கள்}} நகர்த்தப்படும்.", "mergehistory-no-source": "மூலப் பக்கம் $1 இல்லை.", "mergehistory-no-destination": "இலக்குப் பக்கம் $1 இல்லை.", @@ -952,6 +964,7 @@ "search-interwiki-caption": "உறவுத் திட்டங்கள்", "search-interwiki-default": "$1 தளத்திலிருந்து முடிவுகள்:", "search-interwiki-more": "(மேலும்)", + "search-interwiki-more-results": "மேலும் முடிவுகள்", "search-relatedarticle": "தொடர்புடையவை", "searchrelated": "தொடர்புடையவை", "searchall": "அனைத்தும்", @@ -1000,8 +1013,6 @@ "saveprefs": "சேமி", "restoreprefs": "எல்லோருக்கும் பொதுவான வடிவமைப்பைத் திரும்பக்கொண்டுவரவும் (எல்லா பிரிவுகளிலும்).", "prefs-editing": "தொகுத்தல்", - "rows": "நிரைகள் (கிடை வரிசைகள்):", - "columns": "நிரல்கள்", "searchresultshead": "தேடுக", "stub-threshold": "<a href=\"#\" class=\"stub\">stub link</a> சீர்படுத்தலுக்கான எல்லை (பைட்டுகள்):", "stub-threshold-sample-link": "மாதிரி", @@ -1261,6 +1272,7 @@ "action-userrights-interwiki": "ஏனைய விக்கித் தளங்களின் பயனர் உரிமைகளைத் தொகு", "action-siteadmin": "தரவுதளத்தை பூட்டு அல்லது பூட்டாதே", "action-sendemail": "மின்னஞ்சல்கள் அனுப்பு", + "action-editmyoptions": "உங்கள் விருப்பத்தேர்வுகளை தொகு", "action-editmywatchlist": "உங்கள் கவனிப்பு பட்டியலை தொகு", "action-viewmywatchlist": "உங்கள் கவனிப்பு பட்டியலை பார்", "action-viewmyprivateinfo": "உங்கள் தனிப்பட்ட தகவல்களைப் பார்", @@ -1269,6 +1281,7 @@ "action-managechangetags": "தரவுதளத்திலிருந்து அடையாளங்களை உருவாக்கு அல்லது நீக்கு", "action-applychangetags": "உங்கள் மாற்றங்களுடன் அடையாளங்களைச் செயற்படுத்து", "action-changetags": "தனியொருவரின் திருத்தம் மற்றும் செயற்பாட்டு பதிவுகளில் அடையாளங்களைச் சேர் அல்லது நீக்கு", + "action-purge": "இப்பக்கத்தினை துப்புரவாக்கு", "nchanges": "{{PLURAL:$1|ஓர் மாற்றம்|$1 மாற்றங்கள்}}", "enhancedrc-since-last-visit": "$1 {{PLURAL:$1|கடந்த வருகையிலிருந்து}}", "enhancedrc-history": "வரலாறு", @@ -1285,6 +1298,29 @@ "recentchanges-legend-heading": "<strong>குறியீட்டு விளக்கம்:</strong>", "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} ([[Special:NewPages|புதிய பக்கங்கள் பட்டியலையும்]] காணவும்)", "recentchanges-submit": "காட்டு", + "rcfilters-filterlist-title": "வடிப்பான்கள்", + "rcfilters-highlightmenu-title": "ஒரு நிறத்தை தேர்ந்தெடுக்கவும்", + "rcfilters-filterlist-noresults": "எந்த வடிப்பானும் காணப்படவில்லை", + "rcfilters-filtergroup-registration": "பயனர் பதிகை", + "rcfilters-filter-registered-label": "பதிவுசெய்யப்பட்டது", + "rcfilters-filter-unregistered-label": "பதிவு நீக்கம் செய்யப்பட்டது", + "rcfilters-filter-editsbyself-label": "தங்களின் சொந்த தொகுப்புகள்", + "rcfilters-filter-editsbyself-description": "தங்களது தொகுப்புகள்.", + "rcfilters-filter-editsbyother-label": "மற்றவர் தொகுப்புகள்", + "rcfilters-filter-userExpLevel-newcomer-label": "புது வரவுகள்", + "rcfilters-filter-userExpLevel-learner-label": "கற்போர்", + "rcfilters-filter-userExpLevel-experienced-label": "அனுபவமுள்ள பயனர்கள்", + "rcfilters-filter-userExpLevel-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-significance": "சிறப்பு", + "rcfilters-filter-minor-label": "சிறு தொகுப்பு", + "rcfilters-filtergroup-changetype": "மாற்ற வகை", + "rcfilters-filter-pageedits-label": "பக்க தொகுப்புகள்", + "rcfilters-filter-newpages-label": "பக்க உருவாக்கங்கள்", "rcnotefrom": "கீழே காணப்படுவது <strong>$3, $4</strong> இலிருந்து செய்யப்பட்ட (<strong>$1</strong> வரைக் காட்டப்பட்டுள்ளது) {{PLURAL:$5|மாற்றமாகும்.|மாற்றங்களாகும்.}}", "rclistfrom": "$2, $3 முதல் இன்று வரை செய்யப்பட்ட புதிய மாற்றங்களைக் காட்டவும்", "rcshowhideminor": "சிறிய தொகுப்புகளை $1", @@ -1403,7 +1439,7 @@ "uploaddisabledtext": "கோப்பு பதிவேற்றங்கள் செயலிழக்கச் செய்யப்பட்டுள்ளன.", "php-uploaddisabledtext": "கோப்பு தரவேற்றம் PHP இல் முடக்கப்பட்டுள்ளது.தயவுகூர்ந்து file_uploads அமைப்பை சரிபார்க்கவும்.", "uploadscripted": "இந்தக் கோப்பு உலாவியால் பிழையாக விளங்கிக் கொள்ளக்கூடிய எச்.டி.எம்.எல். அல்லது வேறு நிரல்களைக் கொண்டுள்ளது.", - "uploadscriptednamespace": "இந்த SVG கோப்பு ஒரு சரியில்லாத பெயரிடைவெளியை \"$1\" கொண்டுள்ளது.", + "uploadscriptednamespace": "இந்த SVG கோப்பு ஒரு சரியில்லாத பெயரிடைவெளியை கொண்டுள்ளது \"<nowiki>$1</nowiki>\".", "uploadinvalidxml": "ஏற்றபட்ட கோப்பில் உள்ள XML ஆராய முடியாது.", "uploadvirus": "கோப்பு நச்சுநிரலைக் (வைரஸ்) கொண்டுள்ளது! விபரங்கள்:$1", "uploadjava": "இது ஒரு zip கோப்பு.இதில் java.class என்ற கோப்பு உள்ளது.\nஜாவா கோப்புகளை தகவலேற்றுவது தடைசெய்யப்பட்டுள்ளது.ஏனெனில் அது பாதுகாப்பு தடைகளை மீற வழிவகுக்கும்.", @@ -1741,6 +1777,8 @@ "apisandbox-request-url-label": "URL வேண்டுகோள்:", "apisandbox-request-time": "வேண்டுகோள் நேரம்: {{PLURAL:$1|$1 மிசெ}}", "apisandbox-results-fixtoken": "அட்டையை திருத்தி மீண்டும் சமர்பிக்கவும்", + "apisandbox-continue": "தொடரவும்", + "apisandbox-continue-clear": "வெறுமையாக்குக", "booksources": "நூல் மூலங்கள்", "booksources-search-legend": "நூல் மூலங்களைத் தேடு", "booksources-search": "தேடுக", @@ -1815,6 +1853,7 @@ "listgrouprights-namespaceprotection-header": "பெயர்வெளி கட்டுப்பாடு", "listgrouprights-namespaceprotection-namespace": "பெயர்வெளி", "listgrouprights-namespaceprotection-restrictedto": "பயனரை திருத்த அனுமதிக்கும் உரிமை(கள்)", + "listgrants-grant": "நல்கை", "listgrants-rights": "அணுக்கங்கள்", "trackingcategories": "பகுப்புகளை தடமறி", "trackingcategories-msg": "பகுப்புகளை தடமறிதல்", @@ -1945,6 +1984,7 @@ "changecontentmodel-title-label": "பக்கத் தலைப்பு", "changecontentmodel-model-label": "புது உள்ளடக்க மாதிரி", "changecontentmodel-reason-label": "காரணம்:", + "changecontentmodel-submit": "மாற்றுக", "changecontentmodel-success-title": "உள்ளடக்க மாதிரி மாற்றப்பட்டது", "changecontentmodel-success-text": "[[:$1]]-இன் உள்ளடக்க வகை மாற்றப்பட்டது", "log-name-contentmodel": "உள்ளடக்க மாதிரி மாற்றப் பதிகை", @@ -2129,6 +2169,7 @@ "ipb-unblock": "ஐ.பி. அல்லது பயனருக்கான தடையை நீக்கு", "ipb-blocklist": "தற்போதுள்ள தடுப்புகளைப் பார்", "ipb-blocklist-contribs": "{{GENDER:$1|$1}}க்கு பங்களிப்புகள்", + "ipb-blocklist-duration-left": "$1 வெளியேறினர்", "unblockip": "பயனர் தடையை நீக்கு", "unblockiptext": "முன்னர் தடுக்கப்பட்ட ஐ.பி. முகவரி அல்லது பயனர்பெயரின் எழுத்து அணுக்கத்தை மீழ்விப்பதற்கு கீழேயுள்ள படிவத்தை பயன்படுத்தவும்.", "ipusubmit": "இந்தத் தடையை நீக்கு", @@ -2215,6 +2256,7 @@ "lockdbsuccesstext": "தரவுத்தளம் பூட்டப் பட்டது.<br />பராமரிப்பு முடிவடைந்ததும் [[Special:UnlockDB|பூட்டை நீக்க]] மறவாதீர்.", "unlockdbsuccesstext": "தரவுத்தளம் திறக்கப்பட்டது.", "lockfilenotwritable": "தரவுதள பூட்டு கோப்பு எழுதுமாறு இல்லை.\nஇத்தரவுதளத்தை பூட்ட அல்லது பூட்டியதை நீக்க , இது வலை சேவகன் எழுதுவதற்க்கேற்றவாறு இருக்க வேண்டும்.", + "databaselocked": "தரவுத்தளம் ஏற்கனவே பூட்டப்பட்டுள்ளது.", "databasenotlocked": "தரவுத்தளம் பூட்டப்படவில்லை.", "lockedbyandtime": "(இதன்படி{{GENDER:$1|$1}} on $2 at $3)", "move-page": "$1 பக்கத்தை நகர்த்து", @@ -2286,6 +2328,7 @@ "export-download": "கோப்பாக சேமி", "export-templates": "வார்ப்புருக்களையும் உள்ளடக்கு", "export-pagelinks": "இணைத்த பக்கங்களை கீழ்வரும் ஆழம் வரை சேர்:", + "export-manual": "கைமுறையாக பக்கங்களை சேர்க:", "allmessages": "அனைத்து முறைமைசார் தகவல்கள் அட்டவணை", "allmessagesname": "பெயர்", "allmessagesdefault": "இயல்பிருப்பு உரை", @@ -2383,7 +2426,7 @@ "tooltip-ca-delete": "இப்பக்கத்தை நீக்கு", "tooltip-ca-undelete": "இப்பக்கம் நீக்கப்பட்டதற்கு முன்னர் செய்யப்பட்டத் தொகுப்புகளை மீட்டெடு", "tooltip-ca-move": "இப்பக்கத்தை நகர்த்துக", - "tooltip-ca-watch": "இப்பக்கத்தை உன் கவனிப்புப் பட்டியலில் சேர்", + "tooltip-ca-watch": "இப்பக்கத்தை உங்கள் கவனிப்புப் பட்டியலில் சேர்", "tooltip-ca-unwatch": "இப்பக்கத்தை என் கவனிப்புப் பட்டியலிருந்து நீக்கு", "tooltip-search": "{{SITENAME}}-இல் தேடுக", "tooltip-search-go": "இப்பெயரைக் கொண்டப் பக்கம் இருப்பின் அதற்கு நேரடியாகச் செல்க", @@ -2419,6 +2462,7 @@ "tooltip-ca-nstab-category": "பகுப்புப் பக்கத்தை பார்க்க", "tooltip-minoredit": "இம்மாற்றத்தை சிறிய தொகுப்பாக கருது", "tooltip-save": "உங்கள் மாற்றங்களைச் சேமிக்கவும்.", + "tooltip-publish": "மாற்றங்களைப் பதிப்பிடுக", "tooltip-preview": "நீங்கள் செய்த மாற்றங்களின் முன்தோற்றம் பார்க்கவும்! தயவுசெய்து, மாற்றங்களை சேமிக்கும் முன்னர் இதனைப் பயன்படுத்தவும்!", "tooltip-diff": "உரையில் நீங்கள் செய்த மாற்றங்களைக் காட்டவும்.", "tooltip-compareselectedversions": "இப் பக்கத்தின் தெரிவு செய்யப்பட்ட இரண்டு பதிப்புக்களுக்கு இடையிலான வேறுபாடுகளைப் பார்க்கவும்.", @@ -2497,6 +2541,7 @@ "pageinfo-category-pages": "பக்கங்களின் எண்ணிக்கை", "pageinfo-category-subcats": "துணைபகுப்புகளின் எண்ணிக்கை", "pageinfo-category-files": "கோப்புகளின் எண்ணிக்கை", + "pageinfo-user-id": "பயனர் அடையாளம்", "markaspatrolleddiff": "ரோந்திட்டதாக குறி", "markaspatrolledtext": "இதனை சுற்றுக்காவல் செய்ததாகக் குறி", "markaspatrolledtext-file": "இக்கோப்பு பதிப்பினை ரோந்திட்டதாக குறி", @@ -2513,6 +2558,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", @@ -2551,6 +2597,7 @@ "newimages-showbots": "தானியிங்கி பதிவேற்றங்களைக் காட்டு", "newimages-hidepatrolled": "ரோந்திட்ட பதிவேற்றங்களை மறை", "noimages": "பார்வைக்கு ஓன்றுமில்லை.", + "gallery-slideshow-toggle": "வில்லைப்படங்களை ஊசலாடு", "ilsubmit": "தேடுக", "bydate": "நாள் வழி", "sp-newimages-showfrom": "$1, $2க்குப் பின்னரான புதியக் கோப்புக்களைக் காட்டுக", @@ -2951,9 +2998,10 @@ "confirm-purge-top": "இப்பக்கத்தின் இடைமாற்றை நீக்கவா?", "confirm-purge-bottom": "ஒரு பக்கத்தை நீக்குதல், அதன் இடைமாற்றை நீக்கி மிக அண்மையப் பதிப்பை தோன்ற செய்யும்.", "confirm-watch-button": "சரி", - "confirm-watch-top": "இப்பக்கத்தை உன் கவனிப்புப் பட்டியலில் சேர்க்க வேண்டுமா?", + "confirm-watch-top": "இப்பக்கத்தை உங்கள் கவனிப்புப் பட்டியலில் சேர்க்க வேண்டுமா?", "confirm-unwatch-button": "சரி", "confirm-unwatch-top": "இப்பக்கத்தை உங்கள் கவனிப்புப் பட்டியலிருந்து நீக்கா வேண்டுமா?", + "confirm-rollback-button": "சரி", "quotation-marks": "\"$1\"", "imgmultipageprev": "← முந்திய பக்கம்", "imgmultipagenext": "அடுத்தப் பக்கம் →", @@ -3185,6 +3233,9 @@ "htmlform-cloner-create": "மேலும் சேர்க", "htmlform-cloner-delete": "நீக்குக", "htmlform-cloner-required": "குறைந்து ஒரு மதிப்பு தேவைப்படும்.", + "htmlform-date-placeholder": "வவவவ-மாமா-தேதே", + "htmlform-time-placeholder": "மம:நிநி:நொநொ", + "htmlform-datetime-placeholder": "வவவவ-மாமா-தேதே மம:நிநி:நொநொ", "htmlform-title-badnamespace": "\"{{ns:$2}}\" பெயர்வெளியில் [[:$1]] இல்லை", "htmlform-title-not-creatable": "\"$1\" ஒரு உருவாக்கத்தக்க பக்கத் தலைப்பு அல்ல", "htmlform-title-not-exists": "$1 இ்டம்பெறவில்லை.", @@ -3231,8 +3282,8 @@ "logentry-newusers-autocreate": "பயனர் கணக்கு $1 தானாக உருவாக்கப்பட்டது", "logentry-protect-move_prot": "$1 காப்பு அமைப்பை $4-இலிருந்து $3-இற்கு {{GENDER:$2|நகர்த்தினார்}}", "logentry-protect-unprotect": "$1 $3-இலிருந்து காப்பை {{GENDER:$2|நீக்கினார்}}", - "logentry-protect-protect": "$1 $3 என்பதனை $4 என்பதற்கு {{GENDER:$2|காப்பச் செய்தார்}}", - "logentry-protect-protect-cascade": "$1 $3 என்பதனை $4 என்பதற்கு {{GENDER:$2|காப்பச் செய்தார்}} [விழுத்தொடர்]", + "logentry-protect-protect": "$1 $3 என்பதனை $4 என்பதற்கு {{GENDER:$2|காப்புச் செய்தார்}}", + "logentry-protect-protect-cascade": "$1 $3 என்பதனை $4 என்பதற்கு {{GENDER:$2|காப்புச் செய்தார்}} [விழுத்தொடர்]", "logentry-protect-modify": "$1 $3-க்கான காப்பு நிலையை $4 நேரத்திற்கு {{GENDER:$2|மாற்றினார்}}", "logentry-protect-modify-cascade": "$1 $3-க்கான காப்பு நிலையை $4 நேரத்திற்கு {{GENDER:$2|மாற்றினார்}} [விழுத்தொடர்]", "logentry-rights-rights": "$1 $3-இற்கான குழு அங்கத்துவத்தை $4-இலிருந்து $5-இற்கு {{GENDER:$2|மாற்றினார்}}", @@ -3270,52 +3321,12 @@ "feedback-useragent": "பயனர் முகவர்:", "searchsuggest-search": "தேடு", "searchsuggest-containing": "கொண்டுள்ளது...", - "api-error-badaccess-groups": "இந்த விக்கிக்குக் கோப்புகளைப் பதிவேற்றுவதற்கு நீங்கள் அனுமதிக்கப்படவில்லை.", "api-error-badtoken": "உள்ளகப் பிழை: தவறான அடையாளம்.", - "api-error-copyuploaddisabled": "உரலி மூலம் பதிவேற்றுவது இந்த வழங்கியில் செயலிழக்கச் செய்யப்பட்டுள்ளது.", - "api-error-duplicate": "There {{PLURAL:$1|is another file|are some other files}} already on the site with the same content.", - "api-error-duplicate-archive": "ஏற்கனவே இத்தளத்தில் இதே உள்ளடக்கத்தைக் கொண்ட {{PLURAL:$1|கோப்பு இருந்தது|கோப்புகள் இருந்தன}}, ஆனால் {{PLURAL:$1|அது நீக்கப்பட்டுவிட்டது|அவை நீக்கப்பட்டுவிட்டன.}}", - "api-error-empty-file": "நீங்கள் அளித்த கோப்பு காலியாக உள்ளது.", "api-error-emptypage": "புதிய, காலி பக்கங்கள் உருவாக்கல் அனுமதிக்கப்படவில்லை.", - "api-error-fetchfileerror": "உள்ளகப் பிழை: கோப்பைப் பெறுகையில் ஏதோ தவறு நேர்ந்துவிட்டது.", - "api-error-fileexists-forbidden": "\"$1\" என்ற பெயருள்ள கோப்பு ஏற்கனவே உள்ளது. மேலெழுத முடியாது.", - "api-error-fileexists-shared-forbidden": "\"$1\" என்ற பெயருள்ள கோப்பு ஏற்கனவே கோப்பு பகிர்மானப் பெட்டகத்தில் உள்ளது. மேலெழுத முடியாது.", - "api-error-file-too-large": "நீங்கள் அளித்த கோப்பு மிகவும் பெரியதாக உள்ளது.", - "api-error-filename-tooshort": "கோப்புப் பெயர் மிகவும் சிறியதாக உள்ளது.", - "api-error-filetype-banned": "இக்கோப்பு வகை தடைசெய்யப்பட்டுள்ளது.", - "api-error-filetype-banned-type": "$1 {{PLURAL:$4|அனுமதிக்கப்படாத கோப்பு வகையாகும் | அனுமதிக்கப்படாத கோப்பு வகைகளாகும்}}.. அனுமதிக்கப்பட்ட {{PLURAL:$3|கோப்புவகை|கோப்புவகைகள்}} $2 என்பது(வை) ஆகும்.", - "api-error-filetype-missing": "கோப்பில் ஒரு விரிவு விடுபடுகிறது.", - "api-error-hookaborted": "நீங்கள் செய்ய முயன்ற மாற்றம் ஒரு விரிவாக்கத்தால் புறக்கணிக்கப்பட்டது.", - "api-error-http": "உள்ளகப் பிழை: வழங்கியுடன் இணைக்க முடியவில்லை", - "api-error-illegal-filename": "இக்கோப்புப் பெயர் அனுமதிக்கப்படமாட்டாது.", - "api-error-internal-error": "உள்ளகப் பிழை: உங்கள் பதிவேற்றத்தை விக்கியில் செயல்படுத்தும்போது ஏதோ தவறு நேர்ந்துவிட்டது.", - "api-error-invalid-file-key": "உள்ளகப் பிழை: தற்காலிகச் சேமிப்பில் கோப்பு காணப்படவில்லை.", - "api-error-missingparam": "உள்ளகப் பிழை: கோரிக்கையில் அளபுருக்கள் விடுபடுகின்றன.", - "api-error-missingresult": "உள்ளகப் பிழை: நகல் வெற்றியடைந்ததா என்று தீர்மாணிக்க முடியவில்லை.", - "api-error-mustbeloggedin": "கோப்புகளைப் பதிவேற்ற நீங்கள் கண்டிப்பாகப் புகுபதிகை செய்திருக்க வேண்டும்.", - "api-error-mustbeposted": "உள்ளகப் பிழை: கோரிக்கைக்கு HTTP POST தேவை.", - "api-error-noimageinfo": "பதிவேற்றம் வெற்றியடைந்தது, ஆனால் வழங்கி கோப்பைப் பற்றிய எந்த ஒரு தகவலையும் எங்களுக்குத் தரவில்லை.", - "api-error-nomodule": "உள்ளகப் பிழை: பதிவேற்றப் பகுதி அமைக்கப்படவில்லை.", - "api-error-ok-but-empty": "உள்ளகப் பிழை: வழங்கியிலிருந்து பதில் வரவில்லை", - "api-error-overwrite": "ஏற்கனவே உள்ள கோப்பின் மேலெழுதுவது அனுமதிக்கப்படமாட்டாது.", - "api-error-stashfailed": "உள்ளகப் பிழை: வழங்கி தற்காலிகக் கோப்பைத் தேக்கத் தவறிவிட்டது.", "api-error-publishfailed": "உள்ளகப் பிழை: வழங்கி தற்காலிகக் கோப்பைத் பதிப்பிக்க தவறிவிட்டது.", - "api-error-stasherror": "பரணில் ஒரு கோப்பை ஏற்றும் போது பிழை ஏற்பட்டது.", - "api-error-stashedfilenotfound": "பரணிலிருந்து கோப்பே ஏற்றும் போது பரணேற்றப்பட்ட கோப்பை காணவில்லை.", - "api-error-stashpathinvalid": "பரணேற்றபட்ட கோப்பு காணப்பட வேண்டிய பாதை செல்லாதது.", - "api-error-stashfilestorage": "பரணில் ஒரு கோப்பை சேமிக்கும் போது பிழை ஏற்பட்டது.", - "api-error-stashzerolength": "வழங்கி கோப்பை பரணேற்ற இயலாது, ஏனெனில் அது சுழி நீளம் கொண்டது.", - "api-error-stashnotloggedin": "ஏற்று பரணில் கோப்பை சேமிக்க நீங்கள் புகுபதிய வேண்டும்.", - "api-error-stashwrongowner": "நீங்கள் பரணில் அணுக முயற்சிக்கும் கோப்பு உங்களுக்கு உரியதல்ல.", - "api-error-stashnosuchfilekey": "நீங்கள் பரணில் அணுக முயற்சிக்கும் கோப்புக் குறி காணக்கிடைக்கவில்லை.", - "api-error-timeout": "எதிர்பார்க்கப்பட்ட நேரத்தில் வழங்கி பதிலளிக்கவில்லை.", - "api-error-unclassified": "அறியாப் பிழை ஏற்பட்டது", - "api-error-unknown-code": "அறியாப் பிழை: \"$1\"", - "api-error-unknown-error": "உள்ளகப் பிழை: உங்கள் கோப்பைப் பதிவேற்ற முயல்கையில் ஏதோ தவறு நேர்ந்துவிட்டது.", + "api-error-stashfailed": "உள்ளகப் பிழை: வழங்கி தற்காலிகக் கோப்பைத் தேக்கத் தவறிவிட்டது.", "api-error-unknown-warning": "அறியப்படா எச்சரிக்கை: \"$1\".", "api-error-unknownerror": "அறியப்படாத பிழை: \"$1\".", - "api-error-uploaddisabled": "இந்த விக்கியில் பதிவேற்றல் செயலிழக்கச் செய்யப்பட்டுள்ளது.", - "api-error-verification-error": "இக்கோப்பு பிழையுடனோ தவறான விரிவுடனோ இருக்கலாம்.", "duration-seconds": "$1 {{PLURAL:$1|நொடி|நொடிகள்}}", "duration-minutes": "{{PLURAL:$1|நிமிடம்|நிமிடங்கள்}}", "duration-hours": "$1 {{PLURAL:$1|மணி|மணிகள்}} முன்பு", @@ -3355,12 +3366,15 @@ "pagelang-language": "மொழி", "pagelang-use-default": "இயல்பு நிலை மொழி", "pagelang-select-lang": "மொழியைத் தேர்ந்தெடு", + "pagelang-reason": "காரணம்", "pagelang-submit": "சமர்ப்பி", + "pagelang-nonexistent-page": "பக்கம் $1 காணப்படவில்லை.", "right-pagelang": "பக்க மொழியை மாற்றுக", "action-pagelang": "பக்க மொழியை மாற்றுக", "log-name-pagelang": "மொழி பதிவை மாற்றுக", "log-description-pagelang": "இது பக்க மொழி மாற்றச் செயல்பாட்டின் பதிவு.", "logentry-pagelang-pagelang": "$3 க்கான பக்க மொழியை $4 இலிருந்து $5 க்கு $1 {{GENDER:$2|மாற்றினார்}}.", + "mediastatistics": "ஊடகம் பற்றிய புள்ளிவிவரங்கள்", "mediastatistics-bytespertype": "இந்த பிரிவக்கான மொத்த கோப்பளவு: $1 எண்ணுண்மி", "mediastatistics-allbytes": "அனைத்து கோப்புகளின் மொத்த கோப்பளவு: $1 எண்ணுண்மி", "mediastatistics-table-count": "கோப்புகளின் எண்ணிக்கை", @@ -3371,6 +3385,7 @@ "mediastatistics-header-video": "காணொளிகள்", "mediastatistics-header-office": "அலுவலகம்", "mediastatistics-header-text": "உரை வடிவ", + "mediastatistics-header-archive": "அமுக்கிய வடிவங்கள்", "mediastatistics-header-total": "அனைத்துக் கோப்புக்களும்", "json-error-syntax": "தொடரியல் பிழை", "special-characters-group-latin": "இலத்தீன்", @@ -3378,6 +3393,7 @@ "special-characters-group-ipa": "பன்னாட்டு ஒலிப்பு அரிச்சுவடி", "special-characters-group-symbols": "குறியீடுகள்", "special-characters-group-greek": "கிரேக்கம்", + "special-characters-group-greekextended": "நீடித்த கிரேக்கம்", "special-characters-group-cyrillic": "சைரிலிக் (Cyrillic)", "special-characters-group-arabic": "அரபு", "special-characters-group-arabicextended": "அரபு விரிவு", @@ -3396,8 +3412,11 @@ "special-characters-title-emdash": "பெரு கோடு", "special-characters-title-minus": "கழித்தல் குறி", "mw-widgets-dateinput-no-date": "திகதி தெரிவுச் செய்யப்படவில்லை", + "mw-widgets-mediasearch-noresults": "முடிவுகள் எதுவும் காணப்படவில்லை.", "mw-widgets-titleinput-description-new-page": "இப்பக்கம் இன்னும் உருவாக்கப்படவில்லை", "mw-widgets-titleinput-description-redirect": "$1-க்கு வழிமாற்று", + "mw-widgets-categoryselector-add-category-placeholder": "ஒரு பகுப்பைச் சேர்க...", + "mw-widgets-usersmultiselect-placeholder": "மேலும் சேர்க...", "sessionprovider-generic": "$1 பகுதி", "sessionprovider-mediawiki-session-cookiesessionprovider": "குக்கீயை அடிபடையாக்கக் கொண்ட பகுதிகள்", "sessionprovider-nocookies": "குக்கீசு செயலற்று இருக்கலாம். உங்களது குக்கீசு செயலில் உள்ளது என உறுதிப்படுத்திவிட்டு மீண்டும் முயல்க.", diff --git a/languages/i18n/tcy.json b/languages/i18n/tcy.json index 9277032eb2..a4911dc799 100644 --- a/languages/i18n/tcy.json +++ b/languages/i18n/tcy.json @@ -176,6 +176,7 @@ "searcharticle": "ಪೋಲೆ", "history": "ಪುಟೊತ ಚರಿತ್ರೆ", "history_short": "ಇತಿಹಾಸೊ", + "history_small": "ಇತಿಹಾಸೊ", "updatedmarker": "ಎನ್ನ ಅಕೇರಿದ ವೀಕ್ಷಣೆ ಡ್ದ್ ಬುಕ್ಕ ಆಯಿನ ಬದಲಾವಣೆಲು", "printableversion": "ಪ್ರಿಂಟ್ ಆವೃತ್ತಿ", "permalink": "ಸ್ತಿರೊ ಕೊಂಡಿ", @@ -645,8 +646,6 @@ "prefs-rendering": "ಗೋಚರೊ", "saveprefs": "ಒರಿಪಾಲೆ", "prefs-editing": "ಸಂಪೊಲಿಪು", - "rows": "ಸಾಲ್‘ಲು", - "columns": "ಸಾಲ್‍ಕುಲು:", "searchresultshead": " \nನಾಡ್’ಲೆ", "stub-threshold-sample-link": "ಸಾಂಪಲ್", "stub-threshold-disabled": "ಕ್ರಿಯೆ ಉಂತ್‍ದ್ಂಡ್", @@ -745,6 +744,7 @@ "recentchanges-legend-heading": "<strong>ಲೆಜೆಂಡ್:</strong>", "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (ಬೊಕ್ಕೊಲಾ ತೂಲೆ [[Special:NewPages|ಪೊಸ ಪುಟೊದ ಪಟ್ಟಿ]])", "recentchanges-submit": "ತೋಜಾಲೆ", + "rcfilters-filter-userExpLevel-learner-label": "ಕಲ್ಪುನರ್", "rclistfrom": "$3 $2 ರ್ದ್ ಸುರುವಾತಿನ ಪೊಸ ಬದಲಾವಣೆಲೆನ್ ತೊಜ್ಪಾವು", "rcshowhideminor": "$1 ಎಲ್ಯೆಲ್ಯ ಬದಲಾವಣೆಲು", "rcshowhideminor-show": "ತೋಜಾಲೆ", @@ -1217,5 +1217,7 @@ "logentry-move-move": "$1 {{GENDER:$2|ಜಾರಲೆ}} ಪುಟೊ $3 ಡ್ದ್ $4", "logentry-newusers-create": "ಬಳಕೆದಾರೆರೆ ಕಾತೆ $1 ನ್ನು {{GENDER:$2|ಸ್ರಿಸ್ಟಿ ಮಲ್ತಾಂಡ್}}", "logentry-upload-upload": "$1 {{GENDER:$2|ಅಪ್ಲೋಡ್ ಮಲ್ತ್‌ದೆರ್}} $3", - "searchsuggest-search": "{{SITENAME}}ನ್ ನಾಡ್‍ಲೆ" + "searchsuggest-search": "{{SITENAME}}ನ್ ನಾಡ್‍ಲೆ", + "pagelang-reason": "ಕಾರಣೊ", + "mw-widgets-usersmultiselect-placeholder": "ನನಾತ್ ಸೇರಲೇ..." } diff --git a/languages/i18n/te.json b/languages/i18n/te.json index 2ab4a982ad..3776c86bc8 100644 --- a/languages/i18n/te.json +++ b/languages/i18n/te.json @@ -100,7 +100,7 @@ "may_long": "మే", "june": "జూన్", "july": "జూలై", - "august": "ఆగష్టు", + "august": "ఆగస్టు", "september": "సెప్టెంబరు", "october": "అక్టోబరు", "november": "నవంబరు", @@ -162,7 +162,7 @@ "broken-file-category": "తెగిపోయిన ఫైలులింకులు గల పేజీలు", "about": "గురించి", "article": "విషయపు పేజీ", - "newwindow": "(కొత్త కిటికీలో వస్తుంది)", + "newwindow": "(కొత్త విండోలో వస్తుంది)", "cancel": "రద్దుచేయి", "moredotdotdot": "ఇంకా...", "morenotlisted": "బహుశా ఈ జాబితా అసంపూర్ణం.", @@ -193,6 +193,7 @@ "searcharticle": "వెళ్లు", "history": "పేజీ చరిత్ర", "history_short": "చరిత్ర", + "history_small": "చరిత్ర", "updatedmarker": "నేను కిందటిసారి వచ్చిన తరువాత జరిగిన మార్పులు", "printableversion": "అచ్చుతీయదగ్గ కూర్పు", "permalink": "శాశ్వత లంకె", @@ -200,15 +201,15 @@ "view": "చూపు", "view-foreign": "$1 లో చూడండి", "edit": "సవరించు", - "edit-local": "ప్రాంతీయ వివరణని మార్చు", + "edit-local": "స్థానిక వివరణని మార్చు", "create": "సృష్టించు", - "create-local": "ప్రాంతీయ వివరణని చేర్చు", + "create-local": "స్థానిక వివరణను చేర్చు", "editthispage": "ఈ పేజీని సవరించండి", "create-this-page": "ఈ పేజీని సృష్టించండి", "delete": "తొలగించు", "deletethispage": "ఈ పేజీని తొలగించండి", "undeletethispage": "ఈ పేజీ తొలగింపును ఆపు", - "undelete_short": "{{PLURAL:$1|ఒక్క రచన|$1 రచనల}} తొలగింపును రద్దుచెయ్యి", + "undelete_short": "{{PLURAL:$1|ఒక మార్పు|$1 మార్పుల}} తొలగింపును రద్దుచెయ్యి", "viewdeleted_short": "{{PLURAL:$1|తొలగించిన ఒక మార్పు|$1 తొలగించిన మార్పుల}}ను చూడండి", "protect": "సంరక్షించు", "protect_change": "మార్చు", @@ -228,17 +229,17 @@ "tool-link-userrights-readonly": "{{GENDER:$1|వాడుకరి}} గుంపులను చూడండి", "tool-link-emailuser": "ఈ {{GENDER:$1|వాడుకరికి}} ఈమెయిలు పంపు", "userpage": "వాడుకరి పేజీని చూడండి", - "projectpage": "ప్రాజెక్టు పేజీని చూడు", + "projectpage": "ప్రాజెక్టు పేజీని చూడండి", "imagepage": "ఫైలు పేజీని చూడండి", - "mediawikipage": "సందేశం పేజీని చూడు", - "templatepage": "మూస పేజీని చూడు", - "viewhelppage": "సహాయం పేజీని చూడు", - "categorypage": "వర్గం పేజీని చూడు", - "viewtalkpage": "చర్చను చూడు", + "mediawikipage": "సందేశం పేజీని చూడండి", + "templatepage": "మూస పేజీని చూడండి", + "viewhelppage": "సహాయం పేజీని చూడండి", + "categorypage": "వర్గపు పేజీ చూడండి", + "viewtalkpage": "చర్చను చూడండి", "otherlanguages": "ఇతర భాషలలో", "redirectedfrom": "($1 నుండి మళ్ళించబడింది)", "redirectpagesub": "దారిమార్పు పేజీ", - "redirectto": "దారి మళ్ళింపు:", + "redirectto": "దారి మార్పు:", "lastmodifiedat": "ఈ పేజీలో చివరి మార్పు $1 à°¨ $2 కు జరిగింది.", "viewcount": "ఈ పేజీ {{PLURAL:$1|ఒక్క సారి|$1 సార్లు}} దర్శించబడింది.", "protectedpage": "సంరక్షణలోని పేజీ", @@ -270,7 +271,7 @@ "privacy": "గోప్యతా విధానం", "privacypage": "Project:గోప్యతా విధానం", "badaccess": "అనుమతి లోపం", - "badaccess-group0": "మీరు చేయతలపెట్టిన పనికి మీకు హక్కులు లేవు.", + "badaccess-group0": "మీరడిగిన పని చేసేందుకు మీకు అనుమతి లేదు.", "badaccess-groups": "మీరు చేయతలపెట్టిన పని ఈ {{PLURAL:$2|గుంపు|గుంపులలో ఒకదాని}} లోని వాడుకర్లకు మాత్రమే పరిమితం: $1.", "versionrequired": "మీడియావికీ సాఫ్టువేరు వెర్షను $1 కావాలి", "versionrequiredtext": "ఈ పేజీని వాడటానికి మీకు మీడియావికీ సాఫ్టువేరు వెర్షను $1 కావాలి. [[Special:Version|వెర్షను పేజీ]]ని చూడండి.", @@ -364,8 +365,8 @@ "title-invalid-interwiki": "మీరడిగిన పేజీ శీర్షికలో అంతర వికీ లంకె ఉంది, కానీ అది నిషిద్ధం.", "title-invalid-talk-namespace": "మీరడిగిన పేజీ శీర్షిక అసలు సృష్టించే వీలే లేని చర్చా పేజీకి చెందినది.", "title-invalid-characters": "కోరబడిన పేజీ శీర్షికలో చెల్లని అక్షరాలున్నాయి : \"$1\".", - "title-invalid-relative": "శీర్షికలో లంకె పాఠ్యం సాపేక్షంగా ఉంది - పూర్తిగా లేదు. సాపేక్ష పేజీ చిరునామాలు (./, ../) గల పేజీ శీర్షికలు ఎక్కువశాతం అందుబాటులో ఉండవు కనుక అవి చెల్లవు.", - "title-invalid-magic-tilde": "కోరబడిన పేజీ శీర్షిక పాఠ్యం లో చెల్లని మ్యాజిక్ టిల్డా పదాలున్నాయి (<nowiki>~~~</nowiki>).", + "title-invalid-relative": "శీర్షికకు సాపేక్ష పాత్ ఉంది. సాపేక్ష పేజీ శీర్షికలు (./, ../) వాడుకరి బ్రౌజరుకు ఎక్కువగా అందుబాటులో ఉండవు కాబట్టి, అవి చెల్లవు.", + "title-invalid-magic-tilde": "కోరబడిన పేజీ శీర్షిక పాఠ్యంలో చెల్లని మ్యాజిక్ టిల్డె క్రమం ఉంది (<nowiki>~~~</nowiki>).", "title-invalid-too-long": "మీరడిగిన పేజీ శీర్షిక మరీ పొడవుగా ఉంది. ఇది UTF-8 పద్ధతిలో $1 {{PLURAL:$1|బైట్‌|బైట్ల}}కు మించి ఉండరాదు.", "title-invalid-leading-colon": "కోరబడిన పేజీ శీర్షిక పాఠ్యం మొదట్లో చెల్లని కొలొన్ చిహ్నం (:) ఉంది.", "perfcached": "కింది డేటా ముందే సేకరించి పెట్టుకున్నది. కాబట్టి తాజా డేటాతో పోలిస్తే తేడాలుండవచ్చు. ఈ కాషెలో గరిష్టంగా {{PLURAL:$1|ఒక్క ఫలితం ఉంది|$1 ఫలితాలు ఉన్నాయి}}.", @@ -379,7 +380,7 @@ "viewsourcetext": "మీరీ పేజీ సోర్సును చూడవచ్చు, కాపీ చేసుకోవచ్చు.", "viewyourtext": "ఈ పేజీలో <strong>మీరు చేసిన మార్పుల</strong> యొక్క మూలాన్ని చూడవచ్చు, కాపీచేసుకోవచ్చు.", "protectedinterface": "ఈ పేజీ, ఈ వికీ యొక్క సాఫ్టువేరు ఇంటరుఫేసుకు చెందిన టెక్స్టును అందిస్తుంది. దుశ్చర్యల నివారణ కోసమై దీన్ని సంరక్షించాం. వికీలన్నిటిలోను అనువాదాలను చేర్చాలన్నా, మార్చాలన్నా మీడియావికీ స్థానికీకరణ ప్రాజెక్టైన [https://translatewiki.net/ translatewiki.net] ను వాడండి.", - "editinginterface": "<strong>హెచ్చరిక:</strong> సాఫ్టువేరుకు ఇంటరుఫేసు టెక్స్టును అందించేందుకు పనికొచ్చే పేజీని మీరు సరిదిద్దుతున్నారు.\nఈ పేజీలో చేసే మార్పుల వల్ల ఇతర వాడుకరులకు ఇంటరుఫేసు కనబడే విధానంలో తేడావస్తుంది.", + "editinginterface": "<strong>హెచ్చరిక:</strong> సాఫ్టువేరుకు ఇంటరుఫేసు టెక్స్టును అందించేందుకు పనికొచ్చే పేజీని మీరు సరిదిద్దుతున్నారు.\nఈ పేజీలో చేసే మార్పుల వల్ల ఇతర వాడుకరులకు కనబడే ఇంటరుఫేసు ప్రభావితమౌతుంది.", "translateinterface": "అన్ని వికీలలో కనిపించేలా అనువాదాలు చేర్చాలన్నా, మార్చాలన్నా, దయచేసి [https://translatewiki.net/ translatewiki.net] ను వాడండి. ఇది మీడియావికీ స్థానికీకరణ ప్రాజెక్టు.", "cascadeprotected": "కింది {{PLURAL:$1|పేజీని|పేజీలను}} కాస్కేడింగు ఆప్షనుతో సంరక్షించబడింది. ప్రస్తుత పేజీ, ఈ పేజీల్లో ట్రాన్స్‌క్లూడు అయి ఉంది కాబట్టి, దిద్దుబాటు చేసే వీలు లేకుండా ఇది కూడా రక్షణలో ఉంది:\n$2", "namespaceprotected": "'''$1''' నేంస్పేసులో మార్పులు చేయటానికి మీకు అనుమతి లేదు.", @@ -390,7 +391,7 @@ "myprivateinfoprotected": "మీ అంతరంగిక సమాచారాన్ని సవరించేందుకు మీకు అనుమతి లేదు.", "mypreferencesprotected": "మీ అభీష్టాలను సవరించేందుకు మీకు అనుమతి లేదు.", "ns-specialprotected": "ప్రత్యేక పేజీలపై దిద్దుబాట్లు చేయలేరు.", - "titleprotected": "[[User:$1|$1]] ఈ శీర్షికని సృష్టించకుండా ఇది సంరక్షించబడింది.\nఅందుకు ఇచ్చిన కారణం: <em>$2</em>.", + "titleprotected": "ఈ శీర్షికను [[User:$1|$1]] సృష్టించకుండా సంరక్షించబడింది.\nఅందుకు ఇచ్చిన కారణం: <em>$2</em>.", "filereadonlyerror": "ఫైలు ఖజానా \"$2\" రీడ్-ఓన్లీ స్థితిలో ఉండటం చేత \"$1\" ఫైలులో మార్పులు చెయ్యలేకపోయాం.\n\nదానికి తాళం వేసిన సిస్టము నిర్వాహకుడు ఇచ్చిన వివరణ ఇది: \"$3\".", "invalidtitle-knownnamespace": "పేరుబరి \"$2\", పాఠ్యము \"$3\" తో కూడిన ఈ శీర్షిక చెల్లనిది", "invalidtitle-unknownnamespace": "అపరిచితమైన పేరుబరి సంఖ్య \"$1\", పాఠ్యము \"$2\" తో కూడిన ఈ శీర్షిక చెల్లనిది", @@ -452,6 +453,7 @@ "createacct-email-ph": "మీ ఈమెయిలు చిరునామాను ఇవ్వండి", "createacct-another-email-ph": "ఈమెయిలు చిరునామాను ఇవ్వండి", "createaccountmail": "ఏదో ఒక తాత్కాలిక సంకేతపదాన్ని వాడి దాన్ని పేర్కొన్న ఈమెయిలు చిరునామాకు పంపించు", + "createaccountmail-help": "సంకేతపదం తెలుసుకోనవసరం లేకుండా వేరొకరి కోసం ఖాతా సృష్టించేందుకు వాడవచ్చు.", "createacct-realname": "అసలు పేరు (ఐచ్చికం)", "createaccountreason": "కారణం:", "createacct-reason": "కారణం", @@ -484,7 +486,7 @@ "wrongpassword": "ఈ సంకేతపదం సరైనది కాదు. దయచేసి మళ్లీ ప్రయత్నించండి.", "wrongpasswordempty": "ఖాళీ సంకేతపదం ఇచ్చారు. మళ్ళీ ప్రయత్నించండి.", "passwordtooshort": "సంకేతపదం కనీసం {{PLURAL:$1|1 అక్షరం|$1 అక్షరాల}} నిడివి ఉండాలి.", - "passwordtoolong": "సంకేతపదంలో {{PLURAL:$1|1 అక్షరం|$1 అక్షరాల}} కన్నా ఎక్కువ ఉండకూడదు.", + "passwordtoolong": "సంకేతపదం పొడవు {{PLURAL:$1|1 అక్షరం|$1 అక్షరాల}} కన్నా ఎక్కువ ఉండకూడదు.", "passwordtoopopular": "మామూలుగా వాడే సంకేతపదాలను వాడే వీల్లేదు. మరింత విశిష్టమైన సంకేతపదాన్ని ఎంచుకోండి.", "password-name-match": "మీ సంకేతపదం మీ వాడుకరిపేరుకి భిన్నంగా ఉండాలి.", "password-login-forbidden": "ఈ వాడుకరిపేరు మరియు సంకేతపదాలను ఉపయోగించడం నిషిద్ధం.", @@ -533,6 +535,7 @@ "resetpass_submit": "సంకేతపదాన్ని మార్చి లాగినవండి", "changepassword-success": "మీ సంకేతపదం మార్చబడింది!", "changepassword-throttled": "కొద్దిసేపటిగా మీరు చాలా లాగిన్ ప్రయత్నాలు చేసారు.\nమళ్ళీ ప్రయత్నించే ముందు $1 ఆగండి.", + "botpasswords": "బాట్ సంకేతపదాలు", "botpasswords-label-appid": "బాట్ పేరు:", "botpasswords-label-create": "సృష్టించు", "botpasswords-label-update": "తాజాకరించు", @@ -550,7 +553,7 @@ "botpasswords-updated-body": "వాడుకరి \"$2\" కు చెందిన \"$1\" అనే బాట్‌ యొక్క బాట్ సంకేతపదాన్ని తాజాకరించాం.", "botpasswords-deleted-title": "బాట్ సంకేతపదాన్ని తొలగించాం", "botpasswords-deleted-body": "వాడుకరి \"$2\" కు చెందిన \"$1\" అనే బాట్‌ యొక్క బాట్ సంకేతపదాన్ని తొలగించాం.", - "botpasswords-newpassword": "<strong>$1</strong> తో లాగినయేందుకు కొత్త సంకేతపదం <strong>$2</strong>. <em>భావి ఉపయోగం కోసం దీన్ని జాగ్రత్త చేసుకోండి.</em>", + "botpasswords-newpassword": "<strong>$1</strong> తో లాగినయేందుకు కొత్త సంకేతపదం <strong>$2</strong>. <em>భావి ఉపయోగం కోసం దీన్ని జాగ్రత్త చేసుకోండి.</em><br> (లాగిన్ పేరుగా వాడుకరిపేరే ఉండాల్సిన పాత బాట్‌ల విషయంలో <strong>$3</strong> ను వాడుకరిపేరుగాను, <strong>$4</strong> ను సంకేతపదంగానూ వాడుకోవచ్చు.)", "botpasswords-not-exist": "వాడుకరి \"$1\" కి \"$2\" అనే బాట్ సంకేతపదం లేదు.", "resetpass_forbidden": "సంకేతపదాలను మార్చటం కుదరదు", "resetpass_forbidden-reason": "సంకేతపదాలు మార్చజాలరు: $1", @@ -564,7 +567,7 @@ "resetpass-abort-generic": "ఓ పొడిగింత (ఎక్స్టెన్‍షన్) సంకేతపదం మార్పిడిని ఆపేసింది.", "resetpass-expired": "మీ సంకేతపదానికి కాలం చెల్లింది. కొత్త సంకేతపదం ఇచ్చి లాగినవండి.", "resetpass-expired-soft": "మీ సంకేతపదానికి కాలం చెల్లింది, కాబట్టి కొత్తది ఇవ్వాలి. కొత్తది ఇప్పుడే ఇవ్వండి లేదా \"{{int:authprovider-resetpass-skip-label}}\" నొక్కి, తరువాత మార్చుకోండి.", - "resetpass-validity-soft": "మీ సంకేతపదానికి కాలం చెల్లింది:$1\nకొత్తది ఇప్పుడే ఇవ్వండి లేదా \"{{int:authprovider-resetpass-skip-label}}\" నొక్కి, తరువాత మార్చుకోండి.", + "resetpass-validity-soft": "మీ సంకేతపదానికి కాలం చెల్లింది:$1\nకొత్తది ఇప్పుడే ఎంచుకోండి, లేదా \"{{int:authprovider-resetpass-skip-label}}\" నొక్కి, తరువాత మార్చుకోండి.", "passwordreset": "సంకేతపదాన్ని మార్చుకోండి", "passwordreset-text-one": "ఈమెయిలు ద్వారా తాత్కాలిక సంకేతపదాన్ని పొందేందుకు ఈ ఫారమును నింపండి.", "passwordreset-text-many": "{{PLURAL:$1|ఈమెయిలు ద్వారా తాత్కాలిక సంకేతపదాన్ని పొందేందుకు ఏదో ఒక ఫీల్డును నింపండి.Fill in one of the fields to receive a temporary password via email.}}", @@ -634,7 +637,7 @@ "selfredirect": "<strong>హెచ్చరిక:</strong> మీరు ఈ పేజీని దానికే దారిమార్పు చేస్తున్నారు. బహుశా మీరు తప్పు దారిమార్పును సూచించి ఉండవచ్చు, లేదా మీరు తప్పుడు పేజీని మారుస్తున్నారు. \nమీరు \"{{int:savearticle}}\" ను నొక్కితే దారిమార్పు పేజీ ఖచ్చితంగా సృష్టించబడుతుంది.", "missingcommenttext": "కింద ఓ వ్యాఖ్య రాయండి.", "missingcommentheader": "<strong>గుర్తు చేస్తున్నాం:</strong> ఈ వ్యాఖ్యకు మీరు విషయం పెట్టలేదు.\n\"{{int:savearticle}}\"ని మళ్ళీ నొక్కితే, అది లేకుండానే మీ మార్పును భద్రపరుస్తాం.", - "summary-preview": "సారాంశం మునుజూపు:", + "summary-preview": "దిద్దుబాటు సారాంశం మునుజూపు:", "subject-preview": "విషయపు మునుజూపు:", "previewerrortext": "మీ మార్పులు మునుజూపు చూడటంలో తప్పిదమయింది.", "blockedtitle": "వాడుకరి నిరోధించబడ్డారు", @@ -717,7 +720,7 @@ "edit-conflict": "దిద్దుబాటు ఘర్షణ.", "edit-no-change": "పాఠ్యంలో మార్పులేమీ చెయ్యలేదు కాబట్టి, మీ మార్పును పట్టించుకోవట్లేదు.", "postedit-confirmation-created": "పేజీ సృష్టించబడినది.", - "postedit-confirmation-restored": "పేజీ పునసృష్టించబడినది.", + "postedit-confirmation-restored": "పేజీని పునస్థాపించాం.", "postedit-confirmation-saved": "మీ మార్పు భద్రమయ్యింది.", "edit-already-exists": "కొత్త పేజీని సృష్టించలేకపోయాం.\nఅది ఇప్పటికే ఉంది.", "defaultmessagetext": "అప్రమేయ సందేశపు పాఠ్యం", @@ -820,7 +823,7 @@ "revdelete-legend": "సందర్శక నిబంధనలు అమర్చు", "revdelete-hide-text": "కూర్పు పాఠ్యం", "revdelete-hide-image": "ఫైలులోని విషయాన్ని దాచు", - "revdelete-hide-name": "పారామితులను, లక్ష్యాన్నీ దాయి", + "revdelete-hide-name": "పారామితులను, లక్ష్యాన్నీ దాచు", "revdelete-hide-comment": "దిద్దుబాటు సారాంశం", "revdelete-hide-user": "దిద్దుబాటు చేసిన వాడుకరి పేరు/ఐపీ చిరునామా", "revdelete-hide-restricted": "డేటాను అందరిలాగే నిర్వాహకులకు కూడా కనబడనివ్వకు", @@ -923,6 +926,7 @@ "search-interwiki-caption": "సోదర ప్రాజెక్టులు", "search-interwiki-default": "$1 నుండి ఫలితాలు:", "search-interwiki-more": "(మరిన్ని)", + "search-interwiki-more-results": "మరిన్ని ఫలితాలు", "search-relatedarticle": "సంబంధించినవి", "searchrelated": "సంబంధించినవి", "searchall": "అన్నీ", @@ -942,7 +946,7 @@ "preferences": "అభిరుచులు", "mypreferences": "అభిరుచులు", "prefs-edits": "దిద్దుబాట్ల సంఖ్య:", - "prefsnologintext2": "మీ అభిరుచులను మార్చుకునేందుకు ప్రవేశించండి.", + "prefsnologintext2": "మీ అభిరుచులను మార్చుకునేందుకు లాగినవండి.", "prefs-skin": "రూపు", "skin-preview": "మునుజూడు", "datedefault": "ఏదైనా పరవాలేదు", @@ -1010,6 +1014,7 @@ "youremail": "ఈమెయిలు:", "username": "{{GENDER:$1|వాడుకరి పేరు}}:", "prefs-memberingroups": "ఈ {{PLURAL:$1|గుంపులో|గుంపులలో}} {{GENDER:$2|సభ్యుడు|సభ్యురాలు}}:", + "group-membership-link-with-expiry": "$1 ($2 వరకు)", "prefs-registration": "నమోదైన సమయం:", "yourrealname": "అసలు పేరు:", "yourlanguage": "భాష:", @@ -1020,7 +1025,7 @@ "badsig": "సంతకం చెల్లనిది.\nHTML ట్యాగులను ఒకసారి సరిచూసుకోండి.", "badsiglength": "మీ సంతకం చాలా పెద్దగా ఉంది.\nఇది తప్పనిసరిగా $1 {{PLURAL:$1|అక్షరం|అక్షరాల}} లోపులోనే ఉండాలి.", "yourgender": "మిమ్మల్ని మీరు ఎలా వర్ణించుకుంటారు?", - "gender-unknown": "సాఫ్టువేరు మిమ్మల్ని సంబోధించేటప్పుడు, వీలైనంతవరకు లింగ తటస్థతను పాటిస్తుంది", + "gender-unknown": "సాఫ్టువేరు మిమ్మల్ని ఉదహరించేటపుడు, వీలైనంతవరకు లింగ తటస్థతను పాటిస్తుంది", "gender-male": "అతను వికీ పేజీలను సరిదిద్దుతాడు", "gender-female": "ఆమె వికీ పేజీలను సరిదిద్దుతుంది", "prefs-help-gender": "ఈ అభిరుచిని అమర్చుకోవడం ఐచ్చికం.\nమిమ్మల్ని సంబోధించేప్పుడూ మిమ్మల్ని పేర్కొనేప్పుడూ వ్యాకరణపరంగా సరైన లింగాన్ని వాడటానికి ఈ విలువ ఉపయోగపడుతుంది.\nఈ సమాచారం బహిరంగం.", @@ -1053,16 +1058,24 @@ "userrights-user-editname": "వాడుకరిపేరును ఇవ్వండి:", "editusergroup": "వాడుకరి గుంపులను చూపించు", "editinguser": "{{GENDER:$1|user}} వాడుకరి హక్కులను మారుస్తున్నారు <strong>[[User:$1|$1]]</strong> $2", - "userrights-editusergroup": "వాడుకరి సమూహాలను మార్చండి", + "userrights-editusergroup": "{{GENDER:$1|వాడుకరి}} సమూహాలను మార్చండి", + "userrights-viewusergroup": "{{GENDER:$1|వాడుకరి}} గుంపులను చూడండి", "saveusergroups": "{{GENDER:$1|వాడుకరి}} గుంపులను భద్రపరచు", "userrights-groupsmember": "సభ్యులు:", "userrights-groupsmember-auto": "సంభావిత సభ్యులు:", - "userrights-groups-help": "ఈ వాడుకరి ఏయే గుంపులలో ఉండాలో మీరు మార్చవచ్చు.\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-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-invalid-expiry": "\"$1\" గుంపుకు ఇచ్చిన కాలం తీరిపోయే వ్యవధి సరైనది కాదు.", + "userrights-expiry-in-past": "\"$1\" గుంపుకు ఇచ్చిన కాలం తీరిపోయే వ్యవధి గతకాలంలో ఉంది.", "userrights-conflict": "వాడుకరి హక్కుల మార్పులలో ఘర్షణ! మీ మార్పులను సమీక్షించి, నిర్ధారించండి.", "group": "గుంపు:", "group-user": "వాడుకరులు", @@ -1184,13 +1197,13 @@ "action-upload_by_url": "ఈ ఫైలుని URL చిరునామా నుండి ఎగుమతి చేసే", "action-writeapi": "వ్రాసే APIని ఉపయోగించే", "action-delete": "ఈ పేజీని తొలగించే", - "action-deleterevision": "ఈ కూర్పుని తొలగించే", + "action-deleterevision": "కూర్పులను తొలగించే", "action-deletelogentry": "చిట్టా పద్దులను తొలగించే", "action-deletedhistory": "పేజీల తొలగించిన చరిత్రని చూసే", "action-deletedtext": "తొలగించిన కూర్పుల పాఠ్యాన్ని చూసే", "action-browsearchive": "తొలగించిన పేజీలలో వెతికే", "action-undelete": "పేజీలను పునఃస్థాపించే", - "action-suppressrevision": "ఈ దాచిన కూర్పుని సమీక్షించి పునఃస్థాపించే", + "action-suppressrevision": "దాచిన కూర్పులను సమీక్షించి, పునఃస్థాపించే", "action-suppressionlog": "ఈ అంతరంగిక చిట్టాను చూసే", "action-block": "ఈ వాడుకరిని మార్పులు చేయడం నుండి నిరోధించే", "action-protect": "ఈ పేజీకి సంరక్షణా స్థాయిని మార్చే", @@ -1230,6 +1243,31 @@ "recentchanges-legend-heading": "<strong>సూచిక :</strong>", "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} ([[Special:NewPages|కొత్త పేజీల జాబితా]]ను కూడా చూడండి)", "recentchanges-submit": "చూపించు", + "rcfilters-filterlist-title": "వడపోతలు", + "rcfilters-highlightmenu-title": "ఒక రంగును ఎంచుకోండి", + "rcfilters-filtergroup-registration": "వాడుకరి నమోదు", + "rcfilters-filter-editsbyself-label": "మీ స్వంత దిద్దుబాట్లు", + "rcfilters-filter-editsbyself-description": "మీ దిద్దుబాట్లు.", + "rcfilters-filter-editsbyother-label": "ఇతరుల దిద్దుబాట్లు", + "rcfilters-filter-editsbyother-description": "ఇతరులు (మీరు కాదు) చేసిన దిద్దుబాట్లు.", + "rcfilters-filtergroup-userExpLevel": "అనుభవ స్థాయి (నమోదైన వాడుకరులకు మాత్రమే)", + "rcfilters-filter-userExpLevel-newcomer-label": "కొత్తవారు", + "rcfilters-filter-userExpLevel-newcomer-description": "10 కంటే తక్కువ దిద్దుబాట్లు, 4 రోజుల కంటే తక్కువ పని.", + "rcfilters-filter-userExpLevel-learner-label": "నేర్చుకుంటున్నవారు", + "rcfilters-filter-userExpLevel-learner-description": "\"కొత్తవారి\" కంటే ఎక్కువ, \"అనుభవజ్ఞులైన వాడుకరుల\" కంటే తక్కువ పనిరోజులు.", + "rcfilters-filter-userExpLevel-experienced-label": "అనుభవజ్ఞులైన వాడుకరులు", + "rcfilters-filter-userExpLevel-experienced-description": "30 రోజుల కంటే ఎక్కువ పని, 500 పైచిలుకు దిద్దుబాట్లు.", + "rcfilters-filtergroup-significance": "ప్రాముఖ్యం", + "rcfilters-filter-minor-label": "చిన్న మార్పులు", + "rcfilters-filter-minor-description": "రచయిత చిన్నవిగా గుర్తు పెట్టిన దిద్దుబాట్లు.", + "rcfilters-filter-major-label": "చిన్నవి కాని దిద్దుబాట్లు", + "rcfilters-filter-major-description": "చిన్నవిగా గుర్తు పెట్టని దిద్దుబాట్లు.", + "rcfilters-filtergroup-changetype": "దిద్దుబాటు రకం", + "rcfilters-filter-pageedits-label": "పేజీ దిద్దుబాట్లు", + "rcfilters-filter-newpages-label": "పేజీల సృష్టి", + "rcfilters-filter-newpages-description": "కొత్త పేజీలను సృష్టించే దిద్దుబాట్లు.", + "rcfilters-filter-categorization-label": "వర్గాల దిద్దుబాట్లు", + "rcfilters-filter-logactions-description": "నిర్వాహక పనులు, ఖాతా పనులు, పేజీ తొలగింపులు, ఎక్కింపులు....", "rcnotefrom": "<strong>$3, $4</strong> తరువాత జరిగిన {{PLURAL:$5|మార్పు|మార్పులు}} కింద ఇచ్చాం (<strong>$1</strong> దాకా చూపించాం).", "rclistfrom": "$3, $2 కు ముందు జరిగిన మార్పులను చూపించు", "rcshowhideminor": "చిన్న మార్పులను $1", @@ -1292,7 +1330,7 @@ "upload-recreate-warning": "<strong>హెచ్చరిక: ఆ పేరుతో ఉన్న దస్త్రాన్ని తరలించడం లేదా తొలగించడం జరిగింది.</strong>\n\nమీ సౌకర్యం కోసం ఈ పేజీ యొక్క తొలగింపు మరియు తరలింపు చిట్టాని ఇక్కడ ఇస్తున్నాం:", "uploadtext": "దస్త్రాలను ఎక్కించడానికి ఈ కింది ఫారాన్ని ఉపయోగించండి.\nగతంలో ఎక్కించిన దస్త్రాలను చూడడానికి లేదా వెతకడానికి [[Special:FileList|ఎక్కించిన దస్త్రాల యొక్క జాబితా]]కు వెళ్ళండి, (పునః)ఎక్కింపులు [[Special:Log/upload|ఎక్కింపుల చిట్టా]] లోనూ తొలగింపులు [[Special:Log/delete|తొలగింపుల చిట్టా]] లోనూ కూడా నమోదవుతాయి.\n\nఒక దస్త్రాన్ని ఏదైనా పుటలో చేర్చడానికి, కింద చూపిన వాటిలో ఏదేనీ విధంగా లింకుని వాడండి:\n* దస్త్రపు పూర్తి కూర్పుని వాడడానికి '''<code><nowiki>[[</nowiki>{{ns:file}}<nowiki>:File.jpg]]</nowiki></code>'''\n* ఎడమ వైపు మార్జినులో 200 పిక్సెళ్ళ వెడల్పుగల బొమ్మ మరియు 'ప్రత్యామ్నాయ పాఠ్యం' అన్న వివరణతో గల పెట్టె కోసం '''<code><nowiki>[[</nowiki>{{ns:file}}<nowiki>:File.png|200px|thumb|left|ప్రత్యామ్నాయ పాఠ్యం]]</nowiki></code>'''\n* దస్త్రాన్ని చూపించకుండా నేరుగా లింకు ఇవ్వడానికి '''<code><nowiki>[[</nowiki>{{ns:media}}<nowiki>:File.ogg]]</nowiki></code>'''", "upload-permitted": "అనుమతించబడిన ఫైలు {{PLURAL:$2|రకం|రకాలు}}: $1.", - "upload-preferred": "అనుమతించే ఫైలు రకాలు: $1.", + "upload-preferred": "అనుమతించే ఫైలు {{PLURAL:$2|రకం|రకాలు}}: $1.", "upload-prohibited": "నిషేధించబడిన ఫైలు {{PLURAL:$2|రకం|రకాలు}}: $1.", "uploadlogpage": "ఎక్కింపుల చిట్టా", "uploadlogpagetext": "ఇటీవల జరిగిన ఫైలు అప్‌లోడుల జాబితా ఇది.\nమరింత దృశ్యాత్మకంగా చూడటం కోసం [[Special:NewFiles|కొత్త ఫైళ్ళ కొలువు]]కు వెళ్ళండి.", @@ -1336,6 +1374,8 @@ "file-thumbnail-no": "ఫైలు పేరు <strong>$1</strong> తో మొదలవుతోంది.\nఅది పరిమాణం తగ్గించిన ''(నఖచిత్రం)'' లాగా అనిపిస్తోంది.\nఈ బొమ్మ యొక్క పూర్తి స్పష్టత కూర్పు ఉంటే, దాన్ని ఎగుమతి చెయ్యండి. లేదా ఫైలు పేరును మార్చండి.", "fileexists-forbidden": "ఈ పేరుతో ఇప్పటికే ఒక ఫైలు ఉంది, దాన్ని తిరగరాయలేరు.\nమీరు ఇప్పటికీ ఈ ఫైలుని ఎగుమతి చేయాలనుకుంటే, వెనక్కి వెళ్ళి మరో పేరుతో ఎగుమతి చేయండి. [[File:$1|thumb|center|$1]]", "fileexists-shared-forbidden": "ఈ పేరుతో ఇప్పటికే ఒక ఫైలు అందరి ఫైళ్ళ ఖజానాలో ఉంది.\nఇప్పటికీ మీ ఫైలుని ఎగుమతి చేయాలనుకుంటే, వెనక్కివెళ్ళి మరో పేరు వాడండి. [[File:$1|thumb|center|$1]]", + "fileexists-no-change": "ఈ ఎక్కింపు, <strong>[[:$1]]</strong> యొక్క ప్రస్తుత కూర్పుకు సరిగ్గా సరిపోలిన కచ్చితమైన నకలు.", + "fileexists-duplicate-version": "ఈ ఎక్కింపు, <strong>[[:$1]]</strong> యొక్క {{PLURAL:$2|పాత కూర్పు ఒకదానికి|పాత కూర్పులకు}} సరిగ్గా సరిపోలిన కచ్చితమైన నకలు.", "file-exists-duplicate": "ఈ ఫైలు క్రింద పేర్కొన్న {{PLURAL:$1|ఫైలుకు|ఫైళ్ళకు}} నకలు:", "file-deleted-duplicate": "గతంలో ఈ ఫైలు లాంటిదే ఒక ఫైలుని ([[:$1]]) తొలగించివున్నారు. మీరు దీన్ని తిరిగి ఎక్కించే ముందు ఆ ఫైలు యొక్క తొలగింపు చరిత్రను చూడండి.", "file-deleted-duplicate-notitle": "సరిగ్గా ఈ ఫైలునే పోలిన మరో ఫైలును గతంలో తొలగించాం. దాని పేరును అణచిపెట్టాం.\nదాన్ని తిరిగి ఎక్కించే ముందు, పరిస్థితిని సమీక్షించేందుకు గాను, అణచబడిన ఫైళ్ళ డేటాను చూడగలిగే వారిని అడగండి.", @@ -1347,7 +1387,7 @@ "uploaddisabledtext": "ఫైళ్ళ ఎక్కింపులను అచేతనం చేసారు.", "php-uploaddisabledtext": "PHPలో ఫైలు ఎక్కింపులు అచేతనమై ఉన్నాయి.\nదయచేసి file_uploads అమరికని చూడండి.", "uploadscripted": "ఈ ఫైల్లో HTML కోడు గానీ స్క్రిప్టు కోడు గానీ ఉంది. వెబ్ బ్రౌజరు దాన్ని పొరపాటుగా అనువదించే అవకాశం ఉంది.", - "uploadscriptednamespace": "ఈ SVG ఫైలులోని పేరుబరి \"$1\" చెల్లనిది", + "uploadscriptednamespace": "ఈ SVG ఫైలులోని పేరుబరి \"<nowiki>$1</nowiki>\" చెల్లనిది", "uploadinvalidxml": "ఎక్కించిన ఫైలులోని XML ను పార్సు చెయ్యలేకపోయాం.", "uploadvirus": "ఈ ఫైలులో వైరస్‌ ఉంది! వివరాలు: $1", "uploadjava": "ఇదొక ZIP ఫైలు, ఇందులో ఒక Java .class ఫైలు ఉంది.\nJava ఫైళ్ళ వలన భద్రతకు తూట్లు పడే అవకాశం ఉంది కాబట్టి, వాటిని ఎక్కించడానికి అనుమతి లేదు.", @@ -1401,7 +1441,7 @@ "backend-fail-read": "దస్త్రము \"$1\" ని చదువలేకపోయాం.", "backend-fail-create": "ఫైలు \"$1\" లో రాయలేకపోయాం.", "backend-fail-maxsize": "\"$1\" ఫైలు {{PLURAL:$2|ఒక బైట్|$2 బైట్ల}} కంటే పెద్దది కావడం చేత దాన్ని రాయలేకపోయాం.", - "backend-fail-readonly": "స్టోరేజి బ్యాక్‍ఎండ్ \"$1\" ప్రస్తుతం రీడ్-ఓన్లీ స్థితిలో ఉంది. దానికి కారణం: \"<em>$2</em>\"", + "backend-fail-readonly": "స్టోరేజి బ్యాక్‍ఎండ్ \"$1\" ప్రస్తుతం రీడ్-ఓన్లీ స్థితిలో ఉంది. దానికి కారణం: <em>$2</em>", "backend-fail-synced": "ఫైలు \"$1\" అంతర్గత స్టోరేజి బ్యాక్‍ఎండ్లలో అసమ స్థితిలో ఉంది", "backend-fail-connect": "స్టోరేజీ బ్యాక్‍ఎండ్ \"$1\" కి కనెక్టు కాలేక పోయాం.", "backend-fail-internal": "స్టోరేజీ బ్యాక్‍ఎండ్ \"$1\" లో ఏదో తెలియని లోపం దొర్లింది.", @@ -1458,7 +1498,7 @@ "nolicense": "దేన్నీ ఎంచుకోలేదు", "licenses-edit": "లైసెన్సు ఎంపికలను సవరించు", "license-nopreview": "(మునుజూపు అందుబాటులో లేదు)", - "upload_source_url": " (సార్వజనికంగా అందుబాటులో ఉన్న, సరైన URL)", + "upload_source_url": "(సరైన, సార్వజనికంగా అందుబాటులో ఉన్న URL నుండి మీరు ఎంచుకున్న ఫైలు)", "upload_source_file": "(మీ కంప్యూటరు నుండి ఎంచుకోబడిన దస్త్రం)", "listfiles-delete": "తొలగించు", "listfiles-summary": "ఈ ప్రత్యేక పేజీ, ఎక్కించిన ఫైళ్ళన్నిటినీ చూపిస్తుంది.", @@ -1515,7 +1555,7 @@ "filerevert-legend": "ఫైలును వెనక్కు తీసుకుపో", "filerevert-intro": "మీరు '''[[Media:$1|$1]]''' ను [$3, $2 నాటి $4 కూర్పు]కు తీసుకు వెళ్తున్నారు.", "filerevert-comment": "కారణం:", - "filerevert-defaultcomment": "$2, $1 నాటి కూర్పుకు తీసుకువెళ్ళాం", + "filerevert-defaultcomment": "$2, $1 ($3) నాటి కూర్పుకు తీసుకువెళ్ళాం", "filerevert-submit": "వెనక్కు తీసుకువెళ్ళు", "filerevert-success": "<strong>[[Media:$1|$1]]</strong> ను [$4 $2 $3 నాటి కూర్పు]కు తీసుకువెళ్ళాం.", "filerevert-badversion": "మీరిచ్చిన టైముస్టాంపుతో ఈ ఫైలుకు స్థానిక కూర్పేమీ లేదు.", @@ -1688,7 +1728,7 @@ "apisandbox-dynamic-error-exists": "\"$1\" అనే పరామితి ఇప్పటికే ఉంది.", "apisandbox-results": "ఫలితాలు", "apisandbox-request-url-label": "అభ్యర్థన URL:", - "apisandbox-request-time": "అభ్యర్ధన సమయం: $1", + "apisandbox-request-time": "అభ్యర్ధన సమయం: {{PLURAL:$1|$1 మి.సె.}}", "apisandbox-continue": "కొనసాగించు", "apisandbox-continue-clear": "తుడిచివేయి", "apisandbox-multivalue-all-namespaces": "$1 (అన్ని పేరుబరులు)", @@ -1805,20 +1845,22 @@ "emailccsubject": "$1 కు మీరు పంపిన సందేశపు ప్రతి: $2", "emailsent": "ఈ-మెయిలు పంపించాం", "emailsenttext": "మీ ఈ-మెయిలు సందేశం పంపబడింది.", - "emailuserfooter": "ఈ ఈ-మెయిలుని $2 కి {{SITENAME}} లోని \"వాడుకరికి ఈమెయిలు\" అనే సౌలభ్యం ద్వారా $1 పంపించారు.", + "emailuserfooter": "ఈ ఈమెయిలును $1, {{GENDER:$2|$2}} కు {{SITENAME}} లోని \"{{int:emailuser}}\" ఫంక్షను ద్వారా {{GENDER:$1|పంపించారు}}. {{GENDER:$2|మీరు}} ఈ ఈమెయిలుకు జవాబు పంపిస్తే, {{GENDER:$2|మీ}} మెయిలును నేరుగా {{GENDER:$1|ఒరిజినల్ సెండరుకు}} పంపిస్తాం. దీనితో, {{GENDER:$2|మీ}} ఈమెయిలు అడ్రసు {{GENDER:$1|వారికి}} తెలిసిపోతుంది.", "usermessage-summary": "వ్యవస్థ సందేశాన్ని వదిలివేస్తున్నాం.", "usermessage-editor": "వ్యవస్థ సందేశకులు", "watchlist": "వీక్షణ జాబితా", "mywatchlist": "వీక్షణ జాబితా", "watchlistfor2": "$1 కొరకు $2", "nowatchlist": "మీ వీక్షణ జాబితా ఖాళీగా ఉంది.", - "watchlistanontext": "మీ వీక్షణ జాబితా లోని అంశాలను చూసేందుకు లేదా మార్చేందుకు మీరు $1.", + "watchlistanontext": "మీ వీక్షణ జాబితా లోని అంశాలను చూసేందుకు లేదా మార్చేందుకు లాగినవండి.", "watchnologin": "లాగిన్‌ అయిలేరు", "addwatch": "వీక్షణ జాబితాలో చేర్చు", - "addedwatchtext": "\"[[:$1]]\" అనే పుట మీ [[Special:Watchlist|వీక్షణ జాబితా]]లో చేరింది.\nభవిష్యత్తులో ఈ పుటకి మరియు సంబంధిత చర్చాపుటకి జరిగే మార్పులు అక్కడ కనిపిస్తాయి.", + "addedwatchtext": "\"[[:$1]]\" అనే పేజీని, దాని చర్చ పేజీనీ మీ [[Special:Watchlist|వీక్షణ జాబితా]]లో చేర్చాం.", + "addedwatchtext-talk": "\"[[:$1]]\" అనే పేజీని, దాని అనుబంధ పేజీనీ మీ [[Special:Watchlist|వీక్షణ జాబితా]]లో చేర్చాం.", "addedwatchtext-short": "\"$1\" పేజీ మీ వీక్షణజాబితాకు చేర్చబడినది.", "removewatch": "వీక్షణ జాబితా నుండి తొలగించు", - "removedwatchtext": "\"[[:$1]]\" అనే పేజీ [[Special:Watchlist|మీ వీక్షణ జాబితా]] నుండి తొలగించబడినది.", + "removedwatchtext": "\"[[:$1]]\" అనే పేజీని, దాని చర్చ పేజీనీ [[Special:Watchlist|మీ వీక్షణ జాబితా]] నుండి తొలగించాం.", + "removedwatchtext-talk": "\"[[:$1]]\" అనే పేజీని, దాని అనుబంధ పేజీనీ [[Special:Watchlist|మీ వీక్షణ జాబితా]] నుండి తొలగించాం.", "removedwatchtext-short": "\"$1\" పేజీ మీ వీక్షణ జాబితానుండి తొలగించబడినది.", "watch": "వీక్షించు", "watchthispage": "ఈ పుట మీద కన్నేసి ఉంచు", @@ -1829,7 +1871,7 @@ "watchlist-details": "మీ వీక్షణ జాబితాలో {{PLURAL:$1|ఒక పేజీ ఉంది|$1 పేజీలు ఉన్నాయి}}, చర్చా పేజీలని వదిలేసి.", "wlheader-enotif": "ఈ-మెయిలు గమనికలు పంపబడతాయి.", "wlheader-showupdated": "మీ గత సందర్శన తరువాత మారిన పేజీలు <strong>బొద్దు</strong>గా చూపించబడ్డాయి.", - "wlnote": "$3 నాడు $4 సమయానికి, గడచిన {{PLURAL:$2|గంటలో|'''$2''' గంటలలో}} జరిగిన {{PLURAL:$1|ఒక్క మార్పు కింద ఉంది|'''$1''' మార్పులు కింద ఉన్నాయి}}.", + "wlnote": "$3, $4 à°² సమయానికి, అంతకు ముందరి {{PLURAL:$2|గంటలో|<strong>$2</strong> గంటల్లో}} జరిగిన {{PLURAL:$1|మార్పును|<strong>$1</strong> మార్పులను}} కింద ఇచ్చాం.", "wlshowlast": "గత $1 గంటల $2 రోజులకు చూపించు", "watchlist-hide": "దాచు", "watchlist-submit": "చూపించు", @@ -1838,6 +1880,7 @@ "wlshowhidebots": "బాట్‌లు", "wlshowhideliu": "నమోదైన వాడుకరులు", "wlshowhideanons": "అజ్ఞాత వాడుకరులు", + "wlshowhidepatr": "నిఘాలో ఉన్న మార్పులు", "wlshowhidemine": "నా మార్పులు", "wlshowhidecategorization": "పేజీ వర్గీకరణ", "watchlist-options": "వీక్షణ జాబితా ఎంపికలు", @@ -1865,7 +1908,7 @@ "deletepage": "పేజీని తొలగించు", "confirm": "ధృవీకరించు", "excontent": "ఉన్న విషయ సంగ్రహం: '$1'", - "excontentauthor": "ఉన్న విషయ సంగ్రహం: \"$1\" (మరియు దీని ఒకే ఒక్క రచయిత \"[[Special:Contributions/$2|$2]]\")", + "excontentauthor": "ఉన్న పాఠ్యం: \"$1\", ఉన్న ఒకే ఒక్క రచయిత: \"[[Special:Contributions/$2|$2]]\" ([[User talk:$2|చర్చ]])", "exbeforeblank": "ఖాళీ చెయ్యకముందు పేజీలో ఉన్న విషయ సంగ్రహం: '$1'", "delete-confirm": "\"$1\"ని తొలగించు", "delete-legend": "తొలగించు", @@ -1901,15 +1944,32 @@ "rollback-success": "$1 చేసిన దిద్దుబాట్లను వెనక్కు తీసుకెళ్ళాం; తిరిగి $2 చేసిన చివరి కూర్పుకు మార్చాం.", "sessionfailure-title": "సెషను వైఫల్యం", "sessionfailure": "మీ ప్రవేశపు సెషనుతో ఏదో సమస్య ఉన్నట్లుంది;\nసెషను హైజాకు కాకుండా ఈ చర్యను రద్దు చేసాం.\n\"back\" కొట్టి, ఎక్కడి నుండి వచ్చారో ఆ పేజీని మళ్ళీ లోడు చేసి, తిరిగి ప్రయత్నించండి.", + "changecontentmodel-legend": "కంటెంటు మోడల్‌ మార్పు", "changecontentmodel-title-label": "పేజీ శీర్షిక", + "changecontentmodel-model-label": "కొత్త కంటెంటు మోడల్", "changecontentmodel-reason-label": "కారణం:", "changecontentmodel-submit": "మార్చు", + "changecontentmodel-success-title": "కంటెంటు మోడల్‌ను మార్చాం", + "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": "పేజీల్లో జరిగిన కంటెంటు మోడలు మార్పుల జాబితాను ఈ పేజీలో చూపిస్తాం. డిఫాల్టు కాని కంటెంటు మోడలుతో సృష్టించిన పేజీల జబితా కూడా ఈ పేజీలో ఉంటుంది.", + "logentry-contentmodel-new": "$1, పేజీ $3 ను డిఫాల్టు కాని కంటెంటు మోడలు \"$5\" తో {{GENDER:$2|సృష్టించారు}}", + "logentry-contentmodel-change": "$1 పేజీ $3 యొక్క కంటెంటు మోడలును \"$4\" నుండి \"$5\" కు {{GENDER:$2|మార్చారు}}", + "logentry-contentmodel-change-revertlink": "తిప్పికొట్టు", + "logentry-contentmodel-change-revert": "తిప్పికొట్టు", "protectlogpage": "సంరక్షణల చిట్టా", "protectlogtext": "ఈ క్రింద ఉన్నది పేజీల సంరక్షణలకు జరిగిన మార్పుల జాబితా.\nప్రస్తుతం అమలులో ఉన్న సంరక్షణలకై [[Special:ProtectedPages|సంరక్షిత పేజీల జాబితా]]ను చూడండి.", "protectedarticle": "\"[[$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-notallowed": "\"$1\" యొక్క సంరక్షణ స్థాయి", "prot_1movedto2": "$1, $2కు తరలించబడింది", @@ -1927,7 +1987,7 @@ "protect-locked-blocked": "నిరోధించబడి ఉండగా మీరు సంరక్షణ స్థాయిని మార్చలేరు. ప్రస్తుతం '''$1''' పేజీకి ఉన్న సెట్టింగులివి:", "protect-locked-dblock": "ప్రస్తుతం అమల్లో ఉన్న డేటాబేసు లాకు కారణంగా సంరక్షణ స్థాయిని సెట్ చెయ్యడం కుదరదు. ప్రస్తుతం '''$1''' పేజీకి ఉన్న సెట్టింగులివి:", "protect-locked-access": "మీ ఖాతకు పేజీ రక్షన స్థాయిని మార్చే హక్కులు లేవు.\n'''$1''' అనే పేరున్న ఈ పేజీకి ప్రస్తుతం ఈ రక్షణ ఉంది:", - "protect-cascadeon": "ఈ పేజీ కాస్కేడింగు రక్షణలో ఉన్న ఈ కింది {{PLURAL:$1|పేజీకి|పేజీలకు}} జతచేయటం వలన, ప్రస్తుతం రక్షణలో ఉంది. మీరు ఈ పేజీ యొక్క రక్షణ స్థాయిన మార్చవచ్చు, దాని వలన కాస్కేడింగు రక్షణకు ఎటువంటి సమస్య ఉండదు.", + "protect-cascadeon": "ఈ పేజీ, కాస్కేడింగు రక్షణలో ఉన్న {{PLURAL:$1|పేజీలో|పేజీల్లో}} ట్రాన్స్‌క్లూడు అయి ఉంది కాబట్టి, ప్రస్తుతం ఇది కూడా సంరక్షణలో ఉంది.\nఈ పేజీ సంరక్షణ స్థాయిలో చేసే మార్పులు కాస్కేడింగు సంరక్షణను ప్రభావితం చెయ్యవు.", "protect-default": "అందరు వాడుకరులను అనుమతించు", "protect-fallback": "\"$1\" అనుమతి ఉన్న వాడుకరులను మాత్రమే అనుమతించు", "protect-level-autoconfirmed": "స్వయన్నిర్ధారిత వాడుకరులను మాత్రమే అనుమతించు", @@ -1966,7 +2026,7 @@ "undeletepagetext": "క్రింది {{PLURAL:$1|పేజీని|$1 పేజీలను}} తొలగించారు, కానీ పునఃస్థాపనకు వీలుగా భండాగారంలో ఉన్నాయి.\nభండాగారం నిర్ణీత వ్యవధులలో పూర్తిగా ఖాళీ చేయబడుతుంటుంది.", "undelete-fieldset-title": "కూర్పులను పునఃస్థాపించండి", "undeleteextrahelp": "పేజీ యొక్క మొత్తం చరిత్రను పునస్థాపించేందుకు, చెక్ బాక్సులన్నిటినీ ఖాళీగా ఉంచి, '''''{{int:undeletebtn}}''''' నొక్కండి.\nకొన్ని కూర్పులను మాత్రమే పుసస్థాపించదలిస్తే, సదరు కూర్పులకు ఎదురుగా ఉన్న చెక్ బాక్సులలో టిక్కు పెట్టి, '''''{{int:undeletebtn}}''''' నొక్కండి.", - "undeleterevisions": "$1 {{PLURAL:$1|కూర్పును|కూర్పులను}} భాండారానికి చేర్చాం", + "undeleterevisions": "$1, {{PLURAL:$1|కూర్పును|కూర్పులను}} తొలగించారు", "undeletehistory": "పేజీని పునఃస్థాపిస్తే, అన్ని సంచికలూ పేజీచరిత్ర దినచర్యలోకి పునఃస్థాపించబడతాయి.\nతుడిచివేయబడిన తరువాత, అదే పేరుతో వేరే పేజీ సృష్టించబడి ఉంటే, పునఃస్థాపించిన సంచికలు ముందరి చరిత్రలోకి వెళ్తాయి.", "undeleterevdel": "తొలగింపును రద్దు చేస్తున్నప్పుడు, అన్నిటికంటే పైనున్న కూర్పు పాక్షికంగా తొలగింపబడే పక్షంలో తొలగింపు-రద్దు జరగదు. అటువంటి సందర్భాల్లో, తొలగించిన కూర్పులలో కొత్తవాటిని ఎంచుకోకుండా ఉండాలి, లేదా దాపు నుండి తీసెయ్యాలి.", "undeletehistorynoadmin": "ఈ పుటని తొలగించివున్నారు.\nతొలగింపునకు కారణం, తొలగింపునకు క్రితం ఈ పుటకి మార్పులు చేసిన వాడుకరుల వివరాలతో సహా, ఈ కింద సారాంశంలో చూపబడింది.\nతొలగించిన కూర్పులలోని వాస్తవ పాఠ్యం నిర్వాహకులకు మాత్రమే అందుబాటులో ఉంటుంది.", @@ -2055,7 +2115,7 @@ "unblock": "వాడుకరిపై నిరోధాన్ని తీసెయ్యండి", "blockip": "{{GENDER:$1|వాడుకరిని}} నిరోధించు", "blockip-legend": "వాడుకరి నిరోధం", - "blockiptext": "ఏదైనా ప్రత్యేక ఐపీ చిరునామానో లేదా వాడుకరిపేరునో రచనలు చెయ్యకుండా నిరోధించాలంటే కింది ఫారాన్ని వాడండి.\nకేవలం దుశ్చర్యల నివారణ కోసం మాత్రమే దీన్ని వాడాలి, అదికూడా [[{{MediaWiki:Policy-url}}|విధానాన్ని]] అనుసరించి మాత్రమే.\nస్పష్టమైన కారణాన్ని కింద రాయండి (ఉదాహరణకు, దుశ్చర్యలకు పాల్పడిన పేజీలను ఉదహరించండి).", + "blockiptext": "ఏదైనా ప్రత్యేక ఐపీ చిరునామానో లేదా వాడుకరిపేరునో రచనలు చెయ్యకుండా నిరోధించాలంటే కింది ఫారాన్ని వాడండి.\nకేవలం దుశ్చర్యల నివారణ కోసం మాత్రమే దీన్ని వాడాలి, అదికూడా [[{{MediaWiki:Policy-url}}|విధానాన్ని]] అనుసరించి మాత్రమే.\nస్పష్టమైన కారణాన్ని కింద రాయండి (ఉదాహరణకు, దుశ్చర్యలకు పాల్పడిన పేజీలను ఉదహరించండి).\n[https://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing CIDR] సిన్‌టాక్సును వాడి ఐపీ అడ్రసు శ్రేణిని నిరోధించవచ్చు; అనుమతించబడ్డ అతిపెద్ద శ్రేణి: IPv4 కు /$1, IPv6 కు /$2.", "ipaddressorusername": "ఐపీ చిరునామా లేదా వాడుకరిపేరు:", "ipbexpiry": "అంతమయ్యే గడువు", "ipbreason": "కారణం:", @@ -2090,6 +2150,7 @@ "unblocked": "[[User:$1|$1]]పై నిరోధం తొలగించబడింది", "unblocked-range": "$1 పై నిరోధాన్ని తీసేసాం", "unblocked-id": "$1 అనే నిరోధాన్ని తొలగించాం", + "unblocked-ip": "[[Special:Contributions/$1|$1]] పైనున్న నిరోధాన్ని ఎత్తివేసాం.", "blocklist": "నిరోధిత వాడుకరులు", "ipblocklist": "నిరోధించబడిన వాడుకరులు", "ipblocklist-legend": "నిరోధించబడిన వాడుకరిని వెతకండి", @@ -2128,7 +2189,7 @@ "reblock-logentry": "[[$1]] కై నిరోధపు అమరికలను $2 $3 గడువుతో మార్చారు", "blocklogtext": "వాడుకరుల నిరోధాలు, పునస్థాపనల చిట్టా ఇది. \nఆటోమాటిక్‌గా నిరోధానికి గురైన ఐ.పి. చిరునామాలు ఈ జాబితాలో ఉండవు. \nప్రస్తుతం అమల్లో ఉన్న నిరోధాలు, నిషేధాల కొరకు [[Special:BlockList|నిరోధాల జాబితా]]ను చూడండి.", "unblocklogentry": "$1పై నిరోధం తొలగించబడింది", - "block-log-flags-anononly": "అజ్ఞాత వాడుకర్లు మాత్రమే", + "block-log-flags-anononly": "అజ్ఞాత వాడుకరులు మాత్రమే", "block-log-flags-nocreate": "ఖాతా సృష్టించడాన్ని అశక్తం చేసాం", "block-log-flags-noautoblock": "ఆటోమాటిక్ నిరోధాన్ని అశక్తం చేసాం", "block-log-flags-noemail": "ఈ-మెయిలుని నిరోధించాం", @@ -2172,9 +2233,9 @@ "lockedbyandtime": "($2 à°¨ $3 వద్ద {{GENDER:$1|$1}} ద్వారా)", "move-page": "$1 తరలింపు", "move-page-legend": "పేజీని తరలించు", - "movepagetext": "కింది ఫారం ఉపయోగించి, ఓ పేజీ పేరు మార్చవచ్చు. దాంతో పాటు దాని చరిత్ర అంతా కొత్త పేజీ చరిత్రగా మారుతుంది.\nపాత పేజీ కొత్త దానికి దారిమార్పు పేజీ అవుతుంది.\nపాత పేజీకి ఉన్న దారిమార్పు పేజీలను ఆటోమెటిగ్గా సరిచేయవచ్చు.\nఆలా చేయవద్దనుకుంటే, [[Special:DoubleRedirects|జమిలి]] లేదా [[Special:BrokenRedirects|పనిచేయని దారిమార్పులు]] ఉన్నాయేమో సరిచూసుకోండి.\nలింకులన్నీ అనుకున్నట్లుగా చేరవలసిన చోటికే చేరుతున్నాయని నిర్ధారించుకోవలసిన బాధ్యత మీదే.\n\nఒకవేళ కొత్త పేరుతో ఇప్పటికే ఒక పేజీ ఉండి ఉంటే (అది గత మార్పుల చరిత్ర లేని ఖాళీ పేజీనో లేదా దారిమార్పు పేజీనో కాకపోతే) తరలింపు '''జరగదు'''.\nఅంటే మీరు పొరపాటు చేస్తే కొత్త పేరును మార్చి తిరిగి పాత పేరుకు తీసుకురాగలరు కానీ ఇప్పటికే వున్న పేజీని తుడిచివేయలేరు.\n\n<strong>హెచ్చరిక!</strong>\nఇది జనరంజకమైన పేజీలకు అనుకోని, తీవ్రమైన మార్పు కావచ్చు;\nదాని పరిణామాలను అర్ధం చేసుకుని ముందుకుసాగండి.", - "movepagetext-noredirectfixer": "కింది ఫారాన్ని వాడి, ఓ పేజీ పేరు మార్చవచ్చు. దాని చరిత్ర పూర్తిగా కొత్త పేరుకు తరలిపోతుంది. \nపాత శీర్షిక కొత్తదానికి దారిమార్పు పేజీగా మారిపోతుంది.\n[[Special:DoubleRedirects|double]] లేదా [[Special:BrokenRedirects|broken redirects]] లను చూడటం మరువకండి.\nలింకులు వెళ్ళాల్సిన చోటికి వెళ్తున్నాయని నిర్ధారించుకోవాల్సిన బాధ్యత మీదే.\nకొత్త పేరుతో ఈసరికే ఏదైనా పేజీ ఉంటే - అది ఖాళీగా ఉన్నా లేక మార్పుచేర్పుల చరిత్ర ఏమీ లేని దారిమార్పు పేజీ అయినా తప్ప- తరలింపు ’’’జరుగదు’’’ అని గమనించండి.\nఅంటే, ఏదైనా పొరపాటు జరిగితే పేరును తిరిగి పాత పేరుకే మార్చగలరు తప్ప, ఈపాటికే ఉన్న పేజీపై ఓవరరైటు చెయ్యలేరు.\n\n'''హెచ్చరిక!'''\nబహుళ వ్యాప్తి పొందిన ఓ పేజీలో ఈ మార్పు చాలా తీవ్రమైనది, ఊహించనిదీ అవుతుంది.\nదాని పర్యవసానాలు అర్థం చేసుకున్నాకే ముందుకు వెళ్ళండి.", - "movepagetalktext": "దానితో పాటు సంబంధిత చర్చా పేజీ కూడా ఆటోమాటిక్‌‌గా తరలించబడుతుంది, '''కింది సందర్భాలలో తప్ప:'''\n*ఒక నేంస్పేసు నుండి ఇంకోదానికి తరలించేటపుడు,\n*కొత్త పేరుతో ఇప్పటికే ఒక చర్చా పేజీ ఉంటే,\n*కింది చెక్‌బాక్సులో టిక్కు పెట్టకపోతే.\n\nఆ సందర్భాలలో, మీరు చర్చా పేజీని కూడా పనిగట్టుకుని తరలించవలసి ఉంటుంది, లేదా ఏకీకృత పరచవలసి ఉంటుంది.", + "movepagetext": "కింది ఫారాన్ని ఉపయోగించి, ఓ పేజీ పేరు మార్చవచ్చు. దాని చరిత్ర పూర్తిగా కొత్త పేరుకు తరలిపోతుంది. \nపాత శీర్షిక, కొత్తదానికి దారిమార్పు పేజీగా మారిపోతుంది.\nపాత పేజీకి ఉన్న దారిమార్పు పేజీలను ఆటోమాటిగ్గా సరిచేయవచ్చు.\nఆలా చేయవద్దనుకుంటే, [[Special:DoubleRedirects|జమిలి]] లేదా [[Special:BrokenRedirects|పనిచేయని దారిమార్పులు]] ఉన్నాయేమో సరిచూసుకోండి.\nలింకులు వెళ్ళాల్సిన చోటికి వెళ్తున్నాయని నిర్ధారించుకోవాల్సిన బాధ్యత మీదే.\n\nఒకవేళ కొత్త పేరుతో ఇప్పటికే ఒక పేజీ ఉండి ఉంటే (అది గత మార్పుల చరిత్ర లేని ఖాళీ పేజీనో లేదా దారిమార్పు పేజీనో కాకపోతే) తరలింపు '''జరగదు'''.\nఅంటే మీరు పొరపాటు చేస్తే కొత్త పేరును మార్చి తిరిగి పాత పేరుకు తీసుకురాగలరు గానీ, ఇప్పటికే వున్న పేజీని తుడిచివేయలేరు.\n\n<strong>గమనిక!</strong>\nజనరంజకమైన పేజీల్లో ఇది అనుకోని, తీవ్రమైన మార్పు కావచ్చు;\nదాని పరిణామాలను అర్థం చేసుకుని ముందుకు సాగండి.", + "movepagetext-noredirectfixer": "కింది ఫారాన్ని వాడి, ఓ పేజీ పేరు మార్చవచ్చు. దాని చరిత్ర పూర్తిగా కొత్త పేరుకు తరలిపోతుంది. \nపాత శీర్షిక కొత్తదానికి దారిమార్పు పేజీగా మారిపోతుంది.\n[[Special:DoubleRedirects|జమిలి]] లేదా [[Special:BrokenRedirects|పనిచేయని దారిమార్పులు]] లను చూడటం మరువకండి.\nలింకులు వెళ్ళాల్సిన చోటికి వెళ్తున్నాయని నిర్ధారించుకోవాల్సిన బాధ్యత మీదే.\nకొత్త పేరుతో ఈసరికే ఏదైనా పేజీ ఉంటే - అది మార్పుచేర్పుల చరిత్ర ఏమీ లేని దారిమార్పు పేజీ అయినా తప్ప- తరలింపు <strong>జరుగదు</strong> అని గమనించండి.\nఅంటే, ఏదైనా పొరపాటు జరిగితే పేరును తిరిగి పాత పేరుకే మార్చగలరు తప్ప, ఈపాటికే ఉన్న పేజీని తుడిచివేయలేరు.\n\n<strong>గమనిక:</strong>\nబహుళ వ్యాప్తి పొందిన ఓ పేజీలో ఈ మార్పు చాలా తీవ్రమైనది, ఊహించనిదీ అవుతుంది.\nదాని పర్యవసానాలు అర్థం చేసుకున్నాకే ముందుకు వెళ్ళండి.", + "movepagetalktext": "ఈ పెట్టెను చెక్ చేస్తే, సంబంధిత చర్చా పేజీ కూడా ఆటోమాటిక్‌‌గా తరలించబడుతుంది, గమ్యంలో ఈ సరికే చర్చ పేజీ ఉంటే తప్ప.\nఆ సందర్భంలో, మీరు చర్చా పేజీని కూడా పనిగట్టుకుని తరలించడమో, విలీనం చెయ్యడమో చెయ్యాల్సి ఉంటుంది.", "moveuserpage-warning": "'''హెచ్చరిక:''' మీరు ఒక వాడుకరి పేజీని తరలించబోతున్నారు. పేజీ మాత్రమే తరలించబడుతుందనీ, వాడుకరి పేరుమార్పు జరగదనీ గమనించండి.", "movecategorypage-warning": "<strong>హెచ్చరిక:</strong> మీరు ఓ వర్గం పేజీని తరలించబోతున్నారు. కేవలం పేజీ మాత్రమే తరలుతుందని, పాత వర్గంలో ఉన్న పేజీలేవీ కొత్త వర్గంలోకి <em>చేరవని</em> గ్రహించండి.", "movenologintext": "పేజీని తరలించడానికి మీరు [[Special:UserLogin|లాగిన్‌]] అయిఉండాలి.", @@ -2184,6 +2245,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": "పేజీని తరలించు", @@ -2204,10 +2267,11 @@ "movelogpagetext": "కింద తరలించిన పేజీల జాబితా ఉన్నది.", "movesubpage": "{{PLURAL:$1|ఉపపేజీ|ఉపపేజీలు}}", "movesubpagetext": "ఈ పేజీకి క్రింద చూపించిన $1 {{PLURAL:$1|ఉపపేజీ ఉంది|ఉపపేజీలు ఉన్నాయి}}.", + "movesubpagetalktext": "సంబంధిత చర్చా పేజీకి కింద చూపిన $1 {{PLURAL:$1|ఉపపేజీ ఉంది|ఉపపేజీలున్నాయి}}.", "movenosubpage": "ఈ పేజీకి ఉపపేజీలు ఏమీ లేవు.", "movereason": "కారణం:", "revertmove": "వెనక్కు తిప్పు", - "delete_and_move_text": "==తొలగింపు అవసరం==\n\nఉద్దేశించిన వ్యాసం \"[[:$1]]\" ఇప్పటికే ఉనికిలో ఉంది. ప్రస్తుత తరలింపుకు వీలుగా దాన్ని తొలగించేయమంటారా?", + "delete_and_move_text": "గమ్యపు పేజీ \"[[:$1]]\" ఇప్పటికే ఉనికిలో ఉంది. \nప్రస్తుత తరలింపుకు వీలుగా దాన్ని తొలగించేయమంటారా?", "delete_and_move_confirm": "అవును, పేజీని తొలగించు", "delete_and_move_reason": "\"[[$1]]\"ను తరలించడానికి వీలుగా తొలగించారు", "selfmove": "మూలం, గమ్యం పేర్లు ఒకటే; పేజీని దాని పైకే తరలించడం కుదరదు.", @@ -2225,7 +2289,7 @@ "move-leave-redirect": "పాత పేజీని దారిమార్పుగా ఉంచు", "protectedpagemovewarning": "'''హెచ్చరిక:''' ఈ పేజీని సంరక్షించారు కనుక నిర్వాహక హక్కులు కలిగిన వాడుకరులు మాత్రమే దీన్ని తరలించగలరు.\nమీ సమాచారం కోసం చివరి చిట్టా పద్దుని ఇక్కడ ఇస్తున్నాం:", "semiprotectedpagemovewarning": "'''గమనిక:''' ఈ పేజీని సంరక్షించారు కనుక నమోదైన వాడుకరులు మాత్రమే దీన్ని తరలించగలరు.\nమీ సమాచారం కోసం చివరి చిట్టా పద్దుని ఇక్కడ ఇస్తున్నాం:", - "move-over-sharedrepo": "== ఫైలు ఉంది ==\n[[:$1]] సామూహిక నిక్షేపంలో ఉంది. ఈ పేరుతో మరొక ఫైలును తరలిస్తే అది ఆ సామూహిక ఫైలును ఓవర్‌రైడు చేస్తుంది.", + "move-over-sharedrepo": "[[:$1]] సామూహిక నిక్షేపంలో ఉంది. ఈ పేరుకు మరొక ఫైలును తరలిస్తే అది ఆ సామూహిక ఫైలును ఓవర్‌రైడు చేస్తుంది.", "file-exists-sharedrepo": "ఎంచుకున్న ఫైలు పేరు ఇప్పటికే సామాన్య భాండాగారంలో వాడుకలో ఉంది.\nదయచేసి మరొక పేరుని ఎంచుకోండి.", "export": "పేజీల ఎగుమతి", "exporttext": "ఎంచుకున్న పేజీ లేదా పేజీలలోని వ్యాసం మరియు పేజీ చరితం లను XML లో ఎగుమతి చేసుకోవచ్చు. MediaWiki ని ఉపయోగించి Special:Import page ద్వారా దీన్ని వేరే వికీ లోకి దిగుమతి చేసుకోవచ్చు.\n\nపేజీలను ఎగుమతి చేసందుకు, కింద ఇచ్చిన టెక్స్టు బాక్సులో పేజీ పేర్లను లైనుకో పేరు చొప్పున ఇవ్వండి. ప్రస్తుత కూర్పుతో పాటు పాత కూర్పులు కూడా కావాలా, లేక ప్రస్తుత కూర్పు మాత్రమే చాలా అనే విషయం కూడా ఇవ్వవచ్చు.\n\nరెండో పద్ధతిలో అయితే, పేజీ యొక్క లింకును కూడా వాడవచ్చు. ఉదాహరణకు, \"[[{{MediaWiki:Mainpage}}]]\" కోసమైతే [[{{#Special:Export}}/{{MediaWiki:Mainpage}}]] అని ఇవ్వవచ్చు.", @@ -2241,6 +2305,7 @@ "export-download": "ఫైలుగా భద్రపరచు", "export-templates": "మూసలను కలుపు", "export-pagelinks": "ఈ లోతు వరకు లింకై ఉన్న పేజీలను చేర్చు:", + "export-manual": "పేజీలను మానవికంగా చేర్చండి:", "allmessages": "అన్ని సిస్టం సందేశాలు", "allmessagesname": "పేరు", "allmessagesdefault": "అప్రమేయ సందేశపు పాఠ్యం", @@ -2265,6 +2330,7 @@ "thumbnail-temp-create": "తాత్కాలిక థంబ్‍నెయిల్ ఫైలును సృష్టించలేకపోయాం", "thumbnail-dest-create": "థంబ్‍నెయిలును గమ్యస్థానంలో భద్రపరచలేకపోయాం", "thumbnail_invalid_params": "నఖచిత్రాలకు సరయిన పారామీటర్లు లేవు", + "thumbnail_toobigimagearea": "$1 కంటే పెద్ద కొలతలు గల దస్త్రం", "thumbnail_dest_directory": "గమ్యస్థానంలో డైరెక్టరీని సృష్టించలేకపోయాం", "thumbnail_image-type": "ఈ బొమ్మ రకానికి మద్దతు లేదు", "thumbnail_gd-library": "అసంపూర్ణ GD సంచయపు ఏర్పాటు: $1 ఫంక్షను లేదు.", @@ -2272,7 +2338,7 @@ "thumbnail_image-failure-limit": "ఈ థంబ్‍నెయిల్‍ను రెండరు చెయ్యడానికి చాలా ఎక్కువ విఫలయత్నాలు ($1 లేదా అంతకంటే ఎక్కువ) జరిగాయి. కాస్తాగి మళ్ళీ ప్రయత్నించండి.", "import": "పేజీలను దిగుమతి చేసుకోండి", "importinterwiki": "మరొక వికీ నుండి దిగుమతి", - "import-interwiki-text": "దిగుమతి చేసుకోవడానికి ఒక వికీని మరియు అందులోని పేజీని ఎంచుకోండి.\nకూర్పుల తేదీలు మరియు మార్పులు చేసిన వారి పేర్లు భద్రపరచబడతాయి.\nఇతర వికీలనుండి చేస్తున్న దిగుమతుల చర్యలన్నీ [[Special:Log/import|దిగుమతుల చిట్టా]]లో నమోదవుతాయి.", + "import-interwiki-text": "దిగుమతి చేసుకోవడానికి ఓ వికీని, ఓ పేజీనీ ఎంచుకోండి.\nకూర్పుల తేదీలను, మార్పులు చేసిన వారి పేర్లనూ భద్రపరుస్తాం.\nఇతర వికీలనుండి చేసిన దిగుమతులన్నీ [[Special:Log/import|దిగుమతుల చిట్టా]]లో నమోదవుతాయి.", "import-interwiki-sourcewiki": "మూల వికీ:", "import-interwiki-sourcepage": "మూల పేజీ:", "import-interwiki-history": "ఈ పేజీ యొక్క అన్ని చారిత్రక కూర్పులను కాపీ చెయ్యి", @@ -2293,7 +2359,7 @@ "importcantopen": "దిగుమతి చేయబోతున్న ఫైలును తెరవలేకపోతున్నాను", "importbadinterwiki": "చెడు అంతర్వికీ లింకు", "importsuccess": "దిగుమతి పూర్తయ్యింది!", - "importnosources": "No transwiki import sources have been defined and direct history uploads are disabled.\nఎటువంటి అంతర్వికీ దిగుమతి మూలాలను పేర్కొనకపోవటం వలన, ప్రత్యక్ష చరిత్ర అప్లోడులను నిలిపివేశాం.", + "importnosources": "ఏ వికీనుండి దిగుమతి చేసుకోవాలో సూచించలేదు. సూటి చరిత్ర ఎక్కింపులను అచేతనం చేసాం.", "importnofile": "ఎటువంటి దిగుమతి ఫైలునూ అప్లోడుచేయలేదు.", "importuploaderrorsize": "దిగుమతి ఫైలు అప్లోడు ఫలించలేదు. ఈ ఫైలు అప్లోడు ఫైలుకు నిర్దేశించిన పరిమాణం కంటే పెద్దా ఉంది.", "importuploaderrorpartial": "దిగుమతి ఫైలు అప్లోడు ఫలించలేదు. ఈ ఫైలులో కొంత భాగాన్ని మాత్రమే అప్లోడు చేయగలిగం.", @@ -2303,21 +2369,21 @@ "import-nonewrevisions": "కూర్పులేవీ దిగుమతి కాలేదు (అవన్నీ ఈసరికే ఉండి ఉండాలి, లేదా లోపాల కారణంగా వదిలెయ్యబడ్డాయి).", "xml-error-string": "$1 $2à°µ లైనులో, వరుస $3 ($4à°µ బైటు): $5", "import-upload": "XML డేటాను అప్‌లోడు చెయ్యి", - "import-token-mismatch": "సెషను భోగట్టా పోయింది. దయచేసి మళ్ళీ ప్రయత్నించండి.", + "import-token-mismatch": "సెషను డేటా పోయింది.\n\nమీరు లాగౌటై పోయి ఉండవచ్చు. <strong>లాగినై ఉన్నారో లేదో చూసుకుని, మళ్ళీ ప్రయత్నించండి</strong>.\nఅది కూడా పనిచెయ్యకపోతే, ఓసారి [[Special:UserLogout|లాగౌటై]] మళ్ళీ లాగినవండి. మీ బ్రౌజరు ఈ సైటు యొక్క కూకీలను అనుమతిస్తుందని నిర్ధారించుకోండి.", "import-invalid-interwiki": "మీరు చెప్పిన వికీనుండి దిగుమతి చేయలేము.", - "import-error-edit": "పేజీ \"$1\" లో మార్పుచేర్పులు చేసే అనుమతి మీకు లేదు కాబట్టి దాన్ని దిగుమతి చెయ్యలేదు.", - "import-error-create": "పేజీ \"$1\" ను సృష్టించే అనుమతి మీకు లేదు కాబట్టి దాన్ని దిగుమతి చెయ్యలేదు.", - "import-error-interwiki": "పేజీ \"$1\" యొక్క పేరు బయటి లింకుల (అంతరవికీ) కోసం అట్టేపెట్టబడింది కాబట్టి దాన్ని దిగుమతి చెయ్యలేదు.", + "import-error-edit": "\"$1\" పేజీలో మార్పుచేర్పులు చేసే అనుమతి మీకు లేదు కాబట్టి, దాన్ని దిగుమతి చెయ్యలేదు.", + "import-error-create": "\"$1\" పేజీని సృష్టించే అనుమతి మీకు లేదు కాబట్టి దాన్ని దిగుమతి చెయ్యలేదు.", + "import-error-interwiki": "పేజీ \"$1\" యొక్క పేరు బయటి లింకుల (అంతర్వికీ) కోసం అట్టేపెట్టబడింది కాబట్టి దాన్ని దిగుమతి చెయ్యలేదు.", "import-error-special": "పేజీ \"$1\" ప్రత్యేక పేరుబరికి చెందినది. ఈ పేరుబరిలో పేజీలు సృష్టించే అనుమతి లేదు. అందుచేత దాన్ని దిగుమతి చెయ్యలేదు.", - "import-error-invalid": "పేజీ \"$1\" పేరు సరైనది కాదు కాబట్టి దాన్ని దిగుమతి చెయ్యలేదు.", + "import-error-invalid": "పేజీ \"$1\" ను దిగుమతి చేసే గమ్యం పేజీ పేరు ఈ వికీలో సరైనది కాదు కాబట్టి దాన్ని దిగుమతి చెయ్యలేదు.", "import-error-unserialize": "పేజీ \"$1\" యొక్క కూర్పు $2ను సీరియలించలేకపోయాం. ఈ కూర్పు వాడుతున్న కంటెంటు మోడల్ $3 అని తెలియవచ్చింది. ఈ మోడల్ $4 లాగా సీరియలించబడుతుంది.", "import-options-wrong": "తప్పు {{PLURAL:$2|ఐచ్ఛికం|ఐచ్ఛికాలు}}: <nowiki>$1</nowiki>", "import-rootpage-invalid": "ఇచ్చిన మూలపు పేజీ సరైన శీర్షిక కాదు.", "import-rootpage-nosubpage": "మూలపేజీ యొక్క పేరుబరి \"$1\" ఉపపేజీలను అనుమతించదు.", "importlogpage": "దిగుమతుల చిట్టా", "importlogpagetext": "ఇతర వికీల నుండీ మార్పుల చరిత్రతోసహా తెచ్చిన నిర్వహణా దిగుమతులు.", - "import-logentry-upload-detail": "$1 {{PLURAL:$1|కూర్పు|కూర్పులు}}", - "import-logentry-interwiki-detail": "$2 నుండి {{PLURAL:$1|ఒక కూర్పు|$1 కూర్పులు}}", + "import-logentry-upload-detail": "$1 {{PLURAL:$1|కూర్పును|కూర్పులను}} దిగుమతి చేసాం", + "import-logentry-interwiki-detail": "$2 నుండి {{PLURAL:$1|కూర్పును|కూర్పులను}} దిగుమతి చేసాం", "javascripttest": "జావాస్క్రిప్ట్ పరీక్ష", "javascripttest-pagetext-unknownaction": "తెలియని చర్య \"$1\".", "javascripttest-qunit-intro": "mediawiki.org లోని [$1 పరీక్షా డాక్యుమెంటేషన్] చూడండి.", @@ -2327,7 +2393,8 @@ "tooltip-pt-anontalk": "ఈ ఐపీ చిరునామా నుండి చేసిన మార్పుల గురించి చర్చ", "tooltip-pt-preferences": "{{GENDER:|మీ}} అభిరుచులు", "tooltip-pt-watchlist": "మీరు మార్పుల కొరకు గమనిస్తున్న పేజీల జాబితా", - "tooltip-pt-mycontris": "{{GENDER:|మీ}} యోగదానములు", + "tooltip-pt-mycontris": "{{GENDER:|మీ}} మార్పుచేర్పుల జాబితా", + "tooltip-pt-anoncontribs": "ఈ IP అడ్రసు నుండి చేసిన దిద్దుబాట్ల జాబితా", "tooltip-pt-login": "మిమ్మల్ని లాగినవమని ప్రోత్సహిస్తున్నాం; కానీ అది తప్పనిసరేమీ కాదు.", "tooltip-pt-logout": "లాగౌటవండి", "tooltip-pt-createaccount": "మీరొక ఖాతాని సృష్టించుకొని ప్రవేశించటాన్ని సమర్ధిస్తున్నాము; కానీ, అది అవసరం కాదు, ఐచ్ఛికం మాత్రమే.", @@ -2358,8 +2425,8 @@ "tooltip-t-recentchangeslinked": "ఈ పేజీకి లింకై ఉన్న పేజీల్లో జరిగిన ఇటీవలి మార్పులు", "tooltip-feed-rss": "ఈ పేజీకి RSS ఫీడు", "tooltip-feed-atom": "ఈ పేజీకి Atom ఫీడు", - "tooltip-t-contributions": "యోగదానములు జాబితా‌ {{GENDER:$1|ఈ వాడుకరి}}", - "tooltip-t-emailuser": "ఈ వాడుకరికి ఓ ఈమెయిలు పంపండి", + "tooltip-t-contributions": "{{GENDER:$1|ఈ వాడుకరి}} మార్పుచేర్పుల జాబితా‌", + "tooltip-t-emailuser": "ఈ {{GENDER:$1|వాడుకరికి}} ఓ ఈమెయిలు పంపండి", "tooltip-t-info": "ఈ పేజీ గురించి మరింత సమాచారం", "tooltip-t-upload": "దస్త్రాలను ఎక్కించండి", "tooltip-t-specialpages": "అన్ని ప్రత్యేక పుటల జాబితా", @@ -2377,6 +2444,7 @@ "tooltip-ca-nstab-category": "వర్గపు పేజీ చూడండి", "tooltip-minoredit": "దీన్ని చిన్న మార్పుగా గుర్తించు", "tooltip-save": "మీ మార్పులను భద్రపరచండి", + "tooltip-publish": "మీ మార్పులను ప్రచురించండి", "tooltip-preview": "మీ మార్పులను మునుజూడండి, భద్రపరిచేముందు ఇది వాడండి!", "tooltip-diff": "పాఠానికి మీరు ఏ మార్పులు చేసారో చూపిస్తుంది", "tooltip-compareselectedversions": "ఈ పేజీలో ఎంచుకున్న రెండు కూర్పులకు మధ్య తేడాలను చూడండి", @@ -2395,7 +2463,7 @@ "lastmodifiedatby": "ఈ పేజీకి $3 $2, $1à°¨ చివరి మార్పు చేసారు.", "othercontribs": "$1 యొక్క కృతిపై ఆధారితం.", "others": "ఇతరాలు", - "siteusers": "{{SITENAME}} {{PLURAL:$2|వాడుకరి|వాడుకరులు}} $1", + "siteusers": "{{SITENAME}} {{PLURAL:$2|{{GENDER:$1|వాడుకరి}}|వాడుకరులు}} $1", "anonusers": "{{SITENAME}} అజ్ఞాత {{PLURAL:$2|వాడుకరి|వాడుకరులు}} $1", "creditspage": "పేజీ క్రెడిట్లు", "nocredits": "ఈ పేజీకి క్రెడిట్ల సమాచారం అందుబాటులో లేదు.", @@ -2419,6 +2487,7 @@ "pageinfo-language": "పేజీ విషయపు భాష", "pageinfo-language-change": "మార్చు", "pageinfo-content-model": "పేజీ కంటెంటు మోడల్", + "pageinfo-content-model-change": "మార్చు", "pageinfo-robot-policy": "రోబోట్లచే ఇండెక్సింగు", "pageinfo-robot-index": "అనుమతించబడింది", "pageinfo-robot-noindex": "అనుమతించబడలేదు", @@ -2549,7 +2618,7 @@ "exif-xresolution": "క్షితిజసమాంతర స్పష్టత", "exif-yresolution": "లంబ స్పష్టత", "exif-stripoffsets": "బొమ్మ డేటా ఉన్న స్థలం", - "exif-rowsperstrip": "ఒక్కో పట్టికి ఉన్న అడ్డువరుసలు", + "exif-rowsperstrip": "ఒక్కో పట్టీకి ఉన్న అడ్డువరుసలు", "exif-stripbytecounts": "ఒక్కో కుదించిన పట్టీలో ఉన్న బైట్లు", "exif-jpeginterchangeformat": "JPEG SOI కి ఆఫ్‌సెట్", "exif-jpeginterchangeformatlength": "JPEG డాటా యొక్క బైట్లు", @@ -2885,12 +2954,16 @@ "confirmemail_body_changed": "$1 ఐపీ చిరునామా నుండి ఎవరో, బహుశా మీరే,\n{{SITENAME}}లో \"$2\" అనే ఖాతా యొక్క ఈ-మెయిలు చిరునామాని ఈ చిరునామాకి మార్చారు.\n\nఆ ఖాతా నిజంగా మీదే అని నిర్ధారించేందుకు మరియు {{SITENAME}}లో\nఈ-మెయిలు సౌలభ్యాలని పునఃచేతనం చేసుకునేందుకు, ఈ లంకెని మీ విహారిణిలో తెరవండి:\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 నుండి ఎవరో - బహుశా మీరే కావచ్చు -\n{{SITENAME}} లోని ఖాతా ఈమెయిలు అడ్రసు, \"$2\" ను \"$3\" కు మార్చారు.\n\nఅది మీరు కాకపోతే, వెంటనే ఓ సైటు నిర్వాహకుణ్ణి సంప్రదించండి.", + "notificationemail_body_removed": "ఐపీ అడ్రసు $1 నుండి ఎవరో - బహుశా మీరే కావచ్చు -\n{{SITENAME}} లోని ఖాతా ఈమెయిలు అడ్రసు, \"$2\" ను తొలగించారు.\n\nఅది మీరు కాకపోతే, వెంటనే ఓ సైటు నిర్వాహకుణ్ణి సంప్రదించండి.", "scarytranscludedisabled": "[ఇతరవికీల మూసలను ఇక్కడ వాడటాన్ని అనుమతించటం లేదు]", "scarytranscludefailed": "[$1 కొరకు మూసను తీసుకురావటం విఫలమైంది]", "scarytranscludetoolong": "[URL మరీ పొడుగ్గా ఉంది]", "deletedwhileediting": "'''హెచ్చరిక''': మీరు మార్పులు చేయటం మొదలుపెట్టాక ఈ పేజీ తొలగించబడింది!", - "confirmrecreate": "మీరు పేజీ రాయటం మొదలుపెట్టిన తరువాత [[User:$1|$1]] ([[User talk:$1|చర్చ]]) దానిని తీసివేసారు. దానికి ఈ కారణం ఇచ్చారు: ''$2''\nమీరు ఈ పేజీని మళ్ళీ తయారు చేయాలనుకుంటున్నారని ధృవీకరించండి.", - "confirmrecreate-noreason": "మీరు మార్చడం మొదలుపెట్టిన తర్వాత ఈ పుటను వాడుకరి [[User:$1|$1]] ([[User talk:$1|చర్చ]]) తొలగించారు. ఈ పుటను మీరు నిజంగానే పునఃసృష్టించాలనుకుంటున్నారని నిర్ధారించండి.", + "confirmrecreate": "మీరు దిద్దుబాటు మొదలుపెట్టిన తరువాత [[User:$1|$1]] ([[User talk:$1|చర్చ]]) ఈ పేజీని {{GENDER:$1|తొలగించారు}}. దానికి ఈ కారణం ఇచ్చారు: <em>$2</em>\nమీరు ఈ పేజీని మళ్ళీ సృష్టించాలనుకుంటున్నారని ధృవీకరించండి.", + "confirmrecreate-noreason": "మీరు దిద్దుబాటు మొదలుపెట్టిన తరువాత [[User:$1|$1]] ([[User talk:$1|చర్చ]]) ఈ పేజీని {{GENDER:$1|తొలగించారు}}. మీరు ఈ పేజీని మళ్ళీ సృష్టించాలనుకుంటున్నారని ధృవీకరించండి.", "recreate": "మళ్లీ సృష్టించు", "confirm_purge_button": "సరే", "confirm-purge-top": "ఈ పేజీ యొక్క పాత కాపీని తొలగించమంటారా?", @@ -2940,10 +3013,12 @@ "watchlistedit-raw-removed": "{{PLURAL:$1|1 శీర్షికను|$1 శీర్షికలను}} తీసివేశాం:", "watchlistedit-clear-title": "వీక్షణజాబితా చెరిపివేయి", "watchlistedit-clear-legend": "వీక్షణజాబితా చెరిపివేయి", + "watchlistedit-clear-explain": "ఈ శీర్షికలన్నిటినీ మీ వీక్షణ జాబితా నుండి తీసేస్తాం", "watchlistedit-clear-titles": "శీర్షికలు:", "watchlistedit-clear-submit": "వీక్షణ జాబితా శుభ్రం చేయి (ఇది శాశ్వతం!)", "watchlistedit-clear-done": "మీ వీక్షణ జాబితాను శుభ్రం చేశాం.", "watchlistedit-clear-removed": "{{PLURAL:$1|1 శీర్షికను|$1 శీర్షికలను}} తీసివేశాం:", + "watchlistedit-too-many": "ఇక్కడ చూపించలేనన్ని పేజీలున్నాయి.", "watchlisttools-clear": "వీక్షణజాబితాను శుభ్రం చేయి", "watchlisttools-view": "సంబంధిత మార్పులను చూడండి", "watchlisttools-edit": "వీక్షణ జాబితాను చూడండి లేదా మార్చండి", @@ -2995,7 +3070,7 @@ "version-libraries-license": "లైసెన్సు", "version-libraries-description": "వివరణ", "version-libraries-authors": "రచయితలు", - "redirect": "ఫైలు, వాడుకరి, పేజీ లేదా కూర్పు ఐడీ ప్రకారం దారిమార్పు", + "redirect": "ఫైలు పేరు, వాడుకరి ఐడీ, పేజీ ఐడీ, కూర్పు ఐడీ లేదా లాగ్ ఐడీ పేరిట దారిమార్పు చెయ్యండి", "redirect-submit": "వెళ్ళు", "redirect-lookup": "చూడు:", "redirect-value": "విలువ:", @@ -3020,7 +3095,7 @@ "specialpages-group-login": "ప్రవేశించండి / ఖాతాను సృష్టించుకోండి", "specialpages-group-changes": "ఇటీవలి మార్పులు మరియు దినచర్యలు", "specialpages-group-media": "మాధ్యమ నివేదికలు మరియు ఎగుమతులు", - "specialpages-group-users": "వాడుకర్లు మరియు హక్కులు", + "specialpages-group-users": "వాడుకరులు, హక్కులు", "specialpages-group-highuse": "అధిక వాడుక పేజీలు", "specialpages-group-pages": "పేజీల యొక్క జాబితాలు", "specialpages-group-pagetools": "పేజీ పనిముట్లు", @@ -3093,8 +3168,8 @@ "compare-revision-not-exists": "మీరు పేర్కొన్న కూర్పు లేనే లేదు.", "dberr-problems": "క్షమించండి! ఈ సైటు సాంకేతిక సమస్యలని ఎదుర్కొంటుంది.", "dberr-again": "కొన్ని నిమిషాలాగి మళ్ళీ ప్రయత్నించండి.", - "dberr-info": "(డాటాబేసు సర్వరుని సంధానించలేకున్నాం: $1)", - "dberr-info-hidden": "(డేటాబేసు సర్వరును కాంటాక్టు చెయ్యలేకున్నాం)", + "dberr-info": "(డేటాబేసును చేరలేకున్నాం: $1)", + "dberr-info-hidden": "(డేటాబేసును చేరలేకున్నాం)", "dberr-usegoogle": "ఈలోపు మీరు గూగుల్ ద్వారా వెతకడానికి ప్రయత్నించండి.", "dberr-outofdate": "మా విషయం యొక్క వారి సూచీలు అంత తాజావి కావపోవచ్చని గమనించండి.", "dberr-cachederror": "అభ్యర్థించిన పేజీ యొక్క కోశం లోని కాపీ ఇది, అంత తాజాది కాకపోవచ్చు.", @@ -3117,7 +3192,16 @@ "htmlform-date-placeholder": "YYYY-MM-DD", "htmlform-time-placeholder": "HH:MM:SS", "htmlform-datetime-placeholder": "YYYY-MM-DD HH:MM:SS", + "htmlform-date-invalid": "మీరిచ్చిన విలువ ఆమోదిత తేదీ రూపంలో లేదు. YYYY-MM-DD ఆకృతిని వాడి చూడండి.", + "htmlform-time-invalid": "మీరిచ్చిన విలువ ఆమోదిత సమయం రూపంలో లేదు. HH:MM:SS ఆకృతిని వాడి చూడండి.", + "htmlform-datetime-invalid": "మీరిచ్చిన విలువ ఆమోదిత తేదీ, సమయం రూపంలో లేదు. YYYY-MM-DD HH:MM:SS ఆకృతిని వాడి చూడండి.", + "htmlform-title-badnamespace": "[[:$1]], \"{{ns:$2}}\" పేరుబరిలో లేదు.", + "htmlform-title-not-creatable": "\"$1\" అనే పేజీ పేరు సృష్టించదగ్గది కాదు", + "htmlform-title-not-exists": "$1 ఉనికిలో లేదు.", + "htmlform-user-not-exists": "<strong>$1</strong> ఉనికిలో లేదు.", + "htmlform-user-not-valid": "<strong>$1</strong> సరైన వాడుకరిపేరు కాదు.", "logentry-delete-delete": "$1 $3 పేజీని {{GENDER:$2|తొలగించారు}}", + "logentry-delete-delete_redir": "$1, దారిమార్పు $3 ను ఓవర్‌రైటింగు పద్ధతిలో {{GENDER:$2|తొలగించారు}}", "logentry-delete-restore": "పేజీ $3 ని $1 {{GENDER:$2|పునస్థాపించారు}}", "logentry-delete-event": "$3 లో {{PLURAL:$5|ఒక లాగ్ ఘటన|$5 లాగ్ ఘటనల}} యొక్క కన్పట్టటాన్ని (విజిబిలిటీ) $1 {{GENDER:$2|మార్చారు}}: $4", "logentry-delete-revision": "పేజీ $3 లో {{PLURAL:$5|ఒక కూర్పు|$5 కూర్పుల}} యొక్క కన్పట్టటాన్ని (విజిబిలిటీ) $1 {{GENDER:$2|మార్చారు}}: $4", @@ -3136,6 +3220,16 @@ "revdelete-uname-unhid": "వాడుకరిపేరు బయటపెట్టబడింది", "revdelete-restricted": "నిర్వాహకులకు ఆంక్షలు విధించాను", "revdelete-unrestricted": "నిర్వాహకులకున్న ఆంక్షలను ఎత్తేశాను", + "logentry-block-block": "$1, {{GENDER:$4|$3}}ను {{GENDER:$2|నిరోధించారు}}. నిరోధ కాలం: $5 $6", + "logentry-block-unblock": "$1 {{GENDER:$4|$3}} పై ఉన్న {{GENDER:$2|నిరోధాన్ని ఎత్తివేసారు}}", + "logentry-block-reblock": "$1 {{GENDER:$4|$3}} యొక్క నిరోధపు కాలం తీరిపోయే వ్యవధిని $5 $6 గా సెట్టింగులను {{GENDER:$2|మార్చారు}}", + "logentry-suppress-block": "$1, {{GENDER:$4|$3}}ను {{GENDER:$2|నిరోధించారు}}. నిరోధ కాలం: $5 $6", + "logentry-suppress-reblock": "$1, {{GENDER:$4|$3}} యొక్క నిరోధాల సెట్టింగులను {{GENDER:$2|మార్చారు}}. నిరోధ కాలం: $5 $6", + "logentry-import-upload": "$1, $3 ను దస్త్రం ఎక్కింపు ద్వారా {{GENDER:$2|దిగుమతి చేసారు}}", + "logentry-import-upload-details": "$1, $3 ను దస్త్రం ఎక్కింపు ద్వారా {{GENDER:$2|దిగుమతి చేసారు}} ($4 {{PLURAL:$4|కూర్పు|కూర్పులు}})", + "logentry-import-interwiki": "$1, $3 ను వేరే వికీ నుండి {{GENDER:$2|దిగుమతి చేసారు}}", + "logentry-import-interwiki-details": "$1, $3 ను $5 నుండి {{GENDER:$2|దిగుమతి చేసారు}} ($4 {{PLURAL:$4|కూర్పు|కూర్పులు}})", + "logentry-merge-merge": "$1, $3 ను $4 లో {{GENDER:$2|విలీనం చేసారు}} ($5 దాకా కూర్పులు)", "logentry-move-move": "$1, పేజీ $3 ను $4 కు {{GENDER:$2|తరలించారు}}", "logentry-move-move-noredirect": "$1, పేజీ $3 ను $4 కు దారిమార్పు లేకుండా {{GENDER:$2|తరలించారు}}", "logentry-move-move_redir": "$1, పేజీ $3 ను $4 కు దారిమార్పు ద్వారా {{GENDER:$2|తరలించారు}}", @@ -3147,16 +3241,24 @@ "logentry-newusers-create2": "$1 వాడుకరి ఖాతా $3 ను {{GENDER:$2|సృష్టించారు}}", "logentry-newusers-byemail": "$1 వాడుకరి ఖాతా $3 ను {{GENDER:$2|సృష్టించారు}}. సంకేతపదాన్ని ఈమెయిలులో పంపించాం", "logentry-newusers-autocreate": "వాడుకరి ఖాతా $1 ను ఆటోమేటిగ్గా {{GENDER:$2|సృష్టించారు}}", - "logentry-rights-rights": "$1, $3 యొక్క గుంపు సభ్యత్వాన్ని $4 నుండి $5 కు {{GENDER:$2|మార్చారు}}", + "logentry-protect-move_prot": "$1, సంరక్షణ సెట్టింగులను $4 నుండి $3 కు {{GENDER:$2|తరలించారు}}", + "logentry-protect-unprotect": "$1, $3 నుండి సంరక్షణను {{GENDER:$2|తీసివేసారు}}", + "logentry-protect-protect": "$1, $3 ను {{GENDER:$2|సంరక్షించారు}} $4", + "logentry-protect-protect-cascade": "$1, $3 ను {{GENDER:$2|సంరక్షించారు}} $4 [కాస్కేడింగు]", + "logentry-protect-modify": "$1, $3 యొక్క సంరక్షణ స్థాయిని {{GENDER:$2|మార్చారు}} $4", + "logentry-protect-modify-cascade": "$1, $3 యొక్క సంరక్షణ స్థాయిని {{GENDER:$2|మార్చారు}} $4 [కాస్కేడింగు]", + "logentry-rights-rights": "$1, {{GENDER:$6|$3}} యొక్క గుంపు సభ్యత్వాన్ని $4 నుండి $5 కు {{GENDER:$2|మార్చారు}}", "logentry-rights-rights-legacy": "$1, $3 యొక్క గుంపు సభ్యత్వాన్ని {{GENDER:$2|మార్చారు}}", "logentry-rights-autopromote": "$1, $4 నుండి $5 కు ఆటోమేటిగ్గా {{GENDER:$2|ప్రమోటు చెయ్యబడ్డారు}}", "logentry-upload-upload": "$1 $3 ను {{GENDER:$2|ఎక్కించారు}}", + "logentry-upload-overwrite": "$1, $3 యొక్క కొత్త కూర్పును {{GENDER:$2|ఎక్కించారు}}", "logentry-upload-revert": "$3ను $1 {{GENDER:$2|ఎక్కించారు}}", "log-name-managetags": "ట్యాగు నిర్వహణ చిట్టా", "logentry-managetags-create": "\"$4\" ట్యాగును $1 {{GENDER:$2|సృష్టించారు}}", "log-name-tag": "ట్యాగుల చిట్టా", "rightsnone": "(ఏమీలేవు)", "revdelete-summary": "మార్పు సంగ్రహం", + "rightslogentry-temporary-group": "$1 (తాత్కాలికం, $2 వరకు)", "feedback-adding": "ఫీడ్‍బ్యాకును పేజీలోకి చేరుస్తున్నాం...", "feedback-back": "వెనుకకు", "feedback-bugcheck": "అద్భుతం! ఇది ఇప్పటికే [$1 తెలిసిన బగ్గుల]లో లేదని సరిచూసుకోండి.", @@ -3177,45 +3279,12 @@ "feedback-useragent": "వాడుకరి ఏజెంటు:", "searchsuggest-search": "{{SITENAME}}‌లో వెతకండి", "searchsuggest-containing": "కలిగియున్న...", - "api-error-badaccess-groups": "ఈ వికీ లోనికి దస్త్రాలను ఎక్కించే అనుమతి మీకు లేదు.", "api-error-badtoken": "అంతర్గత లోపం: చెడు టోకెన్.", - "api-error-copyuploaddisabled": "URL ద్వారా ఎక్కించడం ఈ సర్వరులో అశక్తం చెయ్యబడింది.", - "api-error-duplicate": "ఇదే విషయ పాఠ్యంతో ఈ సైటులో ఈసరికే {{PLURAL:$1|మరో ఫైలు ఉంది|ఇతర ఫైళ్ళు ఉన్నాయి}}.", - "api-error-duplicate-archive": "ఇదే విషయ పాఠ్యంతో ఈ సైటులో ఈసరికే {{PLURAL:$1|మరో ఫైలు ఉండేది|ఇతర ఫైళ్ళు ఉండేవి}}. అయితే {{PLURAL:$1|అది తొలగించబడింది|అవి తొలగించబడ్డాయి}}.", - "api-error-empty-file": "మీరు దాఖలుచేసిన ఫైల్ ఖాళీది.", "api-error-emptypage": "కొత్త మరియు ఖాళీ పేజీలను సృష్టించడానికి అనుమతి లేదు.", - "api-error-fetchfileerror": "అంతర్గత లోపం: ఈ ఫైలును తేవడంలో ఏదో తప్పు జరిగింది.", - "api-error-fileexists-forbidden": "\"$1\" పేరుతో ఓ ఫైలు ఈసరికే ఉంది. దాన్ని తిరగరాయడం కుదరదు.", - "api-error-fileexists-shared-forbidden": "\"$1\" పేరుతో ఓ ఫైలు ఈసరికే ఈ సహ ఫైలు ఖజానా (షేర్‍డ్ ఫైల్ రిపాజిటరీ)లో ఉంది. దాన్ని తిరగరాయడం కుదరదు.", - "api-error-file-too-large": "మీరు సమర్పించిన దస్త్రం చాలా పెద్దగా ఉంది.", - "api-error-filename-tooshort": "దస్త్రపు పేరు మరీ చిన్నగా ఉంది.", - "api-error-filetype-banned": "ఈ రకపు దస్త్రాలని నిషేధించారు.", - "api-error-filetype-banned-type": "$1, అనుమతించబడిన {{PLURAL:$4|ఫైలు రకం కాదు|ఫైలు రకాలు కాదు}}. అనుమతించబడిన {{PLURAL:$3|ఫైలు రకం|ఫైలు రకాలు}}: $2.", - "api-error-filetype-missing": "ఫైలుపేరులో ఓ ఎక్స్టెన్షను లేదు.", - "api-error-hookaborted": "మీరు చేయ ప్రయత్నించిన మార్పును ఓ పొడిగింత అడ్డుకుంది.", - "api-error-http": "అంతర్గత దోషము: సేవకానికి అనుసంధానమవలేకపోతున్నది.", - "api-error-illegal-filename": "ఆ పైల్ పేరు అనుమతించబడదు.", - "api-error-internal-error": "అంతర్గత లోపం: ఈ వికీలో మీ ఎక్కింపును ప్రాసెసు చెయ్యడంలో ఎదో తప్పు జరిగింది.", - "api-error-invalid-file-key": "అంతర్గత దోషము: తాత్కాలిక నిల్వలో ఫైల్ కనపడలేదు.", - "api-error-missingparam": "అంతర్గత దోషం: అభ్యర్ధనలో పరామితులు అన్నీ లేవు.", - "api-error-missingresult": "అంతర్గత లోపం: నకలు తీయడం సఫలమైందో లేదో తెలియడం లేదు.", - "api-error-mustbeloggedin": "దస్త్రాలను ఎక్కించడానికి మీరు ప్రవేశించివుండాలి.", - "api-error-mustbeposted": "అంతర్గత లోపం: అభ్యర్థనకు HTTP POST అవసరం.", - "api-error-noimageinfo": "ఎక్కింపు జయప్రదమైంది. కానీ సర్వరు, ఆ ఫైలు గురించిన సమాచారమేమీ ఇవ్వలేదు.", - "api-error-nomodule": "అంతర్గత దోషము: ఎక్కింపు పర్వికము అమర్చబడలేదు.", - "api-error-ok-but-empty": "అంతర్గత దోషము: సేవకము నుండి ఎటువంటి స్పందనా లేదు.", - "api-error-overwrite": "ఈసరికే ఉన్న ఫైలును తిరగరాయడానికి అనుమతి లేదు.", - "api-error-stashfailed": "అంతర్గత లోపం: తాత్కాలిక దస్త్రాన్ని భద్రపరచడంలో సేవకి విఫలమైంది.", "api-error-publishfailed": "అంతర్గత లోపం: తాత్కాలిక ఫైలును ప్రచురించడంలో సర్వరు విఫలమైంది.", - "api-error-stasherror": "ఫైలును ఖాజానాకు ఎక్కించడంలో లోపం దొర్లింది.", - "api-error-timeout": "సర్వరు ఆశించిన సమయం లోపు స్పందించలేదు.", - "api-error-unclassified": "ఒక తెలియని దోషము సంభవించినది", - "api-error-unknown-code": "తెలియని పొరపాటు: \"$1\".", - "api-error-unknown-error": "అంతర్గత పొరపాటు: మీ దస్త్రాన్ని ఎక్కించేప్పుడు ఏదో పొరపాటు జరిగింది.", - "api-error-unknown-warning": "తెలియని హెచ్చరిక: $1", + "api-error-stashfailed": "అంతర్గత లోపం: తాత్కాలిక దస్త్రాన్ని భద్రపరచడంలో సేవకి విఫలమైంది.", + "api-error-unknown-warning": "తెలియని హెచ్చరిక: \"$1\".", "api-error-unknownerror": "తెలియని పొరపాటు: \"$1\".", - "api-error-uploaddisabled": "ఈ వికీలో ఎక్కింపులని అచేతనం చేసారు.", - "api-error-verification-error": "ఈ ఫైల్ పాడైవుండవచ్చు, లేదా తప్పుడు పొడిగింతను కలిగివుండవచ్చు.", "duration-seconds": "$1 {{PLURAL:$1|క్షణం|క్షణాలు}}", "duration-minutes": "$1 {{PLURAL:$1|నిమిషం|నిమిషాలు}}", "duration-hours": "$1 {{PLURAL:$1|గంట|గంటలు}}", @@ -3253,7 +3322,10 @@ "pagelang-language": "భాష", "pagelang-use-default": "అప్రమేయ భాషను వాడు", "pagelang-select-lang": "భాషను ఎంచుకోండి", + "pagelang-reason": "కారణం", "pagelang-submit": "పంపించు", + "pagelang-nonexistent-page": "$1 పేజీ ఉనికిలో లేదు.", + "pagelang-unchanged-language": "$1 పేజీ $2 భాషకు సెట్ చెయ్యబడి ఉంది.", "right-pagelang": "పేజీ భాషను మార్చడం", "action-pagelang": "పేజీ భాషను మార్చే", "log-name-pagelang": "భాష మార్పుల చిట్టా", @@ -3264,14 +3336,22 @@ "mediastatistics": "మాధ్యమ గణాంకాలు", "mediastatistics-nbytes": "{{PLURAL:$1|$1 బైటు|$1 బైట్లు}} ($2; $3%)", "mediastatistics-table-mimetype": "MIME రకం", + "mediastatistics-table-extensions": "సంభావ్యత గల పొడిగింతలు", "mediastatistics-table-count": "దస్త్రాల సంఖ్య", + "mediastatistics-table-totalbytes": "మొత్తం పరిమాణం", "mediastatistics-header-unknown": "తెలియని", + "mediastatistics-header-bitmap": "Bitmap బొమ్మలు", "mediastatistics-header-drawing": "రేఖాచిత్రాలు (వెక్టర్ చిత్రాలు)", "mediastatistics-header-audio": "ఆడియో", "mediastatistics-header-video": "వీడియోలు", + "mediastatistics-header-multimedia": "రిచ్ మీడియా", "mediastatistics-header-office": "కార్యాలయం", "mediastatistics-header-text": "పాఠ్య", + "mediastatistics-header-executable": "ఎక్జిక్యూటబుల్స్", + "mediastatistics-header-archive": "కంప్రెస్‌డ్ ఆకృతులు", "mediastatistics-header-total": "అన్ని ఫైళ్ళు", + "json-warn-trailing-comma": "JSON నుండి $1 అంత్య {{PLURAL:$1|కామాను|కామాలను}} తీసివేసాం", + "json-error-unknown": "JSON తో ఏదో సమస్య ఉంది. లోపం: $1", "json-error-state-mismatch": "చెల్లని లేదా సరికాని JSON", "json-error-syntax": "వ్యాకరణ దోషం", "headline-anchor-title": "ఈ విభాగానికి లంకె", @@ -3298,12 +3378,56 @@ "special-characters-title-emdash": "ఎమ్ డాష్", "special-characters-title-minus": "మైనస్ గుర్తు", "mw-widgets-dateinput-no-date": "ఏ తేదీనీ ఎంచుకోలేదు", + "mw-widgets-mediasearch-input-placeholder": "మీడియా కోసం వెతకండి", + "mw-widgets-mediasearch-noresults": "ఫలితాలేమీ దొరకలేదు.", "mw-widgets-titleinput-description-new-page": "పేజీ ఇంకా లేదు", + "mw-widgets-titleinput-description-redirect": "$1 కు దారిమార్పు", + "mw-widgets-categoryselector-add-category-placeholder": "ఓ వర్గాన్ని చేర్చండి...", + "mw-widgets-usersmultiselect-placeholder": "మరిన్ని చేర్చండి...", + "sessionprovider-generic": "$1 సెషన్లు", + "sessionprovider-mediawiki-session-cookiesessionprovider": "కూకీ-ఆధారిత సెషన్లు", + "log-action-filter-block": "నిరోధపు రకం:", "log-action-filter-all": "అన్నీ", + "authmanager-userdoesnotexist": "వాడుకరి ఖాతా \"$1\" నమోదయి లేదు.", + "authmanager-userlogin-remembermypassword-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": "సంకేతపదం-ఆద్ధారిత ధ్రువీకరణ", "authmanager-provider-temporarypassword": "తాత్కాలిక సంకేతపదం", - "credentialsform-account": "ఖాతా పేరు:" + "authprovider-confirmlink-message": "ఇటీవలి మీ లాగిన్ ప్రయత్నాల ననుసరించి, కింది ఖాతాలను మీ వికీ ఖాతాకు అనుసంధించవచ్చు. వాటిని లింకు చెయ్యడంతో, ఆ ఖాతాల ద్వారా లాగిన్ కావడం చేతనమౌతుంది. ఏయే ఖాతాలను లింకు చెయ్యాలో ఎంచుకోండి.", + "authprovider-confirmlink-request-label": "లింకు చెయ్యాల్సిన ఖాతాలు", + "authprovider-confirmlink-success-line": "$1: జయప్రదంగా లింకు చేసాం.", + "authprovider-confirmlink-failed": "ఖాతాల అనుసంధానం పూర్తిగా జయప్రదం కాలేదు: $1", + "authprovider-resetpass-skip-label": "దాటవేయి", + "cannotauth-not-allowed-title": "అనుమతి నిరాకరించబడింది", + "cannotauth-not-allowed": "ఈ పేజీ వాడుకునే అనుమతి మీకు లేదు", + "changecredentials-invalidsubpage": "$1 సరైన అర్హత కాదు", + "changecredentials-success": "మీ అర్హతలను మార్చాం.", + "removecredentials": "అర్హతలను తీసివెయ్యి", + "removecredentials-submit": "అర్హతలను తీసివెయ్యి", + "removecredentials-invalidsubpage": "$1 సరైన అర్హత రకం కాదు", + "removecredentials-success": "మీ అర్హతలను తీసివేసాం.", + "credentialsform-provider": "అర్హతల రకం:", + "credentialsform-account": "ఖాతా పేరు:", + "cannotlink-no-provider-title": "లింకు చెయ్యదగ్గ ఖాతాలేమీ లేవు", + "cannotlink-no-provider": "లింకు చెయ్యదగ్గ ఖాతాలేమీ లేవు.", + "linkaccounts": "ఖాతాలను లింకు చెయ్య్యి", + "linkaccounts-success-text": "ఖాతాను లింకు చేసాం.", + "linkaccounts-submit": "ఖాతాలను లింకు చెయ్యి", + "unlinkaccounts": "ఖాతాల లింకు తీసివెయ్యి", + "unlinkaccounts-success": "ఖాతా లింకును తీసివేసాం.", + "authenticationdatachange-ignored": "ధ్రువీకరణ డేటా మార్పును సాధించలేకపోయాం. ప్రొవైడరును కాన్ఫిగరు చెయ్యలేదేమో?", + "userjsispublic": "గమనించండి: JavaScript ఉపపేజీల్లో గోపనీయమైన డేటా ఏమీ ఉండకూడదు. ఇతర వాడుకరులు దాన్ని చూసే అవకాశం ఉంది.", + "usercssispublic": "గమనించండి: CSS ఉపపేజీల్లో గోపనీయమైన డేటా ఏమీ ఉండకూడదు. ఇతర వాడుకరులు దాన్ని చూసే అవకాశం ఉంది.", + "restrictionsfield-badip": "అసంబద్ధమైన ఐపీ అడ్రసు లేదా శ్రేణి: $1", + "restrictionsfield-label": "అనుమతించబడ్డ ఐపీ శ్రేణులు:", + "restrictionsfield-help": "వరుసకొక్క ఐపీ అడ్రసు లేదా CIDR శ్రేణి. ప్రతీ ఒక్కదాన్నీ చేతనం చేసేందుకు, వాడండి:<pre>0.0.0.0/0\n::/0</pre>", + "revid": "కూర్పు $1", + "pageid": "పేజీ ఐడీ $1" } diff --git a/languages/i18n/tet.json b/languages/i18n/tet.json index 15341c85d1..fb73ae753d 100644 --- a/languages/i18n/tet.json +++ b/languages/i18n/tet.json @@ -188,6 +188,7 @@ "nstab-mediawiki": "Mensajen", "nstab-help": "Pájina ajuda", "nstab-category": "Kategoria", + "mainpage-nstab": "Pájina Mahuluk", "nosuchspecialpage": "Pájina espesiál ne'e la iha", "nospecialpagetext": "<strong>Pájina espesiál ne'e la iha.</strong>\n\nLista ida pájina espesiál nian [[Special:SpecialPages|iha ne'e]].", "error": "Sala", @@ -227,13 +228,13 @@ "watchthis": "Hateke pájina ne'e", "savearticle": "Muda pájina", "showdiff": "Hatudu diferensa sira", - "anoneditwarning": "Ó lá'os \"log-in\" iha momentu.", + "anoneditwarning": "<strong>Warning:</strong> You are not logged in. Your IP address will be publicly visible if you make any edits. If you <strong>[$1 log in]</strong> or <strong>[$2 create an account]</strong>, your edits will be attributed to your username, along with other benefits.", "blockedtitle": "Uza-na'in la bele edita (blokeiu)", "blockednoreason": "laiha motivu", "whitelistedittext": "Ó tenke $1 ba edita pájina sira.", "loginreqpagetext": "Ó tenke $1 ba haree pájina seluk.", "newarticle": "(Foun)", - "noarticletext": "Iha momentu lá'os testu iha pájina ne'e, bele [[Special:Search/{{PAGENAME}}|buka naran pájina nian]] iha pájina seluk, <span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} search the related logs], ka [{{fullurl:{{FULLPAGENAME}}|action=edit}} edita pájina ne'e]</span>.", + "noarticletext": "Iha momentu lá'os testu iha pájina ne'e, bele [[Special:Search/{{PAGENAME}}|buka naran pájina nian]] iha pájina seluk, <span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} search the related logs], ka [{{fullurl:{{FULLPAGENAME}}|action=edit}} kria pájina ne'e]</span>.", "previewnote": "'''Ne'e de'it pájina ba kontrola.'''\nIta-nia mudansa la armazenadu seidauk!", "editing": "Edita $1", "editingsection": "Edita $1 (seksaun)", @@ -248,8 +249,9 @@ "permissionserrorstext": "Ó la bele halo ne'e; {{PLURAL:$1|motivu|motivu sira}}:", "permissionserrorstext-withaction": "Ita la bele $2. {{PLURAL:$1|Razaun|Razaun sira}}:", "currentrev": "Versaun atuál", + "currentrev-asof": "Versaun atuál $1 nian", "revisionasof": "Versaun $1 nian", - "revision-info": "Revisaun loron $4, tempu $5, husi $2", + "revision-info": "Revisaun loron $4, tempu $5, husi {{GENDER:$6|$2}}$7", "previousrevision": "←Versaun tuan liu", "nextrevision": "Versaun foun liu→", "currentrevisionlink": "Versaun atuál", @@ -582,14 +584,14 @@ "import-comment": "Komentáriu:", "import-revision-count": "{{PLURAL:$1|versaun ida|versaun $1}}", "import-logentry-interwiki-detail": "$1 {{PLURAL:$1|versaun|versaun}} husi $2", - "tooltip-pt-userpage": "Ó-nia pájina uza-na'in", - "tooltip-pt-mytalk": "Ó-nia pájina diskusaun", - "tooltip-pt-preferences": "Ha'u-nia preferénsia", - "tooltip-pt-mycontris": "Ó-nia kontribuisaun (lista)", + "tooltip-pt-userpage": "{{GENDER:|Ó-nia}} pájina uza-na'in", + "tooltip-pt-mytalk": "{{GENDER:|Ó-nia}} pájina diskusaun", + "tooltip-pt-preferences": "{{GENDER:|Ó}}-nia preferénsia", + "tooltip-pt-mycontris": "{{GENDER:|Ó-nia}} kontribuisaun (lista)", "tooltip-pt-login": "Ami rekomenda identifikasaun (\"log in\"), maibé Ita-Boot la presiza halo ne'e", "tooltip-pt-logout": "Husik", "tooltip-ca-talk": "Diskusaun kona-ba konteúdu pájina nian", - "tooltip-ca-edit": "Ita bele edita pájina ne'e. Please use the preview button before saving.", + "tooltip-ca-edit": "Edita pájina ne'e", "tooltip-ca-addsection": "Tau tan seksaun foun ida.", "tooltip-ca-viewsource": "Ema ruma proteje tiha pájina ne'e.\nÓ bele lee testu.", "tooltip-ca-history": "Versaun tuan pájina nian", @@ -609,7 +611,7 @@ "tooltip-n-randompage": "Hola pájina ruma", "tooltip-n-help": "Hatudu pájina ajuda.", "tooltip-t-whatlinkshere": "Lista pájina nian ne'ebé bá iha ne'e", - "tooltip-t-contributions": "Haree lista kontribuisaun uza-na'in ne'e nian", + "tooltip-t-contributions": "Haree lista kontribuisaun {{GENDER:$1|uza-na'in ne'e nian}}", "tooltip-t-emailuser": "Haruka korreiu eletróniku", "tooltip-t-upload": "Tau iha arkivu laran", "tooltip-t-specialpages": "Lista pájina espesiál hotu nian", @@ -626,7 +628,7 @@ "siteusers": "{{PLURAL:$2|uza-na'in|uza-na'in}} {{SITENAME}} nian $1", "previousdiff": "←Versaun molok", "nextdiff": "Versaun oinmai→", - "show-big-image": "Boot liu", + "show-big-image": "Fixeiru original", "ilsubmit": "Buka", "bad_image_list": "Formatu:\n\nLiña hotu tenke komesa ho *\nLigasaun uluk iha liña tenke ligasaun bá imajen aat.\nLigasaun seluk iha liña - ne'e pájina sira iha ne'ebé bele inklui imajen aat.", "exif-make": "Fabrikante kámara nian", @@ -693,6 +695,6 @@ "compare-rev2": "Versaun 2", "compare-submit": "Halo komparasaun", "rightsnone": "(mamuk)", - "searchsuggest-search": "Buka", + "searchsuggest-search": "Buka iha {{SITENAME}}", "expand_templates_ok": "OK" } diff --git a/languages/i18n/th.json b/languages/i18n/th.json index ad5535efae..e688c30fdd 100644 --- a/languages/i18n/th.json +++ b/languages/i18n/th.json @@ -50,9 +50,9 @@ "tog-minordefault": "กำหนดการแก้ไขทุกครั้งเป็นการแก้ไขเล็กน้อยโดยปริยาย", "tog-previewontop": "แสดงตัวอย่างก่อนกล่องแก้ไข", "tog-previewonfirst": "แสดงตัวอย่างในการแก้ไขครั้งแรก", - "tog-enotifwatchlistpages": "อีเมลหาเมื่อหน้าหรือไฟล์ในรายการเฝ้าดูเปลี่ยนแปลง", - "tog-enotifusertalkpages": "อีเมลหาเมื่อมีการเปลี่ยนแปลงหน้าคุยกับผู้ใช้ของฉัน", - "tog-enotifminoredits": "อีเมลหาเช่นกันสำหรับการแก้ไขหน้าและไฟล์เล็กน้อย", + "tog-enotifwatchlistpages": "อีเมลบอกฉันเมื่อหน้าหรือไฟล์ในรายการเฝ้าดูเปลี่ยนแปลง", + "tog-enotifusertalkpages": "อีเมลบอกฉันเมื่อมีการเปลี่ยนแปลงหน้าคุยกับผู้ใช้ของฉัน", + "tog-enotifminoredits": "อีเมลบอกฉันเช่นกันสำหรับการแก้ไขหน้าและไฟล์เล็กน้อย", "tog-enotifrevealaddr": "เปิดเผยที่อยู่อีเมลของฉันในอีเมลแจ้งเตือน", "tog-shownumberswatching": "แสดงจำนวนผู้ใช้ที่เฝ้าดู", "tog-oldsig": "ลายเซ็นที่คุณมีอยู่:", @@ -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": "ชุดอักษรแบบมีเชิง", @@ -178,8 +178,8 @@ "qbedit": "แก้ไข", "qbpageoptions": "หน้านี้", "qbmyoptions": "หน้าของฉัน", - "faq": "คำถามพบบ่อย", - "faqpage": "Project:คำถามพบบ่อย", + "faq": "คำถามที่พบบ่อย", + "faqpage": "Project:คำถามที่พบบ่อย", "actions": "ปฏิบัติการ", "namespaces": "เนมสเปซ", "variants": "สิ่งที่แตกต่าง", @@ -194,6 +194,7 @@ "searcharticle": "ไป", "history": "ประวัติหน้า", "history_short": "ประวัติ", + "history_small": "ประวัติ", "updatedmarker": "ถูกปรับตั้งแต่การเยี่ยมชมครั้งสุดท้ายของฉัน", "printableversion": "รุ่นพร้อมพิมพ์", "permalink": "ลิงก์ถาวร", @@ -233,7 +234,7 @@ "imagepage": "ดูหน้าไฟล์", "mediawikipage": "ดูหน้าข้อความ", "templatepage": "ดูหน้าแม่แบบ", - "viewhelppage": "ดูหน้าคำอธิบาย", + "viewhelppage": "ดูหน้าวิธีใช้", "categorypage": "ดูหน้าหมวดหมู่", "viewtalkpage": "ดูการพูดคุย", "otherlanguages": "ในภาษาอื่น", @@ -242,7 +243,7 @@ "redirectto": "เปลี่ยนทางไป:", "lastmodifiedat": "ดัดแปรหน้านี้ล่าสุดเมื่อวันที่ $1 เวลา $2", "viewcount": "มีการเข้าถึงหน้านี้ $1 ครั้ง", - "protectedpage": "หน้าถูกล็อก", + "protectedpage": "หน้าถูกป้องกัน", "jumpto": "ข้ามไป:", "jumptonavigation": "การนำทาง", "jumptosearch": "ค้นหา", @@ -332,7 +333,7 @@ "databaseerror-query": "คำสั่ง: $1", "databaseerror-function": "ฟังก์ชัน: $1", "databaseerror-error": "ข้อผิดพลาด: $1", - "laggedslavemode": "<strong>คำเตือน:</strong> หน้านี้อาจไม่มีการปรับล่าสุด", + "laggedslavemode": "<strong>คำเตือน:</strong> หน้านี้อาจไม่มีการปรับข้อมูลล่าสุด", "readonly": "ฐานข้อมูลถูกล็อก", "enterlockreason": "ใส่เหตุแห่งการล็อก ทั้งเวลาที่คาดว่าจะปลดล็อก", "readonlytext": "ขณะนี้ฐานข้อมูลถูกล็อกรายการใหม่และการแก้ไขเพิ่มเติมอื่น อาจเป็นเพราะการบำรุงรักษาฐานข้อมูลรูทีน หลังแล้วเสร็จจะกลับมาใช้งานได้ตามปกติ\n\nผู้ดูแลระบบที่ล็อกได้ให้คำอธิบายดังนี้: $1", @@ -385,7 +386,7 @@ "namespaceprotected": "คุณไม่มีสิทธิแก้ไขหน้าในเนมสเปซ <strong>$1</strong>", "customcssprotected": "คุณไม่มีสิทธิแก้ไขหน้า CSS นี้ เพราะมีการตั้งค่าส่วนบุคคลของผู้ใช้อื่น", "customjsprotected": "คุณไม่มีสิทธิแก้ไขหน้าจาวาสคริปต์นี้ เพราะหน้านี้มีการตั้งค่าส่วนบุคคลของผู้ใช้อื่น", - "mycustomcssprotected": "คุณไม่มีสิทธิแก้ไขหน้าซีเอสเอสนี้", + "mycustomcssprotected": "คุณไม่มีสิทธิแก้ไขหน้า CSS นี้", "mycustomjsprotected": "คุณไม่มีสิทธิแก้ไขหน้าจาวาสคริปต์นี้", "myprivateinfoprotected": "คุณไม่มีสิทธิแก้ไขข้อมูลส่วนตัวของคุณ", "mypreferencesprotected": "คุณไม่มีสิทธิแก้ไขการตั้งค่าของคุณ", @@ -428,6 +429,7 @@ "password-change-forbidden": "คุณไม่สามารถเปลี่ยนรหัสผ่านบนวิกินี้", "externaldberror": "มีข้อผิดพลาดของฐานข้อมูลการพิสูจน์ตัวจริง หรือคุณไม่ได้รับอนุญาตให้ปรับบัญชีภายนอกของคุณ", "login": "ล็อกอิน", + "login-security": "ยืนยันตัวตนของคุณ", "nav-login-createaccount": "ล็อกอิน / สร้างบัญชี", "userlogin": "ล็อกอิน / สร้างบัญชี", "userloginnocreate": "ล็อกอิน", @@ -445,18 +447,23 @@ "userlogin-resetpassword-link": "ลืมรหัสผ่านหรือ", "userlogin-helplink2": "วิธีใช้เรื่องการล็อกอิน", "userlogin-loggedin": "คุณล็อกอินในชื่อ {{GENDER:$1|$1}} แล้ว\nใช้แบบด้านล่างเพื่อล็อกอินเป็นอีกผู้ใช้หนึ่ง", + "userlogin-reauth": "คุณต้องเข้าสู่ระบบอีกครั้งเพื่อยืนยันว่าคุณคือ{{GENDER:$1|$1}}", "userlogin-createanother": "สร้างอีกบัญชี", "createacct-emailrequired": "ที่อยู่อีเมล", "createacct-emailoptional": "ที่อยู่อีเมล (เลือกไม่ใส่ก็ได้)", "createacct-email-ph": "กรอกที่อยู่อีเมลของคุณ", "createacct-another-email-ph": "กรอกที่อยู่อีเมล", "createaccountmail": "ใช้รหัสผ่านสุ่มชั่วคราวและส่งไปยังที่อยู่อีเมลที่ระบุ", + "createaccountmail-help": "สามารถใช้สร้างบัญชีสำหรับบุคคลอื่นๆ โดยที่ไม่ต้องเรียนรู้รหัสผ่านก็ได้", "createacct-realname": "ชื่อจริง (เลือกไม่ใส่ได้)", "createaccountreason": "เหตุผล:", "createacct-reason": "เหตุผล", "createacct-reason-ph": "เหตุใดคุณจึงสร้างอีกบัญชี", + "createacct-reason-help": "ข้อความที่แสดงในล็อกการสร้างบัญชี", "createacct-submit": "สร้างบัญชีของคุณ", "createacct-another-submit": "สร้างบัญชี", + "createacct-continue-submit": "ทำการสร้างบัญชีต่อไป", + "createacct-another-continue-submit": "ทำการสร้างบัญชีต่อไป", "createacct-benefit-heading": "{{SITENAME}}สร้างจากคนเช่นคุณ", "createacct-benefit-body1": "$1 การแก้ไข", "createacct-benefit-body2": "$1 หน้า", @@ -470,6 +477,7 @@ "nocookiesnew": "สร้างบัญชีผู้ใช้แล้ว แต่ยังไม่ได้ล็อกอิน \n{{SITENAME}} ใช้คุกกี้เพื่อล็อกอินผู้ใช้\nคุณปิดใช้งานคุกกี้\nโปรดเปิดใช้งาน แล้วล็อกอินพร้อมชื่อผู้ใช้และรหัสผ่านใหม่ของคุณ", "nocookieslogin": "{{SITENAME}} ใช้คุกกี้เพื่อล็อกอินผู้ใช้\nคุณปิดใช้งานคุกกี้\nกรุณาเปิดใช้งานและลองอีกครั้ง", "nocookiesfornew": "บัญชีผู้ใช้ไม่ถูกสร้าง เนื่องจากเราไม่สามารถยืนยันต้นทาง\nกรุณาทำให้แน่ใจว่าคุณได้เปิดใช้งานคุกกี้ โหลดหน้านี้ใหม่และลองอีกครั้ง", + "createacct-loginerror": "บัญชีผู้ใช้ถูกสร้างสำเร็จแล้ว แต่คุณไม่สามารถเข้าสู่ระบบได้โดยอัตโนมัติ โปรด[[Special:UserLogin|เข้าสู่ระบบด้วยตนเอง]]", "noname": "คุณไม่ได้ใส่ชื่อผู้ใช้ที่ถูกต้อง", "loginsuccesstitle": "ล็อกอินสำเร็จ", "loginsuccess": "<strong>ขณะนี้คุณล็อกอินสู่ {{SITENAME}} ในชื่อ \"$1\"</strong>", @@ -514,6 +522,7 @@ "createacct-another-realname-tip": "ไม่จำเป็นต้องใส่ชื่อจริง\nหากคุณเลือกใส่ชื่อจริง จะใช้เพื่อแสดงที่มาสำหรับงานของตน", "pt-login": "ล็อกอิน", "pt-login-button": "ล็อกอิน", + "pt-login-continue-button": "ทำการเข้าสู่ระบบต่อไป", "pt-createaccount": "สร้างบัญชี", "pt-userlogout": "ล็อกเอาต์", "php-mail-error-unknown": "เกิดข้อผิดพลาดไม่ทราบสาเหตุในฟังก์ชัน mail() ของพีเอชพี", @@ -530,13 +539,35 @@ "changepassword-success": "เปลี่ยนรหัสผ่านของคุณสำเร็จ!", "changepassword-throttled": "ล่าสุดคุณพยายามล็อกอินมากครั้งเกินไป\nกรุณารอ $1 ก่อนลองอีกครั้ง", "botpasswords": "รหัสผ่านบอต", + "botpasswords-summary": "<em>รหัสผ่านบอต</em>อนุญาตการเข้าถึงให้กับบัญชีผู้ใช้ผ่านทาง API โดยไม่ต้องใช้ใบรับรองการล็อกอินหลักของบัญชีนี้ สิทธิผู้ใช้เมื่อล็อกอินด้วยรหัสผ่านบอตอาจถูกจำกัด\n\nถ้าคุณไม่ทราบว่าทำไมคุณอาจต้องการดำเนินการนี้ คุณไม่ควรดำเนินการนี้ และไม่ควรให้ผู้ใดขอให้คุณสร้างรหัสผ่านไว้ให้พวกเขาเหล่านั้น", + "botpasswords-disabled": "รหัสผ่านสำหรับบอตถูกปิดใช้", + "botpasswords-no-central-id": "หากต้องการใช้รหัสผ่านบอต คุณต้องล็อกอินในชื่อบัญชีผู้ใช้ที่เป็นกลาง", + "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": "การอนุญาตที่นำไปใช้ได้:", + "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 ไม่พร้อมใช้งาน", + "botpasswords-restriction-failed": "ข้อจำกัดของรหัสผ่านบอตห้ามไม่ให้ล็อกอินครั้งนี้", + "botpasswords-invalid-name": "ชื่อผู้ใช้ที่ระบุไม่มีเครื่องหมายคั่นในรหัสผ่านบอต (\"$1\")", + "botpasswords-not-exist": "ผู้ใช้ \"$1\" ไม่มีรหัสผ่านบอต \"$2\".", "resetpass_forbidden": "ไม่สามารถเปลี่ยนรหัสผ่านได้", + "resetpass_forbidden-reason": "ไม่สามารถเปลี่ยนรหัสผ่านได้: $1", "resetpass-no-info": "คุณต้องล็อกอินเพื่อเข้าถึงหน้านี้โดยตรง", "resetpass-submit-loggedin": "เปลี่ยนรหัสผ่าน", "resetpass-submit-cancel": "ยกเลิก", @@ -562,6 +593,8 @@ "passwordreset-emailelement": "ชื่อผู้ใช้: \n$1\n\nรหัสผ่านชั่วคราว: \n$2", "passwordreset-emailsentemail": "หากที่อยู่อีเมลนี้สัมพันธ์กับบัญชีของคุณ เช่นนั้นจะส่งอีเมลตั้งรหัสผ่านใหม่", "passwordreset-emailsentusername": "หากมีที่อยู่อีเมลที่ลงทะเบียนไว้ด้วยกับชื่อผู้ใช้นี้ เช่นนั้นจะส่งอีเมลตั้งรหัสผ่านใหม่", + "passwordreset-invalidemail": "ที่อยู่อีเมลไม่ถูกต้อง", + "passwordreset-nodata": "ไม่ได้ระบุชื่อผู้ใช้และรหัสผ่านไว้", "changeemail": "เปลี่ยนหรือลบที่อยู่อีเมล", "changeemail-header": "กรอกแบบนี้เพื่อเปลี่ยนที่อยู่อีเมลของคุณ หากคุณต้องการลบการเชื่อมโยงของที่อยู่อีเมลใด ๆ จากบัญชีของคุณ ให้เว้นที่อยู่อีเมลใหม่ว่างเมื่อส่งแบบ", "changeemail-no-info": "คุณจำต้องล็อกอินเพื่อเข้าถึงหน้านี้โดยตรง", @@ -606,6 +639,7 @@ "savearticle": "บันทึกหน้า", "savechanges": "บันทึกการเปลี่ยนแปลง", "publishpage": "เผยแพร่หน้า", + "publishchanges": "เผยแพร่การเปลี่ยนแปลง", "preview": "ตัวอย่าง", "showpreview": "แสดงตัวอย่าง", "showdiff": "แสดงการเปลี่ยนแปลง", @@ -616,12 +650,13 @@ "selfredirect": "<strong>คำเตือน:</strong> คุณกำลังสร้างการเปลี่ยนทางไปบทความเดียวกัน\nคุณอาจระบุเป้าหมายของการเปลี่ยนทางผิด หรือคถณอาจแก้ไขหน้าผิด \nหากคุณคลิก \"{{int:savearticle}}\" อีกครั้ง จะสร้างการเปลี่ยนทาง", "missingcommenttext": "กรุณากรอกความเห็นด้านล่าง", "missingcommentheader": "<strong>อย่าลืม:</strong> คุณยังไม่ได้ใส่เรื่องสำหรับความเห็นนี้ \nถ้าคุณคลิก \"{{int:savearticle}}\" อีก จะบันทึกการแก้ไขของคุณโดยไม่ระบุเรื่อง", - "summary-preview": "ตัวอย่างคำอธิบาย:", - "subject-preview": "ตัวอย่างเรื่อง:", + "summary-preview": "ตัวอย่างคำอธิบายการแก้ไข:", + "subject-preview": "ตัวอย่างชื่อเรื่อง:", "previewerrortext": "เกิดข้อผิดพลาดขณะกำลังพยายามดูตัวอย่างการเปลี่ยนแปลงของคุณ", "blockedtitle": "ผู้ใช้ถูกบล็อก", "blockedtext": "<strong>ชื่อผู้ใช้หรือเลขที่อยู่ไอพีของคุณถูกบล็อก</strong>\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": "เลขที่อยู่ไอพีของคุณถูกบล็อกอัตโนมัติ เพราะเคยมีผู้ใช้อื่นใช้ ซึ่งถูกบล็อกโดย $1\nโดยให้เหตุผลว่า\n\n:<em>$2</em>\n\n* เริ่มการบล็อก: $8\n* สิ้นสุดการบล็อก: $6\n* ผู้ถูกบล็อกที่เจตนา: $7\n\nคุณสามารถติดต่อ $1 หรือ[[{{MediaWiki:Grouppage-sysop}}|ผู้ดูแลระบบ]]คนอื่นเพื่ออภิปรายการบล็อกนี้ \nคุณไม่สามารถใช้คุณลักษณะ \"ส่งอีเมลหาผู้ใช้รายนี้ได้\" จนกว่าจะระบุที่อยู่อีเมลที่ถูกต้องใน[[Special:Preferences|การตั้งค่าบัญชี]]ของคุณ และคุณมิได้ถูกห้ามใช้\nเลขที่อยู่ไอพีปัจจุบันของคุณคือ $3 และหมายเลขการบล็อกคือ #$5 \nโปรดรวมรายละเอียดข้างต้นทั้งหมดในการสอบถามใด ๆ", + "systemblockedtext": "ชื่อผู้ใช้หรือที่อยู่ไอพีของคุณถูกบล็อกอัตโนมัติโดยมีเดียวิกิ\nเหตุผลสำหรับการบล็อกคือ:\n\n:<em>$2</em>\n\n* เริ่มการบล็อก: $8\n* สิ้นสุดการบล็อก: $6\n* ผู้ดำเนินการบล็อก: $7\n\nไอพีแอดเดรสปัจจุบันของคุณคือ $3\nโปรดแจ้งรายละเอียดทั้งหมดข้างต้น ถ้าคุณมีข้อสงสัยใด ๆ", "blockednoreason": "ไม่ได้ให้เหตุผล", "whitelistedittext": "คุณต้อง$1เพื่อแก้ไขหน้า", "confirmedittext": "คุณต้องยืนยันที่อยู่อีเมลของคุณก่อนแก้ไขหน้า \nโปรดตั้งและตรวจสอบความสมเหตุสมผลของที่อยู่อีเมลของคุผ่าน[[Special:Preferences|การตั้งค่าผู้ใช้]]", @@ -709,12 +744,15 @@ "invalid-content-data": "ข้อมูลเนื้อหาไม่ถูกต้อง", "content-not-allowed-here": "ไม่อนุญาตเนื้อหา \"$1\" ในหน้า [[$2]]", "editwarning-warning": "การออกจากหน้านี้อาจทำให้ความเปลี่ยนแปลงที่คุณดำเนินการสูญหาย\nถ้าคุณล็อกอินแล้ว คุณสามารถปิดคำเตือนนี้ได้ที่ส่วน \"{{int:prefs-editing}}\" ในการตั้งค่าของคุณ", + "editpage-invalidcontentmodel-title": "ไม่รองรับรูปแบบเนื้อหานี้", "editpage-notsupportedcontentformat-title": "รูปแบบเนื้อหาไม่ได้รับการรองรับ", "editpage-notsupportedcontentformat-text": "ตัวแบบเนื้อหา $2 ไม่รองรับตัวแบบเนื้อหา $1", "content-model-wikitext": "ข้อความวิกิ", "content-model-text": "ข้อความธรรมดา", "content-model-javascript": "จาวาสคริปต์", "content-model-css": "CSS", + "content-json-empty-object": "วัตถุเปล่า", + "content-json-empty-array": "แถวเปล่า", "duplicate-args-category": "หน้าที่ใช้อาร์กิวเมนต์ซ้ำในการเรียกแม่แบบ", "expensive-parserfunction-warning": "<strong>คำเตือน:</strong> หน้านี้มีการเรียกใช้ฟังก์ชันแจงส่วนมากเกินไป\n\nหน้านี้ควรมีการเรียกใช้น้อยกว่า $2 ครั้ง แต่ปัจจุบันมีการเรียกใช้ $1 ครั้ง", "expensive-parserfunction-category": "หน้าที่มีการเรียกใช้ฟังก์ชันแจงส่วนมากเกินไป", @@ -846,6 +884,12 @@ "mergehistory-empty": "ไม่มีรุ่นปรับปรุงที่รวมได้", "mergehistory-done": "รวม $3 รุ่นปรับปรุงของ $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 รุ่นแก้ไขเก่าที่เกินขีดจำกัดสูงสุดจะต้องถูกย้ายไปก่อน", "mergehistory-no-source": "ไม่มีหน้าต้นทาง $1", "mergehistory-no-destination": "ไม่มีหน้าปลายทาง $1", "mergehistory-invalid-source": "ชื่อเรื่องหน้าต้นทางต้องสมเหตุสมผล", @@ -921,6 +965,7 @@ "search-external": "ค้นหาภายนอก", "searchdisabled": "การค้นหา {{SITENAME}} ถูกปิดใช้งาน \nคุณสามารถค้นหาโดยทางกูเกิลในระหว่างนั้น\nโปรดทราบว่าดัชนีเนื้อหา {{SITENAME} อาจล้าสมัย", "search-error": "มีข้อผิดพลาดขณะค้นหา: $1", + "search-warning": "มีคำเตือนขณะค้นหา: $1", "preferences": "การตั้งค่า", "mypreferences": "การตั้งค่า", "prefs-edits": "จำนวนการแก้ไข:", @@ -952,8 +997,6 @@ "saveprefs": "บันทึก", "restoreprefs": "คืนการตั้งค่าโดยปริยายทั้งหมด (ในทุกส่วน)", "prefs-editing": "การแก้ไข", - "rows": "แถว:", - "columns": "คอลัมน์:", "searchresultshead": "ค้นหา", "stub-threshold": "ขีดแบ่งสำหรับการจัดรูปแบบลิงก์โครง ($1):", "stub-threshold-sample-link": "ตัวอย่าง", @@ -1037,7 +1080,9 @@ "userrights-user-editname": "ใส่ชื่อผู้ใช้:", "editusergroup": "โหลดกลุ่มผู้ใช้", "editinguser": "กำลังเปลี่ยนสิทธิผู้ใช้ของผู้ใช้ <strong>[[User:$1|$1]]</strong> $2", + "viewinguserrights": "กำลังดูสิทธิผู้ใช้ของผู้ใช้ <strong>[[User:$1|$1]]</strong> $2", "userrights-editusergroup": "แก้ไขกลุ่มผู้ใช้", + "userrights-viewusergroup": "ดูกลุ่ม{{GENDER:$1|ผู้ใช้}}", "saveusergroups": "บันทึกกลุ่ม{{GENDER:$1|ผู้ใช้}}", "userrights-groupsmember": "สมาชิกของ:", "userrights-groupsmember-auto": "สมาชิกโดยปริยายของ:", @@ -1073,6 +1118,7 @@ "right-createpage": "สร้างหน้า (ที่ไม่ใช่หน้าอภิปราย)", "right-createtalk": "สร้างหน้าอภิปราย", "right-createaccount": "สร้างบัญชีผู้ใช้ใหม่", + "right-autocreateaccount": "ล็อกอินโดยใช้บัญชีผู้ใช้ภายนอกอัตโนมัติ", "right-minoredit": "ทำเครื่องหมายการแก้ไขเป็นการแก้ไขเล็กน้อย", "right-move": "ย้ายหน้า", "right-move-subpages": "ย้ายหน้าพร้อมหน้าย่อย", @@ -1137,14 +1183,36 @@ "right-siteadmin": "ล็อกและปลดล็อกฐานข้อมูล", "right-override-export-depth": "ส่งออกหน้า รวมหน้าที่เชื่อมโยงกับหน้านี้สูงสุด 5 ลำดับชั้น", "right-sendemail": "ส่งอีเมลหาผู้ใช้อื่น", + "right-managechangetags": "สร้างและเปิด/ปิดใช้งาน[[Special:Tags|ป้ายชื่อ]]", + "right-deletechangetags": "ลบ[[Special:Tags|ป้ายชื่อ]]ออกจากฐานข้อมูล", + "grant-group-page-interaction": "โต้ตอบกับหน้า", + "grant-group-file-interaction": "โต้ตอบกับสื่อ", + "grant-group-watchlist-interaction": "โต้ตอบกับรายการเฝ้าดูของคุณ", "grant-group-email": "ส่งอีเมล", + "grant-group-customization": "การปรับแต่งและการตั้งค่า", + "grant-group-other": "กิจกรรมเบ็ดเตล็ด", + "grant-blockusers": "บล็อกและปลดบล็อกผู้ใช้ต่าง ๆ", "grant-createaccount": "สร้างบัญชี", "grant-createeditmovepage": "สร้าง แก้ไข และย้ายหน้า", + "grant-delete": "ลบหน้า รุ่นแก้ไขเก่า และรายการบันทึก", + "grant-editinterface": "แก้ไขเนมสเปซของมีเดียวิกิและ CSS/JavaScript ของผู้ใช้", + "grant-editmycssjs": "แก้ไข CSS/JavaScript ผู้ใช้ของคุณ", + "grant-editmyoptions": "แก้ไขการตั้งค่าผู้ใช้ของคุณ", "grant-editmywatchlist": "แก้ไขรายการเฝ้าดูของคุณ", "grant-editpage": "แก้ไขหน้านี้", + "grant-editprotected": "แก้ไขหน้าที่ถูกล็อก", + "grant-highvolume": "การแก้ไขในปริมาณสูง", + "grant-patrol": "ลาดตระเวนตรวจการเปลี่ยนแปลงหน้าต่าง ๆ", + "grant-privateinfo": "เข้าถึงข้อมูลส่วนบุคคล", + "grant-protect": "ล็อกและปลดล็อกหน้าต่าง ๆ", + "grant-rollback": "ทำกลับการเปลี่ยนแปลงในหน้า", + "grant-sendemail": "ส่งอีเมลหาผู้ใช้อื่น", "grant-uploadeditmovefile": "อัปโหลด แทนที่ และย้ายไฟล์", "grant-uploadfile": "อัปโหลดไฟล์ใหม่", + "grant-basic": "สิทธิพื้นฐาน", + "grant-viewdeleted": "ดูไฟล์และหน้าที่ถูกลบ", "grant-viewmywatchlist": "ดูรายการเฝ้าดูของคุณ", + "grant-viewrestrictedlogs": "ดูรายการบันทึกที่ถูกจำกัดไว้", "newuserlogpage": "ปูมการสร้างผู้ใช้", "newuserlogpagetext": "นี่คือปูมการสร้างผู้ใช้", "rightslog": "ปูมสิทธิผู้ใช้", @@ -1154,6 +1222,7 @@ "action-createpage": "สร้างหน้านี้", "action-createtalk": "สร้างหน้าอภิปรายนี้", "action-createaccount": "สร้างบัญชีผู้ใช้นี้", + "action-autocreateaccount": "สร้างบัญชีผู้ใช้ภายนอกนี้อัตโนมัติ", "action-history": "ดูประวัติหน้านี้", "action-minoredit": "ทำเครื่องหมายการแก้ไขนี้เป็นการแก้ไขเล็กน้อย", "action-move": "ย้ายหน้านี้", @@ -1168,7 +1237,9 @@ "action-writeapi": "ใช้การเขียนเอพีไอ", "action-delete": "ลบหน้านี้", "action-deleterevision": "ลบรุ่นปรับปรุง", + "action-deletelogentry": "ลบรายการบันทึก", "action-deletedhistory": "ดูประวัติที่ถูกลบของหน้าใดหน้าหนึ่ง", + "action-deletedtext": "ดูข้อความรุ่นแก้ไขเก่าที่ถูกลบ", "action-browsearchive": "ค้นหาหน้าที่ถูกลบ", "action-undelete": "กู้คืนหน้า", "action-suppressrevision": "ตรวจทานและกู้คืนรุ่นปรับปรุงที่ซ่อนอยู่", @@ -1186,11 +1257,14 @@ "action-userrights-interwiki": "แก้ไขสิทธิผู้ใช้ของผู้ใช้บนวิกิอื่น", "action-siteadmin": "ล็อกหรือปลดล็อกฐานข้อมูล", "action-sendemail": "ส่งอีเมล", + "action-editmyoptions": "แก้ไขการตั้งค่าของคุณ", "action-editmywatchlist": "แก้ไขรายการเฝ้าดูของคุณ", "action-viewmywatchlist": "ดูรายการเฝ้าดูของคุณ", "action-viewmyprivateinfo": "ดูสารสนเทศส่วนตัวของคุณ", "action-editmyprivateinfo": "แก้ไขสารสนเทศส่วนตัวของคุณ", "action-editcontentmodel": "แก้ไขตัวแบบเนื้อหาของหน้า", + "action-deletechangetags": "ลบป้ายชื่อออกจากฐานข้อมูล", + "action-purge": "ล้างหน้านี้", "nchanges": "$1 การเปลี่ยนแปลง", "enhancedrc-since-last-visit": "$1 {{PLURAL:$1|ตั้งแต่การเยี่ยมชมครั้งสุดท้าย}}", "enhancedrc-history": "ประวัติ", @@ -1207,6 +1281,24 @@ "recentchanges-legend-heading": "<strong>คำอธิบายสัญลักษณ์:</strong>", "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (ดูเพิ่มที่ [[Special:NewPages|รายชื่อหน้าใหม่]])", "recentchanges-submit": "แสดง", + "rcfilters-activefilters": "ตัวกรองที่ทำงาน", + "rcfilters-restore-default-filters": "คืนค่าตัวกรองปริยาย", + "rcfilters-clear-all-filters": "ล้างตัวกรองทั้งหมด", + "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-filter-editsbyself-label": "การแก้ไขของคุณเอง", + "rcfilters-filter-editsbyself-description": "การแก้ไขต่าง ๆ ที่คุณทำ", + "rcfilters-filter-editsbyother-label": "การแก้ไขต่าง ๆ ที่ผู้อื่นทำ", + "rcfilters-filter-editsbyother-description": "การแก้ไขต่าง ๆ ที่ผู้ใช้อื่นทำ (ไม่ใช่คุณ)", + "rcfilters-filtergroup-userExpLevel": "ระดับผู้เชี่ยวชาญ (สำหรับผู้ใช้ที่ลงทะเบียนเท่านั้น)", + "rcfilters-filter-userExpLevel-newcomer-label": "ผู้ที่มาใหม่", + "rcfilters-filter-userExpLevel-experienced-label": "ผู้ใช้ที่มีความเชี่ยวชาญ", "rcnotefrom": "ด้านล่างเป็นการเปลี่ยนแปลงตั้งแต่ <strong>$3, $4</strong> (แสดงมากสุด <strong>$1</strong>)", "rclistfrom": "แสดงการเปลี่ยนแปลงใหม่เริ่มตั้งแต่ $2, $3", "rcshowhideminor": "$1การแก้ไขเล็กน้อย", @@ -1326,7 +1418,7 @@ "uploaddisabledtext": "ปิดใช้งานการอัปโหลดไฟล์", "php-uploaddisabledtext": "ปิดการใช้งานการอัปโหลดไฟล์ในพีเอชพี\nกรุณาตรวจสอบการตั้งค่า file_uploads", "uploadscripted": "ไฟล์นี้มีโค้ดเอชทีเอ็มแอลหรือสคริปต์ ซึ่งอาจก่อให้การแปลคำสั่งของเบราว์เซอร์ผิดพลาด", - "uploadscriptednamespace": "ไฟล์ SVG นี้มีเนมสเปซไม่ถูกต้อง \"$1\"", + "uploadscriptednamespace": "ไฟล์ SVG นี้มีเนมสเปซไม่ถูกต้อง \"<nowiki>$1</nowiki>\"", "uploadvirus": "ไฟล์นี้มีไวรัส! \nรายละเอียด: $1", "upload-source": "ไฟล์ต้นทาง", "sourcefilename": "ชื่อไฟล์ต้นทาง:", @@ -1744,7 +1836,7 @@ "emailccsubject": "คัดลอกสารของคุณไป $1: $2", "emailsent": "ส่งอีเมลแล้ว", "emailsenttext": "ส่งสารอีเมลของคุณแล้ว", - "emailuserfooter": "$1 ส่งอีเมลนี้ถึง $2 โดยฟังก์ชัน \"{{int:emailuser}}\" ที่ {{SITENAME}}", + "emailuserfooter": "$1 ส่งอีเมลนี้ถึง $2 โดยฟังก์ชัน \"{{int:emailuser}}\" ที่ {{SITENAME}} อีเมลของคุณจะถูกส่งไปที่ผู้ส่งคนเดิมโดยตรง โดยจะเปิดเผยที่อยู่อีเมลให้พวกเขาเห็น", "usermessage-summary": "ฝากสารระบบ", "usermessage-editor": "ตัวส่งสารของระบบ", "watchlist": "รายการเฝ้าดู", @@ -1799,7 +1891,7 @@ "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ระบบประกาศ {{SITENAME}} ที่เป็นมิตรของคุณ\n\n--\nในการเปลี่ยนการตั้งค่าประกาศอีเมลของคุณ โปรดดู\n{{canonicalurl:{{#special:Preferences}}}}\n\nในการเปลี่ยนการตั้งค่ารายการเฝ้าดูของคุณ โปรดดู\n{{canonicalurl:{{#special:EditWatchlist}}}}\n\nในการลบหน้าจากรายการเฝ้าดูของคุณ โปรดดู\n$UNWATCHURL\n\nผลป้อนกลับและความช่วยเหลือเพิ่มเติม:\n$HELPPAGE", + "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", "created": "ถูกสร้าง", "changed": "ถูกเปลี่ยนแปลง", "deletepage": "ลบหน้า", @@ -3017,15 +3109,7 @@ "feedback-thanks": "ขอบคุณ! ผลป้อนกลับของคุณถูกโพสต์ไปยังหน้า \"[$2 $1]\" แล้ว", "searchsuggest-search": "ค้นหา {{SITENAME}}", "searchsuggest-containing": "มี...", - "api-error-badaccess-groups": "คุณไม่ได้รับอนุญาตให้อัปโหลดไฟล์มายังวิกินี้", - "api-error-empty-file": "ไฟล์ที่คุณส่งมานั้นว่าง", "api-error-emptypage": "ไม่อนุญาตให้สร้างหน้าใหม่ที่ว่าง", - "api-error-file-too-large": "ไฟล์ที่คุณส่งมาใหญ่เกินไป", - "api-error-filename-tooshort": "ชื่อไฟล์สั้นเกินไป", - "api-error-filetype-banned": "ไฟล์ประเภทนี้ถูกห้าม", - "api-error-mustbeloggedin": "กรุณาลงชื่อเข้าใช้เพื่ออัปโหลดไฟล์", - "api-error-ratelimited": "คุณกำลังพยายามอัปโหลดไฟล์ภายในระยะห่างเวลาที่สั้นเกินกว่าที่วิกินี้อนุญาต\nโปรดรอสักครู่แล้วลองใหม่อีกครั้ง", - "api-error-uploaddisabled": "การอัปโหลดถูกปิดใช้งานบนวิกินี้", "duration-seconds": "$1 วินาที", "duration-minutes": "$1 นาที", "duration-hours": "$1 ชั่วโมง", diff --git a/languages/i18n/tl.json b/languages/i18n/tl.json index 405d823817..30fe744e3b 100644 --- a/languages/i18n/tl.json +++ b/languages/i18n/tl.json @@ -405,7 +405,7 @@ "userloginnocreate": "Lumagda", "logout": "Umalis sa pagkaka-login", "userlogout": "Umalis sa pagkaka-login", - "notloggedin": "Hindi nakalagda", + "notloggedin": "Hindi naka-login", "userlogin-noaccount": "Wala ka pa bang account?", "userlogin-joinproject": "Sumali sa {{SITENAME}}", "nologin": "Wala ka pang account? $1.", @@ -521,8 +521,6 @@ "passwordreset-emaildisabled": "Hindi pinagana ang email features sa wiking ito.", "passwordreset-username": "Pangalan ng tagagamit:", "passwordreset-domain": "Nasasakupan:", - "passwordreset-capture": "Tingnan ang lumabas na e-liham?", - "passwordreset-capture-help": "Kapag tsetsekan mo ang kahong ito, ang email (may pansamantalang password) ay ipapakita sa iyo at ipapadala rin sa tagagamit.", "passwordreset-email": "Direksiyong e-liham:", "passwordreset-emailtitle": "Mga detalye ng account sa {{SITENAME}}", "passwordreset-emailtext-ip": "Isang tao (marahil ay ikaw, mula sa IP address na $1) ang humiling ng isang paalala sa iyong mga detalye ng account para sa {{SITENAME}} ($4). Ang sumusunod na {{PLURAL:$3|account ng tagagamit ay|mga account ng tagagamit ay}} may kaugnayan sa email address na ito:\n\n$2\n\n{{PLURAL:$3|Ang pansamantalang password na ito|Ang mga pansamantalang password na ito}} ay mawawalan ng bisa sa loob ng {{PLURAL:$5|isang araw|$5 araw}}.\nDapat kang mag-login at pumili ng isang bagong password ngayon. Kung ibang tao ang gumawa ng kahilingang ito, o kung naalala mo na ang orihinal mong password, at hindi mo na nais palitan ito, maaari mong huwag nang pansinin ang mensaheng ito at magpatuloy sa paggamit ng luma mong password.", @@ -866,8 +864,6 @@ "saveprefs": "Itala", "restoreprefs": "Ibalik ang lahat ng likas na mga pagtatakda", "prefs-editing": "May binabago", - "rows": "Mga pahalang na hanay:", - "columns": "Mga pahabang hanay:", "searchresultshead": "Hanapin", "stub-threshold": "Kakayanan para sa pagpopormat ng <a href=\"#\" class=\"usbong\">kawing ng usbong</a> (mga ''byte''):", "stub-threshold-disabled": "Hindi pinagagana", @@ -906,6 +902,7 @@ "username": "{{GENDER:$1|Bansag}}:", "prefs-memberingroups": "{{GENDER:$2|Kasapi}} ng {{PLURAL:$1|na pangkat|na mga pangkat}}:", "prefs-memberingroups-type": "$1", + "group-membership-link-with-expiry": "$1 (hanggang $2)", "prefs-registration": "Oras ng pagtatala:", "prefs-registration-date-time": "$1", "yourrealname": "Tunay na pangalan:", @@ -954,11 +951,16 @@ "userrights-reason": "Dahilan:", "userrights-no-interwiki": "Wala kang pahintulot na baguhin ang mga karapatan ng tagagamit sa ibang mga wiki.", "userrights-nodatabase": "Hindi umiiral o hindi lokal ang kalipunan ng datos na $1", - "userrights-nologin": "Kailangang [[Special:UserLogin|nakalagda ka]] bilang tagapangasiwa upang maitalaga ang mga karapatan ng tagagamit.", - "userrights-notallowed": "Wala kang pahintulot na magdagdag o magtanggal ng mga karapatan ng tagagamit.", "userrights-changeable-col": "Mga pangkat na maaari mong baguhin", "userrights-unchangeable-col": "Mga pangkat na hindi mo mababago", "userrights-irreversible-marker": "$1*", + "userrights-expiry-current": "Mapapaso sa $1", + "userrights-expiry-none": "Hindi napapaso", + "userrights-expiry": "Mapapaso ng:", + "userrights-expiry-existing": "Sa kaunting oras na: $3, $2", + "userrights-expiry-options": "Isang araw:1 day,Isang linggo:1 week,Isang buwan:1 month,Tatlong buwan:3 months,Anim na buwan:6 months,Isang taon:1 year", + "userrights-invalid-expiry": "Sa oras na mapaso ang grupong \"$1\" ay hindi na magagamit.", + "userrights-expiry-in-past": "Sa oras na mapaso ang grupong \"$1\" ay hindi na magagamit.", "group": "Pangkat:", "group-user": "Mga tagagamit", "group-autoconfirmed": "Mga tagagamit na nakompirma sa kusang paraan (autokompirmasyon)", @@ -1037,7 +1039,6 @@ "right-siteadmin": "Ikandado at alisin ang pagkakakandado ng kalipunan ng dato", "right-override-export-depth": "Iluwas ang mga pahina na kabilang ang mga pahinang nakakawing magpahanggang sa isang lalim na 5", "right-sendemail": "Magpadala ng e-liham sa ibang mga tagagamit", - "right-passwordreset": "Tingnan ang mga email ng muling pagtatakda ng password", "newuserlogpage": "Talaan ng paglikha ng tagagamit", "newuserlogpagetext": "Isa itong talaan ng mga paglikha ng tagagamit.", "rightslog": "Tala ng mga karapatan ng tagagamit", @@ -1090,6 +1091,9 @@ "recentchanges-label-plusminus": "Nagbago ang laki ng pahina sa ganitong bilang ng mga byte", "recentchanges-legend-heading": "<strong>Gabay:</strong>", "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (tingnan din [[Special:NewPages|ang talaan ng mga bagong pahina]])", + "rcfilters-restore-default-filters": "Ibalik ang mga napagkaukulang 'filters'", + "rcfilters-clear-all-filters": "Burahin lahat ng mga 'filters'", + "rcfilters-empty-filter": "Walang aktibong panangga. Lahat ay ipinamalas.", "rcnotefrom": "Nasa ibaba ang mga pagbabago mula pa noong '''$2''' (ipinapakita ang magpahanggang sa '''$1''').", "rclistfrom": "Ipakita ang bagong mga pagbabago simula sa $3 $2", "rcshowhideminor": "$1 ang mga maliliit na pagbabago", @@ -1487,6 +1491,7 @@ "apisandbox-reset": "Hawiin", "apisandbox-examples": "Halimbawa", "apisandbox-results": "Kinalabasan", + "apisandbox-request-selectformat-label": "Pakitang inihinging-datos gamit ang:", "apisandbox-request-url-label": "Hilingin ang URL:", "apisandbox-request-time": "Oras ng paghiling: $1", "apisandbox-continue": "Ipagpatuloy", @@ -2967,43 +2972,11 @@ "feedback-useragent": "Ahente ng tagagamit:", "searchsuggest-search": "Maghanap", "searchsuggest-containing": "naglalaman ng ...", - "api-error-badaccess-groups": "Hindi ka pinapayagang makapagkarga ng mga talaksan papunta sa wiking ito.", "api-error-badtoken": "Panloob na kamalian: masamang kahalip.", - "api-error-copyuploaddisabled": "Ang pagkakarga ng URL ay hindi pinagagana sa tagapaghaing ito.", - "api-error-duplicate": "May {{PLURAL:$1|ibang talaksang|ibang ilang mga talaksang}} nasa wiki na na may katulad na nilalaman", - "api-error-duplicate-archive": "Nagkaroon {{PLURAL:$1|dati ng iba pang talaksan|dati ng mga ilang iba pang mga talaksan}} na umiiral na sa sityo na may katulad na nilalaman, ngunit {{PLURAL:$1|ito ay|ito ay mga}} nabura na.", - "api-error-empty-file": "Walang laman ang ipinasa mong talaksan.", "api-error-emptypage": "Lumilikha ng bago, hindi pinapayagan ang mga pahinang walang laman.", - "api-error-fetchfileerror": "Panloob na kamalian: may naganap na pagkakamali habang kinukuha ang talaksan.", - "api-error-fileexists-forbidden": "Isang talaksan na may pangalang \"$1\" ang umiiral na, at hindi maaaring patungan ng muling pagsusulat.", - "api-error-fileexists-shared-forbidden": "Isang talaksang may pangalang \"$1\" ang umiiral na sa loob ng repository ng pinagsasaluhang talaksan, at hindi maaaring patungan ng muling pagsusulat.", - "api-error-file-too-large": "Napakalaki ng talaksang ipinasa mo.", - "api-error-filename-tooshort": "Napakaiksi ng pangalan ng talaksan.", - "api-error-filetype-banned": "Ipinagbabawal ang ganitong uri ng talaksan.", - "api-error-filetype-banned-type": "Ang $1 {{PLURAL:$4|ay isang hindi pinapahintulutang uri ng talaksan|ay hindi pinapahintulutang mga uri ng talaksan}}. Ang pinapayagang {{PLURAL:$3|uri ng talaksan ay ang|mga uri ng talaksan ay ang mga}} $2.", - "api-error-filetype-missing": "Kulang ng karugtong ang talaksan.", - "api-error-hookaborted": "Ang pagbabagong sinubok mong gawin ay hindi itinuloy ng isang kawil ng dugtong.", - "api-error-http": "Panloob na kamalian: hindi makaugnay sa tagahain.", - "api-error-illegal-filename": "Hindi pinapayagan ang pangalan ng talaksan.", - "api-error-internal-error": "Panloob na kamalian: may naganap na kamalian habang pinoproseso ang pagkakarga mo sa wiki.", - "api-error-invalid-file-key": "Panloob na kamalian: hindi matagpuan ang talaksan sa loob ng pansamantalang taguan.", - "api-error-missingparam": "Panloob na kamalian: nawawala ang mga parametro ng kahilingan.", - "api-error-missingresult": "Panloob na kamalian: hindi matukoy kung nagtagumpay ang kopya.", - "api-error-mustbeloggedin": "Dapat na nakalagda ka upang makapagkarga ng mga talaksan.", - "api-error-mustbeposted": "Panloob na kamalian: ang kahilingan ay nangangailangan ng HTTP POST.", - "api-error-noimageinfo": "Nagtagumpay ang pagkakarga, subalit hindi nakapagbigay ng anumang kabatiran ang tagapaghain hinggil sa talaksan.", - "api-error-nomodule": "Panloob na kamalian: walang pangkat ng modyul na pangkarga.", - "api-error-ok-but-empty": "Panloob na kamalian: walang tugon mula sa tagapaghain.", - "api-error-overwrite": "Hindi pinapayagan ang pagsusulat sa ibabaw ng isang umiiral na talaksan.", "api-error-stashfailed": "Panloob na kamalian: nabigo ang tagapaghain na magtabi ng pansamantalang talaksan.", - "api-error-timeout": "Hindi tumugon ang tagapaghain sa loob ng inaasahang panahon.", - "api-error-unclassified": "Naganap ang isang hindi nalalamang kamalian", - "api-error-unknown-code": "Hindi malamang kamalian: \"$1\"", - "api-error-unknown-error": "Panloob na kamalian: may nangyaring kamalian habang sinusubok mong ikarga ang talaksan mo.", "api-error-unknown-warning": "Hindi nalalamang babala: $1", "api-error-unknownerror": "Hindi malamang kamalian: \"$1\".", - "api-error-uploaddisabled": "Hindi pinapagana ang pagkakargang paitaas sa wiking ito.", - "api-error-verification-error": "Maaaring sira ang talaksang ito, o may maling karugtong.", "duration-seconds": "$1 {{PLURAL:$1|segundo|mga segundo}}", "duration-minutes": "$1 {{PLURAL:$1|minuto|mga minuto}}", "duration-hours": "$1 {{PLURAL:$1|oras|mga oras}}", @@ -3045,6 +3018,5 @@ "special-characters-group-khmer": "Khmer", "mw-widgets-dateinput-placeholder-day": "TTTT-BB-AA", "mw-widgets-dateinput-placeholder-month": "TTTT-BB", - "randomrootpage": "Alin mang pinag-ugatang/pinagmulang pahina", - "edit-error-long": "Mga kamalian:" + "randomrootpage": "Alin mang pinag-ugatang/pinagmulang pahina" } diff --git a/languages/i18n/tr.json b/languages/i18n/tr.json index f47f0f33ba..d5b211cb06 100644 --- a/languages/i18n/tr.json +++ b/languages/i18n/tr.json @@ -94,25 +94,25 @@ "1917 Ekim Devrimi" ] }, - "tog-underline": "Bağlantıların altını çiz:", - "tog-hideminor": "Son değişiklikler sayfasında küçük değişiklikleri gizle", - "tog-hidepatrolled": "Son değişikliklerde devriye görmüş değişiklikleri gizle", - "tog-newpageshidepatrolled": "Yeni sayfalar listesinde, devriye görmüş sayfaları gizle", + "tog-underline": "Bağlantıların altını çizme:", + "tog-hideminor": "Son değişiklikler sayfasında küçük düzenlemeleri gizle", + "tog-hidepatrolled": "Son değişikliklerdeki devriyenin gördüğü düzenlemeleri gizle", + "tog-newpageshidepatrolled": "Yeni sayfalar listesinde devriyenin gördüğü sayfaları gizle", "tog-hidecategorization": "Sayfa kategorilendirmesini gizle", - "tog-extendwatchlist": "Ä°zleme listesini sadece en son değil, tüm değişiklikleri göstermek üzere genişlet", - "tog-usenewrc": "Son değişiklikler sayfasındaki ve izleme listesindeki değişiklikleri sayfalara gruplandır", + "tog-extendwatchlist": "Ä°zleme listesini sadece en son değil, tüm değişiklikleri gösterecek şekilde genişlet", + "tog-usenewrc": "Son değişiklikler ve izleme listesindeki değişiklikleri sayfalara göre gruplandır", "tog-numberheadings": "Başlıkları otomatik numaralandır", "tog-showtoolbar": "Düzenleme araç çubuğunu göster", - "tog-editondblclick": "Çift tıklayarak sayfaları düzenle", - "tog-editsectiononrightclick": "Bölüm başlığına sağ tıklayarak bölüm düzenleyebilmeyi etkinleştir", + "tog-editondblclick": "Çift tıklandığında sayfaları düzenle", + "tog-editsectiononrightclick": "Bölüm başlıklarına sağ tıklayarak bölüm düzenlemeyi etkinleştir", "tog-watchcreations": "Oluşturduğum sayfaları ve yüklediğim dosyaları izleme listeme ekle", - "tog-watchdefault": "Değişiklik yaptığım sayfaları ve dosyaları izleme listeme ekle", + "tog-watchdefault": "Düzenlediğim sayfaları ve dosyaları izleme listeme ekle", "tog-watchmoves": "Taşıdığım sayfaları ve dosyaları izleme listeme ekle", "tog-watchdeletion": "Sildiğim sayfaları ve dosyaları izleme listeme ekle", "tog-watchuploads": "Yüklediğim yeni dosyaları izleme listeme ekle", - "tog-watchrollback": "Geridönüş yaptığım sayfaları izleme listeme ekle", - "tog-minordefault": "Varsayılan olarak, bütün düzenlemelerimi küçük değişiklik olarak işaretle", - "tog-previewontop": "Ön izlemeyi, düzenleme kutusunun üstünde göster", + "tog-watchrollback": "Eski hâline getirdiğim sayfaları izleme listeme ekle", + "tog-minordefault": "Varsayılan olarak, bütün düzenlemeleri küçük düzenleme olarak işaretle", + "tog-previewontop": "Ön izlemeyi, düzenleme kutusunun öncesinde göster", "tog-previewonfirst": "Ä°lk düzenlemede ön izlemeyi göster", "tog-enotifwatchlistpages": "Ä°zleme listemdeki bir sayfa veya dosya değiştirilirse bana e-posta gönder", "tog-enotifusertalkpages": "Kullanıcı mesaj sayfamda değişiklik olduğunda bana e-posta gönder", @@ -260,6 +260,7 @@ "searcharticle": "Git", "history": "Sayfa geçmişi", "history_short": "Geçmiş", + "history_small": "geçmiş", "updatedmarker": "son ziyaretimden sonra güncellenmiş", "printableversion": "Yazdırılabilir sürüm", "permalink": "Kalıcı bağlantı", @@ -292,6 +293,7 @@ "views": "Görünümler", "toolbox": "Araçlar", "tool-link-userrights": "{{GENDER:$1|Kullanıcı}} gruplarını değiştir", + "tool-link-userrights-readonly": "{{GENDER:$1|Kullanıcı}} gruplarını gör", "tool-link-emailuser": "Bu {{GENDER:$1|kullanıcıya}} e-posta gönder", "userpage": "Kullanıcı sayfasını görüntüle", "projectpage": "Proje sayfasını görüntüle", @@ -410,6 +412,7 @@ "missingarticle-rev": "(revizyon#: $1)", "missingarticle-diff": "(Fark: $1, $2)", "readonly_lag": "Yedek sunucular ana sunucu ile güncellenirken veritabanı otomatik olarak kilitlendi.", + "nonwrite-api-promise-error": "'Promise-Non-Write-API-Action' HTTP üstbilgisi gönderildi, ancak istek bir API yazma modülüne yapıldı.", "internalerror": "Dahili hata", "internalerror_info": "Dahili hata: $1", "internalerror-fatal-exception": "\"$1\" tipinde hayati istisna", @@ -500,19 +503,12 @@ "login": "Oturum aç", "login-security": "Kimliğinizi doğrulayın", "nav-login-createaccount": "Oturum aç / hesap oluştur", - "userlogin": "Oturum aç / hesap oluştur", - "userloginnocreate": "Giriş yap", "logout": "Oturumu kapat", "userlogout": "Oturumu kapat", "notloggedin": "Oturum açık değil", "userlogin-noaccount": "Bir hesabınız yok mu?", "userlogin-joinproject": "{{SITENAME}} sitesine katılın", - "nologin": "Bir hesabınız yok mu? $1.", - "nologinlink": "Hesap oluşturun", "createaccount": "Hesap oluştur", - "gotaccount": "Zaten bir hesabınız var mı? $1.", - "gotaccountlink": "Oturum açın", - "userlogin-resetlink": "Giriş bilgilerinizi mi unuttunuz?", "userlogin-resetpassword-link": "Parolanızı mı unuttunuz?", "userlogin-helplink2": "Oturum açma konusunda yardım alın", "userlogin-loggedin": "Zaten {{GENDER:$1|$1}} olarak oturum açtınız.\nBaşka bir kullanıcı olarak oturum açmak için aşağıdaki formu kullanın.", @@ -523,10 +519,11 @@ "createacct-email-ph": "E-posta adresinizi girin", "createacct-another-email-ph": "E-posta adresinizi girin", "createaccountmail": "Geçici bir rastgele şifre kullanabilir ve bu şifreyi belirtilen e-posta adresine gönderebilirsiniz", + "createaccountmail-help": "Parolayı öğrenmeden başka bir kişi için hesap oluşturmak amacıyla kullanılabilir.", "createacct-realname": "Gerçek adı (isteğe bağlı)", - "createaccountreason": "Sebep:", "createacct-reason": "Gerekçe", "createacct-reason-ph": "Neden başka bir hesap oluşturuyorsunuz", + "createacct-reason-help": "Hesap oluşturma günlüğünde gösterilen mesaj", "createacct-submit": "Hesabınızı oluşturun", "createacct-another-submit": "Hesap oluşturun", "createacct-continue-submit": "Hesap oluşturmaya devam et", @@ -569,7 +566,7 @@ "eauthentsent": "Belirtilen e-posta adresine onay kodu içeren bir e-posta gönderildi.\nHesaba başka bir e-posta gönderilmeden önce, e-postadaki yönergeleri uygulayıp, hesabın gerçekten size ait olduğunu onaylamanız gerekir.", "throttled-mailpassword": "Bir parola sıfırlama e-postası son {{PLURAL:$1|bir saat|$1 saat}} içinde zaten gönderildi. Hizmeti kötüye kullanmayı önlemek için, her {{PLURAL:$1|bir saatte|$1 saatte}} sadece bir parola sıfırlama e-postası gönderilecektir.", "mailerror": "E-posta gönderim hatası: $1", - "acct_creation_throttle_hit": "Sizin IP adresinizi kullanarak bu vikiyi ziyaret edenler son günde {{PLURAL:$1|1 hesap|$1 hesap}} oluşturdu, bu sayı bu zaman aralığında izin verilen azami sayıdır.\nSonuç olarak, bu IP adresini kullanan ziyaretçiler şu anda daha fazla hesap açamazlar.", + "acct_creation_throttle_hit": "Sizin IP adresinizi kullanarak bu vikiyi ziyaret edenler $2 içinde {{PLURAL:$1|1 hesap|$1 hesap}} oluşturdu, bu sayı bu zaman aralığında izin verilen azami sayıdır.\nSonuç olarak, bu IP adresini kullanan ziyaretçiler şu anda daha fazla hesap açamazlar.", "emailauthenticated": "E-posta adresiniz $2 $3 tarihinde onaylandı.", "emailnotauthenticated": "E-posta adresiniz henüz onaylanmadı.\nAşağıdaki işlevlerin hiçbiri için e-posta gönderilmeyecektir.", "noemailprefs": "Bu özelliklerin çalışması için bir e-posta adresi belirtiniz.", @@ -606,6 +603,7 @@ "changepassword-success": "Parolanız değiştirildi!", "changepassword-throttled": "Çok fazla yeni oturum açma girişiminde bulundunuz.\nLütfen tekrar denemeden önce $1 bekleyin.", "botpasswords": "Bot şifreleri", + "botpasswords-summary": "<em>Bot şifreleri,</em> hesabın ana giriş kimlik bilgilerini kullanmadan API aracılığıyla bir kullanıcı hesabına erişime izin verir. Bir bot şifresi ile giriş yaptığınızda mevcut kullanıcı hakları kısıtlanabilir.\n\nBunu neden yapmak isteyebileceğinizi bilmiyorsanız, yapmayınız. Hiç kimse sizden bunlardan birini üretip onlara vermenizi istememelidir.", "botpasswords-disabled": "Bot şifreleri devre dışı.", "botpasswords-no-central-id": "Bot şifresini kullanmak için, merkezi bir hesap ile giriş yapmalısınız.", "botpasswords-existing": "Mevcut bot şifreleri", @@ -716,7 +714,7 @@ "selfredirect": "<strong>Uyarı:</strong> Bu sayfanın kendisine yönlendirme vardır.\nYönlendirme için yanlış hedef belirtmiş olabilirsiniz, ya da yanlış sayfa düzenlemeye çalışmış olabilirsiniz.\n\n\"{{int:savearticle}}\" sayfasına tıklayarak, yönlendirmeyi zaten oluşturabilirsiniz.", "missingcommenttext": "Lütfen aşağıda bir açıklama yazınız.", "missingcommentheader": "<strong>Hatırlatma:</strong> Bu yorum için bir konu girmediniz.\nEğer \"{{int: savearticle}}\" tuşuna tekrar basarsanız, değişikliğiniz konu olmadan kaydedilecektir.", - "summary-preview": "Ön izleme özeti:", + "summary-preview": "Değişiklik özeti ön izlemesi:", "subject-preview": "Konu ön izlemesi:", "previewerrortext": "Yaptığınız değişikliklerin önizlemesi sırasında bir hata oluştu.", "blockedtitle": "Kullanıcı erişimi engellendi.", @@ -754,7 +752,7 @@ "previewnote": "'''Bunun yalnızca bir ön izleme olduğunu unutmayın.'''\nYaptığınız değişiklikler henüz kaydedilmedi!", "continue-editing": "Düzenlemeye devam et", "previewconflict": "Bu önizleme metin düzenleme kutucuğunun üstünde, maddenin eğer değişikliklerinizi kaydetmeyi seçerseniz nasıl görüneceğini yansıtır.", - "session_fail_preview": "Özür dileriz. Oturum açılması ile ilgili veri kaybından kaynaklı değişikliğinizi kaydedemedik.\n\nLütfen tekrar deneyiniz. Eğer bu yöntem işe yaramazsa oturumu kapatıp tekrar sisteme geri giriş yapınız.", + "session_fail_preview": "Özür dileriz. Oturum verisi kaybından dolayı değişikliğinizi kaydedemedik.\n\nOturumunuzu kapatmış olabilirsiniz. <strong>Lütfen oturumunuzun açık olduğunu doğrulayıp tekrar deneyiniz</strong>.\nEğer sorun devam ederse, [[Special:UserLogout|oturumu kapatıp]] tekrar giriş yapmayı deneyin ve tarayıcınızın bu siteden çerezlere izin verip vermediğini kontrol edin.", "session_fail_preview_html": "'''Üzgünüz! Oturum verisinin kaybolmasından dolayı düzenlemenizi işleme geçiremeyeceğiz.'''\n\n''Çünkü {{SITENAME}} sitesinde raw HTML etkindir, önizleme JavaScript saldırılarına önlem olarak gizlenmiştir.''\n\n'''Eğer bu haklı bir düzenleme girişimiyse, lütfen yeniden deneyin. Eğer hala çalışmazsa, [[Special:UserLogout|çıkış yapıp]] yeniden oturum açmayı deneyin.'''", "token_suffix_mismatch": "'''Değişikliğiniz geri çevrildi çünkü alıcınız düzenleme kutucuğundaki noktalama işaretlerini bozdu.\nDeğişikliğiniz, sayfa metninde bozulmayı önlemek için geri çevrildi.\nEğer sorunlu bir web-tabanlı anonim proksi servisi kullanıyorsanız bu olay bazen gerçekleşebilir.'''", "edit_form_incomplete": "'''Değişiklik formu için bazı sunuculara erişilemedi; yaptığınız değişiklikler bozulmamıştır, gözden geçirip tekrar deneyiniz.'''", @@ -1017,6 +1015,7 @@ "search-interwiki-caption": "Kardeş projeler", "search-interwiki-default": "$1 sonuçları:", "search-interwiki-more": "(daha çok)", + "search-interwiki-more-results": "daha fazla sonuç", "search-relatedarticle": "ilgili", "searchrelated": "ilgili", "searchall": "tümü", @@ -1066,10 +1065,8 @@ "saveprefs": "Kaydet", "restoreprefs": "Tüm varsayılan ayarları geri yükle (tüm bölümlerde)", "prefs-editing": "Sayfa yazma alanı", - "rows": "Satır", - "columns": "Sütun", "searchresultshead": "Arama", - "stub-threshold": "<a href=\"#\" class=\"stub\">Taslak bağlantısı</a> formatı için baraj (bayt):", + "stub-threshold": "Taslak bağlantısı formatı için sınır ($1):", "stub-threshold-sample-link": "örnek", "stub-threshold-disabled": "Devre dışı", "recentchangesdays": "Son değişikliklerde gösterilecek günler:", @@ -1078,7 +1075,7 @@ "prefs-help-recentchangescount": "Bu, son değişiklikleri, sayfa geçmişlerini ve günlükleri içerir.", "prefs-help-watchlist-token2": "Bu izleme listenizin gizli anahtarıdır. Anahtarı bilen herkes izleme listenizi görebilir. Bu nedenle kimseyle paylaşmayın. [[Special:ResetTokens|Bu anahtarı sıfırlamak isterseniz buraya tıklayın]].", "savedprefs": "Tercihleriniz kaydedildi.", - "savedrights": "{{GENDER:$1|$1}} için kullanıcı hakları kaydedildi.", + "savedrights": "{{GENDER:$1|$1}} için kullanıcı grupları kaydedildi.", "timezonelegend": "Zaman dilimi:", "localtime": "Yerel saat:", "timezoneuseserverdefault": "Viki varsayılanını kullanın ($1)", @@ -1109,6 +1106,7 @@ "username": "{{GENDER:$1|Kullanıcı adı}}:", "prefs-memberingroups": "{{GENDER:$2|Üye}} {{PLURAL:$1|group|grupları}}:", "prefs-memberingroups-type": "$1", + "group-membership-link-with-expiry": "$1 ($2 tarihine kadar)", "prefs-registration": "Kayıt zamanı:", "prefs-registration-date-time": "$1", "yourrealname": "Gerçek adınız:", @@ -1120,7 +1118,7 @@ "badsig": "Geçersiz ham imza; HTML etiketlerini kontrol edin.", "badsiglength": "Ä°mzanız çok uzun.\n$1 {{PLURAL:$1|karakterin|karakterin}} altında olmalı.", "yourgender": "Cinsiyet?", - "gender-unknown": "Açıklamak istemiyorum", + "gender-unknown": "Yazılım sizden bahsederken, mümkün olduğu sürece cinsiyet belirtmeyen kelimeler kullanacak", "gender-male": "Erkek", "gender-female": "Kadın", "prefs-help-gender": "Bu tercih ayarı isteğe bağlıdır.\nYazılımda söz değerlerinin başlarında bulunan cinsiyete uygun gramerler için kullanılır.\nBu bilgiler herkes tarafından görülebilir.", @@ -1149,17 +1147,17 @@ "prefswarning-warning": "Henüz kaydedilmemiş değişiklikler yaptınız. \"$\"'e basmadığınız takdirde tercihleriniz güncellenmeyecektir.", "prefs-tabs-navigation-hint": "Ä°pucu: Sekmeler listesindeki sekmeler arasında gezinmek için sağ ve sol ok tuşlarını kullanabilirsiniz.", "userrights": "Kullanıcı hakları yönetimi", - "userrights-lookup-user": "Kullanıcı gruplarını düzenle", + "userrights-lookup-user": "Bir kullanıcı seç", "userrights-user-editname": "Kullanıcı adı giriniz:", - "editusergroup": "Kullanıcı grupları düzenle", + "editusergroup": "Kullanıcı gruplarını gör", "editinguser": "<strong>'''[[User:$1|$1]]'''</strong> $2 kullanıcısının yetkileri değiştiriliyor", - "userrights-editusergroup": "Kullanıcı grupları düzenle", - "userrights-viewusergroup": "Kullanıcının gruplarını gör", - "saveusergroups": "Kullanıcı grupları kaydet", + "userrights-editusergroup": "{{GENDER:$1|Kullanıcı}} gruplarını düzenle", + "userrights-viewusergroup": "{{GENDER:$1|Kullanıcı}} gruplarını gör", + "saveusergroups": "{{GENDER:$1|Kullanıcı}} gruplarını kaydet", "userrights-groupsmember": "İçinde olduğu gruplar:", "userrights-groupsmember-auto": "Saklı olarak içinde olduğu gruplar:", "userrights-groupsmember-type": "$1", - "userrights-groups-help": "Bu kullanıcının içinde olduğu grupları değiştirebilirsiniz:\n* Seçili bir kutu, kullanıcının o gruba dahil olduğu anlamına gelir\n* Seçilmemiş bir kutu, kullanıcının o grupta olmadığı anlamına gelir.\n* *, grubu bir kez oluşturduktan sonra silemeceğinizi belirtir, ya da karşılıklı olarak.", + "userrights-groups-help": "Bu kullanıcının içinde olduğu grupları değiştirebilirsiniz:\n* Seçili bir kutu, kullanıcının o gruba dahil olduğunu anlatır.\n* Seçilmemiş bir kutu, kullanıcının o gruba dahil olmadığını anlatır.\n* *, grubu bir kez ekledikten sonra kaldıramayacağınızı veya tam tersi kaldırdıktan sonra ekleyemeyeceğiniz belirtir.\n* #, grubun sona erme zamanını yalnızca öne çekebileceğinizi, ileri alamayacağınızı belirtir.", "userrights-reason": "Neden:", "userrights-no-interwiki": "Diğer vikilerdeki kullanıcıların izinlerini değiştirmeye yetkiniz yok.", "userrights-nodatabase": "$1 veritabanı mevcut veya bölgesel değil", @@ -1335,6 +1333,8 @@ "recentchanges-legend-heading": "<strong>Gösterge:</strong>", "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (ayrıca [[Special:NewPages|yeni sayfalar listesine]] bakınız)", "recentchanges-submit": "Göster", + "rcfilters-filter-minor-label": "Küçük değişiklikler", + "rcfilters-filter-major-label": "Küçük olmayan değişiklikler", "rcnotefrom": "<strong>$3, $4</strong> tarihinden itibaren yapılan {{PLURAL:$5|değişiklik|değişiklik}} aşağıdadır (<strong>$1</strong> tarhine kadar olanlar gösterilmektedir).", "rclistfrom": "$3 $2 tarihinden itibaren yeni değişiklikleri göster", "rcshowhideminor": "Küçük değişiklikleri $1", @@ -1455,7 +1455,7 @@ "uploaded-event-handler-on-svg": "SVG dosyalarında event-handler özniteliğini <code>$1=\"$2\"</code> şeklinde ayarlanmasına izin verilmiyor.", "uploaded-href-unsafe-target-svg": "Yüklenen SVG dosyasında <code><$1 $2=\"$3\"></code> güvensiz hedefine href bulundu.", "uploaded-animate-svg": "\"animate\" etiketi bulundu, href'i değiştiriyor olabilir. Yüklenen SVG dosyasındaki \"from\" özniteliği kullanılıyor <code><$1 $2=\"$3\"></code>", - "uploadscriptednamespace": "Bu SVG dosyası geçersiz \"$1\" alan adını içermektedir.", + "uploadscriptednamespace": "Bu SVG dosyası geçersiz \"<nowiki>$1</nowiki>\" alan adını içermektedir.", "uploadinvalidxml": "Yüklenen dosyadaki XML işlenemedi.", "uploadvirus": "Bu dosya virüslüdür! Detayları: $1", "uploadjava": "Dosya, bir Java .classdosyası içeren bir ZIP dosyasıdır.\nJava dosyalarının yüklenmesine izin verilmemektedir, zira güvenlik kısıtlamalarının atlanmasına neden olabilmektedirler.", @@ -3394,7 +3394,6 @@ "logentry-tag-update-revision": "$1, $3 sayfasının $4 numaralı sürümündeki etiketleri {{GENDER:$2|güncelledi}}. Eklenen {{PLURAL:$7|etiket|etiket}}: $6; kaldırılan {{PLURAL:$9|etiket|etiket}}: $8", "logentry-tag-update-logentry": "$1, $3 sayfasının $5 numaralı günlük kaydındaki etiketleri {{GENDER:$2|güncelledi}}. Eklenen {{PLURAL:$7|etiket|etiket}}: $6; kaldırılan {{PLURAL:$9|etiket|etiket}}: $8", "rightsnone": "(hiçbiri)", - "revdelete-summary": "değişiklik özeti", "feedback-adding": "Sayfaya geribildirim ekleniyor...", "feedback-back": "Geri", "feedback-bugcheck": "Harika! Sadece [bilinen $1 hatalarından] olmadığını kontrol et.", @@ -3417,54 +3416,14 @@ "feedback-thanks": "Teşekkürler! Görüşleriniz \"[$2 $1]\" sayfasında paylaşılmıştır.", "feedback-thanks-title": "Teşekkürler!", "feedback-useragent": "Kullanıcı temsilcisi", - "searchsuggest-search": "Ara", + "searchsuggest-search": "{{SITENAME}} üzerinde ara", "searchsuggest-containing": "içeren...", - "api-error-badaccess-groups": "Bu wiki için dosya yüklemenize izin verilmiyor.", "api-error-badtoken": "İç hata: Bozuk anahtar.", - "api-error-copyuploaddisabled": "URL ile yükleme bu sunucuda devre dışı bırakılmıştır.", - "api-error-duplicate": "Sitede zaten aynı içerikte başka {{PLURAL:$1|bir dosya|dosyalar}} mevcut.", - "api-error-duplicate-archive": "Sitede zaten aynı içerikte başka {{PLURAL:$1|bir dosya|dosyalar}} vardı, ama {{PLURAL:$1|silindi|silindiler}}.", - "api-error-empty-file": "Gönderdiğiniz dosya boş.", "api-error-emptypage": "Yeni, boş bir sayfa oluşturmaya izin verilmez.", - "api-error-fetchfileerror": "İç hata: Dosya alınırken bir hata oluştu.", - "api-error-fileexists-forbidden": "\"$1\" adıyla bir dosya zaten mevcut dolayısıyla üzerine yazamazsınız.", - "api-error-fileexists-shared-forbidden": "\"$1\" adında bir dosya ortak havuzda zaten var, ve üzerine yazılamaz.", - "api-error-file-too-large": "Gönderdiğiniz dosya çok büyük.", - "api-error-filename-tooshort": "Dosya adı çok kısa.", - "api-error-filetype-banned": "Bu dosya biçimi yasaklanmıştır.", - "api-error-filetype-banned-type": "$1 {{PLURAL:$4|izin verilen bir dosya türü değil|izin verilen dosya türleri değil}}. Ä°zin verilen {{PLURAL:$3|dosya türü|dosya türleri}} $2.", - "api-error-filetype-missing": "Dosya uzantısı eksik.", - "api-error-hookaborted": "Yapmaya çalıştığınız değişiklik bir eklenti tarafından iptal edildi.", - "api-error-http": "İç hata: sunucu ile bağlantı kurulamıyor.", - "api-error-illegal-filename": "Bu dosya adına izin verilmiyor.", - "api-error-internal-error": "İç hata: Wiki'ye yükleme yapma işleminizde bir şeyler ters gitti.", - "api-error-invalid-file-key": "İç hata: geçici depolama dosyası bulunamadı.", - "api-error-missingparam": "İç hata: Ä°stenilen parametreler eksik.", - "api-error-missingresult": "İç hata: Kopyalamanın başarılı olup olmadığı belirlenemedi.", - "api-error-mustbeloggedin": "Dosya yükleyebilmek için oturum açmanız gereklidir.", - "api-error-mustbeposted": "İç hata: Ä°stek HTTP POST gerektiriyor.", - "api-error-noimageinfo": "Yükleme başarılı oldu, ancak sunucu, bize dosya hakkında herhangi bir bilgi vermedi.", - "api-error-nomodule": "İç hata: Yükleme modülü ayarı yapılmadı.", - "api-error-ok-but-empty": "İç hata: Sunucu yanıt vermiyor.", - "api-error-overwrite": "Varolan dosyanın üzerine yazmaya izin verilmiyor.", - "api-error-stashfailed": "İç hata: Sunucu, geçici dosyaları kaybetti.", "api-error-publishfailed": "İç hata: Sunucu geçici dosyayı yayınlarken başarısız oldu.", - "api-error-stasherror": "Dosya zulaya yüklenirken hata oluştu.", - "api-error-stashedfilenotfound": "Saklandığı yerden yüklenmeye çalışılan dosya bu yerde bulunamadı.", - "api-error-stashpathinvalid": "Saklanan dosyanın bulunması beklenen yer bilgisi geçersiz.", - "api-error-stashfilestorage": "Dosya zulaya saklanmaya çalışılırken hata ile karşılaşıldı.", - "api-error-stashzerolength": "Sunucu dosyayı zulada saklayamadı; çünkü dosya boyutu sıfır uzunlukta.", - "api-error-stashnotloggedin": "Dosya yükleme zulasına dosya kaydetmek için oturum açmış olmanız gerekiyor.", - "api-error-stashwrongowner": "Zulada erişmeye çalıştığınız belge size ait değil.", - "api-error-stashnosuchfilekey": "Zulaya erişmeye çalışırken kullanılan dosya anahtarı mevcut değil.", - "api-error-timeout": "Sunucu beklenen süre içinde yanıt vermedi.", - "api-error-unclassified": "Bilinmeyen bir hata oluştu.", - "api-error-unknown-code": "Bilinmeyen hata: \"$1\"", - "api-error-unknown-error": "İç hata: Dosya yüklemeye çalışırken bir şeyler ters gitti.", + "api-error-stashfailed": "İç hata: Sunucu, geçici dosyaları kaybetti.", "api-error-unknown-warning": "Bilinmeyen uyarı: $1", "api-error-unknownerror": "Bilinmeyen hata: \"$1\".", - "api-error-uploaddisabled": "Yükleme bu vikide devre dışı bırakılmıştır.", - "api-error-verification-error": "Dosya bozuk veya yanlış uzantıya sahip olabilir.", "duration-seconds": "$1 {{PLURAL:$1|saniye|saniye}}", "duration-minutes": "$1 {{PLURAL:$1|dakika|dakika}}", "duration-hours": "$1 {{PLURAL:$1|saat|saat}}", diff --git a/languages/i18n/tt-cyrl.json b/languages/i18n/tt-cyrl.json index 586b55f350..f907c5986f 100644 --- a/languages/i18n/tt-cyrl.json +++ b/languages/i18n/tt-cyrl.json @@ -26,12 +26,13 @@ "Selimcan", "Исмаил Садуев", "Matma Rex", - "Irus" + "Irus", + "Ifs" ] }, - "tog-underline": "Сылтамаларның астына сызу:", + "tog-underline": "Сылтамаларны сызымлау:", "tog-hideminor": "Соңгы үзгәртүләр исемлегендә кече үзгәртүләр яшерелсен", - "tog-hidepatrolled": "Тикшерелгән үзгәртүләр яңа үзгәртүләр исемлегеннән яшерелсен.", + "tog-hidepatrolled": "Тикшерелгән үзгәртүләр яңа үзгәртүләр исемлегеннән яшерелсен", "tog-newpageshidepatrolled": "Тикшерелгән битләр яңа битләр исемлегеннән яшерелсен", "tog-hidecategorization": "Битләрне төркемләшүне ябу", "tog-extendwatchlist": "Соңгыларын гына түгел, ә барлык үзгәртүләрне эченә алган, киңәйтелгән күзәтү исемлеге", @@ -45,6 +46,7 @@ "tog-watchmoves": "Мин күчергән битләр һәм файллар күзәтү исемлегемә өстәлсен", "tog-watchdeletion": "Мин бетергән битләр һәм файлларны күзәтү исемлегемгә өстәлсен", "tog-watchuploads": "Минем тарафтан йөкләнелгән файлларны күзәтү исемлегемә кертергә", + "tog-watchrollback": "Мин үткәрмәгән битләрне күзәтү исемлегемә өстәргә", "tog-minordefault": "Барлык үзгәртүләрне килешү буенча кече дип билгеләнсен", "tog-previewontop": "Үзгәртү тәрәзәсеннән өстәрәк битне алдан карау өлкәсен күрсәтелсен", "tog-previewonfirst": "Үзгәртү битенә күчкәндә башта алдан карау бите күрсәтелсен", @@ -192,6 +194,7 @@ "searcharticle": "Күчү", "history": "Битнең тарихы", "history_short": "Тарих", + "history_small": "тарих", "updatedmarker": "соңгы керүемнән соң яңартылган", "printableversion": "Басма юрама", "permalink": "Даими сылтама", @@ -223,6 +226,9 @@ "talk": "Бәхәс", "views": "Караулар", "toolbox": "Кораллар", + "tool-link-userrights": "{{GENDER:$1|Кулланучының}} төркемнәрен алмаштыру", + "tool-link-userrights-readonly": "{{GENDER:$1|Кулланучының}} төркемнәрен карау", + "tool-link-emailuser": "{{GENDER:$1|Кулланучыга}} хат язу", "userpage": "Кулланучы битен карау", "projectpage": "Проект битен карау", "imagepage": "Файл битен карау", @@ -247,7 +253,7 @@ "pool-queuefull": "Сорауларны саклау бите тулы", "pool-errorunknown": "Билгесез хата", "pool-servererror": "Пул санау хезмәте эшләми ($1).", - "poolcounter-usage-error": "$1: куллану хатасы", + "poolcounter-usage-error": "Куллану хатасы: $1", "aboutsite": "{{SITENAME}} турында", "aboutpage": "Project:Тасвирлама", "copyright": "Мәгълүмат $1 буенча таратыла (әгәр башкасы күрсәтелмәсә).", @@ -278,18 +284,18 @@ "youhavenewmessagesfromusers": "{{PLURAL:$4|Сезгә}} {{PLURAL:$3|$3 кулланучыдан}} $1 килде ($2).", "youhavenewmessagesmanyusers": "Сез бик күп кулланучыдан $1 алдыгыз ($2).", "newmessageslinkplural": "{{PLURAL:$1|яңа хәбәр|999=яңа хәбәрләр}}", - "newmessagesdifflinkplural": "{{PLURAL:$1|1=соңгы үзгәртү|соңгы үзгәртүләр}}\nсоңгы {{PLURAL:$1|үзгәртү|999=үзгәртү}}", - "youhavenewmessagesmulti": "Сезгә монда яңа хәбәрләр бар: $1", + "newmessagesdifflinkplural": "соңгы {{PLURAL:$1|үзгәртү|үзгәртүләр}}", + "youhavenewmessagesmulti": "$1 эчендә яңа хат бар", "editsection": "үзгәртү", "editold": "үзгәртү", - "viewsourceold": "башлангыч кодны карау", + "viewsourceold": "чыганак кодны карау", "editlink": "үзгәртү", "viewsourcelink": "чыганак кодны карау", "editsectionhint": "$1 бүлеген үзгәртү", "toc": "Эчтәлек", "showtoc": "күрсәтү", "hidetoc": "яшерү", - "collapsible-collapse": "Төрү", + "collapsible-collapse": "төрү", "collapsible-expand": "Ачу", "confirmable-confirm": "{{GENDER:$1|Шулаймы}}?", "confirmable-yes": "Әйе", @@ -428,11 +434,14 @@ "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|мәкалә}}", "createacct-benefit-body3": "Соңгы вакытта {{PLURAL:$1|кулланучы}}", "badretype": "Кертелгән серсүзләр бер үк түгел.", + "usernameinprogress": "Бу кулланучы исеме хисап язмасы булдыру башланды инде. Зинһар көтегез.", "userexists": "Кертелгән исем кулланыла.\nЗинһар, башка исем сайлагыз.", "loginerror": "Керү хатасы", "createacct-error": "Хисап язмазын булдыруда хата китте", @@ -469,6 +478,7 @@ "emailconfirmlink": "Электрон почта адресыгызны дәлилләгез.", "invalidemailaddress": "Электрон почта адресы кабул ителә алмый, чөнки ул дөрес форматка туры килми. Зинһар, дөрес адрес кертегез яки юлны буш калдырыгыз.", "cannotchangeemail": "Бу хисап язмасының электрон почта адресы бу викида үзгәртелә алмый", + "emaildisabled": "Бу сайт электрон хатлар җибәрә алмый.", "accountcreated": "Хисап язмасы төзелде", "accountcreatedtext": "[[{{ns:User}}:$1|$1]] ([[{{ns:User talk}}:$1|бәхәс]]) кулланучысы өчен хисап язмасы төзелде.", "createaccount-title": "{{SITENAME}}: теркәлү", @@ -479,6 +489,7 @@ "suspicious-userlogout": "Сезнең эшчәнлекне бетерү соравыгыз кире кагылды, чөнки ул ялгыш браузер яисә кэшлаучы прокси аша җибәрелергэ мөмкин.", "pt-login": "Керү", "pt-login-button": "Керү", + "pt-login-continue-button": "Керүне дәвам итү", "pt-createaccount": "Яңа кулланучыны теркәү", "pt-userlogout": "Чыгу", "php-mail-error-unknown": "PHP mail() функциясендә билгесез хата", @@ -2139,19 +2150,10 @@ "feedback-thanks-title": "Рәхмәт!", "searchsuggest-search": "{{SITENAME}} эчендә эзләү", "searchsuggest-containing": "эчтәлек...", - "api-error-badaccess-groups": "Сезгә бу викигә файллар өстәү рөхсәт ителмәгән", "api-error-badtoken": "Эчке хата: дөрес булмаган токен.", - "api-error-copyuploaddisabled": "URL-адрес буенча йөкләү бу серверда сүндерелгән.", - "api-error-duplicate": "Мондый эчтәлекле {{PLURAL:$1|башка файл|башка файллар}} да бар.", - "api-error-duplicate-archive": "Элек сайтта мондый эчтәлекле {{PLURAL:$1|башка файл|башка файллар}} бар иде инде, ләкин {{PLURAL:$1|1=аны бетерделәр|аларны бетерделәр}}.", - "api-error-empty-file": "Сезнең тарафтан җибәрелгән файл буш.", "api-error-emptypage": "Яңа буш сәхифәләр төзү рөхсәт ителми", - "api-error-unknown-code": "Билгесез хата: \"$1\"", - "api-error-unknown-error": "Эчке хата: файлны йөкләргә тырышканда нәрсәдер ялгыш китте.", "api-error-unknown-warning": "Билгесез кисәтү: \"$1\".", "api-error-unknownerror": "Билгесез хата: \"$1\".", - "api-error-uploaddisabled": "Бу викидә файллар йөкләү мөмкинлеге сүндерелгән.", - "api-error-verification-error": "Бәлки, бу файл бозылгандыр яки дөрес түгел киңәйтелмәгә ия.", "duration-seconds": "$1 {{PLURAL:$1|секунд}}", "duration-minutes": "$1 {{PLURAL:$1|минут}}", "duration-hours": "$1 {{PLURAL:$1|сәгать}}", diff --git a/languages/i18n/tyv.json b/languages/i18n/tyv.json index bac27dbe2a..c3576583f9 100644 --- a/languages/i18n/tyv.json +++ b/languages/i18n/tyv.json @@ -454,8 +454,6 @@ "saveprefs": "Шыгжаары", "restoreprefs": "Шупту баштайгы ниити шилилгелерни restore", "prefs-editing": "Өскертир", - "rows": "Одуруглар:", - "columns": "Баганалар:", "searchresultshead": "Дилээр", "timezoneuseserverdefault": "Викиниң ниити шилилгезин ажыглаары ($1)", "servertime": "Серверниң шагы:", @@ -917,7 +915,7 @@ "hours": "{{PLURAL:$1|1=$1 шак|$1 шак}}", "days": "{{PLURAL:$1|1=$1 хүн|$1 хүн}}", "ago": "$1 бурунгаар", - "bad_image_list": "Формады мындыг боор ужурлуг:\n\nЧүгле даңзының идегеттери (элементилери) санатынар боор (* деп демдектен эгелээн одуруглар).\nОдуругнуң бирги шөлүдүү салдынмас чурумалче шөлүдүг болуру албан.\nОл-ла одуругнуң арткан шөлүдүглери онзагай кылдыр азы чурумал капсырып болур чүүлдер кылдыр санаттынар.", + "bad_image_list": "Формады мындыг болур ужурлуг:\n\nДаңзыда чүгле элементилер санатынар (* деп демдектен эгелээн одуруглар).\nОдуругда бир дугаар айтыг болза киир бижиттинмес чурукче айтыр ужурлуг.\nОл-ла одуругнуң өске айтыглары, чуруктарны киир бижидип болур арыннарже айтып турар.", "metadata": "Чурумал дугайында медээлер", "metadata-help": "Бо файлда цифралыг камераларның болгаш сканерлерниң немеп каары немелде медээлер бар. Файлды кылган соонда эдип турган болза, ооң чамдык параметрлери ооң амгы чуруунга дүүшпес бооп болур.", "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", diff --git a/languages/i18n/udm.json b/languages/i18n/udm.json index ec501a0873..a5dbfeff82 100644 --- a/languages/i18n/udm.json +++ b/languages/i18n/udm.json @@ -140,7 +140,7 @@ "cancel": "Берытсконо", "mypage": "Бам", "mytalk": "Викиавтор сярысь вераськон", - "anontalk": "Сярысь вераськон", + "anontalk": "Вераськон", "navigation": "Навигация", "and": " но", "qbfind": "Утчан", @@ -152,7 +152,7 @@ "variants": "Вариантъёс", "navigation-heading": "Навигация", "errorpagetitle": "Янгыш", - "returnto": "Берыктон борды бам $1.", + "returnto": "$1 баме берытскон.", "tagline": "{{SITENAME}}-ысь материал", "help": "Валэктонъёс", "search": "Утчан", @@ -209,8 +209,8 @@ "copyrightpage": "{{ns:project}}:Автор праваос", "currentevents": "Выль иворъёс", "currentevents-url": "Project:Выль иворъёс", - "disclaimers": "Кыл кутыны пумит луон", - "disclaimerpage": "Project:Кыл кутыны пумит луон", + "disclaimers": "Кыл кутэмлэсь куштӥськон", + "disclaimerpage": "Project:Кыл кутэмлэсь куштӥськон", "edithelp": "Тупатонъя юрттэт", "helppage-top-gethelp": "Юрттэт", "mainpage": "Кутскон бам", @@ -270,42 +270,42 @@ "protectedinterface": "Та бам возе интерфейс текстэз та викилэн программной обеспечениезлы. Вандализмез палэнтон понна со утемын воштонъёслэсь.\nВань викиослы берыктэмъёсты ватсалляны яке вошъяны вылысь, тауна, MediaWiki локализацияя сайтэ выжелэ — [https://translatewiki.net/ translatewiki.net].", "editinginterface": "<strong>Сак луэ:</strong> Тӥ тупатӥськоды бамез, кудӥз возе программной обеспеченилэсь интерфейс текстсэ.\nТа бамез тупатон воштоз интерфейсэз возьматонэз мукет викиавторъёслы та викиын.", "namespaceprotected": "Тон дорын редактировать карыны бам ӧвӧл юаське <кужмо>$1</strong> инты нимъёс.", - "exception-nologin": "Тон эн тусбуяськыны сӧзнэтэз", + "exception-nologin": "Ӧд пыре системае", "logouttext": "<strong>Тӥ ужан сеансэз йылпумъяды.</strong>\n\nКуд-огез бамъёс возьматӥськыны на быгато озьы, тӥ авторизовать каремын на кадь. Талы пумит нюръяськон понна бушатэ браузерлэсь кэшсэ.", "welcomeuser": "Гажаса ӧтиськом, $1!", "welcomecreation-msg": "Тӥляд учётной записьты кылдытэмын.\nТӥ быгатӥськоды воштыны асьтэлэсь [[Special:Preferences|настройкаостэс]] {{SITENAME}} сайтлы, потэ ке.", "yourname": "Учётной записьлэн нимыз:", "userlogin-yourname": "Викиавтор ним", "userlogin-yourname-ph": "Гожтэ учётной записьтылэсь нимзэ", - "createacct-another-username-ph": "Вики-авторлэн нимъёс пыртэмын", + "createacct-another-username-ph": "Гожтэ учётной записьлэсь нимзэ", "yourpassword": "Лушкемкыл:", "userlogin-yourpassword": "Лушкемкыл", "userlogin-yourpassword-ph": "Гожтэ асьтэлэсь парольдэс", "createacct-yourpassword-ph": "Гожтэ паролез", - "createacct-yourpasswordagain": "Пароль юнматэ", + "createacct-yourpasswordagain": "Юнматэ паролез", "createacct-yourpasswordagain-ph": "Гожтэ паролез эшшо одӥг пол", - "userlogin-remembermypassword": "Кылем сӧзнэтэз", + "userlogin-remembermypassword": "Кылёно системаын", "cannotcreateaccount-title": "Учётной записьёсты кылдытыны уг луы", "yourdomainname": "Тӥляд доменды:", "login": "Пырыны", "nav-login-createaccount": "Нимдэс вераны / Регистрациез ортчытыны", - "userlogin": "Нимдэс вераны / Регистрациез ортчытыны", + "userlogin": "Регистрациез ортчытыны яке Википедие пырыны", "userloginnocreate": "Пырыны", "logout": "Кошкыны", "userlogout": "Потыны", - "notloggedin": "Тон эн тусбуяськыны сӧзнэтэз", + "notloggedin": "Ӧд пыре системае", "userlogin-noaccount": "Ас учётной записьты ӧвӧл?", "userlogin-joinproject": "Проектэ пыриськоно", "nologin": "Учётной запись ӧвӧл? $1.", "nologinlink": "Учётной записез кылдытыны", - "createaccount": "Выль вики-авторлэн регистрациез", + "createaccount": "Выль викиавторлэн регистрациез", "gotaccountlink": "Пырелэ", "userlogin-resetpassword-link": "Тӥлесьтыд парольдэс куштыны?", "userlogin-helplink2": "Пыронъя юрттэт", "createacct-emailrequired": "Электрон почталэн адресэз", - "createacct-emailoptional": "Электронной почтаезлэн адресэз (необязательное)", + "createacct-emailoptional": "Электрон почталэн адресэз (одно ик ӧвӧл)", "createacct-email-ph": "Гожтэ асьтэлэн электрон почтадылэсь адрессэ", - "createaccountmail": "Адрес электронной почта огдырлы кутӥ вылын возьматэм образъёсыныз но соослэн случайной сгенерировать пароль ыстыны", + "createaccountmail": "Эрказ малпаськытэк кылдытыны огдырлы паролез но ыстыны сое электрон почталэн гожтэм адресаз", "createacct-submit": "Учётной записьтэс кылдытоно", "createacct-another-submit": "Учётной записез кылдытоно", "createacct-benefit-heading": "{{SITENAME}} — тӥ выллем адямиослэн валче ужамзы.", @@ -321,7 +321,7 @@ "loginlanguagelabel": "Кыл: $1", "pt-login": "Пырыны", "pt-login-button": "Пырыны", - "pt-createaccount": "Выль вики-авторлэн регистрациез", + "pt-createaccount": "Выль викиавторлэн регистрациез", "pt-userlogout": "Потыны", "oldpassword": "Вуж лушкемкыл:", "newpassword": "Выль лушкемкыл:", @@ -355,13 +355,13 @@ "blockedtext": "<strong>Тӥляд учётной записьты яке IP-адресты заблокировать каремын вал.</strong>\n\nБлокировкаез лэсьтӥз $1.\nПусъем мугез: <em>$2</em>.\n\n* Блокировка кутскиз: $8\n* Блокировка йылпумъяськоз: $6\n* Блокировкалэн ужпумез: $7\n\nТӥ блокировка сярысь вераськыны быгатӥськоды $1 яке котькин мукет [[{{MediaWiki:Grouppage-sysop}}|администратор]] доры герӟаськыса.\n[[Special:Preferences|Настройкаосады]] электрон почталэн ужась адресэз ӧвӧл дыръя, тӥ «Викиавторлы гожтэт» функциез уже кутыны уд быгатӥське, сое тӥленыды уже кутон дугдытэмын ӧвӧл ке.\nТӥляд али IP-адресты луэ $3, но блокировка идентификатор — #$5.\nТауна пыртэ вань та пыр-поч сведениосыз асьтэлэн куронъёсады.", "autoblockedtext": "Тӥляд IP-адресты автоматически заблокировать каремын вал, малы ке шуоно со кутӥськиз вал мукет викиавторен, кинзэ $1 заблокировать кариз.\nБлокировкалэн пусъем мугез:\n\n:<em>$2</em>\n\n* Блокировка кутскиз: $8\n* Блокировка йылпумъяськоз: $6\n* Блокировкалэн ужпумез: $7\n\nТӥ блокировка сярысь вераськыны быгатӥськоды $1 яке мукет [[{{MediaWiki:Grouppage-sysop}}|администраторъёс]] пӧлысь огез доры герӟаськыса.\n\nСак луэ, тӥ «Викиавторлы гожтэт» функциез уже кутыны уд быгатӥське [[Special:Preferences|асьтэлэн настройкаосады]] электрон почталэсь шонер адрессэ гожтытозь яке юнматытозь, либо блокировкады сыӵе амалэн гожтэтъёсыз ыстыны уг лэзьы ке.\n\nТӥляд али IP-адресты луэ $3, но блокировка идентификатор — #$5.\nТауна пыртэ вань та пыр-поч сведениосыз асьтэлэн куронъёсады.", "blockednoreason": "пуктэм муг ӧвӧл", - "whitelistedittext": "Тон кулэ $1 бам воштон понна.", - "loginreqtitle": "Авторизация кулэ", + "whitelistedittext": "Бамъёсты вошъяны вылысь $1 кулэ.", + "loginreqtitle": "Системае пыроно", "loginreqlink": "пырыны", - "loginreqpagetext": "Тон кулэ $1-ысь, сое мукет бамез учкыны шуыса.", - "newarticletext": "Тон бам ссылкаос вылэ выжыса, со кема уз улы.\nСоос мед кылдозы, текст бичась укноос, улазы интыяськемын (умой-умой см. [$1 бам справочной]).\nЯнгыш-а тон татын луысалыд ке, кнопказэ зӥбиз гинэ <strong>берлань</strong> асьтэлэсь браузеръёстэс.", + "loginreqpagetext": "Мукет бамъёсты учкыны вылысь $1 кулэ.", + "newarticletext": "Тӥ чӧлсконэтӥ ортчиды баме, кудӥз ӧвӧл на.\nСое кылдытыны вылысь, печатлалэ текст улӥ возьматэм укное (пыр-почгес учке [$1 юрттэт бамын]).\nТӥ вуиды татчы янгыш луэмен ке, зӥбе тӥляд браузердылэсь <strong>берлань</strong> кнопказэ.", "noarticletext": "Али дыре та бамын текст ӧвӧл. \nТӥ быгатоды [[Special:Search/{{PAGENAME}}|шедьтыны со сярысь кыӵе ке ивор]] мукет бамъёсысь,\n<span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} шедьтыны журналъёсысь гожъямъёсыз], \nяке [{{fullurl:{{FULLPAGENAME}}|action=edit}} сыӵе нимын бам кылдытыны]</span>.", - "noarticletext-nopermission": "Али дыре та бам вылын кылкуэт ӧвӧл.\nТон быгатӥськод [[Special:Search/{{PAGENAME}}|сётэм йыръянъёс шедьто упоминание]] мукет бам вылын,\nяке <span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} соответствующий журнал книгаез шедьтыны].</span> Тӥ дорын сётӥське юаськыны кылдӥз бам ӧвӧл.", + "noarticletext-nopermission": "Али дыре та бамын текст ӧвӧл.\nТӥ быгатоды [[Special:Search/{{PAGENAME}}|шедьтыны со сярысь кыӵе ке ивор]] мукет бамъёсысь, яке <span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} шедьтыны журналъёсысь гожъямъёсыз]</span>, нош та бамез кылдытыны тӥляд лэзёнды ӧвӧл.", "blocked-notice-logextract": "Та викиавтор али заблокировать каремын.\nБлокировкаосын журналысь берпум гожъям улӥ возьматэмын:", "continue-editing": "Тупатъянэз азьланьтоно", "editing": "Тупатон: $1", @@ -371,14 +371,14 @@ "template-protected": "(утемын)", "template-semiprotected": "(ӧжытак утемын)", "hiddencategories": "Та бам пыре {{PLURAL:$1|$1 ватэм категорие}}:", - "nocreatetext": "Та сайтлэн бамаз выль сюбегатэм луонлыкъёсын кылдытон.\nТон улыса, берлань вуэ быгатэ бам отредактировать, [[Special:UserLogin|тусбуяськыны книгае яке выль система кылдыто учётной]].", + "nocreatetext": "{{SITENAME}} сюбегомытӥз луонлыкез выль бамъёсты кылдытъяны.\nТӥ быгатӥськоды берытскыны но азьло кылдытэм бам тупатыны, [[Special:UserLogin|системае пырыны яке выль аккаунт кылдытыны]].", "nocreate-loggedin": "Выль бамъёсты кылдытъяны тӥляд лэзёнды ӧвӧл.", "permissionserrors": "Лэзён янгыш", - "permissionserrorstext": "Тон дорын разрешенизы ӧвӧлэн, тазэ лэсьтом шуыса, со понна вуоно {{PLURAL:$1|мугез}}:", - "permissionserrorstext-withaction": "Правоез ӧвӧл, тон дорын $2 тӥ {{PLURAL:$1/1=мугез вуоно|мугез вуоно}}:", + "permissionserrorstext": "Тӥляд тае быдэстыны лэзёнды ӧвӧл та {{PLURAL:$1|1=муген|мугъёсын}} сэрен:", + "permissionserrorstext-withaction": "Тӥляд $2 лэзёнды ӧвӧл та {{PLURAL:$1|1=муген|мугъёсын}} сэрен:", "moveddeleted-notice": "Та бам быдтэмын вал.\nБыдтонъёсын но ним воштонъёсын журналъёсысь ярано записьёс чӧлсконлы улӥ возьматэмын.", "content-model-wikitext": "викитекст", - "undo-summary": "Шонертон вошъян $1, лэсьтӥзы {{GENDER:$2|участник|куакеч}} [[Special:Contributions/$2|$2]] ([[User talk:$2|обс.]])", + "undo-summary": "[[Special:Contributions/$2|$2]] ([[User talk:$2|вераськон]]) викиавторлэн $1 номеро тупатонэз палэнтэмын", "cantcreateaccount-text": "Та IP-адресысь (<strong>$1</strong>) учётной записьёсты кылдытон заблокировать каремын вал [[User:$3|$3]] викиавторен.\n\n$3 пусйиз таӵе мугез: <em>$2</em>.", "cantcreateaccount-range-text": "[[User:$3|$3]] викиавтор дугдытӥз учётной записьёсты кылдытыны <strong>$1</strong> радлэн IP-адресъёсысьтыз, кудъёсыз пӧлы пыре тӥляд IP-адресты (<strong>$4</strong>).\n\n$3 пусйиз таӵе мугез: <em>$2</em>.", "viewpagelogs": "Та бамлы журналъёсыз возьматыны", @@ -394,7 +394,7 @@ "history-show-deleted": "Ӵушылэмъёссэ гинэ", "rev-delundel": "возьматыны/ватыны", "rev-showdeleted": "возьматоно", - "revdelete-show-file-submit": "да", + "revdelete-show-file-submit": "Бен", "revdelete-radio-set": "Ватэм", "revdelete-radio-unset": "Адӟымон", "revdelete-reason-dropdown": "*Огшоры быдтон мугъёс\n** Автор правоосты тӥян\n** Ярантэм комментарий яке личной сведениос\n** Викиавторлэн ярантэм нимыз\n** Луоно лекатӥсь информация", @@ -438,22 +438,22 @@ "prefs-preview": "Бамез эскерон", "userrights": "Пыриськисьлэн правоосыныз кивалтон", "editusergroup": "Викиавторлэсь группаоссэ возьматыны", - "group-autoconfirmed": "Автоподтвержденный пыриськисьёс", - "group-bot": "Боты", + "group-autoconfirmed": "Авто-юнматэм викиавторъёс", + "group-bot": "Ботъёс", "group-sysop": "Администраторъёс", "group-all": "(ваньзэ)", "grouppage-sysop": "{{ns:project}}:Администраторъёс", - "right-read": "лыдӟыны бам", - "right-edit": "правка бам", - "right-createpage": "бам кылдытон-а, уг-возьматэмзэ эскерон", - "right-createtalk": "создание бамлэн обсуждениосаз", - "right-createaccount": "выль книга кылдытон пыриськизы учётной", - "right-writeapi": "гожтэтъёсты кутон понна API", - "right-block": "мукет пыриськисьёслэсь курон-косон вылэ установкаосты редактировать", + "right-read": "Бамъёсты учкон", + "right-edit": "Бамъёсты тупатъян", + "right-createpage": "Бамъёсты кылдытон (вераськон бамъёс сяна)", + "right-createtalk": "Вераськон бамъёсты кылдытон", + "right-createaccount": "Викиавторъёслэсь выль учётной записьёссэс кылдытон", + "right-writeapi": "Гожъясь API уже кутон", + "right-block": "Мукет викиавторъёсты тупатъянлэсь палэнтон", "newuserlogpage": "Викиавторъёсыз регистрациосын журнал", - "action-read": "та лыдӟонъёс бам", - "action-edit": "та бамез редактировать", - "action-block": "пыриськисьёс та понна луонлыкъёссы сюбегам редактировать", + "action-read": "та бам лыдӟыны", + "action-edit": "та бамез тупатыны", + "action-block": "та викиавтор блокировать карыны", "enhancedrc-history": "история", "recentchanges": "Выль тупатонъёс", "recentchanges-legend": "Выль тупатонъёслы настройкаос", @@ -503,12 +503,12 @@ "recentchangeslinked-page": "Бамлэн нимыз:", "recentchangeslinked-to": "Мыддоринтыны: та бамез чӧлскись бамъёсыз воштонъёсыз возьматыны", "upload": "Файл поныны", - "uploadnologin": "Тон эн тусбуяськыны сӧзнэтэз", - "uploadnologintext": "Тон кулэ $1, медаз загрузка файл сервер.", + "uploadnologin": "Ӧд пыре системае", + "uploadnologintext": "Файлъёсты сервере поныны вылысь $1 кулэ.", "filedesc": "Вакчияк описаниез", - "uploaddisabled": "Загрузка алӥзы", - "copyuploaddisabled": "Загрузка URL disconnect.", - "uploaddisabledtext": "Загрузка файл disconnect.", + "uploaddisabled": "Файлъёсыз ватсан уг лэзиськы.", + "copyuploaddisabled": "Файлъёсыз ватсан URL пыр уг лэзиськы.", + "uploaddisabledtext": "Файл поныны луонлык ӧвӧл.", "upload-dialog-button-cancel": "Берытсконо", "license-header": "Лицензия", "nolicense": "Ӧвӧл", @@ -555,9 +555,9 @@ "sp-deletedcontributions-contribs": "тупатонъёсыз", "listusers-submit": "Возьматыны", "listusers-blocked": "(блокировать каремын)", - "listgrouprights": "Право группае пыриськисьёс", - "listgrouprights-summary": "Та группае пырисьёс возьматыны кулэ вики список улӥзы, право соответствующийгес солы возьматоно кариськиз. Оло, ас [[{{MediaWiki:Listgrouprights-helppage}}|кожазы ватсаса ивортодэт]] улыны эрикрадэз сярысь.", - "listgrouprights-members": "(список пыриськисьёс)", + "listgrouprights": "Викиавторъёслэн группаоссылэн правооссы", + "listgrouprights-summary": "Улӥ список возьматэмын викиавторъёслэн та викиын кылдытэм группаоссылы, соосын герӟаськем лэзён правооссы ӵошен.\nНимаз правооссы сярысь, оло, [[{{MediaWiki:Listgrouprights-helppage}}|эшшо информация]] вань.", + "listgrouprights-members": "(викиавторъёсызлэн списоксы)", "emailuser": "Викиавторлы гожтэт", "emailmessage": "Ивортон:", "watchlist": "Чаклан список", @@ -570,15 +570,15 @@ "enotif_reset": "Вань бамъёсыз лыдӟем пусйыны", "historyaction-submit": "Возьматыны", "dellogpage": "Быдтонъёсын журнал", - "deletionlog": "палэнэ журнал", + "deletionlog": "быдтонъёсын журнал", "rollbacklink": "ӝог берыктыны", "rollbacklinkcount": "$1 {{PLURAL:$1|тупатонэз}} ӝог берыктыны", - "revertpage": "Откат шонертон [[Special:Contributions/$2|$2]] ([[User talk:$2|обсуждение]]) доры версия [[User:$1|$1]]", - "revertpage-nouser": "Откат шонертон (пыриськисьёс ватэм нимъёссы) доры версия {{GENDER:$1|[[User:$1|$1]]}}", + "revertpage": "[[Special:Contributions/$2|$2]] ([[User talk:$2|вераськон]]) викиавторлэн тупатонъёсыз берыктэмын [[User:$1|$1]] викиавторлэн версиезозь", + "revertpage-nouser": "Ватэм викиавторлэн тупатонъёсыз берыктэмын {{GENDER:$1|[[User:$1|$1]] викиавторлэн}} версиезозь", "protectlogpage": "Утёнъёсын журнал", "restriction-edit": "Тупатон", - "undeletehistory": "Выльысь ке тон бамъёстэ, выльысь историяз луэм воштӥськонъёс вань.\nБӧрысь кылдӥзы выль бамъёс палэнэ кошконо луэ ке, сыӵе ик нимыз, историяз вошъяськонъёс предшествующий выльысь кылдозы.", - "undeletehistorynoadmin": "Статьяос палэнтэмын вал. Мугез но палэнэ список пыриды, со статьяе редактировать-озь палэнэгес, зӧк возьматэ. Текст статьяез удаленный администраторъёс гинэ учкыны быгатод.", + "undeletehistory": "Бамез берен сётоды ке, сое воштонъёслэн историзы берытскоз но.\nБыдтон бере таӵе ик нимен выль бам кылдытэмын вал ке, берен сётэм версиос адӟиськозы воштонъёслэн историязы выль версиослэсь азьло.", + "undeletehistorynoadmin": "Та бам быдтэмын вал.\nБыдтонлэн мугез но список викиавторъёслы, кинъёс та бамез тупатъязы сое быдтон дырозь, улӥ возьматэмын.\nБыдтэм бамлэсь текстсэ учкыны быгато администраторъёс гинэ.", "invert": "Ватыны быръемез", "blanknamespace": "(Валтӥсез)", "contributions": "{{GENDER:$1|Викиавтор}} гожтэмъёсы", @@ -586,14 +586,14 @@ "mycontris": "Гожтэмъёс", "anoncontribs": "Гожтэмъёс", "contribsub2": "{{GENDER:$3|$1}} гожтэмъёсы ($2)", - "nocontribs": "Критерии нокыӵе воштӥськонъёс та соответствующий шедьтыны уг луы.", + "nocontribs": "Та критериослы кельшись воштонъёс шедьтэмын ӧвӧл.", "month": "Толэзьысен (вазен но):", "year": "Арысен (вазен но):", - "sp-contributions-blocklog": "блокировка", - "sp-contributions-deleted": "шонертон палэнтыны {{GENDER:$1|участник|куакеч}}", + "sp-contributions-blocklog": "блокировкаосыз", + "sp-contributions-deleted": "{{GENDER:$1|викиавторлэн}} быдтэм тупатонъёсыз", "sp-contributions-userrights": "пыриськисьлэн правоосыныз кивалтон", - "sp-contributions-blocked-notice": "Пользователь заблокировать сётӥз та учырлы. Справка понна радъяськылӥсь журнал блокировка лапег берпуметӥ гожтэт:", - "sp-contributions-blocked-notice-anon": "Со ip-адрес вие заблокировать сётӥзы. Блокировка журналъёсты вайытэк улӥзы берпуметӥ книгаысь:", + "sp-contributions-blocked-notice": "Али дыре та викиавтор заблокировать каремын.\nВалэктон понна блокировкаосын журналысь берло гожъям улӥ возьматэмын:", + "sp-contributions-blocked-notice-anon": "Али дыре та IP-адрес заблокировать каремын.\nВалэктон понна блокировкаосын журналысь берло гожъям улӥ возьматэмын:", "sp-contributions-submit": "Шедьтыны", "whatlinkshere": "Татчы чӧлсконъёс", "whatlinkshere-title": "«$1» вылэ чӧлскись бамъёс", @@ -611,25 +611,25 @@ "whatlinkshere-filters": "Фильтръёс", "block": "Викиавторез заблокировать карыны", "blockip": "{{GENDER:$1|Викиавторез}} заблокировать карыны", - "blockip-legend": "Блокировка пыриськисьёс", - "blockiptext": "Формазэ уже кутыса, кулэ луэмезъя мед заблокировать гожъян IP-адрес яке пыриськисьёслэн нимъёссы.\nТа понна гинэ но соя гинэ лэсьтэмын луыны быгатоз вандализм предотвращение с [[{{MediaWiki:Policy-url}}|правилоосты]].\nМугез возьматись улӥзы членъёсын (кылсярысь, куд-ог тодметъёссэ вандализм цитировать кароно бам).\nТӥ быгатӥськоды диапазонэз заблокировать IP-адрес, уже кутыны [https://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing CIDR]-синтаксис. Максимально диапазонэз допустимый — /$1 протокол понна IPv4 но /$2 протокол понна IPv6.", - "ipbreason-dropdown": "* Блокировка мугез кабес\n** Полы информациез оскизы\n** Вордскем палэнэ бам\n** Спам-сайтъя педпал чӧлскон\n** Текстлэсь визьем ватсан/жуг-жаг\n** Кышкытлыклэсь, пыриськыны уйиськон\n** Злоупотребление кӧня ке книга учётной\n** Пыриськисьёслэн нимъёссы пыриськисьёс", - "ipbsubmit": "Адресъёсын та заблокировать/пыриськисьёс", - "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", + "blockip-legend": "Викиавторез блокировка", + "blockiptext": "Кутэ та формаез гожтылыны луонлыкез дугдытыны вылысь быръем IP-адресысь яке ог викиавтор ним улсын.\nТае лэсьтыны кулэ вандализмез палэнтон понна гинэ но [[{{MediaWiki:Policy-url}}|правилоосъя]] гинэ.\nУлӥ конкретной мугез гожтэ (кылсярысь, цитировать карыса вандалэн сӧрем куд-ог бамъёсты).\nТӥ быгатӥськоды IP-адресъёслэсь диапазонъёссэс заблокировать карыны [https://ru.wikipedia.org/wiki/Бесклассовая_адресация CIDR]-синтаксис уже кутыса; IPv4 протокол понна самой бадӟым луоно диапазон луэ /$1, но IPv6 протокол понна — /$2.", + "ipbreason-dropdown": "*Блокировкаослэн огшоры мугъёссы\n** Ӧрекчась информациез ватсан\n** Бамъёслэсь текстсэс быдтон\n** Спам-чӧлсконъёс педпал сайтъёс вылэ\n** Валантэм/жаг текстэз бамъёсы ватсан\n** Викиавторъёсыз кышкатъян/ултӥяллян\n** Лэзёнтэм ужан трос аккаунтъёсын\n** Викиавторлэн ярантэм нимыз", + "ipbsubmit": "Та викиавтор заблокировать карыны", + "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", "ipb-blocklist-contribs": "{{GENDER:$1|$1}} гожтэмъёсы", "unblocked": "[[User:$1|$1]] разблокировать каремын.", "unblocked-id": "$1 номеро блокировка палэнтэмын вал.", "blocklist-target": "Ужпумез", "blocklist-reason": "Мугез", "infiniteblock": "ноку", - "expiringblock": "йылпумъяськиз $1-ысь $2", - "anononlyblock": "аноним гинэ", - "noautoblockblock": "disconnect автоблокировка", - "createaccountblock": "гожъямъёстэс лэзьыны кылдытон учётной", - "emailblock": "лэзьымтэ гожтэт ыстон", - "blocklist-nousertalk": "тупатъяны ачиз уггес быгаты бамлэн обсуждениосаз", + "expiringblock": "йылпумъяськоз $1 $2", + "anononlyblock": "анонимъёс гинэ", + "noautoblockblock": "автоблокировка ӧвӧл", + "createaccountblock": "аккаунтъёсыз кылдытон дугдытэмын", + "emailblock": "гожтэтъёсыз ыстылыны уг луы", + "blocklist-nousertalk": "уг быгаты ас вераськон бамзэ вошъяны", "blocklink": "блокировать карыны", - "unblocklink": "разблокировать", + "unblocklink": "разблокировать карыны", "change-blocklink": "блокировка воштыны", "contribslink": "тупатонъёсыз", "autoblocker": "Автоблокировка, малы ке шуоно «[[User:$1|$1]]» тӥлесьтыд IP-адрестэс алигес уже кутӥз.\n$1 блокировкалэн мугез: «$2»", @@ -638,10 +638,10 @@ "reblock-logentry": "воштӥз блокировкалэсь йылпумъянзэ [[$1]] понна дырлы: $2 $3", "blocklogtext": "Викиавторъёсты блокировкаосын но разблокировкаосын журнал.\nАвтоматически блокировать кариськись IP-адресъёс татын уг адӟытӥсько.\nУчке [[Special:BlockList|списокез али кутӥськись блокировкаослы]].", "unblocklogentry": "разблокировать кариз $1", - "block-log-flags-anononly": "пользователь гинэ нимтултэм", - "block-log-flags-nocreate": "регистрация учётной книгая ужъёсты быдэстон", - "block-log-flags-noemail": "лэзьымтэ гожтэт ыстон", - "block-log-flags-nousertalk": "тупатъяны ачиз уггес быгаты бамлэн обсуждениосаз", + "block-log-flags-anononly": "аноним викиавторъёс гинэ", + "block-log-flags-nocreate": "аккаунтъёсыз кылдытон дугдытэмын", + "block-log-flags-noemail": "гожтэтъёсыз ыстылыны уг луы", + "block-log-flags-nousertalk": "уг быгаты ас вераськон бамзэ вошъяны", "range_block_disabled": "Администраторъёслэн диапазонъёсыз блокировать карыны луонлыксы дугдытэмын.", "move-watch": "Чаклан списоке пыртоно инъет но валтӥсь бамъёсыз", "movelogpage": "Нимъёсты воштонъёсын журнал", @@ -722,34 +722,32 @@ "exif-colorspace": "Буёлъёслэн пространствозы", "exif-datetimeoriginal": "Нырысь дата но дыр", "exif-datetimedigitized": "Цифраослы пӧрмытонлэн датаез но дырыз", - "exif-disclaimer": "Кыл кутыны пумит луон", + "exif-disclaimer": "Кыл кутэмлэсь куштӥськон", "exif-orientation-1": "Огшоры", "namespacesall": "ваньзэ", "monthsall": "ваньзэ", - "confirmrecreate-noreason": "{{GENDER:$1|Участник|Куакеч|}} [[User:$1|$1]] ([[User talk:$1|обс]]) {{GENDER:$1|палэнтыны|палэнтыны}} таиз бере бам, кызьы тон сое редактировать карыны кутскиз. Пожалуйста, подтвердите, мар тон малпаськод та бамез зэм но выльысь кылдозы.", + "confirmrecreate-noreason": "Тӥ та бам тупатыны кутскиды бере, [[User:$1|$1]] ([[User talk:$1|вер]]) викиавтор сое {{GENDER:$1|быдтӥз}}. Тауна, юнматэ, та бамез выльысь кылдытэмды зэм но потэ шуыса.", "confirm-watch-top": "Та бамез чаклан списокады пыртоно?", "autosumm-new": "Выль бам: «$1»", "signature": "[[{{ns:user}}:$1|$2]] ([[{{ns:user_talk}}:$1|вераськон]])", "version": "Версия", "specialpages": "Ваньмыз панельёс", - "specialpages-group-login": "Тусбуяськыны / Гожтӥськоно", - "specialpages-group-users": "Пыриськисьёслэсь правооссэс но", + "specialpages-group-login": "Системае пырон / регистрация", + "specialpages-group-users": "Викиавторъёс но правооссы", "tag-filter": "[[Special:Tags|Тэгъёсыз]] фильтр:", "tag-list-wrapper": "([[Special:Tags|{{PLURAL:$1|1=Метка|Меткаос}}]]: $2)", "tags-title": "Меткаос", - "logentry-delete-delete": "$1 {{GENDER:$2|палэнтыны|палэнтыны}} бам $3", - "logentry-delete-restore": "$1 {{GENDER:$2|выльысь}} бам $3", - "logentry-block-block": "$1 {{GENDER:$2|заблокировать}} {{GENDER:$4|$3}} ын дыраз $5 $6", - "logentry-block-reblock": "$1 {{GENDER:$2|воштыны}} блокировка дыръя {{GENDER:$4|$3}} ын дыраз $5 $6", - "logentry-suppress-block": "$1 {{GENDER:$2|заблокировать}} {{GENDER:$4|$3}} ын дыраз $5 $6", - "logentry-suppress-reblock": "$1 {{GENDER:$2|воштыны}} блокировка дыръя {{GENDER:$4|$3}} ын дыраз $5 $6", + "logentry-delete-delete": "$1 {{GENDER:$2|быдтӥз}} $3 бамез", + "logentry-delete-restore": "$1 {{GENDER:$2|берен сётӥз}} $3 бамез", + "logentry-block-block": "$1 {{GENDER:$2|заблокировать кариз}} {{GENDER:$4|$3}} дырлы: $5 $6", + "logentry-block-reblock": "$1 {{GENDER:$2|воштӥз}} блокировкалэсь йылпумъянзэ {{GENDER:$4|$3}} понна дырлы: $5 $6", + "logentry-suppress-block": "$1 {{GENDER:$2|заблокировать кариз}} {{GENDER:$4|$3}} дырлы: $5 $6", + "logentry-suppress-reblock": "$1 {{GENDER:$2|воштӥз}} блокировкалэсь йылпумъянзэ {{GENDER:$4|$3}} понна дырлы: $5 $6", "logentry-move-move": "$1 $3 бамлы $4 выль ним {{GENDER:$2|сётӥз}}", "logentry-newusers-create": "$1 нимо учётной запись {{GENDER:$2|кылдытэмын}} вал", "logentry-upload-upload": "$1 {{GENDER:$2|понӥз}} $3", "searchsuggest-search": "Утчано {{SITENAME}}", "searchsuggest-containing": "кудъёсаз вань...", - "api-error-autoblocked": "Тӥляд IP-адресты автоматически заблокировать каремын вал, малы ке шуоно со кутӥськиз заблокировать карем викиавторен.", - "api-error-blocked": "Тӥ тупатъянлэсь палэнтэмын вал.", "expand_templates_preview": "Эскерон", "log-action-filter-all": "Ваньзэ" } diff --git a/languages/i18n/uk.json b/languages/i18n/uk.json index e4026013f0..78fce1e0ef 100644 --- a/languages/i18n/uk.json +++ b/languages/i18n/uk.json @@ -237,6 +237,7 @@ "searcharticle": "Перейти", "history": "Історія сторінки", "history_short": "Історія", + "history_small": "історія", "updatedmarker": "оновлено після мого останнього перегляду", "printableversion": "Версія до друку", "permalink": "Постійне посилання", @@ -479,19 +480,12 @@ "login": "Вхід до системи", "login-security": "Підтвердіть свою особу", "nav-login-createaccount": "Вхід / реєстрація", - "userlogin": "Вхід / реєстрація", - "userloginnocreate": "Увійти", "logout": "Вихід із системи", "userlogout": "Вихід із системи", "notloggedin": "Ви не увійшли до системи", "userlogin-noaccount": "Немає облікового запису?", "userlogin-joinproject": "Приєднатися до {{GRAMMAR:genitive|{{SITENAME}}}}", - "nologin": "Ви ще не зареєструвались? $1.", - "nologinlink": "Створити обліковий запис", "createaccount": "Зареєструватися", - "gotaccount": "Ви вже зареєстровані? '''$1'''.", - "gotaccountlink": "Увійти", - "userlogin-resetlink": "Забули дані, потрібні для входу?", "userlogin-resetpassword-link": "Забули пароль?", "userlogin-helplink2": "Допомога з входом у систему", "userlogin-loggedin": "Ви вже увійшли як {{GENDER:$1|$1}}.\nВикористайте нижче форму для входу як інший користувач.", @@ -504,7 +498,6 @@ "createaccountmail": "Використати тимчасовий випадковий пароль і надіслати його на вказану адресу електронної пошти", "createaccountmail-help": "Може використовуватися, щоб створити обліковий запис для іншої особи, не дізнаючись пароль.", "createacct-realname": "Справжнє ім'я (не обов'язково)", - "createaccountreason": "Причина:", "createacct-reason": "Причина", "createacct-reason-ph": "Чому ви створюєте інший обліковий запис", "createacct-reason-help": "Повідомлення, що показується в журналі створення облікових записів", @@ -516,7 +509,7 @@ "createacct-benefit-body1": "{{PLURAL:$1|редагування|редагування|редагувань}}", "createacct-benefit-body2": "{{PLURAL:$1|сторінка|сторінки|сторінок}}", "createacct-benefit-body3": "{{PLURAL:$1|дописувач|дописувачі|дописувачів}} цього місяця", - "badretype": "Введені паролі не співпадають.", + "badretype": "Введені паролі не збігаються.", "usernameinprogress": "Створення облікового запису для цього імені користувача уже виконується.\nБудь ласка, зачекайте.", "userexists": "Введене ім'я користувача вже існує.\nБудь ласка оберіть інше ім'я.", "loginerror": "Помилка при вході до системи", @@ -704,8 +697,8 @@ "selfredirect": "<strong>Попередження:</strong> Ви створюєте перенаправлення на цю ж сторінку.\nВи могли вказати невірну цільову сторінку, або ж редагуєте хибну сторінку.\nЯкщо Ви натиснете \"{{int:savearticle}}\" ще раз, перенаправлення буде створено.", "missingcommenttext": "Будь ласка, введіть нижче ваше повідомлення.", "missingcommentheader": "<strong>Нагадування</strong>: Ви не вказали тему для цього коментаря.\nНатиснувши кнопку «{{int:savearticle}}» ще раз, Ви збережете редагування без заголовка.", - "summary-preview": "Опис буде:", - "subject-preview": "Тема буде:", + "summary-preview": "Попередній перегляд опису редагування:", + "subject-preview": "Попередній перегляд теми:", "previewerrortext": "Сталася помилка при спробі попереднього перегляду Ваших змін.", "blockedtitle": "Користувача заблоковано", "blockedtext": "<strong>Ваш обліковий запис або IP-адреса заблоковані.</strong>\n\nБлокування виконане адміністратором $1.\nПричина блокування: <em>$2</em>.\n\n* Початок блокування: $8\n* Закінчення блокування: $6\n* Діапазон блокування: $7\n\nВи можете надіслати листа користувачеві $1 або будь-якому іншому [[{{MediaWiki:Grouppage-sysop}}|адміністратору]], щоб обговорити блокування.\n\nЗверніть увагу, що ви не зможете надіслати листа адміністратору, якщо ви не зареєстровані або не підтвердили свою електронну адресу в [[Special:Preferences|особистих налаштуваннях]], а також якщо вам було заборонено надсилати листи при блокуванні.\n\nВаша поточна IP-адреса — $3, ідентифікатор блокування — #$5. Будь ласка, зазначайте ці дані у своїх запитах.", @@ -729,7 +722,7 @@ "missing-revision": "Версія #$1 сторінки «{{FULLPAGENAME}}» не існує.\n\nІмовірно, Ви перейшли за застарілим посиланням на вилучену сторінку.\nПодробиці можна дізнатися з [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} журналу вилучень].", "userpage-userdoesnotexist": "Користувач під назвою \"<nowiki>$1</nowiki>\" не зареєстрований. Переконайтеся, що ви хочете створити/редагувати цю сторінку.", "userpage-userdoesnotexist-view": "Обліковий запис користувача «$1» не зареєстровано.", - "blocked-notice-logextract": "Цей користувач наразі заблокований.\nОстанній запис у журналі блокувань такий:", + "blocked-notice-logextract": "{{GENDER:$1|Цей користувач|Ця користувачка}} наразі {{GENDER:$1|заблокований|заблокована}}.\nОстанній запис у журналі блокувань такий:", "clearyourcache": "<strong>Увага:</strong> Після збереження слід очистити кеш оглядача, щоб побачити зміни.\n* <strong>Firefox / Safari:</strong> тримайте <em>Shift</em>, коли натискаєте <em>Оновити</em>, або натисніть <em>Ctrl-F5</em> чи <em>Ctrl-Shift-R</em> (<em>⌘-R</em> на Apple Mac)\n* <strong>Google Chrome:</strong> натисніть <em>Ctrl-Shift-R</em> (<em>⌘-Shift-R</em> на Apple Mac)\n* <strong>Internet Explorer:</strong> тримайте <em>Ctrl</em>, коли натискаєте <em>Оновити</em>, або натисніть <em>Ctrl-F5</em>\n* <strong>Opera:</strong> очистіть кеш за допомогою <em>Інструменти → Налаштування</em> (<em>Opera → Побажання</em> на Apple Mac) та перейдіть на <em>Приватність & безпека → очистити дані браузера → кеш</em>", "usercssyoucanpreview": "'''Підказка:''' використовуйте кнопку «{{int:showpreview}}», щоб протестувати ваш новий css-файл перед збереженням.", "userjsyoucanpreview": "'''Підказка:''' використовуйте кнопку «{{int:showpreview}}», щоб протестувати ваш новий код JavaScript перед збереженням.", @@ -1013,6 +1006,7 @@ "search-interwiki-caption": "Братні проекти", "search-interwiki-default": "Результати із $1:", "search-interwiki-more": "(більше)", + "search-interwiki-more-results": "більше результатів", "search-relatedarticle": "Пов'язаний", "searchrelated": "пов'язаний", "searchall": "усі", @@ -1103,6 +1097,7 @@ "username": "{{GENDER:$1|Ім'я користувача|Ім'я користувачки}}:", "prefs-memberingroups": "{{GENDER:$2|Член}} {{PLURAL:$1|1=групи|груп}}:", "prefs-memberingroups-type": "$1", + "group-membership-link-with-expiry": "$1 (до $2)", "prefs-registration": "Час реєстрації:", "prefs-registration-date-time": "$1", "yourrealname": "Справжнє ім'я:", @@ -1149,17 +1144,26 @@ "editinguser": "Зміна прав {{GENDER:$1|користувача}} <strong>[[User:$1|$1]]</strong> $2", "viewinguserrights": "Перегляд прав {{GENDER:$1|користувача|користувачки}} <strong>[[User:$1|$1]]</strong> $2", "userrights-editusergroup": "Змінити групи {{GENDER:$1|користувача|користувачки}}", - "userrights-viewusergroup": "Перегляд груп користувача", + "userrights-viewusergroup": "Перегляд груп {{GENDER:$1|користувача|користувачки}}", "saveusergroups": "Зберегти групи {{GENDER:$1|користувачів}}", "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-irreversible-marker": "$1*", + "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-invalid-expiry": "Для групи «$1» задано неправильний час закінчення прав.", + "userrights-expiry-in-past": "Для групи «$1» задано минулий час закінчення прав.", + "userrights-cannot-shorten-expiry": "Ви не можете продовжити строк членства в групі «$1». Тільки користувачі з правом додавати і видаляти з групи мають право продовжувати членство.", "userrights-conflict": "Конфлікт зміни прав користувача! Будь ласка, перевірте та підтвердіть зміни знову.", "group": "Група:", "group-user": "Користувачі", @@ -1360,6 +1364,62 @@ "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (див. також [[Special:NewPages|список нових сторінок]])", "recentchanges-legend-plusminus": "(''±123'')", "recentchanges-submit": "Показати", + "rcfilters-activefilters": "Активні фільтри", + "rcfilters-restore-default-filters": "Відновити стандартні фільтри", + "rcfilters-clear-all-filters": "Очистити фільтри", + "rcfilters-search-placeholder": "Фільтруйте нові редагування (переглядайте або почніть вводити)", + "rcfilters-invalid-filter": "Недійсний фільтр", + "rcfilters-empty-filter": "Без фільтрів. Показано всі зміни.", + "rcfilters-filterlist-title": "Фільтри", + "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-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-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": "Більше 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-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": "Адміністративні дії, створення облікових записів, видалення сторінок, завантаження файлів тощо.", "rcnotefrom": "Нижче знаходяться {{PLURAL:$5|редагування}} з <strong>$3, $4</strong> (відображено до <strong>$1</strong>).", "rclistfrom": "Показати редагування починаючи з $3 $2.", "rcshowhideminor": "$1 незначні редагування", @@ -1495,7 +1555,7 @@ "uploaded-setting-handler-svg": "SVG, який встановлює атрибут «handler» з віддаленою адресою/даними/сценарієм, заблоковано. У завантаженому SVG-файлі знайдено <code>$1=\"$2\"</code>.", "uploaded-remote-url-svg": "SVG, який встановлює будь-який атрибут з віддаленим URL, заблоковано. У завантаженому SVG-файлі знайдено <code>$1=\"$2\"</code>.", "uploaded-image-filter-svg": "У завантаженому SVG-файлі знайдено фільтр зображення з URL: <code><$1 $2=\"$3\"></code>.", - "uploadscriptednamespace": "Цей SVG-файл містить недопустимий простір назв «$1».", + "uploadscriptednamespace": "Цей SVG-файл містить недопустимий простір назв «<nowiki>$1</nowiki>».", "uploadinvalidxml": "Не вдалося проаналізувати XML у завантаженому файлі.", "uploadvirus": "Файл містить вірус! Див. $1", "uploadjava": "Файл є ZIP-архівом, що містить .class-файл Java.\nЗавантаження Java-файлів не дозволене, бо вони можуть використовуватися для обходу системи безпеки.", @@ -1774,6 +1834,7 @@ "uncategorizedcategories": "Некатегоризовані категорії", "uncategorizedimages": "Некатегоризовані зображення", "uncategorizedtemplates": "Некатегоризовані шаблони", + "uncategorized-categories-exceptionlist": " # Містить список категорій, які не мають згадуватись на сторінці Special:UncategorizedCategories. Одна категорія на рядок, починається з «*». Рядки, що починаються з іншого символу (включно з пробілом) ігноруються. Використовуйте «#» для коментарів.", "unusedcategories": "Категорії, що не використовуються", "unusedimages": "Файли, що не використовуються", "wantedcategories": "Необхідні категорії", @@ -1872,7 +1933,10 @@ "apisandbox-sending-request": "Надсилання запиту API…", "apisandbox-loading-results": "Отримання результатів API…", "apisandbox-results-error": "Сталася помилка при завантаженні відповіді на запит API: $1.", + "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».", @@ -2017,7 +2081,7 @@ "emailccsubject": "Копія вашого повідомлення до $1: $2", "emailsent": "Електронне повідомлення надіслано", "emailsenttext": "Ваше електронне повідомлення надіслано.", - "emailuserfooter": "Цей лист був надісланий {{GENDER:$2|користувачеві|користувачці}} $2 від {{GENDER:$1|користувача|користувачки}} $1 за допомогою функції «{{int:emailuser}}» проекту {{SITENAME}}. {{GENDER:$2|Ваш}} електронний лист потрапить безпосередньо до {{GENDER:$1|початковго відправника|початкової відправниці}}, відкривши {{GENDER:$1|йому|їй}} {{GENDER:$2|Вашу}} електронну адресу.", + "emailuserfooter": "Цей лист був надісланий {{GENDER:$2|користувачеві|користувачці}} $2 від {{GENDER:$1|користувача|користувачки}} $1 за допомогою функції «{{int:emailuser}}» проекту {{SITENAME}}. Якщо Ви відповісте на цей лист, Ваш електронний лист буде надіслано безпосередньо до {{GENDER:$1|початковго відправника|початкової відправниці}}, відкривши {{GENDER:$1|йому|їй}} {{GENDER:$2|Вашу}} електронну адресу.", "usermessage-summary": "Залишити системне повідомлення.", "usermessage-editor": "Системний вісник", "usermessage-template": "MediaWiki:UserMessage", @@ -2116,7 +2180,7 @@ "editcomment": "Пояснення редагування було: «<em>$1</em>.».", "revertpage": "Відкинуто редагування [[Special:Contributions/$2|$2]] ([[User talk:$2|обговорення]]) до зробленого [[User:$1|$1]]", "revertpage-nouser": "Відкинуто редагування прихованого користувача до останньої версії, зробленої {{GENDER:$1|[[User:$1|$1]]}}", - "rollback-success": "Відкинуті редагування користувача $1; повернення до версії користувача $2.", + "rollback-success": "Відкинуті редагування {{GENDER:$3|користувача|користувачки}} $1; повернення до версії {{GENDER:$4|користувача|користувачки}} $2.", "rollback-success-notify": "Відкинуті редагування користувача $1; \nповернено до останньої версії користувача $2. [$3 Показати зміни]", "sessionfailure-title": "Помилка сеансу", "sessionfailure": "Здається, виникли проблеми з поточним сеансом роботи;\nця дія була скасована з метою попередити «захоплення сеансу».\nБудь ласка, натисніть кнопку «Назад» і перезавантажте сторінку, з якої ви прийшли.", @@ -2133,7 +2197,7 @@ "changecontentmodel-emptymodels-title": "Немає доступних моделей коментарів", "changecontentmodel-emptymodels-text": "Вміст сторінки [[:$1]] не може бути перетворений до будь якого типу.", "log-name-contentmodel": "Журнал змін моделі вмісту", - "log-description-contentmodel": "Події, пов'язані з моделями вмісту сторінки", + "log-description-contentmodel": "На цій сторінці перелічені зміни до контентних моделей сторінок, а також сторінки, створені з нестандартною контентною моделлю.", "logentry-contentmodel-new": "$1 {{GENDER:$2|створив|створила}} сторінку $3, використовуючи нестандартну модель вмісту «$5»", "logentry-contentmodel-change": "$1 {{GENDER:$2|змінив|змінила}} модель вмісту сторінки $3 з «$4» на «$5»", "logentry-contentmodel-change-revertlink": "відкинути", @@ -2393,6 +2457,7 @@ "sorbs": "DNSBL", "sorbsreason": "Ваша IP-адреса числиться як відкритий проксі в DNSBL.", "sorbs_create_account_reason": "Ваша IP-адреса числиться як відкритий проксі в DNSBL. Ви не можете створити обліковий запис.", + "softblockrangesreason": "Анонімний внесок заборонений з Вашої IP-адреси ($1). Будь ласка, увійдіть у систему.", "xffblockreason": "IP-адреса в X-Forwarded-For полі заголовка, або ваша, або проксі сервера, що використовується вами, заблокована. Початкова причина блокування була:$1", "cant-see-hidden-user": "Користувача, якого ви хочете заблокувати, вже заблоковано та приховано. Оскільки у вас немає прав щодо приховання користувачів, ви не можете переглянути або змінити дане блокування.", "ipbblocked": "Ви не можете блокувати чи розблоковувати інших користувачів, оскільки самі заблоковані", @@ -2457,7 +2522,7 @@ "delete_and_move_text": "Сторінка з назвою [[:$1|«$1»]] вже існує.\nБажаєте вилучити її для можливості перейменування?", "delete_and_move_confirm": "Так, вилучити для перейменування", "delete_and_move_reason": "Вилучена для можливості перейменування сторінки «[[$1]]»", - "selfmove": "Неможливо перейменувати сторінку: поточна й нова назви сторінки співпадають.", + "selfmove": "Неможливо перейменувати сторінку: поточна й нова назви сторінки збігаються.", "immobile-source-namespace": "Не можна перейменовувати сторінки з простору назв «$1»", "immobile-target-namespace": "Не можна перейменовувати сторінки до простору назв «$1»", "immobile-target-namespace-iw": "Інтервікі-посилання не підходить для перейменування сторінки.", @@ -2763,7 +2828,7 @@ "svg-long-error": "неправильний SVG-файл: $1", "show-big-image": "Повна роздільність", "show-big-image-preview": "Розмір при попередньому перегляді: $1.", - "show-big-image-preview-differ": "Розмір цього $3-превью для вихідного $2-файлу: $1.", + "show-big-image-preview-differ": "Розмір цього попереднього перегляду $3 для вихідного $2-файлу: $1.", "show-big-image-other": "{{PLURAL:$2|1=Інша роздільність|Інші роздільності}}: $1.", "show-big-image-size": "$1 × $2 пікселів", "file-info-gif-looped": "кільцеве", @@ -3676,7 +3741,7 @@ "logentry-tag-update-revision": "$1 {{GENDER:$2|оновив|оновила}} мітки версії $4 сторінки $3 ({{PLURAL:$7|додано}} $6; {{PLURAL:$9|вилучено}} $8)", "logentry-tag-update-logentry": "$1 {{GENDER:$2|оновив|оновила}} мітки запису журналу $5 сторінки $3 ({{PLURAL:$7|додано}} $6; {{PLURAL:$9|вилучено}} $8)", "rightsnone": "(нема)", - "revdelete-summary": "коментар до редагування", + "rightslogentry-temporary-group": "$1 (тимчасово, до $2)", "feedback-adding": "Додавання відгуку на сторінку ...", "feedback-back": "Назад", "feedback-bugcheck": "Чудово! Просто перевірте, що це не одна з вже [$1 відомих помилок].", @@ -3701,56 +3766,12 @@ "feedback-useragent": "User Agent:", "searchsuggest-search": "Пошук {{GRAMMAR:locative|{{SITENAME}}}}", "searchsuggest-containing": "що містять...", - "api-error-autoblocked": "Вашу IP-адресу було заблоковано автоматично, тому що її використовував заблокований користувач.", - "api-error-badaccess-groups": "Вам не дозволено завантажувати файли до цього вікіпроекту.", "api-error-badtoken": "Внутрішня помилка: некоректний токен.", - "api-error-blocked": "Можливість редагування для вас заблоковано.", - "api-error-copyuploaddisabled": "На цьому сервері вимкнене завантаження за URL-адресою.", - "api-error-duplicate": "Уже {{PLURAL:$1|1=існує інший файл|існують інші файли}} з таким самим вмістом.", - "api-error-duplicate-archive": "Раніше на сайті вже {{PLURAL:$1|1=був файл|були файли}} з ідентичним вмістом, але {{PLURAL:$1|1=його|їх}} вилучили.", - "api-error-empty-file": "Файл, який ви надіслали, порожній.", "api-error-emptypage": "Створення нової порожньої сторінки неприпустиме.", - "api-error-fetchfileerror": "Внутрішня помилка: щось пішло не так під час отримання файлу.", - "api-error-fileexists-forbidden": "Файл з назвою «$1» вже існує і його не можна перезаписати.", - "api-error-fileexists-shared-forbidden": "Файл з назвою «$1» вже існує в сховищі спільних файлів, його не можна перезаписати.", - "api-error-file-too-large": "Файл, який ви надіслали, завеликий.", - "api-error-filename-tooshort": "Назва файлу занадто коротка.", - "api-error-filetype-banned": "Цей тип файлів заборонений.", - "api-error-filetype-banned-type": "$1 — {{PLURAL:$4|1=недозволений тип файлів|недозволені типи файлів}}. {{PLURAL:$3|1=Дозволений тип файлів|Дозволені типи файлів}}: $2.", - "api-error-filetype-missing": "У цього файла відсутнє розширення.", - "api-error-hookaborted": "Зміну, що Ви намагалися зробити, відкинуто обробником.", - "api-error-http": "Внутрішня помилка: Не вдається підключитися до сервера.", - "api-error-illegal-filename": "Неприпустиме ім'я файлу.", - "api-error-internal-error": "Внутрішня помилка: Щось пішло не так під час обробки вашого завантаження на вікі.", - "api-error-invalid-file-key": "Внутрішня помилка: Файл не знайдено в тимчасовому сховищі.", - "api-error-missingparam": "Внутрішня помилка: Відсутні параметри за запитом.", - "api-error-missingresult": "Внутрішня помилка: не вдалося визначити, чи пройшло копіювання вдало.", - "api-error-mustbeloggedin": "Ви повинні увійти в систему для завантаження файлів.", - "api-error-mustbeposted": "Внутрішня помилка: Запит вимагає HTTP POST.", - "api-error-noimageinfo": "Завантаження завершено, але сервер не надав ніякої інформації про файл.", - "api-error-nomodule": "Внутрішня помилка: Відсутній модуль завантажень.", - "api-error-ok-but-empty": "Внутрішня помилка: сервер не відповідає.", - "api-error-overwrite": "Заміну існуючого файлу не дозволено.", - "api-error-ratelimited": "Ви намагаєтесь завантажити більше файлів за короткий проміжок часу, ніж дозволено у цій вікі. Будь ласка, спробуйте за декілька хвилин.", - "api-error-stashfailed": "Внутрішня помилка: сервер не зміг зберегти тимчасовий файл.", "api-error-publishfailed": "Внутрішня помилка: сервер не зміг опублікувати тимчасовий файл.", - "api-error-stasherror": "Сталася помилка при завантаженні файлу у сховище.", - "api-error-stashedfilenotfound": "Неможливо знайти прихований файл, під час спроби його надсилання зі схованки.", - "api-error-stashpathinvalid": "Шлях, за яким повинен знаходитись прихований файл, є хибним.", - "api-error-stashfilestorage": "Сталася помилка під час збереження файлу в схованці.", - "api-error-stashzerolength": "Сервер не може зберегти файл, тому що він має нульовий розмір.", - "api-error-stashnotloggedin": "Ви повинні увійти в систему, аби мати змогу зберігати файли у сховку завантажень.", - "api-error-stashwrongowner": "Файл, до якого ви намагалися отримати доступ в схованці, не належить вам.", - "api-error-stashnosuchfilekey": "Ключ файлу, до якого Ви намагались отримати доступ у сховку, не існує.", - "api-error-timeout": "Сервер не відповів протягом відведеного на це часу.", - "api-error-unclassified": "Сталася невідома помилка.", - "api-error-unknown-code": "Невідома помилка: «$1»", - "api-error-unknown-error": "Внутрішня помилка: щось пішло не так, при спробі завантажити файл.", + "api-error-stashfailed": "Внутрішня помилка: сервер не зміг зберегти тимчасовий файл.", "api-error-unknown-warning": "Невідоме попередження: «$1».", "api-error-unknownerror": "Невідома помилка: \"$1\".", - "api-error-uploaddisabled": "Завантаження вимкнуто у цій вікі.", - "api-error-verification-error": "Цей файл можливо пошкоджено, або він має неправильне розширення.", - "api-error-was-deleted": "Файл із цією назвою раніше було завантажено і згодом вилучено.", "duration-seconds": "$1 {{PLURAL:$1|секунда|секунди|секунд}}", "duration-minutes": "$1 {{PLURAL:$1|хвилина|хвилини|хвилин}}", "duration-hours": "$1 {{PLURAL:$1|година|години|годин}}", @@ -3795,7 +3816,12 @@ "pagelang-language": "Мова", "pagelang-use-default": "Мова за замовчуванням", "pagelang-select-lang": "Оберіть мову", + "pagelang-reason": "Причина", "pagelang-submit": "Відправити", + "pagelang-nonexistent-page": "Сторінка $1 не існує.", + "pagelang-unchanged-language": "Мова сторінки $1 вже визначена як «$2».", + "pagelang-unchanged-language-default": "Мова сторінки $1 вже визначена як стандартна мова вмісту.", + "pagelang-db-failed": "База даних не змогла змінити мову сторінки.", "right-pagelang": "зміна мови сторінки", "action-pagelang": "змінити мову сторінки", "log-name-pagelang": "Журнал змін мови", @@ -3867,13 +3893,14 @@ "mw-widgets-titleinput-description-new-page": "сторінка ще не існує", "mw-widgets-titleinput-description-redirect": "перенаправлення на $1", "mw-widgets-categoryselector-add-category-placeholder": "Додати категорію...", + "mw-widgets-usersmultiselect-placeholder": "Додати ще...", "sessionmanager-tie": "Не можна поєднувати кілька типів автентифікації запиту: $1.", "sessionprovider-generic": "сесій $1", "sessionprovider-mediawiki-session-cookiesessionprovider": "сесій на основі кук", "sessionprovider-nocookies": "Куки можуть бути відключені. Переконайтеся, що у Вас включені cookies і почніть знову.", "randomrootpage": "Випадкова коренева сторінка", "log-action-filter-block": "Тип блокування:", - "log-action-filter-contentmodel": "Тип модифікації contentmodel:", + "log-action-filter-contentmodel": "Тип зміни контентної моделі:", "log-action-filter-delete": "Тип вилучення:", "log-action-filter-import": "Тип імпорту:", "log-action-filter-managetags": "Тип дії з управління тегами:", @@ -3888,8 +3915,8 @@ "log-action-filter-block-block": "Блокування", "log-action-filter-block-reblock": "Зміна блокування", "log-action-filter-block-unblock": "Розблокування", - "log-action-filter-contentmodel-change": "Зміна Contentmodel", - "log-action-filter-contentmodel-new": "Створення сторінки з нестандартною моделлю Contentmodel", + "log-action-filter-contentmodel-change": "Зміна контентної моделі", + "log-action-filter-contentmodel-new": "Створення сторінки з нестандартною контентною моделлю", "log-action-filter-delete-delete": "Видалення сторінки", "log-action-filter-delete-delete_redir": "Перезапис перенаправлення", "log-action-filter-delete-restore": "Відновлення сторінки", @@ -3998,7 +4025,7 @@ "usercssispublic": "Будь ласка, зверніть увагу: підсторінки CSS не повинні містити конфіденційних даних, бо їх можуть бачити інші користувачі.", "restrictionsfield-badip": "Недійсна IP-адреса або діапазон: $1", "restrictionsfield-label": "Дозволені діапазони IP-адрес:", - "restrictionsfield-help": "Одна IP-адреса або CIDR-діапазон на рядок. Щоб увімкнути все, використайте<br><code>0.0.0.0/0</code><br><code>::/0</code>", + "restrictionsfield-help": "Одна IP-адреса або CIDR-діапазон на рядок. Щоб увімкнути все, використайте:<pre>0.0.0.0/0\n::/0</pre>", "revid": "версія $1", "pageid": "ID сторінки $1" } diff --git a/languages/i18n/ur.json b/languages/i18n/ur.json index c688878948..860697d62e 100644 --- a/languages/i18n/ur.json +++ b/languages/i18n/ur.json @@ -1003,8 +1003,6 @@ "saveprefs": "محفوظ", "restoreprefs": "تمام ابتدائی ترتیبات کو بحال کریں", "prefs-editing": "ترمیم کاری", - "rows": "صفیں:", - "columns": "قطاریں:", "searchresultshead": "تلاش", "stub-threshold": "نامکمل ربط کے فارمیٹ کی حد ($1):", "stub-threshold-sample-link": "نمونہ", @@ -1415,7 +1413,7 @@ "uploadscripted": "اس فائل میں ایچ ٹی ایم ایل یا اسکرپٹ کوڈ کا استعمال کیا گیا ہے لہذا عین ممکن ہے کہ کوئی ویب براؤزر اس کی غلط تشریح کرے۔", "upload-scripted-pi-callback": "ایسی کسی فائل کو اپلوڈ نہیں کیا جا سکتا جس میں ایکس ایم ایل اسٹائل شیٹ پر عمل کرنے کی ہدایت ہو۔", "uploaded-hostile-svg": "اپلوڈ کردہ ایس وی جی فائل کے اسٹائل عنصر میں غیر محفوظ سی ایس ایس دریافت ہوئی ہے۔", - "uploadscriptednamespace": "اس ایس وی جی فائل میں غیر قانونی نام فضا \"$1\" موجود ہے۔", + "uploadscriptednamespace": "اس ایس وی جی فائل میں غیر قانونی نام فضا \"<nowiki>$1</nowiki>\" موجود ہے۔", "uploadinvalidxml": "اپلوڈ کردہ فائل میں موجود ایکس ایم ایل کا تجزیہ نہیں کیا جا سکا۔", "uploadvirus": "اس فائل میں وائرس موجود ہے!\nتفصیلات: $1", "upload-source": "اصل فائل", @@ -3412,56 +3410,12 @@ "feedback-useragent": "یوزر ایجنٹ:", "searchsuggest-search": "تلاش", "searchsuggest-containing": "نتائج...", - "api-error-autoblocked": "آپ کے آئی پی پتے پر خودکار طور پر پابندی لگا دی گئی ہے، کیونکہ اسے کسی ممنوع صارف نے استعمال کیا ہے۔", - "api-error-badaccess-groups": "آپ کو اس ویکی میں فائلیں اپلوڈ کرنے کی اجازت نہیں ہے۔", "api-error-badtoken": "داخلی نقص: غلط ٹوکن۔", - "api-error-blocked": "آپ کی ترمیم کاری پر پابندی لگا دی گئی ہے۔", - "api-error-copyuploaddisabled": "یوآرایل کے ذریعہ اس سرور پر اپلوڈ کو غیر فعال کر دیا گیا ہے۔", - "api-error-duplicate": "یکساں مواد کی حامل {{PLURAL:$1|ایک اور فائل|مزید فائلیں}} ویکی پر موجود {{PLURAL:$1|ہے|ہیں}}۔", - "api-error-duplicate-archive": "یکساں مواد کی حامل {{PLURAL:$1|ایک اور فائل|مزید فائلیں}} ویکی پر موجود {{PLURAL:$1|تھی|تھیں}}، لیکن {{PLURAL:$1|اسے|انہیں}} حذف کر دیا گیا۔", - "api-error-empty-file": "آپ کی ارسال کردہ فائل خالی تھی۔", "api-error-emptypage": "نئے خالی صفحات بنانے کی اجازت نہیں ہے۔", - "api-error-fetchfileerror": "داخلی نقص: فائل کو اخذ کرنے کے دوران میں کچھ غلط ہوا ہے۔", - "api-error-fileexists-forbidden": "«$1» کے نام سے ایک فائل پہلے سے موجود ہے، اسے تبدیل نہیں کیا جا سکتا۔", - "api-error-fileexists-shared-forbidden": "«$1» کے نام سے مشترکہ ذخیرے میں ایک فائل پہلے سے موجود ہے، اسے تبدیل نہیں کیا جا سکتا۔", - "api-error-file-too-large": "آپ کی ارسال کردہ فائل بہت بڑی تھی۔", - "api-error-filename-tooshort": "فائل کا نام انتہائی مختصر ہے۔", - "api-error-filetype-banned": "فائل کی اس قسم پر پابندی عائد ہے۔", - "api-error-filetype-banned-type": "$1 نوعیت کی {{PLURAL:$4|فائل|فائلوں}} کی اجازت نہیں۔\nاجازت یافتہ نوعیت کی {{PLURAL:$3|فائل|فائلیں}} $2 {{PLURAL:$3|ہے|ہیں}}۔", - "api-error-filetype-missing": "فائل کی توسیع موجود نہیں", - "api-error-hookaborted": "آپ نے جو تبدیلی کرنے کی کوشش کی اسے کسی توسیع نے منسوخ کر دیا۔", - "api-error-http": "داخلی نقص: سرور سے رابطہ نہیں ہو سکا", - "api-error-illegal-filename": "اس نام کی فائل ممنوع ہے۔", - "api-error-internal-error": "داخلی نقص: ویکی پر آپ کے اپلوڈ کی انجام دہی کے دوران میں کچھ غلط واقع ہوا۔", - "api-error-invalid-file-key": "داخلی نقص: عارضی ذخیرے میں فائل نہیں مل سکی۔", - "api-error-missingparam": "داخلی نقص: درخواست میں مفقود متغیرات", - "api-error-missingresult": "داخلی نقص: نہیں بتایا جا سکتا کہ نقل و چسپاں کا عمل کامیاب ہوا یا نہیں۔", - "api-error-mustbeloggedin": "فائلیں اپلوڈ کرنے کے لیے آپ کا داخل ہونا ضروری ہے۔", - "api-error-mustbeposted": "داخلی نقص: یہ درخواست HTTP POST کی متقاضی ہے۔", - "api-error-noimageinfo": "اپلوڈ کامیاب رہا لیکن فائل کے متعلق سرور نے ہمیں کسی قسم کی معلومات بہم نہیں پہنچائیں۔", - "api-error-nomodule": "داخلی نقص: کسی ماڈیول کو مرتب نہیں کیا گیا۔", - "api-error-ok-but-empty": "داخلی نقص: سرور سے کوئی جواب نہیں ملا۔", - "api-error-overwrite": "موجودہ فائل کو دوبارہ اپلوڈ کرنے کی اجازت نہیں۔", - "api-error-ratelimited": "مختصر وقت میں آپ اس ویکی میں اجازت یافتہ تعداد سے زیادہ فائلوں کو اپلوڈ کرنے کی کوشش کر رہے ہیں۔\nبراہ کرم کچھ منٹ بعد دوبارہ کوشش کریں۔", - "api-error-stashfailed": "داخلی نقص: عارضی فائل رکھنے میں سرور کو ناکامی ہوئی۔", "api-error-publishfailed": "داخل نقص: عارضی فائل شائع کرنے میں سرور کو ناکامی ہوئی۔", - "api-error-stasherror": "نہاں خانے میں فائل کو اپلوڈ کرتے وقت کوئی نقص واقع ہوا۔", - "api-error-stashedfilenotfound": "نہاں خانے میں رکھی گئی فائل وہاں سے اپلوڈ کرنے کے دوران نہیں ملی۔", - "api-error-stashpathinvalid": "وہ جگہ غلط ہے جہاں پوشیدہ فائل ملنی چاہیے تھی۔", - "api-error-stashfilestorage": "نہاں خانے میں فائل کو رکھتے وقت کوئی نقص واقع ہوا۔", - "api-error-stashzerolength": "سرور اس فائل کو پوشیدہ نہ کر سکا کیونکہ اس کی لمبائی صفر ہے۔", - "api-error-stashnotloggedin": "اپلوڈ کے نہاں خانے میں فائلوں کو محفوظ کرنے کے لیے آپ کا داخل ہونا ضروری ہے۔", - "api-error-stashwrongowner": "فائل کی جس کلید کے ذریعہ آپ نہاں خانے میں رسائی کی کوشش کر رہے ہیں وہ آپ کی نہیں ہے۔", - "api-error-stashnosuchfilekey": "فائل کی جس کلید کے ذریعہ آپ نہاں خانے میں رسائی کی کوشش کر رہے ہیں وہ موجود نہیں۔", - "api-error-timeout": "متوقع مدت کے دوران میں سرور نے کوئی جواب نہیں دیا۔", - "api-error-unclassified": "نامعلوم نقص واقع ہوا۔", - "api-error-unknown-code": "نامعلوم نقص: \"$1\" ۔", - "api-error-unknown-error": "داخلی نقص: آپ کی فائل کو اپلوڈ کرنے کے دوران میں کچھ غلط ہو گیا ہے۔", + "api-error-stashfailed": "داخلی نقص: عارضی فائل رکھنے میں سرور کو ناکامی ہوئی۔", "api-error-unknown-warning": "نامعلوم انتباہ: \"$1\"", "api-error-unknownerror": "نامعلوم نقص: \"$1\"", - "api-error-uploaddisabled": "اس ویکی پر اپلوڈ کی سہولت غیر فعال ہے۔", - "api-error-verification-error": "شاید فائل خراب ہے یا غلط توسیع کی حامل ہے۔", - "api-error-was-deleted": "اس نام کی فائل پہلے اپلوڈ کی گئی تھی اور معاً بعد حذف کر دی گئی۔", "duration-seconds": "$1 {{PLURAL:$1|سیکنڈ}}", "duration-minutes": "$1 {{PLURAL:$1|منٹ}}", "duration-hours": "$1 {{PLURAL:$1|گھنٹہ|گھنٹے}}", diff --git a/languages/i18n/vec.json b/languages/i18n/vec.json index 9446b0537c..c72fc02ad1 100644 --- a/languages/i18n/vec.json +++ b/languages/i18n/vec.json @@ -484,8 +484,6 @@ "passwordreset-emaildisabled": "Le funsionalità de posta eletrònega le xe stà disabilità su sta wiki.", "passwordreset-username": "Nome utente:", "passwordreset-domain": "Dominio", - "passwordreset-capture": "Vixuałixare el contenuto del mesajo de posta ełetronega?", - "passwordreset-capture-help": "Se se sełesiona sta caxeła, l'indiriso de posta ełetronega (co' ła password tenporanea) ve vegnarà mostrà anca a voialtri oltre che esare invià a 'l utente.", "passwordreset-email": "Indiriso de posta ełetronega", "passwordreset-emailtitle": "Detaji de l'account so {{SITENAME}}", "passwordreset-emailtext-ip": "Cualcheduni (probabilmente ti, co indiriso IP $1) ga richiesto l'invio de na nova password par l'aceso a {{SITENAME}} ($4). {{PLURAL:$3|L'utente asocià|I utenti asociadi}} a sto indiriso de posta ełetronega łi xe:\n\n$2\n\n{{PLURAL:$3|Sta password tenporanea ła scadarà|Ste password tenporanee łe scadarà}} dopo {{PLURAL:$5|un dì|$5 dì}}.\n\nSarìa mejo acedare e deçidare na nova password sùito. Se no te si stà ti a fare ła richiesta, o se te te ghe ricordà ła password originałe e no te vołi pi canbiarla, te połi ignorare sto mesajo e continuar doparare ła to password vecia.", @@ -568,7 +566,7 @@ "userinvalidcssjstitle": "'''Ocio:''' No ghe xe nissuna skin con nome \"$1\". Nota che le pagine par i .css e .js personalizà le gà l'iniziale del titolo minuscola, par esenpio {{ns:user}}:Esenpio/vector.css e no {{ns:user}}:Esenpio/Vector.css.", "updated": "(Agiornà)", "note": "'''Nota:'''", - "previewnote": "Sta cua ła xe soło n'anteprima; i canbiamenti a ła pajina NO i xe gnancora stà salvài!", + "previewnote": "'''Tiente in mente che sta qua la xe solo n'anteprima.'''\nI to canbiamenti NO i xe gnancora stà salvài!", "continue-editing": "Va a l'area de modifega", "previewconflict": "Sta anteprima la corisponde al testo ne la casèla de edizion de sora, e la fa védar come vegnarà fora la pagina se te machi \"Salva la pagina\" in sto momento.", "session_fail_preview": "No xè stà possibiłe salvar le to modifiche parché i dati de la session i xè andai persi.\nPar piaser, riproa da novo.\nSe no funsiona gnancora, proa a [[Special:UserLogout|scołegarte]] e a cołegarte de novo.'''", @@ -836,8 +834,6 @@ "saveprefs": "Salva le preferense", "restoreprefs": "Ripristina le inpostassion predefinìe", "prefs-editing": "Canbiamento", - "rows": "Righe:", - "columns": "Cołone:", "searchresultshead": "Riserca", "stub-threshold": "Valor minimo par i <a href=\"#\" class=\"stub\">colegamenti ai stub</a>:", "stub-threshold-disabled": "Disativà", @@ -923,8 +919,6 @@ "userrights-reason": "Motivassion:", "userrights-no-interwiki": "No te ghè i parmessi necessari par modificar i diriti dei utenti su altri siti.", "userrights-nodatabase": "El database $1 no l'esiste mìa o no l'è un database local.", - "userrights-nologin": "Par assegnarghe diriti ai utenti te ghè da [[Special:UserLogin|efetuar l'acesso]] come aministrador.", - "userrights-notallowed": "No te ghe i parmesi necesari par xontarghe o cavarghe diriti ai utenti.", "userrights-changeable-col": "Grupi che te pol canbiar", "userrights-unchangeable-col": "Grupi che no te pol canbiar", "userrights-conflict": "Conflito de diriti utente! Aplica de novo le to modifiche.", @@ -1006,7 +1000,6 @@ "right-siteadmin": "Bloca e desbloca el database", "right-override-export-depth": "Esporta le pàxene, includendo le pàxene ligàe fin a na profondità de 5", "right-sendemail": "Mandarghe e-mail a cheialtri utenti", - "right-passwordreset": "Vedi i mesaji de rinpostasion de ła password", "newuserlogpage": "Novi utenti", "newuserlogpagetext": "Sto qua el xè el registro dei novi utenti registrai.", "rightslog": "Diriti de i utenti", @@ -1770,6 +1763,8 @@ "sp-contributions-search": "Serca contributi", "sp-contributions-username": "Indirizo IP o nome utente:", "sp-contributions-toponly": "Mostra solo i contributi che i xe l'ultima revision de la pagina", + "sp-contributions-newonly": "Fame védar solo le creassion de pagina", + "sp-contributions-hideminor": "Scondi i canbiamenti picenini", "sp-contributions-submit": "Riserca", "whatlinkshere": "Punta qua", "whatlinkshere-title": "Pagine che ponta a ''$1''", @@ -2867,44 +2862,12 @@ "feedback-thanks-title": "Grassie!", "searchsuggest-search": "Serca drento de {{SITENAME}}", "searchsuggest-containing": "che contien...", - "api-error-badaccess-groups": "Nó te si autorixà a cargar documenti so sta wiki.", "api-error-badtoken": "Eror interno: token fałà.", - "api-error-copyuploaddisabled": "El cargamento tramite URL el xe dixabiłità so sto server.", - "api-error-duplicate": "So'l sito {{PLURAL:$1|ghe xe xà 'n altro documento|ghe xe xà altri documenti}} có 'l steso contegnuo.", - "api-error-duplicate-archive": "{{PLURAL:$1|Ghe xera 'n altro file|Ghe xera altri file}} xà inte'l sito có 'l steso contegnuo, ma {{PLURAL:$1|el xe sta scansełà|i xe stai scansełai}}.", - "api-error-empty-file": "El file sełesionà el gera vodo.", "api-error-emptypage": "Ła creasion de nove pàjine vode nó ła xe consentia.", - "api-error-fetchfileerror": "Eror interno: ghe xe sta un problema durante el recupero del documento.", - "api-error-fileexists-forbidden": "Un file de nome \"$1\" 'l existe xà e nò 'l pol esar sovrascrito.", - "api-error-fileexists-shared-forbidden": "Un file de nome \"$1\" 'l existe xà inte'l repository condivixo e nó 'l pol esar sovrascrito.", - "api-error-file-too-large": "El file sełesionà el gera masa grando.", - "api-error-filename-tooshort": "El nome del file el xe massa curto.", - "api-error-filetype-banned": "Sto tipo de file el xe vietà.", - "api-error-filetype-banned-type": "$1 {{PLURAL:$4|nó 'l xe un tipo de file consentio|nó i xe tipi de file consentìi}}. {{PLURAL:$3|El tipo de file consentio el xe|I tipi de file consentìi i xe}} $2.", - "api-error-filetype-missing": "Al file ghe manca l'estension.", - "api-error-hookaborted": "Ła modifega che te ghe proà a far ła xe sta interota da na estension.", - "api-error-http": "Eror interno: inposibiłe conetarse al server.", - "api-error-illegal-filename": "El nome del file nó 'l xe parmeso.", - "api-error-internal-error": "Eror interno: calcosa xe ndà storo có l'elaborasion del to cargamento so ła wiki.", - "api-error-invalid-file-key": "Eror interno: file nó prexente inte ła carteła de i file tenporanei.", - "api-error-missingparam": "Eror interno: parametri de ła dimanda mancanti.", - "api-error-missingresult": "Eror interno: inposibiłe determinar se ła copia ła xe riusia.", - "api-error-mustbeloggedin": "Te ghe da efetuar 'l aceso par cargar i file.", - "api-error-mustbeposted": "Eror interno: ła dimanda dimanda HTTP POST.", - "api-error-noimageinfo": "El cargamento el xe riusio, ma 'l server nó el ne ga dato gnauna informasion so'l file.", - "api-error-nomodule": "Eror interno: nó xe sta inpostà el moduło de cargamento.", - "api-error-ok-but-empty": "Eror interno: nisuna risposta dal server.", - "api-error-overwrite": "Nó xe parmeso de sorascrìvar un file existente.", - "api-error-stashfailed": "Eror interno: el server nó 'l xe riusio a memorixar el documento tenporaneo.", "api-error-publishfailed": "Eror interno: el server nó 'l xe riusio a publicar el documento tenporaneo.", - "api-error-timeout": "El server nó 'l ga risposto entro el tenpo previsto.", - "api-error-unclassified": "Se gà verifegà un eror sconosùo.", - "api-error-unknown-code": "Eror sconosùo: \"$1\"", - "api-error-unknown-error": "Eror interno: calcosa xe ndà storto có se jera drio proar a cargar el file.", + "api-error-stashfailed": "Eror interno: el server nó 'l xe riusio a memorixar el documento tenporaneo.", "api-error-unknown-warning": "Avixo sconosùo: \"$1\".", "api-error-unknownerror": "Eror sconosùo: \"$1\".", - "api-error-uploaddisabled": "El cargamento el xe dixabiłità so sta wiki.", - "api-error-verification-error": "Sto file el podaria esar danegià, o 'ver l'estension sbałià.", "duration-seconds": "$1 {{PLURAL:$1|secondo|secondi}}", "duration-minutes": "$1 {{PLURAL:$1|minuto|minuti}}", "duration-hours": "$1 {{PLURAL:$1|ora|ore}}", diff --git a/languages/i18n/vi.json b/languages/i18n/vi.json index d4ff264783..ca65ea907a 100644 --- a/languages/i18n/vi.json +++ b/languages/i18n/vi.json @@ -202,6 +202,7 @@ "searcharticle": "Xem", "history": "Lịch sá»­ trang", "history_short": "Lịch sá»­", + "history_small": "lịch sá»­", "updatedmarker": "được cập nhật kể từ lần xem cuối", "printableversion": "Bản để in", "permalink": "Liên kết thường trá»±c", @@ -558,7 +559,7 @@ "botpasswords-label-appid": "Tên bot:", "botpasswords-label-create": "Tạo", "botpasswords-label-update": "Cập nhật", - "botpasswords-label-cancel": "Huá»· bỏ", + "botpasswords-label-cancel": "Hủy bỏ", "botpasswords-label-delete": "Xoá", "botpasswords-label-resetpassword": "Đặt lại mật khẩu", "botpasswords-label-grants": "Các quyền có liên quan:", @@ -671,6 +672,7 @@ "blockedtitle": "Thành viên bị cấm", "blockedtext": "'''Tên người dùng hoặc địa chỉ IP của bạn đã bị cấm.'''\n\nNgười thá»±c hiện cấm là $1.\nLý do được cung cấp là ''$2''.\n\n* Bắt đầu cấm: $8\n* Kết thúc cấm: $6\n* Mục tiêu cấm: $7\n\nBạn có thể liên hệ với $1 hoặc một [[{{MediaWiki:Grouppage-sysop}}|bảo quản viên]] khác để thảo luận về việc cấm.\nBạn không thể sá»­ dụng tính năng “gá»­i thÆ° cho người này” trừ khi bạn đã ghi một địa chỉ thÆ° điện tá»­ hợp lệ trong [[Special:Preferences|tùy chọn tài khoản]] và bạn không bị khóa chức năng đó.\nĐịa chỉ IP hiện tại của bạn là $3, và mã số cấm là #$5.\nXin hãy ghi kèm tất cả các thông tin trên vào thÆ° yêu cầu của bạn.", "autoblockedtext": "Địa chỉ IP của bạn đã bị tá»± động cấm vì một người nào đó đã sá»­ dụng nó, $1 là thành viên đã thá»±c hiện cấm.\nLý do được cung cấp là:\n\n:''$2''\n\n* Bắt đầu cấm: $8\n* Kết thúc cấm: $6\n* Mục tiêu cấm: $7\n\nBạn có thể liên hệ với $1 hoặc một trong số các\n[[{{MediaWiki:Grouppage-sysop}}|bảo quản viên]] khác để thảo luận về việc cấm.\n\nChú ý rằng bạn sẽ không dùng được chức năng “gá»­i thÆ° cho người này” trừ khi bạn đã ghi một địa chỉ thÆ° điện tá»­ hợp lệ trong [[Special:Preferences|tùy chọn]] và bạn không bị cấm dùng chức năng đó.\n\nĐịa chỉ IP hiện tại của bạn là $3, mã số cấm là $5.\nXin hãy ghi kèm tất cả các chi tiết trên vào thÆ° yêu cầu của bạn.", + "systemblockedtext": "Tên người dùng hoặc địa chỉ IP của bạn bị MediaWiki cấm tá»± động.\nLý do được cung cấp là:\n\n:<em>$2</em>\n\n* Bắt đầu cấm: $8\n* Kết thúc cấm: $6\n* Mục tiêu cấm: $7\n\nĐịa chỉ IP hiện tại của bạn là $3.\nXin vui lòng bao gồm tất cả các chi tiết bên trên khi nào hỏi về tác vụ này.", "blockednoreason": "không đưa ra lý do", "whitelistedittext": "Bạn phải $1 để sá»­a trang.", "confirmedittext": "Bạn cần phải xác nhận địa chỉ thÆ° điện tá»­ trước khi được sá»­a đổi trang. Xin hãy đặt và xác nhận địa chỉ thÆ° điện tá»­ của bạn dùng trang [[Special:Preferences|tùy chọn]].", @@ -972,6 +974,7 @@ "search-interwiki-caption": "Các dá»± án liên quan", "search-interwiki-default": "Kết quả từ $1:", "search-interwiki-more": "(thêm)", + "search-interwiki-more-results": "thêm kết quả", "search-relatedarticle": "Liên quan", "searchrelated": "có liên quan", "searchall": "tất cả", @@ -1021,8 +1024,6 @@ "saveprefs": "LÆ°u tùy chọn", "restoreprefs": "Mặc định lại toàn bộ tùy chọn (trong tất cả các phần)", "prefs-editing": "Sá»­a đổi", - "rows": "Số hàng:", - "columns": "Số cột:", "searchresultshead": "Tìm kiếm", "stub-threshold": "Định dạng liên kết đến sÆ¡ khai ($1) cho các trang ngắn hÆ¡n:", "stub-threshold-sample-link": "ví dụ", @@ -1063,6 +1064,7 @@ "youremail": "ThÆ° điện tá»­:", "username": "{{GENDER:$1}}Tên người dùng:", "prefs-memberingroups": "{{GENDER:$2}}Thành viên của {{PLURAL:$1|nhóm|các nhóm}}:", + "group-membership-link-with-expiry": "$1 (cho đến $2)", "prefs-registration": "Lúc mở tài khoản:", "yourrealname": "Tên thật:", "yourlanguage": "Ngôn ngữ:", @@ -1106,16 +1108,27 @@ "userrights-user-editname": "Nhập tên thành viên:", "editusergroup": "Tải nhóm người dùng", "editinguser": "Thay đổi quyền hạn của người dùng <strong>[[User:$1|$1]]</strong> $2", - "userrights-editusergroup": "Sá»­a nhóm thành viên", + "viewinguserrights": "Xem quyền hạn của người dùng <strong>[[User:$1|$1]]</strong> $2", + "userrights-editusergroup": "Sá»­a nhóm {{GENDER:$1}}thành viên", + "userrights-viewusergroup": "Xem nhóm {{GENDER:$1}}người dùng", "saveusergroups": "LÆ°u nhóm {{GENDER:$1}}người dùng", "userrights-groupsmember": "Thuộc nhóm:", "userrights-groupsmember-auto": "Ngầm thuộc nhóm:", - "userrights-groups-help": "Bạn có thể xếp thành viên này vào nhóm khác:\n* Hộp kiểm được đánh dấu có nghÄ©a rằng thành viên thuộc về nhóm đó.\n* Hộp không được đánh dấu có nghÄ©a rằng thành viên không thuộc về nhóm đó.\n* Dấu * có nghÄ©a là bạn sẽ không thể loại thành viên ra khỏi nhóm một khi bạn đã đưa thành viên vào, hoặc ngược lại.", + "userrights-groups-help": "Bạn có thể xếp thành viên này vào nhóm khác:\n* Hộp kiểm được đánh dấu có nghÄ©a rằng thành viên thuộc về nhóm đó.\n* Hộp không được đánh dấu có nghÄ©a rằng thành viên không thuộc về nhóm đó.\n* Dấu * có nghÄ©a là bạn sẽ không thể loại thành viên ra khỏi nhóm một khi bạn đã đưa thành viên vào, hoặc ngược lại.\n* Dấu # có nghÄ©a là bạn chỉ có thể trì hoãn thời hạn của nhóm này; bạn không thể đẩy sớm thời hạn.", "userrights-reason": "Lý do:", "userrights-no-interwiki": "Bạn không có quyền thay đổi quyền hạn của thành viên tại các wiki khác.", "userrights-nodatabase": "CÆ¡ sở dữ liệu $1 không tồn tại hoặc nằm ở bên ngoài.", "userrights-changeable-col": "Những nhóm bạn có thể thay đổi", "userrights-unchangeable-col": "Những nhóm bạn không thể thay đổi", + "userrights-expiry-current": "Hết hạn $1", + "userrights-expiry-none": "Vô hạn", + "userrights-expiry": "Thời hạn:", + "userrights-expiry-existing": "Thời hạn hiện thời: $3, $2", + "userrights-expiry-othertime": "Thời gian khác:", + "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-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", @@ -1267,11 +1280,13 @@ "action-upload_by_url": "tải lên tập tin này từ địa chỉ URL", "action-writeapi": "dùng API để sá»­a đổi", "action-delete": "xóa trang này", - "action-deleterevision": "xóa phiên bản này", - "action-deletedhistory": "xem các phiên bản đã bị xóa của trang này", + "action-deleterevision": "xóa phiên bản", + "action-deletelogentry": "xóa mục nhật trình", + "action-deletedhistory": "xem các phiên bản đã bị xóa của trang", + "action-deletedtext": "xem văn bản của phiên bản đã xóa", "action-browsearchive": "tìm kiếm trang đã bị xóa", - "action-undelete": "phục hồi trang này", - "action-suppressrevision": "xem và phục hồi phiên bản ẩn này", + "action-undelete": "phục hồi trang", + "action-suppressrevision": "xem và phục hồi phiên bản ẩn", "action-suppressionlog": "xem nhật trình ẩn giấu này", "action-block": "cấm không cho người dùng này sá»­a đổi", "action-protect": "thay đổi mức khóa của trang này", @@ -1286,6 +1301,7 @@ "action-userrights-interwiki": "sá»­a đổi quyền của người dùng tại wiki khác", "action-siteadmin": "khóa hoặc mở khóa cÆ¡ sở dữ liệu", "action-sendemail": "gá»­i thÆ° điện tá»­", + "action-editmyoptions": "sá»­a đổi tùy chọn của bạn", "action-editmywatchlist": "sá»­a đổi danh sách theo dõi của mình", "action-viewmywatchlist": "xem danh sách theo dõi của mình", "action-viewmyprivateinfo": "xem thông tin cá nhân của bạn", @@ -1313,6 +1329,50 @@ "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-activefilters": "Bộ lọc hiện hành", + "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-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-noresults": "Không tìm thấy bộ lọc", + "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-filter-editsbyself-label": "Bạn", + "rcfilters-filter-editsbyself-description": "Các sá»­a đổi của bạn.", + "rcfilters-filter-editsbyother-label": "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-filter-userExpLevel-newcomer-label": "Người mới đến", + "rcfilters-filter-userExpLevel-newcomer-description": "ChÆ°a tới 10 sá»­a đổi và 4 ngày hoạt động.", + "rcfilters-filter-userExpLevel-learner-label": "Người đang tập", + "rcfilters-filter-userExpLevel-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-userExpLevel-experienced-label": "Người có kinh nghiệm", + "rcfilters-filter-userExpLevel-experienced-description": "HÆ¡n 30 ngày hoạt động và 500 sá»­a đổi.", + "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.", + "rcfilters-filter-humans-label": "Con người (không phải bot)", + "rcfilters-filter-humans-description": "Các sá»­a đổi của người thật.", + "rcfilters-filtergroup-significance": "Sá»± quan trọng", + "rcfilters-filter-minor-label": "Sá»­a đổi nhỏ", + "rcfilters-filter-minor-description": "Các sá»­a đổi được tác giả đánh dấu là nhỏ.", + "rcfilters-filter-major-label": "Sá»­a đổi không nhỏ", + "rcfilters-filter-major-description": "Các sá»­a đổi không được tác giả đánh dấu là nhỏ.", + "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, thảo luận, miêu tả thể loại, …", + "rcfilters-filter-newpages-label": "Tạo trang", + "rcfilters-filter-newpages-description": "Các sá»­a đổi tạo trang mới.", + "rcfilters-filter-categorization-label": "Thay đổi thể loại", + "rcfilters-filter-categorization-description": "Các tác vụ xếp trang vào thể loại hoặc gỡ trang khỏi thể loại.", + "rcfilters-filter-logactions-label": "Tác vụ được ghi trong nhật trình", + "rcfilters-filter-logactions-description": "Các tác vụ bảo quản, mở tài khoản, xóa trang, tải lên, …", "rcnotefrom": "Dưới đây là {{PLURAL:$5|thay đổi duy nhất|các thay đổi}} từ <strong>$3 $4</strong> (hiển thị tối đa <strong>$1</strong> thay đổi).", "rclistfrom": "Xem các thay đổi từ $2 $3 trở về sau", "rcshowhideminor": "$1 sá»­a đổi nhỏ", @@ -1446,7 +1506,7 @@ "uploaded-setting-handler-svg": "Đã ngăn cản mã SVG đặt thuộc tính “handler” là từ xa/dữ liệu/kịch bản. Tìm thấy <code>$1=\"$2\"</code> trong tập tin SVG được tải lên.", "uploaded-remote-url-svg": "Đã ngăn cản mã SVG đặt thuộc tính style nào đó là URL ngoài máy. Tìm thấy <code>$1=\"$2\"</code> trong tập tin SVG được tải lên.", "uploaded-image-filter-svg": "Đã phát hiện bộ lọc hình ảnh có URL: <code><$1 $2=\"$3\"></code> trong tập tin SVG được tải lên.", - "uploadscriptednamespace": "Tập tin SVG này chứa không gian tên “$1” không được cho phép", + "uploadscriptednamespace": "Tập tin SVG này chứa không gian tên “<nowiki>$1</nowiki>” không được cho phép", "uploadinvalidxml": "Không thể phân tích mã XML trong tập tin tải lên.", "uploadvirus": "Tập tin có virút! Chi tiết: $1", "uploadjava": "Tập tin ZIP này chứa một tập tin Java .class.\nKhông được phép tải lên các tập tin Java, bởi vì chúng có thể vượt qua các hạn chế bảo mật.", @@ -1724,6 +1784,7 @@ "uncategorizedcategories": "Thể loại chÆ°a phân loại", "uncategorizedimages": "Tập tin chÆ°a được phân loại", "uncategorizedtemplates": "Bản mẫu chÆ°a được phân loại", + "uncategorized-categories-exceptionlist": " # Danh sách các thể loại không nên liệt kê trong Special:UncategorizedCategories. Mỗi dòng một thể loại với tiền tố “*”. Các dòng bắt đầu với ký tá»± khác (kể cả khoảng cách) đuợc bỏ qua. Hãy dùng “#” để chú thích.", "unusedcategories": "Thể loại trống", "unusedimages": "Tập tin chÆ°a dùng", "wantedcategories": "Thể loại cần thiết", @@ -1822,7 +1883,10 @@ "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-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:", + "apisandbox-request-json-label": "Yêu cầu dưới dạng JSON:", "apisandbox-request-time": "Thời gian yêu cầu: $1 ms", "apisandbox-results-fixtoken": "Sá»­a lại dấu hiệu và gá»­i lại", "apisandbox-results-fixtoken-fail": "Thất bại khi lấy dấu hiệu “$1”.", @@ -1964,7 +2028,7 @@ "emailccsubject": "Bản sao của thÆ° gá»­i cho $1: $2", "emailsent": "Đã gá»­i", "emailsenttext": "ThÆ° của bạn đã được gá»­i.", - "emailuserfooter": "ThÆ° điện tá»­ này được $1 gá»­i đến $2 thông qua chức năng “{{int:emailuser}}” của {{SITENAME}}.", + "emailuserfooter": "ThÆ° điện tá»­ này được $1 gá»­i đến $2 thông qua chức năng “{{int:emailuser}}” của {{SITENAME}}. Nếu bạn trả lời thÆ° điện tá»­ này, thÆ° của bạn sẽ được gá»­i trá»±c tiếp cho người gÆ°i ban đầu, bằng cách đó cho họ biết địa chỉ thÆ° điện tá»­ của bạn.", "usermessage-summary": "Đang để lại thông điệp hệ thống.", "usermessage-editor": "Trình thông điệp hệ thống", "watchlist": "Danh sách theo dõi", @@ -2079,7 +2143,7 @@ "changecontentmodel-emptymodels-title": "Không có sẵn kiểu nội dung nào", "changecontentmodel-emptymodels-text": "Không thể chuyển đổi nội dung tại [[:$1]] thành nội dung dưới định dạng nào.", "log-name-contentmodel": "Nhật trình thay đổi kiểu nội dung", - "log-description-contentmodel": "Sá»± kiện có liên quan đến kiểu nội dung của trang.", + "log-description-contentmodel": "Đây là danh sách các thay đổi về mô hình nội dung của trang, cÅ©ng nhÆ° các trang được tạo với mô hình nội dung không chuẩn.", "logentry-contentmodel-new": "$1 {{GENDER:$2}}đã tạo trang $3 với kiểu nội dung không mặc định “$5”", "logentry-contentmodel-change": "$1 {{GENDER:$2}}đã thay đổi kiểu nội dung của trang $3 từ “$4” thành “$5”", "logentry-contentmodel-change-revertlink": "lùi lại", @@ -2338,6 +2402,7 @@ "proxyblockreason": "Địa chỉ IP của bạn đã bị cấm vì là proxy mở. Xin hãy liên hệ nhà cung cấp dịch vụ Internet hoặc bộ phận hỗ trợ kỹ thuật của bạn và thông báo với họ về vấn đề an ninh nghiêm trọng này.", "sorbsreason": "Địa chỉ IP của bạn bị liệt kê là một proxy mở trong DNSBL mà {{SITENAME}} đang sá»­ dụng.", "sorbs_create_account_reason": "Địa chỉ chỉ IP của bạn bị liệt kê là một proxy mở trong DNSBL mà {{SITENAME}} đang sá»­ dụng. Bạn không thể mở tài khoản.", + "softblockrangesreason": "Không cho phép đóng góp vô danh từ địa chỉ IP của bạn ($1). Xin hãy đăng nhập.", "xffblockreason": "Đầu đề X-Forwarded-For chứa một địa chỉ IP đã bị cấm, địa chỉ này hoặc của bạn hoặc của một máy chủ proxy bạn đang sá»­ dụng. Lý do cấm ban đầu là: $1", "cant-see-hidden-user": "Thành viên bạn muốn cấm đã bị cấm trước đây hoặc đã bị ẩn đi. Vì bạn không có quyền hideuser, bạn không thể xem hoặc thay đổi mức cấm của thành viên.", "ipbblocked": "Bạn không thể cấm hay bỏ cấm người dùng khác vì chính bạn đang bị cấm.", @@ -2373,6 +2438,8 @@ "cant-move-to-user-page": "Bạn không có quyền di chuyển một trang đến trang cá nhân (ngoại trừ đến trang con của trang cá nhân).", "cant-move-category-page": "Bạn không có quyền di chuyển trang thể loại.", "cant-move-to-category-page": "Bạn không có quyền di chuyển một trang vào không gian tên Thể loại.", + "cant-move-subpages": "Bạn không có quyền di chuyển trang con.", + "namespace-nosubpages": "Không gian tên “$1” không cho phép trang con.", "newtitle": "Tên mới:", "move-watch": "Theo dõi trang này", "movepagebtn": "Di chuyển trang", @@ -2628,6 +2695,7 @@ "pageinfo-length": "Chiều dài của trang (byte)", "pageinfo-article-id": "Mã số trang", "pageinfo-language": "Ngôn ngữ nội dung trang", + "pageinfo-language-change": "thay đổi", "pageinfo-content-model": "Kiểu nội dung trang", "pageinfo-content-model-change": "thay đổi", "pageinfo-robot-policy": "Ghi chỉ mục bởi robot", @@ -3584,6 +3652,7 @@ "logentry-tag-update-logentry": "$1 {{GENDER:$2}}đã cập nhật thẻ của mục nhật trình $5 của trang $3 ({{PLURAL:$7}}đã thêm $6; {{PLURAL:$9}}loại bỏ $8)", "rightsnone": "(không có)", "revdelete-summary": "tóm lược sá»­a đổi", + "rightslogentry-temporary-group": "$1 (tạm thời cho đến $2)", "feedback-adding": "Đang thêm thông tin phản hồi vào trang…", "feedback-back": "Lùi", "feedback-bugcheck": "Tuyệt! Chỉ cần kiểm tra nó chÆ°a được [$1 báo cáo trước đây].", @@ -3608,56 +3677,12 @@ "feedback-useragent": "Tác nhân người dùng:", "searchsuggest-search": "Tìm kiếm {{SITENAME}}", "searchsuggest-containing": "có chứa…", - "api-error-autoblocked": "Địa chỉ IP của bạn bị cấm tá»± động vì nó đã được sá»­ dụng bởi một người dùng bị cấm.", - "api-error-badaccess-groups": "Bạn không được phép tải tập tin lên wiki này.", "api-error-badtoken": "Lỗi nội bộ: Dấu hiệu bị hỏng.", - "api-error-blocked": "Bạn đã bị cấm không được sá»­a đổi.", - "api-error-copyuploaddisabled": "Chức năng tải lên từ URL đã bị tắt trên máy chủ này.", - "api-error-duplicate": "Wiki này đã có {{PLURAL:$1|tập tin|$1 tập tin}} cùng nội dung có tên khác.", - "api-error-duplicate-archive": "{{PLURAL:$1|Một|Các}} tập tin khác cùng nội dung đã tồn tại trên website, nhÆ°ng {{PLURAL:$1|nó|chúng}} đã bị xóa.", - "api-error-empty-file": "Bạn đã gá»­i tập tin rỗng.", "api-error-emptypage": "Không cho phép tạo mới các trang rỗng.", - "api-error-fetchfileerror": "Lỗi nội bộ: Việc tải tập tin bị thất bại.", - "api-error-fileexists-forbidden": "Một tập tin với tên “$1” đã tồn tại; không thể ghi đè nó.", - "api-error-fileexists-shared-forbidden": "Một tập tin với tên “$1” đã tồn tại ở kho tập tin dùng chung; không thể ghi đè nó.", - "api-error-file-too-large": "Bạn đã gá»­i tập tin lớn quá hạn.", - "api-error-filename-tooshort": "Tên tập tin ngắn quá.", - "api-error-filetype-banned": "Kiểu tập tin này đã bị cấm.", - "api-error-filetype-banned-type": "{{PLURAL:$4|Định dạng|Các định dạng}} $1 không được chấp nhận. Chỉ chấp nhận {{PLURAL:$3|loại tập tin|các loại tập tin}} sau: $2.", - "api-error-filetype-missing": "Tên tập tin bị thiếu phần mở rộng.", - "api-error-hookaborted": "Sá»­a đổi của bạn bị hook phần mở rộng hủy bỏ.", - "api-error-http": "Lỗi nội bộ: Không thể kết nối với dịch vụ.", - "api-error-illegal-filename": "Không được đặt tên tập tin này.", - "api-error-internal-error": "Lỗi nội bộ: Việc xá»­ lý tập tin tải lên của bạn trên wiki bị thất bại.", - "api-error-invalid-file-key": "Lỗi nội bộ: Không tìm thấy tập tin trong kho tạm.", - "api-error-missingparam": "Lỗi nội bộ: Yêu cầu thiếu tham số.", - "api-error-missingresult": "Lỗi nội bộ: Không rõ việc sao chép có thành công.", - "api-error-mustbeloggedin": "Bạn phải đăng nhập để tải lên tập tin.", - "api-error-mustbeposted": "Phần mềm này có lỗi: nó không sá»­ dụng phÆ°Æ¡ng pháp HTTP chính xác.", - "api-error-noimageinfo": "Đã tải lên tập tin thành công, nhÆ°ng máy chủ không cung cấp thông tin về tập tin.", - "api-error-nomodule": "Lỗi nội bộ: Mô đun tải lên không được định rõ.", - "api-error-ok-but-empty": "Lỗi nội bộ: Máy chủ không phản hồi.", - "api-error-overwrite": "Không được ghi đè một tập tin đã tồn tại.", - "api-error-ratelimited": "Bạn cố tải lên nhiều tập tin trong một thời gian ngắn vượt quá hạn chế của wiki này.", - "api-error-stashfailed": "Lỗi nội bộ: Máy chủ bị thất bại trong việc lÆ°u giữ tập tin tạm.", "api-error-publishfailed": "Lỗi nội bộ: Máy chủ bị thất bại trong việc xuất bản tập tin tạm.", - "api-error-stasherror": "Đã xuất hiện lỗi khi tải tập tin lên hàng đợi.", - "api-error-stashedfilenotfound": "Không tìm thấy tập tin khi thá»­ tải nó lên từ hàng đợi.", - "api-error-stashpathinvalid": "Đường dẫn mong đợi đến tập tin đợi tải lên là không hợp lệ.", - "api-error-stashfilestorage": "Đã xuất hiện lỗi khi tải tập tin lên từ hàng đợi.", - "api-error-stashzerolength": "Máy chủ không thể lÆ°u tập tin vào hàng đợi vì nó không có nội dung.", - "api-error-stashnotloggedin": "Bạn phải đăng nhập để lÆ°u tập tin vào hàng đợi tải lên.", - "api-error-stashwrongowner": "Không thể truy cập một tập tin không phải của bạn trong hàng đợi tải lên.", - "api-error-stashnosuchfilekey": "Bạn không thể truy cập chìa khóa tập tin đợi tải lên vì chìa khóa này không tồn tại.", - "api-error-timeout": "Máy chủ không đáp ứng trong thời gian dá»± kiến.", - "api-error-unclassified": "Gặp lỗi không ngờ", - "api-error-unknown-code": "Lỗi không rõ: “$1”", - "api-error-unknown-error": "Lỗi nội bộ: Việc tải lên tập tin của bạn bị thất bại vì lý do không rõ.", - "api-error-unknown-warning": "Cảnh báo không rõ: $1", + "api-error-stashfailed": "Lỗi nội bộ: Máy chủ bị thất bại trong việc lÆ°u giữ tập tin tạm.", + "api-error-unknown-warning": "Cảnh báo không rõ: “$1”.", "api-error-unknownerror": "Lỗi không rõ: “$1”.", - "api-error-uploaddisabled": "Chức năng tải lên đã bị tắt trên wiki này.", - "api-error-verification-error": "Tập tin này có thể bị hỏng hoặc có phần mở rộng sai.", - "api-error-was-deleted": "Một tập tin cùng tên này đã được tải lên và bị xóa về sau.", "duration-seconds": "$1 giây", "duration-minutes": "$1 phút", "duration-hours": "$1 giờ", @@ -3702,7 +3727,12 @@ "pagelang-language": "Ngôn ngữ", "pagelang-use-default": "Sá»­ dụng ngôn ngữ mặc định", "pagelang-select-lang": "Chọn ngôn ngữ", + "pagelang-reason": "Lý do", "pagelang-submit": "Áp dụng", + "pagelang-nonexistent-page": "Trang $1 không tồn tại.", + "pagelang-unchanged-language": "Trang $1 đã có ngôn ngữ là $2.", + "pagelang-unchanged-language-default": "Trang $1 đã có ngôn ngữ là ngôn ngữ nội dung mặc định của wiki.", + "pagelang-db-failed": "CÆ¡ sở dữ liệu không thể thay đổi ngôn ngữ của trang.", "right-pagelang": "Thay đổi ngôn ngữ của trang", "action-pagelang": "thay đổi ngôn ngữ của trang", "log-name-pagelang": "Nhật trình thay đổi ngôn ngữ", @@ -3774,6 +3804,7 @@ "mw-widgets-titleinput-description-new-page": "trang này chÆ°a tồn tại", "mw-widgets-titleinput-description-redirect": "đổi hướng đến $1", "mw-widgets-categoryselector-add-category-placeholder": "Thêm thể loại…", + "mw-widgets-usersmultiselect-placeholder": "Thêm nữa…", "sessionmanager-tie": "Không thể kết hợp nhiều yêu cầu xác thá»±c loại: $1.", "sessionprovider-generic": "phiên $1", "sessionprovider-mediawiki-session-cookiesessionprovider": "phiên dá»±a trên cookie", @@ -3905,5 +3936,7 @@ "usercssispublic": "Xin lÆ°u ý: Các trang con CSS không nên chứa dữ liệu bí mật, vì những người dùng khác có thể xem các trang này.", "restrictionsfield-badip": "Địa chỉ hoặc dải IP không hợp lệ: $1.", "restrictionsfield-label": "Các dải IP được cho phép:", - "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<br><code>0.0.0.0/0</code><br><code>::/0</code>" + "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:<pre>0.0.0.0/0\n::/0</pre>", + "revid": "phiên bản $1", + "pageid": "số trang $1" } diff --git a/languages/i18n/war.json b/languages/i18n/war.json index 9a4f66efb1..172f08bb7c 100644 --- a/languages/i18n/war.json +++ b/languages/i18n/war.json @@ -303,7 +303,7 @@ "nstab-template": "Batakan", "nstab-help": "Pakli hin pabulig", "nstab-category": "Kaarangay", - "mainpage-nstab": "Panguna nga pakli", + "mainpage-nstab": "Syahan nga Pakli", "nosuchaction": "Waray sugad nga buhat", "nosuchactiontext": "An buhat nga gin-ispisipikar han URL diri puyde.\nBangin la, nagsayop ka pagmakinilya han URL, o sinmunod hin sayop nga sumpay.\nBangin liwat ini usa nga bug dida han software nga ginagamit han {{SITENAME}}.", "nosuchspecialpage": "Waray sugad nga pinaurog nga pakli", @@ -553,8 +553,6 @@ "passwordreset-emaildisabled": "Mga mga higamit ha email in waray pinaandar hini nga wiki.", "passwordreset-username": "Agnay hiton gumaramit:", "passwordreset-domain": "Dominyo:", - "passwordreset-capture": "Kikitaon mo an resulta nga e-mail?", - "passwordreset-capture-help": "Kun imo igtsek ini nga kahon, an email (lakip an temporaryo nga tigaman-panakob) in igpapakita ha imo labot la han ginpadangat ha gumaramit.", "passwordreset-email": "E-mail adres:", "passwordreset-emailtitle": "Mga detalye han akawnt ha {{SITENAME}}", "passwordreset-emailtext-ip": "Mayda gumaramit (bangin hi ikaw, tikang han IP adres nga $1) nga naghangyo hin reset han imo tigaman-pansulod han {{SITENAME}} ($4). An nasunod nga gumaramit {{PLURAL:$3|nga akawnt|nga mga akawnt}} nahanungod hini nga email nga adres: \n\n$2\n\n{{PLURAL:$3|Iní nga temporaryo nga tigaman-pansulod|Iní nga mga temporaryo nga tigaman-pansulod}} ma-waray bali hin {{PLURAL:$5|usa ka adlaw|$5 nga mga adlaw}}.\nAngay ka sumakob ngan pumílì hin bag-o nga tigaman-pansulod ha yanâ. Kun mayda lain nga naghatag hini nga hangyo, o kun nahinumdoman mo an imo orihinal nga tigaman-pansulod, ngan nadírì ka na pagbalyo hiní, puyde mo pasagdan ini nga sumat ngan magpadayon hin paggamit han imo daan nga tigaman-pansulod.", @@ -796,7 +794,7 @@ "searchprofile-advanced-tooltip": "Pamilnga ha mga nabatasan nga ngaran-lat'ang", "search-result-size": "$1 ({{PLURAL:$2|1 nga pulong|$2 nga mga pulong}})", "search-result-category-size": "{{PLURAL:$1|1 nga api|$1 nga mga api}} ({{PLURAL:$2|1 nga ubos-nga-kaarangay|$2 nga mga ubos-nga-kaarangay}}, {{PLURAL:$3| 1 nga fayl|$3 nga mga fayl}})", - "search-redirect": "(redirekta $1)", + "search-redirect": "(Ginredirekta tikang ha $1)", "search-section": "(bahin $1)", "search-category": "(kaarangay $1)", "search-suggest": "Buot sidngon mo ba: $1", @@ -841,8 +839,6 @@ "saveprefs": "Igtipig", "restoreprefs": "Igbalik an ngatanan ngada nga aada-nga-daan nga settings (ha ngatanan nga mga bahin)", "prefs-editing": "Ginliliwat", - "rows": "Mga rumbay pahigda:", - "columns": "Mga rumbay patindog:", "searchresultshead": "Bilnga", "stub-threshold-sample-link": "pananglitan", "stub-threshold-disabled": "Waray ginpagana", @@ -924,10 +920,8 @@ "userrights-reason": "Katadungan:", "userrights-no-interwiki": "\nDiri ka gintutugotan pagliwat han mga katungod han gumaramit ha iba nga mga wiki.", "userrights-nodatabase": "Waray kaaagii an Database $1 o diri ini aada ha lokal.", - "userrights-notallowed": "Waray nim pagtugot hin pagdugang o pagtanggal hin mga katungod han gumaramit.", "userrights-changeable-col": "Mga hugpo nga puydi mo labtan", "userrights-unchangeable-col": "Mga hugpo nga diri mo puydi labtan", - "userrights-removed-self": "Imo gintanggal an imo kalugaringon mga katungod. Tungod hito, diri kana makaka-access hinin nga pakli.", "group": "Hugpo:", "group-user": "Mga gumaramit", "group-autoconfirmed": "Mga gumaramit nga lugaring nakokonpirma", @@ -992,7 +986,6 @@ "right-userrights-interwiki": "Igliwat an mga katungod han gumaramit han mga gumaramit ha iba nga mga wiki", "right-siteadmin": "Igtrangka ngan igrangka an database", "right-sendemail": "Padad-i hin e-mail ngada ha iba nga mga gumaramit", - "right-passwordreset": "Pakit-a an mga password reset email", "right-deletechangetags": "Igpara an [[Special:Tags|tags]] tikang han database", "grant-generic": "mga katungod nga katitirok han \"$1\"", "grant-group-page-interaction": "Pakig-interact han mga pakli", @@ -1636,12 +1629,12 @@ "whatlinkshere-links": "← mga sumpay", "whatlinkshere-hideredirs": "$1 nga mga redirek", "whatlinkshere-hidetrans": "$1 nga mga transklusyon", - "whatlinkshere-hidelinks": "$1 an mga sumpay", + "whatlinkshere-hidelinks": "$1 nga mga sumpay", "whatlinkshere-hideimages": "$1 an mga sumpay han paypay", "whatlinkshere-filters": "Mga panara", "whatlinkshere-submit": "Kadto-a", "block": "Pugngi an gumaramit", - "blockip": "Pugngi an{{GENDER:$1|gumaramit}}", + "blockip": "Pugngi an {{GENDER:$1|gumaramit}}", "blockip-legend": "Pugngi an gumaramit", "ipaddressorusername": "IP address o agnay-hit-gumaramit:", "ipbexpiry": "Matitima an dulot:", @@ -2291,30 +2284,13 @@ "feedback-message": "Mensahe:", "feedback-subject": "Himangrawon:", "feedback-thanks-title": "Salamat!", - "searchsuggest-search": "Pamilnga", + "searchsuggest-search": "Bilnga ha {{SITENAME}}", "searchsuggest-containing": "nagsusulod. . .", - "api-error-badaccess-groups": "Diri ka gintutugotan pagkarga paigbaw ha dinhi nga wiki.", "api-error-badtoken": "Sayop ha sulod: Maraot nga token.", - "api-error-copyuploaddisabled": "Pagkarga paigbaw pinaagi han URL in diri mahihimo ha dinhi nga serbidor.", - "api-error-empty-file": "An paypay nga isinumite nimo in waray sulod.", "api-error-emptypage": "Naghihimo hin bag-o, diri gintutugotan an waray sulod nga mga pakli.", - "api-error-filename-tooshort": "An ngaran han paypay in halipot hin duro.", - "api-error-filetype-banned": "Diri gintutugotan ini nga klase nga paypay.", - "api-error-filetype-missing": "Ini nga ngaran han paypay in nawawad-an hin ekstensyon.", - "api-error-http": "Sayop ha sulod: Diri nakakasumpay ha serbidor.", - "api-error-illegal-filename": "Diri gintutugotan an ngaran-han-paypay.", - "api-error-mustbeloggedin": "Diri ka nakalog-in para makapagkarga-pasaka hin mga paypay.", - "api-error-mustbeposted": "Sayop ha sulod: Iton paalayon in nagkikinahanglan hin HTTP POST.", - "api-error-overwrite": "Pagsasapaw in aada nga paypay in diri gintutugotan.", "api-error-stashfailed": "Sayop ha sulod: An serbidor in waray makatipig han temporaryo nga paypay.", - "api-error-timeout": "An serbidor in diri nabaton ha sulod han ginaasahan nga oras.", - "api-error-unclassified": "Nahitabo an waray kasabti nga sayop.", - "api-error-unknown-code": "Waray kasabti nga sayop: \"$1\".", - "api-error-unknown-error": "Sayop ha sulod: May-ada nagkasayop han pagkakarga paigbaw han imo paypay.", "api-error-unknown-warning": "Waray kasabti nga pahimatngon: \"$1\".", "api-error-unknownerror": "Waray kasabti nga sayop: \"$1\".", - "api-error-uploaddisabled": "Diri ginpapakarga paigbaw ha dinhi nga wiki.", - "api-error-verification-error": "Ini nga paypay in bangin naraot, o may-ada iba nga ekstensyon.", "duration-seconds": "$1 {{PLURAL:$1|segundo|mga segundo}}", "duration-minutes": "$1 {{PLURAL:$1|minuto|mga minuto}}", "duration-hours": "$1 {{PLURAL:$1|oras|mga oras}}", diff --git a/languages/i18n/xmf.json b/languages/i18n/xmf.json index 51150e4401..8093c68615 100644 --- a/languages/i18n/xmf.json +++ b/languages/i18n/xmf.json @@ -16,7 +16,8 @@ "Silovan", "David1010", "Macofe", - "Nemo bis" + "Nemo bis", + "Otogi" ] }, "tog-underline": "რცხუეფიშ ათოღაზუა:", @@ -362,7 +363,7 @@ "viewyourtext": "თქვა შეილებუნა ქოძირათ '''თქვანი რედაქტირაფეფიშ''' დაჭყაფური ტექსტი თე ხასჷლას დო გეჭოფათ თიშ ანგი.", "protectedinterface": "ეს გვერდი წარმოადგენს ტექსტურ ინტერფეისს პროგრამული უზრუნველყოფისათვის და დაცულია ვანდალიზმის აღკვეთის მიზნით.", "editinginterface": "<strong>ყურადღება:</strong> თქვენ არედაქტირებთ გვერდს, რომელიც პროგრამის ინტერფეისის ტექსტს შეიცავს. \nამ გვერდზე განხორციელებული რედაქტირება გამოიწვევს ამ ვიკის სხვა მომხმარებელთა სამუშაო ინტერფეისის შეცვლასაც.", - "translateinterface": "თარგმანების ყველა ვიკიში დასამატებლად ან შესაცვლელად, გთხოვთ გამოიყენოთ მედიავიკებისლოკალიზაციის პროექტი [https://translatewiki.net/ translatewiki.net].", + "translateinterface": "თარგმანების ყველა ვიკიში დასამატებლად ან შესაცვლელად, გთხოვთ გამოიყენოთ მედიავიკების ლოკალიზაციის პროექტი [https://translatewiki.net/ translatewiki.net].", "cascadeprotected": "ეს გვერდი რედაქტირებისგან დაცულია, რადგან იგი ჩართულია შემდეგ {{PLURAL:$1|გვერდში, რომლის |გვერდებში, რომელთა}} დასაცავადაც ჩართულია პარამეტრი \"იერარქიული\":\n$2", "namespaceprotected": "თქვენ არ გაქვთ '''$1''' სახელთა სივრცეში გვერდების რედაქტირების უფლება.", "customcssprotected": "თქვენ არ გაქვთ ამ CSS გვერდის რედაქტირების უფლება, ვინაიდან ის სხვა მომხმარებლის პირად კონფიგურაციას შეიცავს.", @@ -517,8 +518,6 @@ "passwordreset-emaildisabled": "ამ ვიკიში ელ.ფოსტის ფუნქციები გამორთულია.", "passwordreset-username": "მახვარებუშ ჯოხო:", "passwordreset-domain": "დომენი:", - "passwordreset-capture": "გამოსული ელ-ფოსტის ხილვა?", - "passwordreset-capture-help": "თუ მონიშნავთ ამ უჯრას, მაშინ თქვენ შეგეძლებათ მომხმარებლისათვის გაგზავნილი ელ.ფოსტის ნახვა (დროებითი პაროლით).", "passwordreset-email": "ელ. ფოსტის მისამართი:", "passwordreset-emailtitle": "ანგარიშის მონაცემები {{SITENAME}}-თვის", "passwordreset-emailtext-ip": "ვიღაცამ (შესაძლოა თქვენ, ამ IP-მისამართიდან $1) მოითხოვა თქვენი \nპაროლის თავიდან დაყენება საიტისათვის {{SITENAME}} ($4).\n{{PLURAL:$3|შემდეგი ანგარიში მიბმულია|შემდეგი ანგარიშები მიბმულია}} ამ ელ.ფოსტის მისამართზე:\n\n$2\n\n{{PLURAL:$3|ეს დროებითი პაროლი|ეს დროებითი პაროლები}} იმოქმედებს {{PLURAL:$5|ერთი დღე|$5 დღე}}.\nთქვენ უნდა შეხვიდეთ სისტემაში და აირჩიოთ ახალი პაროლი.\nთუ თქვენ არ გაგიკეთებიათ აღნიშნული მოთხოვნა, ან გაიხსენეთ თქვენი პაროლი\nდა აღარ გსურთ მისი შეცვლა, მაშინ შეგიძლიათ იგნორირება გაუკეთოთ ამ შეტყობინებას\nდა გააგრძელოთ თქვენი ძველი პაროლის გამოყენება.", @@ -878,8 +877,6 @@ "saveprefs": "შენახვა", "restoreprefs": "ყველა საწყისი პარამეტრის აღდგენა (ყველა სექციაში)", "prefs-editing": "რედაქტირება", - "rows": "რიგები:", - "columns": "სვეტები", "searchresultshead": "გორუა", "stub-threshold": "გაფორმების გასაუმჯობესებლად <a href=\"#\" class=\"stub\"> მოცემულია ესკიზების ბმულები</a> (ბაიტებში):", "stub-threshold-disabled": "გათიშულია", @@ -968,12 +965,9 @@ "userrights-reason": "სამანჯელი:", "userrights-no-interwiki": "თქვენ არ გაქვთ მომხმარებლის უფლებების რედაქტირების უფლება სხვა ვიკი-ებში.", "userrights-nodatabase": "მონაცემთა ბაზა $1 არ არსებობს, ან არ არის ლოკალური.", - "userrights-nologin": "თქვენ უნდა [[Special:UserLogin|წარადგინოთ თავი სისტემისადმი]] ადმინისისტრატორის ანგარიშით იმისთვის, რომ გასცეთ მომხმარებელთა უფლებები.", - "userrights-notallowed": "თქვენ არ გაქვთ მომხმარებელთა უფლებების შეცვლის უფლება.", "userrights-changeable-col": "ჯგუფები, რომლებიც შეგიძლიათ შეცვალოთ", "userrights-unchangeable-col": "ჯგუფები, რომლებიც არ შეგიძლიათ შეცვალოთ", "userrights-conflict": "მომხმარებელთა უფლებების კონფლიქტი! გთხოვთ ხელმეორედ შეინახოთ თქვენი ცვლილებები.", - "userrights-removed-self": "თქვენ წარმატებით წაშალეთ საკუთარი უფლება. შესაბამისად, თქვენ აღარ გექნებათ ამ გვერდთან წვდომის საშუალება", "group": "ჯგუფი:", "group-user": "მახვარებუეფი", "group-autoconfirmed": "ავტომატურად დადასტურებული მომხმარებლები", @@ -1063,7 +1057,6 @@ "right-siteadmin": "მონაცემთა ბაზის დაბლოკვა და განბლოკვა", "right-override-export-depth": "გვერდების ექსპორტირება, დაკავშირებული გვერდების ჩათვლით 5-მდე სიიღრმით", "right-sendemail": "გაგუგზავნე ელექტრონული ფოსტა სხვა მომხმარებლებს", - "right-passwordreset": "ელ.ფოსტის ნახვა პაროლის შეცვლით", "right-managechangetags": "[[Special:Tags|tags]] შექმნა და წაშლა მონაცემთა ბაზიდან", "right-applychangetags": "[[Special:Tags|tags]] მიღება თქვენ ცვლილებებთან ერთად", "right-changetags": "თვითნებური [[Special:Tags|tags]] დამატება ან წაშლა ცალკეულ ცვლილებებსა და ჟურნალის ჩანაწერებში", @@ -1230,7 +1223,7 @@ "uploaddisabledtext": "ფაილების ატვირთვა შეუძლებელია.", "php-uploaddisabledtext": "ფაილების ატვირთვა შეჩერებულია PHP-ით. გთხოვთ შეამოწმოთ file_uploads-ის მნიშვნელობა.", "uploadscripted": "ფაილი შეიცავს HTML-კოდს, ან სკრიპტს, რომელიც ბროუზერმა შეიძლება არასწორედ გაანალიზოს.", - "uploadscriptednamespace": "ეს SVG ფაილი შეიცავს სახელთა არაკორექტულ სივრცეს \"$1\".", + "uploadscriptednamespace": "ეს SVG ფაილი შეიცავს სახელთა არაკორექტულ სივრცეს \"<nowiki>$1</nowiki>\".", "uploadinvalidxml": "XML ჩატვირთულ ფაილში არ შეიძლება იყოს ანალიზირებული.", "uploadvirus": "ფაილი ვირუსს შეიცავს! \nდეტალები: $1", "uploadjava": "ეს არის ZIP-ფაილი, რომელიც Java .class ფაილს შეიცავს.\nჯავა-ფაილების ატვირთვა დაუშვებელია, ვინაიდან მათ შესაძლოა შეზღუდონ უსაფრთხოება.", diff --git a/languages/i18n/yi.json b/languages/i18n/yi.json index 91a3ad895b..b4fd6800ac 100644 --- a/languages/i18n/yi.json +++ b/languages/i18n/yi.json @@ -185,6 +185,7 @@ "searcharticle": "גיין", "history": "בלאט היסטאריע", "history_short": "היסטאָריע", + "history_small": "היסטאריע", "updatedmarker": "דערהיינטיגט זינט מיין לעצטע וויזיט", "printableversion": "דרוק ווערסיע", "permalink": "שטענדיגער לינק", @@ -447,6 +448,7 @@ "createacct-email-ph": "קלאַפט ארײַן אײַער בליצפּאָסט אַדרעס", "createacct-another-email-ph": "אַרײַנגעבן בליצפּאָסט אַדרעס", "createaccountmail": "ניצן א פראוויזאריש פאסווארט און שיקן צום געצייכנטן ×¢-פאסט אדרעס", + "createaccountmail-help": "קען ווערן באניצט צו שאפֿן קאנטע פֿאר א צווייטן אן צו דערגיין דאס פאסווארט.", "createacct-realname": "עכטער נאמען (אפציאנאל)", "createaccountreason": "אורזאַך:", "createacct-reason": "אורזאך", @@ -631,8 +633,8 @@ "selfredirect": "<strong>ווארענונג:</strong> איר טוט ווײַטערפירן דעם בלאט צו זיך אליין.\nאיר העט אפשר ספעציפיצירט א פאלשן ווײַטערפירונג־ציל אדער איר רעדאקטירט דעם פאלשן בלאט.\nטאמער קליקט איר נאכאמאל \"{{int:savearticle}}\", וועט מען טאקע שאפן די ווײַטערפירונג.", "missingcommenttext": "ביטע שטעלט אריין א אנמערקונג פון אונטן.", "missingcommentheader": "'''דערמאַנונג:''' איר האט נישט אַרײַנגעשטעלט א טעמע פאר דער אנמערקונג. אויב וועט איר דרוקן נאכאמאל אויפן \"{{int:savearticle}}\", וועט אייער ענדערונג ווערן אפגעהיטן אן דעם.", - "summary-preview": "סך-הכל פאראויסדיגע ווייזונג:", - "subject-preview": "טעמע פאראויסדיגע ווייזונג:", + "summary-preview": "פאראויסקוק פֿון רעדאקטירונג־רעזומע:", + "subject-preview": " פאראויסקוק פֿון טעמע:", "previewerrortext": "א פעלער האט פאסירט ביים פרובירן פארויסקוקן אײַערע ענדערונגען.", "blockedtitle": "באַניצער איז בלאקירט", "blockedtext": "'''אייער באניצער נאמען אדער IP אדרעס איז געווארן בלאקירט.'''\n\nדעם בלאק האט $1 געמאכט פון וועגן ''$2''.\n\n* בלאקירן הייבט אן: $8\n* בלאקירן גייט אויס: $6\n* בלאק מכוון צו: $7\n\nאיר קענט זיך ווענדן צו $1 אדער צו אנדערע [[{{MediaWiki:Grouppage-sysop}}|אדמיניסטראטארן]] אדורכצורעדן דעם בלאק.\n\nגיט אכט אז איר קענט נישט ניצן די \"שיקט דעם באניצער א ×¢-פאסט\" אייגנקייט אויב האט איר נישט איינגעשטעלט אין אייערע [[Special:Preferences|קונטע פרעפערענצן]] א גילטיקן בליצפאסט אדרעסדאס אדער איר זענט בלאקירט פון שיקן בליצפאסט.\n\nאייער IP אדרעס איז $3, און דער בלאק האט נומער #$5. ביטע שיקט איינעם פון די צוויי (אדער זיי ביידע) ווען איר ווענדט זיך צו די אדמיניסטראטורן.", @@ -732,6 +734,7 @@ "content-model-css": "CSS", "content-json-empty-object": "ליידיגער אביעקט", "content-json-empty-array": "ליידיגער אריי", + "deprecated-self-close-category": "בלעטער וואס ניצן אומגילטיגע אליין־פֿאַרמאַכטע HTML טאַגן", "duplicate-args-warning": "<strong>ווארענונג:</strong> [[:$1]] רופט [[:$2]] מיט מער ווי איין ווערט פארן פאראמעטער \"$3\". נאר דעם לעצטן ווערט וועט מען ניצן.", "duplicate-args-category": "בלעטער וואס ניצן געטאפלטע ארגומענטן אין א מוסטער־רוף", "duplicate-args-category-desc": "דער בלאט אנטהאלט מוסטער־אויפרופן וואס ניצן דופליקאטן פון ארגומענטן, ווי למשל <code><nowiki>{{foo|bar=1|bar=2}}</nowiki></code> or <code><nowiki>{{foo|bar|1=baz}}</nowiki></code>.", @@ -928,6 +931,7 @@ "search-interwiki-caption": "שוועסטער פראיעקטן", "search-interwiki-default": "רעזולטאטן פון $1:", "search-interwiki-more": "(נאך)", + "search-interwiki-more-results": "נאך רעזולטאטן", "search-relatedarticle": "פארבינדן", "searchrelated": "פארבינדן", "searchall": "אלץ", @@ -975,8 +979,6 @@ "saveprefs": "אויפֿהיטן", "restoreprefs": "צוריקשטעלן אלע גרונטלעכע שטעלונגען (אין אלע אפטיילן)", "prefs-editing": "באַאַרבעטן", - "rows": "שורות:", - "columns": "עמודים:", "searchresultshead": "זוכן", "stub-threshold": "שוועל פֿאַר שטומף לינק פֿאָרמאַטירונג ($1):", "stub-threshold-sample-link": "ביישפיל", @@ -1017,6 +1019,7 @@ "youremail": "×¢-פאסט:", "username": "{{GENDER:$1|באַניצער־נאָמען}}:", "prefs-memberingroups": "{{GENDER:$2|מיטגליד}} אין {{PLURAL:$1|גרופע|גרופעס}}:", + "group-membership-link-with-expiry": "$1 (ביז $2)", "prefs-registration": "אײַנשרײַבן צײַט:", "yourrealname": "עכטער נאָמען:", "yourlanguage": "שפּראַך:", @@ -1060,17 +1063,23 @@ "userrights-user-editname": "לייגט אריין א באַניצער-נאמען:", "editusergroup": "לאדן באַניצער גרופּעס", "editinguser": "ענדערן באַניצער רעכטן פון {{GENDER:$1|באַניצער|באַניצערין}} <strong>[[User:$1|$1]]</strong> $2", - "userrights-editusergroup": "רעדאַקטירן באַניצער גרופעס", - "userrights-viewusergroup": "באַקוקן באַניצער גרופעס", + "userrights-editusergroup": "רעדאַקטירן {{GENDER:$1|באַניצער|באַניצערין}} גרופעס", + "userrights-viewusergroup": "באַקוקן {{GENDER:$1|באַניצער|באַניצערין}} גרופעס", "saveusergroups": "אויפֿהיטן {{GENDER:$1|באַניצער}} גרופעס", "userrights-groupsmember": "מיטגליד פון:", "userrights-groupsmember-auto": "אויטאמטישער מיטגליד פֿון:", - "userrights-groups-help": "איר מעגט ענדערן די גרופעס צו וועמען דער באַניצער געהערט:\n*א מאַרקירט קעסטל באַדײַט אָז דער באַניצער איז א מיטגליד אין דער גרופע.\n* אַן אוממאַרקירט קעסטל באַדײַט אָז דער באַניצער איז נישט קיין מיטגליד אין דער גרופע.\n* א * ווײַזט אַז איר קענט נישט אַראפנעמען די גרופע נאָך דעם וואָט איר האט זי צוגעלייגט, אדער פֿאַרקערט.", + "userrights-groups-help": "איר מעגט ענדערן די גרופעס צו וועמען {{GENDER:$1|דער באַניצער|די באַניצערין}} געהערט:\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", + "userrights-expiry-othertime": "אַנדער צײט:", + "userrights-expiry-options": "1 טאג:1 day,1 וואך:1 week,1 Monat:1 month,3 מאנאט:3 months,6 מאנאטן:6 months,1 יאר:1 year", "userrights-conflict": "קאנפֿליקט פון באניצער־רעכטן ענדערונגען! זייט אזוי גוט רעצענזירן און באשטעטיקן אײַערע ענדערונגען.", "group": "גרופע:", "group-user": "באניצערס", @@ -1243,6 +1252,10 @@ "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (זעט אויך [[Special:NewPages|די רשימה פון נייע בלעטער]])", "recentchanges-legend-plusminus": "(''±123'')", "recentchanges-submit": "ווייזן", + "rcfilters-invalid-filter": "אומגילטיגער פֿילטער", + "rcfilters-filterlist-title": "פֿילטערס", + "rcfilters-filterlist-noresults": "קיין פֿילטערס נישט געטראפֿן", + "rcfilters-filter-bots-label": "באט", "rcnotefrom": "פֿאלגנד {{PLURAL:$5|איז די ענדערונג| זענען די ענדערונגען}} זײַט <strong>$3, $4</strong> (ביז <strong>$1</strong>).", "rclistfrom": "װײַזן נײַע ענדערונגען פֿון $3 $2", "rcshowhideminor": "$1 מינערדיגע ענדערונגען", @@ -1360,7 +1373,7 @@ "uploaddisabledtext": "אַרויפֿלאָדן טעקעס נישט דערמעגלעכט.", "php-uploaddisabledtext": "אַרויפֿלאָדן טעקעס נישט דערמעגלעכט אין PHP.\nזייט אזוי גוט בודק זיין די file_uploads שטעלונג.", "uploadscripted": "די טעקע האט א סקריפט אדער HTML קאד וואס קען ווערן פֿאלש אויסגעטייטשט דורך א בלעטערער", - "uploadscriptednamespace": "די SVG טעקע אנטהאלט אן אומלעגאלן נאמענטייל \"$1\"", + "uploadscriptednamespace": "די SVG טעקע אנטהאלט אן אומלעגאלן נאמענטייל \"<nowiki>$1</nowiki>\"", "uploadinvalidxml": "דאס XML אין דער ארויפגעלאדענער טעקע קען מען נישט פארזירן.", "uploadvirus": "די טעקע האָט אַ ווירוס! פרטים: <div dir=\"rtl\">$1</div>", "upload-source": "מקור טעקע", @@ -1571,7 +1584,7 @@ "pageswithprop-text": "דער בלאט האלט א רשימה פון בלעטער וואס ניצן א געוויסע בלאט אייגנשאפט.", "pageswithprop-prop": "אייגנשאפט נאמען:", "pageswithprop-submit": "גייט", - "pageswithprop-prophidden-long": "לא גער טעקסט אייגנשאפט־ווערט באהאלטן ($1)", + "pageswithprop-prophidden-long": "לאנגער טעקסט אייגנשאפט־ווערט באהאלטן ($1)", "pageswithprop-prophidden-binary": "בינארישער אייגנשאפט־ווערט באהאלטן ($1)", "doubleredirects": "געטאפלטע ווײַטערפֿירונגען", "doubleredirectstext": "דער בלאט רעכנט אויס בלעטער וואס פירן ווייטער צו אנדערע ווייטערפירן בלעטער.\nיעדע שורה אנטהאלט א לינק צום ערשטן און צווייטן ווייטערפירונג, ווי אויך די ציל פון דער צווייטער ווייטערפירונג, וואס רוב מאל געפינט זיך די ריכטיגע ציל וואו די ערשטע ווייטערפירונג זאל ווייזן.\n<del>אויסגעשטראכענע</del> טעמעס זענען שוין געלייזט.", @@ -1781,7 +1794,7 @@ "emailccsubject": "קאפיע פון אײַער מעלדונג צו $1: $2", "emailsent": "×¢-פאסט געשיקט", "emailsenttext": "אײַער אי-בריוו איז געשיקט געווארן.", - "emailuserfooter": "דער בליצבריוו איז {{GENDER:$1|געשיקט געווארן}} דורך $1 צו {{GENDER:$2|$2}} מיט דער \"{{int:emailuser}}\" פֿונקציע בײ {{SITENAME}}. {{GENDER:$2|אייער}} ע־פאסט וועט מען שיקן גראד be sent directly to the {{GENDER:$1|צום אריגינעלן אפשיקער|צו דער אריגינעלער אפשיקערין}}, וואס וועט אויפדעקן {{GENDER:$2|אייער}} ע־פאסט אדרעס צו {{GENDER:$1|אים|איר}}.", + "emailuserfooter": "דער בליצבריוו איז {{GENDER:$1|געשיקט געווארן}} דורך $1 צו {{GENDER:$2|$2}} מיט דער \"{{int:emailuser}}\" פֿונקציע בײ {{SITENAME}}. אַז {{GENDER:$2|איר}} װעט ענטפֿערן דעם ע־פאסט, וועט מען שיקן {{GENDER:$1|אייער}} ע־פאסט גראד {{GENDER:$1|צום אריגינעלן אפשיקער|צו דער אריגינעלער אפשיקערין}}, וואס וועט אויפדעקן {{GENDER:$2|אייער}} ע־פאסט אדרעס צו {{GENDER:$1|אים|איר}}.", "usermessage-summary": "איבערלאזן סיסטעם אָנזאָג", "usermessage-editor": "סיסטעם שליח", "usermessage-template": "MediaWiki:באניצער־מעלדונג", @@ -3079,44 +3092,12 @@ "feedback-thanks": "ייש\"כ! אײַער פֿידבעק איז געווארן ארויפגעלעגט צום בלאט \"[$2 $1]\".", "searchsuggest-search": "זוכן {{SITENAME}}", "searchsuggest-containing": "כולל…", - "api-error-badaccess-groups": "איר האט נישט קיין רעכטן אַרויפֿלאָדן טעקעס אויף דער וויקי.", "api-error-badtoken": "אינערלעכער גרײַז: סימן טויג נישט.", - "api-error-copyuploaddisabled": "אַרויפֿלאָדן דורך URL איז אומאַקטיווירט אויף דעם סערווירער.", - "api-error-duplicate": "שוין דאָ אין דער וויקי {{PLURAL:$1|אַן אַנדער טעקע|אַנדערע טעקעס}} מיטן זעלבן תוכן.", - "api-error-duplicate-archive": "ס'איז שוין געווען {{PLURAL:$1| אַן אַנדער טעקע | [$1 עטלעכע אַנדערע טעקעס]}} אויף דעם פּלאַץ מיטן זעלביקן תוכן, אָבער {{PLURAL:$1| עס איז|זיי זענען}} געווארן אויסגעמעקט.", - "api-error-empty-file": "די טעקע וואָס איר האט אײַנגעגעבן איז ליידיג.", "api-error-emptypage": "שאפן נייע ליידיקע בלעטער איז נישט ערלויבט.", - "api-error-fetchfileerror": "אינערלעכער גרײַז: עפעס איז קאַליע געווארן בײַם ברענגען די טעקע.", - "api-error-fileexists-forbidden": "שוין פאראן א טעקע מיטן נאמען \"$1\" , און מען קען זי נישט אריבערשרייבן.", - "api-error-fileexists-shared-forbidden": "שוין פאראן א טעקע מיטן נאמען \"$1\" אין דער געמיינזאמער טעקע רעפאזיטאריע, און מען קען זי נישט אריבערשרייבן.", - "api-error-file-too-large": "די טעקע וואָס איר האט אײַנגעגעבן איז צו גרויס.", - "api-error-filename-tooshort": "דער טעקע־נאָמען איז צו קורץ.", - "api-error-filetype-banned": "דער טיפ טעקע איז געאַסרט.", - "api-error-filetype-banned-type": "$1 {{PLURAL:$4|איז נישט קיין דערלויבטער טעקע־טיפ |זענען נישט קיין דערלויבטע טעקע־טיפן}}. {{PLURAL:$3|דערלויבטער טעקע־טיפ איז|דערלויבטע טעקע־טיפן זענען}} $2.", - "api-error-filetype-missing": "די טעקע פֿעלט אַן ענדונג.", - "api-error-hookaborted": "די מאדיפיצירונג איר האט פרובירט קען נישט ווערן דורכגעפירט צוליב א פארברייטערונג.", - "api-error-http": "אינערלעכער גרײַז: נישט געקענט פֿאַרבינדן צום סערווירער.", - "api-error-illegal-filename": "דער טעקע־נאָמען איז נישט ערלויבט.", - "api-error-internal-error": "אינערלעכער גרײַז: עפעס איז קאַליע געווארן בײַם פראצעסירן אײַער אַרופֿלאָד אויף דער וויקי.", - "api-error-invalid-file-key": "אינערלעכער גרײַז: נישט געטראפֿן טעקע אין צײַטווײַליקן שפייכלער", - "api-error-missingparam": "אינערלעכער גרײַז: פֿעלן פאראמעטערס אין פֿאַרלאַנג", - "api-error-missingresult": "אינערלעכער גרײַז: נישט געקענט פֿעסטשטעלן צי קאפירן איז געווען דערפֿאלגרייך.", - "api-error-mustbeloggedin": "איר דארפֿט זײַן אַרײַנלאגירט אַרויפֿצולאָדן טעקעס.", - "api-error-mustbeposted": "אינערלעכער גרײַז: פֿאַרלאַנג פֿאדערט HTTP POST.", - "api-error-noimageinfo": "דער אַרויפֿלאָד איז געווען דערפֿאלגרײַך, אָבער דער סערווירער האט נישט געגעבן אונדז קיין אינפֿאָרמאַציע וועגן דער טעקע.", - "api-error-nomodule": "אינערלעכער גרײַז: קיין ארויפֿלאָדן מאָדול נישט געשטעלט.", - "api-error-ok-but-empty": "אינערלעכער גרײַז: קיין ענטפֿער פֿון סערווירער.", - "api-error-overwrite": "מען טאָר נישט איבערשרײַבן אַן עקזיסטירנדע טעקע.", - "api-error-stashfailed": "אינערלעכער גרײַז: סערווירער האט נישט געקענט אײַנשפייכלערן צייַטווייַליקע טעקע.", "api-error-publishfailed": "אינערלעכער גרײַז: סערווירער האט נישט געזדאנזשעט פארעפנטלעכן צייַטווייַליקע טעקע.", - "api-error-timeout": "דער סערווירער האט ניט געענטפֿערט אינערהאַלב דער דערוואַרטעטער צייַט.", - "api-error-unclassified": "אַן אומבאַקאַנט טעות איז פֿארגעקומען.", - "api-error-unknown-code": "אומבאַקאַנט טעות: \" $1 \"", - "api-error-unknown-error": "אינערלעכער גרײַז: עפעס איז קאַליע געווארן בײַם אַרויפֿלאָדן אײַער טעקע.", - "api-error-unknown-warning": "אומבאַקאַנטע ווארענונג: $1", + "api-error-stashfailed": "אינערלעכער גרײַז: סערווירער האט נישט געקענט אײַנשפייכלערן צייַטווייַליקע טעקע.", + "api-error-unknown-warning": "אומבאַקאַנטע ווארענונג: \"$1\".", "api-error-unknownerror": "אומבאַקאַנט טעות: \" $1 \"", - "api-error-uploaddisabled": "ארויפֿלאָדן איז אומאַקטיווירט אויף דער וויקי", - "api-error-verification-error": "די טעקע איז מעגלעך פֿארדארבן, אדער האט א פֿאַלשע ענדונג.", "duration-seconds": "$1 {{PLURAL:$1|סעקונדע|סעקונדעס}}", "duration-minutes": "$1 {{PLURAL:$1|מינוט|מינוט}}", "duration-hours": "$1 {{PLURAL:$1|שעה|שעה'ן}}", diff --git a/languages/i18n/yue.json b/languages/i18n/yue.json index 02e334121b..8b21f75b3e 100644 --- a/languages/i18n/yue.json +++ b/languages/i18n/yue.json @@ -30,7 +30,8 @@ "Jdforrester", "Tungakl", "Suzukaze-c", - "Asdfugil" + "Asdfugil", + "Deryck Chan" ] }, "tog-underline": "連結加底線:", @@ -48,6 +49,7 @@ "tog-watchdefault": "將我修改嘅頁同檔案加入監視清單", "tog-watchmoves": "將我移動嘅頁同檔案加入監視清單", "tog-watchdeletion": "將我刪除嘅頁同檔案加入監視清單", + "tog-watchuploads": "將我上載嘅檔案加入監視清單", "tog-watchrollback": "將我反轉過嘅頁加落監視清單", "tog-minordefault": "預設全部編輯做小修改", "tog-previewontop": "喺修改欄上邊顯示預覽", @@ -71,7 +73,7 @@ "tog-ccmeonemails": "喺我寄電郵畀其他人嗰陣,寄返封副本畀我。", "tog-diffonly": "響差異下面唔顯示頁面內容", "tog-showhiddencats": "顯示隱藏類", - "tog-norollbackdiff": "進行反轉之後略過差異", + "tog-norollbackdiff": "進行反轉之後唔睇差異", "tog-useeditwarning": "當我離開未保存好嘅修改嗰陣警告我", "tog-prefershttps": "簽到後繼續用加密連線", "underline-always": "全部", @@ -195,6 +197,7 @@ "searcharticle": "去", "history": "版史", "history_short": "歷史", + "history_small": "歷史", "updatedmarker": "我上次來之後嘅修改", "printableversion": "可打印版本", "permalink": "固定連結", @@ -226,6 +229,7 @@ "talk": "討論", "views": "去睇", "toolbox": "架撐", + "tool-link-emailuser": "電郵畀呢個{{GENDER:$1|用戶}}", "userpage": "去睇用戶頁", "projectpage": "去睇專題頁", "imagepage": "去睇檔案頁", @@ -333,7 +337,7 @@ "laggedslavemode": "警告:呢頁可能未包括最新嘅更新。", "readonly": "資料庫鎖咗", "enterlockreason": "輸入鎖資料庫嘅原因,同埋預計幾耐後會解鎖", - "readonlytext": "{{SITENAME}}資料庫而家鎖住咗,唔改得;可能因為維修緊。搞掂就會正常返。\n\n管理員嘅解釋: $1", + "readonlytext": "{{SITENAME}}資料庫而家鎖住咗,唔改得;可能因為維修緊。搞掂就會正常返。\n\n系統管理員嘅解釋: $1", "missing-article": "資料庫搵唔到你要嘅版,「$1」 $2。\n\n通常係因為修訂歷史頁上面,由過時嘅連結去到刪除咗嘅版所引起嘅。\n\n如果唔係,你可能係搵到軟件裏面嘅臭蟲。\n請記低 URL 地址,向[[Special:ListUsers/sysop|管理員]]報告。", "missingarticle-rev": "(修訂#: $1)", "missingarticle-diff": "(差異: $1, $2)", @@ -389,7 +393,7 @@ "mypreferencesprotected": "你無權改呢版你嘅個人設定。", "ns-specialprotected": "特別頁係唔可以編輯嘅。", "titleprotected": "呢個標題已經俾[[User:$1|$1]]保護咗防止去開。原因係<em>$2</em>。", - "filereadonlyerror": "改唔到檔案 \"$1\",因為檔案庫 \"$2\" 而家係唯讀。\n\n負責鎖嘅管理員嘅解釋:\"$3\"。", + "filereadonlyerror": "改唔到檔案 \"$1\",因為檔案庫 \"$2\" 而家係唯讀。\n\n負責鎖嘅系統管理員嘅解釋:\"$3\"。", "invalidtitle-knownnamespace": "名域 \"$2\" 同版名 \"$3\" 無效嘅標題", "invalidtitle-unknownnamespace": "未知名域號碼 \"$1\" 同版名 \"$2\" 無效嘅標題", "exception-nologin": "未簽到", @@ -399,6 +403,8 @@ "virus-scanfailed": "掃瞄失敗 (代碼 $1)", "virus-unknownscanner": "未知嘅防病毒:", "logouttext": "<strong>你而家已經簽退咗。</strong>\n\n但係留意某啲頁面可能會繼續話你未登入,除非等你清除瀏覽器嘅快取儲存。", + "cannotlogoutnow-title": "而家簽走唔到", + "cannotlogoutnow-text": "用緊$1嗰陣唔可以簽走。", "welcomeuser": "歡迎,$1!", "welcomecreation-msg": "你個戶口已經起好。\n唔好唔記得去改改你嘅{{SITENAME}}[[Special:Preferences|喜好設定]]喎。", "yourname": "用戶名:", @@ -417,27 +423,25 @@ "cannotlogin-title": "簽到唔到", "cannotlogin-text": "冇可能簽到", "cannotloginnow-title": "而家簽到唔到", + "cannotloginnow-text": "用緊$1嗰陣唔可以簽到。", + "cannotcreateaccount-title": "開唔到新戶口", + "cannotcreateaccount-text": "呢個維基唔准直接開戶", "yourdomainname": "你嘅網域:", "password-change-forbidden": "你唔可以改呢個維基站嘅密碼。", "externaldberror": "驗證資料庫出錯,或者唔允許你更新你嘅外部帳戶。", "login": "登入", + "login-security": "確認你嘅身份", "nav-login-createaccount": "登入/開新戶口", - "userlogin": "登入/開新戶口", - "userloginnocreate": "登入", "logout": "登出", "userlogout": "登出", "notloggedin": "未登入", "userlogin-noaccount": "重未有戶口?", "userlogin-joinproject": "入{{SITENAME}}", - "nologin": "重未有戶口? $1。", - "nologinlink": "開個新戶口", "createaccount": "開戶口", - "gotaccount": "已經有戶口? $1。", - "gotaccountlink": "登入", - "userlogin-resetlink": "唔記得簽到資料?", "userlogin-resetpassword-link": "唔記得密碼?", "userlogin-helplink2": "幫我簽到", "userlogin-loggedin": "您目前用{{GENDER:$1|$1}}身份簽到,\n請用下面表格用另一身份簽到。", + "userlogin-reauth": "請你簽到多次,確認你真係{{GENDER:$1|$1}}。", "userlogin-createanother": "開過個戶口", "createacct-emailrequired": "電郵地址", "createacct-emailoptional": "電郵地址(可以唔填)", @@ -445,16 +449,17 @@ "createacct-another-email-ph": "入電郵地址", "createaccountmail": "將臨時密碼送到指定電郵地址", "createacct-realname": "真名(可以唔填)", - "createaccountreason": "原因:", "createacct-reason": "原因", "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|版|版}}", "createacct-benefit-body3": "最近{{PLURAL:$1|貢獻者|貢獻者}}", - "badretype": "你入嘅密碼唔一致。", + "badretype": "你入嘅密碼前後不一。", "usernameinprogress": "呢個名嘅戶口已經開緊。\n請等等。", "userexists": "你入嘅用戶名已經有人用咗。\n唔該揀過個名啦。", "loginerror": "登入錯誤", @@ -486,7 +491,7 @@ "eauthentsent": "確認電郵已經傳送到指定嘅電郵地址。\n喺其它嘅郵件傳送到呢個戶口之前,你需要按電郵嘅指示,嚟確認呢個戶口真係屬於你嘅。", "throttled-mailpassword": "一個密碼提醒已經響$1{{PLURAL:$1|個鐘頭}}之前發送咗。為咗防止濫用,響$1{{PLURAL:$1|個鐘頭}}之內只可以發送一個密碼提醒。", "mailerror": "傳送電郵錯誤: $1", - "acct_creation_throttle_hit": "利用你呢個IP地址嘅訪客響上一日已經開咗 $1 個戶口,係響呢段時間嘅上限。\n結果,利用呢個IP地址嘅訪客唔可以響呢段時間再開多個戶口。", + "acct_creation_throttle_hit": "利用你呢個IP地址嘅訪客響上$2已經開咗$1個戶口,係響呢段時間嘅上限。\n所以,利用呢個IP地址嘅訪客暫時唔可以再開新戶口。", "emailauthenticated": "你嘅電郵地址已經喺 $2 $3 確認。", "emailnotauthenticated": "你嘅電郵地址重未確認。\n任何傳送電郵嘅功能都唔會運作。", "noemailprefs": "響你嘅喜好設定度設置一個電郵地址令到呢啲功能開始運作。", @@ -506,6 +511,7 @@ "createacct-another-realname-tip": "真名可以唔填。\n如果你畀埋佢,有需要嘅時候會用佢來標示你嘅工夫。", "pt-login": "簽到", "pt-login-button": "簽到", + "pt-login-continue-button": "繼續簽到", "pt-createaccount": "開戶口", "pt-userlogout": "簽走", "php-mail-error-unknown": "響 PHP 嘅 mail() 參數度出現咗未知嘅錯誤", @@ -519,8 +525,10 @@ "newpassword": "新密碼:", "retypenew": "打多次新密碼:", "resetpass_submit": "設定密碼同登入", - "changepassword-success": "你嘅密碼已經成功噉改咗!", + "changepassword-success": "你嘅密碼已經改咗!", "changepassword-throttled": "你已經試咗太多次簽到動作。\n請等$1再試過。", + "botpasswords": "機械人密碼", + "botpasswords-disabled": "唔俾用機械人密碼。", "botpasswords-label-create": "創造", "botpasswords-label-update": "上載", "botpasswords-label-cancel": "取消", @@ -591,6 +599,7 @@ "minoredit": "呢個係小修改", "watchthis": "睇實呢一頁", "savearticle": "儲存呢頁", + "savechanges": "記好", "publishpage": "發佈呢頁", "publishchanges": "發佈修改", "preview": "預覽", @@ -1030,15 +1039,20 @@ "editusergroup": "編輯用戶組", "editinguser": "改緊<strong>[[User:$1|$1]]</strong>嘅用戶權限 $2", "userrights-editusergroup": "編輯用戶組", - "saveusergroups": "儲存用戶組", + "saveusergroups": "儲存{{GENDER:$1|用戶}}組", "userrights-groupsmember": "屬於:", "userrights-groupsmember-auto": "固有屬於:", - "userrights-groups-help": "你可以改呢位用戶所屬嘅組:\n* 剔咗嘅盒代表個用戶係屬於嗰組。\n* 未剔嘅盒代表個用戶唔係屬於嗰組。\n* 一個 * 表示你加入咗佢之後唔可以拎走,反之亦然。", + "userrights-groups-help": "你可以改呢位用戶所屬嘅組:\n* 剔咗嘅盒代表個用戶係屬於嗰組。\n* 未剔嘅盒代表個用戶唔係屬於嗰組。\n* 一個 * 表示你加入咗佢之後唔可以拎走,反之亦然。\n* 一個 # 表示你只可以推遲嗰組嘅失效日期,唔可以提早。", "userrights-reason": "原因:", "userrights-no-interwiki": "你並無權限去編輯響其它wiki嘅用戶權限。", "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-conflict": "用戶權限更改有衝突!請再睇過同確認你嘅改動。", "group": "組:", "group-user": "用戶", @@ -1136,7 +1150,7 @@ "rightslogtext": "呢個係用戶權力嘅修改日誌。", "action-read": "讀呢版", "action-edit": "編輯呢版", - "action-createpage": "開版", + "action-createpage": "建立呢頁", "action-createtalk": "開討論版", "action-createaccount": "開呢個用戶戶口", "action-history": "睇呢頁嘅歷史", @@ -1160,6 +1174,7 @@ "action-suppressionlog": "睇呢個私有日誌", "action-block": "封鎖呢位用戶嘅編輯", "action-protect": "改呢版嘅保護等級", + "action-rollback": "速還原某版最後修改人之修改", "action-import": "由其它wiki度倒入版", "action-importupload": "由檔案上載度倒入版", "action-patrol": "標示其它嘅編輯做已巡查嘅", @@ -1169,7 +1184,7 @@ "action-userrights": "編輯全部嘅權限", "action-userrights-interwiki": "編輯響其它wiki用戶嘅權限", "action-siteadmin": "鎖同解鎖資料庫", - "action-sendemail": "送電郵", + "action-sendemail": "寄電郵", "action-editmywatchlist": "改監視清單", "action-viewmywatchlist": "睇監視清單", "action-viewmyprivateinfo": "睇你嘅私人資料", @@ -1193,6 +1208,27 @@ "recentchanges-legend-heading": "<strong>標記:</strong>", "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (睇埋[[Special:NewPages|新開版]])", "recentchanges-submit": "顯示", + "rcfilters-filter-editsbyself-description": "你改嘅嘢。", + "rcfilters-filter-editsbyother-label": "其他人改嘅嘢", + "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-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-filtergroup-automated": "自動貢獻", + "rcfilters-filter-bots-label": "機械人", + "rcfilters-filter-bots-description": "用自動工具做嘅貢獻", + "rcfilters-filter-humans-label": "人類(唔係機械人)", + "rcfilters-filter-humans-description": "真人做嘅編輯", + "rcfilters-filtergroup-significance": "顯著度", + "rcfilters-filter-minor-label": "細編輯", + "rcfilters-filter-minor-description": "作者話程度細嘅修改。", + "rcfilters-filter-major-label": "唔細嘅編輯", + "rcfilters-filter-major-description": "作者冇話程度細嘅修改。", + "rcfilters-filtergroup-changetype": "修改類別", "rcnotefrom": "下面嘅{{PLURAL:$5|改動}}由 <strong>$3 $4</strong> 開始(顯示到'''$1''')。", "rclistfrom": "顯示由$3 $2嘅新更改", "rcshowhideminor": "$1小編輯", @@ -1310,7 +1346,7 @@ "uploaddisabledtext": "檔案上載已經停用。", "php-uploaddisabledtext": "PHP 檔案上載已經停用。請檢查 file_uploads 設定。", "uploadscripted": "呢個檔案包含可能會誤被瀏覽器解釋執行嘅 HTML 或 script 代碼。", - "uploadscriptednamespace": "呢個SVG文件可能有“$1”嘅非法字詞響度", + "uploadscriptednamespace": "呢個SVG文件可能有“<nowiki>$1</nowiki>”嘅非法字詞響度", "uploadinvalidxml": "分析唔到已經上傳咗嘅XML文件", "uploadvirus": "呢個檔案有病毒!\n詳情:$1", "uploadjava": "呢個係個ZIP檔案包括Java .class檔案。\n因為保安問題,上傳Java檔案係禁止左嘅。", @@ -1638,6 +1674,7 @@ "allpagesbadtitle": "提供嘅頁面名無效,又或者有一個跨語言或跨wiki嘅字頭。佢可能包括一個或多個字係唔可以用響標題度嘅。", "allpages-bad-ns": "{{SITENAME}}係無一個空間名叫做\"$1\"。", "allpages-hide-redirects": "收埋跳轉", + "cachedspecial-viewing-cached-ttl": "以下資料,來自暫存,上次更新係$1之前嘅事。", "cachedspecial-refresh-now": "睇最新。", "categories": "類", "categoriespagetext": "下面嘅{{PLURAL:$1|類}}有版或媒體。\n[[Special:UnusedCategories|未用類]]唔會響呢度列示。\n請同時參閱[[Special:WantedCategories|需要嘅分類]]。", @@ -1778,8 +1815,8 @@ "delete-legend": "刪除", "historywarning": "<strong>警告:</strong>你要刪除嘅頁面有大約$1次嘅修訂:", "confirmdeletetext": "你準備刪除一個頁面或者圖像,包括佢嘅所有歷史版本。\n請確認你打算噉做,而且你知道後果係點,加上確認你噉做冇違反到[[{{MediaWiki:Policy-url}}]]。", - "actioncomplete": "操作完成", - "actionfailed": "操作失敗", + "actioncomplete": "搞掂", + "actionfailed": "搞唔掂", "deletedtext": "\"$1\"已經刪除。最近嘅刪除記錄請睇$2。", "dellogpage": "刪除日誌", "dellogpagetext": "以下係最近嘅刪除清單。", @@ -2930,7 +2967,6 @@ "logentry-newusers-create": "戶口$1經已{{GENDER:$2|開咗}}", "logentry-upload-upload": "$1 {{GENDER:$2|上傳咗}} $3", "rightsnone": "(冇)", - "revdelete-summary": "編輯摘要", "feedback-back": "返轉頭", "feedback-cancel": "取消", "feedback-close": "搞掂", @@ -2940,12 +2976,8 @@ "feedback-thanks-title": "多謝!", "searchsuggest-search": "搵{{SITENAME}}", "searchsuggest-containing": "名單傳送緊...", - "api-error-unclassified": "發生未知嘅錯誤。", - "api-error-unknown-code": "未知嘅出錯:$1。", "api-error-unknown-warning": "未知嘅警告:$1。", "api-error-unknownerror": "未知嘅出錯:$1。", - "api-error-uploaddisabled": "呢個維基唔畀上載檔案。", - "api-error-verification-error": "檔案壞咗或者用錯副檔名。", "duration-seconds": "$1 {{PLURAL:$1|秒}}", "duration-minutes": "$1 {{PLURAL:$1|分鐘}}", "duration-hours": "$1{{PLURAL:$1|個鐘}}", diff --git a/languages/i18n/zh-hans.json b/languages/i18n/zh-hans.json index 6dfad4ce12..afd63c28b8 100644 --- a/languages/i18n/zh-hans.json +++ b/languages/i18n/zh-hans.json @@ -93,7 +93,8 @@ "Arthur2e5", "Myy730", "SolidBlock", - "D41D8CD98F" + "D41D8CD98F", + "Wmr" ] }, "tog-underline": "链接下划线:", @@ -212,7 +213,7 @@ "period-am": "AM", "period-pm": "PM", "pagecategories": "{{PLURAL:$1|分类}}", - "category_header": "分类“$1”中的页面", + "category_header": "分类“$1”下的页面", "subcategories": "子分类", "category-media-header": "分类“$1”中的媒体文件", "category-empty": "<em>本分类目前不含有任何页面或媒体文件。</em>", @@ -502,19 +503,12 @@ "login": "登录", "login-security": "证明您的身份", "nav-login-createaccount": "登录/创建账户", - "userlogin": "登录/创建账户", - "userloginnocreate": "登录", "logout": "退出", "userlogout": "退出", "notloggedin": "未登录", "userlogin-noaccount": "没有账户?", "userlogin-joinproject": "加入{{SITENAME}}", - "nologin": "没有账户?$1。", - "nologinlink": "创建账户", "createaccount": "创建账户", - "gotaccount": "已经拥有账户?请$1。", - "gotaccountlink": "登录", - "userlogin-resetlink": "忘记您的登录信息?", "userlogin-resetpassword-link": "忘记密码?", "userlogin-helplink2": "登录帮助", "userlogin-loggedin": "您已经以{{GENDER:$1|$1}}的身份登录。使用下面的表格以其他用户的身份登录。", @@ -527,7 +521,6 @@ "createaccountmail": "使用一个临时的随机密码并将其发送到指定的电子邮件地址中", "createaccountmail-help": "可被用于为另一个人创建账户而不需要得知密码。", "createacct-realname": "真实姓名(可选)", - "createaccountreason": "原因:", "createacct-reason": "原因", "createacct-reason-ph": "您为什么要创建另一个账户", "createacct-reason-help": "在账户创建日志中显示的消息", @@ -685,7 +678,7 @@ "resettokens": "重置密钥", "resettokens-text": "您可以在这里重置允许访问与您的账户有关的特定私人数据的密钥。\n\n如果您意外将它们分享给他人,或是您的账户已经被入侵,您应该重置它们。", "resettokens-no-tokens": "没有可以重置的密钥。", - "resettokens-tokens": "密钥:", + "resettokens-tokens": "令牌:", "resettokens-token-label": "$1(当前值:$2)", "resettokens-watchlist-token": "[[Special:Watchlist|对你的监视列表中的页面的更改]]的网页feed(Atom/RSS)的密钥", "resettokens-done": "密钥已重置。", @@ -726,8 +719,8 @@ "selfredirect": "<strong>警告:</strong>您正在将此页面重定向至它自己。您可能指定了错误的重定向目标,或者您正在编辑错误的页面。如果您再次点击“{{int:savearticle}}”,重定向仍将被创建。", "missingcommenttext": "请在下面输入评论。", "missingcommentheader": "<strong>提示:</strong>您还没有为此评论提供一个标题。如果您再次点击“{{int:savearticle}}”,您的编辑将不带标题保存。", - "summary-preview": "摘要预览:", - "subject-preview": "主题预览:", + "summary-preview": "编辑摘要的预览:", + "subject-preview": "主题的预览:", "previewerrortext": "尝试预览您的更改时发生未知错误。", "blockedtitle": "用户被封禁", "blockedtext": "<strong>您的用户名或IP地址已被封禁。</strong>\n\n执行封禁的管理员是$1。封禁原因是<em>$2</em>。\n\n* 开始时间:$8\n* 到期时间:$6\n* 目标用户:$7\n\n您可以联络$1或其他[[{{MediaWiki:Grouppage-sysop}}|管理员]]讨论该封禁。只有当您在[[Special:Preferences|系统设置]]确认了电子邮件地址且未被禁止使用“电邮联系”功能时,才可以使用它。您当前的IP地址是$3,该封禁ID是#$5。请在您做出的任何查询中包含所有上述详情。", @@ -765,14 +758,14 @@ "previewnote": "<strong>请记住这只是预览。</strong>您的更改尚未保存!", "continue-editing": "前往编辑区", "previewconflict": "该预览反映了上面文字编辑区中的文字在你保存后的显示状况。", - "session_fail_preview": "对不起!由于会话数据丢失,我们无法处理您的编辑。\n\n您可能已经退出。<strong>请核实您是否仍在登录,并重试</strong>。\n如果仍然不能工作,尝试[[Special:UserLogout|退出]]并重新登录,并检查您的浏览器是否允许来自该网站的cookie。", - "session_fail_preview_html": "对不起!由于会话数据丢失,我们无法处理您的编辑,\n\n<em>因为{{SITENAME}}已启用原始HTML,为了预防JavaScript攻击,预览被隐藏。</em>\n\n<strong>如果该编辑尝试合法,请重试。</strong>\n如果仍然不能工作,尝试[[Special:UserLogout|退出]]并重新登录,并检查您的浏览器是否允许来自该网站的cookie。", + "session_fail_preview": "对不起!由于会话数据丢失,我们无法处理您的编辑。\n\n您可能已经退出。<strong>请核实您是否仍在登录,并重试</strong>。如果仍然不能工作,尝试[[Special:UserLogout|退出]]并重新登录,并检查您的浏览器是否允许来自该网站的cookie。", + "session_fail_preview_html": "对不起!由于会话数据丢失,我们无法处理您的编辑,\n\n<em>因为{{SITENAME}}已启用原始HTML,为了预防JavaScript攻击,预览被隐藏。</em>\n\n<strong>如果该编辑尝试合法,请重试。</strong>如果仍然不能工作,尝试[[Special:UserLogout|退出]]并重新登录,并检查您的浏览器是否允许来自该网站的cookie。", "token_suffix_mismatch": "<strong>由于您客户端中的编辑令牌毁损了一些标点符号字符,您的编辑已经被拒绝。</strong>\n此次编辑被拒绝以防止页面文本损坏。\n这种情况通常在您使用含有故障的网页式匿名代理服务的时候出现。", "edit_form_incomplete": "<strong>编辑表格的某些部分没有到达服务器,请检查您的编辑是否完整并重试。</strong>", "editing": "编辑“$1”", "creating": "创建“$1”", - "editingsection": "编辑“$1(段落)”", - "editingcomment": "编辑“$1”(新段落)", + "editingsection": "编辑“$1”(章节)", + "editingcomment": "编辑“$1”(新章节)", "editconflict": "编辑冲突:$1", "explainconflict": "其他用户在您开始编辑后更改了该页面。上面的文字区含有该页面当前的文字。下面的文字区显示您的更改。您必须把您的更改合并至现有文字。<strong>只有</strong>当您单击“{{int:savearticle}}”后,上面的文字区中的文字才会被保存。", "yourtext": "您的文字", @@ -1034,6 +1027,7 @@ "search-interwiki-caption": "姊妹项目", "search-interwiki-default": "来自$1的结果:", "search-interwiki-more": "(更多)", + "search-interwiki-more-results": "更多结果", "search-relatedarticle": "相关", "searchrelated": "相关", "searchall": "所有", @@ -1123,6 +1117,7 @@ "youremail": "电子邮件:", "username": "{{GENDER:$1|用户名}}:", "prefs-memberingroups": "{{GENDER:$2|用户}}{{PLURAL:$1|组}}:", + "group-membership-link-with-expiry": "$1(直到$2)", "prefs-registration": "注册时间:", "yourrealname": "真实姓名:", "yourlanguage": "界面语言:", @@ -1133,7 +1128,7 @@ "badsig": "错误的原始签名。请检查HTML标签。", "badsiglength": "签名过长。请不超过$1个字符。", "yourgender": "您希望使用什么性别称呼?", - "gender-unknown": "当提及您时,软件将使用性别中性的词汇(只要可能)", + "gender-unknown": "当提及您时,软件将尽可能使用性别中性的词法", "gender-male": "他", "gender-female": "她", "prefs-help-gender": "该设置为可选项。软件根据该值在称呼您及对他人提及您时使用适当的语法性别。该信息会被公开。", @@ -1156,7 +1151,7 @@ "prefs-advancedwatchlist": "高级选项", "prefs-displayrc": "显示", "prefs-displaywatchlist": "显示", - "prefs-tokenwatchlist": "密钥", + "prefs-tokenwatchlist": "令牌", "prefs-diffs": "差异对比", "prefs-help-prefershttps": "该设置将在下次登录时生效。", "prefswarning-warning": "您对您的参数设置的更改尚未保存。如果您不点击“$1”就离开,您的设置就不会更新。", @@ -1167,17 +1162,26 @@ "editusergroup": "加载用户组", "editinguser": "更改{{GENDER:$1|用户}}<strong>[[User:$1|$1]]</strong>的用户权限$2", "viewinguserrights": "查看{{GENDER:$1|用户}}<strong>[[User:$1|$1]]</strong>的用户权限$2", - "userrights-editusergroup": "编辑用户组", - "userrights-viewusergroup": "查看用户组", + "userrights-editusergroup": "编辑{{GENDER:$1|用户}}组", + "userrights-viewusergroup": "查看{{GENDER:$1|用户}}组", "saveusergroups": "保存{{GENDER:$1|用户}}组", "userrights-groupsmember": "用户组:", "userrights-groupsmember-auto": "自动用户组:", - "userrights-groups-help": "您可以更改该用户的用户组:\n* 选中的选项框表示该用户属于该用户组。\n* 未选中的选项框表示该用户不属于该用户组。\n* 星号(*)表示一旦添加该用户组后不能删除,反之亦然。", + "userrights-groups-help": "您可以更改该用户的用户组:\n* 选中的选项框表示该用户属于该用户组。\n* 未选中的选项框表示该用户不属于该用户组。\n* 星号(*)表示一旦您被添加至该用户组后,您不能亲自移除其权限,反之亦然。\n* 井号(#)表示您只可以推迟该用户组的过期时间;您不能将其提前。", "userrights-reason": "原因:", "userrights-no-interwiki": "您并没有权限去编辑在其它wiki上的用户权限。", "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 month,3个月:3 months,6个月:6 months,1å¹´:1 year", + "userrights-invalid-expiry": "组“$1”的终止时间无效。", + "userrights-expiry-in-past": "组“$1”的终止时间是在过去。", + "userrights-cannot-shorten-expiry": "您不能将用户组“$1”的过期时间提前。只有拥有添加或移除该组权限的用户可以将其提前。", "userrights-conflict": "用户权限的更改存在冲突!请检查并确认您的更改。", "group": "用户组:", "group-user": "用户", @@ -1379,22 +1383,61 @@ "recentchanges-legend-plusminus": "(<em>±123</em>)", "recentchanges-submit": "显示", "rcfilters-activefilters": "活跃的过滤器", + "rcfilters-restore-default-filters": "恢复默认过滤器", + "rcfilters-clear-all-filters": "清空所有过滤器", "rcfilters-search-placeholder": "过滤器最近更改(浏览或开始输入)", "rcfilters-invalid-filter": "无效过滤器", + "rcfilters-empty-filter": "没有活跃的过滤器。已显示所有贡献。", "rcfilters-filterlist-title": "过滤器", + "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-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-filter-userExpLevel-newcomer-label": "新手", - "rcfilters-filter-userExpLevel-newcomer-description": "非常新的编辑者:少于10次编辑和4天活跃。", - "rcfilters-filter-userExpLevel-learner-label": "初学者", - "rcfilters-filter-userExpLevel-learner-description": "比“新手”拥有更多活跃天数和编辑数,但少于“有经验的用户。”", - "rcfilters-filter-userExpLevel-experienced-label": "有经验的用户", - "rcfilters-filter-userExpLevel-experienced-description": "超过30天活跃和500次编辑。", + "rcfilters-filtergroup-userExpLevel": "体验水平(仅限注册用户)", + "rcfilters-filtergroup-user-experience-level-conflicts-unregistered": "此过滤器未被激活,因为它只找到注册用户,而因此“未注册”过滤器正在消除其影响。", + "rcfilters-filtergroup-user-experience-level-conflicts-unregistered-global": "“未注册”过滤器与一个或更多体验过滤器相冲突。体验过滤器只寻找注册用户。冲突过滤器已在上方标记为未激活。", + "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": "超过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-changetype": "更改类型", + "rcfilters-filter-pageedits-label": "页面编辑", + "rcfilters-filter-pageedits-description": "对wiki内容、讨论、分类描述的编辑....", + "rcfilters-filter-newpages-label": "页面创建", + "rcfilters-filter-newpages-description": "做出新页面的编辑。", + "rcfilters-filter-categorization-label": "分类更改", + "rcfilters-filter-categorization-description": "从分类中添加或移除页面的记录。", + "rcfilters-filter-logactions-label": "记录的操作", + "rcfilters-filter-logactions-description": "管理操作、账户创建、页面删除、上传....", "rcnotefrom": "下面{{PLURAL:$5|是}}<strong>$3 $4</strong>之后的更改(最多显示<strong>$1</strong>个)。", "rclistfrom": "显示$3 $2之后的新更改", "rcshowhideminor": "$1小编辑", @@ -1438,7 +1481,7 @@ "recentchangeslinked-feed": "相关更改", "recentchangeslinked-toolbox": "相关更改", "recentchangeslinked-title": "与“$1”有关的更改", - "recentchangeslinked-summary": "这是链接自指定页面(或至指定分类的成员)的页面的最近更改的列表。[[Special:Watchlist|你的监视列表]]中的页面以<strong>粗体</strong>显示。", + "recentchangeslinked-summary": "这是链接自指定页面(或至指定分类的成员)的页面的最近更改的列表。[[Special:Watchlist|您的监视列表]]中的页面以<strong>粗体</strong>显示。", "recentchangeslinked-page": "页面名称:", "recentchangeslinked-to": "显示链到所给出的页面", "recentchanges-page-added-to-category": "[[:$1]]已添加至分类", @@ -1498,7 +1541,7 @@ "fileexists": "已存在相同名称的文件,如果您无法确定您是否要改变它,请检查<strong>[[:$1]]</strong>。 [[$1|thumb]]", "filepageexists": "该文件的说明页面已经创建于<strong>[[:$1]]</strong>,但是目前没有名称为此的文件存在。您输入的摘要不会显示在说明页面上。要使你的摘要在那里显示,您需要手工编辑它。[[$1|thumb]]", "fileexists-extension": "一个相似名称的文件已经存在: [[$2|thumb]]\n* 上传文件的文件名:<strong>[[:$1]]</strong>\n* 现有文件的文件名:<strong>[[:$2]]</strong>\n请选择一个不同的名字。", - "fileexists-thumbnail-yes": "此文件可能是另一幅图像的缩小版本<em>(缩略图)</em>。 [[$1|thumb]]\n请仔细检查该文件<strong>[[:$1]]</strong>。\n如果被检查文件与原始大小的图像是同一幅图像,您无需上传多余的缩略图。", + "fileexists-thumbnail-yes": "此文件可能是另一幅图像的缩小版本<em>(缩略图)</em>。[[$1|thumb]]请仔细检查该文件<strong>[[:$1]]</strong>。如果被检查文件与原始大小的图像是同一幅图像,您无需上传多余的缩略图。", "file-thumbnail-no": "文件名以<strong>$1</strong>开始。它似乎是缩小的图像<em>(缩略图)</em>。如果您有完整分辨率的该图像,请上传它,否则请更改文件名。", "fileexists-forbidden": "已存在相同名称的文件,且不能覆盖;请返回并用一个新的名称来上传此文件。[[File:$1|thumb|center|$1]]", "fileexists-shared-forbidden": "共享文件库中存在该名称的文件。如果您仍想上传你的文件,请返回使用其他名称。[[File:$1|thumb|center|$1]]", @@ -1528,7 +1571,7 @@ "uploaded-setting-handler-svg": "通过远程/数据/脚本设置“handler”属性的SVG时受阻。在上传的SVG文件中找到<code>$1=\"$2\"</code>。", "uploaded-remote-url-svg": "通过远程URL设置任意样式属性的SVG时受阻。在上传的SVG文件中找到<code>$1=\"$2\"</code>。", "uploaded-image-filter-svg": "在上传的SVG文件中找到图片过滤器带URL:<code><$1 $2=\"$3\"></code>。", - "uploadscriptednamespace": "æ­¤SVG文件包含非法名字空间“$1”。", + "uploadscriptednamespace": "æ­¤SVG文件包含非法名字空间“<nowiki>$1</nowiki>”。", "uploadinvalidxml": "上传文件中的XML无法解析。", "uploadvirus": "该文件包含病毒!\n详情:$1", "uploadjava": "该文件是 ZIP 文件,其中包含 Java 的.class 文件。上传Java文件不被允许,因为它们可能绕过限制,从而引起安全问题。", @@ -1578,26 +1621,26 @@ "upload-form-label-own-work-message-generic-foreign": "我知道我正在上传此文件至一个共享的存储库。我确认我依据这里的服务条款和许可方针做此事。", "upload-form-label-not-own-work-message-generic-foreign": "如果您无法依据分享存储库的方针上传此文件,请关闭此对话框并尝试其他方法。", "upload-form-label-not-own-work-local-generic-foreign": "如果此文件可以依据他们的方针上传的话,您也可以尝试使用[[Special:Upload|{{SITENAME}}上的上传页面]]。", - "backend-fail-stream": "无法流传送文件$1。", - "backend-fail-backup": "无法备份文件$1。", - "backend-fail-notexists": "条目$1不存在。", - "backend-fail-hashes": "比较无法获取文件hashes", - "backend-fail-notsame": "$1已存在不同的文件。", - "backend-fail-invalidpath": "$1不是有效的存储路径。", + "backend-fail-stream": "无法流传送文件“$1”。", + "backend-fail-backup": "无法备份文件“$1”。", + "backend-fail-notexists": "文件$1不存在。", + "backend-fail-hashes": "无法获取文件哈希用于比较。", + "backend-fail-notsame": "“$1”已存在不同的文件。", + "backend-fail-invalidpath": "“$1”不是有效的存储路径。", "backend-fail-delete": "无法删除文件“$1”。", "backend-fail-describe": "无法修改文件“$1”的元数据。", - "backend-fail-alreadyexists": "“$1”页面已存在", - "backend-fail-store": "无法在$2存储文件$1。", - "backend-fail-copy": "无法复制文件$1到$2。", - "backend-fail-move": "无法移动文件$1到$2。", + "backend-fail-alreadyexists": "“$1”文件已存在。", + "backend-fail-store": "无法在“$2”存储文件“$1”。", + "backend-fail-copy": "无法复制文件“$1”到“$2”。", + "backend-fail-move": "无法移动文件“$1”到“$2”。", "backend-fail-opentemp": "无法打开临时文件。", "backend-fail-writetemp": "无法写临时文件。", - "backend-fail-closetemp": "无法创建临时文件。", + "backend-fail-closetemp": "无法关闭临时文件。", "backend-fail-read": "找不到文件“$1”。", - "backend-fail-create": "无法写入文件 $1 。", + "backend-fail-create": "无法写入文件“$1”。", "backend-fail-maxsize": "无法写入文件“$1”,因为它大于$2字节。", "backend-fail-readonly": "“$1”存储后端目前在只读模式,因为:<em>$2</em>", - "backend-fail-synced": "文件\"$1\"在内部存储后端之中处于不一致状态", + "backend-fail-synced": "文件“$1”在内部存储后端之中处于不一致状态", "backend-fail-connect": "无法连接到存储后端“$1。", "backend-fail-internal": "存储后端“$1”发生了一个未知错误。", "backend-fail-contenttype": "无法判断文件的内容类型来储存于“$1”。", @@ -1750,7 +1793,7 @@ "randompage-nopages": "在以下{{PLURAL:$2|名字空间}}中没有页面:$1。", "randomincategory": "分类中随机页面", "randomincategory-invalidcategory": "“$1”不是一个有效的分类名称。", - "randomincategory-nopages": "[[:Category:$1|$1]]分类中没有页面。", + "randomincategory-nopages": "[[:Category:$1|$1]]分类下没有页面。", "randomincategory-category": "分类:", "randomincategory-legend": "分类中随机页面", "randomincategory-submit": "提交", @@ -1866,7 +1909,7 @@ "ancientpages": "最老页面", "move": "移动", "movethispage": "移动本页", - "unusedimagestext": "以下文件实际存在,但并没有插入任何页面。请注意,其他网站可能会使用直接URL链接某个文件,因此它即使被实际使用也可能在这里列出。", + "unusedimagestext": "存在以下没有插入任何页面的文件。请注意,其他网站可能会使用直接URL链接某个文件,因此它即使被实际使用也可能在这里列出。", "unusedcategoriestext": "以下分类页面实际存在,即使没有其它页面或分类利用它们。", "notargettitle": "无目标", "notargettext": "您还没有指定一个目标页面或用户以进行此项操作。", @@ -1906,8 +1949,10 @@ "apisandbox-sending-request": "正在发送API请求...", "apisandbox-loading-results": "正在接收API请求...", "apisandbox-results-error": "加载API查询响应时出错:$1。", - "apisandbox-request-params-json": "JSON参数:", + "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”令牌失败。", @@ -1917,7 +1962,7 @@ "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": "输入<kbd>max</kbd>以使用最大限制。", - "apisandbox-multivalue-all-namespaces": "$1(所有名字空间)", + "apisandbox-multivalue-all-namespaces": "$1(所有名字空间)", "apisandbox-multivalue-all-values": "$1(所有值)", "booksources": "网络书源", "booksources-search-legend": "搜索图书来源", @@ -2050,7 +2095,7 @@ "emailccsubject": "您发送给$1的消息的副本:$2", "emailsent": "电子邮件已发送", "emailsenttext": "您的电子邮件已经发出。", - "emailuserfooter": "本电子邮件是通过{{SITENAME}}的“{{int:emailuser}}”功能被$1{{GENDER:$1|发送}}至{{GENDER:$2|$2}}的。{{GENDER:$2|您}}的电子邮件将直接发送至{{GENDER:$1|原始发送者}},并向{{GENDER:$1|其}}显示{{GENDER:$2|您}}的电子邮件地址。", + "emailuserfooter": "本电子邮件是通过{{SITENAME}}的“{{int:emailuser}}”功能被$1{{GENDER:$1|发送}}至{{GENDER:$2|$2}}的。如果{{GENDER:$2|您}}回复该电子邮件的话,{{GENDER:$2|您}}的电子邮件将直接发送至{{GENDER:$1|原始发送者}},并向{{GENDER:$1|其}}显示{{GENDER:$2|您}}的电子邮件地址。", "usermessage-summary": "留下系统消息。", "usermessage-editor": "系统信息编辑器", "watchlist": "监视列表", @@ -2148,7 +2193,7 @@ "editcomment": "编辑摘要:<em>$1</em>。", "revertpage": "恢复[[Special:Contributions/$2|$2]]([[User talk:$2|讨论]])的编辑至[[User:$1|$1]]的最后版本", "revertpage-nouser": "恢复隐藏用户的编辑至{{GENDER:$1|[[User:$1|$1]]}}的最后版本", - "rollback-success": "已恢复$1的编辑,更改回$2的最后版本。", + "rollback-success": "已恢复{{GENDER:$3|$1}}的编辑;更改回{{GENDER:$4|$2}}的最后版本。", "rollback-success-notify": "已回退$1的编辑,更改回$2的最后版本。[$3 显示更改]", "sessionfailure-title": "会话无效", "sessionfailure": "似乎您的登录会话有问题;\n为了防止会话劫持,这个操作已经被取消。\n请返回先前的页面,重新载入该页面,然后重试。", @@ -2331,7 +2376,7 @@ "ipaddressorusername": "IP地址或用户名:", "ipbexpiry": "终止时间:", "ipbreason": "原因:", - "ipbreason-dropdown": "*常见封禁原因\n** 插入虚假信息\n** 删除页面内容\n** 添加垃圾外部链接\n** 插入无意义文字\n** 恐吓行为/骚扰\n** 滥用多个账户\n** 不能接受的用户名", + "ipbreason-dropdown": "*常见封禁原因\n** 插入虚假信息\n** 移除页面内容\n** 添加垃圾外部链接\n** 插入无意义文字\n** 恐吓行为/骚扰\n** 滥用多个账户\n** 不能接受的用户名", "ipb-hardblock": "阻止登录用户使用该IP地址编辑", "ipbcreateaccount": "阻止创建新账号", "ipbemailban": "阻止用户发送电子邮件", @@ -2585,7 +2630,7 @@ "import-nonewrevisions": "没有导入版本(所有都已存在或因错误跳过)。", "xml-error-string": "$1于行$2,列$3($4字节):$5", "import-upload": "上传XML数据", - "import-token-mismatch": "会话数据丢失。\n\n您可能已经退出。<strong>请核实您是否仍在登录,并重试</strong>。\n如果仍然不能工作,尝试[[Special:UserLogout|退出]]并重新登录,并检查您的浏览器是否允许来自该网站的cookie。", + "import-token-mismatch": "会话数据丢失。\n\n您可能已经退出。<strong>请核实您是否仍在登录,并重试</strong>。如果仍然不能工作,尝试[[Special:UserLogout|退出]]并重新登录,并检查您的浏览器是否允许来自该网站的cookie。", "import-invalid-interwiki": "不能从指定的wiki导入。", "import-error-edit": "页面“$1”未导入,因为您不被允许编辑它。", "import-error-create": "页面“$1”未导入,因为您不被允许创建它。", @@ -2609,7 +2654,7 @@ "tooltip-pt-mytalk": "{{GENDER:|您}}的讨论页面", "tooltip-pt-anontalk": "有关本IP地址的编辑的讨论", "tooltip-pt-preferences": "{{GENDER:|您}}的设置", - "tooltip-pt-watchlist": "你正在监视更改的页面的列表", + "tooltip-pt-watchlist": "您正在监视更改的页面的列表", "tooltip-pt-mycontris": "{{GENDER:|您}}的贡献的列表", "tooltip-pt-anoncontribs": "来自此IP地址的编辑列表", "tooltip-pt-login": "我们鼓励您登录;然而,这不是强制性的", @@ -2694,7 +2739,7 @@ "siteuser": "{{SITENAME}}用户$1", "anonuser": "{{SITENAME}}匿名用户$1", "lastmodifiedatby": "本页面被$3最后修改于$1 $2。", - "othercontribs": "基于$1的工作。", + "othercontribs": "基于$1的劳动成果。", "others": "其他", "siteusers": "{{SITENAME}}{{PLURAL:$2|{{GENDER:$1|用户}}}}$1", "anonusers": "{{SITENAME}}匿名{{PLURAL:$2|用户}}$1", @@ -2786,7 +2831,7 @@ "previousdiff": "←上一编辑", "nextdiff": "下一编辑→", "mediawarning": "<strong>警告:</strong>该文件类型可能含有恶意代码。执行后您的系统可能受损。", - "imagemaxsize": "图像尺寸限制:<br />''(文件说明页面)''", + "imagemaxsize": "图像尺寸限制:<br /><em>(文件说明页面)</em>", "thumbsize": "缩略图尺寸:", "widthheightpage": "$1×$2,$3页", "file-info": "文件大小:$1,MIME类型:$2", @@ -2827,7 +2872,7 @@ "seconds": "$1秒", "minutes": "$1分", "hours": "$1小时", - "days": "$1天", + "days": "{{PLURAL:$1|$1天}}", "weeks": "$1周", "months": "$1个月", "years": "$1å¹´", @@ -2858,7 +2903,7 @@ "variantname-gan-hant": "hant", "variantname-kk-cyrl": "kk-cyrl", "metadata": "元数据", - "metadata-help": "此文件中包含有扩展的信息。这些信息可能是由数码相机或扫描仪在创建或数字化过程中所添加的。\n\n如果此文件的源文件已经被修改,一些信息在修改后的文件中将不能完全反映出来。", + "metadata-help": "此文件中包含有额外的信息。这些信息可能是由数码相机或扫描仪在创建或数字化过程中所添加的。如果文件自初始状态已受到修改,一些详细说明可能无法反映修改后的文件。", "metadata-expand": "显示详细资料", "metadata-collapse": "隐藏详细资料", "metadata-fields": "在本信息中所列出的 EXIF 元数据域将包含在图片显示页面,当元数据表损坏时只显示以下信息。\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", @@ -3328,7 +3373,7 @@ "version-skin-colheader-name": "皮肤", "version-ext-colheader-version": "版本", "version-ext-colheader-license": "许可协议", - "version-ext-colheader-description": "说明", + "version-ext-colheader-description": "描述", "version-ext-colheader-credits": "作者", "version-license-title": "$1的许可协议", "version-license-not-found": "未找到此扩展相关的详细授权信息。", @@ -3534,7 +3579,7 @@ "htmlform-user-not-exists": "<strong>$1</strong>不存在。", "htmlform-user-not-valid": "<strong>$1</strong>不是一个有效的用户名。", "logentry-delete-delete": "$1{{GENDER:$2|删除}}页面$3", - "logentry-delete-delete_redir": "$1通过覆盖{{GENDER:$2|删除}}了重定向$3", + "logentry-delete-delete_redir": "$1通过覆盖{{GENDER:$2|删除}}重定向$3", "logentry-delete-restore": "$1{{GENDER:$2|还原}}页面$3", "logentry-delete-event": "$1{{GENDER:$2|更改}}$3的{{PLURAL:$5|$5个日志事件}}的可见性:$4", "logentry-delete-revision": "$1{{GENDER:$2|更改}}页面$3的{{PLURAL:$5|$5个版本}}的可见性:$4", @@ -3601,7 +3646,7 @@ "logentry-tag-update-revision": "$1{{GENDER:$2|更新了}}在页面$3的修订版本$4上的标签({{PLURAL:$7|添加了}}$6;并{{PLURAL:$9|移除了}}$8)", "logentry-tag-update-logentry": "$1在页面$3的日志记录$5中{{GENDER:$2|更新了}}标签({{PLURAL:$7|添加了}}$6;并{{PLURAL:$9|移除了}}$8)", "rightsnone": "(无)", - "revdelete-summary": "编辑摘要", + "rightslogentry-temporary-group": "$1(临时,直到$2)", "feedback-adding": "正在添加反馈至页面...", "feedback-back": "返回", "feedback-bugcheck": "请检查本bug是否为[$1 已知bug]。", @@ -3626,56 +3671,12 @@ "feedback-useragent": "用户代理:", "searchsuggest-search": "搜索{{SITENAME}}", "searchsuggest-containing": "含有...", - "api-error-autoblocked": "您的IP地址已被自动封禁,因为它曾被一位已封禁用户使用。", - "api-error-badaccess-groups": "您没有将文件上传到此 wiki 的权限。", "api-error-badtoken": "内部错误:会话无效。", - "api-error-blocked": "您已被封禁,不能编辑。", - "api-error-copyuploaddisabled": "通过URL上传的功能已被此服务器禁用。", - "api-error-duplicate": "在网站上已有相同内容的{{PLURAL:$1|另一个文件|另一些文件}}。", - "api-error-duplicate-archive": "在网站上曾有相同内容的{{PLURAL:$1|另一个文件|另一些文件}},但{{PLURAL:$1|已被}}删除。", - "api-error-empty-file": "您提交的文件是空的。", "api-error-emptypage": "不能创建没有内容的新页面。", - "api-error-fetchfileerror": "内部错误:获取文件时发生错误。", - "api-error-fileexists-forbidden": "名为$1的文件已经存在而且无法覆盖。", - "api-error-fileexists-shared-forbidden": "名为$1的文件已经存在于共享媒体库中而且无法覆盖。", - "api-error-file-too-large": "您提交的文件过大。", - "api-error-filename-tooshort": "文件名过短。", - "api-error-filetype-banned": "此类文件被禁止。", - "api-error-filetype-banned-type": "$1{{PLURAL:$4|不是允许的文件类型}}。允许的{{PLURAL:$3|文件类型是|文件类型有}}$2。", - "api-error-filetype-missing": "该文件没有扩展名。", - "api-error-hookaborted": "您试图进行的修改被一个扩展钩子终止。", - "api-error-http": "内部错误:无法连接到服务器。", - "api-error-illegal-filename": "文件名非法。", - "api-error-internal-error": "内部错误:此wiki在处理您的上传数据时出现了错误。", - "api-error-invalid-file-key": "内部错误:找不到临时文件。", - "api-error-missingparam": "内部错误:请求中缺少参数。", - "api-error-missingresult": "内部错误:无法确定是否复制成功。", - "api-error-mustbeloggedin": "您必须登录后再上传文件。", - "api-error-mustbeposted": "内部错误:请求需要HTTP POST", - "api-error-noimageinfo": "上传成功,但服务器没有向我们提供任何有关文件的信息。", - "api-error-nomodule": "内部错误:缺少上传模块集。", - "api-error-ok-but-empty": "内部错误:服务器没有响应。", - "api-error-overwrite": "不允许覆盖现有文件。", - "api-error-ratelimited": "您正在尝试在比该wiki允许时间更短的时间内上传更多文件。请等待几分钟后再试。", - "api-error-stashfailed": "内部错误:服务器保存临时文件失败。", "api-error-publishfailed": "内部错误:服务器发布临时文件失败。", - "api-error-stasherror": "上传文件存档时出现错误。", - "api-error-stashedfilenotfound": "试图从藏匿处上传时找不到藏匿的文件。", - "api-error-stashpathinvalid": "找到的藏匿文件的路径是无效的。", - "api-error-stashfilestorage": "存储文件至藏匿处时出错。", - "api-error-stashzerolength": "服务器不能藏匿文件,因为它已经没有藏匿空间。", - "api-error-stashnotloggedin": "您必须登录以保存文件至上传藏匿处。", - "api-error-stashwrongowner": "您试图在藏匿处访问的文件不属于您。", - "api-error-stashnosuchfilekey": "您试图在藏匿处访问的文件密钥不存在。", - "api-error-timeout": "服务器没有在预期时间内响应。", - "api-error-unclassified": "出现未知错误。", - "api-error-unknown-code": "未知错误:“$1”。", - "api-error-unknown-error": "内部错误:尝试上传文件时出错。", + "api-error-stashfailed": "内部错误:服务器保存临时文件失败。", "api-error-unknown-warning": "未知警告:“$1”。", "api-error-unknownerror": "未知错误:$1。", - "api-error-uploaddisabled": "该wiki停用上传。", - "api-error-verification-error": "该文件可能损坏或扩展名错误。", - "api-error-was-deleted": "此名称的文件曾被上传,随后被删除。", "duration-seconds": "$1秒", "duration-minutes": "$1分", "duration-hours": "$1小时", @@ -3712,7 +3713,7 @@ "expand_templates_generate_xml": "显示XML语法树", "expand_templates_generate_rawhtml": "显示原始HTML", "expand_templates_preview": "预览", - "expand_templates_preview_fail_html": "<em>因为{{SITENAME}}启用了Raw HTML并且丢失了会话数据,预览被隐藏以防止JavaScript攻击。</em>\n\n<strong>如果这是合法的预览尝试,请再次重试。</strong>\n如果仍然不能工作,尝试[[Special:UserLogout|退出]]并重新登录,并检查您的浏览器是否允许来自该网站的cookie。", + "expand_templates_preview_fail_html": "<em>因为{{SITENAME}}启用了Raw HTML并且丢失了会话数据,预览被隐藏以防止JavaScript攻击。</em>\n\n<strong>如果这是合法的预览尝试,请再次重试。</strong>如果仍然不能工作,尝试[[Special:UserLogout|退出]]并重新登录,并检查您的浏览器是否允许来自该网站的cookie。", "expand_templates_preview_fail_html_anon": "<em>因为{{SITENAME}}启用了Raw HTML并且丢失了会话数据,预览被隐藏以防止JavaScript攻击。</em>\n\n<strong>如果这是合法的预览尝试,请尝试[[Special:UserLogin|登录]]并重试。</strong>", "expand_templates_input_missing": "您需要提供至少一些输入文本。", "pagelanguage": "更改页面语言", @@ -3795,6 +3796,7 @@ "mw-widgets-titleinput-description-new-page": "页面不存在", "mw-widgets-titleinput-description-redirect": "重定向至$1", "mw-widgets-categoryselector-add-category-placeholder": "添加分类...", + "mw-widgets-usersmultiselect-placeholder": "添加更多...", "sessionmanager-tie": "不能结合多个请求的身份验证类型:$1。", "sessionprovider-generic": "$1会话", "sessionprovider-mediawiki-session-cookiesessionprovider": "基于cookie的会话", @@ -3907,9 +3909,9 @@ "changecredentials": "更改凭据", "changecredentials-submit": "更改凭据", "changecredentials-invalidsubpage": "$1不是有效的凭据类型。", - "changecredentials-success": "您的证书已被更改。", + "changecredentials-success": "您的凭据已被更改。", "removecredentials": "移除凭据", - "removecredentials-submit": "移除证书", + "removecredentials-submit": "移除凭据", "removecredentials-invalidsubpage": "$1不是有效的凭据类型。", "removecredentials-success": "您的证书已被移除。", "credentialsform-provider": "凭据类型:", @@ -3926,7 +3928,7 @@ "usercssispublic": "请注意:CSS子页面不应包含机密数据,因为它们可以被其他用户查看。", "restrictionsfield-badip": "无效的IP地址或段:$1", "restrictionsfield-label": "允许的IP段:", - "restrictionsfield-help": "每行一个IP地址或CIDR段。要启用所有,可使用<br><code>0.0.0.0/0</code><br><code>::/0</code>", + "restrictionsfield-help": "每行一个IP地址或CIDR段。要启用任何地址或地址段,可使用:<pre>0.0.0.0/0\n::/0</pre>", "revid": "修订版本$1", "pageid": "页面ID$1" } diff --git a/languages/i18n/zh-hant.json b/languages/i18n/zh-hant.json index 7f7a3bb9a3..c141307ca9 100644 --- a/languages/i18n/zh-hant.json +++ b/languages/i18n/zh-hant.json @@ -78,7 +78,11 @@ "Wehwei", "1233thehongkonger", "Maskers", - "Knch903" + "Knch903", + "Winstonyin", + "Wmr", + "烈羽", + "和平奮鬥救地球" ] }, "tog-underline": "底線標示連結:", @@ -247,7 +251,7 @@ "history": "頁面歷史", "history_short": "歷史", "history_small": "歷史", - "updatedmarker": "自我上次造訪後的更新", + "updatedmarker": "自我上次瀏覽之後的更新", "printableversion": "可列印版", "permalink": "靜態連結", "print": "列印", @@ -278,7 +282,7 @@ "talk": "討論", "views": "檢視", "toolbox": "工具", - "tool-link-userrights": "更改{{GENDER:$1|使用者}}群組", + "tool-link-userrights": "變更{{GENDER:$1|使用者}}群組", "tool-link-userrights-readonly": "檢視{{GENDER:$1|使用者}}群組", "tool-link-emailuser": "寄信給這位{{GENDER:$1|使用者}}", "userpage": "檢視使用者頁面", @@ -485,19 +489,12 @@ "login": "登入", "login-security": "驗証您的 ID", "nav-login-createaccount": "登入/建立帳號", - "userlogin": "登入/建立帳號", - "userloginnocreate": "登入", "logout": "登出", "userlogout": "登出", "notloggedin": "尚未登入", "userlogin-noaccount": "沒有帳號嗎?", "userlogin-joinproject": "加入 {{SITENAME}}", - "nologin": "您還沒有帳號嗎? $1。", - "nologinlink": "建立帳號", "createaccount": "建立帳號", - "gotaccount": "您已經擁有帳號了嗎? $1。", - "gotaccountlink": "登入", - "userlogin-resetlink": "忘了您登入的詳細資料?", "userlogin-resetpassword-link": "忘記密碼?", "userlogin-helplink2": "登入協助", "userlogin-loggedin": "您目前已登入 {{GENDER:$1|$1}} 使用者,\n請使用下列表單改登入另一位使用者。", @@ -510,7 +507,6 @@ "createaccountmail": "使用臨時的隨機密碼,並將它寄至指定的電子郵件地址", "createaccountmail-help": "可用來建立其他人的帳號 (不需要知道密碼)。", "createacct-realname": "真實姓名 (選填)", - "createaccountreason": "原因:", "createacct-reason": "原因", "createacct-reason-ph": "您為什麼要建立另一個帳號", "createacct-reason-help": "顯示於帳號建立日誌的訊息", @@ -709,12 +705,13 @@ "selfredirect": "<strong>警告:</strong> 您正建立連結至自己的重新導向。\n您可能指定錯要重新導向的目標頁面或者編輯錯頁面。\n若您再點選 \"{{int:savearticle}}\" 一次,將會繼續建立重新導向。", "missingcommenttext": "請在下方輸入評論。", "missingcommentheader": "<strong>提醒:</strong>您未填寫此評論的主旨。\n若您再點選 \"{{int:savearticle}}\" 一次,將略過主旨/標題直接儲存您的評論。", - "summary-preview": "摘要預覽:", + "summary-preview": "預覽摘要:", "subject-preview": "主旨預覽:", "previewerrortext": "嘗試預覽您的變更時發生錯誤。", "blockedtitle": "使用者已被封鎖", "blockedtext": "<strong>您的使用者名稱或 IP 位址以被封鎖。</strong>\n\n您被 $1 封鎖,\n原因爲 <em>$2</em>。\n\n* 封鎖開始時間:$8\n* 封鎖結束時間:$6\n* 相關封鎖對象:$7\n\n您可以聯絡 $1 或其他的 [[{{MediaWiki:Grouppage-sysop}}|管理員]] 討論封鎖的相關問題。\n若您已在 [[Special:Preferences|偏好設定]] 中設定了一個有效的電子郵件地址,且尚未被封鎖郵件功能,則您可透過 \"Email 聯絡此使用者\" 的功能來聯絡相關管理員。\n您目前的 IP 位址是 $3,此次封鎖的 ID 為 #$5。\n請您在詢問時附註以上詳細訊息。", "autoblockedtext": "因先前的另一位使用者被 $1 封鎖,您的 IP 位址已被自動封鎖。\n原因是:\n\n:<em>$2</em>\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:<em>$2</em>\n\n* 開始時間:$8\n* 結束時間:$6\n* 被封禁使用者:$7\n\n您目前的IP位址是$3。請在作出任何查詢時包含上述所有詳情。", "blockednoreason": "未說明原因", "whitelistedittext": "請先 $1 才可編輯頁面。", "confirmedittext": "在編輯此頁之前您必須確認您的電子郵件地址。\n請透過 [[Special:Preferences|偏好設定]] 設定並驗證您的電子郵件地址。", @@ -728,7 +725,7 @@ "newarticle": "(新)", "newarticletext": "您正連結至一頁不存在頁面。\n要建立該頁面,請在下方的編輯方塊中輸入內容 (詳情請參考 [$1 使用說明頁面]) 。\n如果您是不小心來到此頁面,請點選瀏覽器的 <strong>返回</strong> 按鈕。", "anontalkpagetext": "----\n<em>此討論頁面是給尚未建立帳號的匿名使用者使用</em>\n因此我們必須使用 IP 位址來辨識身份,但相同的 IP 位址可能由許多不同的使用者所共用。\n如果您是匿名使用者並且覺得評論的內容與您無關,請 [[Special:CreateAccount|建立新帳號]] 或 [[Special:UserLogin|登入]] 避免與其他匿名使用者混淆。", - "noarticletext": "此頁面目前沒有內容,您可以在其它頁面中[[Special:Search/{{PAGENAME}}|搜尋此頁面標題]]、<span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} 搜尋相關日誌]或[{{fullurl:{{FULLPAGENAME}}|action=edit}} 建立此頁]</span>。", + "noarticletext": "此頁面目前沒有內容,您可以在其它頁面中[[Special:Search/{{PAGENAME}}|搜尋此頁面標題]]、<span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} 搜尋相關日誌]或[{{fullurl:{{FULLPAGENAME}}|action=edit}} 建立此頁面]</span>。", "noarticletext-nopermission": "此頁面目前沒有內容,\n您可以在其它頁面中 [[Special:Search/{{PAGENAME}}|搜尋此頁面標題]],或 <span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} 搜尋相關日誌]</span>,但您沒有權限建立此頁面。", "missing-revision": "頁面名稱 \"{{FULLPAGENAME}}\" 的 #$1 修訂版本不存在。\n\n通常是因連結到過期的歷史頁面,該頁面已被刪除。\n詳情請參考 [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} 刪除日誌]。", "userpage-userdoesnotexist": "使用者帳號 \"$1\" 尚未註冊。\n若您要建立/編輯此頁面,請先檢查是否正確。", @@ -1016,6 +1013,7 @@ "search-interwiki-caption": "姐妹專案", "search-interwiki-default": "來自 $1 的結果:", "search-interwiki-more": "(更多)", + "search-interwiki-more-results": "更多結果", "search-relatedarticle": "相關", "searchrelated": "相關", "searchall": "全部", @@ -1146,10 +1144,11 @@ "userrights": "使用者權限管理", "userrights-lookup-user": "選擇用戶", "userrights-user-editname": "請輸入使用者名稱:", - "editusergroup": "加載用戶組", + "editusergroup": "載入使用者群組", "editinguser": "變更{{GENDER:$1|使用者}} <strong>[[User:$1|$1]]</strong> 的使用者權限 $2", - "userrights-editusergroup": "編輯使用者群組", - "userrights-viewusergroup": "檢視使用者群組", + "viewinguserrights": "檢視{{GENDER:$1|使用者}}<strong>[[User:$1|$1]]</strong>的使用者權限 $2", + "userrights-editusergroup": "編輯{{GENDER:$1|使用者}}群組", + "userrights-viewusergroup": "檢視{{GENDER:$1|使用者}}群組", "saveusergroups": "儲存{{GENDER:$1|使用者}}群組", "userrights-groupsmember": "所屬群組:", "userrights-groupsmember-auto": "所屬隱含群組:", @@ -1159,6 +1158,8 @@ "userrights-nodatabase": "資料庫 $1 不存在或不在本地主機的。", "userrights-changeable-col": "您可變更的群組", "userrights-unchangeable-col": "您不可變更的群組", + "userrights-expiry": "期限:", + "userrights-expiry-othertime": "其他時間:", "userrights-conflict": "使用者權限變更發生衝突!請檢閱並確認你的變更。", "group": "群組:", "group-user": "使用者", @@ -1359,6 +1360,37 @@ "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (請參考[[Special:NewPages|新頁面]])", "recentchanges-legend-plusminus": "(<em>±123</em>)", "recentchanges-submit": "顯示", + "rcfilters-activefilters": "現用過濾規則", + "rcfilters-search-placeholder": "過濾最近變更(瀏覽或開始輸入)", + "rcfilters-invalid-filter": "過濾規則無效", + "rcfilters-filterlist-title": "篩選器", + "rcfilters-filterlist-feedbacklink": "在新(測試版)過濾器中提供反饋", + "rcfilters-highlightmenu-title": "選擇顏色", + "rcfilters-filterlist-noresults": "找不到過濾規則", + "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-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": "活躍超過 30 天,編輯超過 500 次。", + "rcfilters-filter-bots-label": "機器人", + "rcfilters-filter-humans-label": "人類(非機器人)", + "rcfilters-filter-humans-description": "由人類編者做出的編輯", + "rcfilters-filter-minor-label": "小修改", + "rcfilters-filter-major-label": "非小編輯", + "rcfilters-filter-major-description": "未標記小修改的編輯。", + "rcfilters-filter-pageedits-label": "頁面編輯", + "rcfilters-filter-newpages-label": "頁面創建", + "rcfilters-filter-newpages-description": "創立新頁面的編緝。", + "rcfilters-filter-categorization-label": "分類變更", "rcnotefrom": "以下{{PLURAL:$5|為}}自 <strong>$3 $4</strong> 以來的變更 (最多顯示 <strong>$1</strong> 筆)。", "rclistfrom": "顯示自 $3 $2 以來的新變更", "rcshowhideminor": "$1 小修訂", @@ -1492,7 +1524,7 @@ "uploaded-setting-handler-svg": "於已上傳的 SVG 檔案中找到 <code>$1=\"$2\"</code>,已禁止 SVG 使用 remote/data/script 設定 \"handler\" 屬性。", "uploaded-remote-url-svg": "於已上傳的 SVG 檔案中找到 <code>$1=\"$2\"</code>,已禁止 SVG 使用任何遠端 URL 設定樣式。", "uploaded-image-filter-svg": "於已上傳的 SVG 檔案中找到圖片過濾器使用 URL:<code><$1 $2=\"$3\"></code>。", - "uploadscriptednamespace": "æ­¤ SVG 檔案使用了非法的命名空間 \"$1\"。", + "uploadscriptednamespace": "æ­¤ SVG 檔案使用了非法的命名空間 \"<nowiki>$1</nowiki>\"。", "uploadinvalidxml": "無法解析已上傳檔案中的 XML。", "uploadvirus": "該檔案含有病毒!\n詳細資料:$1", "uploadjava": "該檔案為包含 Java .class 檔案的 ZIP 檔案。\n因 Java 檔案可能跳過安全檢查造成安全性問題,不允許上傳 Java 檔案。", @@ -1877,7 +1909,8 @@ "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": "輸入 <kbd>max</kbd> 以使用最大限制。", - "apisandbox-multivalue-all-values": "$1(所有值)", + "apisandbox-multivalue-all-namespaces": "$1 (所有命名空間)", + "apisandbox-multivalue-all-values": "$1 (所有值)", "booksources": "圖書資源", "booksources-search-legend": "尋找圖書資源", "booksources-isbn": "國際標準書號:", @@ -2009,7 +2042,7 @@ "emailccsubject": "您寄給 $1 的訊息副本:$2", "emailsent": "已寄出電子郵件", "emailsenttext": "已寄出您的電子郵件訊息。", - "emailuserfooter": "這封電子郵件是由 $1 透過 {{SITENAME}} 的 \"{{int:emailuser}}\" 功能{{GENDER:$1|寄給}} {{GENDER:$1|$2}}。", + "emailuserfooter": "這封電子郵件是由$1透過{{SITENAME}}的「{{int:emailuser}}」功能{{GENDER:$1|寄給}}{{GENDER:$1|$2}}的。{{GENDER:$2|您的}}郵件將直接寄往{{GENDER:$1|原發件人}},{{GENDER:$1|他|她|他}}將能夠看到您的電子郵件地址。", "usermessage-summary": "留訊息至系統。", "usermessage-editor": "系統訊息", "watchlist": "監視清單", @@ -2107,7 +2140,7 @@ "editcomment": "編輯摘要為:<em>$1</em>。", "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}} 所做的編輯;\n變更回由 {{GENDER:$4|$2}} 修訂的最後一個版本。", "rollback-success-notify": "已還原 $1 所做的編輯;\n變更回由 $2 修訂的最後一個版本。[$3 顯示變更]", "sessionfailure-title": "連線階段失敗", "sessionfailure": "您的登入連線階段似乎有問題,\n為了預防連線階段受到劫持攻擊,此動作已經被取消。\n請返回上一頁,重新讀取該頁面再試一次。", @@ -2124,7 +2157,7 @@ "changecontentmodel-emptymodels-title": "沒有內容模型可用", "changecontentmodel-emptymodels-text": "[[:$1]]上的內容不能轉換為任何類型。", "log-name-contentmodel": "內容模型變更日誌", - "log-description-contentmodel": "與頁面內容模型相關的事件", + "log-description-contentmodel": "此頁列舉頁面內容模型的變更記錄以及使用非預設的內容模型所創建的頁面。", "logentry-contentmodel-new": "$1 {{GENDER:$2|已使用}}非預設的內容模型 \"$5\" 建立頁面 $3", "logentry-contentmodel-change": "$1 {{GENDER:$2|已變更}}頁面 $3 的內容模型自 \"$4\" 至 \"$5\"", "logentry-contentmodel-change-revertlink": "還原", @@ -2384,6 +2417,7 @@ "proxyblockreason": "因您的 IP 位址是開放代理伺服器,已被封鎖。\n請聯絡您的網路服務供應商或您所在組織的技術支援,告知他們此嚴重的安全性問題。", "sorbsreason": "您的 IP 位址在 {{SITENAME}} 使用的 DNSBL 列為開放代理伺服器。", "sorbs_create_account_reason": "您的 IP 位址在 {{SITENAME}} 使用的 DNSBL 列為開放代理伺服器。\n您不能建立帳號。", + "softblockrangesreason": "您的IP位址($1)不允許匿名貢獻,請登入。", "xffblockreason": "您的 IP 位址使用 X-Forwarded-For 標頭,您或您使用的代理伺服器已被封鎖。\n封鎖的原因為:$1", "cant-see-hidden-user": "您欲封鎖的使用者已經被封鎖並且隱藏。\n您沒有隱藏使用者的權限,您無法檢視或編輯該使用者的封鎖狀態。", "ipbblocked": "因您已被封鎖,故無法封鎖或解除封鎖其他使用者。", @@ -2419,6 +2453,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": "移動頁面", @@ -2669,6 +2705,7 @@ "pageinfo-length": "頁面長度 (位元組)", "pageinfo-article-id": "頁面 ID", "pageinfo-language": "頁面內容語言", + "pageinfo-language-change": "變更", "pageinfo-content-model": "頁面內容模型", "pageinfo-content-model-change": "變更", "pageinfo-robot-policy": "由機器人建立索引", @@ -2802,7 +2839,7 @@ "variantname-gan-hans": "‪中文(简体)", "variantname-gan-hant": "‪中文(繁體)", "metadata": "詮釋資料", - "metadata-help": "此檔案包含額外的資訊,可能由數位相機或掃描機所建立的。\n若修改此檔案,部份資訊將無法保留。", + "metadata-help": "此文件中包含額外信息。這些信息可能是由數碼相機或掃描儀在創建或數字化過程中所添加的。如果文件自初始狀態已受到修改,一些詳細說明可能無法反映修改後的文件。", "metadata-expand": "顯示詳細資料", "metadata-collapse": "隱藏詳細資料", "metadata-fields": "在本訊息中所列出的 EXIF 詮釋資料域將包含在圖片顯示頁面,當詮釋資料表損壞時只顯示以下訊息。\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", @@ -3412,7 +3449,7 @@ "tags-edit-revision-legend": "加入或移除此標籤自{{PLURAL:$1|此修訂|全部 $1 筆修訂}}", "tags-edit-logentry-legend": "加入或移除此標籤自{{PLURAL:$1|此日誌項目|全部 $1 筆日誌項目}}", "tags-edit-existing-tags": "已存在的標籤:", - "tags-edit-existing-tags-none": "''無''", + "tags-edit-existing-tags-none": "<em>無</em>", "tags-edit-new-tags": "新標籤:", "tags-edit-add": "加入這些標籤:", "tags-edit-remove": "移除這些標籤:", @@ -3477,6 +3514,7 @@ "htmlform-user-not-exists": "<strong>$1</strong> 並不存在。", "htmlform-user-not-valid": "<strong>$1</strong> 不是有效的使用者名稱。", "logentry-delete-delete": "$1 刪除頁面 $3", + "logentry-delete-delete_redir": "$1通過覆蓋,{{GENDER:$2|刪除了}}重定向$3。", "logentry-delete-restore": "$1 還原頁面 $3", "logentry-delete-event": "$1 {{GENDER:$2|已更改}} $3 中 {{PLURAL:$5|1 筆日誌|$5 筆日誌}}的可見性:$4", "logentry-delete-revision": "$1 {{GENDER:$2|已更改}}頁面 $3 中 {{PLURAL:$5|1 筆修訂|$5 筆修訂}}的可見性:$4", @@ -3488,7 +3526,7 @@ "logentry-suppress-event-legacy": "$1 {{GENDER:$2|已暗中變更}} $3 中日誌的可見性", "logentry-suppress-revision-legacy": "$1 {{GENDER:$2|已暗中更改}}頁面 $3 中修訂的可見性", "revdelete-content-hid": "已隱藏內容", - "revdelete-summary-hid": "己隱藏摘要", + "revdelete-summary-hid": "已隱藏摘要", "revdelete-uname-hid": "隱藏使用者名稱", "revdelete-content-unhid": "取消隱藏內容", "revdelete-summary-unhid": "取消隱藏編輯摘要", @@ -3543,7 +3581,6 @@ "logentry-tag-update-revision": "$1 {{GENDER:$2|已更新}}標籤於頁面 $3 的修訂 $4 ({{PLURAL:$7|加入}} $6; {{PLURAL:$9|移除}} $8)。", "logentry-tag-update-logentry": "$1 {{GENDER:$2|已更新}}標籤於頁面 $3 的日誌項目 $5 ({{PLURAL:$7|加入}} $6; {{PLURAL:$9|移除}} $8)。", "rightsnone": "(無)", - "revdelete-summary": "編輯摘要", "feedback-adding": "正在新增意見回饋至頁面...", "feedback-back": "返回", "feedback-bugcheck": "很好! 檢查一下您的意見是不是已經被列為 [$1 已知問題]。", @@ -3568,56 +3605,12 @@ "feedback-useragent": "使用者代理:", "searchsuggest-search": "搜尋 {{SITENAME}}", "searchsuggest-containing": "包含...", - "api-error-autoblocked": "您的IP位址已經被自動封禁,因為它曾經被一名已封禁的使用者使用過。", - "api-error-badaccess-groups": "您沒有權限在此 Wiki 上傳檔案。", "api-error-badtoken": "內部錯誤:密鑰錯誤。", - "api-error-blocked": "您已被封鎖,無法編輯。", - "api-error-copyuploaddisabled": "此伺服器已停用使用 URL 上傳檔案的功能。", - "api-error-duplicate": "在網站上已有相同內容的{{PLURAL:$1|其他檔案|其他檔案}}。", - "api-error-duplicate-archive": "在網站上曾有相同內容的{{PLURAL:$1|其他檔案|其他檔案}},但已被刪除。", - "api-error-empty-file": "您送出的檔案是空的。", "api-error-emptypage": "不允許建立空白的頁面。", - "api-error-fetchfileerror": "內部錯誤:取得檔案時發生錯誤。", - "api-error-fileexists-forbidden": "名稱為 \"$1\" 的檔案已經存在,並且不能被覆寫。", - "api-error-fileexists-shared-forbidden": "名稱為 \"$1\" 的檔案已經存在於共用儲存庫,並且不能被覆寫。", - "api-error-file-too-large": "您送出的檔案太大了。", - "api-error-filename-tooshort": "檔案名稱過短。", - "api-error-filetype-banned": "此檔案類型已禁止使用。", - "api-error-filetype-banned-type": "$1 {{PLURAL:$4|不是允許的檔案類型}}。 允許的{{PLURAL:$3|檔案類型有}} $2。", - "api-error-filetype-missing": "此檔案名稱缺少副檔名。", - "api-error-hookaborted": "您嘗試進行的修改被某個擴充套件中止。", - "api-error-http": "內部錯誤:無法連線到伺服器。", - "api-error-illegal-filename": "不允許使用的檔案名稱。", - "api-error-internal-error": "內部錯誤:此 Wiki 在處理你的上傳時發生錯誤。", - "api-error-invalid-file-key": "內部錯誤:於暫存儲存庫中查無檔案。", - "api-error-missingparam": "內部錯誤:請求中缺少參數。", - "api-error-missingresult": "內部錯誤:無法辨識複製是否成功。", - "api-error-mustbeloggedin": "您必須登入方可上傳檔案。", - "api-error-mustbeposted": "內部錯誤:請求需使用 HTTP POST。", - "api-error-noimageinfo": "已成功上傳,但伺服器未回應任何該檔案的資訊。", - "api-error-nomodule": "內部錯誤:缺少上傳模組集。", - "api-error-ok-but-empty": "內部錯誤:伺服器沒有回應。", - "api-error-overwrite": "不允許覆蓋已存在的檔案。", - "api-error-ratelimited": "您正在嘗試在比本wiki所允許時間更短的時間內,上傳更多的檔案。請稍待幾分鐘之後再試一次。", - "api-error-stashfailed": "內部錯誤:伺服器儲存暫存檔案失敗。", "api-error-publishfailed": "內部錯誤:伺服器發佈暫存檔案失敗。", - "api-error-stasherror": "上傳檔案至儲藏庫時發生錯誤。", - "api-error-stashedfilenotfound": "嘗試從儲藏庫上傳檔案時查無該檔案。", - "api-error-stashpathinvalid": "應該存在儲藏檔案的路徑無效。", - "api-error-stashfilestorage": "儲存檔案至儲藏庫時發生錯誤。", - "api-error-stashzerolength": "伺服器無法儲藏該檔案,因為該檔案大小為 0。", - "api-error-stashnotloggedin": "您必須登入以儲存檔案於上傳儲藏庫。", - "api-error-stashwrongowner": "您嘗試在儲藏庫存取的檔案不屬於您的。", - "api-error-stashnosuchfilekey": "您嘗試在儲藏庫存取的檔案金鑰不存在。", - "api-error-timeout": "伺服器沒有在預期的時間內回應。", - "api-error-unclassified": "發生不明錯誤。", - "api-error-unknown-code": "不明錯誤:\"$1\"。", - "api-error-unknown-error": "內部錯誤:嘗試上傳您的檔案時發生錯誤。", + "api-error-stashfailed": "內部錯誤:伺服器儲存暫存檔案失敗。", "api-error-unknown-warning": "不明警告:\"$1\"。", "api-error-unknownerror": "不明錯誤:\"$1\"。", - "api-error-uploaddisabled": "æ­¤ Wiki 的上傳功能已停用。", - "api-error-verification-error": "此檔案可能已損壞,或副檔名錯誤。", - "api-error-was-deleted": "與此名稱相同的檔案曾被上傳過,隨後遭到刪除。", "duration-seconds": "$1 秒", "duration-minutes": "$1 分鐘", "duration-hours": "$1 小時", @@ -3662,7 +3655,12 @@ "pagelang-language": "語言", "pagelang-use-default": "使用預設語言", "pagelang-select-lang": "選擇語言", + "pagelang-reason": "原因", "pagelang-submit": "送出", + "pagelang-nonexistent-page": "頁面 $1 不存在。", + "pagelang-unchanged-language": "頁面$1的語言已經設為$2。", + "pagelang-unchanged-language-default": "頁面$1的語言已經設為wiki的預設內容語言。", + "pagelang-db-failed": "資料庫更改頁面語言失敗。", "right-pagelang": "變更頁面語言", "action-pagelang": "變更頁面語言", "log-name-pagelang": "語言變更日誌", @@ -3727,8 +3725,12 @@ "special-characters-title-emdash": "長破折號", "special-characters-title-minus": "減號", "mw-widgets-dateinput-no-date": "未選擇日期", + "mw-widgets-mediasearch-input-placeholder": "搜尋媒體", + "mw-widgets-mediasearch-noresults": "查無結果。", "mw-widgets-titleinput-description-new-page": "頁面不存在", "mw-widgets-titleinput-description-redirect": "重新導向至 $1", + "mw-widgets-categoryselector-add-category-placeholder": "加入分類...", + "mw-widgets-usersmultiselect-placeholder": "添加更多...", "sessionmanager-tie": "無法合併多個請求認証類型:$1。", "sessionprovider-generic": "$1 連線階段", "sessionprovider-mediawiki-session-cookiesessionprovider": "以 cookie 為基礎的連線階段", @@ -3753,6 +3755,7 @@ "log-action-filter-contentmodel-change": "內容模型的變更", "log-action-filter-contentmodel-new": "使用非預設內容模型建立的頁面", "log-action-filter-delete-delete": "頁面刪除", + "log-action-filter-delete-delete_redir": "重新導向覆寫", "log-action-filter-delete-restore": "頁面取消刪除", "log-action-filter-delete-event": "日誌刪除", "log-action-filter-delete-revision": "修訂刪除", @@ -3788,7 +3791,7 @@ "authmanager-authn-no-local-user": "提供的憑證沒有與任何在此 wiki 上的使用者相關聯。", "authmanager-authn-no-local-user-link": "提供的憑證有效但沒有與任何在此 wiki 上的使用者相關聯。請採用其他方式登入,或建立新使用者,您將會有選項可以連結您先前的憑證到新帳號。", "authmanager-authn-autocreate-failed": "自動建立本地帳號失敗:$1", - "authmanager-change-not-supported": "提供的憑證無法變更,因為尚無法使用。", + "authmanager-change-not-supported": "提供的認證無法變更,因為尚無法使用。", "authmanager-create-disabled": "已關閉帳號自動建立。", "authmanager-create-from-login": "要建立您的帳號,請先填寫此欄位。", "authmanager-create-not-in-progress": "帳號建立尚未進行或連線階段資料已遺失,請重頭再開始。", @@ -3837,15 +3840,15 @@ "authpage-cannot-link-continue": "無法繼續帳號連結,您的連線階段似乎已逾時。", "cannotauth-not-allowed-title": "權限不足", "cannotauth-not-allowed": "您不被允許使用此頁面", - "changecredentials": "更改憑證", - "changecredentials-submit": "更改憑證", + "changecredentials": "變更認證", + "changecredentials-submit": "變更認證", "changecredentials-invalidsubpage": "$1 不是有效的憑証類型。", - "changecredentials-success": "已更改您的憑證。", - "removecredentials": "移除憑證", - "removecredentials-submit": "移除憑證", + "changecredentials-success": "已變更您的認證。", + "removecredentials": "移除認證", + "removecredentials-submit": "移除認證", "removecredentials-invalidsubpage": "$1 不是有效的憑証類型。", "removecredentials-success": "已移除您的憑證。", - "credentialsform-provider": "憑證類型:", + "credentialsform-provider": "認證類型:", "credentialsform-account": "帳號名稱:", "cannotlink-no-provider-title": "沒有可連結的帳號", "cannotlink-no-provider": "沒有可連結的帳號。", @@ -3859,5 +3862,7 @@ "usercssispublic": "請注意:CSS 子頁面可被其他使用者檢視,不應包含憑証資料。", "restrictionsfield-badip": "無效的 IP 位址或範圍:$1", "restrictionsfield-label": "允許的 IP 範圍:", - "restrictionsfield-help": "一個 IP 位址或 CIDR 範圍一行,要開啟所有範圍可使用 <br><code>0.0.0.0/0</code><br><code>::/0</code>" + "restrictionsfield-help": "一個 IP 位址或 CIDR 範圍一行,要開啟所有範圍可使用:<pre>0.0.0.0/0\n::/0</pre>", + "revid": "修訂 $1", + "pageid": "頁面 ID $1" } diff --git a/languages/messages/MessagesAb.php b/languages/messages/MessagesAb.php index c675f099f2..9ad59516f7 100644 --- a/languages/messages/MessagesAb.php +++ b/languages/messages/MessagesAb.php @@ -73,4 +73,3 @@ $magicWords = [ 'special' => [ '0', 'цастәи', 'служебная', 'special' ], 'index' => [ '1', '__АИНДЕКС__', '__ИНДЕКС__', '__INDEX__' ], ]; - diff --git a/languages/messages/MessagesAce.php b/languages/messages/MessagesAce.php index ad14f4de63..d20ad9b2af 100644 --- a/languages/messages/MessagesAce.php +++ b/languages/messages/MessagesAce.php @@ -153,4 +153,3 @@ $specialPageAliases = [ 'Whatlinkshere' => [ 'Hubong_gisa' ], 'Withoutinterwiki' => [ 'Hana_interwiki' ], ]; - diff --git a/languages/messages/MessagesAf.php b/languages/messages/MessagesAf.php index d6dab21ac7..d82cde7c82 100644 --- a/languages/messages/MessagesAf.php +++ b/languages/messages/MessagesAf.php @@ -196,4 +196,3 @@ $specialPageAliases = [ # glibc is wrong in this respect in some versions $separatorTransformTable = [ ',' => "\xc2\xa0", '.' => ',' ]; $linkTrail = "/^([a-z]+)(.*)$/sD"; - diff --git a/languages/messages/MessagesAk.php b/languages/messages/MessagesAk.php index b45bdbf3c5..abbffa444f 100644 --- a/languages/messages/MessagesAk.php +++ b/languages/messages/MessagesAk.php @@ -26,4 +26,3 @@ $namespaceNames = [ NS_CATEGORY => 'Nkyekyem', NS_CATEGORY_TALK => 'Nkyekyem_nkɔmmɔbea', ]; - diff --git a/languages/messages/MessagesAln.php b/languages/messages/MessagesAln.php index 80d31bc952..f5abe87712 100644 --- a/languages/messages/MessagesAln.php +++ b/languages/messages/MessagesAln.php @@ -59,4 +59,3 @@ $magicWords = [ 'servername' => [ '0', 'EMNISERVERIT', 'EMRIISERVERIT', 'SERVERNAME' ], 'currentweek' => [ '1', 'JAVAAKTUALE', 'JAVAMOMENTALE', 'CURRENTWEEK' ], ]; - diff --git a/languages/messages/MessagesAm.php b/languages/messages/MessagesAm.php index a991c63df1..99f6d3a0a7 100644 --- a/languages/messages/MessagesAm.php +++ b/languages/messages/MessagesAm.php @@ -37,4 +37,3 @@ $specialPageAliases = [ 'Newpages' => [ 'አዳዲስ_ገጾች' ], 'Shortpages' => [ 'አጫጭር_ገጾች' ], ]; - diff --git a/languages/messages/MessagesAn.php b/languages/messages/MessagesAn.php index 038566bade..b66fe0e0d6 100644 --- a/languages/messages/MessagesAn.php +++ b/languages/messages/MessagesAn.php @@ -119,4 +119,3 @@ $specialPageAliases = [ 'Wantedtemplates' => [ 'Plantillas_requiestas', 'Plantillas_demandatas' ], 'Watchlist' => [ 'Lista_de_seguimiento' ], ]; - diff --git a/languages/messages/MessagesAng.php b/languages/messages/MessagesAng.php index d6432de38f..9e113b4263 100644 --- a/languages/messages/MessagesAng.php +++ b/languages/messages/MessagesAng.php @@ -39,4 +39,3 @@ $namespaceAliases = [ 'Floccgesprec' => NS_CATEGORY_TALK, 'Floccmotung' => NS_CATEGORY_TALK, ]; - diff --git a/languages/messages/MessagesAnp.php b/languages/messages/MessagesAnp.php index fb6adc7653..b731b74f2e 100644 --- a/languages/messages/MessagesAnp.php +++ b/languages/messages/MessagesAnp.php @@ -9,4 +9,3 @@ */ $fallback = 'hi'; - diff --git a/languages/messages/MessagesAr.php b/languages/messages/MessagesAr.php index a83b71754f..795d7066e2 100644 --- a/languages/messages/MessagesAr.php +++ b/languages/messages/MessagesAr.php @@ -433,4 +433,3 @@ $imageFiles = [ 'button-headline' => 'ar/button_headline.png', 'button-nowiki' => 'ar/button_nowiki.png', ]; - diff --git a/languages/messages/MessagesArc.php b/languages/messages/MessagesArc.php index 0c1b668ff4..e0ab2da780 100644 --- a/languages/messages/MessagesArc.php +++ b/languages/messages/MessagesArc.php @@ -125,4 +125,3 @@ $magicWords = [ 'url_path' => [ '0', 'ܫܒܝܠܐ', 'PATH' ], 'url_wiki' => [ '0', 'ܘܝܩܝ', 'WIKI' ], ]; - diff --git a/languages/messages/MessagesArn.php b/languages/messages/MessagesArn.php index 723bd7bdfc..b03b0b30ad 100644 --- a/languages/messages/MessagesArn.php +++ b/languages/messages/MessagesArn.php @@ -9,4 +9,3 @@ */ $fallback = 'es'; - diff --git a/languages/messages/MessagesArq.php b/languages/messages/MessagesArq.php index 311f2e26a2..2cfb4648bf 100644 --- a/languages/messages/MessagesArq.php +++ b/languages/messages/MessagesArq.php @@ -16,4 +16,3 @@ $separatorTransformTable = [ ]; $fallback = 'ar'; - diff --git a/languages/messages/MessagesArz.php b/languages/messages/MessagesArz.php index 2e69353069..8a4399864b 100644 --- a/languages/messages/MessagesArz.php +++ b/languages/messages/MessagesArz.php @@ -317,7 +317,7 @@ $magicWords = [ 'pagesincategory_files' => [ '0', 'فايلات', 'ملفات', 'files' ], ]; -// (bug 16469) Override Eastern Arabic numberals, use Western +// (T18469) Override Eastern Arabic numberals, use Western $digitTransformTable = [ '0' => '0', '1' => '1', @@ -332,4 +332,3 @@ $digitTransformTable = [ '.' => '.', ',' => ',', ]; - diff --git a/languages/messages/MessagesAs.php b/languages/messages/MessagesAs.php index bf757eef68..2516fc7f80 100644 --- a/languages/messages/MessagesAs.php +++ b/languages/messages/MessagesAs.php @@ -165,4 +165,3 @@ $digitTransformTable = [ ]; $digitGroupingPattern = "##,##,###"; - diff --git a/languages/messages/MessagesAst.php b/languages/messages/MessagesAst.php index 99cc28b23d..95bbf5a1ba 100644 --- a/languages/messages/MessagesAst.php +++ b/languages/messages/MessagesAst.php @@ -60,4 +60,3 @@ $specialPageAliases = [ 'Search' => [ 'Gueta' ], 'Statistics' => [ 'Estadístiques' ], ]; - diff --git a/languages/messages/MessagesAvk.php b/languages/messages/MessagesAvk.php index fab56b1a2f..b335f664ec 100644 --- a/languages/messages/MessagesAvk.php +++ b/languages/messages/MessagesAvk.php @@ -89,4 +89,3 @@ $specialPageAliases = [ 'Wantedpages' => [ 'ErunBueem', 'EmpayanGluyasikieem' ], 'Watchlist' => [ 'Suzdasiki' ], ]; - diff --git a/languages/messages/MessagesAy.php b/languages/messages/MessagesAy.php index e065664953..8327330322 100644 --- a/languages/messages/MessagesAy.php +++ b/languages/messages/MessagesAy.php @@ -9,4 +9,3 @@ */ $fallback = 'es'; - diff --git a/languages/messages/MessagesAz.php b/languages/messages/MessagesAz.php index 66c7b9f39a..45afe2a55f 100644 --- a/languages/messages/MessagesAz.php +++ b/languages/messages/MessagesAz.php @@ -59,4 +59,3 @@ $magicWords = [ ]; $separatorTransformTable = [ ',' => '.', '.' => ',' ]; - diff --git a/languages/messages/MessagesAzb.php b/languages/messages/MessagesAzb.php index 92ca0f87fa..1ae39393d8 100644 --- a/languages/messages/MessagesAzb.php +++ b/languages/messages/MessagesAzb.php @@ -83,4 +83,3 @@ $magicWords = [ 'img_none' => [ '1', 'هئچ', 'هیچ', 'none' ], 'img_framed' => [ '1', 'قابیق', 'قاب', 'frame', 'framed', 'enframed' ], ]; - diff --git a/languages/messages/MessagesBa.php b/languages/messages/MessagesBa.php index b00da102bb..e1180361f6 100644 --- a/languages/messages/MessagesBa.php +++ b/languages/messages/MessagesBa.php @@ -129,4 +129,3 @@ $specialPageAliases = [ $namespaceGenderAliases = []; $linkTrail = '/^((?:[a-z]|а|б|в|г|д|е|ё|ж|з|и|й|к|л|м|н|о|п|р|с|т|у|ф|х|ц|ч|ш|щ|ъ|ы|ь|э|ю|я|ә|Ó©|Ò¯|ғ|Ò¡|Ò£|ҙ|Ò«|Ò»|“|»)+)(.*)$/sDu'; - diff --git a/languages/messages/MessagesBan.php b/languages/messages/MessagesBan.php index 79d9d1c61a..519273019b 100644 --- a/languages/messages/MessagesBan.php +++ b/languages/messages/MessagesBan.php @@ -9,4 +9,3 @@ */ $fallback = 'id'; - diff --git a/languages/messages/MessagesBar.php b/languages/messages/MessagesBar.php index f484027f74..8b8041f5b9 100644 --- a/languages/messages/MessagesBar.php +++ b/languages/messages/MessagesBar.php @@ -47,4 +47,3 @@ $namespaceAliases = [ // Remove German aliases $namespaceGenderAliases = []; - diff --git a/languages/messages/MessagesBbc_latn.php b/languages/messages/MessagesBbc_latn.php index 8449512a7d..65c0d634cc 100644 --- a/languages/messages/MessagesBbc_latn.php +++ b/languages/messages/MessagesBbc_latn.php @@ -9,4 +9,3 @@ */ $fallback = 'id'; - diff --git a/languages/messages/MessagesBcc.php b/languages/messages/MessagesBcc.php index 84f273bc9b..14b89bf96c 100644 --- a/languages/messages/MessagesBcc.php +++ b/languages/messages/MessagesBcc.php @@ -131,4 +131,3 @@ $specialPageAliases = [ 'Whatlinkshere' => [ 'ای لینکی ادان هست' ], 'Withoutinterwiki' => [ 'بی بین ویکی' ], ]; - diff --git a/languages/messages/MessagesBcl.php b/languages/messages/MessagesBcl.php index 0b0d42eca3..44e1f25431 100644 --- a/languages/messages/MessagesBcl.php +++ b/languages/messages/MessagesBcl.php @@ -87,4 +87,3 @@ $magicWords = [ 'pagesincategory' => [ '1', 'PAHINASAKATEGORYA', 'PAHINASAKAT', 'PAGESINCATEGORY', 'PAGESINCAT' ], 'pagesize' => [ '1', 'PAHINASOKOL', 'PAGESIZE' ], ]; - diff --git a/languages/messages/MessagesBe.php b/languages/messages/MessagesBe.php index 9822436dad..ea807fd3e6 100644 --- a/languages/messages/MessagesBe.php +++ b/languages/messages/MessagesBe.php @@ -46,7 +46,7 @@ $magicWords = [ $bookstoreList = [ 'OZ.by' => 'http://oz.by/search.phtml?what=books&isbn=$1', - 'Amazon.com' => 'http://www.amazon.com/exec/obidos/ISBN=$1' + 'Amazon.com' => 'https://www.amazon.com/exec/obidos/ISBN=$1' ]; $datePreferences = [ @@ -70,4 +70,3 @@ $separatorTransformTable = [ ]; $linkTrail = '/^([абвгґджзеёжзійклмнопрстуўфхцчшыьэюяćčłńśšŭźža-z]+)(.*)$/sDu'; - diff --git a/languages/messages/MessagesBe_tarask.php b/languages/messages/MessagesBe_tarask.php index 25449f8a0f..a6fd58aa9d 100644 --- a/languages/messages/MessagesBe_tarask.php +++ b/languages/messages/MessagesBe_tarask.php @@ -215,7 +215,7 @@ $magicWords = [ $bookstoreList = [ 'OZ.by' => 'http://oz.by/search.phtml?what=books&isbn=$1', - 'Amazon.com' => 'http://www.amazon.com/exec/obidos/ISBN=$1' + 'Amazon.com' => 'https://www.amazon.com/exec/obidos/ISBN=$1' ]; $datePreferences = [ @@ -244,4 +244,3 @@ $imageFiles = [ 'button-italic' => 'be-tarask/button_italic.png', 'button-link' => 'be-tarask/button_link.png', ]; - diff --git a/languages/messages/MessagesBg.php b/languages/messages/MessagesBg.php index 74b7fe00a5..3a21e75dbf 100644 --- a/languages/messages/MessagesBg.php +++ b/languages/messages/MessagesBg.php @@ -218,4 +218,3 @@ $bookstoreList = [ $linkTrail = '/^([a-zабвгдежзийклмнопрстуфхцчшщъыьэюя]+)(.*)$/sDu'; $separatorTransformTable = [ ',' => "\xc2\xa0", '.' => ',' ]; - diff --git a/languages/messages/MessagesBh.php b/languages/messages/MessagesBh.php index 4453bd1954..d0b900036c 100644 --- a/languages/messages/MessagesBh.php +++ b/languages/messages/MessagesBh.php @@ -9,4 +9,3 @@ */ $fallback = 'bho'; - diff --git a/languages/messages/MessagesBjn.php b/languages/messages/MessagesBjn.php index 9b70dbf81c..f1505afd98 100644 --- a/languages/messages/MessagesBjn.php +++ b/languages/messages/MessagesBjn.php @@ -135,4 +135,3 @@ $specialPageAliases = [ 'Whatlinkshere' => [ 'Tautan_balik' ], 'Withoutinterwiki' => [ 'Kada_pakai_interwiki' ], ]; - diff --git a/languages/messages/MessagesBm.php b/languages/messages/MessagesBm.php index f5afe2af4a..654171e26f 100644 --- a/languages/messages/MessagesBm.php +++ b/languages/messages/MessagesBm.php @@ -12,4 +12,3 @@ $fallback = 'fr'; // Remove French aliases $namespaceGenderAliases = []; - diff --git a/languages/messages/MessagesBo.php b/languages/messages/MessagesBo.php index dbf3443957..043f4d1943 100644 --- a/languages/messages/MessagesBo.php +++ b/languages/messages/MessagesBo.php @@ -20,4 +20,3 @@ $digitTransformTable = [ '8' => '༨', # ༨ '9' => '༩', # ༩ ]; - diff --git a/languages/messages/MessagesBpy.php b/languages/messages/MessagesBpy.php index d8aee4fdf3..decfbddf9d 100644 --- a/languages/messages/MessagesBpy.php +++ b/languages/messages/MessagesBpy.php @@ -41,4 +41,3 @@ $digitTransformTable = [ '8' => '৮', '9' => '৯' ]; - diff --git a/languages/messages/MessagesBqi.php b/languages/messages/MessagesBqi.php index e8a3ee0aa9..a8e5beab4b 100644 --- a/languages/messages/MessagesBqi.php +++ b/languages/messages/MessagesBqi.php @@ -11,4 +11,3 @@ $fallback = 'fa'; $rtl = true; - diff --git a/languages/messages/MessagesBr.php b/languages/messages/MessagesBr.php index 69a5d2f720..d7614ccef4 100644 --- a/languages/messages/MessagesBr.php +++ b/languages/messages/MessagesBr.php @@ -8,6 +8,8 @@ * */ +$fallback = 'fr'; + $namespaceNames = [ NS_MEDIA => 'Media', NS_SPECIAL => 'Dibar', @@ -32,6 +34,8 @@ $namespaceAliases = [ 'Kaozeadenn_Skeudenn' => NS_FILE_TALK, ]; +$namespaceGenderAliases = []; + $specialPageAliases = [ 'Activeusers' => [ 'ImplijerienOberiant' ], 'Allmessages' => [ 'HollGemennadennoù' ], @@ -146,7 +150,7 @@ $magicWords = [ ]; $bookstoreList = [ - 'Amazon.fr' => 'http://www.amazon.fr/exec/obidos/ISBN=$1', + 'Amazon.fr' => 'https://www.amazon.fr/exec/obidos/ISBN=$1', 'alapage.fr' => 'http://www.alapage.com/mx/?tp=F&type=101&l_isbn=$1&donnee_appel=ALASQ&devise=&', 'fnac.com' => 'http://www3.fnac.com/advanced/book.do?isbn=$1', 'chapitre.com' => 'http://www.chapitre.com/frame_rec.asp?isbn=$1', @@ -162,4 +166,3 @@ $dateFormats = [ $separatorTransformTable = [ ',' => "\xc2\xa0", '.' => ',' ]; $linkTrail = "/^((?:c\'h|C\'H|C\'h|c’h|C’H|C’h|[a-zA-ZàâçéèêîôûäëïöüùñÇÉÂÊÎÔÛÄËÏÖÜÀÈÙÑ])+)(.*)$/sDu"; - diff --git a/languages/messages/MessagesBs.php b/languages/messages/MessagesBs.php index 6211da20a8..23122cd690 100644 --- a/languages/messages/MessagesBs.php +++ b/languages/messages/MessagesBs.php @@ -261,4 +261,3 @@ $magicWords = [ $fallback8bitEncoding = "iso-8859-2"; $separatorTransformTable = [ ',' => '.', '.' => ',' ]; $linkTrail = '/^([a-zćčžšđž]+)(.*)$/sDu'; - diff --git a/languages/messages/MessagesBug.php b/languages/messages/MessagesBug.php index fd135c9c04..bf15d7781a 100644 --- a/languages/messages/MessagesBug.php +++ b/languages/messages/MessagesBug.php @@ -9,4 +9,3 @@ */ $fallback = 'id'; - diff --git a/languages/messages/MessagesBxr.php b/languages/messages/MessagesBxr.php index 93142b76b7..79381c17aa 100644 --- a/languages/messages/MessagesBxr.php +++ b/languages/messages/MessagesBxr.php @@ -67,4 +67,3 @@ $specialPageAliases = [ 'Userlogin' => [ 'Нэбтэрхэ' ], 'Userlogout' => [ 'Гараха' ], ]; - diff --git a/languages/messages/MessagesCa.php b/languages/messages/MessagesCa.php index 0d932a89ef..b38287e0ec 100644 --- a/languages/messages/MessagesCa.php +++ b/languages/messages/MessagesCa.php @@ -8,6 +8,8 @@ * */ +$fallback = 'oc'; + $namespaceNames = [ NS_MEDIA => 'Media', NS_SPECIAL => 'Especial', @@ -126,6 +128,7 @@ $specialPageAliases = [ ]; $magicWords = [ + 'redirect' => [ '0', '#REDIRECCIÓ', '#REDIRECCIO', '#REDIRECT' ], 'numberofarticles' => [ '1', 'NOMBRED\'ARTICLES', 'NUMBEROFARTICLES' ], 'numberoffiles' => [ '1', 'NOMBRED\'ARXIUS', 'NUMBEROFFILES' ], 'numberofusers' => [ '1', 'NOMBRED\'USUARIS', 'NUMBEROFUSERS' ], @@ -158,11 +161,17 @@ $dateFormats = [ 'ymd both' => 'H:i, Y M j', ]; +$datePreferences = [ + 'default', + 'dmy', + 'ymd', + 'ISO 8601', +]; +$defaultDateFormat = 'dmy'; + $bookstoreList = [ - 'Catàleg Col·lectiu de les Universitats de Catalunya' => 'http://ccuc.cbuc.es/cgi-bin/vtls.web.gateway?searchtype=control+numcard&searcharg=$1', - 'Totselsllibres.com' => 'http://www.totselsllibres.com/tel/publi/busquedaAvanzadaLibros.do?ISBN=$1', + 'Catàleg Col·lectiu de les Universitats de Catalunya' => 'http://ccuc.cbuc.cat/search*cat/X?SEARCH=$1', 'inherit' => true, ]; $linkTrail = "/^((?:[a-zàèéíòóúç·ïü]|'(?!'))+)(.*)$/sDu"; - diff --git a/languages/messages/MessagesCbk_zam.php b/languages/messages/MessagesCbk_zam.php index c60d0b390b..43c56257e4 100644 --- a/languages/messages/MessagesCbk_zam.php +++ b/languages/messages/MessagesCbk_zam.php @@ -9,4 +9,3 @@ */ $fallback = "es"; - diff --git a/languages/messages/MessagesCdo.php b/languages/messages/MessagesCdo.php index 6d875aedb2..d5e52e88e8 100644 --- a/languages/messages/MessagesCdo.php +++ b/languages/messages/MessagesCdo.php @@ -138,4 +138,3 @@ $dateFormats = [ 'cdo date' => 'Y "nièng" n "nguŏk" j "hô̤" (l)', 'cdo both' => 'Y "nièng" n "nguŏk" j "hô̤" (D) H:i', ]; - diff --git a/languages/messages/MessagesCeb.php b/languages/messages/MessagesCeb.php index e2c038b834..9ad3c529de 100644 --- a/languages/messages/MessagesCeb.php +++ b/languages/messages/MessagesCeb.php @@ -55,4 +55,3 @@ $specialPageAliases = [ 'Version' => [ 'Bersiyon' ], 'Watchlist' => [ 'Gibantayan' ], ]; - diff --git a/languages/messages/MessagesCh.php b/languages/messages/MessagesCh.php index 08f4e3921f..1bccad3b82 100644 --- a/languages/messages/MessagesCh.php +++ b/languages/messages/MessagesCh.php @@ -22,4 +22,3 @@ $namespaceNames = [ NS_CATEGORY => 'Katigoria', NS_CATEGORY_TALK => 'Kombetsasion_ni_katigoria', ]; - diff --git a/languages/messages/MessagesCo.php b/languages/messages/MessagesCo.php index 6f24cbfb57..6a04366282 100644 --- a/languages/messages/MessagesCo.php +++ b/languages/messages/MessagesCo.php @@ -9,4 +9,3 @@ */ $fallback = 'it'; - diff --git a/languages/messages/MessagesCrh_cyrl.php b/languages/messages/MessagesCrh_cyrl.php index dab649d180..ff68ad8c77 100644 --- a/languages/messages/MessagesCrh_cyrl.php +++ b/languages/messages/MessagesCrh_cyrl.php @@ -99,4 +99,3 @@ $dateFormats = [ $separatorTransformTable = [ ',' => '.', '.' => ',' ]; $linkTrail = '/^([a-zâçğıñöşüа-яё“»]+)(.*)$/sDu'; $linkPrefixCharset = 'a-zâçğıñöşüA-ZÂÇĞİÑÖŞÜa-яёА-ЯЁ«„'; - diff --git a/languages/messages/MessagesCrh_latn.php b/languages/messages/MessagesCrh_latn.php index 738cb02350..9a993ea07a 100644 --- a/languages/messages/MessagesCrh_latn.php +++ b/languages/messages/MessagesCrh_latn.php @@ -94,4 +94,3 @@ $dateFormats = [ $separatorTransformTable = [ ',' => '.', '.' => ',' ]; $linkTrail = '/^([a-zâçğıñöşüа-яё“»]+)(.*)$/sDu'; $linkPrefixCharset = 'a-zâçğıñöşüA-ZÂÇĞİÑÖŞÜa-яёА-ЯЁ«„'; - diff --git a/languages/messages/MessagesCs.php b/languages/messages/MessagesCs.php index e778856fb2..94b0a348a1 100644 --- a/languages/messages/MessagesCs.php +++ b/languages/messages/MessagesCs.php @@ -106,10 +106,10 @@ $specialPageAliases = [ 'Mostlinkedtemplates' => [ 'Nejpoužívanější_Å¡ablony', 'Nejpouzivanejsi_sablony' ], 'Mostrevisions' => [ 'Stránky_s_nejvíce_editacemi', 'Stranky_s_nejvice_editacemi', 'Stránky_s_nejvyšším_počtem_editací' ], 'Movepage' => [ 'Přesunout_stránku', 'Přejmenovat_stránku' ], - 'Mycontributions' => [ 'Mé_příspěvky', 'Me_prispevky' ], + 'Mycontributions' => [ 'Moje_příspěvky', 'Mé_příspěvky', 'Me_prispevky' ], 'MyLanguage' => [ 'V_mém_jazyce', 'Můj_jazyk' ], - 'Mypage' => [ 'Moje_stránka', 'Moje_stranka' ], - 'Mytalk' => [ 'Moje_diskuse' ], + 'Mypage' => [ 'Moje_stránka', 'Moje_stranka', 'Má_stránka' ], + 'Mytalk' => [ 'Moje_diskuse', 'Má_diskuse' ], 'Myuploads' => [ 'Moje_soubory', 'Mé_soubory' ], 'Newimages' => [ 'Nové_obrázky', 'Galerie_nových_obrázků', 'Nove_obrazky' ], 'Newpages' => [ 'Nové_stránky', 'Nove_stranky', 'Nejnovější_stránky', 'Nejnovejsi_stranky' ], @@ -356,4 +356,3 @@ $bookstoreList = [ $linkTrail = '/^([a-záčďéěíňóřšťúůýž]+)(.*)$/sDu'; $separatorTransformTable = [ ',' => "\xc2\xa0", '.' => ',' ]; - diff --git a/languages/messages/MessagesCsb.php b/languages/messages/MessagesCsb.php index ee94546195..27c786d6f2 100644 --- a/languages/messages/MessagesCsb.php +++ b/languages/messages/MessagesCsb.php @@ -28,4 +28,3 @@ $namespaceNames = [ NS_CATEGORY => 'Kategòrëjô', NS_CATEGORY_TALK => 'Diskùsëjô_Kategòrëji', ]; - diff --git a/languages/messages/MessagesCu.php b/languages/messages/MessagesCu.php index 8375270b4e..c45f0253d5 100644 --- a/languages/messages/MessagesCu.php +++ b/languages/messages/MessagesCu.php @@ -92,4 +92,3 @@ $dateFormats = [ $linkTrail = '/^([a-zабвгдеєжѕзїіıићклмнопсстѹфхѡѿцчшщъыьѣюѥѧѩѫѭѯѱѳѷѵґѓђёјйљњќуўџэ҄я“»]+)(.*)$/sDu'; $linkPrefixCharset = '„«'; - diff --git a/languages/messages/MessagesCv.php b/languages/messages/MessagesCv.php index 5b9c2b6f69..56b4d1d3a1 100644 --- a/languages/messages/MessagesCv.php +++ b/languages/messages/MessagesCv.php @@ -35,4 +35,3 @@ $namespaceGenderAliases = []; $linkPrefixExtension = true; $linkTrail = '/^([a-zа-яĕçăӳ"»]+)(.*)$/sDu'; $linkPrefixCharset = 'a-zA-Z"\\x{80}-\\x{10ffff}'; - diff --git a/languages/messages/MessagesCy.php b/languages/messages/MessagesCy.php index a569f16d53..2fec9fc141 100644 --- a/languages/messages/MessagesCy.php +++ b/languages/messages/MessagesCy.php @@ -98,9 +98,8 @@ $defaultDateFormat = 'dmy'; $bookstoreList = [ "AddALL" => "http://www.addall.com/New/Partner.cgi?query=$1&type=ISBN", "Barnes & Noble" => "http://search.barnesandnoble.com/bookSearch/isbnInquiry.asp?isbn=$1", - "Amazon.com" => "http://www.amazon.com/exec/obidos/ISBN=$1", - "Amazon.co.uk" => "http://www.amazon.co.uk/exec/obidos/ISBN=$1" + "Amazon.com" => "https://www.amazon.com/exec/obidos/ISBN=$1", + "Amazon.co.uk" => "https://www.amazon.co.uk/exec/obidos/ISBN=$1" ]; $linkTrail = "/^([àáâèéêìíîïòóôûŵŷa-z]+)(.*)$/sDu"; - diff --git a/languages/messages/MessagesDa.php b/languages/messages/MessagesDa.php index c96a442636..48450d3bf6 100644 --- a/languages/messages/MessagesDa.php +++ b/languages/messages/MessagesDa.php @@ -144,4 +144,3 @@ $bookstoreList = [ $separatorTransformTable = [ ',' => '.', '.' => ',' ]; $linkTrail = '/^([a-zæøå]+)(.*)$/sDu'; - diff --git a/languages/messages/MessagesDe.php b/languages/messages/MessagesDe.php index 5fc359ebe6..160f57d091 100644 --- a/languages/messages/MessagesDe.php +++ b/languages/messages/MessagesDe.php @@ -344,7 +344,7 @@ $dateFormats = [ $capitalizeAllNouns = true; $bookstoreList = [ 'abebooks.de' => 'http://www.abebooks.de/servlet/BookSearchPL?ph=2&isbn=$1', - 'amazon.de' => 'http://www.amazon.de/gp/search/field-isbn=$1', + 'amazon.de' => 'https://www.amazon.de/gp/search/field-isbn=$1', 'buch.de' => 'http://www.buch.de/shop/home/suche/?sswg=BUCH&sq=$1', 'Karlsruher Virtueller Katalog (KVK)' => 'http://www.ubka.uni-karlsruhe.de/kvk.html?SB=$1', 'Lehmanns Fachbuchhandlung' => 'http://www.lob.de/cgi-bin/work/suche?flag=new&stich1=$1' @@ -357,4 +357,3 @@ $imageFiles = [ 'button-bold' => 'de/button_bold.png', 'button-italic' => 'de/button_italic.png', ]; - diff --git a/languages/messages/MessagesDe_at.php b/languages/messages/MessagesDe_at.php index 0d64e7c07a..65a3cbc9a9 100644 --- a/languages/messages/MessagesDe_at.php +++ b/languages/messages/MessagesDe_at.php @@ -9,4 +9,3 @@ */ $fallback = 'de'; - diff --git a/languages/messages/MessagesDe_ch.php b/languages/messages/MessagesDe_ch.php index dacefa33ac..c0f53edd98 100644 --- a/languages/messages/MessagesDe_ch.php +++ b/languages/messages/MessagesDe_ch.php @@ -10,4 +10,3 @@ $fallback = 'de'; $separatorTransformTable = [ ',' => "'", '.' => ',' ]; - diff --git a/languages/messages/MessagesDe_formal.php b/languages/messages/MessagesDe_formal.php index bda548adc0..8230744af7 100644 --- a/languages/messages/MessagesDe_formal.php +++ b/languages/messages/MessagesDe_formal.php @@ -9,4 +9,3 @@ */ $fallback = 'de'; - diff --git a/languages/messages/MessagesDiq.php b/languages/messages/MessagesDiq.php index c81fd34248..51067bff7c 100644 --- a/languages/messages/MessagesDiq.php +++ b/languages/messages/MessagesDiq.php @@ -325,4 +325,3 @@ $magicWords = [ 'pagesincategory_subcats' => [ '0', 'bınkatategori', 'subcats' ], 'pagesincategory_files' => [ '0', 'dosyey', 'files' ], ]; - diff --git a/languages/messages/MessagesDsb.php b/languages/messages/MessagesDsb.php index 686ead0a01..4b5aeb082d 100644 --- a/languages/messages/MessagesDsb.php +++ b/languages/messages/MessagesDsb.php @@ -140,4 +140,3 @@ $dateFormats = [ 'dmy date' => 'j. xg Y', 'dmy both' => 'j. xg Y, H:i', ]; - diff --git a/languages/messages/MessagesDtp.php b/languages/messages/MessagesDtp.php index ea00e958e5..82befd5704 100644 --- a/languages/messages/MessagesDtp.php +++ b/languages/messages/MessagesDtp.php @@ -9,4 +9,3 @@ */ $fallback = 'ms'; - diff --git a/languages/messages/MessagesDv.php b/languages/messages/MessagesDv.php index f3dfefbc3c..67c59e3365 100644 --- a/languages/messages/MessagesDv.php +++ b/languages/messages/MessagesDv.php @@ -80,4 +80,3 @@ $specialPageAliases = [ 'Wantedtemplates' => [ 'ބޭނުންވާ_ފަންވަތްތައް' ], 'Watchlist' => [ 'މަގޭ_ނަޒަރު' ], ]; - diff --git a/languages/messages/MessagesDz.php b/languages/messages/MessagesDz.php index 646012eda7..50ae1917ca 100644 --- a/languages/messages/MessagesDz.php +++ b/languages/messages/MessagesDz.php @@ -20,4 +20,3 @@ $digitTransformTable = [ '8' => '༨', # ༨ '9' => '༩', # ༩ ]; - diff --git a/languages/messages/MessagesEgl.php b/languages/messages/MessagesEgl.php index c56bee63e6..2a994dec5f 100644 --- a/languages/messages/MessagesEgl.php +++ b/languages/messages/MessagesEgl.php @@ -9,4 +9,3 @@ */ $fallback = 'it'; - diff --git a/languages/messages/MessagesEl.php b/languages/messages/MessagesEl.php index dd7cd68f4c..7bf07eaa5e 100644 --- a/languages/messages/MessagesEl.php +++ b/languages/messages/MessagesEl.php @@ -332,4 +332,3 @@ $dateFormats = [ 'ISO 8601 date' => 'xnY-xnm-xnd', 'ISO 8601 both' => 'xnY-xnm-xnd"T"xnH:xni:xns', ]; - diff --git a/languages/messages/MessagesEml.php b/languages/messages/MessagesEml.php index fa4b65a942..dd28bc8ec2 100644 --- a/languages/messages/MessagesEml.php +++ b/languages/messages/MessagesEml.php @@ -9,4 +9,3 @@ */ $fallback = 'it'; - diff --git a/languages/messages/MessagesEn.php b/languages/messages/MessagesEn.php index 99d3f64864..b9280ea096 100644 --- a/languages/messages/MessagesEn.php +++ b/languages/messages/MessagesEn.php @@ -105,7 +105,7 @@ $namespaceAliases = []; * Example: * @code * $namespaceGenderAliases = [ - * NS_USER => [ 'male' => 'Male_user', 'female' => 'Female_user' ], + * NS_USER => [ 'male' => 'Male_user', 'female' => 'Female_user' ], * ]; * @endcode */ @@ -187,7 +187,7 @@ $dateFormats = [ $bookstoreList = [ 'AddALL' => 'http://www.addall.com/New/Partner.cgi?query=$1&type=ISBN', 'Barnes & Noble' => 'http://search.barnesandnoble.com/bookSearch/isbnInquiry.asp?isbn=$1', - 'Amazon.com' => 'http://www.amazon.com/gp/search/?field-isbn=$1' + 'Amazon.com' => 'https://www.amazon.com/gp/search/?field-isbn=$1' ]; /** diff --git a/languages/messages/MessagesEn_gb.php b/languages/messages/MessagesEn_gb.php index c8864571a8..61addfa8bd 100644 --- a/languages/messages/MessagesEn_gb.php +++ b/languages/messages/MessagesEn_gb.php @@ -14,4 +14,3 @@ $specialPageAliases = [ 'Uncategorizedpages' => [ 'UncategorisedPages' ], 'Uncategorizedtemplates' => [ 'UncategorisedTemplates' ], ]; - diff --git a/languages/messages/MessagesEo.php b/languages/messages/MessagesEo.php index 9c6b7be6fb..0ce25e20e8 100644 --- a/languages/messages/MessagesEo.php +++ b/languages/messages/MessagesEo.php @@ -284,4 +284,3 @@ $dateFormats = [ 'dmy date' => 'j M. Y', 'dmy both' => 'H:i, j M. Y', ]; - diff --git a/languages/messages/MessagesEs.php b/languages/messages/MessagesEs.php index 3b7c4bc966..01bd00caaf 100644 --- a/languages/messages/MessagesEs.php +++ b/languages/messages/MessagesEs.php @@ -300,4 +300,3 @@ $dateFormats = [ $separatorTransformTable = [ ',' => "\xc2\xa0", '.' => ',' ]; $linkTrail = '/^([a-záéíóúñ]+)(.*)$/sDu'; - diff --git a/languages/messages/MessagesEt.php b/languages/messages/MessagesEt.php index 8a53d9e87a..28c69dfbca 100644 --- a/languages/messages/MessagesEt.php +++ b/languages/messages/MessagesEt.php @@ -146,7 +146,7 @@ $bookstoreList = [ 'Raamatukoi' => 'http://www.raamatukoi.ee/cgi-bin/index?valik=otsing&paring=$1', 'AddALL' => 'http://www.addall.com/New/Partner.cgi?query=$1&type=ISBN', 'Barnes & Noble' => 'http://search.barnesandnoble.com/bookSearch/isbnInquiry.asp?isbn=$1', - 'Amazon.com' => 'http://www.amazon.com/exec/obidos/ISBN=$1' + 'Amazon.com' => 'https://www.amazon.com/exec/obidos/ISBN=$1' ]; $magicWords = [ @@ -289,4 +289,3 @@ $dateFormats = [ 'et roman date' => 'j. xrm Y', 'et roman both' => 'j. xrm Y, "kell" H:i', ]; - diff --git a/languages/messages/MessagesEu.php b/languages/messages/MessagesEu.php index 85d172cd46..c74d37b35d 100644 --- a/languages/messages/MessagesEu.php +++ b/languages/messages/MessagesEu.php @@ -105,5 +105,4 @@ $magicWords = [ 'img_center' => [ '1', 'erdian', 'center', 'centre' ], ]; -$separatorTransformTable = [ ',' => '.', '.' => ',' ]; /* Bug 15717 */ - +$separatorTransformTable = [ ',' => '.', '.' => ',' ]; /* T17717 */ diff --git a/languages/messages/MessagesExt.php b/languages/messages/MessagesExt.php index 2bf6ce267c..7b3b31a4b0 100644 --- a/languages/messages/MessagesExt.php +++ b/languages/messages/MessagesExt.php @@ -25,8 +25,13 @@ $namespaceNames = [ NS_TEMPLATE_TALK => 'Prantilla_caraba', NS_HELP => 'Ayua', NS_HELP_TALK => 'Ayua_caraba', - NS_CATEGORY => 'Categoria', - NS_CATEGORY_TALK => 'Categoria_caraba', + NS_CATEGORY => 'Categoría', + NS_CATEGORY_TALK => 'Categoría_caraba', +]; + +$namespaceAliases = [ // T157846 + 'Categoria' => NS_CATEGORY, + 'Categoria_caraba' => NS_CATEGORY_TALK, ]; $namespaceGenderAliases = [ diff --git a/languages/messages/MessagesFa.php b/languages/messages/MessagesFa.php index eee9793cfb..84dfabf936 100644 --- a/languages/messages/MessagesFa.php +++ b/languages/messages/MessagesFa.php @@ -417,4 +417,3 @@ $imageFiles = [ 'button-headline' => 'fa/button_headline.png', 'button-nowiki' => 'fa/button_nowiki.png', ]; - diff --git a/languages/messages/MessagesFf.php b/languages/messages/MessagesFf.php index 71c4a75c63..ea0993359c 100644 --- a/languages/messages/MessagesFf.php +++ b/languages/messages/MessagesFf.php @@ -12,4 +12,3 @@ $fallback = 'fr'; // Remove French aliases $namespaceGenderAliases = []; - diff --git a/languages/messages/MessagesFi.php b/languages/messages/MessagesFi.php index 0d1abbd91b..b019fd637d 100644 --- a/languages/messages/MessagesFi.php +++ b/languages/messages/MessagesFi.php @@ -286,4 +286,3 @@ $bookstoreList = [ ]; $linkTrail = '/^([a-zäö]+)(.*)$/sDu'; - diff --git a/languages/messages/MessagesFit.php b/languages/messages/MessagesFit.php index 85e5e0fcfb..240049dc7e 100644 --- a/languages/messages/MessagesFit.php +++ b/languages/messages/MessagesFit.php @@ -9,4 +9,3 @@ */ $fallback = 'fi'; - diff --git a/languages/messages/MessagesFo.php b/languages/messages/MessagesFo.php index f7614cef90..e0e7492833 100644 --- a/languages/messages/MessagesFo.php +++ b/languages/messages/MessagesFo.php @@ -99,4 +99,3 @@ $bookstoreList = [ ]; $linkTrail = '/^([áðíóúýæøa-z]+)(.*)$/sDu'; - diff --git a/languages/messages/MessagesFr.php b/languages/messages/MessagesFr.php index 9bb02da1cf..3e3cf80184 100644 --- a/languages/messages/MessagesFr.php +++ b/languages/messages/MessagesFr.php @@ -294,7 +294,7 @@ $magicWords = [ ]; $bookstoreList = [ - 'Amazon.fr' => 'http://www.amazon.fr/exec/obidos/ISBN=$1', + 'Amazon.fr' => 'https://www.amazon.fr/exec/obidos/ISBN=$1', 'alapage.fr' => 'http://www.alapage.com/mx/?tp=F&type=101&l_isbn=$1&donnee_appel=ALASQ&devise=&', 'fnac.com' => 'http://www3.fnac.com/advanced/book.do?isbn=$1', 'chapitre.com' => 'http://www.chapitre.com/frame_rec.asp?isbn=$1', @@ -317,4 +317,3 @@ $dateFormats = [ ]; $separatorTransformTable = [ ',' => "\xc2\xa0", '.' => ',' ]; - diff --git a/languages/messages/MessagesFrc.php b/languages/messages/MessagesFrc.php index c6e497b933..f8b54b52fd 100644 --- a/languages/messages/MessagesFrc.php +++ b/languages/messages/MessagesFrc.php @@ -9,4 +9,3 @@ */ $fallback = 'fr'; - diff --git a/languages/messages/MessagesFrp.php b/languages/messages/MessagesFrp.php index 106ba5e69b..0ac1cafaa1 100644 --- a/languages/messages/MessagesFrp.php +++ b/languages/messages/MessagesFrp.php @@ -11,7 +11,7 @@ $fallback = 'fr'; $bookstoreList = [ - 'Amazon.fr' => 'http://www.amazon.fr/exec/obidos/ISBN=$1', + 'Amazon.fr' => 'https://www.amazon.fr/exec/obidos/ISBN=$1', 'alapage.fr' => 'http://www.alapage.com/mx/?tp=F&type=101&l_isbn=$1&donnee_appel=ALASQ&devise=&', 'fnac.com' => 'http://www3.fnac.com/advanced/book.do?isbn=$1', 'chapitre.com' => 'http://www.chapitre.com/frame_rec.asp?isbn=$1', @@ -302,4 +302,3 @@ $dateFormats = [ ]; $separatorTransformTable = [ ',' => "\xc2\xa0", '.' => ',' ]; - diff --git a/languages/messages/MessagesFrr.php b/languages/messages/MessagesFrr.php index 7ad9d50015..d76edbf84b 100644 --- a/languages/messages/MessagesFrr.php +++ b/languages/messages/MessagesFrr.php @@ -11,4 +11,3 @@ $fallback = 'de'; $linkTrail = '/^([a-zäöüßåāđē]+)(.*)$/sDu'; - diff --git a/languages/messages/MessagesFur.php b/languages/messages/MessagesFur.php index 8bb6c6c87d..9846686e93 100644 --- a/languages/messages/MessagesFur.php +++ b/languages/messages/MessagesFur.php @@ -105,4 +105,3 @@ $dateFormats = [ ]; $separatorTransformTable = [ ',' => "\xc2\xa0", '.' => ',' ]; - diff --git a/languages/messages/MessagesFy.php b/languages/messages/MessagesFy.php index 4bf6a09c8c..28f52b66e9 100644 --- a/languages/messages/MessagesFy.php +++ b/languages/messages/MessagesFy.php @@ -129,4 +129,3 @@ $specialPageAliases = [ $separatorTransformTable = [ ',' => '.', '.' => ',' ]; $linkTrail = '/^([a-zàáèéìíòóùúâêîôûäëïöü]+)(.*)$/sDu'; - diff --git a/languages/messages/MessagesGa.php b/languages/messages/MessagesGa.php index a5087900cf..585e697987 100644 --- a/languages/messages/MessagesGa.php +++ b/languages/messages/MessagesGa.php @@ -77,4 +77,3 @@ $namespaceAliases = [ 'Plé_múnla' => NS_TEMPLATE_TALK, 'Rang' => NS_CATEGORY ]; - diff --git a/languages/messages/MessagesGag.php b/languages/messages/MessagesGag.php index 7a6d127a83..adf578fe4b 100644 --- a/languages/messages/MessagesGag.php +++ b/languages/messages/MessagesGag.php @@ -88,4 +88,3 @@ $specialPageAliases = [ $magicWords = [ 'redirect' => [ '0', '#YÖNNENDÄ°RMÄKLER', '#YÖNNENDÄ°R', '#YÖNNENDÄ°RMÄ', '#YÖNLENDÄ°RME', '#YÖNLENDÄ°R', '#REDIRECT' ], ]; - diff --git a/languages/messages/MessagesGan.php b/languages/messages/MessagesGan.php index 6dd812d931..86e2b279fd 100644 --- a/languages/messages/MessagesGan.php +++ b/languages/messages/MessagesGan.php @@ -31,4 +31,3 @@ $namespaceNames = [ $namespaceAliases = [ '$1_談詑' => NS_PROJECT_TALK, ]; - diff --git a/languages/messages/MessagesGan_hans.php b/languages/messages/MessagesGan_hans.php index 5fb511ed6c..155ba2b145 100644 --- a/languages/messages/MessagesGan_hans.php +++ b/languages/messages/MessagesGan_hans.php @@ -20,4 +20,3 @@ $namespaceNames = [ NS_HELP_TALK => '帮助谈詑', NS_CATEGORY_TALK => '分类谈詑', ]; - diff --git a/languages/messages/MessagesGan_hant.php b/languages/messages/MessagesGan_hant.php index 1a136db013..ae6944a163 100644 --- a/languages/messages/MessagesGan_hant.php +++ b/languages/messages/MessagesGan_hant.php @@ -45,4 +45,3 @@ $specialPageAliases = [ 'Unusedimages' => [ '冇用嗰檔案' ], 'Watchlist' => [ '監視列表' ], ]; - diff --git a/languages/messages/MessagesGd.php b/languages/messages/MessagesGd.php index b147d5c57a..caa16d93b3 100644 --- a/languages/messages/MessagesGd.php +++ b/languages/messages/MessagesGd.php @@ -26,4 +26,3 @@ $namespaceNames = [ NS_CATEGORY => 'Roinn-seòrsa', NS_CATEGORY_TALK => 'Deasbaireachd_na_roinn-seòrsa', ]; - diff --git a/languages/messages/MessagesGl.php b/languages/messages/MessagesGl.php index 8f1d4a753b..a447df4692 100644 --- a/languages/messages/MessagesGl.php +++ b/languages/messages/MessagesGl.php @@ -274,4 +274,3 @@ $magicWords = [ ]; $separatorTransformTable = [ ',' => '.', '.' => ',' ]; - diff --git a/languages/messages/MessagesGn.php b/languages/messages/MessagesGn.php index c5d7f466bf..e03403558e 100644 --- a/languages/messages/MessagesGn.php +++ b/languages/messages/MessagesGn.php @@ -28,6 +28,5 @@ $namespaceNames = [ NS_CATEGORY_TALK => 'Ñemohenda_myangekõi', ]; -// Remove Spanish gender aliases (bug 37090) +// Remove Spanish gender aliases (T39090) $namespaceGenderAliases = []; - diff --git a/languages/messages/MessagesGot.php b/languages/messages/MessagesGot.php index d5817b60dc..a6fab27d6f 100644 --- a/languages/messages/MessagesGot.php +++ b/languages/messages/MessagesGot.php @@ -26,4 +26,3 @@ $specialPageAliases = [ 'Allpages' => [ '𐌰𐌻𐌻𐍃𐍃𐌴𐌹𐌳𐍉𐌽𐍃' ], 'Recentchanges' => [ '𐌰𐍆𐍄𐌿𐌼𐌹𐍃𐍄𐍉𐍃𐌼𐌰𐌹𐌳𐌴𐌹𐌽𐌴𐌹𐍃' ], ]; - diff --git a/languages/messages/MessagesGrc.php b/languages/messages/MessagesGrc.php index f1bb4f8299..e2f0cc0d32 100644 --- a/languages/messages/MessagesGrc.php +++ b/languages/messages/MessagesGrc.php @@ -21,4 +21,3 @@ $dateFormats = [ 'ymd date' => 'Y xg j', 'ymd both' => 'H:i, Y xg j', ]; - diff --git a/languages/messages/MessagesGsw.php b/languages/messages/MessagesGsw.php index 6d1b7b8411..d47d9c0c8f 100644 --- a/languages/messages/MessagesGsw.php +++ b/languages/messages/MessagesGsw.php @@ -112,4 +112,3 @@ $magicWords = [ ]; $linkTrail = '/^([äöüßa-z]+)(.*)$/sDu'; - diff --git a/languages/messages/MessagesGu.php b/languages/messages/MessagesGu.php index db29a563b4..aec3a763ae 100644 --- a/languages/messages/MessagesGu.php +++ b/languages/messages/MessagesGu.php @@ -127,4 +127,3 @@ $digitTransformTable = [ $digitGroupingPattern = "##,##,###"; $linkTrail = "/^([\x{0A80}-\x{0AFF}]+)(.*)$/sDu"; - diff --git a/languages/messages/MessagesGv.php b/languages/messages/MessagesGv.php index d3b6e44eff..e2fc11044d 100644 --- a/languages/messages/MessagesGv.php +++ b/languages/messages/MessagesGv.php @@ -26,4 +26,3 @@ $namespaceNames = [ NS_CATEGORY => 'Ronney', NS_CATEGORY_TALK => 'Resooney_ronney', ]; - diff --git a/languages/messages/MessagesHak.php b/languages/messages/MessagesHak.php index df1d1fe924..856a23e43e 100644 --- a/languages/messages/MessagesHak.php +++ b/languages/messages/MessagesHak.php @@ -9,4 +9,3 @@ */ $fallback = 'zh-hant'; - diff --git a/languages/messages/MessagesHaw.php b/languages/messages/MessagesHaw.php index 66a3e418cd..fab2a1341c 100644 --- a/languages/messages/MessagesHaw.php +++ b/languages/messages/MessagesHaw.php @@ -117,4 +117,3 @@ $magicWords = [ 'pagesincategory_pages' => [ '0', 'Ê»aoÊ»ao', 'aoao', 'pages' ], 'pagesincategory_files' => [ '0', 'waihona', 'files' ], ]; - diff --git a/languages/messages/MessagesHe.php b/languages/messages/MessagesHe.php index 9e03942ad9..19f8232112 100644 --- a/languages/messages/MessagesHe.php +++ b/languages/messages/MessagesHe.php @@ -343,6 +343,5 @@ $bookstoreList = [ 'מיתוס' => 'http://www.mitos.co.il/', 'iBooks' => 'http://www.ibooks.co.il/', 'Barnes & Noble' => 'http://search.barnesandnoble.com/bookSearch/isbnInquiry.asp?isbn=$1', - 'Amazon.com' => 'http://www.amazon.com/exec/obidos/ISBN=$1' + 'Amazon.com' => 'https://www.amazon.com/exec/obidos/ISBN=$1' ]; - diff --git a/languages/messages/MessagesHi.php b/languages/messages/MessagesHi.php index 3f3b007869..5a70a83874 100644 --- a/languages/messages/MessagesHi.php +++ b/languages/messages/MessagesHi.php @@ -299,4 +299,3 @@ $digitTransformTable = [ $linkTrail = "/^([a-z\x{0900}-\x{0963}\x{0966}-\x{A8E0}-\x{A8FF}]+)(.*)$/sDu"; $digitGroupingPattern = "##,##,###"; - diff --git a/languages/messages/MessagesHif_latn.php b/languages/messages/MessagesHif_latn.php index 5a32567b80..6671feba06 100644 --- a/languages/messages/MessagesHif_latn.php +++ b/languages/messages/MessagesHif_latn.php @@ -24,4 +24,3 @@ $namespaceNames = [ NS_CATEGORY => 'vibhag', NS_CATEGORY_TALK => 'voibhag_ke_baat', ]; - diff --git a/languages/messages/MessagesHr.php b/languages/messages/MessagesHr.php index 97cac52725..498585fc96 100644 --- a/languages/messages/MessagesHr.php +++ b/languages/messages/MessagesHr.php @@ -289,4 +289,3 @@ $separatorTransformTable = [ ',' => '.', '.' => ',' ]; $fallback8bitEncoding = 'iso-8859-2'; $linkTrail = '/^([čšžćđßa-z]+)(.*)$/sDu'; - diff --git a/languages/messages/MessagesHrx.php b/languages/messages/MessagesHrx.php index 8108c6b6bb..dfbfe6bd39 100644 --- a/languages/messages/MessagesHrx.php +++ b/languages/messages/MessagesHrx.php @@ -9,4 +9,3 @@ */ $fallback = 'de'; - diff --git a/languages/messages/MessagesHsb.php b/languages/messages/MessagesHsb.php index d9471e0539..7fe8773c5c 100644 --- a/languages/messages/MessagesHsb.php +++ b/languages/messages/MessagesHsb.php @@ -144,4 +144,3 @@ $specialPageAliases = [ 'Whatlinkshere' => [ 'Lisćina_wotkazow' ], 'Withoutinterwiki' => [ 'Falowace_mjezyrěčne_wotkazy' ], ]; - diff --git a/languages/messages/MessagesHt.php b/languages/messages/MessagesHt.php index a217a2910d..0c894efb03 100644 --- a/languages/messages/MessagesHt.php +++ b/languages/messages/MessagesHt.php @@ -136,4 +136,3 @@ $specialPageAliases = [ ]; $linkTrail = '/^([a-zàèòÀÈÒ]+)(.*)$/sDu'; - diff --git a/languages/messages/MessagesHu.php b/languages/messages/MessagesHu.php index 6ba075ad74..7fcfad8863 100644 --- a/languages/messages/MessagesHu.php +++ b/languages/messages/MessagesHu.php @@ -279,4 +279,3 @@ $magicWords = [ ]; $linkTrail = '/^([a-záéíóúöüőűÁÉÍÓÚÖÜŐŰ]+)(.*)$/sDu'; - diff --git a/languages/messages/MessagesHy.php b/languages/messages/MessagesHy.php index ab1d198bf9..9a5a8098ad 100644 --- a/languages/messages/MessagesHy.php +++ b/languages/messages/MessagesHy.php @@ -76,7 +76,7 @@ $dateFormats = [ ]; $bookstoreList = [ - 'Amazon.com' => 'http://www.amazon.com/exec/obidos/ISBN=$1' + 'Amazon.com' => 'https://www.amazon.com/exec/obidos/ISBN=$1' ]; $magicWords = [ @@ -255,4 +255,3 @@ $specialPageAliases = [ ]; $linkTrail = '/^([a-zաբգդեզէըթժիլխծկհձղճմյնշոչպջռսվտրցւփքօֆև«»]+)(.*)$/sDu'; - diff --git a/languages/messages/MessagesIa.php b/languages/messages/MessagesIa.php index b4adcbbb73..c3a2905741 100644 --- a/languages/messages/MessagesIa.php +++ b/languages/messages/MessagesIa.php @@ -132,4 +132,3 @@ $specialPageAliases = [ 'Whatlinkshere' => [ 'Referentias_a_iste_pagina' ], 'Withoutinterwiki' => [ 'Sin_interwiki' ], ]; - diff --git a/languages/messages/MessagesId.php b/languages/messages/MessagesId.php index 5fee30665c..2107e7d134 100644 --- a/languages/messages/MessagesId.php +++ b/languages/messages/MessagesId.php @@ -43,7 +43,7 @@ $namespaceAliases = [ $bookstoreList = [ 'AddALL' => 'http://www.addall.com/New/Partner.cgi?query=$1&type=ISBN', - 'Amazon.com' => 'http://www.amazon.com/exec/obidos/ISBN=$1', + 'Amazon.com' => 'https://www.amazon.com/exec/obidos/ISBN=$1', 'Barnes & Noble' => 'http://search.barnesandnoble.com/bookSearch/isbnInquiry.asp?isbn=$1', 'Bhinneka.com bookstore' => 'http://www.bhinneka.com/Buku/Engine/search.asp?fisbn=$1', 'Gramedia Cyberstore (via Google)' => 'http://www.google.com/search?q=%22ISBN+:+$1%22+%22product_detail%22+site:www.gramediacyberstore.com+OR+site:www.gramediaonline.com+OR+site:www.kompas.com&hl=id', @@ -310,4 +310,3 @@ $dateFormats = [ 'ymd date' => 'Y F j', 'ymd both' => 'Y F j H.i', ]; - diff --git a/languages/messages/MessagesIe.php b/languages/messages/MessagesIe.php index 75f45b1aee..6723742b42 100644 --- a/languages/messages/MessagesIe.php +++ b/languages/messages/MessagesIe.php @@ -119,4 +119,3 @@ $specialPageAliases = [ 'Whatlinkshere' => [ 'Quo_catenunes_ci' ], 'Withoutinterwiki' => [ 'Sin_interwiki' ], ]; - diff --git a/languages/messages/MessagesIg.php b/languages/messages/MessagesIg.php index 29edef32bf..2177cbfa8c 100644 --- a/languages/messages/MessagesIg.php +++ b/languages/messages/MessagesIg.php @@ -69,4 +69,3 @@ $magicWords = [ 'displaytitle' => [ '1', 'ZIÍSHÍ', 'DISPLAYTITLE' ], 'pagesize' => [ '1', 'ÀSÁIHÜ', 'PAGESIZE' ], ]; - diff --git a/languages/messages/MessagesIi.php b/languages/messages/MessagesIi.php index 6f4f23aaec..389cdcf0aa 100644 --- a/languages/messages/MessagesIi.php +++ b/languages/messages/MessagesIi.php @@ -9,4 +9,3 @@ */ $fallback = 'zh-cn, zh-hans'; - diff --git a/languages/messages/MessagesIlo.php b/languages/messages/MessagesIlo.php index 280ea41b01..6bc195b618 100644 --- a/languages/messages/MessagesIlo.php +++ b/languages/messages/MessagesIlo.php @@ -26,4 +26,3 @@ $namespaceNames = [ NS_CATEGORY => 'Kategoria', NS_CATEGORY_TALK => 'Kategoria_tungtungan', ]; - diff --git a/languages/messages/MessagesInh.php b/languages/messages/MessagesInh.php index c7f1c8328c..dc33b65021 100644 --- a/languages/messages/MessagesInh.php +++ b/languages/messages/MessagesInh.php @@ -9,4 +9,3 @@ */ $fallback = 'ru'; - diff --git a/languages/messages/MessagesIo.php b/languages/messages/MessagesIo.php index ffd164b7ea..0b49204418 100644 --- a/languages/messages/MessagesIo.php +++ b/languages/messages/MessagesIo.php @@ -103,4 +103,3 @@ $specialPageAliases = [ 'Watchlist' => [ 'Surveyaji' ], 'Whatlinkshere' => [ 'QuoLigasHike' ], ]; - diff --git a/languages/messages/MessagesIs.php b/languages/messages/MessagesIs.php index c6f0e39a00..e6151dbdb3 100644 --- a/languages/messages/MessagesIs.php +++ b/languages/messages/MessagesIs.php @@ -212,4 +212,3 @@ $separatorTransformTable = [ ',' => '.', '.' => ',' ]; $linkPrefixExtension = true; $linkTrail = '/^([áðéíóúýþæöa-z-–]+)(.*)$/sDu'; $linkPrefixCharset = 'áÁðÐéÉíÍóÓúÚýÝþÞæÆöÖA-Za-z–-'; - diff --git a/languages/messages/MessagesIt.php b/languages/messages/MessagesIt.php index 8714c7214d..e73a2fc946 100644 --- a/languages/messages/MessagesIt.php +++ b/languages/messages/MessagesIt.php @@ -226,4 +226,3 @@ $magicWords = [ ]; $linkTrail = '/^([a-zàéèíîìóòúù]+)(.*)$/sDu'; - diff --git a/languages/messages/MessagesJa.php b/languages/messages/MessagesJa.php index b905345e52..c45a0dd2b8 100644 --- a/languages/messages/MessagesJa.php +++ b/languages/messages/MessagesJa.php @@ -321,4 +321,3 @@ $magicWords = [ 'url_wiki' => [ '0', 'ウィキ', 'WIKI' ], 'url_query' => [ '0', 'クエリ', 'クエリー', 'QUERY' ], ]; - diff --git a/languages/messages/MessagesJut.php b/languages/messages/MessagesJut.php index 029b05035d..3536b0a1f2 100644 --- a/languages/messages/MessagesJut.php +++ b/languages/messages/MessagesJut.php @@ -9,4 +9,3 @@ */ $fallback = 'da'; - diff --git a/languages/messages/MessagesJv.php b/languages/messages/MessagesJv.php index 05e892b79f..5488b9afa2 100644 --- a/languages/messages/MessagesJv.php +++ b/languages/messages/MessagesJv.php @@ -13,27 +13,34 @@ $fallback = 'id'; $namespaceNames = [ NS_MEDIA => 'Media', NS_SPECIAL => 'Astamiwa', - NS_TALK => 'Dhiskusi', + NS_TALK => 'Parembugan', NS_USER => 'Panganggo', - NS_USER_TALK => 'Dhiskusi_Panganggo', - NS_PROJECT_TALK => 'Dhiskusi_$1', + NS_USER_TALK => 'Parembugan_Panganggo', + NS_PROJECT_TALK => 'Parembugan_$1', NS_FILE => 'Gambar', - NS_FILE_TALK => 'Dhiskusi_Gambar', + NS_FILE_TALK => 'Parembugan_Gambar', NS_MEDIAWIKI => 'MediaWiki', - NS_MEDIAWIKI_TALK => 'Dhiskusi_MediaWiki', + NS_MEDIAWIKI_TALK => 'Parembugan_MediaWiki', NS_TEMPLATE => 'Cithakan', - NS_TEMPLATE_TALK => 'Dhiskusi_Cithakan', + NS_TEMPLATE_TALK => 'Parembugan_Cithakan', NS_HELP => 'Pitulung', - NS_HELP_TALK => 'Dhiskusi_Pitulung', + NS_HELP_TALK => 'Parembugan_Pitulung', NS_CATEGORY => 'Kategori', - NS_CATEGORY_TALK => 'Dhiskusi_Kategori', + NS_CATEGORY_TALK => 'Parembugan_Kategori', ]; -$namespaceAliases = [ - 'Gambar_Dhiskusi' => NS_FILE_TALK, +$namespaceAliases = [ // Kept former namespaces for backwards compatibility - T155957 + 'Cithakan_Dhiskusi' => NS_TEMPLATE_TALK, + 'Dhiskusi' => NS_TALK, + 'Dhiskusi_$1' => NS_PROJECT_TALK, + 'Dhiskusi_Cithakan' => NS_TEMPLATE_TALK, + 'Dhiskusi_Gambar' => NS_FILE_TALK, + 'Dhiskusi_Kategori' => NS_CATEGORY_TALK, + 'Dhiskusi_MediaWiki' => NS_MEDIAWIKI_TALK, + 'Dhiskusi_Panganggo' => NS_USER_TALK, + 'Dhiskusi_Pitulung' => NS_HELP_TALK, + 'Kategori_Dhiskusi' => NS_CATEGORY_TALK, 'MediaWiki_Dhiskusi' => NS_MEDIAWIKI_TALK, - 'Cithakan_Dhiskusi' => NS_TEMPLATE_TALK, - 'Pitulung_Dhiskusi' => NS_HELP_TALK, - 'Kategori_Dhiskusi' => NS_CATEGORY_TALK, + 'Pitulung_Dhiskusi' => NS_HELP_TALK, + 'Gambar_Dhiskusi' => NS_FILE_TALK, ]; - diff --git a/languages/messages/MessagesKa.php b/languages/messages/MessagesKa.php index 7c55460167..d2e2d277c6 100644 --- a/languages/messages/MessagesKa.php +++ b/languages/messages/MessagesKa.php @@ -146,4 +146,3 @@ $magicWords = [ $linkPrefixExtension = true; $linkTrail = '/^([a-zაბგდევზთიკლმნოპჟრსტუფქღყშჩცძწჭხჯჰ“»]+)(.*)$/sDu'; - diff --git a/languages/messages/MessagesKaa.php b/languages/messages/MessagesKaa.php index 1f993b0655..52e8e77eb6 100644 --- a/languages/messages/MessagesKaa.php +++ b/languages/messages/MessagesKaa.php @@ -142,4 +142,3 @@ $dateFormats = [ $linkTrail = "/^((?:[a-zıʼ’“»]|'(?!'))+)(.*)$/sDu"; $linkPrefixCharset = 'a-zıA-ZÄ°\\x80-\\xff'; - diff --git a/languages/messages/MessagesKab.php b/languages/messages/MessagesKab.php index 2cfab54b41..3ae99759f6 100644 --- a/languages/messages/MessagesKab.php +++ b/languages/messages/MessagesKab.php @@ -31,4 +31,3 @@ $namespaceAliases = [ 'Talγa' => NS_TEMPLATE, 'Amyannan_n_talγa' => NS_TEMPLATE_TALK, ]; - diff --git a/languages/messages/MessagesKbd_cyrl.php b/languages/messages/MessagesKbd_cyrl.php index 621c964faf..d5f8f75194 100644 --- a/languages/messages/MessagesKbd_cyrl.php +++ b/languages/messages/MessagesKbd_cyrl.php @@ -8,7 +8,7 @@ * */ -# $fallback = 'ru'; // bug 27785 +# $fallback = 'ru'; // T29785 $namespaceNames = [ NS_MEDIA => 'Медиа', @@ -46,4 +46,3 @@ $namespaceAliases = [ // Remove Russian gender aliases $namespaceGenderAliases = []; - diff --git a/languages/messages/MessagesKg.php b/languages/messages/MessagesKg.php index fe2e92af77..97d8d68824 100644 --- a/languages/messages/MessagesKg.php +++ b/languages/messages/MessagesKg.php @@ -20,4 +20,3 @@ $namespaceNames = [ NS_CATEGORY => 'Kalasi', NS_CATEGORY_TALK => 'Disolo_kalasi', ]; - diff --git a/languages/messages/MessagesKhw.php b/languages/messages/MessagesKhw.php index 23280af4d6..b8f85e4b9c 100644 --- a/languages/messages/MessagesKhw.php +++ b/languages/messages/MessagesKhw.php @@ -30,4 +30,3 @@ $namespaceNames = [ NS_CATEGORY => 'زمرہ', NS_CATEGORY_TALK => 'تبادلۂ_خیال_زمرہ', ]; - diff --git a/languages/messages/MessagesKiu.php b/languages/messages/MessagesKiu.php index 10e3ac3680..39b68fa708 100644 --- a/languages/messages/MessagesKiu.php +++ b/languages/messages/MessagesKiu.php @@ -47,4 +47,3 @@ $namespaceAliases = [ 'Kategori' => NS_CATEGORY, 'Kategori_tartışma' => NS_CATEGORY_TALK, ]; - diff --git a/languages/messages/MessagesKk.php b/languages/messages/MessagesKk.php index ce30e55a60..b8fc7e7059 100644 --- a/languages/messages/MessagesKk.php +++ b/languages/messages/MessagesKk.php @@ -11,4 +11,3 @@ # Stub message file for converter code "kk" $fallback = 'kk-cyrl'; - diff --git a/languages/messages/MessagesKk_arab.php b/languages/messages/MessagesKk_arab.php index a589ac23d0..72179d6147 100644 --- a/languages/messages/MessagesKk_arab.php +++ b/languages/messages/MessagesKk_arab.php @@ -385,4 +385,3 @@ $specialPageAliases = [ # ------------------------------------------------------------------- # Default messages # ------------------------------------------------------------------- - diff --git a/languages/messages/MessagesKk_cyrl.php b/languages/messages/MessagesKk_cyrl.php index 37b4a15c50..818a9b6a9b 100644 --- a/languages/messages/MessagesKk_cyrl.php +++ b/languages/messages/MessagesKk_cyrl.php @@ -355,4 +355,3 @@ $specialPageAliases = [ 'Whatlinkshere' => [ 'Мында_сілтегендер' ], 'Withoutinterwiki' => [ 'Уики-аралықсыздар' ], ]; - diff --git a/languages/messages/MessagesKk_latn.php b/languages/messages/MessagesKk_latn.php index 1f1289d2ec..56d8a585e7 100644 --- a/languages/messages/MessagesKk_latn.php +++ b/languages/messages/MessagesKk_latn.php @@ -349,4 +349,3 @@ $specialPageAliases = [ 'Whatlinkshere' => [ 'Mında_siltegender' ], 'Withoutinterwiki' => [ 'Wïkï-aralıqsızdar' ], ]; - diff --git a/languages/messages/MessagesKl.php b/languages/messages/MessagesKl.php index 5e7ae1386e..150d5cc407 100644 --- a/languages/messages/MessagesKl.php +++ b/languages/messages/MessagesKl.php @@ -54,4 +54,3 @@ $namespaceAliases = [ 'Kategori' => NS_CATEGORY, 'Kategoridiskussion' => NS_CATEGORY_TALK ]; - diff --git a/languages/messages/MessagesKm.php b/languages/messages/MessagesKm.php index e970b1798d..967224fec9 100644 --- a/languages/messages/MessagesKm.php +++ b/languages/messages/MessagesKm.php @@ -256,4 +256,3 @@ $magicWords = [ 'noindex' => [ '1', '__មិនមានលិបិក្រម__', '__NOINDEX__' ], 'staticredirect' => [ '1', '__ស្ថិតិទំព័របញ្ជូនបន្ត__', '__STATICREDIRECT__' ], ]; - diff --git a/languages/messages/MessagesKn.php b/languages/messages/MessagesKn.php index 5d846ead40..5fa77e934d 100644 --- a/languages/messages/MessagesKn.php +++ b/languages/messages/MessagesKn.php @@ -62,4 +62,3 @@ $digitTransformTable = [ ]; $digitGroupingPattern = "##,##,###"; - diff --git a/languages/messages/MessagesKo.php b/languages/messages/MessagesKo.php index 4a3c15e9ca..3ac7779fb4 100644 --- a/languages/messages/MessagesKo.php +++ b/languages/messages/MessagesKo.php @@ -367,4 +367,3 @@ $dateFormats = [ 'ko date' => 'Y년 M월 j일 (D)', 'ko both' => 'Y년 M월 j일 (D) H:i', ]; - diff --git a/languages/messages/MessagesKoi.php b/languages/messages/MessagesKoi.php index 0296bf781a..a9b7650f52 100644 --- a/languages/messages/MessagesKoi.php +++ b/languages/messages/MessagesKoi.php @@ -11,4 +11,3 @@ */ $fallback = 'ru'; - diff --git a/languages/messages/MessagesKrc.php b/languages/messages/MessagesKrc.php index eebd0fbdb1..79548ea42b 100644 --- a/languages/messages/MessagesKrc.php +++ b/languages/messages/MessagesKrc.php @@ -107,4 +107,3 @@ $magicWords = [ 'notoc' => [ '0', '__БАШЛАСЫЗ__', '__БЕЗ_ОГЛАВЛЕНИЯ__', '__БЕЗ_ОГЛ__', '__NOTOC__' ], 'nogallery' => [ '0', '_ГАЛЛЕРЕЯСЫЗ__', '__БЕЗ_ГАЛЕРЕИ__', '__NOGALLERY__' ], ]; - diff --git a/languages/messages/MessagesKs.php b/languages/messages/MessagesKs.php index e7010f495d..8721695633 100644 --- a/languages/messages/MessagesKs.php +++ b/languages/messages/MessagesKs.php @@ -9,4 +9,3 @@ */ $fallback = 'ks-arab'; - diff --git a/languages/messages/MessagesKs_arab.php b/languages/messages/MessagesKs_arab.php index b2f4697623..27ac9f13af 100644 --- a/languages/messages/MessagesKs_arab.php +++ b/languages/messages/MessagesKs_arab.php @@ -49,4 +49,3 @@ $separatorTransformTable = [ '.' => 'Ù«', # ٫ ',' => 'Ù¬', # ٬ ]; - diff --git a/languages/messages/MessagesKs_deva.php b/languages/messages/MessagesKs_deva.php index f8dc00f7f6..55dc004e7b 100644 --- a/languages/messages/MessagesKs_deva.php +++ b/languages/messages/MessagesKs_deva.php @@ -41,4 +41,3 @@ $digitTransformTable = [ '8' => '८', # ८ '9' => '९', # ९ ]; - diff --git a/languages/messages/MessagesKsh.php b/languages/messages/MessagesKsh.php index b13578ebea..164b20a7d6 100644 --- a/languages/messages/MessagesKsh.php +++ b/languages/messages/MessagesKsh.php @@ -210,4 +210,3 @@ $magicWords = [ $imageFiles = [ 'button-italic' => 'ksh/button_italic.png', ]; - diff --git a/languages/messages/MessagesKu_arab.php b/languages/messages/MessagesKu_arab.php index d8bee6532e..7551ccfafb 100644 --- a/languages/messages/MessagesKu_arab.php +++ b/languages/messages/MessagesKu_arab.php @@ -32,4 +32,3 @@ $digitTransformTable = [ '.' => 'Ù«', # ٫ wrong table ? ',' => 'Ù¬', # ٬ ]; - diff --git a/languages/messages/MessagesKv.php b/languages/messages/MessagesKv.php index a5204be06d..069c64bfbd 100644 --- a/languages/messages/MessagesKv.php +++ b/languages/messages/MessagesKv.php @@ -44,4 +44,3 @@ $namespaceAliases = [ 'Категория' => NS_CATEGORY, 'Обсуждение_категории' => NS_CATEGORY_TALK ]; - diff --git a/languages/messages/MessagesKw.php b/languages/messages/MessagesKw.php index 5a0a02b667..53be156ca9 100644 --- a/languages/messages/MessagesKw.php +++ b/languages/messages/MessagesKw.php @@ -202,4 +202,3 @@ $magicWords = [ 'pagesincategory_all' => [ '0', 'oll', 'all' ], 'pagesincategory_pages' => [ '0', 'folennow', 'pages' ], ]; - diff --git a/languages/messages/MessagesKy.php b/languages/messages/MessagesKy.php index e2256af435..99b49a553c 100644 --- a/languages/messages/MessagesKy.php +++ b/languages/messages/MessagesKy.php @@ -32,4 +32,3 @@ $namespaceNames = [ NS_HELP => 'Жардам', NS_CATEGORY => 'Категория', ]; - diff --git a/languages/messages/MessagesLa.php b/languages/messages/MessagesLa.php index 67143e7fe5..1fa3e117ae 100644 --- a/languages/messages/MessagesLa.php +++ b/languages/messages/MessagesLa.php @@ -157,4 +157,3 @@ $specialPageAliases = [ 'Whatlinkshere' => [ 'Nexus_ad_paginam' ], 'Withoutinterwiki' => [ 'Paginae_sine_nexibus_ad_linguas_alias', 'Paginae_sine_nexibus_intervicis' ], ]; - diff --git a/languages/messages/MessagesLad.php b/languages/messages/MessagesLad.php index 78c87fc5ae..f12be20109 100644 --- a/languages/messages/MessagesLad.php +++ b/languages/messages/MessagesLad.php @@ -70,7 +70,7 @@ $namespaceAliases = [ 'Diskusyón_de_Katēggoría' => NS_CATEGORY_TALK, ]; -// Remove Spanish gender aliases (bug 37090) +// Remove Spanish gender aliases (T39090) $namespaceGenderAliases = []; $specialPageAliases = [ @@ -177,4 +177,3 @@ $magicWords = [ 'img_left' => [ '1', 'cierda', 'izquierda', 'izda', 'izq', 'left' ], 'img_none' => [ '1', 'dinguna', 'dinguno', 'ninguna', 'nada', 'no', 'ninguno', 'none' ], ]; - diff --git a/languages/messages/MessagesLb.php b/languages/messages/MessagesLb.php index 2f52faf9cf..a416fe7464 100644 --- a/languages/messages/MessagesLb.php +++ b/languages/messages/MessagesLb.php @@ -191,4 +191,3 @@ $magicWords = [ 'pagesincategory_pages' => [ '0', 'Säiten', 'seiten', 'pages' ], 'pagesincategory_files' => [ '0', 'Fichieren', 'dateien', 'files' ], ]; - diff --git a/languages/messages/MessagesLbe.php b/languages/messages/MessagesLbe.php index b54f73a436..9b4aa82990 100644 --- a/languages/messages/MessagesLbe.php +++ b/languages/messages/MessagesLbe.php @@ -42,4 +42,3 @@ $namespaceNames = [ $namespaceGenderAliases = []; $linkTrail = '/^([a-zабвгдеёжзийклмнопрстуфхцчшщъыьэюяӀ1“»]+)(.*)$/sDu'; - diff --git a/languages/messages/MessagesLez.php b/languages/messages/MessagesLez.php index 86e9f88cd6..0002adc931 100644 --- a/languages/messages/MessagesLez.php +++ b/languages/messages/MessagesLez.php @@ -56,4 +56,3 @@ $namespaceAliases = [ // Remove Russian gender aliases $namespaceGenderAliases = []; - diff --git a/languages/messages/MessagesLfn.php b/languages/messages/MessagesLfn.php index eb453eaffa..051b323bf3 100644 --- a/languages/messages/MessagesLfn.php +++ b/languages/messages/MessagesLfn.php @@ -33,4 +33,3 @@ $specialPageAliases = [ 'Newimages' => [ 'FixesNova' ], 'Newpages' => [ 'PajesNova' ], ]; - diff --git a/languages/messages/MessagesLi.php b/languages/messages/MessagesLi.php index fe512b2b89..56ccf7bd1e 100644 --- a/languages/messages/MessagesLi.php +++ b/languages/messages/MessagesLi.php @@ -150,4 +150,3 @@ $dateFormats = [ 'ymd date' => 'Y M j', 'ymd both' => 'Y M j H:i', ]; - diff --git a/languages/messages/MessagesLij.php b/languages/messages/MessagesLij.php index d5a07883f3..8c01b09909 100644 --- a/languages/messages/MessagesLij.php +++ b/languages/messages/MessagesLij.php @@ -120,4 +120,3 @@ $specialPageAliases = [ 'Whatlinkshere' => [ 'Cose appunta chì' ], 'Withoutinterwiki' => [ 'Sensa Interwiki' ], ]; - diff --git a/languages/messages/MessagesLiv.php b/languages/messages/MessagesLiv.php index b76f6d6065..3706fb22e6 100644 --- a/languages/messages/MessagesLiv.php +++ b/languages/messages/MessagesLiv.php @@ -13,4 +13,3 @@ */ $fallback = 'et'; - diff --git a/languages/messages/MessagesLmo.php b/languages/messages/MessagesLmo.php index 92001edfd1..dc1840c56c 100644 --- a/languages/messages/MessagesLmo.php +++ b/languages/messages/MessagesLmo.php @@ -100,4 +100,3 @@ $magicWords = [ 'img_none' => [ '1', 'nissön', 'nessuno', 'none' ], 'sitename' => [ '1', 'NUMSIT', 'NOMESITO', 'SITENAME' ], ]; - diff --git a/languages/messages/MessagesLn.php b/languages/messages/MessagesLn.php index d7ea41fd0d..6a71ca78e8 100644 --- a/languages/messages/MessagesLn.php +++ b/languages/messages/MessagesLn.php @@ -18,6 +18,5 @@ $namespaceGenderAliases = []; $linkPrefixExtension = true; -# Same as the French (bug 8485) +# Same as the French (T10485) $separatorTransformTable = [ ',' => "\xc2\xa0", '.' => ',' ]; - diff --git a/languages/messages/MessagesLo.php b/languages/messages/MessagesLo.php index 1c79efd8af..665b222d98 100644 --- a/languages/messages/MessagesLo.php +++ b/languages/messages/MessagesLo.php @@ -91,4 +91,3 @@ $digitTransformTable = [ '8' => '໘', # ໘ '9' => '໙', # ໙ ]; - diff --git a/languages/messages/MessagesLtg.php b/languages/messages/MessagesLtg.php index 8bdfc7fc22..f77049a36c 100644 --- a/languages/messages/MessagesLtg.php +++ b/languages/messages/MessagesLtg.php @@ -32,4 +32,3 @@ $namespaceNames = [ ]; $fallback = 'lv'; - diff --git a/languages/messages/MessagesLzh.php b/languages/messages/MessagesLzh.php index d9ef8bc3ab..5214c467a0 100644 --- a/languages/messages/MessagesLzh.php +++ b/languages/messages/MessagesLzh.php @@ -151,4 +151,3 @@ $digitTransformTable = [ '.' => '點', ',' => '', ]; - diff --git a/languages/messages/MessagesLzz.php b/languages/messages/MessagesLzz.php index 45d6f6c793..b86bb14f93 100644 --- a/languages/messages/MessagesLzz.php +++ b/languages/messages/MessagesLzz.php @@ -55,4 +55,3 @@ $namespaceAliases = [ 'Kategori' => NS_CATEGORY, 'Kategori_tartışma' => NS_CATEGORY_TALK, ]; - diff --git a/languages/messages/MessagesMap_bms.php b/languages/messages/MessagesMap_bms.php index f76bcaa3f3..8fb8abaa93 100644 --- a/languages/messages/MessagesMap_bms.php +++ b/languages/messages/MessagesMap_bms.php @@ -13,4 +13,3 @@ */ $fallback = 'jv, id'; - diff --git a/languages/messages/MessagesMdf.php b/languages/messages/MessagesMdf.php index 84b107ef40..76110ac38a 100644 --- a/languages/messages/MessagesMdf.php +++ b/languages/messages/MessagesMdf.php @@ -137,4 +137,3 @@ $specialPageAliases = [ 'Whatlinkshere' => [ 'МезеньСюлмафкстТяса' ], 'Withoutinterwiki' => [ 'Интервикифтома' ], ]; - diff --git a/languages/messages/MessagesMg.php b/languages/messages/MessagesMg.php index 653be834f6..e8df5aaaea 100644 --- a/languages/messages/MessagesMg.php +++ b/languages/messages/MessagesMg.php @@ -231,4 +231,3 @@ $specialPageAliases = [ 'Whatlinkshere' => [ 'Pejy_mirohy' ], 'Withoutinterwiki' => [ 'Tsy_misy_interwiki' ], ]; - diff --git a/languages/messages/MessagesMhr.php b/languages/messages/MessagesMhr.php index 99ab0e55f3..7d1296746f 100644 --- a/languages/messages/MessagesMhr.php +++ b/languages/messages/MessagesMhr.php @@ -91,4 +91,3 @@ $magicWords = [ 'img_bottom' => [ '1', 'ӱлычын', 'снизу', 'bottom' ], 'sitename' => [ '1', 'САЙТЛӰМ', 'НАЗВАНИЕ_САЙТА', 'SITENAME' ], ]; - diff --git a/languages/messages/MessagesMin.php b/languages/messages/MessagesMin.php index 0529a0e393..4bee5e1992 100644 --- a/languages/messages/MessagesMin.php +++ b/languages/messages/MessagesMin.php @@ -159,4 +159,3 @@ $magicWords = [ 'pagesincategory_pages' => [ '0', 'laman', 'halaman', 'pages' ], 'pagesincategory_files' => [ '0', 'berkas', 'files' ], ]; - diff --git a/languages/messages/MessagesMk.php b/languages/messages/MessagesMk.php index c15b040d5e..cf608fc730 100644 --- a/languages/messages/MessagesMk.php +++ b/languages/messages/MessagesMk.php @@ -359,4 +359,3 @@ $magicWords = [ $linkTrail = '/^([a-zабвгдѓежзѕијклљмнњопрстќуфхцчџш]+)(.*)$/sDu'; $separatorTransformTable = [ ',' => '.', '.' => ',' ]; - diff --git a/languages/messages/MessagesMl.php b/languages/messages/MessagesMl.php index 2c9542bd49..f6d0d14f0b 100644 --- a/languages/messages/MessagesMl.php +++ b/languages/messages/MessagesMl.php @@ -356,4 +356,3 @@ $magicWords = [ $linkTrail = "/^([a-z\x{0D02}-\x{0D7F}]+)(.*)$/sDu"; $digitGroupingPattern = "##,##,###"; - diff --git a/languages/messages/MessagesMn.php b/languages/messages/MessagesMn.php index e63f009040..a672fc4de1 100644 --- a/languages/messages/MessagesMn.php +++ b/languages/messages/MessagesMn.php @@ -47,4 +47,3 @@ $magicWords = [ ]; $linkTrail = '/^([a-zабвгдеёжзийклмнопрстуфхцчшщъыьэюя“»]+)(.*)$/sDu'; - diff --git a/languages/messages/MessagesMo.php b/languages/messages/MessagesMo.php index dd8133e830..744fe738fd 100644 --- a/languages/messages/MessagesMo.php +++ b/languages/messages/MessagesMo.php @@ -18,4 +18,3 @@ $specialPageAliases = [ 'Preferences' => [ 'Преферинце' ], 'Recentchanges' => [ 'Модификэрьреченте' ], ]; - diff --git a/languages/messages/MessagesMr.php b/languages/messages/MessagesMr.php index 61fc6138ac..b51839db1d 100644 --- a/languages/messages/MessagesMr.php +++ b/languages/messages/MessagesMr.php @@ -326,4 +326,3 @@ $digitTransformTable = [ $linkTrail = "/^([\xE0\xA4\x80-\xE0\xA5\xA3\xE0\xA5\xB1-\xE0\xA5\xBF\xEF\xBB\xBF\xE2\x80\x8D]+)(.*)$/sDu"; $digitGroupingPattern = "##,##,###"; - diff --git a/languages/messages/MessagesMrj.php b/languages/messages/MessagesMrj.php index a9ddf7d37c..4d01b28c08 100644 --- a/languages/messages/MessagesMrj.php +++ b/languages/messages/MessagesMrj.php @@ -42,4 +42,3 @@ $namespaceAliases = [ // Remove Russian aliases $namespaceGenderAliases = []; - diff --git a/languages/messages/MessagesMs.php b/languages/messages/MessagesMs.php index c39854e5b5..5d720cec38 100644 --- a/languages/messages/MessagesMs.php +++ b/languages/messages/MessagesMs.php @@ -211,4 +211,3 @@ $specialPageAliases = [ 'Whatlinkshere' => [ 'Pautan_ke_sini', 'Pautan_ke' ], 'Withoutinterwiki' => [ 'Laman_tanpa_pautan_bahasa' ], ]; - diff --git a/languages/messages/MessagesMt.php b/languages/messages/MessagesMt.php index aad38b7703..015dade85a 100644 --- a/languages/messages/MessagesMt.php +++ b/languages/messages/MessagesMt.php @@ -268,4 +268,3 @@ $magicWords = [ ]; $linkPrefixCharset = 'A-\\x{10ffff}'; - diff --git a/languages/messages/MessagesMwl.php b/languages/messages/MessagesMwl.php index 42afbd9bad..0dcfe2ddeb 100644 --- a/languages/messages/MessagesMwl.php +++ b/languages/messages/MessagesMwl.php @@ -75,4 +75,3 @@ $magicWords = [ 'pagesize' => [ '1', 'TAMANHOFEXEIRO', 'TAMANHODAPAGINA', 'TAMANHODAPÁGINA', 'PAGESIZE' ], 'staticredirect' => [ '1', '_ANCAMINARSTATICO_', '__REDIRECIONAMENTOESTATICO__', '__REDIRECIONAMENTOESTÁTICO__', '__STATICREDIRECT__' ], ]; - diff --git a/languages/messages/MessagesMy.php b/languages/messages/MessagesMy.php index ebaa7ca292..3bafe489cf 100644 --- a/languages/messages/MessagesMy.php +++ b/languages/messages/MessagesMy.php @@ -57,4 +57,3 @@ $dateFormats = [ 'my long date' => 'Y "ဇန်နဝါရီ" F"လ" j "ရက်"', 'my long both' => 'H:i"၊" Y "ဇန်နဝါရီ" F"လ" j "ရက်"', ]; - diff --git a/languages/messages/MessagesMyv.php b/languages/messages/MessagesMyv.php index 20057d52b2..01bc33d1da 100644 --- a/languages/messages/MessagesMyv.php +++ b/languages/messages/MessagesMyv.php @@ -183,4 +183,3 @@ $magicWords = [ 'url_path' => [ '0', 'ЯН', 'ПУТЬ', 'PATH' ], 'url_wiki' => [ '0', 'ВИКИ', 'WIKI' ], ]; - diff --git a/languages/messages/MessagesMzn.php b/languages/messages/MessagesMzn.php index 027cf34e79..e93362bf9f 100644 --- a/languages/messages/MessagesMzn.php +++ b/languages/messages/MessagesMzn.php @@ -121,4 +121,3 @@ $magicWords = [ 'grammar' => [ '0', 'دستور_زبون:', 'دستور_زوون:', 'دستورزبان:', 'دستور_زبان:', 'GRAMMAR:' ], 'gender' => [ '0', 'جنسیت:', 'جنس:', 'GENDER:' ], ]; - diff --git a/languages/messages/MessagesNah.php b/languages/messages/MessagesNah.php index 1bf970c70c..2aa25ad45a 100644 --- a/languages/messages/MessagesNah.php +++ b/languages/messages/MessagesNah.php @@ -36,7 +36,7 @@ $namespaceNames = [ NS_CATEGORY_TALK => 'Neneuhcāyōtl_tēixnāmiquiliztli', ]; -// Remove Spanish gender aliases (bug 37090) +// Remove Spanish gender aliases (T39090) $namespaceGenderAliases = []; $namespaceAliases = [ @@ -75,4 +75,3 @@ $specialPageAliases = [ 'Upload' => [ 'Quetza', 'Subir' ], 'Userlogin' => [ 'Tlacalaquiliztli', 'Registrarse' ], ]; - diff --git a/languages/messages/MessagesNap.php b/languages/messages/MessagesNap.php index 3f67a611c5..be7574c0b9 100644 --- a/languages/messages/MessagesNap.php +++ b/languages/messages/MessagesNap.php @@ -53,4 +53,3 @@ $namespaceAliases = [ 'Categoria' => NS_CATEGORY, 'Discussioni_categoria' => NS_CATEGORY_TALK, ]; - diff --git a/languages/messages/MessagesNb.php b/languages/messages/MessagesNb.php index 548b3db6e5..66f05275ba 100644 --- a/languages/messages/MessagesNb.php +++ b/languages/messages/MessagesNb.php @@ -55,7 +55,7 @@ $bookstoreList = [ 'Bibsys' => 'http://ask.bibsys.no/ask/action/result?cmd=&kilde=biblio&fid=isbn&term=$1&op=and&fid=bd&term=&arstall=&sortering=sortdate-&treffPrSide=50', 'Akademika' => 'http://www.akademika.no/sok.php?ts=4&sok=$1', 'Haugenbok' => 'http://www.haugenbok.no/resultat.cfm?st=extended&isbn=$1', - 'Amazon.com' => 'http://www.amazon.com/exec/obidos/ISBN=$1' + 'Amazon.com' => 'https://www.amazon.com/exec/obidos/ISBN=$1' ]; $namespaceNames = [ @@ -330,4 +330,3 @@ $magicWords = [ 'url_path' => [ '0', 'STI', 'PATH' ], 'url_query' => [ '0', 'SPØRRING', 'QUERY' ], ]; - diff --git a/languages/messages/MessagesNds.php b/languages/messages/MessagesNds.php index b04066cca2..10d0a83110 100644 --- a/languages/messages/MessagesNds.php +++ b/languages/messages/MessagesNds.php @@ -88,7 +88,7 @@ $magicWords = [ $bookstoreList = [ 'Verteken vun leverbore Böker' => 'http://www.buchhandel.de/sixcms/list.php?page=buchhandel_profisuche_frameset&suchfeld=isbn&suchwert=$1=0&y=0', 'abebooks.de' => 'http://www.abebooks.de/servlet/BookSearchPL?ph=2&isbn=$1', - 'Amazon.de' => 'http://www.amazon.de/exec/obidos/ISBN=$1', + 'Amazon.de' => 'https://www.amazon.de/exec/obidos/ISBN=$1', 'Lehmanns Fachbuchhandlung' => 'http://www.lob.de/cgi-bin/work/suche?flag=new&stich1=$1', ]; @@ -211,4 +211,3 @@ $specialPageAliases = [ 'Whatlinkshere' => [ 'Wat wiest hier hen' ], 'Withoutinterwiki' => [ 'Sieden ahn Spraaklenken' ], ]; - diff --git a/languages/messages/MessagesNds_nl.php b/languages/messages/MessagesNds_nl.php index 2a3ab0b307..8af1c00a3b 100644 --- a/languages/messages/MessagesNds_nl.php +++ b/languages/messages/MessagesNds_nl.php @@ -319,4 +319,3 @@ $specialPageAliases = [ ]; $linkTrail = '/^([a-zäöüïëéèà]+)(.*)$/sDu'; - diff --git a/languages/messages/MessagesNe.php b/languages/messages/MessagesNe.php index 2f7ad26c32..c6ab806e2e 100644 --- a/languages/messages/MessagesNe.php +++ b/languages/messages/MessagesNe.php @@ -57,4 +57,3 @@ $digitTransformTable = [ '8' => '८', # ८ '9' => '९', # ९ ]; - diff --git a/languages/messages/MessagesNew.php b/languages/messages/MessagesNew.php index 2d2cf394af..65a7595adf 100644 --- a/languages/messages/MessagesNew.php +++ b/languages/messages/MessagesNew.php @@ -39,4 +39,3 @@ $digitTransformTable = [ '8' => '८', # ८ '9' => '९', # ९ ]; - diff --git a/languages/messages/MessagesNl.php b/languages/messages/MessagesNl.php index dde2e04b7e..9d222549e3 100644 --- a/languages/messages/MessagesNl.php +++ b/languages/messages/MessagesNl.php @@ -382,4 +382,3 @@ $specialPageAliases = [ ]; $linkTrail = '/^([a-zäöüïëéèà]+)(.*)$/sDu'; - diff --git a/languages/messages/MessagesNl_informal.php b/languages/messages/MessagesNl_informal.php index 695d5cc849..83cc469293 100644 --- a/languages/messages/MessagesNl_informal.php +++ b/languages/messages/MessagesNl_informal.php @@ -13,4 +13,3 @@ */ $fallback = 'nl'; - diff --git a/languages/messages/MessagesNn.php b/languages/messages/MessagesNn.php index 5b599a99e6..7572c67e01 100644 --- a/languages/messages/MessagesNn.php +++ b/languages/messages/MessagesNn.php @@ -96,9 +96,9 @@ $bookstoreList = [ 'Haugenbok' => 'http://www.haugenbok.no/resultat.cfm?st=hurtig&isbn=$1', 'Akademika' => 'http://www.akademika.no/sok.php?isbn=$1', 'Gnist' => 'http://www.gnist.no/sok.php?isbn=$1', - 'Amazon.co.uk' => 'http://www.amazon.co.uk/exec/obidos/ISBN=$1', - 'Amazon.de' => 'http://www.amazon.de/exec/obidos/ISBN=$1', - 'Amazon.com' => 'http://www.amazon.com/exec/obidos/ISBN=$1' + 'Amazon.co.uk' => 'https://www.amazon.co.uk/exec/obidos/ISBN=$1', + 'Amazon.de' => 'https://www.amazon.de/exec/obidos/ISBN=$1', + 'Amazon.com' => 'https://www.amazon.com/exec/obidos/ISBN=$1' ]; $magicWords = [ @@ -321,4 +321,3 @@ $separatorTransformTable = [ '.' => ',' ]; $linkTrail = '/^([æøåa-z]+)(.*)$/sDu'; - diff --git a/languages/messages/MessagesNrm.php b/languages/messages/MessagesNrm.php new file mode 100644 index 0000000000..6cb8c4767f --- /dev/null +++ b/languages/messages/MessagesNrm.php @@ -0,0 +1,11 @@ +<?php +/** Norman (normaund) + * + * To improve a translation please visit https://translatewiki.net + * + * @ingroup Language + * @file + * + */ + +$fallback = 'fr'; diff --git a/languages/messages/MessagesNso.php b/languages/messages/MessagesNso.php index 2cdc6f0afe..80ce2dc7db 100644 --- a/languages/messages/MessagesNso.php +++ b/languages/messages/MessagesNso.php @@ -40,4 +40,3 @@ $magicWords = [ 'currenttime' => [ '1', 'NAKO_BJALE', 'CURRENTTIME' ], 'currenthour' => [ '1', 'IRI_BJALE', 'CURRENTHOUR' ], ]; - diff --git a/languages/messages/MessagesNv.php b/languages/messages/MessagesNv.php index 0917c7329d..334160f599 100644 --- a/languages/messages/MessagesNv.php +++ b/languages/messages/MessagesNv.php @@ -31,4 +31,3 @@ $namespaceNames = [ ]; $datePreferences = false; - diff --git a/languages/messages/MessagesOc.php b/languages/messages/MessagesOc.php index 6c7512ba45..eb8ed882ce 100644 --- a/languages/messages/MessagesOc.php +++ b/languages/messages/MessagesOc.php @@ -19,8 +19,10 @@ * @author לערי ריינהארט */ +$fallback = 'ca, fr'; + $bookstoreList = [ - 'Amazon.fr' => 'http://www.amazon.fr/exec/obidos/ISBN=$1' + 'Amazon.fr' => 'https://www.amazon.fr/exec/obidos/ISBN=$1' ]; $namespaceNames = [ @@ -57,6 +59,8 @@ $namespaceAliases = [ 'Discussion_Imatge' => NS_FILE_TALK, ]; +$namespaceGenderAliases = []; + $specialPageAliases = [ 'Allmessages' => [ 'Messatge_sistèma', 'Messatge_del_sistèma' ], 'Allpages' => [ 'Totas_las_paginas' ], @@ -285,4 +289,3 @@ $dateFormats = [ $separatorTransformTable = [ ',' => "\xc2\xa0", '.' => ',' ]; $linkTrail = "/^([a-zàâçéèêîôû]+)(.*)$/sDu"; - diff --git a/languages/messages/MessagesOlo.php b/languages/messages/MessagesOlo.php index 63c1e8010e..022a9ac569 100644 --- a/languages/messages/MessagesOlo.php +++ b/languages/messages/MessagesOlo.php @@ -30,4 +30,3 @@ $namespaceNames = [ ]; $linkTrail = '/^([a-zčČšŠžŽäÄöÖ]+)(.*)$/sDu'; - diff --git a/languages/messages/MessagesOr.php b/languages/messages/MessagesOr.php index 4f500a774e..d17105a1ae 100644 --- a/languages/messages/MessagesOr.php +++ b/languages/messages/MessagesOr.php @@ -252,4 +252,3 @@ $magicWords = [ ]; $digitGroupingPattern = "##,##,###"; - diff --git a/languages/messages/MessagesOs.php b/languages/messages/MessagesOs.php index 5ba4ff558e..44e943e398 100644 --- a/languages/messages/MessagesOs.php +++ b/languages/messages/MessagesOs.php @@ -179,4 +179,3 @@ $magicWords = [ $linkTrail = '/^((?:[a-z]|а|æ|б|в|г|д|е|ё|ж|з|и|й|к|л|м|н|о|п|р|с|т|у|ф|х|ц|ч|ш|щ|ъ|ы|ь|э|ю|я|“|»)+)(.*)$/sDu'; $fallback8bitEncoding = 'windows-1251'; - diff --git a/languages/messages/MessagesPa.php b/languages/messages/MessagesPa.php index 856ffa2a57..253119b786 100644 --- a/languages/messages/MessagesPa.php +++ b/languages/messages/MessagesPa.php @@ -182,4 +182,3 @@ $magicWords = [ $linkTrail = '/^([ਁਂਃਅਆਇਈਉਊਏਐਓਔਕਖਗਘਙਚਛਜਝਞਟਠਡਢਣਤਥਦਧਨਪਫਬਭਮਯਰਲਲ਼ਵਸ਼ਸਹ਼ਾਿੀੁੂੇੈੋੌ੍ਖ਼ਗ਼ਜ਼ੜਫ਼ੰੱੲੳa-z]+)(.*)$/sDu'; $digitGroupingPattern = "##,##,###"; - diff --git a/languages/messages/MessagesPcd.php b/languages/messages/MessagesPcd.php index ff9a2b49db..62c8418534 100644 --- a/languages/messages/MessagesPcd.php +++ b/languages/messages/MessagesPcd.php @@ -14,4 +14,3 @@ $fallback = 'fr'; // Remove French aliases $namespaceGenderAliases = []; - diff --git a/languages/messages/MessagesPdc.php b/languages/messages/MessagesPdc.php index 449ec0e26e..bd13273eeb 100644 --- a/languages/messages/MessagesPdc.php +++ b/languages/messages/MessagesPdc.php @@ -58,4 +58,3 @@ $specialPageAliases = [ 'Listbots' => [ 'Waddefresser', 'Bots' ], 'Search' => [ 'Uffgucke', 'Suche' ], ]; - diff --git a/languages/messages/MessagesPdt.php b/languages/messages/MessagesPdt.php index 472b7bf920..d599712798 100644 --- a/languages/messages/MessagesPdt.php +++ b/languages/messages/MessagesPdt.php @@ -15,4 +15,3 @@ */ $fallback = 'de'; - diff --git a/languages/messages/MessagesPfl.php b/languages/messages/MessagesPfl.php index 1e4706dec3..6365b8a164 100644 --- a/languages/messages/MessagesPfl.php +++ b/languages/messages/MessagesPfl.php @@ -60,4 +60,3 @@ $namespaceAliases = [ // Remove German aliases $namespaceGenderAliases = []; - diff --git a/languages/messages/MessagesPi.php b/languages/messages/MessagesPi.php index f49889a796..7062e07c26 100644 --- a/languages/messages/MessagesPi.php +++ b/languages/messages/MessagesPi.php @@ -42,4 +42,3 @@ $digitTransformTable = [ '8' => '८', # ८ '9' => '९', # ९ ]; - diff --git a/languages/messages/MessagesPl.php b/languages/messages/MessagesPl.php index cfe034530d..01a9d1a5a8 100644 --- a/languages/messages/MessagesPl.php +++ b/languages/messages/MessagesPl.php @@ -120,7 +120,7 @@ $dateFormats = [ $fallback8bitEncoding = 'iso-8859-2'; $separatorTransformTable = [ - ',' => "\xc2\xa0", // @bug 2749 + ',' => "\xc2\xa0", // T4749 '.' => ',' ]; @@ -317,4 +317,3 @@ $magicWords = [ 'pagesincategory_pages' => [ '0', 'strony', 'pages' ], 'pagesincategory_files' => [ '0', 'pliki', 'files' ], ]; - diff --git a/languages/messages/MessagesPms.php b/languages/messages/MessagesPms.php index 7fd9f1f25a..1d1a8c3fdd 100644 --- a/languages/messages/MessagesPms.php +++ b/languages/messages/MessagesPms.php @@ -39,4 +39,3 @@ $namespaceNames = [ NS_CATEGORY => 'Categorìa', NS_CATEGORY_TALK => 'Discussion_ant_sla_categorìa', ]; - diff --git a/languages/messages/MessagesPnb.php b/languages/messages/MessagesPnb.php index fcbdac4b2f..65ce3d8dba 100644 --- a/languages/messages/MessagesPnb.php +++ b/languages/messages/MessagesPnb.php @@ -37,3 +37,11 @@ $namespaceNames = [ NS_CATEGORY => 'Ú¯Ù¹Ú¾', NS_CATEGORY_TALK => 'Ú¯Ù¹Ú¾_گل_بات', ]; + +$namespaceAliases = [ + 'تصویر' => NS_FILE, +]; + +$magicWords = [ + 'redirect' => [ '0', '#مڑجوڑ', '#REDIRECT' ], +]; diff --git a/languages/messages/MessagesPnt.php b/languages/messages/MessagesPnt.php index e40b22bc6a..410927b68c 100644 --- a/languages/messages/MessagesPnt.php +++ b/languages/messages/MessagesPnt.php @@ -55,4 +55,3 @@ $dateFormats = [ 'pnt date' => 'j xg Y', 'pnt both' => 'H:i, j xg Y', ]; - diff --git a/languages/messages/MessagesPs.php b/languages/messages/MessagesPs.php index cc555b6b38..5db6ce4b79 100644 --- a/languages/messages/MessagesPs.php +++ b/languages/messages/MessagesPs.php @@ -155,4 +155,3 @@ $magicWords = [ 'noindex' => [ '1', '__بې_ليکلړ__', '__NOINDEX__' ], 'protectionlevel' => [ '1', 'ژغورکچه', 'PROTECTIONLEVEL' ], ]; - diff --git a/languages/messages/MessagesPt.php b/languages/messages/MessagesPt.php index 5c3c191027..78503ccb46 100644 --- a/languages/messages/MessagesPt.php +++ b/languages/messages/MessagesPt.php @@ -111,7 +111,7 @@ $dateFormats = [ ]; $separatorTransformTable = [ ',' => "\xc2\xa0", '.' => ',' ]; -$linkTrail = '/^([áâãàéêẽçíòóôõq̃úüűũa-z]+)(.*)$/sDu'; # Bug 21168, 27633 +$linkTrail = '/^([áâãàéêẽçíòóôõq̃úüűũa-z]+)(.*)$/sDu'; # T23168, T29633 $specialPageAliases = [ 'Activeusers' => [ 'Utilizadores_activos' ], @@ -329,4 +329,3 @@ $magicWords = [ 'staticredirect' => [ '1', '__REDIRECIONAMENTOESTATICO__', '__REDIRECIONAMENTOESTÁTICO__', '__STATICREDIRECT__' ], 'protectionlevel' => [ '1', 'NIVELDEPROTECAO', 'NÍVELDEPROTEÇÃO', 'PROTECTIONLEVEL' ], ]; - diff --git a/languages/messages/MessagesPt_br.php b/languages/messages/MessagesPt_br.php index 8f84f20791..61625e16d3 100644 --- a/languages/messages/MessagesPt_br.php +++ b/languages/messages/MessagesPt_br.php @@ -328,4 +328,3 @@ $magicWords = [ 'protectionlevel' => [ '1', 'NIVELDEPROTECAO', 'NÍVELDEPROTEÇÃO', 'PROTECTIONLEVEL' ], 'url_path' => [ '0', 'CAMINHO', 'PATH' ], ]; - diff --git a/languages/messages/MessagesQu.php b/languages/messages/MessagesQu.php index eb1c8d9d61..8488159641 100644 --- a/languages/messages/MessagesQu.php +++ b/languages/messages/MessagesQu.php @@ -36,7 +36,7 @@ $namespaceNames = [ NS_CATEGORY_TALK => 'Katiguriya_rimanakuy', ]; -// Remove Spanish gender aliases (bug 37090) +// Remove Spanish gender aliases (T39090) $namespaceGenderAliases = []; $specialPageAliases = [ @@ -277,4 +277,3 @@ $magicWords = [ 'protectionlevel' => [ '1', 'HAYKAAMACHAY', 'IMASINCHIAMACHAY', 'NIVELDEPROTECCIÓN', 'PROTECTIONLEVEL' ], 'formatdate' => [ '0', 'punchawrikchakuy', 'formatodefecha', 'formatearfecha', 'formatdate', 'dateformat' ], ]; - diff --git a/languages/messages/MessagesQug.php b/languages/messages/MessagesQug.php index a85d801556..e960abd8c8 100644 --- a/languages/messages/MessagesQug.php +++ b/languages/messages/MessagesQug.php @@ -32,6 +32,5 @@ $namespaceNames = [ NS_CATEGORY_TALK => 'Samiyachiy_rimanakuy', ]; -// Remove Spanish gender aliases (bug 37090) +// Remove Spanish gender aliases (T39090) $namespaceGenderAliases = []; - diff --git a/languages/messages/MessagesRgn.php b/languages/messages/MessagesRgn.php index 8d3c300c4f..6d5a1f2a55 100644 --- a/languages/messages/MessagesRgn.php +++ b/languages/messages/MessagesRgn.php @@ -11,4 +11,3 @@ */ $fallback = 'it'; - diff --git a/languages/messages/MessagesRm.php b/languages/messages/MessagesRm.php index 7304dbfb08..d4da53f490 100644 --- a/languages/messages/MessagesRm.php +++ b/languages/messages/MessagesRm.php @@ -40,4 +40,3 @@ $magicWords = [ 'img_manualthumb' => [ '1', 'miniatura=$1', 'thumbnail=$1', 'thumb=$1' ], 'img_upright' => [ '1', 'sidretg', 'sidretg=$1', 'sidretg_$1', 'upright', 'upright=$1', 'upright $1' ], ]; - diff --git a/languages/messages/MessagesRmy.php b/languages/messages/MessagesRmy.php index 0a5fd11a27..cb6b47da57 100644 --- a/languages/messages/MessagesRmy.php +++ b/languages/messages/MessagesRmy.php @@ -30,4 +30,3 @@ $namespaceNames = [ NS_CATEGORY => 'Shopni', NS_CATEGORY_TALK => 'Shopni_vakyarimata', ]; - diff --git a/languages/messages/MessagesRo.php b/languages/messages/MessagesRo.php index 8b921713d2..55674ceb94 100644 --- a/languages/messages/MessagesRo.php +++ b/languages/messages/MessagesRo.php @@ -292,4 +292,3 @@ $dateFormats = [ $fallback8bitEncoding = 'iso8859-2'; $linkTrail = '/^([a-zăâîşţșțĂÂÎŞŢȘȚ]+)(.*)$/sDu'; - diff --git a/languages/messages/MessagesRoa_tara.php b/languages/messages/MessagesRoa_tara.php index 29627a6a2c..7c3663ac66 100644 --- a/languages/messages/MessagesRoa_tara.php +++ b/languages/messages/MessagesRoa_tara.php @@ -23,4 +23,3 @@ $specialPageAliases = [ 'Version' => [ 'Versione' ], 'Watchlist' => [ 'PàggeneCondrollete' ], ]; - diff --git a/languages/messages/MessagesRu.php b/languages/messages/MessagesRu.php index e1af8f3326..3041abdc04 100644 --- a/languages/messages/MessagesRu.php +++ b/languages/messages/MessagesRu.php @@ -413,7 +413,7 @@ $bookstoreList = [ 'Яндекс.Маркет' => 'http://market.yandex.ru/search.xml?text=$1', 'ОЗОН' => 'http://www.ozon.ru/?context=advsearch_book&isbn=$1', 'Books.Ru' => 'http://www.books.ru/shop/search?query=$1', - 'Amazon.com' => 'http://www.amazon.com/exec/obidos/ISBN=$1' + 'Amazon.com' => 'https://www.amazon.com/exec/obidos/ISBN=$1' ]; /** @@ -439,4 +439,3 @@ $imageFiles = [ ]; $linkTrail = '/^([a-zабвгдеёжзийклмнопрстуфхцчшщъыьэюя]+)(.*)$/sDu'; - diff --git a/languages/messages/MessagesRue.php b/languages/messages/MessagesRue.php index 34832b0b0c..6225aefedd 100644 --- a/languages/messages/MessagesRue.php +++ b/languages/messages/MessagesRue.php @@ -128,4 +128,3 @@ $specialPageAliases = [ 'Whatlinkshere' => [ 'Одказы_гев' ], 'Withoutinterwiki' => [ 'Без_інтервікі' ], ]; - diff --git a/languages/messages/MessagesRuq_cyrl.php b/languages/messages/MessagesRuq_cyrl.php index 29b1d94cbf..7057e76277 100644 --- a/languages/messages/MessagesRuq_cyrl.php +++ b/languages/messages/MessagesRuq_cyrl.php @@ -13,4 +13,3 @@ */ $fallback = 'mk'; - diff --git a/languages/messages/MessagesRuq_latn.php b/languages/messages/MessagesRuq_latn.php index 59951523ea..e72d78b484 100644 --- a/languages/messages/MessagesRuq_latn.php +++ b/languages/messages/MessagesRuq_latn.php @@ -13,4 +13,3 @@ */ $fallback = 'ro'; - diff --git a/languages/messages/MessagesSa.php b/languages/messages/MessagesSa.php index 4a369bdc40..aa5fdebcbf 100644 --- a/languages/messages/MessagesSa.php +++ b/languages/messages/MessagesSa.php @@ -283,4 +283,3 @@ $magicWords = [ ]; $digitGroupingPattern = "##,##,###"; - diff --git a/languages/messages/MessagesSah.php b/languages/messages/MessagesSah.php index 38d58f66e6..8a69163d8a 100644 --- a/languages/messages/MessagesSah.php +++ b/languages/messages/MessagesSah.php @@ -41,4 +41,3 @@ $namespaceAliases = [ // Remove Russian aliases $namespaceGenderAliases = []; - diff --git a/languages/messages/MessagesSc.php b/languages/messages/MessagesSc.php index 83770faeb4..0697595d50 100644 --- a/languages/messages/MessagesSc.php +++ b/languages/messages/MessagesSc.php @@ -54,4 +54,3 @@ $dateFormats = [ ]; $linkTrail = "/^([a-z]+)(.*)$/sD"; - diff --git a/languages/messages/MessagesScn.php b/languages/messages/MessagesScn.php index 43350d12bc..35d6e0a2a4 100644 --- a/languages/messages/MessagesScn.php +++ b/languages/messages/MessagesScn.php @@ -149,4 +149,3 @@ $specialPageAliases = [ 'Whatlinkshere' => [ 'PuntanoQui' ], 'Withoutinterwiki' => [ 'PagineSenzaInterwiki' ], ]; - diff --git a/languages/messages/MessagesSd.php b/languages/messages/MessagesSd.php index 20c23f3d85..4d4a48ed45 100644 --- a/languages/messages/MessagesSd.php +++ b/languages/messages/MessagesSd.php @@ -150,4 +150,3 @@ $magicWords = [ 'pagesincategory' => [ '1', 'زمريجاصفحا', 'PAGESINCATEGORY', 'PAGESINCAT' ], 'pagesize' => [ '1', 'صفحيجيماپ', 'PAGESIZE' ], ]; - diff --git a/languages/messages/MessagesSdc.php b/languages/messages/MessagesSdc.php index 53e763f7a6..954f3b603d 100644 --- a/languages/messages/MessagesSdc.php +++ b/languages/messages/MessagesSdc.php @@ -101,4 +101,3 @@ $specialPageAliases = [ 'Whatlinkshere' => [ 'PuntaniInogghi' ], 'Withoutinterwiki' => [ 'PàginiChenaInterwiki' ], ]; - diff --git a/languages/messages/MessagesSe.php b/languages/messages/MessagesSe.php index e04b004db8..8e1d476fbd 100644 --- a/languages/messages/MessagesSe.php +++ b/languages/messages/MessagesSe.php @@ -137,4 +137,3 @@ $magicWords = [ $separatorTransformTable = [ ',' => "\xc2\xa0", '.' => ',' ]; $linkTrail = '/^(:?[a-zàáâçčʒǯđðéèêëǧǥȟíìîïıǩŋñóòôõßšŧúùûýÿüžþæøåäö]+)(.*)$/sDu'; - diff --git a/languages/messages/MessagesSg.php b/languages/messages/MessagesSg.php index b6de002230..125335083c 100644 --- a/languages/messages/MessagesSg.php +++ b/languages/messages/MessagesSg.php @@ -14,4 +14,3 @@ $fallback = 'fr'; // Remove French aliases $namespaceGenderAliases = []; - diff --git a/languages/messages/MessagesSgs.php b/languages/messages/MessagesSgs.php index adf90ce27b..f0367aed12 100644 --- a/languages/messages/MessagesSgs.php +++ b/languages/messages/MessagesSgs.php @@ -56,4 +56,3 @@ $namespaceAliases = [ ]; $namespaceGenderAliases = []; - diff --git a/languages/messages/MessagesSh.php b/languages/messages/MessagesSh.php index fb792379ee..8130978586 100644 --- a/languages/messages/MessagesSh.php +++ b/languages/messages/MessagesSh.php @@ -13,6 +13,8 @@ * @author לערי ריינהארט */ +$fallback = 'bs, sr-el, hr'; + $namespaceNames = [ NS_SPECIAL => 'Posebno', NS_TALK => 'Razgovor', @@ -30,6 +32,23 @@ $namespaceNames = [ NS_CATEGORY_TALK => 'Razgovor_o_kategoriji', ]; +# Some dummy translations to prevent language fallback for now +# @TODO: Check whether localising them is appropriate. +$namespaceGenderAliases = []; +$defaultDateFormat = 'dmy'; +$datePreferences = [ + 'default', + 'dmy', + 'ymd', + 'ISO 8601', +]; +$datePreferenceMigrationMap = [ + 'default', + 'mdy', + 'dmy', + 'ymd' +]; + $specialPageAliases = [ 'Activeusers' => [ 'Aktivni_korisnici' ], 'Allmessages' => [ 'Sve_poruke' ], @@ -202,4 +221,3 @@ $magicWords = [ ]; $linkTrail = '/^([a-zčćđžš]+)(.*)$/sDu'; - diff --git a/languages/messages/MessagesSi.php b/languages/messages/MessagesSi.php index eeed627709..89e74e96cf 100644 --- a/languages/messages/MessagesSi.php +++ b/languages/messages/MessagesSi.php @@ -188,4 +188,3 @@ $magicWords = [ 'img_middle' => [ '1', 'මැද', 'middle' ], 'special' => [ '0', 'විශේෂ', 'special' ], ]; - diff --git a/languages/messages/MessagesSk.php b/languages/messages/MessagesSk.php index 40dc198c39..0399bfab17 100644 --- a/languages/messages/MessagesSk.php +++ b/languages/messages/MessagesSk.php @@ -177,9 +177,9 @@ $bookstoreList = [ 'Haugenbok' => 'http://www.haugenbok.no/searchresults.cfm?searchtype=simple&isbn=$1', 'Akademika' => 'http://www.akademika.no/sok.php?isbn=$1', 'Gnist' => 'http://www.gnist.no/sok.php?isbn=$1', - 'Amazon.co.uk' => 'http://www.amazon.co.uk/exec/obidos/ISBN=$1', - 'Amazon.de' => 'http://www.amazon.de/exec/obidos/ISBN=$1', - 'Amazon.com' => 'http://www.amazon.com/exec/obidos/ISBN=$1' + 'Amazon.co.uk' => 'https://www.amazon.co.uk/exec/obidos/ISBN=$1', + 'Amazon.de' => 'https://www.amazon.de/exec/obidos/ISBN=$1', + 'Amazon.com' => 'https://www.amazon.com/exec/obidos/ISBN=$1' ]; $magicWords = [ @@ -290,4 +290,3 @@ $separatorTransformTable = [ ]; $linkTrail = '/^([a-záäčďéíľĺňóôŕšťúýž]+)(.*)$/sDu'; - diff --git a/languages/messages/MessagesSl.php b/languages/messages/MessagesSl.php index 7599bc2b0a..3893109e5b 100644 --- a/languages/messages/MessagesSl.php +++ b/languages/messages/MessagesSl.php @@ -182,4 +182,3 @@ $dateFormats = [ $fallback8bitEncoding = "iso-8859-2"; $separatorTransformTable = [ ',' => '.', '.' => ',' ]; - diff --git a/languages/messages/MessagesSli.php b/languages/messages/MessagesSli.php index 67542335dc..c0a174c506 100644 --- a/languages/messages/MessagesSli.php +++ b/languages/messages/MessagesSli.php @@ -22,4 +22,3 @@ */ $fallback = 'de'; - diff --git a/languages/messages/MessagesSq.php b/languages/messages/MessagesSq.php index a0d88d4610..b674c49dd1 100644 --- a/languages/messages/MessagesSq.php +++ b/languages/messages/MessagesSq.php @@ -211,4 +211,3 @@ $dateFormats = [ ]; $separatorTransformTable = [ ',' => '.', '.' => ',' ]; - diff --git a/languages/messages/MessagesSr.php b/languages/messages/MessagesSr.php index 2bf0156f68..892307ac87 100644 --- a/languages/messages/MessagesSr.php +++ b/languages/messages/MessagesSr.php @@ -15,4 +15,3 @@ $fallback = 'sr-ec'; $linkTrail = '/^([abvgdđežzijklljmnnjoprstćufhcčdžšабвгдђежзијклљмнњопрстћуфхцчџш]+)(.*)$/usD'; - diff --git a/languages/messages/MessagesSr_ec.php b/languages/messages/MessagesSr_ec.php index a34771d7b9..9a6c51f5c0 100644 --- a/languages/messages/MessagesSr_ec.php +++ b/languages/messages/MessagesSr_ec.php @@ -405,4 +405,3 @@ $magicWords = [ 'pagesincategory_files' => [ '0', 'датотеке', 'files' ], ]; $separatorTransformTable = [ ',' => '.', '.' => ',' ]; - diff --git a/languages/messages/MessagesSr_el.php b/languages/messages/MessagesSr_el.php index b03a482863..b4d715bbf3 100644 --- a/languages/messages/MessagesSr_el.php +++ b/languages/messages/MessagesSr_el.php @@ -301,4 +301,3 @@ $magicWords = [ ]; $separatorTransformTable = [ ',' => '.', '.' => ',' ]; - diff --git a/languages/messages/MessagesSrn.php b/languages/messages/MessagesSrn.php index c42b4bcc05..fc26b43839 100644 --- a/languages/messages/MessagesSrn.php +++ b/languages/messages/MessagesSrn.php @@ -148,4 +148,3 @@ $magicWords = [ 'talkspacee' => [ '1', 'TAKIPREKIE', 'OVERLEGRUIMTEE', 'TALKSPACEE' ], 'special' => [ '0', 'spesyal', 'speciaal', 'special' ], ]; - diff --git a/languages/messages/MessagesStq.php b/languages/messages/MessagesStq.php index cce58e8733..4f656d4274 100644 --- a/languages/messages/MessagesStq.php +++ b/languages/messages/MessagesStq.php @@ -41,4 +41,3 @@ $namespaceGenderAliases = [ NS_USER => [ 'male' => 'Benutser', 'female' => 'Benutserske' ], NS_USER_TALK => [ 'male' => 'Benutser_Diskussion', 'female' => 'Benutserske_Diskussion' ], ]; - diff --git a/languages/messages/MessagesSu.php b/languages/messages/MessagesSu.php index 5646cf1bb1..75fff56a13 100644 --- a/languages/messages/MessagesSu.php +++ b/languages/messages/MessagesSu.php @@ -123,4 +123,3 @@ $specialPageAliases = [ 'Whatlinkshere' => [ 'NumbuKaDieu' ], 'Withoutinterwiki' => [ 'TanpaInterwiki' ], ]; - diff --git a/languages/messages/MessagesSv.php b/languages/messages/MessagesSv.php index 8819be629a..d2ce3575f3 100644 --- a/languages/messages/MessagesSv.php +++ b/languages/messages/MessagesSv.php @@ -321,7 +321,7 @@ $magicWords = [ $linkTrail = '/^([a-zåäöéÅÄÖÉ]+)(.*)$/sDu'; $separatorTransformTable = [ - ',' => "\xc2\xa0", // @bug 2749 + ',' => "\xc2\xa0", // T4749 '.' => ',' ]; @@ -338,4 +338,3 @@ $dateFormats = [ 'ymd date' => 'Y F j', 'ymd both' => 'Y F j "kl." H.i', ]; - diff --git a/languages/messages/MessagesSw.php b/languages/messages/MessagesSw.php index 2aa75cdadc..a7f4278cca 100644 --- a/languages/messages/MessagesSw.php +++ b/languages/messages/MessagesSw.php @@ -119,4 +119,3 @@ $specialPageAliases = [ 'Watchlist' => [ 'Maangalizi' ], 'Whatlinkshere' => [ 'VingoViungavyoUkurasahuu' ], ]; - diff --git a/languages/messages/MessagesSzl.php b/languages/messages/MessagesSzl.php index 97853d459e..c30e963e93 100644 --- a/languages/messages/MessagesSzl.php +++ b/languages/messages/MessagesSzl.php @@ -44,7 +44,7 @@ $namespaceNames = [ ]; $namespaceAliases = [ - // Aliases for Polish namespaces (bug 34988). + // Aliases for Polish namespaces (T36988). 'Specjalna' => NS_SPECIAL, 'Dyskusja' => NS_TALK, 'Użytkownik' => NS_USER, @@ -62,4 +62,3 @@ $namespaceAliases = [ // Remove Polish gender aliases $namespaceGenderAliases = []; - diff --git a/languages/messages/MessagesTa.php b/languages/messages/MessagesTa.php index 1702d1fbf3..f089896fe9 100644 --- a/languages/messages/MessagesTa.php +++ b/languages/messages/MessagesTa.php @@ -83,4 +83,3 @@ $magicWords = [ $linkTrail = "/^([\xE0\xAE\x80-\xE0\xAF\xBF]+)(.*)$/sDu"; $digitGroupingPattern = "##,##,###"; - diff --git a/languages/messages/MessagesTcy.php b/languages/messages/MessagesTcy.php index 4383ab450b..7ad1a7e94f 100644 --- a/languages/messages/MessagesTcy.php +++ b/languages/messages/MessagesTcy.php @@ -31,4 +31,3 @@ $namespaceNames = [ NS_CATEGORY => 'ವರ್ಗೊ', NS_CATEGORY_TALK => 'ವರ್ಗೊ_ಪಾತೆರ', ]; - diff --git a/languages/messages/MessagesTe.php b/languages/messages/MessagesTe.php index f322cfdfdf..4f385cf89a 100644 --- a/languages/messages/MessagesTe.php +++ b/languages/messages/MessagesTe.php @@ -50,7 +50,7 @@ $namespaceNames = [ $namespaceAliases = [ 'సభ్యులు' => NS_USER, 'సభ్యులపై_చర్చ' => NS_USER_TALK, - 'సభ్యుడు' => NS_USER, # set for bug 11615 + 'సభ్యుడు' => NS_USER, # set for T13615 'సభ్యునిపై_చర్చ' => NS_USER_TALK, 'బొమ్మ' => NS_FILE, 'బొమ్మపై_చర్చ' => NS_FILE_TALK, @@ -147,4 +147,3 @@ $magicWords = [ $linkTrail = "/^([\xE0\xB0\x81-\xE0\xB1\xAF]+)(.*)$/sDu"; $digitGroupingPattern = "##,##,###"; - diff --git a/languages/messages/MessagesTet.php b/languages/messages/MessagesTet.php index 6680d3c50d..18eb9fa207 100644 --- a/languages/messages/MessagesTet.php +++ b/languages/messages/MessagesTet.php @@ -69,4 +69,3 @@ $specialPageAliases = [ 'Whatlinkshere' => [ 'Pájina_sira_ne\'ebé_bá_iha_ne\'e' ], 'Withoutinterwiki' => [ 'Laiha_interwiki' ], ]; - diff --git a/languages/messages/MessagesTg_cyrl.php b/languages/messages/MessagesTg_cyrl.php index 9c58ee6232..bd107f54cb 100644 --- a/languages/messages/MessagesTg_cyrl.php +++ b/languages/messages/MessagesTg_cyrl.php @@ -67,4 +67,3 @@ $dateFormats = [ ]; $linkTrail = '/^([a-zабвгдеёжзийклмнопрстуфхчшъэюяғӣқўҳҷцщыь]+)(.*)$/sDu'; - diff --git a/languages/messages/MessagesTh.php b/languages/messages/MessagesTh.php index 484d400c53..39b636af7d 100644 --- a/languages/messages/MessagesTh.php +++ b/languages/messages/MessagesTh.php @@ -190,4 +190,3 @@ $dateFormats = [ 'ISO 8601 date' => 'xnY-xnm-xnd', 'ISO 8601 both' => 'xnY-xnm-xnd"T"xnH:xni:xns', ]; - diff --git a/languages/messages/MessagesTk.php b/languages/messages/MessagesTk.php index 484446bc35..1ae47162c1 100644 --- a/languages/messages/MessagesTk.php +++ b/languages/messages/MessagesTk.php @@ -35,4 +35,3 @@ $namespaceNames = [ ]; $linkTrail = '/^([a-zÄäÇçĞğŇňÖöŞşÜüÝýŽž]+)(.*)$/sDu'; - diff --git a/languages/messages/MessagesTl.php b/languages/messages/MessagesTl.php index 0c1813cfbc..949969b881 100644 --- a/languages/messages/MessagesTl.php +++ b/languages/messages/MessagesTl.php @@ -144,4 +144,3 @@ $specialPageAliases = [ 'Whatlinkshere' => [ 'Ano_ang_nakakawing_dito' ], 'Withoutinterwiki' => [ 'Walang_ugnayang-wiki' ], ]; - diff --git a/languages/messages/MessagesTly.php b/languages/messages/MessagesTly.php index 613cb284e7..ed0ff28e1c 100644 --- a/languages/messages/MessagesTly.php +++ b/languages/messages/MessagesTly.php @@ -154,4 +154,3 @@ $magicWords = [ 'pagesize' => [ '1', 'СӘҺИФӘ_ПАМЈӘ', 'PAGESIZE' ], 'url_wiki' => [ '0', 'ВИКИ', 'WIKI' ], ]; - diff --git a/languages/messages/MessagesTpi.php b/languages/messages/MessagesTpi.php index 8e8d475a3c..16fa65f941 100644 --- a/languages/messages/MessagesTpi.php +++ b/languages/messages/MessagesTpi.php @@ -47,4 +47,3 @@ $specialPageAliases = [ 'Watchlist' => [ 'Lukautbuk' ], 'Whatlinkshere' => [ 'Ol link ikam long hia' ], ]; - diff --git a/languages/messages/MessagesTr.php b/languages/messages/MessagesTr.php index 9e07263abc..564da6cccd 100644 --- a/languages/messages/MessagesTr.php +++ b/languages/messages/MessagesTr.php @@ -354,4 +354,3 @@ $magicWords = [ $separatorTransformTable = [ ',' => '.', '.' => ',' ]; $linkTrail = '/^([a-zÇĞçğİıÖöŞşÜüÂâÎîÛû]+)(.*)$/sDu'; - diff --git a/languages/messages/MessagesTt_cyrl.php b/languages/messages/MessagesTt_cyrl.php index 34c3ccaf43..9d95444cc0 100644 --- a/languages/messages/MessagesTt_cyrl.php +++ b/languages/messages/MessagesTt_cyrl.php @@ -210,4 +210,3 @@ $magicWords = [ ]; $linkTrail = '/^([a-zабвгдеёжзийклмнопрстуфхцчшщъыьэюяӘәӨөҮүҖҗҢңҺһ]+)(.*)$/sDu'; - diff --git a/languages/messages/MessagesTt_latn.php b/languages/messages/MessagesTt_latn.php index da073b1646..c545012c3c 100644 --- a/languages/messages/MessagesTt_latn.php +++ b/languages/messages/MessagesTt_latn.php @@ -89,4 +89,3 @@ $magicWords = [ $fallback8bitEncoding = "windows-1254"; $linkTrail = '/^([a-zäçğıñöşü“»]+)(.*)$/sDu'; - diff --git a/languages/messages/MessagesTy.php b/languages/messages/MessagesTy.php index cc9e2a3305..7742b68fce 100644 --- a/languages/messages/MessagesTy.php +++ b/languages/messages/MessagesTy.php @@ -15,4 +15,3 @@ $fallback = 'fr'; // Remove French aliases $namespaceGenderAliases = []; - diff --git a/languages/messages/MessagesTyv.php b/languages/messages/MessagesTyv.php index 32194f6c36..01254e7a39 100644 --- a/languages/messages/MessagesTyv.php +++ b/languages/messages/MessagesTyv.php @@ -116,8 +116,7 @@ $bookstoreList = [ 'ОЗОН' => 'http://www.ozon.ru/?context=advsearch_book&isbn=$1', 'Books.Ru' => 'http://www.books.ru/shop/search/advanced?as%5Btype%5D=books&as%5Bname%5D=&as%5Bisbn%5D=$1&as%5Bauthor%5D=&as%5Bmaker%5D=&as%5Bcontents%5D=&as%5Binfo%5D=&as%5Bdate_after%5D=&as%5Bdate_before%5D=&as%5Bprice_less%5D=&as%5Bprice_more%5D=&as%5Bstrict%5D=%E4%E0&as%5Bsub%5D=%E8%F1%EA%E0%F2%FC&x=22&y=8', 'Яндекс.Маркет' => 'http://market.yandex.ru/search.xml?text=$1', - 'Amazon.com' => 'http://www.amazon.com/exec/obidos/ISBN=$1', + 'Amazon.com' => 'https://www.amazon.com/exec/obidos/ISBN=$1', 'AddALL' => 'http://www.addall.com/New/Partner.cgi?query=$1&type=ISBN', 'Barnes & Noble' => 'http://shop.barnesandnoble.com/bookSearch/isbnInquiry.asp?isbn=$1' ]; - diff --git a/languages/messages/MessagesUdm.php b/languages/messages/MessagesUdm.php index 79cf100a87..46d5dcb053 100644 --- a/languages/messages/MessagesUdm.php +++ b/languages/messages/MessagesUdm.php @@ -45,4 +45,3 @@ $namespaceGenderAliases = []; $linkTrail = '/^([a-zа-яёӝӟӥӧӵ]+)(.*)$/sDu'; $fallback8bitEncoding = 'windows-1251'; $separatorTransformTable = [ ',' => "\xc2\xa0", '.' => ',' ]; - diff --git a/languages/messages/MessagesUg_arab.php b/languages/messages/MessagesUg_arab.php index 13d5775f9c..492fbcb864 100644 --- a/languages/messages/MessagesUg_arab.php +++ b/languages/messages/MessagesUg_arab.php @@ -45,4 +45,3 @@ $specialPageAliases = [ 'Allpages' => [ 'بارلىق_بەتلەر' ], 'Ancientpages' => [ 'كونا_بەتلەر' ], ]; - diff --git a/languages/messages/MessagesUk.php b/languages/messages/MessagesUk.php index 0c381e56a9..480d94f54d 100644 --- a/languages/messages/MessagesUk.php +++ b/languages/messages/MessagesUk.php @@ -121,7 +121,7 @@ $dateFormats = [ ]; $bookstoreList = [ - 'Amazon.com' => 'http://www.amazon.com/exec/obidos/ISBN=$1' + 'Amazon.com' => 'https://www.amazon.com/exec/obidos/ISBN=$1' ]; // Russian names are kept for backwards compatibility diff --git a/languages/messages/MessagesUr.php b/languages/messages/MessagesUr.php index d5449bfa44..cac8482f35 100644 --- a/languages/messages/MessagesUr.php +++ b/languages/messages/MessagesUr.php @@ -167,4 +167,3 @@ $magicWords = [ 'index' => [ '1', '__اشاریہ__', '__INDEX__' ], 'noindex' => [ '1', '__نااشاریہ__', '__NOINDEX__' ], ]; - diff --git a/languages/messages/MessagesUz.php b/languages/messages/MessagesUz.php index 1f3aae292a..53d8efac80 100644 --- a/languages/messages/MessagesUz.php +++ b/languages/messages/MessagesUz.php @@ -123,4 +123,3 @@ $separatorTransformTable = [ '.' => ',', ',' => "\xc2\xa0", # nbsp ]; - diff --git a/languages/messages/MessagesVec.php b/languages/messages/MessagesVec.php index f71092c2fd..986d9bd378 100644 --- a/languages/messages/MessagesVec.php +++ b/languages/messages/MessagesVec.php @@ -155,4 +155,3 @@ $specialPageAliases = [ 'Whatlinkshere' => [ 'PuntaQua' ], 'Withoutinterwiki' => [ 'PagineSensaInterwiki' ], ]; - diff --git a/languages/messages/MessagesVep.php b/languages/messages/MessagesVep.php index 0283b7d92f..b28c618ad5 100644 --- a/languages/messages/MessagesVep.php +++ b/languages/messages/MessagesVep.php @@ -85,4 +85,3 @@ $magicWords = [ 'fullurl' => [ '0', 'TÄUZ\'URL:', 'KOGUURL:', 'FULLURL:' ], 'index' => [ '1', '__INDEKS__', 'INDEKSIGA', '__INDEX__' ], ]; - diff --git a/languages/messages/MessagesVi.php b/languages/messages/MessagesVi.php index 201a6770c3..64d460461f 100644 --- a/languages/messages/MessagesVi.php +++ b/languages/messages/MessagesVi.php @@ -351,4 +351,3 @@ $datePreferenceMigrationMap = [ $linkTrail = "/^([a-zàâçéèêîôûäëïöüùÇÉÂÊÎÔÛÄËÏÖÜÀÈÙ]+)(.*)$/sDu"; $separatorTransformTable = [ ',' => '.', '.' => ',' ]; - diff --git a/languages/messages/MessagesVls.php b/languages/messages/MessagesVls.php index a28777f1d0..271fae1859 100644 --- a/languages/messages/MessagesVls.php +++ b/languages/messages/MessagesVls.php @@ -31,4 +31,3 @@ $namespaceNames = [ NS_CATEGORY => 'Categorie', NS_CATEGORY_TALK => 'Discuusje_categorie', ]; - diff --git a/languages/messages/MessagesVmf.php b/languages/messages/MessagesVmf.php index 7400417b83..1a29f028e7 100644 --- a/languages/messages/MessagesVmf.php +++ b/languages/messages/MessagesVmf.php @@ -61,4 +61,3 @@ $specialPageAliases = [ // Remove German aliases $namespaceGenderAliases = []; - diff --git a/languages/messages/MessagesVo.php b/languages/messages/MessagesVo.php index ffb788a17f..d0f5ca5bef 100644 --- a/languages/messages/MessagesVo.php +++ b/languages/messages/MessagesVo.php @@ -109,4 +109,3 @@ $specialPageAliases = [ 'Watchlist' => [ 'Galädalised' ], 'Whatlinkshere' => [ 'Yümsisio', 'Isio' ], ]; - diff --git a/languages/messages/MessagesVot.php b/languages/messages/MessagesVot.php index 75e1cedef7..bf57278864 100644 --- a/languages/messages/MessagesVot.php +++ b/languages/messages/MessagesVot.php @@ -16,4 +16,3 @@ */ $fallback = 'fi'; - diff --git a/languages/messages/MessagesVro.php b/languages/messages/MessagesVro.php index 4829601737..bef241ad62 100644 --- a/languages/messages/MessagesVro.php +++ b/languages/messages/MessagesVro.php @@ -39,4 +39,3 @@ $namespaceNames = [ $magicWords = [ 'redirect' => [ '0', '#saadaq', '#suuna', '#REDIRECT' ], ]; - diff --git a/languages/messages/MessagesWa.php b/languages/messages/MessagesWa.php index 45841fd57e..68f3ae7da0 100644 --- a/languages/messages/MessagesWa.php +++ b/languages/messages/MessagesWa.php @@ -83,4 +83,3 @@ $separatorTransformTable = [ ',' => "\xc2\xa0", '.' => ',' ]; # $linkTrail = '/^([a-zåâêîôûçéèA-ZÅÂÊÎÔÛÇÉÈ]+)(.*)$/sDu'; $linkTrail = '/^([a-zåâêîôûçéè]+)(.*)$/sDu'; - diff --git a/languages/messages/MessagesWar.php b/languages/messages/MessagesWar.php index 1c6e9b5a89..8243e15198 100644 --- a/languages/messages/MessagesWar.php +++ b/languages/messages/MessagesWar.php @@ -60,4 +60,3 @@ $specialPageAliases = [ 'Whatlinkshere' => [ 'AnoAnNasumpayDinhi' ], 'Withoutinterwiki' => [ 'Warayinterwiki' ], ]; - diff --git a/languages/messages/MessagesWo.php b/languages/messages/MessagesWo.php index d96b51f007..77228849e6 100644 --- a/languages/messages/MessagesWo.php +++ b/languages/messages/MessagesWo.php @@ -80,4 +80,3 @@ $specialPageAliases = [ 'Wantedpages' => [ 'Xët yiñ laaj' ], 'Watchlist' => [ 'Limu toppte' ], ]; - diff --git a/languages/messages/MessagesXal.php b/languages/messages/MessagesXal.php index 68ad7fbea9..07f9716a9b 100644 --- a/languages/messages/MessagesXal.php +++ b/languages/messages/MessagesXal.php @@ -53,4 +53,3 @@ $namespaceAliases = [ // Remove Russian aliases $namespaceGenderAliases = []; - diff --git a/languages/messages/MessagesXmf.php b/languages/messages/MessagesXmf.php index bd587bc457..00c622ac86 100644 --- a/languages/messages/MessagesXmf.php +++ b/languages/messages/MessagesXmf.php @@ -20,4 +20,3 @@ */ $fallback = 'ka'; - diff --git a/languages/messages/MessagesYi.php b/languages/messages/MessagesYi.php index edc860ea5b..1553f6dd50 100644 --- a/languages/messages/MessagesYi.php +++ b/languages/messages/MessagesYi.php @@ -199,4 +199,3 @@ $magicWords = [ 'url_wiki' => [ '0', 'וויקי', 'ויקי', 'WIKI' ], 'pagesincategory_pages' => [ '0', 'בלעטער', 'דפים', 'pages' ], ]; - diff --git a/languages/messages/MessagesYo.php b/languages/messages/MessagesYo.php index 46acbb5247..fc8581b97e 100644 --- a/languages/messages/MessagesYo.php +++ b/languages/messages/MessagesYo.php @@ -50,4 +50,3 @@ $specialPageAliases = [ 'Userlogin' => [ 'ÌwọléOníse' ], 'Userlogout' => [ 'Ìbọ̀sódeOníṣe' ], ]; - diff --git a/languages/messages/MessagesYue.php b/languages/messages/MessagesYue.php index 2422244078..58024d28be 100644 --- a/languages/messages/MessagesYue.php +++ b/languages/messages/MessagesYue.php @@ -193,7 +193,7 @@ $specialPageAliases = [ $bookstoreList = [ 'AddALL' => 'http://www.addall.com/New/Partner.cgi?query=$1&type=ISBN', 'Barnes & Noble' => 'http://search.barnesandnoble.com/bookSearch/isbnInquiry.asp?isbn=$1', - '亞馬遜' => 'http://www.amazon.com/exec/obidos/ISBN=$1', + '亞馬遜' => 'https://www.amazon.com/exec/obidos/ISBN=$1', '博客來書店' => 'http://www.books.com.tw/exep/prod/booksfile.php?item=$1', '三民書店' => 'http://www.sanmin.com.tw/page-qsearch.asp?ct=search_isbn&qu=$1', '天下書店' => 'http://www.cwbook.com.tw/search/result1.jsp?field=2&keyWord=$1', @@ -227,4 +227,3 @@ $dateFormats = [ 'yue ymd date' => 'Y-n-j', 'yue ymd both' => 'Y-n-j H:i', ]; - diff --git a/languages/messages/MessagesZa.php b/languages/messages/MessagesZa.php index f46ecc263b..f648839fb3 100644 --- a/languages/messages/MessagesZa.php +++ b/languages/messages/MessagesZa.php @@ -11,4 +11,3 @@ */ $fallback = 'zh-hans'; - diff --git a/languages/messages/MessagesZea.php b/languages/messages/MessagesZea.php index bd56d64bb4..f62614b7e2 100644 --- a/languages/messages/MessagesZea.php +++ b/languages/messages/MessagesZea.php @@ -20,7 +20,7 @@ $fallback = 'nl'; /** * Namespace names - * (bug 8708) + * (T10708) */ $namespaceNames = [ NS_MEDIA => 'Media', @@ -40,4 +40,3 @@ $namespaceNames = [ NS_CATEGORY => 'Categorie', NS_CATEGORY_TALK => 'Overleg_categorie', ]; - diff --git a/languages/messages/MessagesZh.php b/languages/messages/MessagesZh.php index 845db8b2e1..3ac5d58425 100644 --- a/languages/messages/MessagesZh.php +++ b/languages/messages/MessagesZh.php @@ -180,4 +180,3 @@ $specialPageAliases = [ 'Watchlist' => [ '监视列表', '監視列表', '監視清单' ], 'Whatlinkshere' => [ '链入页面', '鏈入頁面', '連入頁面' ], ]; - diff --git a/languages/messages/MessagesZh_cn.php b/languages/messages/MessagesZh_cn.php index b887a00957..bd822d618e 100644 --- a/languages/messages/MessagesZh_cn.php +++ b/languages/messages/MessagesZh_cn.php @@ -15,4 +15,3 @@ # Inherit everything for now $fallback = 'zh-hans'; - diff --git a/languages/messages/MessagesZh_hans.php b/languages/messages/MessagesZh_hans.php index 7c80db1b0f..7a0dbb6fa5 100644 --- a/languages/messages/MessagesZh_hans.php +++ b/languages/messages/MessagesZh_hans.php @@ -425,12 +425,11 @@ $dateFormats = [ $bookstoreList = [ 'AddALL' => 'http://www.addall.com/New/Partner.cgi?query=$1&type=ISBN', 'Barnes & Noble' => 'http://search.barnesandnoble.com/bookSearch/isbnInquiry.asp?isbn=$1', - '亚马逊' => 'http://www.amazon.com/exec/obidos/ISBN=$1', - '卓越亚马逊' => 'http://www.amazon.cn/mn/advancedSearchApp?isbn=$1', + '亚马逊' => 'https://www.amazon.com/exec/obidos/ISBN=$1', + '卓越亚马逊' => 'https://www.amazon.cn/mn/advancedSearchApp?isbn=$1', '当当网' => 'http://search.dangdang.com/search.aspx?key=$1', '博客来书店' => 'http://www.books.com.tw/exep/prod/booksfile.php?item=$1', '三民书店' => 'http://www.sanmin.com.tw/page-qsearch.asp?ct=search_isbn&qu=$1', '天下书店' => 'http://www.cwbook.com.tw/search/result1.jsp?field=2&keyWord=$1', '新丝路书店' => 'http://www.silkbook.com/function/Search_list_book_data.asp?item=5&text=$1' ]; - diff --git a/languages/messages/MessagesZh_hant.php b/languages/messages/MessagesZh_hant.php index cfa926dc9e..1bfe94081a 100644 --- a/languages/messages/MessagesZh_hant.php +++ b/languages/messages/MessagesZh_hant.php @@ -306,4 +306,3 @@ $bookstoreList = [ '天下書店' => 'http://www.cwbook.com.tw/search/result1.jsp?field=2&keyWord=$1', '新絲路書店' => 'http://www.silkbook.com/function/Search_list_book_data.asp?item=5&text=$1' ]; - diff --git a/languages/messages/MessagesZh_hk.php b/languages/messages/MessagesZh_hk.php index c25e44f205..b15b22fb18 100644 --- a/languages/messages/MessagesZh_hk.php +++ b/languages/messages/MessagesZh_hk.php @@ -25,4 +25,3 @@ $specialPageAliases = [ 'ComparePages' => [ '頁面比較' ], 'Unblock' => [ '解除封禁' ], ]; - diff --git a/languages/messages/MessagesZh_sg.php b/languages/messages/MessagesZh_sg.php index 48e79cf0bd..962811c85b 100644 --- a/languages/messages/MessagesZh_sg.php +++ b/languages/messages/MessagesZh_sg.php @@ -13,4 +13,3 @@ # Inherit everything for now $fallback = 'zh-hans'; - diff --git a/languages/messages/MessagesZh_tw.php b/languages/messages/MessagesZh_tw.php index 94510ef61f..a6c6b84e52 100644 --- a/languages/messages/MessagesZh_tw.php +++ b/languages/messages/MessagesZh_tw.php @@ -105,4 +105,3 @@ $dateFormats = [ 'CNS 7648 compact date' => '"ROC" xoY-m-d (l)', 'CNS 7648 compact both' => '"ROC" xoY-m-d (D) H:i', ]; - diff --git a/maintenance/CodeCleanerGlobalsPass.inc b/maintenance/CodeCleanerGlobalsPass.inc new file mode 100644 index 0000000000..5e8e754796 --- /dev/null +++ b/maintenance/CodeCleanerGlobalsPass.inc @@ -0,0 +1,52 @@ +<?php +/** + * Psy CodeCleaner to allow PHP super globals. + * + * https://github.com/bobthecow/psysh/issues/353 + * + * Copyright © 2017 Justin Hileman <justin@justinhileman.info> + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * http://www.gnu.org/copyleft/gpl.html + * + * @file + * @ingroup Maintenance + * + * @author Justin Hileman <justin@justinhileman.info> + */ + +/** + * Prefix the real command with a bunch of 'global $VAR;' commands, one for each global. + * This will make the shell behave as if it was running in the global scope (almost; + * variables created in the shell won't become global if no global variable by that name + * existed before). + */ +class CodeCleanerGlobalsPass extends \Psy\CodeCleaner\CodeCleanerPass { + private static $superglobals = [ + 'GLOBALS', '_SERVER', '_ENV', '_FILES', '_COOKIE', '_POST', '_GET', '_SESSION' + ]; + + public function beforeTraverse( array $nodes ) { + $names = []; + foreach ( array_diff( array_keys( $GLOBALS ), self::$superglobals ) as $name ) { + array_push( $names, new \PhpParser\Node\Expr\Variable( $name ) ); + } + + array_unshift( $nodes, new \PhpParser\Node\Stmt\Global_( $names ) ); + + return $nodes; + } +} + diff --git a/maintenance/Maintenance.php b/maintenance/Maintenance.php index 3925efe8de..62dc36c18d 100644 --- a/maintenance/Maintenance.php +++ b/maintenance/Maintenance.php @@ -38,6 +38,7 @@ $maintClass = false; use MediaWiki\Logger\LoggerFactory; use MediaWiki\MediaWikiServices; +use Wikimedia\Rdbms\LBFactory; /** * Abstract maintenance class for quickly writing and churning out diff --git a/maintenance/addSite.php b/maintenance/addSite.php new file mode 100755 index 0000000000..1ebc4f6643 --- /dev/null +++ b/maintenance/addSite.php @@ -0,0 +1,91 @@ +<?php + +use MediaWiki\MediaWikiServices; + +$basePath = getenv( 'MW_INSTALL_PATH' ) !== false ? getenv( 'MW_INSTALL_PATH' ) : __DIR__ . '/..'; + +require_once $basePath . '/maintenance/Maintenance.php'; + +/** + * Maintenance script for adding a site definition into the sites table. + * + * @since 1.29 + * + * @license GNU GPL v2+ + * @author Florian Schmidt + */ +class AddSite extends Maintenance { + + public function __construct() { + $this->addDescription( 'Add a site definition into the sites table.' ); + + $this->addArg( 'globalid', 'The global id of the site to add, e.g. "wikipedia".', true ); + $this->addArg( 'group', 'In which group this site should be sorted in.', true ); + $this->addOption( 'language', 'The language code of the site, e.g. "de".' ); + $this->addOption( 'interwiki-id', 'The interwiki ID of the site.' ); + $this->addOption( 'navigation-id', 'The navigation ID of the site.' ); + $this->addOption( 'pagepath', 'The URL to pages of this site, e.g.' . + ' https://example.com/wiki/\$1.' ); + $this->addOption( 'filepath', 'The URL to files of this site, e.g. https://example + .com/w/\$1.' ); + + parent::__construct(); + } + + /** + * Imports the site described by the parameters (see self::__construct()) passed to this + * maintenance sccript into the sites table of MediaWiki. + */ + public function execute() { + $siteStore = MediaWikiServices::getInstance()->getSiteStore(); + $siteStore->reset(); + + $globalId = $this->getArg( 0 ); + $group = $this->getArg( 1 ); + $language = $this->getOption( 'language' ); + $interwikiId = $this->getOption( 'interwiki-id' ); + $navigationId = $this->getOption( 'navigation-id' ); + $pagepath = $this->getOption( 'pagepath' ); + $filepath = $this->getOption( 'filepath' ); + + if ( !is_string( $globalId ) || !is_string( $group ) ) { + echo "Arguments globalid and group need to be strings.\n"; + return false; + } + + if ( $siteStore->getSite( $globalId ) !== null ) { + echo "Site with global id $globalId already exists.\n"; + return false; + } + + $site = new MediaWikiSite(); + $site->setGlobalId( $globalId ); + $site->setGroup( $group ); + if ( $language !== null ) { + $site->setLanguageCode( $language ); + } + if ( $interwikiId !== null ) { + $site->addInterwikiId( $interwikiId ); + } + if ( $navigationId !== null ) { + $site->addNavigationId( $navigationId ); + } + if ( $pagepath !== null ) { + $site->setPagePath( $pagepath ); + } + if ( $filepath !== null ) { + $site->setFilePath( $filepath ); + } + + $siteStore->saveSites( [ $site ] ); + + if ( method_exists( $siteStore, 'reset' ) ) { + $siteStore->reset(); + } + + echo "Done.\n"; + } +} + +$maintClass = 'AddSite'; +require_once RUN_MAINTENANCE_IF_MAIN; diff --git a/maintenance/archives/patch-archive-ar_id.sql b/maintenance/archives/patch-archive-ar_id.sql index ddd1d7b482..08287cd5e7 100644 --- a/maintenance/archives/patch-archive-ar_id.sql +++ b/maintenance/archives/patch-archive-ar_id.sql @@ -1,7 +1,7 @@ -- -- patch-archive-ar_id.sql -- --- Bug 39675. Add archive.ar_id. +-- T41675. Add archive.ar_id. ALTER TABLE /*$wgDBprefix*/archive ADD COLUMN ar_id int unsigned NOT NULL AUTO_INCREMENT FIRST, diff --git a/maintenance/archives/patch-categorylinks-better-collation.sql b/maintenance/archives/patch-categorylinks-better-collation.sql index f5ff1f1d1a..f8b6340573 100644 --- a/maintenance/archives/patch-categorylinks-better-collation.sql +++ b/maintenance/archives/patch-categorylinks-better-collation.sql @@ -1,11 +1,11 @@ -- -- patch-categorylinks-better-collation.sql -- --- Bugs 164, 1211, 23682. This is the second version of this patch; the +-- T2164, T3211, T25682. This is the second version of this patch; the -- changes are also incorporated into patch-categorylinks-better-collation2.sql, -- for the benefit of trunk users who applied the original. -- --- Due to bug 25254, the length limit of 255 bytes for cl_sortkey_prefix +-- Due to T27254, the length limit of 255 bytes for cl_sortkey_prefix -- is also enforced in php. If you change the length of that field, make -- sure to also change the check in LinksUpdate.php. ALTER TABLE /*$wgDBprefix*/categorylinks diff --git a/maintenance/archives/patch-externallinks-el_id.sql b/maintenance/archives/patch-externallinks-el_id.sql index d4b51b5175..ded84543b9 100644 --- a/maintenance/archives/patch-externallinks-el_id.sql +++ b/maintenance/archives/patch-externallinks-el_id.sql @@ -1,7 +1,7 @@ -- -- patch-extenallinks-el_id.sql -- --- Bug 15441. Add externallinks.el_id. +-- T17441. Add externallinks.el_id. ALTER TABLE /*$wgDBprefix*/externallinks ADD COLUMN el_id int unsigned NOT NULL AUTO_INCREMENT FIRST, diff --git a/maintenance/archives/patch-up_property.sql b/maintenance/archives/patch-up_property.sql index 742841e412..c516aafdb1 100644 --- a/maintenance/archives/patch-up_property.sql +++ b/maintenance/archives/patch-up_property.sql @@ -1,4 +1,4 @@ --- Increase the length of up_property from 32 -> 255 bytes. Bug 19408 +-- Increase the length of up_property from 32 -> 255 bytes. T21408 ALTER TABLE /*_*/user_properties MODIFY up_property varbinary(255); diff --git a/maintenance/archives/patch-user_groups-primary-key.sql b/maintenance/archives/patch-user_groups-primary-key.sql new file mode 100644 index 0000000000..e3c8735660 --- /dev/null +++ b/maintenance/archives/patch-user_groups-primary-key.sql @@ -0,0 +1,5 @@ +-- Convert unique index into a primary key on user_groups + +ALTER TABLE /*$wgDBprefix*/user_groups + DROP INDEX ug_user_group, + ADD PRIMARY KEY (ug_user, ug_group); diff --git a/maintenance/archives/patch-user_groups-ug_expiry.sql b/maintenance/archives/patch-user_groups-ug_expiry.sql new file mode 100644 index 0000000000..b329f9488d --- /dev/null +++ b/maintenance/archives/patch-user_groups-ug_expiry.sql @@ -0,0 +1,5 @@ +-- Add expiry column in user_groups table + +ALTER TABLE /*$wgDBprefix*/user_groups + ADD COLUMN ug_expiry varbinary(14) NULL default NULL, + ADD INDEX ug_expiry (ug_expiry); diff --git a/maintenance/backup.inc b/maintenance/backup.inc index befafc1d73..286fb58fb6 100644 --- a/maintenance/backup.inc +++ b/maintenance/backup.inc @@ -27,6 +27,8 @@ require_once __DIR__ . '/Maintenance.php'; require_once __DIR__ . '/../includes/export/DumpFilter.php'; +use Wikimedia\Rdbms\LoadBalancer; + /** * @ingroup Dump Maintenance */ diff --git a/maintenance/benchmarks/bench_utf8_title_check.php b/maintenance/benchmarks/bench_utf8_title_check.php index c92a720868..b2f7e96138 100644 --- a/maintenance/benchmarks/bench_utf8_title_check.php +++ b/maintenance/benchmarks/bench_utf8_title_check.php @@ -41,7 +41,7 @@ class BenchUtf8TitleCheck extends Benchmarker { "United States of America", // 7bit ASCII "S%C3%A9rie%20t%C3%A9l%C3%A9vis%C3%A9e", "Acteur%7CAlbert%20Robbins%7CAnglais%7CAnn%20Donahue%7CAnthony%20E.%20Zuiker%7CCarol%20Mendelsohn", - // This comes from bug 36839 + // This comes from T38839 "Acteur%7CAlbert%20Robbins%7CAnglais%7CAnn%20Donahue%7CAnthony%20E.%20Zuiker%7CCarol%20Mendelsohn%7C" . "Catherine%20Willows%7CDavid%20Hodges%7CDavid%20Phillips%7CGil%20Grissom%7CGreg%20Sanders%7CHodges%7C" . "Internet%20Movie%20Database%7CJim%20Brass%7CLady%20Heather%7C" diff --git a/maintenance/cleanupImages.php b/maintenance/cleanupImages.php index c8f393d841..e0da027f76 100644 --- a/maintenance/cleanupImages.php +++ b/maintenance/cleanupImages.php @@ -146,7 +146,7 @@ class ImageCleanup extends TableCleanup { * if the target title exists in the image table, or if both the * original and target titles exist in the page table, append * increasing version numbers until the target title exists in - * neither. (See also bug 16916.) + * neither. (See also T18916.) */ $version = 0; $final = $new; diff --git a/maintenance/cleanupRemovedModules.php b/maintenance/cleanupRemovedModules.php index 863d74afb4..83ab35c339 100644 --- a/maintenance/cleanupRemovedModules.php +++ b/maintenance/cleanupRemovedModules.php @@ -38,31 +38,43 @@ class CleanupRemovedModules extends Maintenance { parent::__construct(); $this->addDescription( 'Remove cache entries for removed ResourceLoader modules from the database' ); - $this->addOption( 'batchsize', 'Delete rows in batches of this size. Default: 500', false, true ); + $this->setBatchSize( 500 ); } public function execute() { + $this->output( "Cleaning up module_deps table...\n" ); + $dbw = $this->getDB( DB_MASTER ); $rl = new ResourceLoader( MediaWikiServices::getInstance()->getMainConfig() ); $moduleNames = $rl->getModuleNames(); - $moduleList = implode( ', ', array_map( [ $dbw, 'addQuotes' ], $moduleNames ) ); - $limit = max( 1, intval( $this->getOption( 'batchsize', 500 ) ) ); + $res = $dbw->select( 'module_deps', + [ 'md_module', 'md_skin' ], + $moduleNames ? 'md_module NOT IN (' . $dbw->makeList( $moduleNames ) . ')' : '1=1', + __METHOD__ + ); + $rows = iterator_to_array( $res, false ); - $this->output( "Cleaning up module_deps table...\n" ); - $i = 1; $modDeps = $dbw->tableName( 'module_deps' ); - do { - // $dbw->delete() doesn't support LIMIT :( - $where = $moduleList ? "md_module NOT IN ($moduleList)" : '1=1'; - $dbw->query( "DELETE FROM $modDeps WHERE $where LIMIT $limit", __METHOD__ ); + $i = 1; + foreach ( array_chunk( $rows, $this->mBatchSize ) as $chunk ) { + // WHERE ( mod=A AND skin=A ) OR ( mod=A AND skin=B) .. + $conds = array_map( function ( stdClass $row ) use ( $dbw ) { + return $dbw->makeList( (array)$row, IDatabase::LIST_AND ); + }, $chunk ); + $conds = $dbw->makeList( $conds, IDatabase::LIST_OR ); + + $this->beginTransaction( $dbw, __METHOD__ ); + $dbw->query( "DELETE FROM $modDeps WHERE $conds", __METHOD__ ); $numRows = $dbw->affectedRows(); $this->output( "Batch $i: $numRows rows\n" ); + $this->commitTransaction( $dbw, __METHOD__ ); + $i++; - wfWaitForSlaves(); - } while ( $numRows > 0 ); - $this->output( "done\n" ); + } + + $this->output( "Done\n" ); } } -$maintClass = "CleanupRemovedModules"; +$maintClass = 'CleanupRemovedModules'; require_once RUN_MAINTENANCE_IF_MAIN; diff --git a/maintenance/cleanupTitles.php b/maintenance/cleanupTitles.php index 650fae085a..ccc6406809 100644 --- a/maintenance/cleanupTitles.php +++ b/maintenance/cleanupTitles.php @@ -138,14 +138,14 @@ class TitleCleanup extends TableCleanup { $prior = $title->getDBkey(); } - # Old cleanupTitles could move articles there. See bug 23147. + # Old cleanupTitles could move articles there. See T25147. $ns = $row->page_namespace; if ( $ns < 0 ) { $ns = 0; } # Namespace which no longer exists. Put the page in the main namespace - # since we don't have any idea of the old namespace name. See bug 68501. + # since we don't have any idea of the old namespace name. See T70501. if ( !MWNamespace::exists( $ns ) ) { $ns = 0; } diff --git a/maintenance/convertUserOptions.php b/maintenance/convertUserOptions.php index b8001a4d21..70f365485d 100644 --- a/maintenance/convertUserOptions.php +++ b/maintenance/convertUserOptions.php @@ -23,6 +23,8 @@ require_once __DIR__ . '/Maintenance.php'; +use Wikimedia\Rdbms\ResultWrapper; + /** * Maintenance script to convert user options to the new `user_properties` table. * diff --git a/maintenance/dumpTextPass.php b/maintenance/dumpTextPass.php index d8661c1a3b..5d92eec2ae 100644 --- a/maintenance/dumpTextPass.php +++ b/maintenance/dumpTextPass.php @@ -27,6 +27,8 @@ require_once __DIR__ . '/backup.inc'; require_once __DIR__ . '/../includes/export/WikiExporter.php'; +use Wikimedia\Rdbms\LoadBalancer; + /** * @ingroup Maintenance */ @@ -212,7 +214,6 @@ TEXT // We do /not/ retry upon failure, but delegate to encapsulating logic, to avoid // individually retrying at different layers of code. - // 1. The LoadBalancer. try { $this->lb = wfGetLBFactory()->newMainLB(); } catch ( Exception $e ) { @@ -220,7 +221,6 @@ TEXT . " rotating DB failed to obtain new load balancer (" . $e->getMessage() . ")" ); } - // 2. The Connection, through the load balancer. try { $this->db = $this->lb->getConnection( DB_REPLICA, 'dump' ); } catch ( Exception $e ) { diff --git a/maintenance/findHooks.php b/maintenance/findHooks.php index f6e65f9452..81e18c993b 100644 --- a/maintenance/findHooks.php +++ b/maintenance/findHooks.php @@ -48,7 +48,7 @@ class FindHooks extends Maintenance { /* * Hooks that are ignored */ - protected static $ignore = [ 'testRunLegacyHooks', 'Test' ]; + protected static $ignore = [ 'Test' ]; public function __construct() { parent::__construct(); @@ -238,7 +238,7 @@ class FindHooks extends Maintenance { $m = []; preg_match_all( // All functions which runs hooks - '/(?:wfRunHooks|Hooks\:\:run|ContentHandler\:\:runLegacyHooks)\s*\(\s*' . + '/(?:wfRunHooks|Hooks\:\:run)\s*\(\s*' . // First argument is the hook name as string '([\'"])(.*?)\1' . // Comma for second argument diff --git a/maintenance/fixDoubleRedirects.php b/maintenance/fixDoubleRedirects.php index 1d6f31de08..79f75ef7ed 100644 --- a/maintenance/fixDoubleRedirects.php +++ b/maintenance/fixDoubleRedirects.php @@ -72,7 +72,7 @@ class FixDoubleRedirects extends Maintenance { 'rd_from = pa.page_id', 'rd_namespace = pb.page_namespace', 'rd_title = pb.page_title', - 'rd_interwiki IS NULL OR rd_interwiki = ' . $dbr->addQuotes( '' ), // bug 40352 + 'rd_interwiki IS NULL OR rd_interwiki = ' . $dbr->addQuotes( '' ), // T42352 'pb.page_is_redirect' => 1, ]; diff --git a/maintenance/generateJsonI18n.php b/maintenance/generateJsonI18n.php index d3041d9e8f..a84f2ae52c 100644 --- a/maintenance/generateJsonI18n.php +++ b/maintenance/generateJsonI18n.php @@ -108,6 +108,7 @@ class GenerateJsonI18n extends Maintenance { if ( !is_readable( $phpfile ) ) { $this->error( "Error reading $phpfile", 1 ); } + $messages = null; include $phpfile; $phpfileContents = file_get_contents( $phpfile ); diff --git a/maintenance/generateSitemap.php b/maintenance/generateSitemap.php index 87af5b83cc..fb00bede07 100644 --- a/maintenance/generateSitemap.php +++ b/maintenance/generateSitemap.php @@ -523,7 +523,7 @@ class GenerateSitemap extends Maintenance { function fileEntry( $url, $date, $priority ) { return "\t<url>\n" . - // bug 34666: $url may contain bad characters such as ampersands. + // T36666: $url may contain bad characters such as ampersands. "\t\t<loc>" . htmlspecialchars( $url ) . "</loc>\n" . "\t\t<lastmod>$date</lastmod>\n" . "\t\t<priority>$priority</priority>\n" . @@ -545,7 +545,7 @@ class GenerateSitemap extends Maintenance { * @param int $namespace */ function generateLimit( $namespace ) { - // bug 17961: make a title with the longest possible URL in this namespace + // T19961: make a title with the longest possible URL in this namespace $title = Title::makeTitle( $namespace, str_repeat( "\xf0\xa8\xae\x81", 63 ) . "\xe5\x96\x83" ); $this->limit = [ diff --git a/maintenance/hhvm/makeRepo.php b/maintenance/hhvm/makeRepo.php index a0fe381c79..2a102b2486 100644 --- a/maintenance/hhvm/makeRepo.php +++ b/maintenance/hhvm/makeRepo.php @@ -106,7 +106,7 @@ class HHVMMakeRepo extends Maintenance { $cmd = wfEscapeShellArg( $hhvm, '--hphp', - '--target', 'hhbc', + '--target', 'hhbc', '--format', 'binary', '--force', '1', '--keep-tempdir', '1', diff --git a/maintenance/importImages.php b/maintenance/importImages.php index 7f2a9e1de0..23bdb3f4ca 100644 --- a/maintenance/importImages.php +++ b/maintenance/importImages.php @@ -187,6 +187,11 @@ class ImportImages extends Maintenance { if ( $count > 0 ) { foreach ( $files as $file ) { + + if ( $sleep && ( $processed > 0 ) ) { + sleep( $sleep ); + } + $base = UtfNormal\Validator::cleanUp( wfBaseName( $file ) ); # Validate a title @@ -375,10 +380,6 @@ class ImportImages extends Maintenance { if ( $limit && $processed >= $limit ) { break; } - - if ( $sleep ) { - sleep( $sleep ); - } } # Print out some statistics @@ -496,7 +497,7 @@ class ImportImages extends Maintenance { # (preferably batching files too). private function getFileCommentFromSourceWiki( $wiki_host, $file ) { $url = $wiki_host . '/api.php?action=query&format=xml&titles=File:' - . rawurlencode( $file ) . '&prop=imageinfo&&iiprop=comment'; + . rawurlencode( $file ) . '&prop=imageinfo&&iiprop=comment'; $body = Http::get( $url, [], __METHOD__ ); if ( preg_match( '#<ii comment="([^"]*)" />#', $body, $matches ) == 0 ) { return false; @@ -507,7 +508,7 @@ class ImportImages extends Maintenance { private function getFileUserFromSourceWiki( $wiki_host, $file ) { $url = $wiki_host . '/api.php?action=query&format=xml&titles=File:' - . rawurlencode( $file ) . '&prop=imageinfo&&iiprop=user'; + . rawurlencode( $file ) . '&prop=imageinfo&&iiprop=user'; $body = Http::get( $url, [], __METHOD__ ); if ( preg_match( '#<ii user="([^"]*)" />#', $body, $matches ) == 0 ) { return false; diff --git a/maintenance/initUserPreference.php b/maintenance/initUserPreference.php new file mode 100644 index 0000000000..f4da570fbb --- /dev/null +++ b/maintenance/initUserPreference.php @@ -0,0 +1,84 @@ +<?php +/** + * Initialize a user preference based on the value + * of another preference. + * + * @ingroup Maintenance + */ + +require_once __DIR__ . '/Maintenance.php'; + +/** + * Maintenance script that initializes a user preference + * based on the value of another preference. + * + * @ingroup Maintenance + */ +class InitUserPreference extends Maintenance { + public function __construct() { + parent::__construct(); + $this->addOption( + 'target', + 'Name of the user preference to initialize', + true, + true, + 't' + ); + $this->addOption( + 'source', + 'Name of the user preference to take the value from', + true, + true, + 's' + ); + $this->setBatchSize( 300 ); + } + + public function execute() { + $target = $this->getOption( 'target' ); + $source = $this->getOption( 'source' ); + $this->output( "Initializing '$target' based on the value of '$source'\n" ); + + $dbr = $this->getDB( DB_REPLICA ); + $dbw = $this->getDB( DB_MASTER ); + + $iterator = new BatchRowIterator( + $dbr, + 'user_properties', + [ 'up_user', 'up_property' ], + $this->mBatchSize + ); + $iterator->setFetchColumns( [ 'up_user', 'up_value' ] ); + $iterator->addConditions( [ + 'up_property' => $source, + 'up_value IS NOT NULL', + 'up_value != 0', + ] ); + + $processed = 0; + foreach ( $iterator as $batch ) { + foreach ( $batch as $row ) { + $values = [ + 'up_user' => $row->up_user, + 'up_property' => $target, + 'up_value' => $row->up_value, + ]; + $dbw->upsert( + 'user_properties', + $values, + [ 'up_user', 'up_property' ], + $values, + __METHOD__ + ); + + $processed += $dbw->affectedRows(); + } + } + + $this->output( "Processed $processed user(s)\n" ); + $this->output( "Finished!\n" ); + } +} + +$maintClass = 'InitUserPreference'; // Tells it to run the class +require_once RUN_MAINTENANCE_IF_MAIN; diff --git a/maintenance/language/zhtable/simp2trad.manual b/maintenance/language/zhtable/simp2trad.manual index bced26518c..9fee611c54 100644 --- a/maintenance/language/zhtable/simp2trad.manual +++ b/maintenance/language/zhtable/simp2trad.manual @@ -84,7 +84,6 @@ U+05E03布|U+05E03布|U+04F48佈| U+05E18帘|U+07C3Eç°¾|U+05E18帘| U+05E2D席|U+05E2D席|U+084C6蓆| U+05E72å¹²|U+05E72å¹²|U+04E7Eä¹¾|U+05E79å¹¹|U+069A6榦| -U+05E7A幺|U+04E48么| U+05E76并|U+04E26並|U+04F75ä½µ| U+05E78幸|U+05E78幸|U+05016倖| U+05E7F广|U+05EE3廣|U+05E7F广| diff --git a/maintenance/language/zhtable/simpphrases.manual b/maintenance/language/zhtable/simpphrases.manual index 17d2f21c06..19ec7b1533 100644 --- a/maintenance/language/zhtable/simpphrases.manual +++ b/maintenance/language/zhtable/simpphrases.manual @@ -180,30 +180,6 @@ 於志贺 覆盖 五箇山 -麽麽 -幺厮 -幺半群 -幺元 -幺爹 -幺叔 -幺舅 -幺爸 -幺妈 -幺姨 -幺娘 -幺妹 -幺小 -幺姓 -姓幺 -幺氏 -麽氏 -幺蛾子 -幺麽 -幺麽小丑 -幺凤 -幺二三 -幺篇 -幺谦 阿部正瞭 醯酱 醯鸡 diff --git a/maintenance/language/zhtable/simpphrases_exclude.manual b/maintenance/language/zhtable/simpphrases_exclude.manual index 7985a89a53..b47d3b796e 100644 --- a/maintenance/language/zhtable/simpphrases_exclude.manual +++ b/maintenance/language/zhtable/simpphrases_exclude.manual @@ -28,4 +28,6 @@ 鲇鱼 钟 余 -老么 +么 +麽 + diff --git a/maintenance/language/zhtable/toCN.manual b/maintenance/language/zhtable/toCN.manual index bae5fd8ae1..6975e2503c 100644 --- a/maintenance/language/zhtable/toCN.manual +++ b/maintenance/language/zhtable/toCN.manual @@ -141,7 +141,7 @@ 著絲 着丝 著麼 着么 著人 着人 -著什麼 着什么 +著什 着什 著他 着他 著令 着令 著位 着位 @@ -2139,7 +2139,7 @@ 飃著 飘着 沈著 沉着 擡著 抬着 -著甚麽 着什么 +著甚麼 着什么 滿著 满着 滿著名 满著名 滿著作 满著作 @@ -2258,6 +2258,7 @@ 三極體 三极管 軟體 软件 軟體動物 软体动物 +軟體生物 软体生物 軟體家具 软体家具 網路 网络 人工智慧 人工智能 @@ -2305,7 +2306,6 @@ 奈及利亞 尼日利亚 尼日爾 尼日尔 巴貝多 巴巴多斯 -巴布亞紐幾內亞 巴布亚新几内亚 布吉納法索 布基纳法索 蒲隆地 布隆迪 帛琉 帕劳 @@ -2401,6 +2401,7 @@ 賓·拉登 本·拉登 歐巴馬 奥巴马 北韓 北朝鲜 +台北韓 台北韩 寮人民民主共和國 老挝人民民主共和国 寮語 老挝语 蘭卡威 浮罗交怡 @@ -2469,7 +2470,6 @@ 厄利垂亚 厄立特里亚 亞歷山卓 亚历山大 雅穆索戈 亚穆苏克罗 -畿內亞 几内亚 索馬利蘭 索马里兰 吉力馬札羅 乞力马扎罗 索馬利亞 索马里 @@ -2491,6 +2491,7 @@ 千里達 特立尼达 托巴哥 多巴哥 多明尼加 多米尼加 +斯堪地那維亞 斯堪的纳维亚 頻寬 带宽 數位相機 数码相机 數位照相機 数码照相机 diff --git a/maintenance/language/zhtable/toHK.manual b/maintenance/language/zhtable/toHK.manual index 31e02c2c07..7a07259eec 100644 --- a/maintenance/language/zhtable/toHK.manual +++ b/maintenance/language/zhtable/toHK.manual @@ -6,9 +6,11 @@ 汙 污 溼 濕 硅 矽 +幺 么 計畫 計劃 吧台 吧枱 坐台 坐枱 +坐台铁 坐台鐵 妆台 妝枱 弹珠台 彈珠枱 折台 摺枱 @@ -367,7 +369,6 @@ 占有五不 占有五不 吞占 吞佔 一地里 一地裏 -一年里 一年裏 中文里 中文裏 英文里 英文裏 古文里 古文裏 @@ -421,6 +422,7 @@ 市里的 市裏的 年代里 年代裏 年里 年裏 +年里约 年里約 #里约奧運 店里 店裏 庙里 廟裏 往里 往裏 @@ -559,6 +561,8 @@ 点里 點裏 点里程 點里程 鼓里 鼓裏 +殿里 殿裏 +队里 隊裏 世纪里 世紀裏 夜晚里 夜晚裏 参数里 參數裏 @@ -2494,7 +2498,7 @@ 沖著。 沖著。 沖著, 沖著, 衝著 衝着 -著甚麽 着甚麽 +著甚麼 着甚麼 存著 存着 存著名 存著名 存著作 存著作 @@ -2697,7 +2701,7 @@ 塞席爾 塞舌爾 安地卡及巴布達 安提瓜和巴布達 巴貝多 巴巴多斯 -巴布亞紐幾內亞 巴布亞新畿內亞 +紐幾內亞 新幾內亞 布吉納法索 布基納法索 蒲隆地 布隆迪 帕劳 帛琉 @@ -2729,6 +2733,7 @@ 阿拉伯聯合大公國 阿拉伯聯合酋長國 馬爾地夫 馬爾代夫 馬利共和國 馬里共和國 +斯堪地那維亞 斯堪的納維亞 台球 桌球 撞球 桌球 冰淇淋 雪糕 @@ -2829,8 +2834,6 @@ 亞斯文 阿斯旺 奈及利亞 尼日利亞 雅穆索戈 雅穆蘇克雷 -幾內亞 畿內亞 -几内亚 畿內亞 衣索匹亞 埃塞俄比亚 吉力馬札羅 乞力馬札羅 厄利垂亚 厄立特里亞 diff --git a/maintenance/language/zhtable/toSimp.manual b/maintenance/language/zhtable/toSimp.manual index dee2164fcb..6f3304fce8 100644 --- a/maintenance/language/zhtable/toSimp.manual +++ b/maintenance/language/zhtable/toSimp.manual @@ -75,6 +75,7 @@ 於梨华 於梨华 於潜 於潜 於志贺 於志贺 +於戏 於戏 憑藉 凭借 藉端 借端 藉故 借故 @@ -129,31 +130,30 @@ 么姨 幺姨 么娘 幺娘 么孃 幺娘 -幺孃 幺娘 么弟 幺弟 么妹 幺妹 么小 幺小 么姓 幺姓 么氏 幺氏 么蛾子 幺蛾子 -幺厮 幺厮 -麼麼 麽麽 -么麼 幺麽 么鳳 幺凤 么二三 幺二三 么篇 幺篇 -么謙 幺谦 六么 六幺 老么 老幺 么正 幺正 么女 幺女 么九 幺九 么子 幺子 -这么 这么 -那么 那么 -什么 什么 -怎么 怎么 -多么 多么 +姓么 姓幺 +么兒 幺儿 +么喝 幺喝 +么爺 幺爷 +么雞 幺鸡 +么麼 幺麽 +幺麽 幺麽 +麽氏 麽氏 +麼氏 麽氏 乾乾淨淨 干干净净 乾乾脆脆 干干脆脆 肉乾乾 肉干干 diff --git a/maintenance/language/zhtable/toTW.manual b/maintenance/language/zhtable/toTW.manual index 075deabd23..d983932fe4 100644 --- a/maintenance/language/zhtable/toTW.manual +++ b/maintenance/language/zhtable/toTW.manual @@ -15,6 +15,7 @@ 锎 鉲 钚 鈽 硅 矽 +幺 么 煙草 菸草 烟草 菸草 煙蒂 菸蒂 @@ -300,8 +301,6 @@ 尼日尔 尼日 尼日爾 尼日 巴巴多斯 巴貝多 -巴布亚新几内亚 巴布亞紐幾內亞 -巴布亞新畿內亞 巴布亞紐幾內亞 布基纳法索 布吉納法索 布基納法索 布吉納法索 布隆迪 蒲隆地 @@ -413,6 +412,7 @@ 波利尼西亚 玻里尼西亞 波利尼西亞 玻里尼西亞 新几内亚 紐幾內亞 +新幾內亞 紐幾內亞 约翰斯顿岛 強斯頓環礁 巴尔米拉环礁 帕邁拉環礁 马恩岛 曼島 @@ -486,7 +486,6 @@ 阿斯旺 亞斯文 雅穆苏克雷 雅穆索戈 雅穆蘇克雷 雅穆索戈 -畿內亞 幾內亞 索马里兰 索馬利蘭 索馬里蘭 索馬利蘭 乞力马扎罗 吉力馬札羅 @@ -532,6 +531,8 @@ 得克薩斯 德克薩斯 蒙特利尔 蒙特婁 蒙特利爾 蒙特婁 +斯堪的纳维亚 斯堪地那維亞 +斯堪的納維亞 斯堪地那維亞 麦克尔 麥可 迈克尔 麥可 魯賓斯·巴里切羅 魯本·巴瑞切羅 diff --git a/maintenance/language/zhtable/toTrad.manual b/maintenance/language/zhtable/toTrad.manual index 3c7ea7a1da..f106db1d18 100644 --- a/maintenance/language/zhtable/toTrad.manual +++ b/maintenance/language/zhtable/toTrad.manual @@ -230,19 +230,42 @@ 划龍舟 划龍舟 划龍船 划龍船 只影響 只影響 +義联 義联 +杠轂 杠轂 +局促 侷促 +開山辟谷 開山辟谷 +戲院里 戲院里 +么半 么半 +么元 么元 +么爹 么爹 +么叔 么叔 +么舅 么舅 +么爸 么爸 +么媽 么媽 +么姨 么姨 +么娘 么娘 +么孃 么孃 么弟 么弟 +么妹 么妹 +么小 么小 +么姓 么姓 +么氏 么氏 +么蛾子 么蛾子 +么鳳 么鳳 +么二三 么二三 +么篇 么篇 六么 六么 -么雞 么雞 +老么 老么 么正 么正 么女 么女 么九 么九 么子 么子 -么半 么半 -義联 義联 -杠轂 杠轂 -局促 侷促 -開山辟谷 開山辟谷 -戲院里 戲院里 +姓么 姓么 +么兒 么兒 +么喝 么喝 +么爺 么爺 +么雞 么雞 +么麼 么麼 惨淡 慘澹 恶心 噁心 证谏 証諫 diff --git a/maintenance/language/zhtable/tradphrases.manual b/maintenance/language/zhtable/tradphrases.manual index b4cd628072..4effa8ea5b 100644 --- a/maintenance/language/zhtable/tradphrases.manual +++ b/maintenance/language/zhtable/tradphrases.manual @@ -518,7 +518,6 @@ 丑三 丑表功 公孫丑 -么麼小丑 平平當當 滿滿當當 當當丁丁 @@ -743,6 +742,8 @@ 布穀鳥 穀祿 穀城縣 +穀氨 +穀胱 颳雪 广部 亂鬨鬨 @@ -754,7 +755,6 @@ 喧鬨 起鬨 內鬨 -於後 猜三划五 划龍舟 划龍船 @@ -1094,6 +1094,7 @@ 上簽署 上簽發 上簽約 +上簽了 中簽名 中簽字 中簽收 @@ -1103,6 +1104,7 @@ 中簽署 中簽發 中簽約 +中簽了 下簽名 下簽字 下簽收 @@ -1112,6 +1114,7 @@ 下簽署 下簽發 下簽約 +下簽了 犖确 磽确 确瘠 @@ -1150,7 +1153,11 @@ 蒼朮 赤朮 朮赤 +莪朮 博爾朮 +巴而朮 +朮虎高 +耶律朮烈 髼鬆 皮鬆 濛鬆雨 @@ -1455,107 +1462,6 @@ 叶韻 叶音 叶恭弘 -置於 -散於 -播於 -國於 -敗於 -畢於 -畢業於 -寒於 -任於 -拘於 -插於 -中於 -敏於 -聽於 -短於 -成於 -樊於期 -淡於 -禍於 -格於 -猛於 -施於 -拒人於 -拒於 -潰於 -窮於 -相於 -形於 -半於 -詢於 -美於 -醜於 -好於 -坏於 -強於 -弱於 -差於 -劣於 -染指於 -存於 -隱於 -藏於 -嚴於 -寬於 -給於 -危於 -於徵 -離於 -麗於 -下於 -亞於 -同於 -屑於 -絕於 -致於 -遜於 -任教於 -教於 -自於 -來於 -附於 -阻於 -囿於 -直於 -建於 -都於 -役於 -助於 -害於 -損於 -益於 -從於 -隨於 -順於 -汲於 -溺於 -迷於 -醉於 -行於 -泥於 -身於 -足於 -溢於 -畏於 -視於 -衷於 -狃於 -疲於 -通於 -老於 -耿於 -服於 -臻於 -匿於 -因於 -似於 -遷於 -怒於 -心於 -集於 -容於 新紮 紙紮 紮鐵 @@ -1953,78 +1859,6 @@ 影相弔 哀弔 唁弔 -安於 -迫於 -罷於 -蹪於 -甚於 -等於 -定於 -利於 -對於 -歸於 -難於 -移禍於 -生於 -立於 -多於 -勝於 -傳於 -流於 -過於 -關於 -毀於 -基於 -急於 -嫁禍於 -見於 -鑒於 -始於 -出於 -輕於 -幸於 -怠於 -止於 -至於 -拙於 -忠於 -終於 -重於 -垂於 -善於 -死於 -屬於 -浮於 -在於 -易於 -精於 -由於 -補於 -位於 -寓於 -源於 -且於 -長於 -現於 -較於 -分布於 -散於 -優於 -早於 -晚於 -感於 -用於 -處於 -助於 -便於 -戰於 -葬於 -困於 -適於 -苦於 -落於 -取決於 -着眼於 鬼谷子 谷子敬 洪谷子 @@ -3024,6 +2858,7 @@ 瑞城里 金城里 西湖里 +坑口里 子里甲 水里商工 車里雅賓斯克 @@ -3129,6 +2964,8 @@ 區裡有 實驗裡 註裡 +殿裡 +隊裡 裏白 #植物常用名 烏蘇里 #分詞用 首發 @@ -3407,33 +3244,6 @@ 高后 升高後 提高後 -0å¹´ # 協助分詞 -1å¹´ -2å¹´ -3å¹´ -4å¹´ -5å¹´ -6å¹´ -7å¹´ -8å¹´ -9å¹´ -〇年 -零年 -一年 -兩年 -二年 -三年 -四年 -五年 -六年 -七年 -八年 -九年 -十年 -百年 -千年 -萬年 -億年 周后 0周後 1周後 @@ -3474,6 +3284,7 @@ 伊達里子 濱田里佳子 王田里 +田里穗 小井里 西井里 碧河里 @@ -3737,6 +3548,7 @@ 吧檯 賭檯 坐檯 +坐台鐵 妝檯 餐檯 工作檯 diff --git a/maintenance/language/zhtable/tradphrases_exclude.manual b/maintenance/language/zhtable/tradphrases_exclude.manual index 92643bdf3a..e6aac9c869 100644 --- a/maintenance/language/zhtable/tradphrases_exclude.manual +++ b/maintenance/language/zhtable/tradphrases_exclude.manual @@ -751,3 +751,26 @@ 乾地 方誌 編髮 +颳去 +刮去 +么 +換髮 +谷氨酸 +幸免於難 +勝于 +善于 +安于 +寓于 +對于 +屬于 +忠于 +急于 +歸于 +生于 +由于 +終于 +見于 +過于 +長于 +關于 +難于 diff --git a/maintenance/manageJobs.php b/maintenance/manageJobs.php new file mode 100644 index 0000000000..bbedf0c646 --- /dev/null +++ b/maintenance/manageJobs.php @@ -0,0 +1,98 @@ +<?php +/** + * Maintenance script that handles managing job queue admin tasks + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * http://www.gnu.org/copyleft/gpl.html + * + * @file + * @ingroup Maintenance + * @author Aaron Schulz + */ + +require_once __DIR__ . '/Maintenance.php'; + +/** + * Maintenance script that handles managing job queue admin tasks (re-push, delete, ...) + * + * @ingroup Maintenance + */ +class ManageJobs extends Maintenance { + public function __construct() { + parent::__construct(); + $this->addDescription( 'Perform administrative tasks on a job queue' ); + $this->addOption( 'type', 'Job type', true, true ); + $this->addOption( 'action', 'Queue operation ("delete", "repush-abandoned")', true, true ); + } + + public function execute() { + $type = $this->getOption( 'type' ); + $action = $this->getOption( 'action' ); + + $group = JobQueueGroup::singleton(); + $queue = $group->get( $type ); + + if ( $action === 'delete' ) { + $this->delete( $queue ); + } elseif ( $action === 'repush-abandoned' ) { + $this->repushAbandoned( $queue ); + } else { + $this->error( "Invalid action '$action'.", 1 ); + } + } + + private function delete( JobQueue $queue ) { + $this->output( "Queue has {$queue->getSize()} job(s); deleting...\n" ); + $queue->delete(); + $this->output( "Done; current size is {$queue->getSize()} job(s).\n" ); + } + + private function repushAbandoned( JobQueue $queue ) { + $cache = ObjectCache::getInstance( CACHE_DB ); + $key = $cache->makeGlobalKey( 'last-job-repush', $queue->getWiki(), $queue->getType() ); + + $now = wfTimestampNow(); + $lastRepushTime = $cache->get( $key ); + if ( $lastRepushTime === false ) { + $lastRepushTime = wfTimestamp( TS_MW, 1 ); // include all jobs + } + + $this->output( "Last re-push time: $lastRepushTime; current time: $now\n" ); + + $count = 0; + $skipped = 0; + foreach ( $queue->getAllAbandonedJobs() as $job ) { + /** @var Job $job */ + if ( $job->getQueuedTimestamp() < wfTimestamp( TS_UNIX, $lastRepushTime ) ) { + ++$skipped; + continue; // already re-pushed in prior round + } + + $queue->push( $job ); + ++$count; + + if ( ( $count % $this->mBatchSize ) == 0 ) { + $queue->waitForBackups(); + } + } + + $cache->set( $key, $now ); // next run will ignore these jobs + + $this->output( "Re-pushed $count job(s) [$skipped skipped].\n" ); + } +} + +$maintClass = "ManageJobs"; +require_once RUN_MAINTENANCE_IF_MAIN; diff --git a/maintenance/migrateUserGroup.php b/maintenance/migrateUserGroup.php index 396be1d7ea..597a876df9 100644 --- a/maintenance/migrateUserGroup.php +++ b/maintenance/migrateUserGroup.php @@ -79,7 +79,7 @@ class MigrateUserGroup extends Maintenance { $affected += $dbw->affectedRows(); $this->commitTransaction( $dbw, __METHOD__ ); - // Clear cache for the affected users (bug 40340) + // Clear cache for the affected users (T42340) if ( $affected > 0 ) { // XXX: This also invalidates cache of unaffected users that // were in the new group and not in the group. diff --git a/maintenance/mssql/archives/patch-user_groups-ug_expiry.sql b/maintenance/mssql/archives/patch-user_groups-ug_expiry.sql new file mode 100644 index 0000000000..371d80b2ea --- /dev/null +++ b/maintenance/mssql/archives/patch-user_groups-ug_expiry.sql @@ -0,0 +1,6 @@ +-- Primary key and expiry column in user_groups table + +DROP INDEX IF EXISTS /*i*/ug_user_group ON /*_*/user_groups; +ALTER TABLE /*_*/tag_summary ADD CONSTRAINT pk_user_groups PRIMARY KEY(ug_user, ug_group); +ALTER TABLE /*_*/tag_summary ADD ug_expiry varchar(14) DEFAULT NULL; +CREATE INDEX /*i*/ug_expiry ON /*_*/user_groups(ug_expiry); diff --git a/maintenance/mssql/tables.sql b/maintenance/mssql/tables.sql index ddc37baeee..3babb393fb 100644 --- a/maintenance/mssql/tables.sql +++ b/maintenance/mssql/tables.sql @@ -64,9 +64,11 @@ INSERT INTO /*_*/mwuser (user_name) VALUES ('##Anonymous##'); CREATE TABLE /*_*/user_groups ( ug_user INT NOT NULL REFERENCES /*_*/mwuser(user_id) ON DELETE CASCADE, ug_group NVARCHAR(255) NOT NULL DEFAULT '', + ug_expiry varchar(14) DEFAULT NULL, + PRIMARY KEY(ug_user, ug_group) ); -CREATE UNIQUE clustered INDEX /*i*/ug_user_group ON /*_*/user_groups (ug_user, ug_group); CREATE INDEX /*i*/ug_group ON /*_*/user_groups(ug_group); +CREATE INDEX /*i*/ug_expiry ON /*_*/user_groups(ug_expiry); -- Stores the groups the user has once belonged to. -- The user may still belong to these groups (check user_groups). @@ -299,7 +301,7 @@ CREATE TABLE /*_*/categorylinks ( -- 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 bug 25254. + -- code in LinksUpdate.php. See T27254. cl_sortkey_prefix varbinary(255) NOT NULL default 0x, -- This isn't really used at present. Provided for an optional @@ -526,7 +528,7 @@ CREATE TABLE /*_*/ipblocks ( -- Size chosen to allow IPv6 -- FIXME: these fields were originally blank for single-IP blocks, -- but now they are populated. No migration was ever done. They - -- should be fixed to be blank again for such blocks (bug 49504). + -- should be fixed to be blank again for such blocks (T51504). ipb_range_start varchar(255) NOT NULL, ipb_range_end varchar(255) NOT NULL, diff --git a/maintenance/namespaceDupes.php b/maintenance/namespaceDupes.php index 522871d9df..80e8011f40 100644 --- a/maintenance/namespaceDupes.php +++ b/maintenance/namespaceDupes.php @@ -26,6 +26,7 @@ use MediaWiki\Linker\LinkTarget; use MediaWiki\MediaWikiServices; +use Wikimedia\Rdbms\ResultWrapper; require_once __DIR__ . '/Maintenance.php'; @@ -571,7 +572,7 @@ class NamespaceConflictChecker extends Maintenance { /** * Merge page histories * - * @param integer $id The page_id + * @param stdClass $row Page row * @param Title $newTitle The new title * @return bool */ diff --git a/maintenance/oracle/archives/patch-user_groups-ug_expiry.sql b/maintenance/oracle/archives/patch-user_groups-ug_expiry.sql new file mode 100644 index 0000000000..d5376a318b --- /dev/null +++ b/maintenance/oracle/archives/patch-user_groups-ug_expiry.sql @@ -0,0 +1,8 @@ +define mw_prefix='{$wgDBprefix}'; + +ALTER TABLE &mw_prefix.user_groups ADD ( +ug_expiry TIMESTAMP(6) WITH TIME ZONE NULL +); +DROP INDEX IF EXISTS &mw_prefix.user_groups_u01; +ALTER TABLE &mw_prefix.user_groups ADD CONSTRAINT &mw_prefix.user_groups_pk PRIMARY KEY (ug_user,ug_group); +CREATE INDEX &mw_prefix.user_groups_i02 ON &mw_prefix.user_groups (ug_expiry); diff --git a/maintenance/oracle/tables.sql b/maintenance/oracle/tables.sql index edb3398a64..fc3c696a6c 100644 --- a/maintenance/oracle/tables.sql +++ b/maintenance/oracle/tables.sql @@ -33,11 +33,13 @@ INSERT INTO &mw_prefix.mwuser CREATE TABLE &mw_prefix.user_groups ( ug_user NUMBER DEFAULT 0 NOT NULL, - ug_group VARCHAR2(255) NOT NULL + ug_group VARCHAR2(255) NOT NULL, + ug_expiry TIMESTAMP(6) WITH TIME ZONE NULL ); +ALTER TABLE &mw_prefix.user_groups ADD CONSTRAINT &mw_prefix.user_groups_pk PRIMARY KEY (ug_user,ug_group); ALTER TABLE &mw_prefix.user_groups ADD CONSTRAINT &mw_prefix.user_groups_fk1 FOREIGN KEY (ug_user) REFERENCES &mw_prefix.mwuser(user_id) ON DELETE CASCADE DEFERRABLE INITIALLY DEFERRED; -CREATE UNIQUE INDEX &mw_prefix.user_groups_u01 ON &mw_prefix.user_groups (ug_user,ug_group); CREATE INDEX &mw_prefix.user_groups_i01 ON &mw_prefix.user_groups (ug_group); +CREATE INDEX &mw_prefix.user_groups_i02 ON &mw_prefix.user_groups (ug_expiry); CREATE TABLE &mw_prefix.user_former_groups ( ufg_user NUMBER DEFAULT 0 NOT NULL, diff --git a/maintenance/populateRevisionLength.php b/maintenance/populateRevisionLength.php index 5e44fafd9f..a9457c2a1c 100644 --- a/maintenance/populateRevisionLength.php +++ b/maintenance/populateRevisionLength.php @@ -136,7 +136,7 @@ class PopulateRevisionLength extends LoggedUpdateMaintenance { $content = $rev->getContent(); if ( !$content ) { - # This should not happen, but sometimes does (bug 20757) + # This should not happen, but sometimes does (T22757) $id = $row->$idCol; $this->output( "Content of $table $id unavailable!\n" ); diff --git a/maintenance/populateRevisionSha1.php b/maintenance/populateRevisionSha1.php index 095c26693b..fb97e910f8 100644 --- a/maintenance/populateRevisionSha1.php +++ b/maintenance/populateRevisionSha1.php @@ -156,10 +156,10 @@ class PopulateRevisionSha1 extends LoggedUpdateMaintenance { } catch ( Exception $e ) { $this->output( "Data of revision with {$idCol}={$row->$idCol} unavailable!\n" ); - return false; // bug 22624? + return false; // T24624? } if ( !is_string( $text ) ) { - # This should not happen, but sometimes does (bug 20757) + # This should not happen, but sometimes does (T22757) $this->output( "Data of revision with {$idCol}={$row->$idCol} unavailable!\n" ); return false; @@ -185,11 +185,11 @@ class PopulateRevisionSha1 extends LoggedUpdateMaintenance { } catch ( Exception $e ) { $this->output( "Text of revision with timestamp {$row->ar_timestamp} unavailable!\n" ); - return false; // bug 22624? + return false; // T24624? } $text = $rev->getSerializedData(); if ( !is_string( $text ) ) { - # This should not happen, but sometimes does (bug 20757) + # This should not happen, but sometimes does (T22757) $this->output( "Data of revision with timestamp {$row->ar_timestamp} unavailable!\n" ); return false; diff --git a/maintenance/postgres/tables.sql b/maintenance/postgres/tables.sql index 61ad075b5b..e19c447a65 100644 --- a/maintenance/postgres/tables.sql +++ b/maintenance/postgres/tables.sql @@ -58,10 +58,13 @@ INSERT INTO mwuser VALUES (DEFAULT,'Anonymous','',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,now(),now()); CREATE TABLE user_groups ( - ug_user INTEGER NULL REFERENCES mwuser(user_id) ON DELETE CASCADE DEFERRABLE INITIALLY DEFERRED, - ug_group TEXT NOT NULL + ug_user INTEGER NULL REFERENCES mwuser(user_id) ON DELETE CASCADE DEFERRABLE INITIALLY DEFERRED, + ug_group TEXT NOT NULL, + ug_expiry TIMESTAMPTZ NULL, + PRIMARY KEY(ug_user, ug_group) ); -CREATE UNIQUE INDEX user_groups_unique ON user_groups (ug_user, ug_group); +CREATE INDEX user_groups_group ON user_groups (ug_group); +CREATE INDEX user_groups_expiry ON user_groups (ug_expiry); CREATE TABLE user_former_groups ( ufg_user INTEGER NULL REFERENCES mwuser(user_id) ON DELETE CASCADE DEFERRABLE INITIALLY DEFERRED, diff --git a/maintenance/purgeChangedPages.php b/maintenance/purgeChangedPages.php index b354399f88..cf65c69315 100644 --- a/maintenance/purgeChangedPages.php +++ b/maintenance/purgeChangedPages.php @@ -23,6 +23,8 @@ require_once __DIR__ . '/Maintenance.php'; +use Wikimedia\Rdbms\ResultWrapper; + /** * Maintenance script that sends purge requests for pages edited in a date * range to squid/varnish. diff --git a/maintenance/purgeModuleDeps.php b/maintenance/purgeModuleDeps.php new file mode 100644 index 0000000000..3088baad09 --- /dev/null +++ b/maintenance/purgeModuleDeps.php @@ -0,0 +1,72 @@ +<?php +/** + * Remove all cache entries for ResourceLoader modules from the database. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * http://www.gnu.org/copyleft/gpl.html + * + * @file + * @ingroup Maintenance + * @author Timo Tijhof + */ + +use MediaWiki\MediaWikiServices; + +require_once __DIR__ . '/Maintenance.php'; + +/** + * Maintenance script to purge the module_deps database cache table. + * + * @ingroup Maintenance + */ +class PurgeModuleDeps extends Maintenance { + public function __construct() { + parent::__construct(); + $this->addDescription( + 'Remove all cache entries for ResourceLoader modules from the database' ); + $this->setBatchSize( 500 ); + } + + public function execute() { + $this->output( "Cleaning up module_deps table...\n" ); + + $dbw = $this->getDB( DB_MASTER ); + $res = $dbw->select( 'module_deps', [ 'md_module', 'md_skin' ], [], __METHOD__ ); + $rows = iterator_to_array( $res, false ); + + $modDeps = $dbw->tableName( 'module_deps' ); + $i = 1; + foreach ( array_chunk( $rows, $this->mBatchSize ) as $chunk ) { + // WHERE ( mod=A AND skin=A ) OR ( mod=A AND skin=B) .. + $conds = array_map( function ( stdClass $row ) use ( $dbw ) { + return $dbw->makeList( (array)$row, IDatabase::LIST_AND ); + }, $chunk ); + $conds = $dbw->makeList( $conds, IDatabase::LIST_OR ); + + $this->beginTransaction( $dbw, __METHOD__ ); + $dbw->query( "DELETE FROM $modDeps WHERE $conds", __METHOD__ ); + $numRows = $dbw->affectedRows(); + $this->output( "Batch $i: $numRows rows\n" ); + $this->commitTransaction( $dbw, __METHOD__ ); + + $i++; + } + + $this->output( "Done\n" ); + } +} + +$maintClass = 'PurgeModuleDeps'; +require_once RUN_MAINTENANCE_IF_MAIN; diff --git a/maintenance/rebuildFileCache.php b/maintenance/rebuildFileCache.php index da8a6bc36d..3520279fc3 100644 --- a/maintenance/rebuildFileCache.php +++ b/maintenance/rebuildFileCache.php @@ -122,6 +122,9 @@ class RebuildFileCache extends Maintenance { $article = Article::newFromTitle( $title, $context ); $context->setWikiPage( $article->getPage() ); + // Some extensions like FlaggedRevs while error out if this is unset + RequestContext::getMain()->setTitle( $title ); + // If the article is cacheable, then load it if ( $article->isFileCacheable( HTMLFileCache::MODE_REBUILD ) ) { $viewCache = new HTMLFileCache( $title, 'view' ); @@ -137,7 +140,7 @@ class RebuildFileCache extends Maintenance { MediaWiki\suppressWarnings(); // header notices // Cache ?action=view - $wgRequestTime = microtime( true ); # bug 22852 + $wgRequestTime = microtime( true ); # T24852 ob_start(); $article->view(); $context->getOutput()->output(); @@ -145,7 +148,7 @@ class RebuildFileCache extends Maintenance { $viewHtml = ob_get_clean(); $viewCache->saveToFileCache( $viewHtml ); // Cache ?action=history - $wgRequestTime = microtime( true ); # bug 22852 + $wgRequestTime = microtime( true ); # T24852 ob_start(); Action::factory( 'history', $article, $context )->show(); $context->getOutput()->output(); diff --git a/maintenance/rebuildtextindex.php b/maintenance/rebuildtextindex.php index 37636c85a8..b7f07629ec 100644 --- a/maintenance/rebuildtextindex.php +++ b/maintenance/rebuildtextindex.php @@ -108,9 +108,8 @@ class RebuildTextIndex extends Maintenance { ); foreach ( $res as $s ) { + $title = Title::makeTitle( $s->page_namespace, $s->page_title ); try { - $title = Title::makeTitle( $s->page_namespace, $s->page_title ); - $rev = new Revision( $s ); $content = $rev->getContent(); diff --git a/maintenance/refreshLinks.php b/maintenance/refreshLinks.php index e7a4d06902..06fcbaf06b 100644 --- a/maintenance/refreshLinks.php +++ b/maintenance/refreshLinks.php @@ -29,6 +29,8 @@ require_once __DIR__ . '/Maintenance.php'; * @ingroup Maintenance */ class RefreshLinks extends Maintenance { + const REPORTING_INTERVAL = 100; + /** @var int|bool */ protected $namespace = false; @@ -43,6 +45,8 @@ class RefreshLinks extends Maintenance { $this->addOption( 'dfn-chunk-size', 'Maximum number of existent IDs to check per ' . 'query, default 100000', false, true ); $this->addOption( 'namespace', 'Only fix pages in this namespace', false, true ); + $this->addOption( 'category', 'Only fix pages in this category', false, true ); + $this->addOption( 'tracking-category', 'Only fix pages in this tracking category', false, true ); $this->addArg( 'start', 'Page_id to start from, default 1', false ); $this->setBatchSize( 100 ); } @@ -61,7 +65,15 @@ class RefreshLinks extends Maintenance { } else { $this->namespace = (int)$ns; } - if ( !$this->hasOption( 'dfn-only' ) ) { + if ( ( $category = $this->getOption( 'category', false ) ) !== false ) { + $title = Title::makeTitleSafe( NS_CATEGORY, $category ); + if ( !$title ) { + $this->error( "'$category' is an invalid category name!\n", true ); + } + $this->refreshCategory( $category ); + } 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 ); @@ -89,7 +101,6 @@ class RefreshLinks extends Maintenance { private function doRefreshLinks( $start, $newOnly = false, $end = null, $redirectsOnly = false, $oldRedirectsOnly = false ) { - $reportingInterval = 100; $dbr = $this->getDB( DB_REPLICA, [ 'vslow' ] ); if ( $start === null ) { @@ -124,7 +135,7 @@ class RefreshLinks extends Maintenance { $i = 0; foreach ( $res as $row ) { - if ( !( ++$i % $reportingInterval ) ) { + if ( !( ++$i % self::REPORTING_INTERVAL ) ) { $this->output( "$i\n" ); wfWaitForSlaves(); } @@ -145,7 +156,7 @@ class RefreshLinks extends Maintenance { $i = 0; foreach ( $res as $row ) { - if ( !( ++$i % $reportingInterval ) ) { + if ( !( ++$i % self::REPORTING_INTERVAL ) ) { $this->output( "$i\n" ); wfWaitForSlaves(); } @@ -166,7 +177,7 @@ class RefreshLinks extends Maintenance { for ( $id = $start; $id <= $end; $id++ ) { - if ( !( $id % $reportingInterval ) ) { + if ( !( $id % self::REPORTING_INTERVAL ) ) { $this->output( "$id\n" ); wfWaitForSlaves(); } @@ -179,7 +190,7 @@ class RefreshLinks extends Maintenance { for ( $id = $start; $id <= $end; $id++ ) { - if ( !( $id % $reportingInterval ) ) { + if ( !( $id % self::REPORTING_INTERVAL ) ) { $this->output( "$id\n" ); wfWaitForSlaves(); } @@ -261,7 +272,9 @@ class RefreshLinks extends Maintenance { return; } - foreach ( $content->getSecondaryDataUpdates( $page->getTitle() ) as $update ) { + $updates = $content->getSecondaryDataUpdates( + $page->getTitle(), /* $old = */ null, /* $recursive = */ false ); + foreach ( $updates as $update ) { DeferredUpdates::addUpdate( $update ); } } @@ -379,6 +392,7 @@ class RefreshLinks extends Maintenance { * @param string $var Field name * @param mixed $start First value to include or null * @param mixed $end Last value to include or null + * @return string */ private static function intervalCond( IDatabase $db, $var, $start, $end ) { if ( $start === null && $end === null ) { @@ -391,6 +405,87 @@ class RefreshLinks extends Maintenance { return "$var BETWEEN {$db->addQuotes( $start )} AND {$db->addQuotes( $end )}"; } } + + /** + * Refershes links for pages in a tracking category + * + * @param string $category Category key + */ + private function refreshTrackingCategory( $category ) { + $cats = $this->getPossibleCategories( $category ); + + if ( !$cats ) { + $this->error( "Tracking category '$category' is disabled\n" ); + // Output to stderr but don't bail out, + } + + foreach ( $cats as $cat ) { + $this->refreshCategory( $cat ); + } + } + + /** + * Refreshes links to a category + * + * @param Title $category + */ + private function refreshCategory( Title $category ) { + $this->output( "Refreshing pages in category '{$category->getText()}'...\n" ); + + $dbr = $this->getDB( DB_REPLICA ); + $conds = [ + 'page_id=cl_from', + 'cl_to' => $category->getDBkey(), + ]; + if ( $this->namespace !== false ) { + $conds['page_namespace'] = $this->namespace; + } + + $i = 0; + $timestamp = ''; + $lastId = 0; + do { + $finalConds = $conds; + $timestamp = $dbr->addQuotes( $timestamp ); + $finalConds []= + "(cl_timestamp > $timestamp OR (cl_timestamp = $timestamp AND cl_from > $lastId))"; + $res = $dbr->select( [ 'page', 'categorylinks' ], + [ 'page_id', 'cl_timestamp' ], + $finalConds, + __METHOD__, + [ + 'ORDER BY' => [ 'cl_timestamp', 'cl_from' ], + 'LIMIT' => $this->mBatchSize, + ] + ); + + foreach ( $res as $row ) { + if ( !( ++$i % self::REPORTING_INTERVAL ) ) { + $this->output( "$i\n" ); + wfWaitForSlaves(); + } + $lastId = $row->page_id; + $timestamp = $row->cl_timestamp; + self::fixLinksFromArticle( $row->page_id ); + } + + } while ( $res->numRows() == $this->mBatchSize ); + } + + /** + * Returns a list of possible categories for a given tracking category key + * + * @param string $categoryKey + * @return Title[] + */ + private function getPossibleCategories( $categoryKey ) { + $trackingCategories = new TrackingCategories( $this->getConfig() ); + $cats = $trackingCategories->getTrackingCategories(); + if ( isset( $cats[$categoryKey] ) ) { + return $cats[$categoryKey]['cats']; + } + $this->error( "Unknown tracking category {$categoryKey}\n", true ); + } } $maintClass = 'RefreshLinks'; diff --git a/maintenance/shell.php b/maintenance/shell.php new file mode 100644 index 0000000000..47ef8045b1 --- /dev/null +++ b/maintenance/shell.php @@ -0,0 +1,102 @@ +<?php +/** + * Modern interactive shell within the MediaWiki engine. + * + * Merely wraps around http://psysh.org/ and drop an interactive PHP shell in + * the global scope. + * + * Copyright © 2017 Antoine Musso <hashar@free.fr> + * Copyright © 2017 Gergő Tisza <tgr.huwiki@gmail.com> + * Copyright © 2017 Justin Hileman <justin@justinhileman.info> + * Copyright © 2017 Wikimedia Foundation Inc. + * https://www.mediawiki.org/ + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * http://www.gnu.org/copyleft/gpl.html + * + * @file + * @ingroup Maintenance + * + * @author Antoine Musso <hashar@free.fr> + * @author Justin Hileman <justin@justinhileman.info> + * @author Gergő Tisza <tgr.huwiki@gmail.com> + */ + +require_once __DIR__ . '/Maintenance.php'; + +/** + * Interactive shell with completion and global scope. + * + */ +class MediaWikiShell extends Maintenance { + + public function __construct() { + parent::__construct(); + $this->addOption( 'd', + 'For back compatibility with eval.php. ' . + '0 send debug to stdout. ' . + 'With 1 additionally initialize database with debugging ', + false, true + ); + } + + public function execute() { + if ( !class_exists( \Psy\Shell::class ) ) { + $this->error( 'PsySH not found. Please run composer with the --dev option.', 1 ); + } + + $traverser = new \PhpParser\NodeTraverser(); + $codeCleaner = new \Psy\CodeCleaner( null, null, $traverser ); + + // add this after initializing the code cleaner so all the default passes get added first + $traverser->addVisitor( new CodeCleanerGlobalsPass() ); + + $config = new \Psy\Configuration( [ 'codeCleaner' => $codeCleaner ] ); + $config->setUpdateCheck( \Psy\VersionUpdater\Checker::NEVER ); + $shell = new \Psy\Shell( $config ); + if ( $this->hasOption( 'd' ) ) { + $this->setupLegacy(); + } + + $shell->run(); + } + + /** + * For back compatibility with eval.php + */ + protected function setupLegacy() { + global $wgDebugLogFile; + + $d = intval( $this->getOption( 'd' ) ); + if ( $d > 0 ) { + $wgDebugLogFile = 'php://stdout'; + } + if ( $d > 1 ) { + # Set DBO_DEBUG (equivalent of $wgDebugDumpSql) + # XXX copy pasted from eval.php :( + $lb = wfGetLB(); + $serverCount = $lb->getServerCount(); + for ( $i = 0; $i < $serverCount; $i++ ) { + $server = $lb->getServerInfo( $i ); + $server['flags'] |= DBO_DEBUG; + $lb->setServerInfo( $i, $server ); + } + } + } + +} + +$maintClass = 'MediaWikiShell'; +require_once RUN_MAINTENANCE_IF_MAIN; diff --git a/maintenance/sql.php b/maintenance/sql.php index cc976ed97f..58472e9bdf 100644 --- a/maintenance/sql.php +++ b/maintenance/sql.php @@ -24,6 +24,8 @@ require_once __DIR__ . '/Maintenance.php'; +use Wikimedia\Rdbms\ResultWrapper; + /** * Maintenance script that sends SQL queries from the specified file to the database. * @@ -50,7 +52,7 @@ class MwSql extends Maintenance { $wiki = $this->hasOption( 'wikidb' ) ? $this->getOption( 'wikidb' ) : false; // Get the appropriate load balancer (for this wiki) if ( $this->hasOption( 'cluster' ) ) { - $lb = wfGetLBFactory()->getExternalLB( $this->getOption( 'cluster' ), $wiki ); + $lb = wfGetLBFactory()->getExternalLB( $this->getOption( 'cluster' ) ); } else { $lb = wfGetLB( $wiki ); } @@ -137,7 +139,7 @@ class MwSql extends Maintenance { } if ( $historyFile ) { # Delimiter is eated by streamStatementEnd, we add it - # up in the history (bug 37020) + # up in the history (T39020) readline_add_history( $wholeLine . ';' ); readline_write_history( $historyFile ); } @@ -159,7 +161,7 @@ class MwSql extends Maintenance { /** * Print the results, callback for $db->sourceStream() - * @param ResultWrapper $res The results object + * @param ResultWrapper|bool $res The results object * @param IDatabase $db */ public function sqlPrintResult( $res, $db ) { diff --git a/maintenance/sqlite/archives/initial-indexes.sql b/maintenance/sqlite/archives/initial-indexes.sql index f322a03cf8..2d0c9eea9c 100644 --- a/maintenance/sqlite/archives/initial-indexes.sql +++ b/maintenance/sqlite/archives/initial-indexes.sql @@ -3,7 +3,7 @@ -- Unique indexes need to be handled with INSERT SELECT since just running -- the CREATE INDEX statement will fail if there are duplicate values. -- --- Ignore duplicates, several tables will have them (e.g. bug 16966) but in +-- Ignore duplicates, several tables will have them (e.g. T18966) but in -- most cases it's harmless to discard them. -------------------------------------------------------------------------------- diff --git a/maintenance/sqlite/archives/patch-user_groups-ug_expiry.sql b/maintenance/sqlite/archives/patch-user_groups-ug_expiry.sql new file mode 100644 index 0000000000..7fc8941609 --- /dev/null +++ b/maintenance/sqlite/archives/patch-user_groups-ug_expiry.sql @@ -0,0 +1,21 @@ +DROP TABLE IF EXISTS /*_*/user_groups_tmp; + +CREATE TABLE /*$wgDBprefix*/user_groups_tmp ( + ug_user int unsigned NOT NULL default 0, + ug_group varbinary(255) NOT NULL default '', + ug_expiry varbinary(14) NULL default NULL, + PRIMARY KEY (ug_user, ug_group) +); + +INSERT OR IGNORE INTO /*_*/user_groups_tmp ( + ug_user, ug_group ) + SELECT + ug_user, ug_group + FROM /*_*/user_groups; + +DROP TABLE /*_*/user_groups; + +ALTER TABLE /*_*/user_groups_tmp RENAME TO /*_*/user_groups; + +CREATE INDEX /*i*/ug_group ON /*_*/user_groups (ug_group); +CREATE INDEX /*i*/ug_expiry ON /*_*/user_groups (ug_expiry); diff --git a/maintenance/storage/fixBug20757.php b/maintenance/storage/fixBug20757.php deleted file mode 100644 index b444f31143..0000000000 --- a/maintenance/storage/fixBug20757.php +++ /dev/null @@ -1,349 +0,0 @@ -<?php -/** - * Script to fix bug 20757. - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License along - * with this program; if not, write to the Free Software Foundation, Inc., - * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - * http://www.gnu.org/copyleft/gpl.html - * - * @file - * @ingroup Maintenance ExternalStorage - */ - -require_once __DIR__ . '/../Maintenance.php'; - -/** - * Maintenance script to fix bug 20757. - * - * @ingroup Maintenance ExternalStorage - */ -class FixBug20757 extends Maintenance { - public $batchSize = 10000; - public $mapCache = []; - public $mapCacheSize = 0; - public $maxMapCacheSize = 1000000; - - function __construct() { - parent::__construct(); - $this->addDescription( 'Script to fix bug 20757 assuming that blob_tracking is intact' ); - $this->addOption( 'dry-run', 'Report only' ); - $this->addOption( 'start', 'old_id to start at', false, true ); - } - - function execute() { - $dbr = $this->getDB( DB_REPLICA ); - $dbw = $this->getDB( DB_MASTER ); - - $dryRun = $this->getOption( 'dry-run' ); - if ( $dryRun ) { - print "Dry run only.\n"; - } - - $startId = $this->getOption( 'start', 0 ); - $numGood = 0; - $numFixed = 0; - $numBad = 0; - - $totalRevs = $dbr->selectField( 'text', 'MAX(old_id)', false, __METHOD__ ); - - // In MySQL 4.1+, the binary field old_text has a non-working LOWER() function - $lowerLeft = 'LOWER(CONVERT(LEFT(old_text,22) USING latin1))'; - - while ( true ) { - print "ID: $startId / $totalRevs\r"; - - $res = $dbr->select( - 'text', - [ 'old_id', 'old_flags', 'old_text' ], - [ - 'old_id > ' . intval( $startId ), - 'old_flags LIKE \'%object%\' AND old_flags NOT LIKE \'%external%\'', - "$lowerLeft = 'o:15:\"historyblobstub\"'", - ], - __METHOD__, - [ - 'ORDER BY' => 'old_id', - 'LIMIT' => $this->batchSize, - ] - ); - - if ( !$res->numRows() ) { - break; - } - - $secondaryIds = []; - $stubs = []; - - foreach ( $res as $row ) { - $startId = $row->old_id; - - // Basic sanity checks - $obj = unserialize( $row->old_text ); - if ( $obj === false ) { - print "{$row->old_id}: unrecoverable: cannot unserialize\n"; - ++$numBad; - continue; - } - - if ( !is_object( $obj ) ) { - print "{$row->old_id}: unrecoverable: unserialized to type " . - gettype( $obj ) . ", possible double-serialization\n"; - ++$numBad; - continue; - } - - if ( strtolower( get_class( $obj ) ) !== 'historyblobstub' ) { - print "{$row->old_id}: unrecoverable: unexpected object class " . - get_class( $obj ) . "\n"; - ++$numBad; - continue; - } - - // Process flags - $flags = explode( ',', $row->old_flags ); - if ( in_array( 'utf-8', $flags ) || in_array( 'utf8', $flags ) ) { - $legacyEncoding = false; - } else { - $legacyEncoding = true; - } - - // Queue the stub for future batch processing - $id = intval( $obj->mOldId ); - $secondaryIds[] = $id; - $stubs[$row->old_id] = [ - 'legacyEncoding' => $legacyEncoding, - 'secondaryId' => $id, - 'hash' => $obj->mHash, - ]; - } - - $secondaryIds = array_unique( $secondaryIds ); - - if ( !count( $secondaryIds ) ) { - continue; - } - - // Run the batch query on blob_tracking - $res = $dbr->select( - 'blob_tracking', - '*', - [ - 'bt_text_id' => $secondaryIds, - ], - __METHOD__ - ); - $trackedBlobs = []; - foreach ( $res as $row ) { - $trackedBlobs[$row->bt_text_id] = $row; - } - - // Process the stubs - foreach ( $stubs as $primaryId => $stub ) { - $secondaryId = $stub['secondaryId']; - if ( !isset( $trackedBlobs[$secondaryId] ) ) { - // No tracked blob. Work out what went wrong - $secondaryRow = $dbr->selectRow( - 'text', - [ 'old_flags', 'old_text' ], - [ 'old_id' => $secondaryId ], - __METHOD__ - ); - if ( !$secondaryRow ) { - print "$primaryId: unrecoverable: secondary row is missing\n"; - ++$numBad; - } elseif ( $this->isUnbrokenStub( $stub, $secondaryRow ) ) { - // Not broken yet, and not in the tracked clusters so it won't get - // broken by the current RCT run. - ++$numGood; - } elseif ( strpos( $secondaryRow->old_flags, 'external' ) !== false ) { - print "$primaryId: unrecoverable: secondary gone to {$secondaryRow->old_text}\n"; - ++$numBad; - } else { - print "$primaryId: unrecoverable: miscellaneous corruption of secondary row\n"; - ++$numBad; - } - unset( $stubs[$primaryId] ); - continue; - } - $trackRow = $trackedBlobs[$secondaryId]; - - // Check that the specified text really is available in the tracked source row - $url = "DB://{$trackRow->bt_cluster}/{$trackRow->bt_blob_id}/{$stub['hash']}"; - $text = ExternalStore::fetchFromURL( $url ); - if ( $text === false ) { - print "$primaryId: unrecoverable: source text missing\n"; - ++$numBad; - unset( $stubs[$primaryId] ); - continue; - } - if ( md5( $text ) !== $stub['hash'] ) { - print "$primaryId: unrecoverable: content hashes do not match\n"; - ++$numBad; - unset( $stubs[$primaryId] ); - continue; - } - - // Find the page_id and rev_id - // The page is probably the same as the page of the secondary row - $pageId = intval( $trackRow->bt_page ); - if ( !$pageId ) { - $revId = $pageId = 0; - } else { - $revId = $this->findTextIdInPage( $pageId, $primaryId ); - if ( !$revId ) { - // Actually an orphan - $pageId = $revId = 0; - } - } - - $newFlags = $stub['legacyEncoding'] ? 'external' : 'external,utf-8'; - - if ( !$dryRun ) { - // Reset the text row to point to the original copy - $this->beginTransaction( $dbw, __METHOD__ ); - $dbw->update( - 'text', - // SET - [ - 'old_flags' => $newFlags, - 'old_text' => $url - ], - // WHERE - [ 'old_id' => $primaryId ], - __METHOD__ - ); - - // Add a blob_tracking row so that the new reference can be recompressed - // without needing to run trackBlobs.php again - $dbw->insert( 'blob_tracking', - [ - 'bt_page' => $pageId, - 'bt_rev_id' => $revId, - 'bt_text_id' => $primaryId, - 'bt_cluster' => $trackRow->bt_cluster, - 'bt_blob_id' => $trackRow->bt_blob_id, - 'bt_cgz_hash' => $stub['hash'], - 'bt_new_url' => null, - 'bt_moved' => 0, - ], - __METHOD__ - ); - $this->commitTransaction( $dbw, __METHOD__ ); - $this->waitForSlaves(); - } - - print "$primaryId: resolved to $url\n"; - ++$numFixed; - } - } - - print "\n"; - print "Fixed: $numFixed\n"; - print "Unrecoverable: $numBad\n"; - print "Good stubs: $numGood\n"; - } - - function waitForSlaves() { - static $iteration = 0; - ++$iteration; - if ( ++$iteration > 50 == 0 ) { - wfWaitForSlaves(); - $iteration = 0; - } - } - - function findTextIdInPage( $pageId, $textId ) { - $ids = $this->getRevTextMap( $pageId ); - if ( !isset( $ids[$textId] ) ) { - return null; - } else { - return $ids[$textId]; - } - } - - function getRevTextMap( $pageId ) { - if ( !isset( $this->mapCache[$pageId] ) ) { - // Limit cache size - while ( $this->mapCacheSize > $this->maxMapCacheSize ) { - $key = key( $this->mapCache ); - $this->mapCacheSize -= count( $this->mapCache[$key] ); - unset( $this->mapCache[$key] ); - } - - $dbr = $this->getDB( DB_REPLICA ); - $map = []; - $res = $dbr->select( 'revision', - [ 'rev_id', 'rev_text_id' ], - [ 'rev_page' => $pageId ], - __METHOD__ - ); - foreach ( $res as $row ) { - $map[$row->rev_text_id] = $row->rev_id; - } - $this->mapCache[$pageId] = $map; - $this->mapCacheSize += count( $map ); - } - - return $this->mapCache[$pageId]; - } - - /** - * This is based on part of HistoryBlobStub::getText(). - * Determine if the text can be retrieved from the row in the normal way. - * @param array $stub - * @param stdClass $secondaryRow - * @return bool - */ - function isUnbrokenStub( $stub, $secondaryRow ) { - $flags = explode( ',', $secondaryRow->old_flags ); - $text = $secondaryRow->old_text; - if ( in_array( 'external', $flags ) ) { - $url = $text; - MediaWiki\suppressWarnings(); - list( /* $proto */, $path ) = explode( '://', $url, 2 ); - MediaWiki\restoreWarnings(); - - if ( $path == "" ) { - return false; - } - $text = ExternalStore::fetchFromURL( $url ); - } - if ( !in_array( 'object', $flags ) ) { - return false; - } - - if ( in_array( 'gzip', $flags ) ) { - $obj = unserialize( gzinflate( $text ) ); - } else { - $obj = unserialize( $text ); - } - - if ( !is_object( $obj ) ) { - // Correct for old double-serialization bug. - $obj = unserialize( $obj ); - } - - if ( !is_object( $obj ) ) { - return false; - } - - $obj->uncompress(); - $text = $obj->getItem( $stub['hash'] ); - - return $text !== false; - } -} - -$maintClass = 'FixBug20757'; -require_once RUN_MAINTENANCE_IF_MAIN; diff --git a/maintenance/storage/fixT22757.php b/maintenance/storage/fixT22757.php new file mode 100644 index 0000000000..e8bd23d4d3 --- /dev/null +++ b/maintenance/storage/fixT22757.php @@ -0,0 +1,349 @@ +<?php +/** + * Script to fix T22757. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * http://www.gnu.org/copyleft/gpl.html + * + * @file + * @ingroup Maintenance ExternalStorage + */ + +require_once __DIR__ . '/../Maintenance.php'; + +/** + * Maintenance script to fix T22757. + * + * @ingroup Maintenance ExternalStorage + */ +class FixT22757 extends Maintenance { + public $batchSize = 10000; + public $mapCache = []; + public $mapCacheSize = 0; + public $maxMapCacheSize = 1000000; + + function __construct() { + parent::__construct(); + $this->addDescription( 'Script to fix T22757 assuming that blob_tracking is intact' ); + $this->addOption( 'dry-run', 'Report only' ); + $this->addOption( 'start', 'old_id to start at', false, true ); + } + + function execute() { + $dbr = $this->getDB( DB_REPLICA ); + $dbw = $this->getDB( DB_MASTER ); + + $dryRun = $this->getOption( 'dry-run' ); + if ( $dryRun ) { + print "Dry run only.\n"; + } + + $startId = $this->getOption( 'start', 0 ); + $numGood = 0; + $numFixed = 0; + $numBad = 0; + + $totalRevs = $dbr->selectField( 'text', 'MAX(old_id)', false, __METHOD__ ); + + // In MySQL 4.1+, the binary field old_text has a non-working LOWER() function + $lowerLeft = 'LOWER(CONVERT(LEFT(old_text,22) USING latin1))'; + + while ( true ) { + print "ID: $startId / $totalRevs\r"; + + $res = $dbr->select( + 'text', + [ 'old_id', 'old_flags', 'old_text' ], + [ + 'old_id > ' . intval( $startId ), + 'old_flags LIKE \'%object%\' AND old_flags NOT LIKE \'%external%\'', + "$lowerLeft = 'o:15:\"historyblobstub\"'", + ], + __METHOD__, + [ + 'ORDER BY' => 'old_id', + 'LIMIT' => $this->batchSize, + ] + ); + + if ( !$res->numRows() ) { + break; + } + + $secondaryIds = []; + $stubs = []; + + foreach ( $res as $row ) { + $startId = $row->old_id; + + // Basic sanity checks + $obj = unserialize( $row->old_text ); + if ( $obj === false ) { + print "{$row->old_id}: unrecoverable: cannot unserialize\n"; + ++$numBad; + continue; + } + + if ( !is_object( $obj ) ) { + print "{$row->old_id}: unrecoverable: unserialized to type " . + gettype( $obj ) . ", possible double-serialization\n"; + ++$numBad; + continue; + } + + if ( strtolower( get_class( $obj ) ) !== 'historyblobstub' ) { + print "{$row->old_id}: unrecoverable: unexpected object class " . + get_class( $obj ) . "\n"; + ++$numBad; + continue; + } + + // Process flags + $flags = explode( ',', $row->old_flags ); + if ( in_array( 'utf-8', $flags ) || in_array( 'utf8', $flags ) ) { + $legacyEncoding = false; + } else { + $legacyEncoding = true; + } + + // Queue the stub for future batch processing + $id = intval( $obj->mOldId ); + $secondaryIds[] = $id; + $stubs[$row->old_id] = [ + 'legacyEncoding' => $legacyEncoding, + 'secondaryId' => $id, + 'hash' => $obj->mHash, + ]; + } + + $secondaryIds = array_unique( $secondaryIds ); + + if ( !count( $secondaryIds ) ) { + continue; + } + + // Run the batch query on blob_tracking + $res = $dbr->select( + 'blob_tracking', + '*', + [ + 'bt_text_id' => $secondaryIds, + ], + __METHOD__ + ); + $trackedBlobs = []; + foreach ( $res as $row ) { + $trackedBlobs[$row->bt_text_id] = $row; + } + + // Process the stubs + foreach ( $stubs as $primaryId => $stub ) { + $secondaryId = $stub['secondaryId']; + if ( !isset( $trackedBlobs[$secondaryId] ) ) { + // No tracked blob. Work out what went wrong + $secondaryRow = $dbr->selectRow( + 'text', + [ 'old_flags', 'old_text' ], + [ 'old_id' => $secondaryId ], + __METHOD__ + ); + if ( !$secondaryRow ) { + print "$primaryId: unrecoverable: secondary row is missing\n"; + ++$numBad; + } elseif ( $this->isUnbrokenStub( $stub, $secondaryRow ) ) { + // Not broken yet, and not in the tracked clusters so it won't get + // broken by the current RCT run. + ++$numGood; + } elseif ( strpos( $secondaryRow->old_flags, 'external' ) !== false ) { + print "$primaryId: unrecoverable: secondary gone to {$secondaryRow->old_text}\n"; + ++$numBad; + } else { + print "$primaryId: unrecoverable: miscellaneous corruption of secondary row\n"; + ++$numBad; + } + unset( $stubs[$primaryId] ); + continue; + } + $trackRow = $trackedBlobs[$secondaryId]; + + // Check that the specified text really is available in the tracked source row + $url = "DB://{$trackRow->bt_cluster}/{$trackRow->bt_blob_id}/{$stub['hash']}"; + $text = ExternalStore::fetchFromURL( $url ); + if ( $text === false ) { + print "$primaryId: unrecoverable: source text missing\n"; + ++$numBad; + unset( $stubs[$primaryId] ); + continue; + } + if ( md5( $text ) !== $stub['hash'] ) { + print "$primaryId: unrecoverable: content hashes do not match\n"; + ++$numBad; + unset( $stubs[$primaryId] ); + continue; + } + + // Find the page_id and rev_id + // The page is probably the same as the page of the secondary row + $pageId = intval( $trackRow->bt_page ); + if ( !$pageId ) { + $revId = $pageId = 0; + } else { + $revId = $this->findTextIdInPage( $pageId, $primaryId ); + if ( !$revId ) { + // Actually an orphan + $pageId = $revId = 0; + } + } + + $newFlags = $stub['legacyEncoding'] ? 'external' : 'external,utf-8'; + + if ( !$dryRun ) { + // Reset the text row to point to the original copy + $this->beginTransaction( $dbw, __METHOD__ ); + $dbw->update( + 'text', + // SET + [ + 'old_flags' => $newFlags, + 'old_text' => $url + ], + // WHERE + [ 'old_id' => $primaryId ], + __METHOD__ + ); + + // Add a blob_tracking row so that the new reference can be recompressed + // without needing to run trackBlobs.php again + $dbw->insert( 'blob_tracking', + [ + 'bt_page' => $pageId, + 'bt_rev_id' => $revId, + 'bt_text_id' => $primaryId, + 'bt_cluster' => $trackRow->bt_cluster, + 'bt_blob_id' => $trackRow->bt_blob_id, + 'bt_cgz_hash' => $stub['hash'], + 'bt_new_url' => null, + 'bt_moved' => 0, + ], + __METHOD__ + ); + $this->commitTransaction( $dbw, __METHOD__ ); + $this->waitForSlaves(); + } + + print "$primaryId: resolved to $url\n"; + ++$numFixed; + } + } + + print "\n"; + print "Fixed: $numFixed\n"; + print "Unrecoverable: $numBad\n"; + print "Good stubs: $numGood\n"; + } + + function waitForSlaves() { + static $iteration = 0; + ++$iteration; + if ( ++$iteration > 50 == 0 ) { + wfWaitForSlaves(); + $iteration = 0; + } + } + + function findTextIdInPage( $pageId, $textId ) { + $ids = $this->getRevTextMap( $pageId ); + if ( !isset( $ids[$textId] ) ) { + return null; + } else { + return $ids[$textId]; + } + } + + function getRevTextMap( $pageId ) { + if ( !isset( $this->mapCache[$pageId] ) ) { + // Limit cache size + while ( $this->mapCacheSize > $this->maxMapCacheSize ) { + $key = key( $this->mapCache ); + $this->mapCacheSize -= count( $this->mapCache[$key] ); + unset( $this->mapCache[$key] ); + } + + $dbr = $this->getDB( DB_REPLICA ); + $map = []; + $res = $dbr->select( 'revision', + [ 'rev_id', 'rev_text_id' ], + [ 'rev_page' => $pageId ], + __METHOD__ + ); + foreach ( $res as $row ) { + $map[$row->rev_text_id] = $row->rev_id; + } + $this->mapCache[$pageId] = $map; + $this->mapCacheSize += count( $map ); + } + + return $this->mapCache[$pageId]; + } + + /** + * This is based on part of HistoryBlobStub::getText(). + * Determine if the text can be retrieved from the row in the normal way. + * @param array $stub + * @param stdClass $secondaryRow + * @return bool + */ + function isUnbrokenStub( $stub, $secondaryRow ) { + $flags = explode( ',', $secondaryRow->old_flags ); + $text = $secondaryRow->old_text; + if ( in_array( 'external', $flags ) ) { + $url = $text; + MediaWiki\suppressWarnings(); + list( /* $proto */, $path ) = explode( '://', $url, 2 ); + MediaWiki\restoreWarnings(); + + if ( $path == "" ) { + return false; + } + $text = ExternalStore::fetchFromURL( $url ); + } + if ( !in_array( 'object', $flags ) ) { + return false; + } + + if ( in_array( 'gzip', $flags ) ) { + $obj = unserialize( gzinflate( $text ) ); + } else { + $obj = unserialize( $text ); + } + + if ( !is_object( $obj ) ) { + // Correct for old double-serialization bug. + $obj = unserialize( $obj ); + } + + if ( !is_object( $obj ) ) { + return false; + } + + $obj->uncompress(); + $text = $obj->getItem( $stub['hash'] ); + + return $text !== false; + } +} + +$maintClass = 'FixT22757'; +require_once RUN_MAINTENANCE_IF_MAIN; diff --git a/maintenance/storage/trackBlobs.php b/maintenance/storage/trackBlobs.php index a2dc376800..4f22843056 100644 --- a/maintenance/storage/trackBlobs.php +++ b/maintenance/storage/trackBlobs.php @@ -69,7 +69,7 @@ class TrackBlobs { echo "Doing integrity check...\n"; $dbr = wfGetDB( DB_REPLICA ); - // Scan for HistoryBlobStub objects in the text table (bug 20757) + // Scan for HistoryBlobStub objects in the text table (T22757) $exists = $dbr->selectField( 'text', 1, 'old_flags LIKE \'%object%\' AND old_flags NOT LIKE \'%external%\' ' . @@ -84,7 +84,7 @@ class TrackBlobs { exit( 1 ); } - // Scan the archive table for HistoryBlobStub objects or external flags (bug 22624) + // Scan the archive table for HistoryBlobStub objects or external flags (T24624) $flags = $dbr->selectField( 'archive', 'ar_flags', 'ar_flags LIKE \'%external%\' OR (' . 'ar_flags LIKE \'%object%\' ' . diff --git a/maintenance/tables.sql b/maintenance/tables.sql index 2b6ea03cc6..44922a4084 100644 --- a/maintenance/tables.sql +++ b/maintenance/tables.sql @@ -160,11 +160,17 @@ CREATE TABLE /*_*/user_groups ( -- with particular permissions. A user will have the combined -- permissions of any group they're explicitly in, plus -- the implicit '*' and 'user' groups. - ug_group varbinary(255) NOT NULL default '' + ug_group varbinary(255) NOT NULL default '', + + -- Time at which the user group membership will expire. Set to + -- NULL for a non-expiring (infinite) membership. + ug_expiry varbinary(14) NULL default NULL, + + PRIMARY KEY (ug_user, ug_group) ) /*$wgDBTableOptions*/; -CREATE UNIQUE INDEX /*i*/ug_user_group ON /*_*/user_groups (ug_user,ug_group); CREATE INDEX /*i*/ug_group ON /*_*/user_groups (ug_group); +CREATE INDEX /*i*/ug_expiry ON /*_*/user_groups (ug_expiry); -- Stores the groups the user has once belonged to. -- The user may still belong to these groups (check user_groups). @@ -588,7 +594,7 @@ CREATE TABLE /*_*/categorylinks ( -- 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 bug 25254. + -- 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 @@ -810,7 +816,7 @@ CREATE TABLE /*_*/ipblocks ( -- Size chosen to allow IPv6 -- FIXME: these fields were originally blank for single-IP blocks, -- but now they are populated. No migration was ever done. They - -- should be fixed to be blank again for such blocks (bug 49504). + -- should be fixed to be blank again for such blocks (T51504). ipb_range_start tinyblob NOT NULL, ipb_range_end tinyblob NOT NULL, diff --git a/maintenance/update.php b/maintenance/update.php index a672e294e7..d96cecd6be 100755 --- a/maintenance/update.php +++ b/maintenance/update.php @@ -112,7 +112,7 @@ class UpdateMediaWiki extends Maintenance { } $lang = Language::factory( 'en' ); - // Set global language to ensure localised errors are in English (bug 20633) + // Set global language to ensure localised errors are in English (T22633) RequestContext::getMain()->setLanguage( $lang ); $wgLang = $lang; // BackCompat @@ -203,7 +203,7 @@ class UpdateMediaWiki extends Maintenance { # Don't try to access the database # This needs to be disabled early since extensions will try to use the l10n - # cache from $wgExtensionFunctions (bug 20471) + # cache from $wgExtensionFunctions (T22471) $wgLocalisationCacheConf = [ 'class' => 'LocalisationCache', 'storeClass' => 'LCStoreNull', diff --git a/maintenance/userDupes.inc b/maintenance/userDupes.inc index 9893342dcf..69c926584e 100644 --- a/maintenance/userDupes.inc +++ b/maintenance/userDupes.inc @@ -195,7 +195,7 @@ class UserDupes { "SELECT user_name,COUNT(*) AS n FROM $user GROUP BY user_name - HAVING n > 1", __METHOD__ ); + HAVING n > 1", __METHOD__ ); $list = []; foreach ( $result as $row ) { diff --git a/maintenance/wrapOldPasswords.php b/maintenance/wrapOldPasswords.php index 0a859c0ef4..85fa7805e6 100644 --- a/maintenance/wrapOldPasswords.php +++ b/maintenance/wrapOldPasswords.php @@ -1,4 +1,7 @@ <?php + +use MediaWiki\MediaWikiServices; + /** * Maintenance script to wrap all old-style passwords in a layered type * @@ -71,6 +74,7 @@ class WrapOldPasswords extends Maintenance { $typeCond = 'user_password' . $dbw->buildLike( ":$firstType:", $dbw->anyString() ); $minUserId = 0; + $lbFactory = MediaWikiServices::getInstance()->getDBLoadBalancerFactory(); do { $this->beginTransaction( $dbw, __METHOD__ ); @@ -113,7 +117,7 @@ class WrapOldPasswords extends Maintenance { } $this->commitTransaction( $dbw, __METHOD__ ); - LBFactory::waitForReplication(); + $lbFactory->waitForReplication(); // Clear memcached so old passwords are wiped out foreach ( $updateUsers as $user ) { diff --git a/mw-config/config-cc.css b/mw-config/config-cc.css index f9c61178aa..3b2798fc1e 100644 --- a/mw-config/config-cc.css +++ b/mw-config/config-cc.css @@ -29,7 +29,11 @@ body { margin: 0 0 10px 10px; } -td, h3, p, h1, pre { +h1, +h3, +p, +pre, +td { margin: 0 20px 20px 20px; font-size: 11px; line-height: 140%; diff --git a/mw-config/config.css b/mw-config/config.css index 3aeb1edc1a..ea5835d487 100644 --- a/mw-config/config.css +++ b/mw-config/config.css @@ -15,13 +15,14 @@ .config-block-label { display: block; - margin-bottom: .2em; + margin-bottom: 0.2em; } -.config-block-label label, .config-label { +.config-block-label label, +.config-label { font-weight: bold; - padding-right: .5em; - padding-top: .2em; + padding-right: 0.5em; + padding-top: 0.2em; } .config-block-elements { @@ -131,7 +132,7 @@ .btn-install { font-weight: bold; font-size: 110%; - padding: .2em .3em; + padding: 0.2em 0.3em; } .success-message { @@ -151,8 +152,8 @@ } .config-plainlink a { - background: none !important; - padding: 0 !important; + background: none !important; /* stylelint-disable-line declaration-no-important */ + padding: 0 !important; /* stylelint-disable-line declaration-no-important */ } .config-download-link { @@ -184,7 +185,7 @@ background-position: left center; background-repeat: no-repeat; cursor: pointer; - font-size: .8em; + font-size: 0.8em; text-decoration: underline; color: #0645ad; } diff --git a/package.json b/package.json index 983da09389..b868295afd 100644 --- a/package.json +++ b/package.json @@ -15,12 +15,12 @@ "grunt-eslint": "19.0.0", "grunt-jsonlint": "1.1.0", "grunt-karma": "2.0.0", - "grunt-stylelint": "0.6.0", + "grunt-stylelint": "0.7.0", "karma": "1.1.0", "karma-chrome-launcher": "2.0.0", "karma-firefox-launcher": "1.0.0", "karma-qunit": "1.0.0", "qunitjs": "1.22.0", - "stylelint-config-wikimedia": "0.3.0" + "stylelint-config-wikimedia": "0.4.1" } } diff --git a/resources/Resources.php b/resources/Resources.php index 7c00feb052..7a2ba6937f 100644 --- a/resources/Resources.php +++ b/resources/Resources.php @@ -251,7 +251,6 @@ return [ 'scripts' => 'resources/src/jquery/jquery.highlightText.js', 'dependencies' => [ 'mediawiki.RegExp', - 'dom-level2-shim', ], 'targets' => [ 'desktop', 'mobile' ], ], @@ -345,7 +344,6 @@ return [ 'styles' => 'resources/src/jquery/jquery.tablesorter.less', 'messages' => [ 'sort-descending', 'sort-ascending' ], 'dependencies' => [ - 'dom-level2-shim', 'mediawiki.RegExp', 'mediawiki.language.months', ], @@ -736,7 +734,7 @@ return [ // Deprecated since MediaWiki 1.29.0 'json' => [ - 'deprecated' => 'Use of the "json" MediaWiki module is deprecated since MediaWiki 1.29.0', + 'deprecated' => 'Use of the "json" module is deprecated since MediaWiki 1.29.0', 'targets' => [ 'desktop', 'mobile' ], ], @@ -744,10 +742,12 @@ return [ 'moment' => [ 'scripts' => [ - 'resources/lib/moment/moment.js', + // HACK: For some reason if you don't define window.moment first, loading moment fatals 'resources/src/moment-global.js', + 'resources/lib/moment/moment.js', ], 'languageScripts' => [ + 'aeb-arab' => 'resources/lib/moment/locale/ar-tn.js', 'af' => 'resources/lib/moment/locale/af.js', 'ar' => 'resources/lib/moment/locale/ar.js', 'ar-ma' => 'resources/lib/moment/locale/ar-ma.js', @@ -766,6 +766,7 @@ return [ 'da' => 'resources/lib/moment/locale/da.js', 'de' => 'resources/lib/moment/locale/de.js', 'de-at' => 'resources/lib/moment/locale/de-at.js', + 'dv' => 'resources/lib/moment/locale/dv.js', 'el' => 'resources/lib/moment/locale/el.js', 'en' => 'resources/src/moment-dmy.js', 'en-au' => 'resources/lib/moment/locale/en-au.js', @@ -780,6 +781,8 @@ return [ 'fo' => 'resources/lib/moment/locale/fo.js', 'fr-ca' => 'resources/lib/moment/locale/fr-ca.js', 'fr' => 'resources/lib/moment/locale/fr.js', + 'fy' => 'resources/lib/moment/locale/fy.js', + 'gd' => 'resources/lib/moment/locale/gd.js', 'gl' => 'resources/lib/moment/locale/gl.js', 'he' => 'resources/lib/moment/locale/he.js', 'hi' => 'resources/lib/moment/locale/hi.js', @@ -790,31 +793,43 @@ return [ 'is' => 'resources/lib/moment/locale/is.js', 'it' => 'resources/lib/moment/locale/it.js', 'ja' => 'resources/lib/moment/locale/ja.js', + 'jv' => 'resources/lib/moment/locale/jv.js', 'ka' => 'resources/lib/moment/locale/ka.js', + 'kk-cyrl' => 'resources/lib/moment/locale/kk.js', 'ko' => 'resources/lib/moment/locale/ko.js', + 'ky' => 'resources/lib/moment/locale/ky.js', + 'lo' => 'resources/lib/moment/locale/lo.js', 'lt' => 'resources/lib/moment/locale/lt.js', 'lv' => 'resources/lib/moment/locale/lv.js', + 'mi' => 'resources/lib/moment/locale/mi.js', 'mk' => 'resources/lib/moment/locale/mk.js', 'ml' => 'resources/lib/moment/locale/ml.js', 'mr' => 'resources/lib/moment/locale/mr.js', 'ms-my' => 'resources/lib/moment/locale/ms-my.js', + 'ms' => 'resources/lib/moment/locale/ms.js', 'my' => 'resources/lib/moment/locale/my.js', 'nb' => 'resources/lib/moment/locale/nb.js', 'ne' => 'resources/lib/moment/locale/ne.js', 'nl' => 'resources/lib/moment/locale/nl.js', 'nn' => 'resources/lib/moment/locale/nn.js', + 'pa' => 'resources/lib/moment/locale/pa-in.js', 'pl' => 'resources/lib/moment/locale/pl.js', 'pt-br' => 'resources/lib/moment/locale/pt-br.js', 'pt' => 'resources/lib/moment/locale/pt.js', 'ro' => 'resources/lib/moment/locale/ro.js', 'ru' => 'resources/lib/moment/locale/ru.js', + 'se' => 'resources/lib/moment/locale/se.js', + 'si' => 'resources/lib/moment/locale/si.js', 'sk' => 'resources/lib/moment/locale/sk.js', 'sl' => 'resources/lib/moment/locale/sl.js', 'sq' => 'resources/lib/moment/locale/sq.js', 'sr-ec' => 'resources/lib/moment/locale/sr-cyrl.js', 'sr-el' => 'resources/lib/moment/locale/sr.js', + 'ss' => 'resources/lib/moment/locale/ss.js', 'sv' => 'resources/lib/moment/locale/sv.js', + 'sw' => 'resources/lib/moment/locale/sw.js', 'ta' => 'resources/lib/moment/locale/ta.js', + 'te' => 'resources/lib/moment/locale/te.js', 'th' => 'resources/lib/moment/locale/th.js', 'tl-ph' => 'resources/lib/moment/locale/tl-ph.js', 'tr' => 'resources/lib/moment/locale/tr.js', @@ -824,6 +839,7 @@ return [ 'uz' => 'resources/lib/moment/locale/uz.js', 'vi' => 'resources/lib/moment/locale/vi.js', 'zh-cn' => 'resources/lib/moment/locale/zh-cn.js', + 'zh-hk' => 'resources/lib/moment/locale/zh-hk.js', 'zh-tw' => 'resources/lib/moment/locale/zh-tw.js', 'zh-hans' => 'resources/lib/moment/locale/zh-cn.js', 'zh-hant' => 'resources/lib/moment/locale/zh-tw.js', @@ -919,7 +935,6 @@ return [ 'mediawiki.api.upload' => [ 'scripts' => 'resources/src/mediawiki/api/upload.js', 'dependencies' => [ - 'dom-level2-shim', 'mediawiki.api', 'mediawiki.api.edit', ], @@ -1202,7 +1217,6 @@ return [ 'mediawiki.Upload' => [ 'scripts' => 'resources/src/mediawiki/mediawiki.Upload.js', 'dependencies' => [ - 'dom-level2-shim', 'mediawiki.api.upload', ], ], @@ -1276,59 +1290,18 @@ return [ 'upload-form-label-infoform-description-tooltip', 'upload-form-label-usage-title', 'upload-form-label-usage-filename', - 'api-error-unknownerror', + 'action-upload', + 'apierror-mustbeloggedin', + 'badaccess-groups', + 'apierror-unknownerror', 'api-error-unknown-warning', - 'api-error-autoblocked', - 'api-error-blocked', - 'api-error-badaccess-groups', - 'api-error-badtoken', - 'api-error-copyuploaddisabled', - 'api-error-duplicate', - 'api-error-duplicate-archive', - 'api-error-empty-file', - 'api-error-emptypage', - 'api-error-fetchfileerror', - 'api-error-fileexists-forbidden', - 'api-error-fileexists-shared-forbidden', - 'api-error-file-too-large', - 'api-error-filename-tooshort', - 'api-error-filetype-banned', - 'api-error-filetype-banned-type', - 'api-error-filetype-missing', - 'api-error-hookaborted', - 'api-error-http', - 'api-error-illegal-filename', - 'api-error-internal-error', - 'api-error-invalid-file-key', - 'api-error-missingparam', - 'api-error-missingresult', - 'api-error-mustbeloggedin', - 'api-error-mustbeposted', - 'api-error-noimageinfo', - 'api-error-nomodule', - 'api-error-ok-but-empty', - 'api-error-overwrite', - 'api-error-stashfailed', - 'api-error-publishfailed', - 'api-error-stasherror', - 'api-error-stashedfilenotfound', - 'api-error-stashpathinvalid', - 'api-error-stashfilestorage', - 'api-error-stashzerolength', - 'api-error-stashnotloggedin', - 'api-error-stashwrongowner', - 'api-error-stashnosuchfilekey', - 'api-error-timeout', - 'api-error-unclassified', - 'api-error-unknown-code', - 'api-error-unknown-error', - 'api-error-uploaddisabled', - 'api-error-verification-error', - 'api-error-was-deleted', 'fileexists', 'filepageexists', + 'file-exists-duplicate', + 'file-deleted-duplicate', 'filename-bad-prefix', 'filename-thumb-name', + 'filewasdeleted', 'badfilename', 'protectedpagetext', ], @@ -1387,21 +1360,15 @@ return [ 'mediawiki.user' => [ 'scripts' => 'resources/src/mediawiki/mediawiki.user.js', 'dependencies' => [ - 'mediawiki.cookie', 'mediawiki.api', 'mediawiki.api.user', + 'mediawiki.cookie', + 'mediawiki.storage', 'user.options', 'user.tokens', ], 'targets' => [ 'desktop', 'mobile' ], ], - 'mediawiki.reasonSuggest' => [ - 'scripts' => 'resources/src/mediawiki/mediawiki.reasonSuggest.js', - 'dependencies' => [ - 'jquery.suggestions', - 'mediawiki.api.messages' - ] - ], 'mediawiki.userSuggest' => [ 'scripts' => 'resources/src/mediawiki/mediawiki.userSuggest.js', 'dependencies' => [ @@ -1467,7 +1434,7 @@ return [ 'styles' => 'resources/src/mediawiki.action/mediawiki.action.edit.collapsibleFooter.css', 'dependencies' => [ 'jquery.makeCollapsible', - 'mediawiki.cookie', + 'mediawiki.storage', 'mediawiki.icon', ], ], @@ -1642,7 +1609,6 @@ return [ 'mediawiki.util', 'mediawiki.language', 'user.options', - 'dom-level2-shim', ], 'targets' => [ 'desktop', 'mobile' ], ], @@ -1781,49 +1747,78 @@ return [ /* MediaWiki Special pages */ - 'mediawiki.rcfilters.filters' => [ + 'mediawiki.rcfilters.filters.base.styles' => [ + 'styles' => [ + 'resources/src/mediawiki.rcfilters/styles/mw.rcfilters.less', + ], + ], + 'mediawiki.rcfilters.filters.dm' => [ 'scripts' => [ 'resources/src/mediawiki.rcfilters/mw.rcfilters.js', 'resources/src/mediawiki.rcfilters/dm/mw.rcfilters.dm.FilterItem.js', + 'resources/src/mediawiki.rcfilters/dm/mw.rcfilters.dm.FilterGroup.js', 'resources/src/mediawiki.rcfilters/dm/mw.rcfilters.dm.FiltersViewModel.js', + 'resources/src/mediawiki.rcfilters/dm/mw.rcfilters.dm.ChangesListViewModel.js', + 'resources/src/mediawiki.rcfilters/mw.rcfilters.Controller.js', + ], + 'dependencies' => [ + 'oojs', + 'mediawiki.Uri', + ], + ], + 'mediawiki.rcfilters.filters.ui' => [ + 'scripts' => [ + 'resources/src/mediawiki.rcfilters/ui/mw.rcfilters.ui.CheckboxInputWidget.js', 'resources/src/mediawiki.rcfilters/ui/mw.rcfilters.ui.FiltersListWidget.js', 'resources/src/mediawiki.rcfilters/ui/mw.rcfilters.ui.FilterGroupWidget.js', 'resources/src/mediawiki.rcfilters/ui/mw.rcfilters.ui.FilterItemWidget.js', + 'resources/src/mediawiki.rcfilters/ui/mw.rcfilters.ui.CapsuleItemWidget.js', 'resources/src/mediawiki.rcfilters/ui/mw.rcfilters.ui.FilterCapsuleMultiselectWidget.js', 'resources/src/mediawiki.rcfilters/ui/mw.rcfilters.ui.FilterWrapperWidget.js', - 'resources/src/mediawiki.rcfilters/mw.rcfilters.Controller.js', + 'resources/src/mediawiki.rcfilters/ui/mw.rcfilters.ui.ChangesListWrapperWidget.js', + 'resources/src/mediawiki.rcfilters/ui/mw.rcfilters.ui.FormWrapperWidget.js', + 'resources/src/mediawiki.rcfilters/ui/mw.rcfilters.ui.FilterItemHighlightButton.js', + 'resources/src/mediawiki.rcfilters/ui/mw.rcfilters.ui.HighlightColorPickerWidget.js', + 'resources/src/mediawiki.rcfilters/mw.rcfilters.HighlightColors.js', 'resources/src/mediawiki.rcfilters/mw.rcfilters.init.js', ], 'styles' => [ - 'resources/src/mediawiki.rcfilters/styles/mw.rcfilters.less', + 'resources/src/mediawiki.rcfilters/styles/mw.rcfilters.mixins.less', + 'resources/src/mediawiki.rcfilters/styles/mw.rcfilters.variables.less', + 'resources/src/mediawiki.rcfilters/styles/mw.rcfilters.ui.less', + 'resources/src/mediawiki.rcfilters/styles/mw.rcfilters.ui.Overlay.less', 'resources/src/mediawiki.rcfilters/styles/mw.rcfilters.ui.FilterItemWidget.less', + 'resources/src/mediawiki.rcfilters/styles/mw.rcfilters.ui.CapsuleItemWidget.less', 'resources/src/mediawiki.rcfilters/styles/mw.rcfilters.ui.FilterGroupWidget.less', 'resources/src/mediawiki.rcfilters/styles/mw.rcfilters.ui.FiltersListWidget.less', 'resources/src/mediawiki.rcfilters/styles/mw.rcfilters.ui.FilterWrapperWidget.less', 'resources/src/mediawiki.rcfilters/styles/mw.rcfilters.ui.FilterCapsuleMultiselectWidget.less', + 'resources/src/mediawiki.rcfilters/styles/mw.rcfilters.ui.ChangesListWrapperWidget.less', + 'resources/src/mediawiki.rcfilters/styles/mw.rcfilters.ui.HighlightColorPickerWidget.less', + 'resources/src/mediawiki.rcfilters/styles/mw.rcfilters.ui.FilterItemHighlightButton.less', ], 'messages' => [ 'rcfilters-activefilters', + 'rcfilters-restore-default-filters', + 'rcfilters-clear-all-filters', 'rcfilters-search-placeholder', 'rcfilters-invalid-filter', + 'rcfilters-empty-filter', 'rcfilters-filterlist-title', + 'rcfilters-filterlist-feedbacklink', 'rcfilters-filterlist-noresults', - 'rcfilters-filtergroup-authorship', - 'rcfilters-filter-editsbyself-label', - 'rcfilters-filter-editsbyself-description', - 'rcfilters-filter-editsbyother-label', - 'rcfilters-filter-editsbyother-description', - 'rcfilters-filtergroup-userExpLevel', - 'rcfilters-filter-userExpLevel-newcomer-label', - 'rcfilters-filter-userExpLevel-newcomer-description', - 'rcfilters-filter-userExpLevel-learner-label', - 'rcfilters-filter-userExpLevel-learner-description', - 'rcfilters-filter-userExpLevel-experienced-label', - 'rcfilters-filter-userExpLevel-experienced-description', + 'rcfilters-highlightbutton-title', + 'rcfilters-highlightmenu-title', + 'rcfilters-highlightmenu-help', + 'recentchanges-noresult', ], 'dependencies' => [ 'oojs-ui', - 'mediawiki.Uri', + 'mediawiki.rcfilters.filters.dm', + 'oojs-ui.styles.icons-moderation', + 'oojs-ui.styles.icons-editing-core', + 'oojs-ui.styles.icons-editing-styling', + 'oojs-ui.styles.icons-interactions', ], ], 'mediawiki.special' => [ @@ -1877,8 +1872,11 @@ return [ 'apisandbox-sending-request', 'apisandbox-loading-results', 'apisandbox-results-error', - 'apisandbox-request-params-json', + 'apisandbox-request-selectformat-label', + 'apisandbox-request-format-url-label', 'apisandbox-request-url-label', + 'apisandbox-request-format-json-label', + 'apisandbox-request-json-label', 'apisandbox-request-time', 'apisandbox-results-fixtoken', 'apisandbox-results-fixtoken-fail', @@ -1897,7 +1895,10 @@ return [ 'mediawiki.special.block' => [ 'scripts' => 'resources/src/mediawiki.special/mediawiki.special.block.js', 'styles' => 'resources/src/mediawiki.special/mediawiki.special.block.css', - 'dependencies' => 'mediawiki.util', + 'dependencies' => [ + 'mediawiki.util', + 'mediawiki.htmlform', + ], ], 'mediawiki.special.changeslist' => [ 'styles' => 'resources/src/mediawiki.special/mediawiki.special.changeslist.css', @@ -1974,6 +1975,7 @@ return [ ], ], 'mediawiki.special.userrights' => [ + 'styles' => 'resources/src/mediawiki.special/mediawiki.special.userrights.css', 'scripts' => 'resources/src/mediawiki.special/mediawiki.special.userrights.js', 'dependencies' => [ 'mediawiki.notification.convertmessagebox', @@ -2000,6 +2002,23 @@ return [ 'styles' => 'resources/src/mediawiki.special/mediawiki.special.search.styles.css', 'targets' => [ 'desktop', 'mobile' ], ], + 'mediawiki.special.search.interwikiwidget.styles' => [ + 'styles' => 'resources/src/mediawiki.special/' + . 'mediawiki.special.search.interwikiwidget.styles.less', + 'targets' => [ 'desktop', 'mobile' ] + ], + 'mediawiki.special.search.commonsInterwikiWidget' => [ + 'scripts' => 'resources/src/mediawiki.special/mediawiki.special.search.commonsInterwikiWidget.js', + 'dependencies' => [ + 'mediawiki.Uri', + 'mediawiki.jqueryMsg' + ], + 'targets' => [ 'desktop', 'mobile' ], + 'messages' => [ + 'search-interwiki-more', + 'searchprofile-images' + ], + ], 'mediawiki.special.undelete' => [ 'scripts' => 'resources/src/mediawiki.special/mediawiki.special.undelete.js', ], @@ -2384,6 +2403,15 @@ return [ ], 'targets' => [ 'desktop', 'mobile' ], ], + 'mediawiki.widgets.UsersMultiselectWidget' => [ + 'scripts' => [ + 'resources/src/mediawiki.widgets/mw.widgets.UsersMultiselectWidget.js', + ], + 'dependencies' => [ + 'oojs-ui-widgets', + ], + 'targets' => [ 'desktop', 'mobile' ], + ], 'mediawiki.widgets.SearchInputWidget' => [ 'scripts' => [ 'resources/src/mediawiki.widgets/mw.widgets.SearchInputWidget.js', @@ -2426,11 +2454,10 @@ return [ ], /* dom-level2-shim */ - // IE 8 + // Deprecated since MediaWiki 1.29.0 'dom-level2-shim' => [ - 'scripts' => 'resources/src/polyfill-nodeTypes.js', + 'deprecated' => 'Use of the "dom-level2-shim" module is deprecated since MediaWiki 1.29.0', 'targets' => [ 'desktop', 'mobile' ], - 'skipFunction' => 'resources/src/dom-level2-skip.js', ], /* OOjs */ diff --git a/resources/lib/jquery.ui/jquery.ui.draggable.js b/resources/lib/jquery.ui/jquery.ui.draggable.js index 37680224cf..723dbd4915 100644 --- a/resources/lib/jquery.ui/jquery.ui.draggable.js +++ b/resources/lib/jquery.ui/jquery.ui.draggable.js @@ -133,9 +133,13 @@ $.widget("ui.draggable", $.ui.mouse, { }); //Generate the original position - this.originalPosition = this.position = this._generatePosition(event); this.originalPageX = event.pageX; this.originalPageY = event.pageY; + this.originalPosition = this.position = this._generatePosition(event); + // These lines where moved up to fix an issue with with draggable, revert and grid + // See: https://bugs.jqueryui.com/ticket/4696 and https://gerrit.wikimedia.org/r/#/c/333224 + // this.originalPageX = event.pageX; + // this.originalPageY = event.pageY; //Adjust the mouse offset relative to the helper if 'cursorAt' is supplied (o.cursorAt && this._adjustOffsetFromHelper(o.cursorAt)); diff --git a/resources/lib/moment/LICENSE b/resources/lib/moment/LICENSE index bd172467a6..9ee537448a 100644 --- a/resources/lib/moment/LICENSE +++ b/resources/lib/moment/LICENSE @@ -1,4 +1,4 @@ -Copyright (c) 2011-2014 Tim Wood, Iskren Chernev, Moment.js contributors +Copyright (c) 2011-2016 Tim Wood, Iskren Chernev, Moment.js contributors Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation diff --git a/resources/lib/moment/locale/af.js b/resources/lib/moment/locale/af.js index 55a41bde12..d1a0ddae91 100644 --- a/resources/lib/moment/locale/af.js +++ b/resources/lib/moment/locale/af.js @@ -1,24 +1,25 @@ -// moment.js locale configuration -// locale : afrikaans (af) -// author : Werner Mollentze : https://github.com/wernerm +//! moment.js locale configuration +//! locale : Afrikaans [af] +//! author : Werner Mollentze : https://github.com/wernerm -(function (factory) { - // Comment out broken wrapper, see T145382 - /*if (typeof define === 'function' && define.amd) { - define(['moment'], factory); // AMD - } else if (typeof exports === 'object') { - module.exports = factory(require('../moment')); // Node - } else { - factory((typeof global !== 'undefined' ? global : this).moment); // node or other global - }*/ - factory(this.moment); -}(function (moment) { - return moment.defineLocale('af', { +;(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' + && typeof require === 'function' ? factory(require('../moment')) : + typeof define === 'function' && define.amd ? define(['../moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + + + var af = moment.defineLocale('af', { months : 'Januarie_Februarie_Maart_April_Mei_Junie_Julie_Augustus_September_Oktober_November_Desember'.split('_'), - monthsShort : 'Jan_Feb_Mar_Apr_Mei_Jun_Jul_Aug_Sep_Okt_Nov_Des'.split('_'), + monthsShort : 'Jan_Feb_Mrt_Apr_Mei_Jun_Jul_Aug_Sep_Okt_Nov_Des'.split('_'), weekdays : 'Sondag_Maandag_Dinsdag_Woensdag_Donderdag_Vrydag_Saterdag'.split('_'), weekdaysShort : 'Son_Maa_Din_Woe_Don_Vry_Sat'.split('_'), weekdaysMin : 'So_Ma_Di_Wo_Do_Vr_Sa'.split('_'), + meridiemParse: /vm|nm/i, + isPM : function (input) { + return /^nm$/i.test(input); + }, meridiem : function (hours, minutes, isLower) { if (hours < 12) { return isLower ? 'vm' : 'VM'; @@ -28,11 +29,11 @@ }, longDateFormat : { LT : 'HH:mm', - LTS : 'LT:ss', + LTS : 'HH:mm:ss', L : 'DD/MM/YYYY', LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY LT', - LLLL : 'dddd, D MMMM YYYY LT' + LLL : 'D MMMM YYYY HH:mm', + LLLL : 'dddd, D MMMM YYYY HH:mm' }, calendar : { sameDay : '[Vandag om] LT', @@ -66,4 +67,7 @@ doy : 4 // Die week wat die 4de Januarie bevat is die eerste week van die jaar. } }); -})); + + return af; + +})); \ No newline at end of file diff --git a/resources/lib/moment/locale/ar-ma.js b/resources/lib/moment/locale/ar-ma.js index 871e41c3e9..b12a7b1679 100644 --- a/resources/lib/moment/locale/ar-ma.js +++ b/resources/lib/moment/locale/ar-ma.js @@ -1,32 +1,30 @@ -// moment.js locale configuration -// locale : Moroccan Arabic (ar-ma) -// author : ElFadili Yassine : https://github.com/ElFadiliY -// author : Abdel Said : https://github.com/abdelsaid +//! moment.js locale configuration +//! locale : Arabic (Morocco) [ar-ma] +//! author : ElFadili Yassine : https://github.com/ElFadiliY +//! author : Abdel Said : https://github.com/abdelsaid -(function (factory) { - // Comment out broken wrapper, see T145382 - /*if (typeof define === 'function' && define.amd) { - define(['moment'], factory); // AMD - } else if (typeof exports === 'object') { - module.exports = factory(require('../moment')); // Node - } else { - factory((typeof global !== 'undefined' ? global : this).moment); // node or other global - }*/ - factory(this.moment); -}(function (moment) { - return moment.defineLocale('ar-ma', { +;(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' + && typeof require === 'function' ? factory(require('../moment')) : + typeof define === 'function' && define.amd ? define(['../moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + + + var ar_ma = moment.defineLocale('ar-ma', { months : 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split('_'), monthsShort : 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split('_'), weekdays : 'الأحد_الإتنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'), weekdaysShort : 'احد_اتنين_ثلاثاء_اربعاء_خميس_جمعة_سبت'.split('_'), weekdaysMin : 'Ø­_ن_Ø«_ر_Ø®_ج_س'.split('_'), + weekdaysParseExact : true, longDateFormat : { LT : 'HH:mm', - LTS : 'LT:ss', + LTS : 'HH:mm:ss', L : 'DD/MM/YYYY', LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY LT', - LLLL : 'dddd D MMMM YYYY LT' + LLL : 'D MMMM YYYY HH:mm', + LLLL : 'dddd D MMMM YYYY HH:mm' }, calendar : { sameDay: '[اليوم على الساعة] LT', @@ -56,4 +54,7 @@ doy : 12 // The week that contains Jan 1st is the first week of the year. } }); -})); + + return ar_ma; + +})); \ No newline at end of file diff --git a/resources/lib/moment/locale/ar-sa.js b/resources/lib/moment/locale/ar-sa.js index 11350cb673..430a184c18 100644 --- a/resources/lib/moment/locale/ar-sa.js +++ b/resources/lib/moment/locale/ar-sa.js @@ -1,18 +1,15 @@ -// moment.js locale configuration -// locale : Arabic Saudi Arabia (ar-sa) -// author : Suhail Alkowaileet : https://github.com/xsoh +//! moment.js locale configuration +//! locale : Arabic (Saudi Arabia) [ar-sa] +//! author : Suhail Alkowaileet : https://github.com/xsoh + +;(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' + && typeof require === 'function' ? factory(require('../moment')) : + typeof define === 'function' && define.amd ? define(['../moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + -(function (factory) { - // Comment out broken wrapper, see T145382 - /*if (typeof define === 'function' && define.amd) { - define(['moment'], factory); // AMD - } else if (typeof exports === 'object') { - module.exports = factory(require('../moment')); // Node - } else { - factory((typeof global !== 'undefined' ? global : this).moment); // node or other global - }*/ - factory(this.moment); -}(function (moment) { var symbolMap = { '1': 'Ù¡', '2': 'Ù¢', @@ -37,19 +34,24 @@ 'Ù ': '0' }; - return moment.defineLocale('ar-sa', { + var ar_sa = moment.defineLocale('ar-sa', { months : 'يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split('_'), monthsShort : 'يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split('_'), weekdays : 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'), weekdaysShort : 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'), weekdaysMin : 'Ø­_ن_Ø«_ر_Ø®_ج_س'.split('_'), + weekdaysParseExact : true, longDateFormat : { LT : 'HH:mm', LTS : 'HH:mm:ss', L : 'DD/MM/YYYY', LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY LT', - LLLL : 'dddd D MMMM YYYY LT' + LLL : 'D MMMM YYYY HH:mm', + LLLL : 'dddd D MMMM YYYY HH:mm' + }, + meridiemParse: /ص|م/, + isPM : function (input) { + return 'م' === input; }, meridiem : function (hour, minute, isLower) { if (hour < 12) { @@ -96,4 +98,7 @@ doy : 12 // The week that contains Jan 1st is the first week of the year. } }); -})); + + return ar_sa; + +})); \ No newline at end of file diff --git a/resources/lib/moment/locale/ar-tn.js b/resources/lib/moment/locale/ar-tn.js new file mode 100644 index 0000000000..dfabae3efb --- /dev/null +++ b/resources/lib/moment/locale/ar-tn.js @@ -0,0 +1,59 @@ +//! moment.js locale configuration +//! locale : Arabic (Tunisia) [ar-tn] +//! author : Nader Toukabri : https://github.com/naderio + +;(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' + && typeof require === 'function' ? factory(require('../moment')) : + typeof define === 'function' && define.amd ? define(['../moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + + + var ar_tn = moment.defineLocale('ar-tn', { + months: 'جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split('_'), + monthsShort: 'جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split('_'), + weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'), + weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'), + weekdaysMin: 'Ø­_ن_Ø«_ر_Ø®_ج_س'.split('_'), + weekdaysParseExact : true, + longDateFormat: { + LT: 'HH:mm', + LTS: 'HH:mm:ss', + L: 'DD/MM/YYYY', + LL: 'D MMMM YYYY', + LLL: 'D MMMM YYYY HH:mm', + LLLL: 'dddd D MMMM YYYY HH:mm' + }, + calendar: { + sameDay: '[اليوم على الساعة] LT', + nextDay: '[غدا على الساعة] LT', + nextWeek: 'dddd [على الساعة] LT', + lastDay: '[أمس على الساعة] LT', + lastWeek: 'dddd [على الساعة] LT', + sameElse: 'L' + }, + relativeTime: { + future: 'في %s', + past: 'منذ %s', + s: 'ثوان', + m: 'دقيقة', + mm: '%d دقائق', + h: 'ساعة', + hh: '%d ساعات', + d: 'يوم', + dd: '%d أيام', + M: 'شهر', + MM: '%d أشهر', + y: 'سنة', + yy: '%d سنوات' + }, + week: { + dow: 1, // Monday is the first day of the week. + doy: 4 // The week that contains Jan 4th is the first week of the year. + } + }); + + return ar_tn; + +})); \ No newline at end of file diff --git a/resources/lib/moment/locale/ar.js b/resources/lib/moment/locale/ar.js index cbec753848..8bd2b1bef4 100644 --- a/resources/lib/moment/locale/ar.js +++ b/resources/lib/moment/locale/ar.js @@ -1,20 +1,17 @@ -// moment.js locale configuration -// Locale: Arabic (ar) -// Author: Abdel Said: https://github.com/abdelsaid -// Changes in months, weekdays: Ahmed Elkhatib -// Native plural forms: forabi https://github.com/forabi +//! moment.js locale configuration +//! locale : Arabic [ar] +//! author : Abdel Said: https://github.com/abdelsaid +//! author : Ahmed Elkhatib +//! author : forabi https://github.com/forabi + +;(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' + && typeof require === 'function' ? factory(require('../moment')) : + typeof define === 'function' && define.amd ? define(['../moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + -(function (factory) { - // Comment out broken wrapper, see T145382 - /*if (typeof define === 'function' && define.amd) { - define(['moment'], factory); // AMD - } else if (typeof exports === 'object') { - module.exports = factory(require('../moment')); // Node - } else { - factory((typeof global !== 'undefined' ? global : this).moment); // node or other global - }*/ - factory(this.moment); -}(function (moment) { var symbolMap = { '1': 'Ù¡', '2': 'Ù¢', @@ -70,19 +67,24 @@ 'كانون الأول ديسمبر' ]; - return moment.defineLocale('ar', { + var ar = moment.defineLocale('ar', { months : months, monthsShort : months, weekdays : 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'), weekdaysShort : 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'), weekdaysMin : 'Ø­_ن_Ø«_ر_Ø®_ج_س'.split('_'), + weekdaysParseExact : true, longDateFormat : { LT : 'HH:mm', LTS : 'HH:mm:ss', - L : 'DD/MM/YYYY', + L : 'D/\u200FM/\u200FYYYY', LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY LT', - LLLL : 'dddd D MMMM YYYY LT' + LLL : 'D MMMM YYYY HH:mm', + LLLL : 'dddd D MMMM YYYY HH:mm' + }, + meridiemParse: /ص|م/, + isPM : function (input) { + return 'م' === input; }, meridiem : function (hour, minute, isLower) { if (hour < 12) { @@ -115,7 +117,7 @@ yy : pluralize('y') }, preparse: function (string) { - return string.replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) { + return string.replace(/\u200f/g, '').replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) { return numberMap[match]; }).replace(/،/g, ','); }, @@ -129,4 +131,7 @@ doy : 12 // The week that contains Jan 1st is the first week of the year. } }); -})); + + return ar; + +})); \ No newline at end of file diff --git a/resources/lib/moment/locale/az.js b/resources/lib/moment/locale/az.js index 649d9f2667..5400ed47f2 100644 --- a/resources/lib/moment/locale/az.js +++ b/resources/lib/moment/locale/az.js @@ -1,56 +1,50 @@ -// moment.js locale configuration -// locale : azerbaijani (az) -// author : topchiyev : https://github.com/topchiyev +//! moment.js locale configuration +//! locale : Azerbaijani [az] +//! author : topchiyev : https://github.com/topchiyev + +;(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' + && typeof require === 'function' ? factory(require('../moment')) : + typeof define === 'function' && define.amd ? define(['../moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + -(function (factory) { - // Comment out broken wrapper, see T145382 - /*if (typeof define === 'function' && define.amd) { - define(['moment'], factory); // AMD - } else if (typeof exports === 'object') { - module.exports = factory(require('../moment')); // Node - } else { - factory((typeof global !== 'undefined' ? global : this).moment); // node or other global - }*/ - factory(this.moment); -}(function (moment) { var suffixes = { 1: '-inci', 5: '-inci', 8: '-inci', 70: '-inci', 80: '-inci', - 2: '-nci', 7: '-nci', 20: '-nci', 50: '-nci', - 3: '-üncü', 4: '-üncü', 100: '-üncü', - 6: '-ncı', - 9: '-uncu', 10: '-uncu', 30: '-uncu', - 60: '-ıncı', 90: '-ıncı' }; - return moment.defineLocale('az', { + + var az = moment.defineLocale('az', { months : 'yanvar_fevral_mart_aprel_may_iyun_iyul_avqust_sentyabr_oktyabr_noyabr_dekabr'.split('_'), monthsShort : 'yan_fev_mar_apr_may_iyn_iyl_avq_sen_okt_noy_dek'.split('_'), weekdays : 'Bazar_Bazar ertəsi_Çərşənbə axşamı_Çərşənbə_Cümə axşamı_Cümə_Şənbə'.split('_'), weekdaysShort : 'Baz_BzE_ÇAx_Çər_CAx_Cüm_Şən'.split('_'), weekdaysMin : 'Bz_BE_ÇA_Çə_CA_Cü_Şə'.split('_'), + weekdaysParseExact : true, longDateFormat : { LT : 'HH:mm', - LTS : 'LT:ss', + LTS : 'HH:mm:ss', L : 'DD.MM.YYYY', LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY LT', - LLLL : 'dddd, D MMMM YYYY LT' + LLL : 'D MMMM YYYY HH:mm', + LLLL : 'dddd, D MMMM YYYY HH:mm' }, calendar : { sameDay : '[bugün saat] LT', @@ -75,6 +69,10 @@ y : 'bir il', yy : '%d il' }, + meridiemParse: /gecə|səhər|gündüz|axşam/, + isPM : function (input) { + return /^(gündüz|axşam)$/.test(input); + }, meridiem : function (hour, minute, isLower) { if (hour < 4) { return 'gecə'; @@ -94,7 +92,6 @@ var a = number % 10, b = number % 100 - a, c = number >= 100 ? 100 : null; - return number + (suffixes[a] || suffixes[b] || suffixes[c]); }, week : { @@ -102,4 +99,7 @@ doy : 7 // The week that contains Jan 1st is the first week of the year. } }); -})); + + return az; + +})); \ No newline at end of file diff --git a/resources/lib/moment/locale/be.js b/resources/lib/moment/locale/be.js index 67ae89944e..a76157ccdf 100644 --- a/resources/lib/moment/locale/be.js +++ b/resources/lib/moment/locale/be.js @@ -1,25 +1,21 @@ -// moment.js locale configuration -// locale : belarusian (be) -// author : Dmitry Demidov : https://github.com/demidov91 -// author: Praleska: http://praleska.pro/ -// Author : Menelion Elensúle : https://github.com/Oire +//! moment.js locale configuration +//! locale : Belarusian [be] +//! author : Dmitry Demidov : https://github.com/demidov91 +//! author: Praleska: http://praleska.pro/ +//! Author : Menelion Elensúle : https://github.com/Oire + +;(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' + && typeof require === 'function' ? factory(require('../moment')) : + typeof define === 'function' && define.amd ? define(['../moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + -(function (factory) { - // Comment out broken wrapper, see T145382 - /*if (typeof define === 'function' && define.amd) { - define(['moment'], factory); // AMD - } else if (typeof exports === 'object') { - module.exports = factory(require('../moment')); // Node - } else { - factory((typeof global !== 'undefined' ? global : this).moment); // node or other global - }*/ - factory(this.moment); -}(function (moment) { function plural(word, num) { var forms = word.split('_'); return num % 10 === 1 && num % 100 !== 11 ? forms[0] : (num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20) ? forms[1] : forms[2]); } - function relativeTimeWithPlural(number, withoutSuffix, key) { var format = { 'mm': withoutSuffix ? 'хвіліна_хвіліны_хвілін' : 'хвіліну_хвіліны_хвілін', @@ -39,45 +35,26 @@ } } - function monthsCaseReplace(m, format) { - var months = { - 'nominative': 'студзень_люты_сакавік_красавік_травень_чэрвень_ліпень_жнівень_верасень_кастрычнік_лістапад_снежань'.split('_'), - 'accusative': 'студзеня_лютага_сакавіка_красавіка_траўня_чэрвеня_ліпеня_жніўня_верасня_кастрычніка_лістапада_снежня'.split('_') - }, - - nounCase = (/D[oD]?(\[[^\[\]]*\]|\s+)+MMMM?/).test(format) ? - 'accusative' : - 'nominative'; - - return months[nounCase][m.month()]; - } - - function weekdaysCaseReplace(m, format) { - var weekdays = { - 'nominative': 'нядзеля_панядзелак_аўторак_серада_чацвер_пятніца_субота'.split('_'), - 'accusative': 'нядзелю_панядзелак_аўторак_сераду_чацвер_пятніцу_суботу'.split('_') + var be = moment.defineLocale('be', { + months : { + format: 'студзеня_лютага_сакавіка_красавіка_траўня_чэрвеня_ліпеня_жніўня_верасня_кастрычніка_лістапада_снежня'.split('_'), + standalone: 'студзень_люты_сакавік_красавік_травень_чэрвень_ліпень_жнівень_верасень_кастрычнік_лістапад_снежань'.split('_') }, - - nounCase = (/\[ ?[Вв] ?(?:мінулую|наступную)? ?\] ?dddd/).test(format) ? - 'accusative' : - 'nominative'; - - return weekdays[nounCase][m.day()]; - } - - return moment.defineLocale('be', { - months : monthsCaseReplace, monthsShort : 'студ_лют_сак_крас_трав_чэрв_ліп_жнів_вер_каст_ліст_снеж'.split('_'), - weekdays : weekdaysCaseReplace, + weekdays : { + format: 'нядзелю_панядзелак_аўторак_сераду_чацвер_пятніцу_суботу'.split('_'), + standalone: 'нядзеля_панядзелак_аўторак_серада_чацвер_пятніца_субота'.split('_'), + isFormat: /\[ ?[Вв] ?(?:мінулую|наступную)? ?\] ?dddd/ + }, weekdaysShort : 'нд_пн_ат_ср_чц_пт_сб'.split('_'), weekdaysMin : 'нд_пн_ат_ср_чц_пт_сб'.split('_'), longDateFormat : { LT : 'HH:mm', - LTS : 'LT:ss', + LTS : 'HH:mm:ss', L : 'DD.MM.YYYY', LL : 'D MMMM YYYY г.', - LLL : 'D MMMM YYYY г., LT', - LLLL : 'dddd, D MMMM YYYY г., LT' + LLL : 'D MMMM YYYY г., HH:mm', + LLLL : 'dddd, D MMMM YYYY г., HH:mm' }, calendar : { sameDay: '[Сёння ў] LT', @@ -88,15 +65,15 @@ }, lastWeek: function () { switch (this.day()) { - case 0: - case 3: - case 5: - case 6: - return '[У мінулую] dddd [ў] LT'; - case 1: - case 2: - case 4: - return '[У мінулы] dddd [ў] LT'; + case 0: + case 3: + case 5: + case 6: + return '[У мінулую] dddd [ў] LT'; + case 1: + case 2: + case 4: + return '[У мінулы] dddd [ў] LT'; } }, sameElse: 'L' @@ -116,8 +93,10 @@ y : 'год', yy : relativeTimeWithPlural }, - - + meridiemParse: /ночы|раніцы|дня|вечара/, + isPM : function (input) { + return /^(дня|вечара)$/.test(input); + }, meridiem : function (hour, minute, isLower) { if (hour < 4) { return 'ночы'; @@ -129,26 +108,27 @@ return 'вечара'; } }, - ordinalParse: /\d{1,2}-(і|ы|га)/, ordinal: function (number, period) { switch (period) { - case 'M': - case 'd': - case 'DDD': - case 'w': - case 'W': - return (number % 10 === 2 || number % 10 === 3) && (number % 100 !== 12 && number % 100 !== 13) ? number + '-і' : number + '-ы'; - case 'D': - return number + '-га'; - default: - return number; + case 'M': + case 'd': + case 'DDD': + case 'w': + case 'W': + return (number % 10 === 2 || number % 10 === 3) && (number % 100 !== 12 && number % 100 !== 13) ? number + '-і' : number + '-ы'; + case 'D': + return number + '-га'; + default: + return number; } }, - week : { dow : 1, // Monday is the first day of the week. doy : 7 // The week that contains Jan 1st is the first week of the year. } }); -})); + + return be; + +})); \ No newline at end of file diff --git a/resources/lib/moment/locale/bg.js b/resources/lib/moment/locale/bg.js index fe610ec17b..deedab8cda 100644 --- a/resources/lib/moment/locale/bg.js +++ b/resources/lib/moment/locale/bg.js @@ -1,19 +1,16 @@ -// moment.js locale configuration -// locale : bulgarian (bg) -// author : Krasen Borisov : https://github.com/kraz +//! moment.js locale configuration +//! locale : Bulgarian [bg] +//! author : Krasen Borisov : https://github.com/kraz -(function (factory) { - // Comment out broken wrapper, see T145382 - /*if (typeof define === 'function' && define.amd) { - define(['moment'], factory); // AMD - } else if (typeof exports === 'object') { - module.exports = factory(require('../moment')); // Node - } else { - factory((typeof global !== 'undefined' ? global : this).moment); // node or other global - }*/ - factory(this.moment); -}(function (moment) { - return moment.defineLocale('bg', { +;(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' + && typeof require === 'function' ? factory(require('../moment')) : + typeof define === 'function' && define.amd ? define(['../moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + + + var bg = moment.defineLocale('bg', { months : 'януари_февруари_март_април_май_юни_юли_август_септември_октомври_ноември_декември'.split('_'), monthsShort : 'янр_фев_мар_апр_май_юни_юли_авг_сеп_окт_ное_дек'.split('_'), weekdays : 'неделя_понеделник_вторник_сряда_четвъртък_петък_събота'.split('_'), @@ -21,11 +18,11 @@ weekdaysMin : 'нд_пн_вт_ср_чт_пт_сб'.split('_'), longDateFormat : { LT : 'H:mm', - LTS : 'LT:ss', + LTS : 'H:mm:ss', L : 'D.MM.YYYY', LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY LT', - LLLL : 'dddd, D MMMM YYYY LT' + LLL : 'D MMMM YYYY H:mm', + LLLL : 'dddd, D MMMM YYYY H:mm' }, calendar : { sameDay : '[Днес в] LT', @@ -34,15 +31,15 @@ lastDay : '[Вчера в] LT', lastWeek : function () { switch (this.day()) { - case 0: - case 3: - case 6: - return '[В изминалата] dddd [в] LT'; - case 1: - case 2: - case 4: - case 5: - return '[В изминалия] dddd [в] LT'; + case 0: + case 3: + case 6: + return '[В изминалата] dddd [в] LT'; + case 1: + case 2: + case 4: + case 5: + return '[В изминалия] dddd [в] LT'; } }, sameElse : 'L' @@ -87,4 +84,7 @@ doy : 7 // The week that contains Jan 1st is the first week of the year. } }); -})); + + return bg; + +})); \ No newline at end of file diff --git a/resources/lib/moment/locale/bn.js b/resources/lib/moment/locale/bn.js index 59d26baaeb..1d49751132 100644 --- a/resources/lib/moment/locale/bn.js +++ b/resources/lib/moment/locale/bn.js @@ -1,18 +1,15 @@ -// moment.js locale configuration -// locale : Bengali (bn) -// author : Kaushik Gandhi : https://github.com/kaushikgandhi +//! moment.js locale configuration +//! locale : Bengali [bn] +//! author : Kaushik Gandhi : https://github.com/kaushikgandhi + +;(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' + && typeof require === 'function' ? factory(require('../moment')) : + typeof define === 'function' && define.amd ? define(['../moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + -(function (factory) { - // Comment out broken wrapper, see T145382 - /*if (typeof define === 'function' && define.amd) { - define(['moment'], factory); // AMD - } else if (typeof exports === 'object') { - module.exports = factory(require('../moment')); // Node - } else { - factory((typeof global !== 'undefined' ? global : this).moment); // node or other global - }*/ - factory(this.moment); -}(function (moment) { var symbolMap = { '1': '১', '2': '২', @@ -38,19 +35,19 @@ '০': '0' }; - return moment.defineLocale('bn', { - months : 'জানুয়ারী_ফেবুয়ারী_মার্চ_এপ্রিল_মে_জুন_জুলাই_অগাস্ট_সেপ্টেম্বর_অক্টোবর_নভেম্বর_ডিসেম্বর'.split('_'), - monthsShort : 'জানু_ফেব_মার্চ_এপর_মে_জুন_জুল_অগ_সেপ্ট_অক্টো_নভ_ডিসেম্'.split('_'), - weekdays : 'রবিবার_সোমবার_মঙ্গলবার_বুধবার_বৃহস্পত্তিবার_শুক্রুবার_শনিবার'.split('_'), - weekdaysShort : 'রবি_সোম_মঙ্গল_বুধ_বৃহস্পত্তি_শুক্রু_শনি'.split('_'), - weekdaysMin : 'রব_সম_মঙ্গ_বু_ব্রিহ_শু_শনি'.split('_'), + var bn = moment.defineLocale('bn', { + months : 'জানুয়ারী_ফেব্রুয়ারি_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্টেম্বর_অক্টোবর_নভেম্বর_ডিসেম্বর'.split('_'), + monthsShort : 'জানু_ফেব_মার্চ_এপ্র_মে_জুন_জুল_আগ_সেপ্ট_অক্টো_নভে_ডিসে'.split('_'), + weekdays : 'রবিবার_সোমবার_মঙ্গলবার_বুধবার_বৃহস্পতিবার_শুক্রবার_শনিবার'.split('_'), + weekdaysShort : 'রবি_সোম_মঙ্গল_বুধ_বৃহস্পতি_শুক্র_শনি'.split('_'), + weekdaysMin : 'রবি_সোম_মঙ্গ_বুধ_বৃহঃ_শুক্র_শনি'.split('_'), longDateFormat : { LT : 'A h:mm সময়', LTS : 'A h:mm:ss সময়', L : 'DD/MM/YYYY', LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY, LT', - LLLL : 'dddd, D MMMM YYYY, LT' + LLL : 'D MMMM YYYY, A h:mm সময়', + LLLL : 'dddd, D MMMM YYYY, A h:mm সময়' }, calendar : { sameDay : '[আজ] LT', @@ -63,7 +60,7 @@ relativeTime : { future : '%s পরে', past : '%s আগে', - s : 'কএক সেকেন্ড', + s : 'কয়েক সেকেন্ড', m : 'এক মিনিট', mm : '%d মিনিট', h : 'এক ঘন্টা', @@ -85,18 +82,28 @@ return symbolMap[match]; }); }, - //Bengali is a vast language its spoken - //in different forms in various parts of the world. - //I have just generalized with most common one used + meridiemParse: /রাত|সকাল|দুপুর|বিকাল|রাত/, + meridiemHour : function (hour, meridiem) { + if (hour === 12) { + hour = 0; + } + if ((meridiem === 'রাত' && hour >= 4) || + (meridiem === 'দুপুর' && hour < 5) || + meridiem === 'বিকাল') { + return hour + 12; + } else { + return hour; + } + }, meridiem : function (hour, minute, isLower) { if (hour < 4) { return 'রাত'; } else if (hour < 10) { - return 'শকাল'; + return 'সকাল'; } else if (hour < 17) { return 'দুপুর'; } else if (hour < 20) { - return 'বিকেল'; + return 'বিকাল'; } else { return 'রাত'; } @@ -106,4 +113,7 @@ doy : 6 // The week that contains Jan 1st is the first week of the year. } }); -})); + + return bn; + +})); \ No newline at end of file diff --git a/resources/lib/moment/locale/bo.js b/resources/lib/moment/locale/bo.js index 346fbdffb1..3f6fe19363 100644 --- a/resources/lib/moment/locale/bo.js +++ b/resources/lib/moment/locale/bo.js @@ -1,18 +1,15 @@ -// moment.js locale configuration -// locale : tibetan (bo) -// author : Thupten N. Chakrishar : https://github.com/vajradog +//! moment.js locale configuration +//! locale : Tibetan [bo] +//! author : Thupten N. Chakrishar : https://github.com/vajradog + +;(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' + && typeof require === 'function' ? factory(require('../moment')) : + typeof define === 'function' && define.amd ? define(['../moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + -(function (factory) { - // Comment out broken wrapper, see T145382 - /*if (typeof define === 'function' && define.amd) { - define(['moment'], factory); // AMD - } else if (typeof exports === 'object') { - module.exports = factory(require('../moment')); // Node - } else { - factory((typeof global !== 'undefined' ? global : this).moment); // node or other global - }*/ - factory(this.moment); -}(function (moment) { var symbolMap = { '1': '༡', '2': '༢', @@ -38,7 +35,7 @@ '༠': '0' }; - return moment.defineLocale('bo', { + var bo = moment.defineLocale('bo', { months : 'ཟླ་བ་དང་པོ_ཟླ་བ་གཉིས་པ_ཟླ་བ་གསུམ་པ_ཟླ་བ་བཞི་པ_ཟླ་བ་ལྔ་པ_ཟླ་བ་དྲུག་པ_ཟླ་བ་བདུན་པ_ཟླ་བ་བརྒྱད་པ_ཟླ་བ་དགུ་པ_ཟླ་བ་བཅུ་པ_ཟླ་བ་བཅུ་གཅིག་པ_ཟླ་བ་བཅུ་གཉིས་པ'.split('_'), monthsShort : 'ཟླ་བ་དང་པོ_ཟླ་བ་གཉིས་པ_ཟླ་བ་གསུམ་པ_ཟླ་བ་བཞི་པ_ཟླ་བ་ལྔ་པ_ཟླ་བ་དྲུག་པ_ཟླ་བ་བདུན་པ_ཟླ་བ་བརྒྱད་པ_ཟླ་བ་དགུ་པ_ཟླ་བ་བཅུ་པ_ཟླ་བ་བཅུ་གཅིག་པ_ཟླ་བ་བཅུ་གཉིས་པ'.split('_'), weekdays : 'གཟའ་ཉི་མ་_གཟའ་ཟླ་བ་_གཟའ་མིག་དམར་_གཟའ་ལྷག་པ་_གཟའ་ཕུར་བུ_གཟའ་པ་སངས་_གཟའ་སྤེན་པ་'.split('_'), @@ -46,11 +43,11 @@ weekdaysMin : 'ཉི་མ་_ཟླ་བ་_མིག་དམར་_ལྷག་པ་_ཕུར་བུ_པ་སངས་_སྤེན་པ་'.split('_'), longDateFormat : { LT : 'A h:mm', - LTS : 'LT:ss', + LTS : 'A h:mm:ss', L : 'DD/MM/YYYY', LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY, LT', - LLLL : 'dddd, D MMMM YYYY, LT' + LLL : 'D MMMM YYYY, A h:mm', + LLLL : 'dddd, D MMMM YYYY, A h:mm' }, calendar : { sameDay : '[དི་རིང] LT', @@ -85,6 +82,19 @@ return symbolMap[match]; }); }, + meridiemParse: /མཚན་མོ|ཞོགས་ཀས|ཉིན་གུང|དགོང་དག|མཚན་མོ/, + meridiemHour : function (hour, meridiem) { + if (hour === 12) { + hour = 0; + } + if ((meridiem === 'མཚན་མོ' && hour >= 4) || + (meridiem === 'ཉིན་གུང' && hour < 5) || + meridiem === 'དགོང་དག') { + return hour + 12; + } else { + return hour; + } + }, meridiem : function (hour, minute, isLower) { if (hour < 4) { return 'མཚན་མོ'; @@ -103,4 +113,7 @@ doy : 6 // The week that contains Jan 1st is the first week of the year. } }); -})); + + return bo; + +})); \ No newline at end of file diff --git a/resources/lib/moment/locale/br.js b/resources/lib/moment/locale/br.js index 575d6443bc..ca290f3c87 100644 --- a/resources/lib/moment/locale/br.js +++ b/resources/lib/moment/locale/br.js @@ -1,18 +1,15 @@ -// moment.js locale configuration -// locale : breton (br) -// author : Jean-Baptiste Le Duigou : https://github.com/jbleduigou +//! moment.js locale configuration +//! locale : Breton [br] +//! author : Jean-Baptiste Le Duigou : https://github.com/jbleduigou + +;(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' + && typeof require === 'function' ? factory(require('../moment')) : + typeof define === 'function' && define.amd ? define(['../moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + -(function (factory) { - // Comment out broken wrapper, see T145382 - /*if (typeof define === 'function' && define.amd) { - define(['moment'], factory); // AMD - } else if (typeof exports === 'object') { - module.exports = factory(require('../moment')); // Node - } else { - factory((typeof global !== 'undefined' ? global : this).moment); // node or other global - }*/ - factory(this.moment); -}(function (moment) { function relativeTimeWithMutation(number, withoutSuffix, key) { var format = { 'mm': 'munutenn', @@ -21,34 +18,30 @@ }; return number + ' ' + mutation(format[key], number); } - function specialMutationForYears(number) { switch (lastNumber(number)) { - case 1: - case 3: - case 4: - case 5: - case 9: - return number + ' bloaz'; - default: - return number + ' vloaz'; + case 1: + case 3: + case 4: + case 5: + case 9: + return number + ' bloaz'; + default: + return number + ' vloaz'; } } - function lastNumber(number) { if (number > 9) { return lastNumber(number % 10); } return number; } - function mutation(text, number) { if (number === 2) { return softMutation(text); } return text; } - function softMutation(text) { var mutationTable = { 'm': 'v', @@ -61,19 +54,20 @@ return mutationTable[text.charAt(0)] + text.substring(1); } - return moment.defineLocale('br', { + var br = moment.defineLocale('br', { months : 'Genver_C\'hwevrer_Meurzh_Ebrel_Mae_Mezheven_Gouere_Eost_Gwengolo_Here_Du_Kerzu'.split('_'), monthsShort : 'Gen_C\'hwe_Meu_Ebr_Mae_Eve_Gou_Eos_Gwe_Her_Du_Ker'.split('_'), weekdays : 'Sul_Lun_Meurzh_Merc\'her_Yaou_Gwener_Sadorn'.split('_'), weekdaysShort : 'Sul_Lun_Meu_Mer_Yao_Gwe_Sad'.split('_'), weekdaysMin : 'Su_Lu_Me_Mer_Ya_Gw_Sa'.split('_'), + weekdaysParseExact : true, longDateFormat : { LT : 'h[e]mm A', LTS : 'h[e]mm:ss A', L : 'DD/MM/YYYY', LL : 'D [a viz] MMMM YYYY', - LLL : 'D [a viz] MMMM YYYY LT', - LLLL : 'dddd, D [a viz] MMMM YYYY LT' + LLL : 'D [a viz] MMMM YYYY h[e]mm A', + LLLL : 'dddd, D [a viz] MMMM YYYY h[e]mm A' }, calendar : { sameDay : '[Hiziv da] LT', @@ -108,4 +102,7 @@ doy : 4 // The week that contains Jan 4th is the first week of the year. } }); -})); + + return br; + +})); \ No newline at end of file diff --git a/resources/lib/moment/locale/bs.js b/resources/lib/moment/locale/bs.js index 415b596669..ddd346cfe4 100644 --- a/resources/lib/moment/locale/bs.js +++ b/resources/lib/moment/locale/bs.js @@ -1,118 +1,116 @@ -// moment.js locale configuration -// locale : bosnian (bs) -// author : Nedim Cholich : https://github.com/frontyard -// based on (hr) translation by Bojan Marković +//! moment.js locale configuration +//! locale : Bosnian [bs] +//! author : Nedim Cholich : https://github.com/frontyard +//! based on (hr) translation by Bojan Marković + +;(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' + && typeof require === 'function' ? factory(require('../moment')) : + typeof define === 'function' && define.amd ? define(['../moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + -(function (factory) { - // Comment out broken wrapper, see T145382 - /*if (typeof define === 'function' && define.amd) { - define(['moment'], factory); // AMD - } else if (typeof exports === 'object') { - module.exports = factory(require('../moment')); // Node - } else { - factory((typeof global !== 'undefined' ? global : this).moment); // node or other global - }*/ - factory(this.moment); -}(function (moment) { function translate(number, withoutSuffix, key) { var result = number + ' '; switch (key) { - case 'm': - return withoutSuffix ? 'jedna minuta' : 'jedne minute'; - case 'mm': - if (number === 1) { - result += 'minuta'; - } else if (number === 2 || number === 3 || number === 4) { - result += 'minute'; - } else { - result += 'minuta'; - } - return result; - case 'h': - return withoutSuffix ? 'jedan sat' : 'jednog sata'; - case 'hh': - if (number === 1) { - result += 'sat'; - } else if (number === 2 || number === 3 || number === 4) { - result += 'sata'; - } else { - result += 'sati'; - } - return result; - case 'dd': - if (number === 1) { - result += 'dan'; - } else { - result += 'dana'; - } - return result; - case 'MM': - if (number === 1) { - result += 'mjesec'; - } else if (number === 2 || number === 3 || number === 4) { - result += 'mjeseca'; - } else { - result += 'mjeseci'; - } - return result; - case 'yy': - if (number === 1) { - result += 'godina'; - } else if (number === 2 || number === 3 || number === 4) { - result += 'godine'; - } else { - result += 'godina'; - } - return result; + case 'm': + return withoutSuffix ? 'jedna minuta' : 'jedne minute'; + case 'mm': + if (number === 1) { + result += 'minuta'; + } else if (number === 2 || number === 3 || number === 4) { + result += 'minute'; + } else { + result += 'minuta'; + } + return result; + case 'h': + return withoutSuffix ? 'jedan sat' : 'jednog sata'; + case 'hh': + if (number === 1) { + result += 'sat'; + } else if (number === 2 || number === 3 || number === 4) { + result += 'sata'; + } else { + result += 'sati'; + } + return result; + case 'dd': + if (number === 1) { + result += 'dan'; + } else { + result += 'dana'; + } + return result; + case 'MM': + if (number === 1) { + result += 'mjesec'; + } else if (number === 2 || number === 3 || number === 4) { + result += 'mjeseca'; + } else { + result += 'mjeseci'; + } + return result; + case 'yy': + if (number === 1) { + result += 'godina'; + } else if (number === 2 || number === 3 || number === 4) { + result += 'godine'; + } else { + result += 'godina'; + } + return result; } } - return moment.defineLocale('bs', { + var bs = moment.defineLocale('bs', { months : 'januar_februar_mart_april_maj_juni_juli_august_septembar_oktobar_novembar_decembar'.split('_'), monthsShort : 'jan._feb._mar._apr._maj._jun._jul._aug._sep._okt._nov._dec.'.split('_'), + monthsParseExact: true, weekdays : 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split('_'), weekdaysShort : 'ned._pon._uto._sri._čet._pet._sub.'.split('_'), weekdaysMin : 'ne_po_ut_sr_če_pe_su'.split('_'), + weekdaysParseExact : true, longDateFormat : { LT : 'H:mm', - LTS : 'LT:ss', - L : 'DD. MM. YYYY', + LTS : 'H:mm:ss', + L : 'DD.MM.YYYY', LL : 'D. MMMM YYYY', - LLL : 'D. MMMM YYYY LT', - LLLL : 'dddd, D. MMMM YYYY LT' + LLL : 'D. MMMM YYYY H:mm', + LLLL : 'dddd, D. MMMM YYYY H:mm' }, calendar : { sameDay : '[danas u] LT', nextDay : '[sutra u] LT', - nextWeek : function () { switch (this.day()) { - case 0: - return '[u] [nedjelju] [u] LT'; - case 3: - return '[u] [srijedu] [u] LT'; - case 6: - return '[u] [subotu] [u] LT'; - case 1: - case 2: - case 4: - case 5: - return '[u] dddd [u] LT'; + case 0: + return '[u] [nedjelju] [u] LT'; + case 3: + return '[u] [srijedu] [u] LT'; + case 6: + return '[u] [subotu] [u] LT'; + case 1: + case 2: + case 4: + case 5: + return '[u] dddd [u] LT'; } }, lastDay : '[jučer u] LT', lastWeek : function () { switch (this.day()) { - case 0: - case 3: - return '[proÅ¡lu] dddd [u] LT'; - case 6: - return '[proÅ¡le] [subote] [u] LT'; - case 1: - case 2: - case 4: - case 5: - return '[proÅ¡li] dddd [u] LT'; + case 0: + case 3: + return '[proÅ¡lu] dddd [u] LT'; + case 6: + return '[proÅ¡le] [subote] [u] LT'; + case 1: + case 2: + case 4: + case 5: + return '[proÅ¡li] dddd [u] LT'; } }, sameElse : 'L' @@ -139,4 +137,7 @@ doy : 7 // The week that contains Jan 1st is the first week of the year. } }); -})); + + return bs; + +})); \ No newline at end of file diff --git a/resources/lib/moment/locale/ca.js b/resources/lib/moment/locale/ca.js index 6c82db0d11..7882800a24 100644 --- a/resources/lib/moment/locale/ca.js +++ b/resources/lib/moment/locale/ca.js @@ -1,31 +1,30 @@ -// moment.js locale configuration -// locale : catalan (ca) -// author : Juan G. Hurtado : https://github.com/juanghurtado +//! moment.js locale configuration +//! locale : Catalan [ca] +//! author : Juan G. Hurtado : https://github.com/juanghurtado -(function (factory) { - // Comment out broken wrapper, see T145382 - /*if (typeof define === 'function' && define.amd) { - define(['moment'], factory); // AMD - } else if (typeof exports === 'object') { - module.exports = factory(require('../moment')); // Node - } else { - factory((typeof global !== 'undefined' ? global : this).moment); // node or other global - }*/ - factory(this.moment); -}(function (moment) { - return moment.defineLocale('ca', { +;(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' + && typeof require === 'function' ? factory(require('../moment')) : + typeof define === 'function' && define.amd ? define(['../moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + + + var ca = moment.defineLocale('ca', { months : 'gener_febrer_març_abril_maig_juny_juliol_agost_setembre_octubre_novembre_desembre'.split('_'), monthsShort : 'gen._febr._mar._abr._mai._jun._jul._ag._set._oct._nov._des.'.split('_'), + monthsParseExact : true, weekdays : 'diumenge_dilluns_dimarts_dimecres_dijous_divendres_dissabte'.split('_'), weekdaysShort : 'dg._dl._dt._dc._dj._dv._ds.'.split('_'), weekdaysMin : 'Dg_Dl_Dt_Dc_Dj_Dv_Ds'.split('_'), + weekdaysParseExact : true, longDateFormat : { LT : 'H:mm', - LTS : 'LT:ss', + LTS : 'H:mm:ss', L : 'DD/MM/YYYY', LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY LT', - LLLL : 'dddd D MMMM YYYY LT' + LLL : 'D MMMM YYYY H:mm', + LLLL : 'dddd D MMMM YYYY H:mm' }, calendar : { sameDay : function () { @@ -76,4 +75,7 @@ doy : 4 // The week that contains Jan 4th is the first week of the year. } }); -})); + + return ca; + +})); \ No newline at end of file diff --git a/resources/lib/moment/locale/cs.js b/resources/lib/moment/locale/cs.js index bf3e60a6e2..129e936b14 100644 --- a/resources/lib/moment/locale/cs.js +++ b/resources/lib/moment/locale/cs.js @@ -1,79 +1,74 @@ -// moment.js locale configuration -// locale : czech (cs) -// author : petrbela : https://github.com/petrbela +//! moment.js locale configuration +//! locale : Czech [cs] +//! author : petrbela : https://github.com/petrbela + +;(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' + && typeof require === 'function' ? factory(require('../moment')) : + typeof define === 'function' && define.amd ? define(['../moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + -(function (factory) { - // Comment out broken wrapper, see T145382 - /*if (typeof define === 'function' && define.amd) { - define(['moment'], factory); // AMD - } else if (typeof exports === 'object') { - module.exports = factory(require('../moment')); // Node - } else { - factory((typeof global !== 'undefined' ? global : this).moment); // node or other global - }*/ - factory(this.moment); -}(function (moment) { var months = 'leden_únor_březen_duben_květen_červen_červenec_srpen_září_říjen_listopad_prosinec'.split('_'), monthsShort = 'led_úno_bře_dub_kvě_čvn_čvc_srp_zář_říj_lis_pro'.split('_'); - function plural(n) { return (n > 1) && (n < 5) && (~~(n / 10) !== 1); } - function translate(number, withoutSuffix, key, isFuture) { var result = number + ' '; switch (key) { - case 's': // a few seconds / in a few seconds / a few seconds ago - return (withoutSuffix || isFuture) ? 'pár sekund' : 'pár sekundami'; - case 'm': // a minute / in a minute / a minute ago - return withoutSuffix ? 'minuta' : (isFuture ? 'minutu' : 'minutou'); - case 'mm': // 9 minutes / in 9 minutes / 9 minutes ago - if (withoutSuffix || isFuture) { - return result + (plural(number) ? 'minuty' : 'minut'); - } else { - return result + 'minutami'; - } - break; - case 'h': // an hour / in an hour / an hour ago - return withoutSuffix ? 'hodina' : (isFuture ? 'hodinu' : 'hodinou'); - case 'hh': // 9 hours / in 9 hours / 9 hours ago - if (withoutSuffix || isFuture) { - return result + (plural(number) ? 'hodiny' : 'hodin'); - } else { - return result + 'hodinami'; - } - break; - case 'd': // a day / in a day / a day ago - return (withoutSuffix || isFuture) ? 'den' : 'dnem'; - case 'dd': // 9 days / in 9 days / 9 days ago - if (withoutSuffix || isFuture) { - return result + (plural(number) ? 'dny' : 'dní'); - } else { - return result + 'dny'; - } - break; - case 'M': // a month / in a month / a month ago - return (withoutSuffix || isFuture) ? 'měsíc' : 'měsícem'; - case 'MM': // 9 months / in 9 months / 9 months ago - if (withoutSuffix || isFuture) { - return result + (plural(number) ? 'měsíce' : 'měsíců'); - } else { - return result + 'měsíci'; - } - break; - case 'y': // a year / in a year / a year ago - return (withoutSuffix || isFuture) ? 'rok' : 'rokem'; - case 'yy': // 9 years / in 9 years / 9 years ago - if (withoutSuffix || isFuture) { - return result + (plural(number) ? 'roky' : 'let'); - } else { - return result + 'lety'; - } - break; + case 's': // a few seconds / in a few seconds / a few seconds ago + return (withoutSuffix || isFuture) ? 'pár sekund' : 'pár sekundami'; + case 'm': // a minute / in a minute / a minute ago + return withoutSuffix ? 'minuta' : (isFuture ? 'minutu' : 'minutou'); + case 'mm': // 9 minutes / in 9 minutes / 9 minutes ago + if (withoutSuffix || isFuture) { + return result + (plural(number) ? 'minuty' : 'minut'); + } else { + return result + 'minutami'; + } + break; + case 'h': // an hour / in an hour / an hour ago + return withoutSuffix ? 'hodina' : (isFuture ? 'hodinu' : 'hodinou'); + case 'hh': // 9 hours / in 9 hours / 9 hours ago + if (withoutSuffix || isFuture) { + return result + (plural(number) ? 'hodiny' : 'hodin'); + } else { + return result + 'hodinami'; + } + break; + case 'd': // a day / in a day / a day ago + return (withoutSuffix || isFuture) ? 'den' : 'dnem'; + case 'dd': // 9 days / in 9 days / 9 days ago + if (withoutSuffix || isFuture) { + return result + (plural(number) ? 'dny' : 'dní'); + } else { + return result + 'dny'; + } + break; + case 'M': // a month / in a month / a month ago + return (withoutSuffix || isFuture) ? 'měsíc' : 'měsícem'; + case 'MM': // 9 months / in 9 months / 9 months ago + if (withoutSuffix || isFuture) { + return result + (plural(number) ? 'měsíce' : 'měsíců'); + } else { + return result + 'měsíci'; + } + break; + case 'y': // a year / in a year / a year ago + return (withoutSuffix || isFuture) ? 'rok' : 'rokem'; + case 'yy': // 9 years / in 9 years / 9 years ago + if (withoutSuffix || isFuture) { + return result + (plural(number) ? 'roky' : 'let'); + } else { + return result + 'lety'; + } + break; } } - return moment.defineLocale('cs', { + var cs = moment.defineLocale('cs', { months : months, monthsShort : monthsShort, monthsParse : (function (months, monthsShort) { @@ -84,52 +79,67 @@ } return _monthsParse; }(months, monthsShort)), + shortMonthsParse : (function (monthsShort) { + var i, _shortMonthsParse = []; + for (i = 0; i < 12; i++) { + _shortMonthsParse[i] = new RegExp('^' + monthsShort[i] + '$', 'i'); + } + return _shortMonthsParse; + }(monthsShort)), + longMonthsParse : (function (months) { + var i, _longMonthsParse = []; + for (i = 0; i < 12; i++) { + _longMonthsParse[i] = new RegExp('^' + months[i] + '$', 'i'); + } + return _longMonthsParse; + }(months)), weekdays : 'neděle_pondělí_úterý_středa_čtvrtek_pátek_sobota'.split('_'), weekdaysShort : 'ne_po_út_st_čt_pá_so'.split('_'), weekdaysMin : 'ne_po_út_st_čt_pá_so'.split('_'), longDateFormat : { LT: 'H:mm', - LTS : 'LT:ss', + LTS : 'H:mm:ss', L : 'DD.MM.YYYY', LL : 'D. MMMM YYYY', - LLL : 'D. MMMM YYYY LT', - LLLL : 'dddd D. MMMM YYYY LT' + LLL : 'D. MMMM YYYY H:mm', + LLLL : 'dddd D. MMMM YYYY H:mm', + l : 'D. M. YYYY' }, calendar : { sameDay: '[dnes v] LT', nextDay: '[zítra v] LT', nextWeek: function () { switch (this.day()) { - case 0: - return '[v neděli v] LT'; - case 1: - case 2: - return '[v] dddd [v] LT'; - case 3: - return '[ve středu v] LT'; - case 4: - return '[ve čtvrtek v] LT'; - case 5: - return '[v pátek v] LT'; - case 6: - return '[v sobotu v] LT'; + case 0: + return '[v neděli v] LT'; + case 1: + case 2: + return '[v] dddd [v] LT'; + case 3: + return '[ve středu v] LT'; + case 4: + return '[ve čtvrtek v] LT'; + case 5: + return '[v pátek v] LT'; + case 6: + return '[v sobotu v] LT'; } }, lastDay: '[včera v] LT', lastWeek: function () { switch (this.day()) { - case 0: - return '[minulou neděli v] LT'; - case 1: - case 2: - return '[minulé] dddd [v] LT'; - case 3: - return '[minulou středu v] LT'; - case 4: - case 5: - return '[minulý] dddd [v] LT'; - case 6: - return '[minulou sobotu v] LT'; + case 0: + return '[minulou neděli v] LT'; + case 1: + case 2: + return '[minulé] dddd [v] LT'; + case 3: + return '[minulou středu v] LT'; + case 4: + case 5: + return '[minulý] dddd [v] LT'; + case 6: + return '[minulou sobotu v] LT'; } }, sameElse: 'L' @@ -156,4 +166,7 @@ doy : 4 // The week that contains Jan 4th is the first week of the year. } }); -})); + + return cs; + +})); \ No newline at end of file diff --git a/resources/lib/moment/locale/cv.js b/resources/lib/moment/locale/cv.js index 10d33a60e0..60bf213896 100644 --- a/resources/lib/moment/locale/cv.js +++ b/resources/lib/moment/locale/cv.js @@ -1,63 +1,63 @@ -// moment.js locale configuration -// locale : chuvash (cv) -// author : Anatoly Mironov : https://github.com/mirontoli +//! moment.js locale configuration +//! locale : Chuvash [cv] +//! author : Anatoly Mironov : https://github.com/mirontoli -(function (factory) { - // Comment out broken wrapper, see T145382 - /*if (typeof define === 'function' && define.amd) { - define(['moment'], factory); // AMD - } else if (typeof exports === 'object') { - module.exports = factory(require('../moment')); // Node - } else { - factory((typeof global !== 'undefined' ? global : this).moment); // node or other global - }*/ - factory(this.moment); -}(function (moment) { - return moment.defineLocale('cv', { - months : 'кăрлач_нарăс_пуш_ака_май_çĕртме_утă_çурла_авăн_юпа_чӳк_раштав'.split('_'), - monthsShort : 'кăр_нар_пуш_ака_май_çĕр_утă_çур_ав_юпа_чӳк_раш'.split('_'), - weekdays : 'вырсарникун_тунтикун_ытларикун_юнкун_кĕçнерникун_эрнекун_шăматкун'.split('_'), - weekdaysShort : 'выр_тун_ытл_юн_кĕç_эрн_шăм'.split('_'), - weekdaysMin : 'вр_тн_ыт_юн_кç_эр_шм'.split('_'), +;(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' + && typeof require === 'function' ? factory(require('../moment')) : + typeof define === 'function' && define.amd ? define(['../moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + + + var cv = moment.defineLocale('cv', { + months : 'кӑрлач_нарӑс_пуш_ака_май_ҫӗртме_утӑ_ҫурла_авӑн_юпа_чӳк_раштав'.split('_'), + monthsShort : 'кӑр_нар_пуш_ака_май_ҫӗр_утӑ_ҫур_авн_юпа_чӳк_раш'.split('_'), + weekdays : 'вырсарникун_тунтикун_ытларикун_юнкун_кӗҫнерникун_эрнекун_шӑматкун'.split('_'), + weekdaysShort : 'выр_тун_ытл_юн_кӗҫ_эрн_шӑм'.split('_'), + weekdaysMin : 'вр_тн_ыт_юн_кҫ_эр_шм'.split('_'), longDateFormat : { LT : 'HH:mm', - LTS : 'LT:ss', + LTS : 'HH:mm:ss', L : 'DD-MM-YYYY', - LL : 'YYYY [çулхи] MMMM [уйăхĕн] D[-мĕшĕ]', - LLL : 'YYYY [çулхи] MMMM [уйăхĕн] D[-мĕшĕ], LT', - LLLL : 'dddd, YYYY [çулхи] MMMM [уйăхĕн] D[-мĕшĕ], LT' + LL : 'YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ]', + LLL : 'YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm', + LLLL : 'dddd, YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm' }, calendar : { sameDay: '[Паян] LT [сехетре]', nextDay: '[Ыран] LT [сехетре]', - lastDay: '[Ĕнер] LT [сехетре]', - nextWeek: '[Çитес] dddd LT [сехетре]', - lastWeek: '[Иртнĕ] dddd LT [сехетре]', + lastDay: '[Ӗнер] LT [сехетре]', + nextWeek: '[Ҫитес] dddd LT [сехетре]', + lastWeek: '[Иртнӗ] dddd LT [сехетре]', sameElse: 'L' }, relativeTime : { future : function (output) { - var affix = /сехет$/i.exec(output) ? 'рен' : /çул$/i.exec(output) ? 'тан' : 'ран'; + var affix = /сехет$/i.exec(output) ? 'рен' : /ҫул$/i.exec(output) ? 'тан' : 'ран'; return output + affix; }, past : '%s каялла', - s : 'пĕр-ик çеккунт', - m : 'пĕр минут', + s : 'пӗр-ик ҫеккунт', + m : 'пӗр минут', mm : '%d минут', - h : 'пĕр сехет', + h : 'пӗр сехет', hh : '%d сехет', - d : 'пĕр кун', + d : 'пӗр кун', dd : '%d кун', - M : 'пĕр уйăх', - MM : '%d уйăх', - y : 'пĕр çул', - yy : '%d çул' + M : 'пӗр уйӑх', + MM : '%d уйӑх', + y : 'пӗр ҫул', + yy : '%d ҫул' }, - ordinalParse: /\d{1,2}-мĕш/, - ordinal : '%d-мĕш', + ordinalParse: /\d{1,2}-мӗш/, + ordinal : '%d-мӗш', week : { dow : 1, // Monday is the first day of the week. doy : 7 // The week that contains Jan 1st is the first week of the year. } }); -})); + + return cv; + +})); \ No newline at end of file diff --git a/resources/lib/moment/locale/cy.js b/resources/lib/moment/locale/cy.js index a14ed7d44e..93525676cc 100644 --- a/resources/lib/moment/locale/cy.js +++ b/resources/lib/moment/locale/cy.js @@ -1,32 +1,31 @@ -// moment.js locale configuration -// locale : Welsh (cy) -// author : Robert Allen +//! moment.js locale configuration +//! locale : Welsh [cy] +//! author : Robert Allen : https://github.com/robgallen +//! author : https://github.com/ryangreaves -(function (factory) { - // Comment out broken wrapper, see T145382 - /*if (typeof define === 'function' && define.amd) { - define(['moment'], factory); // AMD - } else if (typeof exports === 'object') { - module.exports = factory(require('../moment')); // Node - } else { - factory((typeof global !== 'undefined' ? global : this).moment); // node or other global - }*/ - factory(this.moment); -}(function (moment) { - return moment.defineLocale('cy', { +;(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' + && typeof require === 'function' ? factory(require('../moment')) : + typeof define === 'function' && define.amd ? define(['../moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + + + var cy = moment.defineLocale('cy', { months: 'Ionawr_Chwefror_Mawrth_Ebrill_Mai_Mehefin_Gorffennaf_Awst_Medi_Hydref_Tachwedd_Rhagfyr'.split('_'), monthsShort: 'Ion_Chwe_Maw_Ebr_Mai_Meh_Gor_Aws_Med_Hyd_Tach_Rhag'.split('_'), weekdays: 'Dydd Sul_Dydd Llun_Dydd Mawrth_Dydd Mercher_Dydd Iau_Dydd Gwener_Dydd Sadwrn'.split('_'), weekdaysShort: 'Sul_Llun_Maw_Mer_Iau_Gwe_Sad'.split('_'), weekdaysMin: 'Su_Ll_Ma_Me_Ia_Gw_Sa'.split('_'), + weekdaysParseExact : true, // time formats are the same as en-gb longDateFormat: { LT: 'HH:mm', - LTS : 'LT:ss', + LTS : 'HH:mm:ss', L: 'DD/MM/YYYY', LL: 'D MMMM YYYY', - LLL: 'D MMMM YYYY LT', - LLLL: 'dddd, D MMMM YYYY LT' + LLL: 'D MMMM YYYY HH:mm', + LLLL: 'dddd, D MMMM YYYY HH:mm' }, calendar: { sameDay: '[Heddiw am] LT', @@ -60,7 +59,6 @@ '', 'af', 'il', 'ydd', 'ydd', 'ed', 'ed', 'ed', 'fed', 'fed', 'fed', // 1af to 10fed 'eg', 'fed', 'eg', 'eg', 'fed', 'eg', 'eg', 'fed', 'eg', 'fed' // 11eg to 20fed ]; - if (b > 20) { if (b === 40 || b === 50 || b === 60 || b === 80 || b === 100) { output = 'fed'; // not 30ain, 70ain or 90ain @@ -70,7 +68,6 @@ } else if (b > 0) { output = lookup[b]; } - return number + output; }, week : { @@ -78,4 +75,7 @@ doy : 4 // The week that contains Jan 4th is the first week of the year. } }); -})); + + return cy; + +})); \ No newline at end of file diff --git a/resources/lib/moment/locale/da.js b/resources/lib/moment/locale/da.js index 228ca02f4d..d5cbbdb345 100644 --- a/resources/lib/moment/locale/da.js +++ b/resources/lib/moment/locale/da.js @@ -1,19 +1,16 @@ -// moment.js locale configuration -// locale : danish (da) -// author : Ulrik Nielsen : https://github.com/mrbase +//! moment.js locale configuration +//! locale : Danish [da] +//! author : Ulrik Nielsen : https://github.com/mrbase -(function (factory) { - // Comment out broken wrapper, see T145382 - /*if (typeof define === 'function' && define.amd) { - define(['moment'], factory); // AMD - } else if (typeof exports === 'object') { - module.exports = factory(require('../moment')); // Node - } else { - factory((typeof global !== 'undefined' ? global : this).moment); // node or other global - }*/ - factory(this.moment); -}(function (moment) { - return moment.defineLocale('da', { +;(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' + && typeof require === 'function' ? factory(require('../moment')) : + typeof define === 'function' && define.amd ? define(['../moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + + + var da = moment.defineLocale('da', { months : 'januar_februar_marts_april_maj_juni_juli_august_september_oktober_november_december'.split('_'), monthsShort : 'jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec'.split('_'), weekdays : 'søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag'.split('_'), @@ -21,11 +18,11 @@ weekdaysMin : 'sø_ma_ti_on_to_fr_lø'.split('_'), longDateFormat : { LT : 'HH:mm', - LTS : 'LT:ss', + LTS : 'HH:mm:ss', L : 'DD/MM/YYYY', LL : 'D. MMMM YYYY', - LLL : 'D. MMMM YYYY LT', - LLLL : 'dddd [d.] D. MMMM YYYY LT' + LLL : 'D. MMMM YYYY HH:mm', + LLLL : 'dddd [d.] D. MMMM YYYY HH:mm' }, calendar : { sameDay : '[I dag kl.] LT', @@ -57,4 +54,7 @@ doy : 4 // The week that contains Jan 4th is the first week of the year. } }); -})); + + return da; + +})); \ No newline at end of file diff --git a/resources/lib/moment/locale/de-at.js b/resources/lib/moment/locale/de-at.js index af6e61c301..d1fd398598 100644 --- a/resources/lib/moment/locale/de-at.js +++ b/resources/lib/moment/locale/de-at.js @@ -1,20 +1,18 @@ -// moment.js locale configuration -// locale : austrian german (de-at) -// author : lluchs : https://github.com/lluchs -// author: Menelion Elensúle: https://github.com/Oire -// author : Martin Groller : https://github.com/MadMG +//! moment.js locale configuration +//! locale : German (Austria) [de-at] +//! author : lluchs : https://github.com/lluchs +//! author: Menelion Elensúle: https://github.com/Oire +//! author : Martin Groller : https://github.com/MadMG +//! author : Mikolaj Dadela : https://github.com/mik01aj + +;(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' + && typeof require === 'function' ? factory(require('../moment')) : + typeof define === 'function' && define.amd ? define(['../moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + -(function (factory) { - // Comment out broken wrapper, see T145382 - /*if (typeof define === 'function' && define.amd) { - define(['moment'], factory); // AMD - } else if (typeof exports === 'object') { - module.exports = factory(require('../moment')); // Node - } else { - factory((typeof global !== 'undefined' ? global : this).moment); // node or other global - }*/ - factory(this.moment); -}(function (moment) { function processRelativeTime(number, withoutSuffix, key, isFuture) { var format = { 'm': ['eine Minute', 'einer Minute'], @@ -29,26 +27,28 @@ return withoutSuffix ? format[key][0] : format[key][1]; } - return moment.defineLocale('de-at', { + var de_at = moment.defineLocale('de-at', { months : 'Jänner_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split('_'), monthsShort : 'Jän._Febr._Mrz._Apr._Mai_Jun._Jul._Aug._Sept._Okt._Nov._Dez.'.split('_'), + monthsParseExact : true, weekdays : 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split('_'), weekdaysShort : 'So._Mo._Di._Mi._Do._Fr._Sa.'.split('_'), weekdaysMin : 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'), + weekdaysParseExact : true, longDateFormat : { LT: 'HH:mm', LTS: 'HH:mm:ss', L : 'DD.MM.YYYY', LL : 'D. MMMM YYYY', - LLL : 'D. MMMM YYYY LT', - LLLL : 'dddd, D. MMMM YYYY LT' + LLL : 'D. MMMM YYYY HH:mm', + LLLL : 'dddd, D. MMMM YYYY HH:mm' }, calendar : { - sameDay: '[Heute um] LT [Uhr]', + sameDay: '[heute um] LT [Uhr]', sameElse: 'L', - nextDay: '[Morgen um] LT [Uhr]', + nextDay: '[morgen um] LT [Uhr]', nextWeek: 'dddd [um] LT [Uhr]', - lastDay: '[Gestern um] LT [Uhr]', + lastDay: '[gestern um] LT [Uhr]', lastWeek: '[letzten] dddd [um] LT [Uhr]' }, relativeTime : { @@ -73,4 +73,7 @@ doy : 4 // The week that contains Jan 4th is the first week of the year. } }); -})); + + return de_at; + +})); \ No newline at end of file diff --git a/resources/lib/moment/locale/de.js b/resources/lib/moment/locale/de.js index 1b50f0f63e..203dac9101 100644 --- a/resources/lib/moment/locale/de.js +++ b/resources/lib/moment/locale/de.js @@ -1,19 +1,17 @@ -// moment.js locale configuration -// locale : german (de) -// author : lluchs : https://github.com/lluchs -// author: Menelion Elensúle: https://github.com/Oire +//! moment.js locale configuration +//! locale : German [de] +//! author : lluchs : https://github.com/lluchs +//! author: Menelion Elensúle: https://github.com/Oire +//! author : Mikolaj Dadela : https://github.com/mik01aj + +;(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' + && typeof require === 'function' ? factory(require('../moment')) : + typeof define === 'function' && define.amd ? define(['../moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + -(function (factory) { - // Comment out broken wrapper, see T145382 - /*if (typeof define === 'function' && define.amd) { - define(['moment'], factory); // AMD - } else if (typeof exports === 'object') { - module.exports = factory(require('../moment')); // Node - } else { - factory((typeof global !== 'undefined' ? global : this).moment); // node or other global - }*/ - factory(this.moment); -}(function (moment) { function processRelativeTime(number, withoutSuffix, key, isFuture) { var format = { 'm': ['eine Minute', 'einer Minute'], @@ -28,26 +26,28 @@ return withoutSuffix ? format[key][0] : format[key][1]; } - return moment.defineLocale('de', { + var de = moment.defineLocale('de', { months : 'Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split('_'), monthsShort : 'Jan._Febr._Mrz._Apr._Mai_Jun._Jul._Aug._Sept._Okt._Nov._Dez.'.split('_'), + monthsParseExact : true, weekdays : 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split('_'), weekdaysShort : 'So._Mo._Di._Mi._Do._Fr._Sa.'.split('_'), weekdaysMin : 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'), + weekdaysParseExact : true, longDateFormat : { LT: 'HH:mm', LTS: 'HH:mm:ss', L : 'DD.MM.YYYY', LL : 'D. MMMM YYYY', - LLL : 'D. MMMM YYYY LT', - LLLL : 'dddd, D. MMMM YYYY LT' + LLL : 'D. MMMM YYYY HH:mm', + LLLL : 'dddd, D. MMMM YYYY HH:mm' }, calendar : { - sameDay: '[Heute um] LT [Uhr]', + sameDay: '[heute um] LT [Uhr]', sameElse: 'L', - nextDay: '[Morgen um] LT [Uhr]', + nextDay: '[morgen um] LT [Uhr]', nextWeek: 'dddd [um] LT [Uhr]', - lastDay: '[Gestern um] LT [Uhr]', + lastDay: '[gestern um] LT [Uhr]', lastWeek: '[letzten] dddd [um] LT [Uhr]' }, relativeTime : { @@ -72,4 +72,7 @@ doy : 4 // The week that contains Jan 4th is the first week of the year. } }); -})); + + return de; + +})); \ No newline at end of file diff --git a/resources/lib/moment/locale/dv.js b/resources/lib/moment/locale/dv.js new file mode 100644 index 0000000000..911b89d5dc --- /dev/null +++ b/resources/lib/moment/locale/dv.js @@ -0,0 +1,99 @@ +//! moment.js locale configuration +//! locale : Maldivian [dv] +//! author : Jawish Hameed : https://github.com/jawish + +;(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' + && typeof require === 'function' ? factory(require('../moment')) : + typeof define === 'function' && define.amd ? define(['../moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + + + var months = [ + 'ޖެނުއަރީ', + 'ފެބްރުއަރީ', + 'މާރިޗު', + 'އޭޕްރީލު', + 'މޭ', + 'ޖޫން', + 'ޖުލައި', + 'އޯގަސްޓު', + 'ސެޕްޓެމްބަރު', + 'އޮކްޓޯބަރު', + 'ނޮވެމްބަރު', + 'ޑިސެމްބަރު' + ], weekdays = [ + 'އާދިއްތަ', + 'ހޯމަ', + 'އަންގާރަ', + 'ބުދަ', + 'ބުރާސްފަތި', + 'ހުކުރު', + 'ހޮނިހިރު' + ]; + + var dv = moment.defineLocale('dv', { + months : months, + monthsShort : months, + weekdays : weekdays, + weekdaysShort : weekdays, + weekdaysMin : 'އާދި_ހޯމަ_އަން_ބުދަ_ބުރާ_ހުކު_ހޮނި'.split('_'), + longDateFormat : { + + LT : 'HH:mm', + LTS : 'HH:mm:ss', + L : 'D/M/YYYY', + LL : 'D MMMM YYYY', + LLL : 'D MMMM YYYY HH:mm', + LLLL : 'dddd D MMMM YYYY HH:mm' + }, + meridiemParse: /މކ|މފ/, + isPM : function (input) { + return 'މފ' === input; + }, + meridiem : function (hour, minute, isLower) { + if (hour < 12) { + return 'މކ'; + } else { + return 'މފ'; + } + }, + calendar : { + sameDay : '[މިއަދު] LT', + nextDay : '[މާދަމާ] LT', + nextWeek : 'dddd LT', + lastDay : '[އިއްޔެ] LT', + lastWeek : '[ފާއިތުވި] dddd LT', + sameElse : 'L' + }, + relativeTime : { + future : 'ތެރޭގައި %s', + past : 'ކުރިން %s', + s : 'ސިކުންތުކޮޅެއް', + m : 'މިނިޓެއް', + mm : 'މިނިޓު %d', + h : 'ގަޑިއިރެއް', + hh : 'ގަޑިއިރު %d', + d : 'ދުވަހެއް', + dd : 'ދުވަސް %d', + M : 'މަހެއް', + MM : 'މަސް %d', + y : 'އަހަރެއް', + yy : 'އަހަރު %d' + }, + preparse: function (string) { + return string.replace(/،/g, ','); + }, + postformat: function (string) { + return string.replace(/,/g, '،'); + }, + week : { + dow : 7, // Sunday is the first day of the week. + doy : 12 // The week that contains Jan 1st is the first week of the year. + } + }); + + return dv; + +})); \ No newline at end of file diff --git a/resources/lib/moment/locale/el.js b/resources/lib/moment/locale/el.js index a0e1695e3f..588cb235c8 100644 --- a/resources/lib/moment/locale/el.js +++ b/resources/lib/moment/locale/el.js @@ -1,19 +1,20 @@ -// moment.js locale configuration -// locale : modern greek (el) -// author : Aggelos Karalias : https://github.com/mehiel +//! moment.js locale configuration +//! locale : Greek [el] +//! author : Aggelos Karalias : https://github.com/mehiel -(function (factory) { - // Comment out broken wrapper, see T145382 - /*if (typeof define === 'function' && define.amd) { - define(['moment'], factory); // AMD - } else if (typeof exports === 'object') { - module.exports = factory(require('../moment')); // Node - } else { - factory((typeof global !== 'undefined' ? global : this).moment); // node or other global - }*/ - factory(this.moment); -}(function (moment) { - return moment.defineLocale('el', { +;(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' + && typeof require === 'function' ? factory(require('../moment')) : + typeof define === 'function' && define.amd ? define(['../moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + + function isFunction(input) { + return input instanceof Function || Object.prototype.toString.call(input) === '[object Function]'; + } + + + var el = moment.defineLocale('el', { monthsNominativeEl : 'Ιανουάριος_Φεβρουάριος_Μάρτιος_Απρίλιος_Μάιος_Ιούνιος_Ιούλιος_Αύγουστος_Σεπτέμβριος_Οκτώβριος_Νοέμβριος_Δεκέμβριος'.split('_'), monthsGenitiveEl : 'Ιανουαρίου_Φεβρουαρίου_Μαρτίου_Απριλίου_Μαΐου_Ιουνίου_Ιουλίου_Αυγούστου_Σεπτεμβρίου_Οκτωβρίου_Νοεμβρίου_Δεκεμβρίου'.split('_'), months : function (momentToFormat, format) { @@ -43,8 +44,8 @@ LTS : 'h:mm:ss A', L : 'DD/MM/YYYY', LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY LT', - LLLL : 'dddd, D MMMM YYYY LT' + LLL : 'D MMMM YYYY h:mm A', + LLLL : 'dddd, D MMMM YYYY h:mm A' }, calendarEl : { sameDay : '[Σήμερα {}] LT', @@ -64,11 +65,9 @@ calendar : function (key, mom) { var output = this._calendarEl[key], hours = mom && mom.hours(); - - if (typeof output === 'function') { + if (isFunction(output)) { output = output.apply(mom); } - return output.replace('{}', (hours % 12 === 1 ? 'στη' : 'στις')); }, relativeTime : { @@ -93,4 +92,7 @@ doy : 4 // The week that contains Jan 4st is the first week of the year. } }); -})); + + return el; + +})); \ No newline at end of file diff --git a/resources/lib/moment/locale/en-au.js b/resources/lib/moment/locale/en-au.js index 9d7b53792b..4a3d95cb65 100644 --- a/resources/lib/moment/locale/en-au.js +++ b/resources/lib/moment/locale/en-au.js @@ -1,18 +1,16 @@ -// moment.js locale configuration -// locale : australian english (en-au) +//! moment.js locale configuration +//! locale : English (Australia) [en-au] +//! author : Jared Morse : https://github.com/jarcoal -(function (factory) { - // Comment out broken wrapper, see T145382 - /*if (typeof define === 'function' && define.amd) { - define(['moment'], factory); // AMD - } else if (typeof exports === 'object') { - module.exports = factory(require('../moment')); // Node - } else { - factory((typeof global !== 'undefined' ? global : this).moment); // node or other global - }*/ - factory(this.moment); -}(function (moment) { - return moment.defineLocale('en-au', { +;(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' + && typeof require === 'function' ? factory(require('../moment')) : + typeof define === 'function' && define.amd ? define(['../moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + + + var en_au = moment.defineLocale('en-au', { months : 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'), monthsShort : 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'), weekdays : 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'), @@ -23,8 +21,8 @@ LTS : 'h:mm:ss A', L : 'DD/MM/YYYY', LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY LT', - LLLL : 'dddd, D MMMM YYYY LT' + LLL : 'D MMMM YYYY h:mm A', + LLLL : 'dddd, D MMMM YYYY h:mm A' }, calendar : { sameDay : '[Today at] LT', @@ -63,4 +61,7 @@ doy : 4 // The week that contains Jan 4th is the first week of the year. } }); -})); + + return en_au; + +})); \ No newline at end of file diff --git a/resources/lib/moment/locale/en-ca.js b/resources/lib/moment/locale/en-ca.js index 45d3569c68..9ac521f9e9 100644 --- a/resources/lib/moment/locale/en-ca.js +++ b/resources/lib/moment/locale/en-ca.js @@ -1,19 +1,16 @@ -// moment.js locale configuration -// locale : canadian english (en-ca) -// author : Jonathan Abourbih : https://github.com/jonbca +//! moment.js locale configuration +//! locale : English (Canada) [en-ca] +//! author : Jonathan Abourbih : https://github.com/jonbca -(function (factory) { - // Comment out broken wrapper, see T145382 - /*if (typeof define === 'function' && define.amd) { - define(['moment'], factory); // AMD - } else if (typeof exports === 'object') { - module.exports = factory(require('../moment')); // Node - } else { - factory((typeof global !== 'undefined' ? global : this).moment); // node or other global - }*/ - factory(this.moment); -}(function (moment) { - return moment.defineLocale('en-ca', { +;(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' + && typeof require === 'function' ? factory(require('../moment')) : + typeof define === 'function' && define.amd ? define(['../moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + + + var en_ca = moment.defineLocale('en-ca', { months : 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'), monthsShort : 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'), weekdays : 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'), @@ -23,9 +20,9 @@ LT : 'h:mm A', LTS : 'h:mm:ss A', L : 'YYYY-MM-DD', - LL : 'D MMMM, YYYY', - LLL : 'D MMMM, YYYY LT', - LLLL : 'dddd, D MMMM, YYYY LT' + LL : 'MMMM D, YYYY', + LLL : 'MMMM D, YYYY h:mm A', + LLLL : 'dddd, MMMM D, YYYY h:mm A' }, calendar : { sameDay : '[Today at] LT', @@ -60,4 +57,7 @@ return number + output; } }); -})); + + return en_ca; + +})); \ No newline at end of file diff --git a/resources/lib/moment/locale/en-gb.js b/resources/lib/moment/locale/en-gb.js index 669ce5ea8e..843d2e585f 100644 --- a/resources/lib/moment/locale/en-gb.js +++ b/resources/lib/moment/locale/en-gb.js @@ -1,19 +1,16 @@ -// moment.js locale configuration -// locale : great britain english (en-gb) -// author : Chris Gedrim : https://github.com/chrisgedrim +//! moment.js locale configuration +//! locale : English (United Kingdom) [en-gb] +//! author : Chris Gedrim : https://github.com/chrisgedrim -(function (factory) { - // Comment out broken wrapper, see T145382 - /*if (typeof define === 'function' && define.amd) { - define(['moment'], factory); // AMD - } else if (typeof exports === 'object') { - module.exports = factory(require('../moment')); // Node - } else { - factory((typeof global !== 'undefined' ? global : this).moment); // node or other global - }*/ - factory(this.moment); -}(function (moment) { - return moment.defineLocale('en-gb', { +;(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' + && typeof require === 'function' ? factory(require('../moment')) : + typeof define === 'function' && define.amd ? define(['../moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + + + var en_gb = moment.defineLocale('en-gb', { months : 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'), monthsShort : 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'), weekdays : 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'), @@ -24,8 +21,8 @@ LTS : 'HH:mm:ss', L : 'DD/MM/YYYY', LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY LT', - LLLL : 'dddd, D MMMM YYYY LT' + LLL : 'D MMMM YYYY HH:mm', + LLLL : 'dddd, D MMMM YYYY HH:mm' }, calendar : { sameDay : '[Today at] LT', @@ -64,4 +61,7 @@ doy : 4 // The week that contains Jan 4th is the first week of the year. } }); -})); + + return en_gb; + +})); \ No newline at end of file diff --git a/resources/lib/moment/locale/eo.js b/resources/lib/moment/locale/eo.js index 7f8c504bef..5b21f82420 100644 --- a/resources/lib/moment/locale/eo.js +++ b/resources/lib/moment/locale/eo.js @@ -1,21 +1,18 @@ -// moment.js locale configuration -// locale : esperanto (eo) -// author : Colin Dean : https://github.com/colindean -// komento: Mi estas malcerta se mi korekte traktis akuzativojn en tiu traduko. -// Se ne, bonvolu korekti kaj avizi min por ke mi povas lerni! +//! moment.js locale configuration +//! locale : Esperanto [eo] +//! author : Colin Dean : https://github.com/colindean +//! komento: Mi estas malcerta se mi korekte traktis akuzativojn en tiu traduko. +//! Se ne, bonvolu korekti kaj avizi min por ke mi povas lerni! -(function (factory) { - // Comment out broken wrapper, see T145382 - /*if (typeof define === 'function' && define.amd) { - define(['moment'], factory); // AMD - } else if (typeof exports === 'object') { - module.exports = factory(require('../moment')); // Node - } else { - factory((typeof global !== 'undefined' ? global : this).moment); // node or other global - }*/ - factory(this.moment); -}(function (moment) { - return moment.defineLocale('eo', { +;(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' + && typeof require === 'function' ? factory(require('../moment')) : + typeof define === 'function' && define.amd ? define(['../moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + + + var eo = moment.defineLocale('eo', { months : 'januaro_februaro_marto_aprilo_majo_junio_julio_aÅ­gusto_septembro_oktobro_novembro_decembro'.split('_'), monthsShort : 'jan_feb_mar_apr_maj_jun_jul_aÅ­g_sep_okt_nov_dec'.split('_'), weekdays : 'Dimanĉo_Lundo_Mardo_Merkredo_Ä´aÅ­do_Vendredo_Sabato'.split('_'), @@ -23,11 +20,15 @@ weekdaysMin : 'Di_Lu_Ma_Me_Ä´a_Ve_Sa'.split('_'), longDateFormat : { LT : 'HH:mm', - LTS : 'LT:ss', + LTS : 'HH:mm:ss', L : 'YYYY-MM-DD', LL : 'D[-an de] MMMM, YYYY', - LLL : 'D[-an de] MMMM, YYYY LT', - LLLL : 'dddd, [la] D[-an de] MMMM, YYYY LT' + LLL : 'D[-an de] MMMM, YYYY HH:mm', + LLLL : 'dddd, [la] D[-an de] MMMM, YYYY HH:mm' + }, + meridiemParse: /[ap]\.t\.m/i, + isPM: function (input) { + return input.charAt(0).toLowerCase() === 'p'; }, meridiem : function (hours, minutes, isLower) { if (hours > 11) { @@ -66,4 +67,7 @@ doy : 7 // The week that contains Jan 1st is the first week of the year. } }); -})); + + return eo; + +})); \ No newline at end of file diff --git a/resources/lib/moment/locale/es.js b/resources/lib/moment/locale/es.js index 5d352a4fe4..cd819056e5 100644 --- a/resources/lib/moment/locale/es.js +++ b/resources/lib/moment/locale/es.js @@ -1,22 +1,19 @@ -// moment.js locale configuration -// locale : spanish (es) -// author : Julio Napurí : https://github.com/julionc +//! moment.js locale configuration +//! locale : Spanish [es] +//! author : Julio Napurí : https://github.com/julionc + +;(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' + && typeof require === 'function' ? factory(require('../moment')) : + typeof define === 'function' && define.amd ? define(['../moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + -(function (factory) { - // Comment out broken wrapper, see T145382 - /*if (typeof define === 'function' && define.amd) { - define(['moment'], factory); // AMD - } else if (typeof exports === 'object') { - module.exports = factory(require('../moment')); // Node - } else { - factory((typeof global !== 'undefined' ? global : this).moment); // node or other global - }*/ - factory(this.moment); -}(function (moment) { var monthsShortDot = 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split('_'), monthsShort = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'); - return moment.defineLocale('es', { + var es = moment.defineLocale('es', { months : 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split('_'), monthsShort : function (m, format) { if (/-MMM-/.test(format)) { @@ -25,16 +22,18 @@ return monthsShortDot[m.month()]; } }, + monthsParseExact : true, weekdays : 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'), weekdaysShort : 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'), - weekdaysMin : 'Do_Lu_Ma_Mi_Ju_Vi_Sá'.split('_'), + weekdaysMin : 'do_lu_ma_mi_ju_vi_sá'.split('_'), + weekdaysParseExact : true, longDateFormat : { LT : 'H:mm', - LTS : 'LT:ss', + LTS : 'H:mm:ss', L : 'DD/MM/YYYY', LL : 'D [de] MMMM [de] YYYY', - LLL : 'D [de] MMMM [de] YYYY LT', - LLLL : 'dddd, D [de] MMMM [de] YYYY LT' + LLL : 'D [de] MMMM [de] YYYY H:mm', + LLLL : 'dddd, D [de] MMMM [de] YYYY H:mm' }, calendar : { sameDay : function () { @@ -76,4 +75,7 @@ doy : 4 // The week that contains Jan 4th is the first week of the year. } }); -})); + + return es; + +})); \ No newline at end of file diff --git a/resources/lib/moment/locale/et.js b/resources/lib/moment/locale/et.js index fec168c052..97fd945add 100644 --- a/resources/lib/moment/locale/et.js +++ b/resources/lib/moment/locale/et.js @@ -1,19 +1,16 @@ -// moment.js locale configuration -// locale : estonian (et) -// author : Henry Kehlmann : https://github.com/madhenry -// improvements : Illimar Tambek : https://github.com/ragulka +//! moment.js locale configuration +//! locale : Estonian [et] +//! author : Henry Kehlmann : https://github.com/madhenry +//! improvements : Illimar Tambek : https://github.com/ragulka + +;(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' + && typeof require === 'function' ? factory(require('../moment')) : + typeof define === 'function' && define.amd ? define(['../moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + -(function (factory) { - // Comment out broken wrapper, see T145382 - /*if (typeof define === 'function' && define.amd) { - define(['moment'], factory); // AMD - } else if (typeof exports === 'object') { - module.exports = factory(require('../moment')); // Node - } else { - factory((typeof global !== 'undefined' ? global : this).moment); // node or other global - }*/ - factory(this.moment); -}(function (moment) { function processRelativeTime(number, withoutSuffix, key, isFuture) { var format = { 's' : ['mõne sekundi', 'mõni sekund', 'paar sekundit'], @@ -33,7 +30,7 @@ return isFuture ? format[key][0] : format[key][1]; } - return moment.defineLocale('et', { + var et = moment.defineLocale('et', { months : 'jaanuar_veebruar_märts_aprill_mai_juuni_juuli_august_september_oktoober_november_detsember'.split('_'), monthsShort : 'jaan_veebr_märts_apr_mai_juuni_juuli_aug_sept_okt_nov_dets'.split('_'), weekdays : 'pühapäev_esmaspäev_teisipäev_kolmapäev_neljapäev_reede_laupäev'.split('_'), @@ -41,11 +38,11 @@ weekdaysMin : 'P_E_T_K_N_R_L'.split('_'), longDateFormat : { LT : 'H:mm', - LTS : 'LT:ss', + LTS : 'H:mm:ss', L : 'DD.MM.YYYY', LL : 'D. MMMM YYYY', - LLL : 'D. MMMM YYYY LT', - LLLL : 'dddd, D. MMMM YYYY LT' + LLL : 'D. MMMM YYYY H:mm', + LLLL : 'dddd, D. MMMM YYYY H:mm' }, calendar : { sameDay : '[Täna,] LT', @@ -77,4 +74,7 @@ doy : 4 // The week that contains Jan 4th is the first week of the year. } }); -})); + + return et; + +})); \ No newline at end of file diff --git a/resources/lib/moment/locale/eu.js b/resources/lib/moment/locale/eu.js index 1401346b20..15d7dd3e68 100644 --- a/resources/lib/moment/locale/eu.js +++ b/resources/lib/moment/locale/eu.js @@ -1,35 +1,34 @@ -// moment.js locale configuration -// locale : euskara (eu) -// author : Eneko Illarramendi : https://github.com/eillarra +//! moment.js locale configuration +//! locale : Basque [eu] +//! author : Eneko Illarramendi : https://github.com/eillarra -(function (factory) { - // Comment out broken wrapper, see T145382 - /*if (typeof define === 'function' && define.amd) { - define(['moment'], factory); // AMD - } else if (typeof exports === 'object') { - module.exports = factory(require('../moment')); // Node - } else { - factory((typeof global !== 'undefined' ? global : this).moment); // node or other global - }*/ - factory(this.moment); -}(function (moment) { - return moment.defineLocale('eu', { +;(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' + && typeof require === 'function' ? factory(require('../moment')) : + typeof define === 'function' && define.amd ? define(['../moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + + + var eu = moment.defineLocale('eu', { months : 'urtarrila_otsaila_martxoa_apirila_maiatza_ekaina_uztaila_abuztua_iraila_urria_azaroa_abendua'.split('_'), monthsShort : 'urt._ots._mar._api._mai._eka._uzt._abu._ira._urr._aza._abe.'.split('_'), + monthsParseExact : true, weekdays : 'igandea_astelehena_asteartea_asteazkena_osteguna_ostirala_larunbata'.split('_'), weekdaysShort : 'ig._al._ar._az._og._ol._lr.'.split('_'), weekdaysMin : 'ig_al_ar_az_og_ol_lr'.split('_'), + weekdaysParseExact : true, longDateFormat : { LT : 'HH:mm', - LTS : 'LT:ss', + LTS : 'HH:mm:ss', L : 'YYYY-MM-DD', LL : 'YYYY[ko] MMMM[ren] D[a]', - LLL : 'YYYY[ko] MMMM[ren] D[a] LT', - LLLL : 'dddd, YYYY[ko] MMMM[ren] D[a] LT', + LLL : 'YYYY[ko] MMMM[ren] D[a] HH:mm', + LLLL : 'dddd, YYYY[ko] MMMM[ren] D[a] HH:mm', l : 'YYYY-M-D', ll : 'YYYY[ko] MMM D[a]', - lll : 'YYYY[ko] MMM D[a] LT', - llll : 'ddd, YYYY[ko] MMM D[a] LT' + lll : 'YYYY[ko] MMM D[a] HH:mm', + llll : 'ddd, YYYY[ko] MMM D[a] HH:mm' }, calendar : { sameDay : '[gaur] LT[etan]', @@ -61,4 +60,7 @@ doy : 7 // The week that contains Jan 1st is the first week of the year. } }); -})); + + return eu; + +})); \ No newline at end of file diff --git a/resources/lib/moment/locale/fa.js b/resources/lib/moment/locale/fa.js index 0205adf5e9..535174bebb 100644 --- a/resources/lib/moment/locale/fa.js +++ b/resources/lib/moment/locale/fa.js @@ -1,18 +1,15 @@ -// moment.js locale configuration -// locale : Persian (fa) -// author : Ebrahim Byagowi : https://github.com/ebraminio +//! moment.js locale configuration +//! locale : Persian [fa] +//! author : Ebrahim Byagowi : https://github.com/ebraminio + +;(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' + && typeof require === 'function' ? factory(require('../moment')) : + typeof define === 'function' && define.amd ? define(['../moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + -(function (factory) { - // Comment out broken wrapper, see T145382 - /*if (typeof define === 'function' && define.amd) { - define(['moment'], factory); // AMD - } else if (typeof exports === 'object') { - module.exports = factory(require('../moment')); // Node - } else { - factory((typeof global !== 'undefined' ? global : this).moment); // node or other global - }*/ - factory(this.moment); -}(function (moment) { var symbolMap = { '1': 'Û±', '2': 'Û²', @@ -37,19 +34,24 @@ 'Û°': '0' }; - return moment.defineLocale('fa', { + var fa = moment.defineLocale('fa', { months : 'ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر'.split('_'), monthsShort : 'ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر'.split('_'), weekdays : 'یک\u200cشنبه_دوشنبه_سه\u200cشنبه_چهارشنبه_پنج\u200cشنبه_جمعه_شنبه'.split('_'), weekdaysShort : 'یک\u200cشنبه_دوشنبه_سه\u200cشنبه_چهارشنبه_پنج\u200cشنبه_جمعه_شنبه'.split('_'), weekdaysMin : 'ی_د_س_چ_Ù¾_ج_Ø´'.split('_'), + weekdaysParseExact : true, longDateFormat : { LT : 'HH:mm', - LTS : 'LT:ss', + LTS : 'HH:mm:ss', L : 'DD/MM/YYYY', LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY LT', - LLLL : 'dddd, D MMMM YYYY LT' + LLL : 'D MMMM YYYY HH:mm', + LLLL : 'dddd, D MMMM YYYY HH:mm' + }, + meridiemParse: /قبل از ظهر|بعد از ظهر/, + isPM: function (input) { + return /بعد از ظهر/.test(input); }, meridiem : function (hour, minute, isLower) { if (hour < 12) { @@ -98,4 +100,7 @@ doy : 12 // The week that contains Jan 1st is the first week of the year. } }); -})); + + return fa; + +})); \ No newline at end of file diff --git a/resources/lib/moment/locale/fi.js b/resources/lib/moment/locale/fi.js index 66cd1c0482..ee93848c7d 100644 --- a/resources/lib/moment/locale/fi.js +++ b/resources/lib/moment/locale/fi.js @@ -1,64 +1,59 @@ -// moment.js locale configuration -// locale : finnish (fi) -// author : Tarmo Aidantausta : https://github.com/bleadof +//! moment.js locale configuration +//! locale : Finnish [fi] +//! author : Tarmo Aidantausta : https://github.com/bleadof + +;(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' + && typeof require === 'function' ? factory(require('../moment')) : + typeof define === 'function' && define.amd ? define(['../moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + -(function (factory) { - // Comment out broken wrapper, see T145382 - /*if (typeof define === 'function' && define.amd) { - define(['moment'], factory); // AMD - } else if (typeof exports === 'object') { - module.exports = factory(require('../moment')); // Node - } else { - factory((typeof global !== 'undefined' ? global : this).moment); // node or other global - }*/ - factory(this.moment); -}(function (moment) { var numbersPast = 'nolla yksi kaksi kolme neljä viisi kuusi seitsemän kahdeksan yhdeksän'.split(' '), numbersFuture = [ 'nolla', 'yhden', 'kahden', 'kolmen', 'neljän', 'viiden', 'kuuden', numbersPast[7], numbersPast[8], numbersPast[9] ]; - function translate(number, withoutSuffix, key, isFuture) { var result = ''; switch (key) { - case 's': - return isFuture ? 'muutaman sekunnin' : 'muutama sekunti'; - case 'm': - return isFuture ? 'minuutin' : 'minuutti'; - case 'mm': - result = isFuture ? 'minuutin' : 'minuuttia'; - break; - case 'h': - return isFuture ? 'tunnin' : 'tunti'; - case 'hh': - result = isFuture ? 'tunnin' : 'tuntia'; - break; - case 'd': - return isFuture ? 'päivän' : 'päivä'; - case 'dd': - result = isFuture ? 'päivän' : 'päivää'; - break; - case 'M': - return isFuture ? 'kuukauden' : 'kuukausi'; - case 'MM': - result = isFuture ? 'kuukauden' : 'kuukautta'; - break; - case 'y': - return isFuture ? 'vuoden' : 'vuosi'; - case 'yy': - result = isFuture ? 'vuoden' : 'vuotta'; - break; + case 's': + return isFuture ? 'muutaman sekunnin' : 'muutama sekunti'; + case 'm': + return isFuture ? 'minuutin' : 'minuutti'; + case 'mm': + result = isFuture ? 'minuutin' : 'minuuttia'; + break; + case 'h': + return isFuture ? 'tunnin' : 'tunti'; + case 'hh': + result = isFuture ? 'tunnin' : 'tuntia'; + break; + case 'd': + return isFuture ? 'päivän' : 'päivä'; + case 'dd': + result = isFuture ? 'päivän' : 'päivää'; + break; + case 'M': + return isFuture ? 'kuukauden' : 'kuukausi'; + case 'MM': + result = isFuture ? 'kuukauden' : 'kuukautta'; + break; + case 'y': + return isFuture ? 'vuoden' : 'vuosi'; + case 'yy': + result = isFuture ? 'vuoden' : 'vuotta'; + break; } result = verbalNumber(number, isFuture) + ' ' + result; return result; } - function verbalNumber(number, isFuture) { return number < 10 ? (isFuture ? numbersFuture[number] : numbersPast[number]) : number; } - return moment.defineLocale('fi', { + var fi = moment.defineLocale('fi', { months : 'tammikuu_helmikuu_maaliskuu_huhtikuu_toukokuu_kesäkuu_heinäkuu_elokuu_syyskuu_lokakuu_marraskuu_joulukuu'.split('_'), monthsShort : 'tammi_helmi_maalis_huhti_touko_kesä_heinä_elo_syys_loka_marras_joulu'.split('_'), weekdays : 'sunnuntai_maanantai_tiistai_keskiviikko_torstai_perjantai_lauantai'.split('_'), @@ -69,12 +64,12 @@ LTS : 'HH.mm.ss', L : 'DD.MM.YYYY', LL : 'Do MMMM[ta] YYYY', - LLL : 'Do MMMM[ta] YYYY, [klo] LT', - LLLL : 'dddd, Do MMMM[ta] YYYY, [klo] LT', + LLL : 'Do MMMM[ta] YYYY, [klo] HH.mm', + LLLL : 'dddd, Do MMMM[ta] YYYY, [klo] HH.mm', l : 'D.M.YYYY', ll : 'Do MMM YYYY', - lll : 'Do MMM YYYY, [klo] LT', - llll : 'ddd, Do MMM YYYY, [klo] LT' + lll : 'Do MMM YYYY, [klo] HH.mm', + llll : 'ddd, Do MMM YYYY, [klo] HH.mm' }, calendar : { sameDay : '[tänään] [klo] LT', @@ -106,4 +101,7 @@ doy : 4 // The week that contains Jan 4th is the first week of the year. } }); -})); + + return fi; + +})); \ No newline at end of file diff --git a/resources/lib/moment/locale/fo.js b/resources/lib/moment/locale/fo.js index 710abf7932..93567e4470 100644 --- a/resources/lib/moment/locale/fo.js +++ b/resources/lib/moment/locale/fo.js @@ -1,19 +1,16 @@ -// moment.js locale configuration -// locale : faroese (fo) -// author : Ragnar Johannesen : https://github.com/ragnar123 +//! moment.js locale configuration +//! locale : Faroese [fo] +//! author : Ragnar Johannesen : https://github.com/ragnar123 -(function (factory) { - // Comment out broken wrapper, see T145382 - /*if (typeof define === 'function' && define.amd) { - define(['moment'], factory); // AMD - } else if (typeof exports === 'object') { - module.exports = factory(require('../moment')); // Node - } else { - factory((typeof global !== 'undefined' ? global : this).moment); // node or other global - }*/ - factory(this.moment); -}(function (moment) { - return moment.defineLocale('fo', { +;(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' + && typeof require === 'function' ? factory(require('../moment')) : + typeof define === 'function' && define.amd ? define(['../moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + + + var fo = moment.defineLocale('fo', { months : 'januar_februar_mars_apríl_mai_juni_juli_august_september_oktober_november_desember'.split('_'), monthsShort : 'jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des'.split('_'), weekdays : 'sunnudagur_mánadagur_týsdagur_mikudagur_hósdagur_fríggjadagur_leygardagur'.split('_'), @@ -21,11 +18,11 @@ weekdaysMin : 'su_má_tý_mi_hó_fr_le'.split('_'), longDateFormat : { LT : 'HH:mm', - LTS : 'LT:ss', + LTS : 'HH:mm:ss', L : 'DD/MM/YYYY', LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY LT', - LLLL : 'dddd D. MMMM, YYYY LT' + LLL : 'D MMMM YYYY HH:mm', + LLLL : 'dddd D. MMMM, YYYY HH:mm' }, calendar : { sameDay : '[Í dag kl.] LT', @@ -57,4 +54,7 @@ doy : 4 // The week that contains Jan 4th is the first week of the year. } }); -})); + + return fo; + +})); \ No newline at end of file diff --git a/resources/lib/moment/locale/fr-ca.js b/resources/lib/moment/locale/fr-ca.js index 2bbeb8049a..6ec487bd4a 100644 --- a/resources/lib/moment/locale/fr-ca.js +++ b/resources/lib/moment/locale/fr-ca.js @@ -1,31 +1,30 @@ -// moment.js locale configuration -// locale : canadian french (fr-ca) -// author : Jonathan Abourbih : https://github.com/jonbca +//! moment.js locale configuration +//! locale : French (Canada) [fr-ca] +//! author : Jonathan Abourbih : https://github.com/jonbca -(function (factory) { - // Comment out broken wrapper, see T145382 - /*if (typeof define === 'function' && define.amd) { - define(['moment'], factory); // AMD - } else if (typeof exports === 'object') { - module.exports = factory(require('../moment')); // Node - } else { - factory((typeof global !== 'undefined' ? global : this).moment); // node or other global - }*/ - factory(this.moment); -}(function (moment) { - return moment.defineLocale('fr-ca', { +;(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' + && typeof require === 'function' ? factory(require('../moment')) : + typeof define === 'function' && define.amd ? define(['../moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + + + var fr_ca = moment.defineLocale('fr-ca', { months : 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split('_'), monthsShort : 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split('_'), + monthsParseExact : true, weekdays : 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'), weekdaysShort : 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'), weekdaysMin : 'Di_Lu_Ma_Me_Je_Ve_Sa'.split('_'), + weekdaysParseExact : true, longDateFormat : { LT : 'HH:mm', - LTS : 'LT:ss', + LTS : 'HH:mm:ss', L : 'YYYY-MM-DD', LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY LT', - LLLL : 'dddd D MMMM YYYY LT' + LLL : 'D MMMM YYYY HH:mm', + LLLL : 'dddd D MMMM YYYY HH:mm' }, calendar : { sameDay: '[Aujourd\'hui à] LT', @@ -50,9 +49,12 @@ y : 'un an', yy : '%d ans' }, - ordinalParse: /\d{1,2}(er|)/, + ordinalParse: /\d{1,2}(er|e)/, ordinal : function (number) { - return number + (number === 1 ? 'er' : ''); + return number + (number === 1 ? 'er' : 'e'); } }); -})); + + return fr_ca; + +})); \ No newline at end of file diff --git a/resources/lib/moment/locale/fr.js b/resources/lib/moment/locale/fr.js index 29a3239c1d..90662e2cc8 100644 --- a/resources/lib/moment/locale/fr.js +++ b/resources/lib/moment/locale/fr.js @@ -1,31 +1,30 @@ -// moment.js locale configuration -// locale : french (fr) -// author : John Fischer : https://github.com/jfroffice +//! moment.js locale configuration +//! locale : French [fr] +//! author : John Fischer : https://github.com/jfroffice -(function (factory) { - // Comment out broken wrapper, see T145382 - /*if (typeof define === 'function' && define.amd) { - define(['moment'], factory); // AMD - } else if (typeof exports === 'object') { - module.exports = factory(require('../moment')); // Node - } else { - factory((typeof global !== 'undefined' ? global : this).moment); // node or other global - }*/ - factory(this.moment); -}(function (moment) { - return moment.defineLocale('fr', { +;(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' + && typeof require === 'function' ? factory(require('../moment')) : + typeof define === 'function' && define.amd ? define(['../moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + + + var fr = moment.defineLocale('fr', { months : 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split('_'), monthsShort : 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split('_'), + monthsParseExact : true, weekdays : 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'), weekdaysShort : 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'), weekdaysMin : 'Di_Lu_Ma_Me_Je_Ve_Sa'.split('_'), + weekdaysParseExact : true, longDateFormat : { LT : 'HH:mm', - LTS : 'LT:ss', + LTS : 'HH:mm:ss', L : 'DD/MM/YYYY', LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY LT', - LLLL : 'dddd D MMMM YYYY LT' + LLL : 'D MMMM YYYY HH:mm', + LLLL : 'dddd D MMMM YYYY HH:mm' }, calendar : { sameDay: '[Aujourd\'hui à] LT', @@ -59,4 +58,7 @@ doy : 4 // The week that contains Jan 4th is the first week of the year. } }); -})); + + return fr; + +})); \ No newline at end of file diff --git a/resources/lib/moment/locale/fy.js b/resources/lib/moment/locale/fy.js new file mode 100644 index 0000000000..dc04ade7e4 --- /dev/null +++ b/resources/lib/moment/locale/fy.js @@ -0,0 +1,73 @@ +//! moment.js locale configuration +//! locale : Frisian [fy] +//! author : Robin van der Vliet : https://github.com/robin0van0der0v + +;(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' + && typeof require === 'function' ? factory(require('../moment')) : + typeof define === 'function' && define.amd ? define(['../moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + + + var monthsShortWithDots = 'jan._feb._mrt._apr._mai_jun._jul._aug._sep._okt._nov._des.'.split('_'), + monthsShortWithoutDots = 'jan_feb_mrt_apr_mai_jun_jul_aug_sep_okt_nov_des'.split('_'); + + var fy = moment.defineLocale('fy', { + months : 'jannewaris_febrewaris_maart_april_maaie_juny_july_augustus_septimber_oktober_novimber_desimber'.split('_'), + monthsShort : function (m, format) { + if (/-MMM-/.test(format)) { + return monthsShortWithoutDots[m.month()]; + } else { + return monthsShortWithDots[m.month()]; + } + }, + monthsParseExact : true, + weekdays : 'snein_moandei_tiisdei_woansdei_tongersdei_freed_sneon'.split('_'), + weekdaysShort : 'si._mo._ti._wo._to._fr._so.'.split('_'), + weekdaysMin : 'Si_Mo_Ti_Wo_To_Fr_So'.split('_'), + weekdaysParseExact : true, + longDateFormat : { + LT : 'HH:mm', + LTS : 'HH:mm:ss', + L : 'DD-MM-YYYY', + LL : 'D MMMM YYYY', + LLL : 'D MMMM YYYY HH:mm', + LLLL : 'dddd D MMMM YYYY HH:mm' + }, + calendar : { + sameDay: '[hjoed om] LT', + nextDay: '[moarn om] LT', + nextWeek: 'dddd [om] LT', + lastDay: '[juster om] LT', + lastWeek: '[ôfrûne] dddd [om] LT', + sameElse: 'L' + }, + relativeTime : { + future : 'oer %s', + past : '%s lyn', + s : 'in pear sekonden', + m : 'ien minút', + mm : '%d minuten', + h : 'ien oere', + hh : '%d oeren', + d : 'ien dei', + dd : '%d dagen', + M : 'ien moanne', + MM : '%d moannen', + y : 'ien jier', + yy : '%d jierren' + }, + ordinalParse: /\d{1,2}(ste|de)/, + ordinal : function (number) { + return number + ((number === 1 || number === 8 || number >= 20) ? 'ste' : 'de'); + }, + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } + }); + + return fy; + +})); \ No newline at end of file diff --git a/resources/lib/moment/locale/gd.js b/resources/lib/moment/locale/gd.js new file mode 100644 index 0000000000..901cd596d6 --- /dev/null +++ b/resources/lib/moment/locale/gd.js @@ -0,0 +1,76 @@ +//! moment.js locale configuration +//! locale : Scottish Gaelic [gd] +//! author : Jon Ashdown : https://github.com/jonashdown + +;(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' + && typeof require === 'function' ? factory(require('../moment')) : + typeof define === 'function' && define.amd ? define(['../moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + + + var months = [ + 'Am Faoilleach', 'An Gearran', 'Am Màrt', 'An Giblean', 'An Cèitean', 'An t-Ògmhios', 'An t-Iuchar', 'An Lùnastal', 'An t-Sultain', 'An Dàmhair', 'An t-Samhain', 'An Dùbhlachd' + ]; + + var monthsShort = ['Faoi', 'Gear', 'Màrt', 'Gibl', 'Cèit', 'Ògmh', 'Iuch', 'Lùn', 'Sult', 'Dàmh', 'Samh', 'Dùbh']; + + var weekdays = ['Didòmhnaich', 'Diluain', 'Dimàirt', 'Diciadain', 'Diardaoin', 'Dihaoine', 'Disathairne']; + + var weekdaysShort = ['Did', 'Dil', 'Dim', 'Dic', 'Dia', 'Dih', 'Dis']; + + var weekdaysMin = ['Dò', 'Lu', 'Mà', 'Ci', 'Ar', 'Ha', 'Sa']; + + var gd = moment.defineLocale('gd', { + months : months, + monthsShort : monthsShort, + monthsParseExact : true, + weekdays : weekdays, + weekdaysShort : weekdaysShort, + weekdaysMin : weekdaysMin, + longDateFormat : { + LT : 'HH:mm', + LTS : 'HH:mm:ss', + L : 'DD/MM/YYYY', + LL : 'D MMMM YYYY', + LLL : 'D MMMM YYYY HH:mm', + LLLL : 'dddd, D MMMM YYYY HH:mm' + }, + calendar : { + sameDay : '[An-diugh aig] LT', + nextDay : '[A-màireach aig] LT', + nextWeek : 'dddd [aig] LT', + lastDay : '[An-dè aig] LT', + lastWeek : 'dddd [seo chaidh] [aig] LT', + sameElse : 'L' + }, + relativeTime : { + future : 'ann an %s', + past : 'bho chionn %s', + s : 'beagan diogan', + m : 'mionaid', + mm : '%d mionaidean', + h : 'uair', + hh : '%d uairean', + d : 'latha', + dd : '%d latha', + M : 'mìos', + MM : '%d mìosan', + y : 'bliadhna', + yy : '%d bliadhna' + }, + ordinalParse : /\d{1,2}(d|na|mh)/, + ordinal : function (number) { + var output = number === 1 ? 'd' : number % 10 === 2 ? 'na' : 'mh'; + return number + output; + }, + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } + }); + + return gd; + +})); \ No newline at end of file diff --git a/resources/lib/moment/locale/gl.js b/resources/lib/moment/locale/gl.js index b939f8ac26..83291b633a 100644 --- a/resources/lib/moment/locale/gl.js +++ b/resources/lib/moment/locale/gl.js @@ -1,31 +1,30 @@ -// moment.js locale configuration -// locale : galician (gl) -// author : Juan G. Hurtado : https://github.com/juanghurtado +//! moment.js locale configuration +//! locale : Galician [gl] +//! author : Juan G. Hurtado : https://github.com/juanghurtado -(function (factory) { - // Comment out broken wrapper, see T145382 - /*if (typeof define === 'function' && define.amd) { - define(['moment'], factory); // AMD - } else if (typeof exports === 'object') { - module.exports = factory(require('../moment')); // Node - } else { - factory((typeof global !== 'undefined' ? global : this).moment); // node or other global - }*/ - factory(this.moment); -}(function (moment) { - return moment.defineLocale('gl', { - months : 'Xaneiro_Febreiro_Marzo_Abril_Maio_Xuño_Xullo_Agosto_Setembro_Outubro_Novembro_Decembro'.split('_'), - monthsShort : 'Xan._Feb._Mar._Abr._Mai._Xuñ._Xul._Ago._Set._Out._Nov._Dec.'.split('_'), - weekdays : 'Domingo_Luns_Martes_Mércores_Xoves_Venres_Sábado'.split('_'), - weekdaysShort : 'Dom._Lun._Mar._Mér._Xov._Ven._Sáb.'.split('_'), - weekdaysMin : 'Do_Lu_Ma_Mé_Xo_Ve_Sá'.split('_'), +;(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' + && typeof require === 'function' ? factory(require('../moment')) : + typeof define === 'function' && define.amd ? define(['../moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + + + var gl = moment.defineLocale('gl', { + months : 'xaneiro_febreiro_marzo_abril_maio_xuño_xullo_agosto_setembro_outubro_novembro_decembro'.split('_'), + monthsShort : 'xan._feb._mar._abr._mai._xuñ._xul._ago._set._out._nov._dec.'.split('_'), + monthsParseExact: true, + weekdays : 'domingo_luns_martes_mércores_xoves_venres_sábado'.split('_'), + weekdaysShort : 'dom._lun._mar._mér._xov._ven._sáb.'.split('_'), + weekdaysMin : 'do_lu_ma_mé_xo_ve_sá'.split('_'), + weekdaysParseExact : true, longDateFormat : { LT : 'H:mm', - LTS : 'LT:ss', + LTS : 'H:mm:ss', L : 'DD/MM/YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY LT', - LLLL : 'dddd D MMMM YYYY LT' + LL : 'D [de] MMMM [de] YYYY', + LLL : 'D [de] MMMM [de] YYYY H:mm', + LLLL : 'dddd, D [de] MMMM [de] YYYY H:mm' }, calendar : { sameDay : function () { @@ -47,8 +46,8 @@ }, relativeTime : { future : function (str) { - if (str === 'uns segundos') { - return 'nuns segundos'; + if (str.indexOf('un') === 0) { + return 'n' + str; } return 'en ' + str; }, @@ -69,7 +68,10 @@ ordinal : '%dº', week : { dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 1st is the first week of the year. + doy : 4 // The week that contains Jan 4th is the first week of the year. } }); -})); + + return gl; + +})); \ No newline at end of file diff --git a/resources/lib/moment/locale/he.js b/resources/lib/moment/locale/he.js index 05b0209909..6e55a7a243 100644 --- a/resources/lib/moment/locale/he.js +++ b/resources/lib/moment/locale/he.js @@ -1,21 +1,18 @@ -// moment.js locale configuration -// locale : Hebrew (he) -// author : Tomer Cohen : https://github.com/tomer -// author : Moshe Simantov : https://github.com/DevelopmentIL -// author : Tal Ater : https://github.com/TalAter +//! moment.js locale configuration +//! locale : Hebrew [he] +//! author : Tomer Cohen : https://github.com/tomer +//! author : Moshe Simantov : https://github.com/DevelopmentIL +//! author : Tal Ater : https://github.com/TalAter -(function (factory) { - // Comment out broken wrapper, see T145382 - /*if (typeof define === 'function' && define.amd) { - define(['moment'], factory); // AMD - } else if (typeof exports === 'object') { - module.exports = factory(require('../moment')); // Node - } else { - factory((typeof global !== 'undefined' ? global : this).moment); // node or other global - }*/ - factory(this.moment); -}(function (moment) { - return moment.defineLocale('he', { +;(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' + && typeof require === 'function' ? factory(require('../moment')) : + typeof define === 'function' && define.amd ? define(['../moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + + + var he = moment.defineLocale('he', { months : 'ינואר_פברואר_מרץ_אפריל_מאי_יוני_יולי_אוגוסט_ספטמבר_אוקטובר_נובמבר_דצמבר'.split('_'), monthsShort : 'ינו׳_פבר׳_מרץ_אפר׳_מאי_יוני_יולי_אוג׳_ספט׳_אוק׳_נוב׳_דצמ׳'.split('_'), weekdays : 'ראשון_שני_שלישי_רביעי_חמישי_שישי_שבת'.split('_'), @@ -23,15 +20,15 @@ weekdaysMin : 'א_ב_ג_ד_ה_ו_ש'.split('_'), longDateFormat : { LT : 'HH:mm', - LTS : 'LT:ss', + LTS : 'HH:mm:ss', L : 'DD/MM/YYYY', LL : 'D [ב]MMMM YYYY', - LLL : 'D [ב]MMMM YYYY LT', - LLLL : 'dddd, D [ב]MMMM YYYY LT', + LLL : 'D [ב]MMMM YYYY HH:mm', + LLLL : 'dddd, D [ב]MMMM YYYY HH:mm', l : 'D/M/YYYY', ll : 'D MMM YYYY', - lll : 'D MMM YYYY LT', - llll : 'ddd, D MMM YYYY LT' + lll : 'D MMM YYYY HH:mm', + llll : 'ddd, D MMM YYYY HH:mm' }, calendar : { sameDay : '[היום ב־]LT', @@ -72,9 +69,31 @@ yy : function (number) { if (number === 2) { return 'שנתיים'; + } else if (number % 10 === 0 && number !== 10) { + return number + ' שנה'; } return number + ' שנים'; } + }, + meridiemParse: /אחה"צ|לפנה"צ|אחרי הצהריים|לפני הצהריים|לפנות בוקר|בבוקר|בערב/i, + isPM : function (input) { + return /^(אחה"צ|אחרי הצהריים|בערב)$/.test(input); + }, + meridiem : function (hour, minute, isLower) { + if (hour < 5) { + return 'לפנות בוקר'; + } else if (hour < 10) { + return 'בבוקר'; + } else if (hour < 12) { + return isLower ? 'לפנה"צ' : 'לפני הצהריים'; + } else if (hour < 18) { + return isLower ? 'אחה"צ' : 'אחרי הצהריים'; + } else { + return 'בערב'; + } } }); -})); + + return he; + +})); \ No newline at end of file diff --git a/resources/lib/moment/locale/hi.js b/resources/lib/moment/locale/hi.js index 36ee3ff0cf..fc597712e2 100644 --- a/resources/lib/moment/locale/hi.js +++ b/resources/lib/moment/locale/hi.js @@ -1,18 +1,15 @@ -// moment.js locale configuration -// locale : hindi (hi) -// author : Mayank Singhal : https://github.com/mayanksinghal +//! moment.js locale configuration +//! locale : Hindi [hi] +//! author : Mayank Singhal : https://github.com/mayanksinghal + +;(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' + && typeof require === 'function' ? factory(require('../moment')) : + typeof define === 'function' && define.amd ? define(['../moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + -(function (factory) { - // Comment out broken wrapper, see T145382 - /*if (typeof define === 'function' && define.amd) { - define(['moment'], factory); // AMD - } else if (typeof exports === 'object') { - module.exports = factory(require('../moment')); // Node - } else { - factory((typeof global !== 'undefined' ? global : this).moment); // node or other global - }*/ - factory(this.moment); -}(function (moment) { var symbolMap = { '1': '१', '2': '२', @@ -38,9 +35,10 @@ '०': '0' }; - return moment.defineLocale('hi', { + var hi = moment.defineLocale('hi', { months : 'जनवरी_फ़रवरी_मार्च_अप्रैल_मई_जून_जुलाई_अगस्त_सितम्बर_अक्टूबर_नवम्बर_दिसम्बर'.split('_'), monthsShort : 'जन._फ़र._मार्च_अप्रै._मई_जून_जुल._अग._सित._अक्टू._नव._दिस.'.split('_'), + monthsParseExact: true, weekdays : 'रविवार_सोमवार_मंगलवार_बुधवार_गुरूवार_शुक्रवार_शनिवार'.split('_'), weekdaysShort : 'रवि_सोम_मंगल_बुध_गुरू_शुक्र_शनि'.split('_'), weekdaysMin : 'र_सो_मं_बु_गु_शु_श'.split('_'), @@ -49,8 +47,8 @@ LTS : 'A h:mm:ss बजे', L : 'DD/MM/YYYY', LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY, LT', - LLLL : 'dddd, D MMMM YYYY, LT' + LLL : 'D MMMM YYYY, A h:mm बजे', + LLLL : 'dddd, D MMMM YYYY, A h:mm बजे' }, calendar : { sameDay : '[आज] LT', @@ -87,6 +85,21 @@ }, // Hindi notation for meridiems are quite fuzzy in practice. While there exists // a rigid notion of a 'Pahar' it is not used as rigidly in modern Hindi. + meridiemParse: /रात|सुबह|दोपहर|शाम/, + meridiemHour : function (hour, meridiem) { + if (hour === 12) { + hour = 0; + } + if (meridiem === 'रात') { + return hour < 4 ? hour : hour + 12; + } else if (meridiem === 'सुबह') { + return hour; + } else if (meridiem === 'दोपहर') { + return hour >= 10 ? hour : hour + 12; + } else if (meridiem === 'शाम') { + return hour + 12; + } + }, meridiem : function (hour, minute, isLower) { if (hour < 4) { return 'रात'; @@ -105,4 +118,7 @@ doy : 6 // The week that contains Jan 1st is the first week of the year. } }); -})); + + return hi; + +})); \ No newline at end of file diff --git a/resources/lib/moment/locale/hr.js b/resources/lib/moment/locale/hr.js index be9d785e3a..a3a9be04a2 100644 --- a/resources/lib/moment/locale/hr.js +++ b/resources/lib/moment/locale/hr.js @@ -1,119 +1,118 @@ -// moment.js locale configuration -// locale : hrvatski (hr) -// author : Bojan Marković : https://github.com/bmarkovic +//! moment.js locale configuration +//! locale : Croatian [hr] +//! author : Bojan Marković : https://github.com/bmarkovic + +;(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' + && typeof require === 'function' ? factory(require('../moment')) : + typeof define === 'function' && define.amd ? define(['../moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; -// based on (sl) translation by Robert SedovÅ¡ek -(function (factory) { - // Comment out broken wrapper, see T145382 - /*if (typeof define === 'function' && define.amd) { - define(['moment'], factory); // AMD - } else if (typeof exports === 'object') { - module.exports = factory(require('../moment')); // Node - } else { - factory((typeof global !== 'undefined' ? global : this).moment); // node or other global - }*/ - factory(this.moment); -}(function (moment) { function translate(number, withoutSuffix, key) { var result = number + ' '; switch (key) { - case 'm': - return withoutSuffix ? 'jedna minuta' : 'jedne minute'; - case 'mm': - if (number === 1) { - result += 'minuta'; - } else if (number === 2 || number === 3 || number === 4) { - result += 'minute'; - } else { - result += 'minuta'; - } - return result; - case 'h': - return withoutSuffix ? 'jedan sat' : 'jednog sata'; - case 'hh': - if (number === 1) { - result += 'sat'; - } else if (number === 2 || number === 3 || number === 4) { - result += 'sata'; - } else { - result += 'sati'; - } - return result; - case 'dd': - if (number === 1) { - result += 'dan'; - } else { - result += 'dana'; - } - return result; - case 'MM': - if (number === 1) { - result += 'mjesec'; - } else if (number === 2 || number === 3 || number === 4) { - result += 'mjeseca'; - } else { - result += 'mjeseci'; - } - return result; - case 'yy': - if (number === 1) { - result += 'godina'; - } else if (number === 2 || number === 3 || number === 4) { - result += 'godine'; - } else { - result += 'godina'; - } - return result; + case 'm': + return withoutSuffix ? 'jedna minuta' : 'jedne minute'; + case 'mm': + if (number === 1) { + result += 'minuta'; + } else if (number === 2 || number === 3 || number === 4) { + result += 'minute'; + } else { + result += 'minuta'; + } + return result; + case 'h': + return withoutSuffix ? 'jedan sat' : 'jednog sata'; + case 'hh': + if (number === 1) { + result += 'sat'; + } else if (number === 2 || number === 3 || number === 4) { + result += 'sata'; + } else { + result += 'sati'; + } + return result; + case 'dd': + if (number === 1) { + result += 'dan'; + } else { + result += 'dana'; + } + return result; + case 'MM': + if (number === 1) { + result += 'mjesec'; + } else if (number === 2 || number === 3 || number === 4) { + result += 'mjeseca'; + } else { + result += 'mjeseci'; + } + return result; + case 'yy': + if (number === 1) { + result += 'godina'; + } else if (number === 2 || number === 3 || number === 4) { + result += 'godine'; + } else { + result += 'godina'; + } + return result; } } - return moment.defineLocale('hr', { - months : 'sječanj_veljača_ožujak_travanj_svibanj_lipanj_srpanj_kolovoz_rujan_listopad_studeni_prosinac'.split('_'), - monthsShort : 'sje._vel._ožu._tra._svi._lip._srp._kol._ruj._lis._stu._pro.'.split('_'), + var hr = moment.defineLocale('hr', { + months : { + format: 'siječnja_veljače_ožujka_travnja_svibnja_lipnja_srpnja_kolovoza_rujna_listopada_studenoga_prosinca'.split('_'), + standalone: 'siječanj_veljača_ožujak_travanj_svibanj_lipanj_srpanj_kolovoz_rujan_listopad_studeni_prosinac'.split('_') + }, + monthsShort : 'sij._velj._ožu._tra._svi._lip._srp._kol._ruj._lis._stu._pro.'.split('_'), + monthsParseExact: true, weekdays : 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split('_'), weekdaysShort : 'ned._pon._uto._sri._čet._pet._sub.'.split('_'), weekdaysMin : 'ne_po_ut_sr_če_pe_su'.split('_'), + weekdaysParseExact : true, longDateFormat : { LT : 'H:mm', - LTS : 'LT:ss', - L : 'DD. MM. YYYY', + LTS : 'H:mm:ss', + L : 'DD.MM.YYYY', LL : 'D. MMMM YYYY', - LLL : 'D. MMMM YYYY LT', - LLLL : 'dddd, D. MMMM YYYY LT' + LLL : 'D. MMMM YYYY H:mm', + LLLL : 'dddd, D. MMMM YYYY H:mm' }, calendar : { sameDay : '[danas u] LT', nextDay : '[sutra u] LT', - nextWeek : function () { switch (this.day()) { - case 0: - return '[u] [nedjelju] [u] LT'; - case 3: - return '[u] [srijedu] [u] LT'; - case 6: - return '[u] [subotu] [u] LT'; - case 1: - case 2: - case 4: - case 5: - return '[u] dddd [u] LT'; + case 0: + return '[u] [nedjelju] [u] LT'; + case 3: + return '[u] [srijedu] [u] LT'; + case 6: + return '[u] [subotu] [u] LT'; + case 1: + case 2: + case 4: + case 5: + return '[u] dddd [u] LT'; } }, lastDay : '[jučer u] LT', lastWeek : function () { switch (this.day()) { - case 0: - case 3: - return '[proÅ¡lu] dddd [u] LT'; - case 6: - return '[proÅ¡le] [subote] [u] LT'; - case 1: - case 2: - case 4: - case 5: - return '[proÅ¡li] dddd [u] LT'; + case 0: + case 3: + return '[proÅ¡lu] dddd [u] LT'; + case 6: + return '[proÅ¡le] [subote] [u] LT'; + case 1: + case 2: + case 4: + case 5: + return '[proÅ¡li] dddd [u] LT'; } }, sameElse : 'L' @@ -140,4 +139,7 @@ doy : 7 // The week that contains Jan 1st is the first week of the year. } }); -})); + + return hr; + +})); \ No newline at end of file diff --git a/resources/lib/moment/locale/hu.js b/resources/lib/moment/locale/hu.js index 3ed864e9b0..af5c73155a 100644 --- a/resources/lib/moment/locale/hu.js +++ b/resources/lib/moment/locale/hu.js @@ -1,57 +1,50 @@ -// moment.js locale configuration -// locale : hungarian (hu) -// author : Adam Brunner : https://github.com/adambrunner +//! moment.js locale configuration +//! locale : Hungarian [hu] +//! author : Adam Brunner : https://github.com/adambrunner + +;(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' + && typeof require === 'function' ? factory(require('../moment')) : + typeof define === 'function' && define.amd ? define(['../moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; -(function (factory) { - // Comment out broken wrapper, see T145382 - /*if (typeof define === 'function' && define.amd) { - define(['moment'], factory); // AMD - } else if (typeof exports === 'object') { - module.exports = factory(require('../moment')); // Node - } else { - factory((typeof global !== 'undefined' ? global : this).moment); // node or other global - }*/ - factory(this.moment); -}(function (moment) { - var weekEndings = 'vasárnap hétfőn kedden szerdán csütörtökön pénteken szombaton'.split(' '); + var weekEndings = 'vasárnap hétfőn kedden szerdán csütörtökön pénteken szombaton'.split(' '); function translate(number, withoutSuffix, key, isFuture) { var num = number, suffix; - switch (key) { - case 's': - return (isFuture || withoutSuffix) ? 'néhány másodperc' : 'néhány másodperce'; - case 'm': - return 'egy' + (isFuture || withoutSuffix ? ' perc' : ' perce'); - case 'mm': - return num + (isFuture || withoutSuffix ? ' perc' : ' perce'); - case 'h': - return 'egy' + (isFuture || withoutSuffix ? ' óra' : ' órája'); - case 'hh': - return num + (isFuture || withoutSuffix ? ' óra' : ' órája'); - case 'd': - return 'egy' + (isFuture || withoutSuffix ? ' nap' : ' napja'); - case 'dd': - return num + (isFuture || withoutSuffix ? ' nap' : ' napja'); - case 'M': - return 'egy' + (isFuture || withoutSuffix ? ' hónap' : ' hónapja'); - case 'MM': - return num + (isFuture || withoutSuffix ? ' hónap' : ' hónapja'); - case 'y': - return 'egy' + (isFuture || withoutSuffix ? ' év' : ' éve'); - case 'yy': - return num + (isFuture || withoutSuffix ? ' év' : ' éve'); + case 's': + return (isFuture || withoutSuffix) ? 'néhány másodperc' : 'néhány másodperce'; + case 'm': + return 'egy' + (isFuture || withoutSuffix ? ' perc' : ' perce'); + case 'mm': + return num + (isFuture || withoutSuffix ? ' perc' : ' perce'); + case 'h': + return 'egy' + (isFuture || withoutSuffix ? ' óra' : ' órája'); + case 'hh': + return num + (isFuture || withoutSuffix ? ' óra' : ' órája'); + case 'd': + return 'egy' + (isFuture || withoutSuffix ? ' nap' : ' napja'); + case 'dd': + return num + (isFuture || withoutSuffix ? ' nap' : ' napja'); + case 'M': + return 'egy' + (isFuture || withoutSuffix ? ' hónap' : ' hónapja'); + case 'MM': + return num + (isFuture || withoutSuffix ? ' hónap' : ' hónapja'); + case 'y': + return 'egy' + (isFuture || withoutSuffix ? ' év' : ' éve'); + case 'yy': + return num + (isFuture || withoutSuffix ? ' év' : ' éve'); } - return ''; } - function week(isFuture) { return (isFuture ? '' : '[múlt] ') + '[' + weekEndings[this.day()] + '] LT[-kor]'; } - return moment.defineLocale('hu', { + var hu = moment.defineLocale('hu', { months : 'január_február_március_április_május_június_július_augusztus_szeptember_október_november_december'.split('_'), monthsShort : 'jan_feb_márc_ápr_máj_jún_júl_aug_szept_okt_nov_dec'.split('_'), weekdays : 'vasárnap_hétfő_kedd_szerda_csütörtök_péntek_szombat'.split('_'), @@ -59,11 +52,15 @@ weekdaysMin : 'v_h_k_sze_cs_p_szo'.split('_'), longDateFormat : { LT : 'H:mm', - LTS : 'LT:ss', + LTS : 'H:mm:ss', L : 'YYYY.MM.DD.', LL : 'YYYY. MMMM D.', - LLL : 'YYYY. MMMM D., LT', - LLLL : 'YYYY. MMMM D., dddd LT' + LLL : 'YYYY. MMMM D. H:mm', + LLLL : 'YYYY. MMMM D., dddd H:mm' + }, + meridiemParse: /de|du/i, + isPM: function (input) { + return input.charAt(1).toLowerCase() === 'u'; }, meridiem : function (hours, minutes, isLower) { if (hours < 12) { @@ -106,4 +103,7 @@ doy : 7 // The week that contains Jan 1st is the first week of the year. } }); -})); + + return hu; + +})); \ No newline at end of file diff --git a/resources/lib/moment/locale/hy-am.js b/resources/lib/moment/locale/hy-am.js index 1e6540bb60..8b262005f0 100644 --- a/resources/lib/moment/locale/hy-am.js +++ b/resources/lib/moment/locale/hy-am.js @@ -1,56 +1,31 @@ -// moment.js locale configuration -// locale : Armenian (hy-am) -// author : Armendarabyan : https://github.com/armendarabyan +//! moment.js locale configuration +//! locale : Armenian [hy-am] +//! author : Armendarabyan : https://github.com/armendarabyan -(function (factory) { - // Comment out broken wrapper, see T145382 - /*if (typeof define === 'function' && define.amd) { - define(['moment'], factory); // AMD - } else if (typeof exports === 'object') { - module.exports = factory(require('../moment')); // Node - } else { - factory((typeof global !== 'undefined' ? global : this).moment); // node or other global - }*/ - factory(this.moment); -}(function (moment) { - function monthsCaseReplace(m, format) { - var months = { - 'nominative': 'հունվար_փետրվար_մարտ_ապրիլ_Õ´Õ¡ÕµÕ«Õ½_հունիս_հուլիս_օգոստոս_սեպտեմբեր_հոկտեմբեր_նոյեմբեր_դեկտեմբեր'.split('_'), - 'accusative': 'հունվարի_փետրվարի_մարտի_ապրիլի_Õ´Õ¡ÕµÕ«Õ½Õ«_հունիսի_հուլիսի_օգոստոսի_սեպտեմբերի_հոկտեմբերի_նոյեմբերի_դեկտեմբերի'.split('_') - }, - - nounCase = (/D[oD]?(\[[^\[\]]*\]|\s+)+MMMM?/).test(format) ? - 'accusative' : - 'nominative'; - - return months[nounCase][m.month()]; - } - - function monthsShortCaseReplace(m, format) { - var monthsShort = 'Õ°Õ¶Õ¾_փտր_մրտ_ապր_Õ´ÕµÕ½_Õ°Õ¶Õ½_Õ°Õ¬Õ½_օգս_Õ½ÕºÕ¿_Õ°Õ¯Õ¿_Õ¶Õ´Õ¢_Õ¤Õ¯Õ¿'.split('_'); +;(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' + && typeof require === 'function' ? factory(require('../moment')) : + typeof define === 'function' && define.amd ? define(['../moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; - return monthsShort[m.month()]; - } - function weekdaysCaseReplace(m, format) { - var weekdays = 'կիրակի_երկուշաբթի_երեքշաբթի_չորեքշաբթի_Õ°Õ«Õ¶Õ£Õ·Õ¡Õ¢Õ©Õ«_ուրբաթ_Õ·Õ¡Õ¢Õ¡Õ©'.split('_'); - - return weekdays[m.day()]; - } - - return moment.defineLocale('hy-am', { - months : monthsCaseReplace, - monthsShort : monthsShortCaseReplace, - weekdays : weekdaysCaseReplace, + var hy_am = moment.defineLocale('hy-am', { + months : { + format: 'հունվարի_փետրվարի_մարտի_ապրիլի_Õ´Õ¡ÕµÕ«Õ½Õ«_հունիսի_հուլիսի_օգոստոսի_սեպտեմբերի_հոկտեմբերի_նոյեմբերի_դեկտեմբերի'.split('_'), + standalone: 'հունվար_փետրվար_մարտ_ապրիլ_Õ´Õ¡ÕµÕ«Õ½_հունիս_հուլիս_օգոստոս_սեպտեմբեր_հոկտեմբեր_նոյեմբեր_դեկտեմբեր'.split('_') + }, + monthsShort : 'Õ°Õ¶Õ¾_փտր_մրտ_ապր_Õ´ÕµÕ½_Õ°Õ¶Õ½_Õ°Õ¬Õ½_օգս_Õ½ÕºÕ¿_Õ°Õ¯Õ¿_Õ¶Õ´Õ¢_Õ¤Õ¯Õ¿'.split('_'), + weekdays : 'կիրակի_երկուշաբթի_երեքշաբթի_չորեքշաբթի_Õ°Õ«Õ¶Õ£Õ·Õ¡Õ¢Õ©Õ«_ուրբաթ_Õ·Õ¡Õ¢Õ¡Õ©'.split('_'), weekdaysShort : 'կրկ_երկ_երք_չրք_Õ°Õ¶Õ£_ուրբ_Õ·Õ¢Õ©'.split('_'), weekdaysMin : 'կրկ_երկ_երք_չրք_Õ°Õ¶Õ£_ուրբ_Õ·Õ¢Õ©'.split('_'), longDateFormat : { LT : 'HH:mm', - LTS : 'LT:ss', + LTS : 'HH:mm:ss', L : 'DD.MM.YYYY', LL : 'D MMMM YYYY Õ©.', - LLL : 'D MMMM YYYY Õ©., LT', - LLLL : 'dddd, D MMMM YYYY Õ©., LT' + LLL : 'D MMMM YYYY Õ©., HH:mm', + LLLL : 'dddd, D MMMM YYYY Õ©., HH:mm' }, calendar : { sameDay: '[այսօր] LT', @@ -79,7 +54,10 @@ y : 'տարի', yy : '%d տարի' }, - + meridiemParse: /գիշերվա|Õ¡Õ¼Õ¡Õ¾Õ¸Õ¿Õ¾Õ¡|ցերեկվա|երեկոյան/, + isPM: function (input) { + return /^(ցերեկվա|երեկոյան)$/.test(input); + }, meridiem : function (hour) { if (hour < 4) { return 'գիշերվա'; @@ -91,26 +69,27 @@ return 'երեկոյան'; } }, - ordinalParse: /\d{1,2}|\d{1,2}-(Õ«Õ¶|րդ)/, ordinal: function (number, period) { switch (period) { - case 'DDD': - case 'w': - case 'W': - case 'DDDo': - if (number === 1) { - return number + '-Õ«Õ¶'; - } - return number + '-րդ'; - default: - return number; + case 'DDD': + case 'w': + case 'W': + case 'DDDo': + if (number === 1) { + return number + '-Õ«Õ¶'; + } + return number + '-րդ'; + default: + return number; } }, - week : { dow : 1, // Monday is the first day of the week. doy : 7 // The week that contains Jan 1st is the first week of the year. } }); -})); + + return hy_am; + +})); \ No newline at end of file diff --git a/resources/lib/moment/locale/id.js b/resources/lib/moment/locale/id.js index b8fc9ad550..16dff2f1b5 100644 --- a/resources/lib/moment/locale/id.js +++ b/resources/lib/moment/locale/id.js @@ -1,20 +1,17 @@ -// moment.js locale configuration -// locale : Bahasa Indonesia (id) -// author : Mohammad Satrio Utomo : https://github.com/tyok -// reference: http://id.wikisource.org/wiki/Pedoman_Umum_Ejaan_Bahasa_Indonesia_yang_Disempurnakan +//! moment.js locale configuration +//! locale : Indonesian [id] +//! author : Mohammad Satrio Utomo : https://github.com/tyok +//! reference: http://id.wikisource.org/wiki/Pedoman_Umum_Ejaan_Bahasa_Indonesia_yang_Disempurnakan -(function (factory) { - // Comment out broken wrapper, see T145382 - /*if (typeof define === 'function' && define.amd) { - define(['moment'], factory); // AMD - } else if (typeof exports === 'object') { - module.exports = factory(require('../moment')); // Node - } else { - factory((typeof global !== 'undefined' ? global : this).moment); // node or other global - }*/ - factory(this.moment); -}(function (moment) { - return moment.defineLocale('id', { +;(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' + && typeof require === 'function' ? factory(require('../moment')) : + typeof define === 'function' && define.amd ? define(['../moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + + + var id = moment.defineLocale('id', { months : 'Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_November_Desember'.split('_'), monthsShort : 'Jan_Feb_Mar_Apr_Mei_Jun_Jul_Ags_Sep_Okt_Nov_Des'.split('_'), weekdays : 'Minggu_Senin_Selasa_Rabu_Kamis_Jumat_Sabtu'.split('_'), @@ -22,11 +19,24 @@ weekdaysMin : 'Mg_Sn_Sl_Rb_Km_Jm_Sb'.split('_'), longDateFormat : { LT : 'HH.mm', - LTS : 'LT.ss', + LTS : 'HH.mm.ss', L : 'DD/MM/YYYY', LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY [pukul] LT', - LLLL : 'dddd, D MMMM YYYY [pukul] LT' + LLL : 'D MMMM YYYY [pukul] HH.mm', + LLLL : 'dddd, D MMMM YYYY [pukul] HH.mm' + }, + meridiemParse: /pagi|siang|sore|malam/, + meridiemHour : function (hour, meridiem) { + if (hour === 12) { + hour = 0; + } + if (meridiem === 'pagi') { + return hour; + } else if (meridiem === 'siang') { + return hour >= 11 ? hour : hour + 12; + } else if (meridiem === 'sore' || meridiem === 'malam') { + return hour + 12; + } }, meridiem : function (hours, minutes, isLower) { if (hours < 11) { @@ -67,4 +77,7 @@ doy : 7 // The week that contains Jan 1st is the first week of the year. } }); -})); + + return id; + +})); \ No newline at end of file diff --git a/resources/lib/moment/locale/is.js b/resources/lib/moment/locale/is.js index 6422b47baf..810fee6173 100644 --- a/resources/lib/moment/locale/is.js +++ b/resources/lib/moment/locale/is.js @@ -1,18 +1,15 @@ -// moment.js locale configuration -// locale : icelandic (is) -// author : Hinrik Örn Sigurðsson : https://github.com/hinrik +//! moment.js locale configuration +//! locale : Icelandic [is] +//! author : Hinrik Örn Sigurðsson : https://github.com/hinrik + +;(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' + && typeof require === 'function' ? factory(require('../moment')) : + typeof define === 'function' && define.amd ? define(['../moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + -(function (factory) { - // Comment out broken wrapper, see T145382 - /*if (typeof define === 'function' && define.amd) { - define(['moment'], factory); // AMD - } else if (typeof exports === 'object') { - module.exports = factory(require('../moment')); // Node - } else { - factory((typeof global !== 'undefined' ? global : this).moment); // node or other global - }*/ - factory(this.moment); -}(function (moment) { function plural(n) { if (n % 100 === 11) { return true; @@ -21,67 +18,66 @@ } return true; } - function translate(number, withoutSuffix, key, isFuture) { var result = number + ' '; switch (key) { - case 's': - return withoutSuffix || isFuture ? 'nokkrar sekúndur' : 'nokkrum sekúndum'; - case 'm': - return withoutSuffix ? 'mínúta' : 'mínútu'; - case 'mm': - if (plural(number)) { - return result + (withoutSuffix || isFuture ? 'mínútur' : 'mínútum'); - } else if (withoutSuffix) { - return result + 'mínúta'; - } - return result + 'mínútu'; - case 'hh': - if (plural(number)) { - return result + (withoutSuffix || isFuture ? 'klukkustundir' : 'klukkustundum'); - } - return result + 'klukkustund'; - case 'd': - if (withoutSuffix) { - return 'dagur'; - } - return isFuture ? 'dag' : 'degi'; - case 'dd': - if (plural(number)) { + case 's': + return withoutSuffix || isFuture ? 'nokkrar sekúndur' : 'nokkrum sekúndum'; + case 'm': + return withoutSuffix ? 'mínúta' : 'mínútu'; + case 'mm': + if (plural(number)) { + return result + (withoutSuffix || isFuture ? 'mínútur' : 'mínútum'); + } else if (withoutSuffix) { + return result + 'mínúta'; + } + return result + 'mínútu'; + case 'hh': + if (plural(number)) { + return result + (withoutSuffix || isFuture ? 'klukkustundir' : 'klukkustundum'); + } + return result + 'klukkustund'; + case 'd': if (withoutSuffix) { - return result + 'dagar'; + return 'dagur'; } - return result + (isFuture ? 'daga' : 'dögum'); - } else if (withoutSuffix) { - return result + 'dagur'; - } - return result + (isFuture ? 'dag' : 'degi'); - case 'M': - if (withoutSuffix) { - return 'mánuður'; - } - return isFuture ? 'mánuð' : 'mánuði'; - case 'MM': - if (plural(number)) { + return isFuture ? 'dag' : 'degi'; + case 'dd': + if (plural(number)) { + if (withoutSuffix) { + return result + 'dagar'; + } + return result + (isFuture ? 'daga' : 'dögum'); + } else if (withoutSuffix) { + return result + 'dagur'; + } + return result + (isFuture ? 'dag' : 'degi'); + case 'M': if (withoutSuffix) { - return result + 'mánuðir'; + return 'mánuður'; + } + return isFuture ? 'mánuð' : 'mánuði'; + case 'MM': + if (plural(number)) { + if (withoutSuffix) { + return result + 'mánuðir'; + } + return result + (isFuture ? 'mánuði' : 'mánuðum'); + } else if (withoutSuffix) { + return result + 'mánuður'; + } + return result + (isFuture ? 'mánuð' : 'mánuði'); + case 'y': + return withoutSuffix || isFuture ? 'ár' : 'ári'; + case 'yy': + if (plural(number)) { + return result + (withoutSuffix || isFuture ? 'ár' : 'árum'); } - return result + (isFuture ? 'mánuði' : 'mánuðum'); - } else if (withoutSuffix) { - return result + 'mánuður'; - } - return result + (isFuture ? 'mánuð' : 'mánuði'); - case 'y': - return withoutSuffix || isFuture ? 'ár' : 'ári'; - case 'yy': - if (plural(number)) { - return result + (withoutSuffix || isFuture ? 'ár' : 'árum'); - } - return result + (withoutSuffix || isFuture ? 'ár' : 'ári'); + return result + (withoutSuffix || isFuture ? 'ár' : 'ári'); } } - return moment.defineLocale('is', { + var is = moment.defineLocale('is', { months : 'janúar_febrúar_mars_apríl_maí_júní_júlí_ágúst_september_október_nóvember_desember'.split('_'), monthsShort : 'jan_feb_mar_apr_maí_jún_júl_ágú_sep_okt_nóv_des'.split('_'), weekdays : 'sunnudagur_mánudagur_þriðjudagur_miðvikudagur_fimmtudagur_föstudagur_laugardagur'.split('_'), @@ -89,11 +85,11 @@ weekdaysMin : 'Su_Má_Þr_Mi_Fi_Fö_La'.split('_'), longDateFormat : { LT : 'H:mm', - LTS : 'LT:ss', - L : 'DD/MM/YYYY', + LTS : 'H:mm:ss', + L : 'DD.MM.YYYY', LL : 'D. MMMM YYYY', - LLL : 'D. MMMM YYYY [kl.] LT', - LLLL : 'dddd, D. MMMM YYYY [kl.] LT' + LLL : 'D. MMMM YYYY [kl.] H:mm', + LLLL : 'dddd, D. MMMM YYYY [kl.] H:mm' }, calendar : { sameDay : '[í dag kl.] LT', @@ -125,4 +121,7 @@ doy : 4 // The week that contains Jan 4th is the first week of the year. } }); -})); + + return is; + +})); \ No newline at end of file diff --git a/resources/lib/moment/locale/it.js b/resources/lib/moment/locale/it.js index 13309881cb..35d44ccacd 100644 --- a/resources/lib/moment/locale/it.js +++ b/resources/lib/moment/locale/it.js @@ -1,32 +1,29 @@ -// moment.js locale configuration -// locale : italian (it) -// author : Lorenzo : https://github.com/aliem -// author: Mattia Larentis: https://github.com/nostalgiaz +//! moment.js locale configuration +//! locale : Italian [it] +//! author : Lorenzo : https://github.com/aliem +//! author: Mattia Larentis: https://github.com/nostalgiaz -(function (factory) { - // Comment out broken wrapper, see T145382 - /*if (typeof define === 'function' && define.amd) { - define(['moment'], factory); // AMD - } else if (typeof exports === 'object') { - module.exports = factory(require('../moment')); // Node - } else { - factory((typeof global !== 'undefined' ? global : this).moment); // node or other global - }*/ - factory(this.moment); -}(function (moment) { - return moment.defineLocale('it', { +;(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' + && typeof require === 'function' ? factory(require('../moment')) : + typeof define === 'function' && define.amd ? define(['../moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + + + var it = moment.defineLocale('it', { months : 'gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre'.split('_'), monthsShort : 'gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic'.split('_'), weekdays : 'Domenica_Lunedì_Martedì_Mercoledì_Giovedì_Venerdì_Sabato'.split('_'), weekdaysShort : 'Dom_Lun_Mar_Mer_Gio_Ven_Sab'.split('_'), - weekdaysMin : 'D_L_Ma_Me_G_V_S'.split('_'), + weekdaysMin : 'Do_Lu_Ma_Me_Gi_Ve_Sa'.split('_'), longDateFormat : { LT : 'HH:mm', - LTS : 'LT:ss', + LTS : 'HH:mm:ss', L : 'DD/MM/YYYY', LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY LT', - LLLL : 'dddd, D MMMM YYYY LT' + LLL : 'D MMMM YYYY HH:mm', + LLLL : 'dddd, D MMMM YYYY HH:mm' }, calendar : { sameDay: '[Oggi alle] LT', @@ -67,4 +64,7 @@ doy : 4 // The week that contains Jan 4th is the first week of the year. } }); -})); + + return it; + +})); \ No newline at end of file diff --git a/resources/lib/moment/locale/ja.js b/resources/lib/moment/locale/ja.js index c3e3ebf596..adea3597c2 100644 --- a/resources/lib/moment/locale/ja.js +++ b/resources/lib/moment/locale/ja.js @@ -1,19 +1,16 @@ -// moment.js locale configuration -// locale : japanese (ja) -// author : LI Long : https://github.com/baryon +//! moment.js locale configuration +//! locale : Japanese [ja] +//! author : LI Long : https://github.com/baryon -(function (factory) { - // Comment out broken wrapper, see T145382 - /*if (typeof define === 'function' && define.amd) { - define(['moment'], factory); // AMD - } else if (typeof exports === 'object') { - module.exports = factory(require('../moment')); // Node - } else { - factory((typeof global !== 'undefined' ? global : this).moment); // node or other global - }*/ - factory(this.moment); -}(function (moment) { - return moment.defineLocale('ja', { +;(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' + && typeof require === 'function' ? factory(require('../moment')) : + typeof define === 'function' && define.amd ? define(['../moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + + + var ja = moment.defineLocale('ja', { months : '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'), monthsShort : '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'), weekdays : '日曜日_月曜日_火曜日_水曜日_木曜日_金曜日_土曜日'.split('_'), @@ -21,11 +18,15 @@ weekdaysMin : '日_月_火_æ°´_木_金_土'.split('_'), longDateFormat : { LT : 'Ah時m分', - LTS : 'LTs秒', + LTS : 'Ah時m分s秒', L : 'YYYY/MM/DD', LL : 'YYYYå¹´M月D日', - LLL : 'YYYYå¹´M月D日LT', - LLLL : 'YYYYå¹´M月D日LT dddd' + LLL : 'YYYYå¹´M月D日Ah時m分', + LLLL : 'YYYYå¹´M月D日Ah時m分 dddd' + }, + meridiemParse: /午前|午後/i, + isPM : function (input) { + return input === '午後'; }, meridiem : function (hour, minute, isLower) { if (hour < 12) { @@ -42,6 +43,17 @@ lastWeek : '[前週]dddd LT', sameElse : 'L' }, + ordinalParse : /\d{1,2}日/, + ordinal : function (number, period) { + switch (period) { + case 'd': + case 'D': + case 'DDD': + return number + '日'; + default: + return number; + } + }, relativeTime : { future : '%s後', past : '%s前', @@ -58,4 +70,7 @@ yy : '%då¹´' } }); -})); + + return ja; + +})); \ No newline at end of file diff --git a/resources/lib/moment/locale/jv.js b/resources/lib/moment/locale/jv.js new file mode 100644 index 0000000000..c58e0768ab --- /dev/null +++ b/resources/lib/moment/locale/jv.js @@ -0,0 +1,83 @@ +//! moment.js locale configuration +//! locale : Japanese [jv] +//! author : Rony Lantip : https://github.com/lantip +//! reference: http://jv.wikipedia.org/wiki/Basa_Jawa + +;(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' + && typeof require === 'function' ? factory(require('../moment')) : + typeof define === 'function' && define.amd ? define(['../moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + + + var jv = moment.defineLocale('jv', { + months : 'Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_Nopember_Desember'.split('_'), + monthsShort : 'Jan_Feb_Mar_Apr_Mei_Jun_Jul_Ags_Sep_Okt_Nop_Des'.split('_'), + weekdays : 'Minggu_Senen_Seloso_Rebu_Kemis_Jemuwah_Septu'.split('_'), + weekdaysShort : 'Min_Sen_Sel_Reb_Kem_Jem_Sep'.split('_'), + weekdaysMin : 'Mg_Sn_Sl_Rb_Km_Jm_Sp'.split('_'), + longDateFormat : { + LT : 'HH.mm', + LTS : 'HH.mm.ss', + L : 'DD/MM/YYYY', + LL : 'D MMMM YYYY', + LLL : 'D MMMM YYYY [pukul] HH.mm', + LLLL : 'dddd, D MMMM YYYY [pukul] HH.mm' + }, + meridiemParse: /enjing|siyang|sonten|ndalu/, + meridiemHour : function (hour, meridiem) { + if (hour === 12) { + hour = 0; + } + if (meridiem === 'enjing') { + return hour; + } else if (meridiem === 'siyang') { + return hour >= 11 ? hour : hour + 12; + } else if (meridiem === 'sonten' || meridiem === 'ndalu') { + return hour + 12; + } + }, + meridiem : function (hours, minutes, isLower) { + if (hours < 11) { + return 'enjing'; + } else if (hours < 15) { + return 'siyang'; + } else if (hours < 19) { + return 'sonten'; + } else { + return 'ndalu'; + } + }, + calendar : { + sameDay : '[Dinten puniko pukul] LT', + nextDay : '[Mbenjang pukul] LT', + nextWeek : 'dddd [pukul] LT', + lastDay : '[Kala wingi pukul] LT', + lastWeek : 'dddd [kepengker pukul] LT', + sameElse : 'L' + }, + relativeTime : { + future : 'wonten ing %s', + past : '%s ingkang kepengker', + s : 'sawetawis detik', + m : 'setunggal menit', + mm : '%d menit', + h : 'setunggal jam', + hh : '%d jam', + d : 'sedinten', + dd : '%d dinten', + M : 'sewulan', + MM : '%d wulan', + y : 'setaun', + yy : '%d taun' + }, + week : { + dow : 1, // Monday is the first day of the week. + doy : 7 // The week that contains Jan 1st is the first week of the year. + } + }); + + return jv; + +})); \ No newline at end of file diff --git a/resources/lib/moment/locale/ka.js b/resources/lib/moment/locale/ka.js index 1437c7179a..b9faf68344 100644 --- a/resources/lib/moment/locale/ka.js +++ b/resources/lib/moment/locale/ka.js @@ -1,48 +1,26 @@ -// moment.js locale configuration -// locale : Georgian (ka) -// author : Irakli Janiashvili : https://github.com/irakli-janiashvili +//! moment.js locale configuration +//! locale : Georgian [ka] +//! author : Irakli Janiashvili : https://github.com/irakli-janiashvili -(function (factory) { - // Comment out broken wrapper, see T145382 - /*if (typeof define === 'function' && define.amd) { - define(['moment'], factory); // AMD - } else if (typeof exports === 'object') { - module.exports = factory(require('../moment')); // Node - } else { - factory((typeof global !== 'undefined' ? global : this).moment); // node or other global - }*/ - factory(this.moment); -}(function (moment) { - function monthsCaseReplace(m, format) { - var months = { - 'nominative': 'იანვარი_თებერვალი_მარტი_აპრილი_მაისი_ივნისი_ივლისი_აგვისტო_სექტემბერი_ოქტომბერი_ნოემბერი_დეკემბერი'.split('_'), - 'accusative': 'იანვარს_თებერვალს_მარტს_აპრილის_მაისს_ივნისს_ივლისს_აგვისტს_სექტემბერს_ოქტომბერს_ნოემბერს_დეკემბერს'.split('_') - }, - - nounCase = (/D[oD] *MMMM?/).test(format) ? - 'accusative' : - 'nominative'; +;(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' + && typeof require === 'function' ? factory(require('../moment')) : + typeof define === 'function' && define.amd ? define(['../moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; - return months[nounCase][m.month()]; - } - function weekdaysCaseReplace(m, format) { - var weekdays = { - 'nominative': 'კვირა_ორშაბათი_სამშაბათი_ოთხშაბათი_ხუთშაბათი_პარასკევი_შაბათი'.split('_'), - 'accusative': 'კვირას_ორშაბათს_სამშაბათს_ოთხშაბათს_ხუთშაბათს_პარასკევს_შაბათს'.split('_') + var ka = moment.defineLocale('ka', { + months : { + standalone: 'იანვარი_თებერვალი_მარტი_აპრილი_მაისი_ივნისი_ივლისი_აგვისტო_სექტემბერი_ოქტომბერი_ნოემბერი_დეკემბერი'.split('_'), + format: 'იანვარს_თებერვალს_მარტს_აპრილის_მაისს_ივნისს_ივლისს_აგვისტს_სექტემბერს_ოქტომბერს_ნოემბერს_დეკემბერს'.split('_') }, - - nounCase = (/(წინა|შემდეგ)/).test(format) ? - 'accusative' : - 'nominative'; - - return weekdays[nounCase][m.day()]; - } - - return moment.defineLocale('ka', { - months : monthsCaseReplace, monthsShort : 'იან_თებ_მარ_აპრ_მაი_ივნ_ივლ_აგვ_სექ_ოქტ_ნოე_დეკ'.split('_'), - weekdays : weekdaysCaseReplace, + weekdays : { + standalone: 'კვირა_ორშაბათი_სამშაბათი_ოთხშაბათი_ხუთშაბათი_პარასკევი_შაბათი'.split('_'), + format: 'კვირას_ორშაბათს_სამშაბათს_ოთხშაბათს_ხუთშაბათს_პარასკევს_შაბათს'.split('_'), + isFormat: /(წინა|შემდეგ)/ + }, weekdaysShort : 'კვი_ორშ_სამ_ოთხ_ხუთ_პარ_შაბ'.split('_'), weekdaysMin : 'კვ_ორ_სა_ოთ_ხუ_პა_შა'.split('_'), longDateFormat : { @@ -50,8 +28,8 @@ LTS : 'h:mm:ss A', L : 'DD/MM/YYYY', LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY LT', - LLLL : 'dddd, D MMMM YYYY LT' + LLL : 'D MMMM YYYY h:mm A', + LLLL : 'dddd, D MMMM YYYY h:mm A' }, calendar : { sameDay : '[დღეს] LT[-ზე]', @@ -92,15 +70,12 @@ if (number === 0) { return number; } - if (number === 1) { return number + '-ლი'; } - if ((number < 20) || (number <= 100 && (number % 20 === 0)) || (number % 100 === 0)) { return 'მე-' + number; } - return number + '-ე'; }, week : { @@ -108,4 +83,7 @@ doy : 7 } }); -})); + + return ka; + +})); \ No newline at end of file diff --git a/resources/lib/moment/locale/kk.js b/resources/lib/moment/locale/kk.js new file mode 100644 index 0000000000..270106f156 --- /dev/null +++ b/resources/lib/moment/locale/kk.js @@ -0,0 +1,87 @@ +//! moment.js locale configuration +//! locale : Kazakh [kk] +//! authors : Nurlan Rakhimzhanov : https://github.com/nurlan + +;(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' + && typeof require === 'function' ? factory(require('../moment')) : + typeof define === 'function' && define.amd ? define(['../moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + + + var suffixes = { + 0: '-ші', + 1: '-ші', + 2: '-ші', + 3: '-ші', + 4: '-ші', + 5: '-ші', + 6: '-шы', + 7: '-ші', + 8: '-ші', + 9: '-шы', + 10: '-шы', + 20: '-шы', + 30: '-шы', + 40: '-шы', + 50: '-ші', + 60: '-шы', + 70: '-ші', + 80: '-ші', + 90: '-шы', + 100: '-ші' + }; + + var kk = moment.defineLocale('kk', { + months : 'қаңтар_ақпан_наурыз_сәуір_мамыр_маусым_шілде_тамыз_қыркүйек_қазан_қараша_желтоқсан'.split('_'), + monthsShort : 'қаң_ақп_нау_сәу_мам_мау_шіл_там_қыр_қаз_қар_жел'.split('_'), + weekdays : 'жексенбі_дүйсенбі_сейсенбі_сәрсенбі_бейсенбі_жұма_сенбі'.split('_'), + weekdaysShort : 'жек_дүй_сей_сәр_бей_жұм_сен'.split('_'), + weekdaysMin : 'жк_дй_сй_ср_бй_жм_сн'.split('_'), + longDateFormat : { + LT : 'HH:mm', + LTS : 'HH:mm:ss', + L : 'DD.MM.YYYY', + LL : 'D MMMM YYYY', + LLL : 'D MMMM YYYY HH:mm', + LLLL : 'dddd, D MMMM YYYY HH:mm' + }, + calendar : { + sameDay : '[Бүгін сағат] LT', + nextDay : '[Ертең сағат] LT', + nextWeek : 'dddd [сағат] LT', + lastDay : '[Кеше сағат] LT', + lastWeek : '[Өткен аптаның] dddd [сағат] LT', + sameElse : 'L' + }, + relativeTime : { + future : '%s ішінде', + past : '%s бұрын', + s : 'бірнеше секунд', + m : 'бір минут', + mm : '%d минут', + h : 'бір сағат', + hh : '%d сағат', + d : 'бір күн', + dd : '%d күн', + M : 'бір ай', + MM : '%d ай', + y : 'бір жыл', + yy : '%d жыл' + }, + ordinalParse: /\d{1,2}-(ші|шы)/, + ordinal : function (number) { + var a = number % 10, + b = number >= 100 ? 100 : null; + return number + (suffixes[number] || suffixes[a] || suffixes[b]); + }, + week : { + dow : 1, // Monday is the first day of the week. + doy : 7 // The week that contains Jan 1st is the first week of the year. + } + }); + + return kk; + +})); \ No newline at end of file diff --git a/resources/lib/moment/locale/km.js b/resources/lib/moment/locale/km.js index 62297916c2..cbfe31df79 100644 --- a/resources/lib/moment/locale/km.js +++ b/resources/lib/moment/locale/km.js @@ -1,34 +1,31 @@ -// moment.js locale configuration -// locale : khmer (km) -// author : Kruy Vanna : https://github.com/kruyvanna +//! moment.js locale configuration +//! locale : Cambodian [km] +//! author : Kruy Vanna : https://github.com/kruyvanna -(function (factory) { - // Comment out broken wrapper, see T145382 - /*if (typeof define === 'function' && define.amd) { - define(['moment'], factory); // AMD - } else if (typeof exports === 'object') { - module.exports = factory(require('../moment')); // Node - } else { - factory((typeof global !== 'undefined' ? global : this).moment); // node or other global - }*/ - factory(this.moment); -}(function (moment) { - return moment.defineLocale('km', { - months: 'មករា_កុម្ភៈ_មិនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ'.split('_'), - monthsShort: 'មករា_កុម្ភៈ_មិនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ'.split('_'), +;(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' + && typeof require === 'function' ? factory(require('../moment')) : + typeof define === 'function' && define.amd ? define(['../moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + + + var km = moment.defineLocale('km', { + months: 'មករា_កុម្ភៈ_មីនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ'.split('_'), + monthsShort: 'មករា_កុម្ភៈ_មីនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ'.split('_'), weekdays: 'អាទិត្យ_ច័ន្ទ_អង្គារ_ពុធ_ព្រហស្បតិ៍_សុក្រ_សៅរ៍'.split('_'), weekdaysShort: 'អាទិត្យ_ច័ន្ទ_អង្គារ_ពុធ_ព្រហស្បតិ៍_សុក្រ_សៅរ៍'.split('_'), weekdaysMin: 'អាទិត្យ_ច័ន្ទ_អង្គារ_ពុធ_ព្រហស្បតិ៍_សុក្រ_សៅរ៍'.split('_'), longDateFormat: { LT: 'HH:mm', - LTS : 'LT:ss', + LTS : 'HH:mm:ss', L: 'DD/MM/YYYY', LL: 'D MMMM YYYY', - LLL: 'D MMMM YYYY LT', - LLLL: 'dddd, D MMMM YYYY LT' + LLL: 'D MMMM YYYY HH:mm', + LLLL: 'dddd, D MMMM YYYY HH:mm' }, calendar: { - sameDay: '[ថ្ងៃនៈ ម៉ោង] LT', + sameDay: '[ថ្ងៃនេះ ម៉ោង] LT', nextDay: '[ស្អែក ម៉ោង] LT', nextWeek: 'dddd [ម៉ោង] LT', lastDay: '[ម្សិលមិញ ម៉ោង] LT', @@ -55,4 +52,7 @@ doy: 4 // The week that contains Jan 4th is the first week of the year. } }); -})); + + return km; + +})); \ No newline at end of file diff --git a/resources/lib/moment/locale/ko.js b/resources/lib/moment/locale/ko.js index 2638959d73..4f067e841b 100644 --- a/resources/lib/moment/locale/ko.js +++ b/resources/lib/moment/locale/ko.js @@ -1,22 +1,17 @@ -// moment.js locale configuration -// locale : korean (ko) -// -// authors -// -// - Kyungwook, Park : https://github.com/kyungw00k -// - Jeeeyul Lee <jeeeyul@gmail.com> -(function (factory) { - // Comment out broken wrapper, see T145382 - /*if (typeof define === 'function' && define.amd) { - define(['moment'], factory); // AMD - } else if (typeof exports === 'object') { - module.exports = factory(require('../moment')); // Node - } else { - factory((typeof global !== 'undefined' ? global : this).moment); // node or other global - }*/ - factory(this.moment); -}(function (moment) { - return moment.defineLocale('ko', { +//! moment.js locale configuration +//! locale : Korean [ko] +//! author : Kyungwook, Park : https://github.com/kyungw00k +//! author : Jeeeyul Lee <jeeeyul@gmail.com> + +;(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' + && typeof require === 'function' ? factory(require('../moment')) : + typeof define === 'function' && define.amd ? define(['../moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + + + var ko = moment.defineLocale('ko', { months : '1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월'.split('_'), monthsShort : '1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월'.split('_'), weekdays : '일요일_월요일_화요일_수요일_목요일_금요일_토요일'.split('_'), @@ -27,11 +22,8 @@ LTS : 'A h시 m분 s초', L : 'YYYY.MM.DD', LL : 'YYYY년 MMMM D일', - LLL : 'YYYY년 MMMM D일 LT', - LLLL : 'YYYY년 MMMM D일 dddd LT' - }, - meridiem : function (hour, minute, isUpper) { - return hour < 12 ? '오전' : '오후'; + LLL : 'YYYY년 MMMM D일 A h시 m분', + LLLL : 'YYYY년 MMMM D일 dddd A h시 m분' }, calendar : { sameDay : '오늘 LT', @@ -44,24 +36,30 @@ relativeTime : { future : '%s 후', past : '%s 전', - s : '몇초', + s : '몇 초', ss : '%d초', m : '일분', mm : '%d분', - h : '한시간', + h : '한 시간', hh : '%d시간', d : '하루', dd : '%d일', - M : '한달', + M : '한 달', MM : '%d달', - y : '일년', + y : '일 년', yy : '%d년' }, ordinalParse : /\d{1,2}일/, ordinal : '%d일', - meridiemParse : /(오전|오후)/, + meridiemParse : /오전|오후/, isPM : function (token) { return token === '오후'; + }, + meridiem : function (hour, minute, isUpper) { + return hour < 12 ? '오전' : '오후'; } }); -})); + + return ko; + +})); \ No newline at end of file diff --git a/resources/lib/moment/locale/ky.js b/resources/lib/moment/locale/ky.js new file mode 100644 index 0000000000..eaffed1001 --- /dev/null +++ b/resources/lib/moment/locale/ky.js @@ -0,0 +1,88 @@ +//! moment.js locale configuration +//! locale : Kyrgyz [ky] +//! author : Chyngyz Arystan uulu : https://github.com/chyngyz + +;(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' + && typeof require === 'function' ? factory(require('../moment')) : + typeof define === 'function' && define.amd ? define(['../moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + + + + var suffixes = { + 0: '-чү', + 1: '-чи', + 2: '-чи', + 3: '-чү', + 4: '-чү', + 5: '-чи', + 6: '-чы', + 7: '-чи', + 8: '-чи', + 9: '-чу', + 10: '-чу', + 20: '-чы', + 30: '-чу', + 40: '-чы', + 50: '-чү', + 60: '-чы', + 70: '-чи', + 80: '-чи', + 90: '-чу', + 100: '-чү' + }; + + var ky = moment.defineLocale('ky', { + months : 'январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь'.split('_'), + monthsShort : 'янв_фев_март_апр_май_июнь_июль_авг_сен_окт_ноя_дек'.split('_'), + weekdays : 'Жекшемби_Дүйшөмбү_Шейшемби_Шаршемби_Бейшемби_Жума_Ишемби'.split('_'), + weekdaysShort : 'Жек_Дүй_Шей_Шар_Бей_Жум_Ише'.split('_'), + weekdaysMin : 'Жк_Дй_Шй_Шр_Бй_Жм_Иш'.split('_'), + longDateFormat : { + LT : 'HH:mm', + LTS : 'HH:mm:ss', + L : 'DD.MM.YYYY', + LL : 'D MMMM YYYY', + LLL : 'D MMMM YYYY HH:mm', + LLLL : 'dddd, D MMMM YYYY HH:mm' + }, + calendar : { + sameDay : '[Бүгүн саат] LT', + nextDay : '[Эртең саат] LT', + nextWeek : 'dddd [саат] LT', + lastDay : '[Кече саат] LT', + lastWeek : '[Өткен аптанын] dddd [күнү] [саат] LT', + sameElse : 'L' + }, + relativeTime : { + future : '%s ичинде', + past : '%s мурун', + s : 'бирнече секунд', + m : 'бир мүнөт', + mm : '%d мүнөт', + h : 'бир саат', + hh : '%d саат', + d : 'бир күн', + dd : '%d күн', + M : 'бир ай', + MM : '%d ай', + y : 'бир жыл', + yy : '%d жыл' + }, + ordinalParse: /\d{1,2}-(чи|чы|чү|чу)/, + ordinal : function (number) { + var a = number % 10, + b = number >= 100 ? 100 : null; + return number + (suffixes[number] || suffixes[a] || suffixes[b]); + }, + week : { + dow : 1, // Monday is the first day of the week. + doy : 7 // The week that contains Jan 1st is the first week of the year. + } + }); + + return ky; + +})); \ No newline at end of file diff --git a/resources/lib/moment/locale/lb.js b/resources/lib/moment/locale/lb.js index fe6b34beb0..83bde2bf95 100644 --- a/resources/lib/moment/locale/lb.js +++ b/resources/lib/moment/locale/lb.js @@ -1,22 +1,16 @@ -// moment.js locale configuration -// locale : Luxembourgish (lb) -// author : mweimerskirch : https://github.com/mweimerskirch, David Raison : https://github.com/kwisatz +//! moment.js locale configuration +//! locale : Luxembourgish [lb] +//! author : mweimerskirch : https://github.com/mweimerskirch +//! author : David Raison : https://github.com/kwisatz + +;(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' + && typeof require === 'function' ? factory(require('../moment')) : + typeof define === 'function' && define.amd ? define(['../moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; -// Note: Luxembourgish has a very particular phonological rule ('Eifeler Regel') that causes the -// deletion of the final 'n' in certain contexts. That's what the 'eifelerRegelAppliesToWeekday' -// and 'eifelerRegelAppliesToNumber' methods are meant for -(function (factory) { - // Comment out broken wrapper, see T145382 - /*if (typeof define === 'function' && define.amd) { - define(['moment'], factory); // AMD - } else if (typeof exports === 'object') { - module.exports = factory(require('../moment')); // Node - } else { - factory((typeof global !== 'undefined' ? global : this).moment); // node or other global - }*/ - factory(this.moment); -}(function (moment) { function processRelativeTime(number, withoutSuffix, key, isFuture) { var format = { 'm': ['eng Minutt', 'enger Minutt'], @@ -27,7 +21,6 @@ }; return withoutSuffix ? format[key][0] : format[key][1]; } - function processFutureTime(string) { var number = string.substr(0, string.indexOf(' ')); if (eifelerRegelAppliesToNumber(number)) { @@ -35,7 +28,6 @@ } return 'an ' + string; } - function processPastTime(string) { var number = string.substr(0, string.indexOf(' ')); if (eifelerRegelAppliesToNumber(number)) { @@ -43,7 +35,6 @@ } return 'virun ' + string; } - /** * Returns true if the word before the given number loses the '-n' ending. * e.g. 'an 10 Deeg' but 'a 5 Deeg' @@ -85,19 +76,21 @@ } } - return moment.defineLocale('lb', { + var lb = moment.defineLocale('lb', { months: 'Januar_Februar_Mäerz_Abrëll_Mee_Juni_Juli_August_September_Oktober_November_Dezember'.split('_'), monthsShort: 'Jan._Febr._Mrz._Abr._Mee_Jun._Jul._Aug._Sept._Okt._Nov._Dez.'.split('_'), + monthsParseExact : true, weekdays: 'Sonndeg_Méindeg_Dënschdeg_Mëttwoch_Donneschdeg_Freideg_Samschdeg'.split('_'), weekdaysShort: 'So._Mé._Dë._Më._Do._Fr._Sa.'.split('_'), weekdaysMin: 'So_Mé_Dë_Më_Do_Fr_Sa'.split('_'), + weekdaysParseExact : true, longDateFormat: { LT: 'H:mm [Auer]', LTS: 'H:mm:ss [Auer]', L: 'DD.MM.YYYY', LL: 'D. MMMM YYYY', - LLL: 'D. MMMM YYYY LT', - LLLL: 'dddd, D. MMMM YYYY LT' + LLL: 'D. MMMM YYYY H:mm [Auer]', + LLLL: 'dddd, D. MMMM YYYY H:mm [Auer]' }, calendar: { sameDay: '[Haut um] LT', @@ -138,4 +131,7 @@ doy: 4 // The week that contains Jan 4th is the first week of the year. } }); -})); + + return lb; + +})); \ No newline at end of file diff --git a/resources/lib/moment/locale/lo.js b/resources/lib/moment/locale/lo.js new file mode 100644 index 0000000000..689a183066 --- /dev/null +++ b/resources/lib/moment/locale/lo.js @@ -0,0 +1,70 @@ +//! moment.js locale configuration +//! locale : Lao [lo] +//! author : Ryan Hart : https://github.com/ryanhart2 + +;(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' + && typeof require === 'function' ? factory(require('../moment')) : + typeof define === 'function' && define.amd ? define(['../moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + + + var lo = moment.defineLocale('lo', { + months : 'ມັງກອນ_ກຸມພາ_ມີນາ_ເມສາ_ພຶດສະພາ_ມິຖຸນາ_ກໍລະກົດ_ສິງຫາ_ກັນຍາ_ຕຸລາ_ພະຈິກ_ທັນວາ'.split('_'), + monthsShort : 'ມັງກອນ_ກຸມພາ_ມີນາ_ເມສາ_ພຶດສະພາ_ມິຖຸນາ_ກໍລະກົດ_ສິງຫາ_ກັນຍາ_ຕຸລາ_ພະຈິກ_ທັນວາ'.split('_'), + weekdays : 'ອາທິດ_ຈັນ_ອັງຄານ_ພຸດ_ພະຫັດ_ສຸກ_ເສົາ'.split('_'), + weekdaysShort : 'ທິດ_ຈັນ_ອັງຄານ_ພຸດ_ພະຫັດ_ສຸກ_ເສົາ'.split('_'), + weekdaysMin : 'ທ_ຈ_ອຄ_ພ_ພຫ_ສກ_ສ'.split('_'), + weekdaysParseExact : true, + longDateFormat : { + LT : 'HH:mm', + LTS : 'HH:mm:ss', + L : 'DD/MM/YYYY', + LL : 'D MMMM YYYY', + LLL : 'D MMMM YYYY HH:mm', + LLLL : 'ວັນdddd D MMMM YYYY HH:mm' + }, + meridiemParse: /ຕອນເຊົ້າ|ຕອນແລງ/, + isPM: function (input) { + return input === 'ຕອນແລງ'; + }, + meridiem : function (hour, minute, isLower) { + if (hour < 12) { + return 'ຕອນເຊົ້າ'; + } else { + return 'ຕອນແລງ'; + } + }, + calendar : { + sameDay : '[ມື້ນີ້ເວລາ] LT', + nextDay : '[ມື້ອື່ນເວລາ] LT', + nextWeek : '[ວັນ]dddd[ໜ້າເວລາ] LT', + lastDay : '[ມື້ວານນີ້ເວລາ] LT', + lastWeek : '[ວັນ]dddd[ແລ້ວນີ້ເວລາ] LT', + sameElse : 'L' + }, + relativeTime : { + future : 'ອີກ %s', + past : '%sຜ່ານມາ', + s : 'ບໍ່ເທົ່າໃດວິນາທີ', + m : '1 ນາທີ', + mm : '%d ນາທີ', + h : '1 ຊົ່ວໂມງ', + hh : '%d ຊົ່ວໂມງ', + d : '1 ມື້', + dd : '%d ມື້', + M : '1 ເດືອນ', + MM : '%d ເດືອນ', + y : '1 ປີ', + yy : '%d ປີ' + }, + ordinalParse: /(ທີ່)\d{1,2}/, + ordinal : function (number) { + return 'ທີ່' + number; + } + }); + + return lo; + +})); \ No newline at end of file diff --git a/resources/lib/moment/locale/lt.js b/resources/lib/moment/locale/lt.js index d9c8ae555f..2bb9a36d83 100644 --- a/resources/lib/moment/locale/lt.js +++ b/resources/lib/moment/locale/lt.js @@ -1,18 +1,15 @@ -// moment.js locale configuration -// locale : Lithuanian (lt) -// author : Mindaugas MozÅ«ras : https://github.com/mmozuras +//! moment.js locale configuration +//! locale : Lithuanian [lt] +//! author : Mindaugas MozÅ«ras : https://github.com/mmozuras + +;(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' + && typeof require === 'function' ? factory(require('../moment')) : + typeof define === 'function' && define.amd ? define(['../moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + -(function (factory) { - // Comment out broken wrapper, see T145382 - /*if (typeof define === 'function' && define.amd) { - define(['moment'], factory); // AMD - } else if (typeof exports === 'object') { - module.exports = factory(require('../moment')); // Node - } else { - factory((typeof global !== 'undefined' ? global : this).moment); // node or other global - }*/ - factory(this.moment); -}(function (moment) { var units = { 'm' : 'minutė_minutės_minutę', 'mm': 'minutės_minučių_minutes', @@ -24,9 +21,7 @@ 'MM': 'mėnesiai_mėnesių_mėnesius', 'y' : 'metai_metų_metus', 'yy': 'metai_metų_metus' - }, - weekDays = 'sekmadienis_pirmadienis_antradienis_trečiadienis_ketvirtadienis_penktadienis_Å¡eÅ¡tadienis'.split('_'); - + }; function translateSeconds(number, withoutSuffix, key, isFuture) { if (withoutSuffix) { return 'kelios sekundės'; @@ -34,19 +29,15 @@ return isFuture ? 'kelių sekundžių' : 'kelias sekundes'; } } - function translateSingular(number, withoutSuffix, key, isFuture) { return withoutSuffix ? forms(key)[0] : (isFuture ? forms(key)[1] : forms(key)[2]); } - function special(number) { return number % 10 === 0 || (number > 10 && number < 20); } - function forms(key) { return units[key].split('_'); } - function translate(number, withoutSuffix, key, isFuture) { var result = number + ' '; if (number === 1) { @@ -61,31 +52,32 @@ } } } - - function relativeWeekDay(moment, format) { - var nominative = format.indexOf('dddd HH:mm') === -1, - weekDay = weekDays[moment.day()]; - - return nominative ? weekDay : weekDay.substring(0, weekDay.length - 2) + 'į'; - } - - return moment.defineLocale('lt', { - months : 'sausio_vasario_kovo_balandžio_gegužės_birželio_liepos_rugpjūčio_rugsėjo_spalio_lapkričio_gruodžio'.split('_'), + var lt = moment.defineLocale('lt', { + months : { + format: 'sausio_vasario_kovo_balandžio_gegužės_birželio_liepos_rugpjūčio_rugsėjo_spalio_lapkričio_gruodžio'.split('_'), + standalone: 'sausis_vasaris_kovas_balandis_gegužė_birželis_liepa_rugpjÅ«tis_rugsėjis_spalis_lapkritis_gruodis'.split('_'), + isFormat: /D[oD]?(\[[^\[\]]*\]|\s+)+MMMM?|MMMM?(\[[^\[\]]*\]|\s+)+D[oD]?/ + }, monthsShort : 'sau_vas_kov_bal_geg_bir_lie_rgp_rgs_spa_lap_grd'.split('_'), - weekdays : relativeWeekDay, + weekdays : { + format: 'sekmadienį_pirmadienį_antradienį_trečiadienį_ketvirtadienį_penktadienį_Å¡eÅ¡tadienį'.split('_'), + standalone: 'sekmadienis_pirmadienis_antradienis_trečiadienis_ketvirtadienis_penktadienis_Å¡eÅ¡tadienis'.split('_'), + isFormat: /dddd HH:mm/ + }, weekdaysShort : 'Sek_Pir_Ant_Tre_Ket_Pen_Å eÅ¡'.split('_'), weekdaysMin : 'S_P_A_T_K_Pn_Å '.split('_'), + weekdaysParseExact : true, longDateFormat : { LT : 'HH:mm', - LTS : 'LT:ss', + LTS : 'HH:mm:ss', L : 'YYYY-MM-DD', LL : 'YYYY [m.] MMMM D [d.]', - LLL : 'YYYY [m.] MMMM D [d.], LT [val.]', - LLLL : 'YYYY [m.] MMMM D [d.], dddd, LT [val.]', + LLL : 'YYYY [m.] MMMM D [d.], HH:mm [val.]', + LLLL : 'YYYY [m.] MMMM D [d.], dddd, HH:mm [val.]', l : 'YYYY-MM-DD', ll : 'YYYY [m.] MMMM D [d.]', - lll : 'YYYY [m.] MMMM D [d.], LT [val.]', - llll : 'YYYY [m.] MMMM D [d.], ddd, LT [val.]' + lll : 'YYYY [m.] MMMM D [d.], HH:mm [val.]', + llll : 'YYYY [m.] MMMM D [d.], ddd, HH:mm [val.]' }, calendar : { sameDay : '[Å iandien] LT', @@ -119,4 +111,7 @@ doy : 4 // The week that contains Jan 4th is the first week of the year. } }); -})); + + return lt; + +})); \ No newline at end of file diff --git a/resources/lib/moment/locale/lv.js b/resources/lib/moment/locale/lv.js index 315f27f87f..780be13986 100644 --- a/resources/lib/moment/locale/lv.js +++ b/resources/lib/moment/locale/lv.js @@ -1,52 +1,65 @@ -// moment.js locale configuration -// locale : latvian (lv) -// author : Kristaps Karlsons : https://github.com/skakri +//! moment.js locale configuration +//! locale : Latvian [lv] +//! author : Kristaps Karlsons : https://github.com/skakri +//! author : Jānis Elmeris : https://github.com/JanisE + +;(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' + && typeof require === 'function' ? factory(require('../moment')) : + typeof define === 'function' && define.amd ? define(['../moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + -(function (factory) { - // Comment out broken wrapper, see T145382 - /*if (typeof define === 'function' && define.amd) { - define(['moment'], factory); // AMD - } else if (typeof exports === 'object') { - module.exports = factory(require('../moment')); // Node - } else { - factory((typeof global !== 'undefined' ? global : this).moment); // node or other global - }*/ - factory(this.moment); -}(function (moment) { var units = { - 'mm': 'minÅ«ti_minÅ«tes_minÅ«te_minÅ«tes', - 'hh': 'stundu_stundas_stunda_stundas', - 'dd': 'dienu_dienas_diena_dienas', - 'MM': 'mēnesi_mēneÅ¡us_mēnesis_mēneÅ¡i', - 'yy': 'gadu_gadus_gads_gadi' + 'm': 'minÅ«tes_minÅ«tēm_minÅ«te_minÅ«tes'.split('_'), + 'mm': 'minÅ«tes_minÅ«tēm_minÅ«te_minÅ«tes'.split('_'), + 'h': 'stundas_stundām_stunda_stundas'.split('_'), + 'hh': 'stundas_stundām_stunda_stundas'.split('_'), + 'd': 'dienas_dienām_diena_dienas'.split('_'), + 'dd': 'dienas_dienām_diena_dienas'.split('_'), + 'M': 'mēneÅ¡a_mēneÅ¡iem_mēnesis_mēneÅ¡i'.split('_'), + 'MM': 'mēneÅ¡a_mēneÅ¡iem_mēnesis_mēneÅ¡i'.split('_'), + 'y': 'gada_gadiem_gads_gadi'.split('_'), + 'yy': 'gada_gadiem_gads_gadi'.split('_') }; - - function format(word, number, withoutSuffix) { - var forms = word.split('_'); + /** + * @param withoutSuffix boolean true = a length of time; false = before/after a period of time. + */ + function format(forms, number, withoutSuffix) { if (withoutSuffix) { - return number % 10 === 1 && number !== 11 ? forms[2] : forms[3]; + // E.g. "21 minÅ«te", "3 minÅ«tes". + return number % 10 === 1 && number % 100 !== 11 ? forms[2] : forms[3]; } else { - return number % 10 === 1 && number !== 11 ? forms[0] : forms[1]; + // E.g. "21 minÅ«tes" as in "pēc 21 minÅ«tes". + // E.g. "3 minÅ«tēm" as in "pēc 3 minÅ«tēm". + return number % 10 === 1 && number % 100 !== 11 ? forms[0] : forms[1]; } } - function relativeTimeWithPlural(number, withoutSuffix, key) { return number + ' ' + format(units[key], number, withoutSuffix); } + function relativeTimeWithSingular(number, withoutSuffix, key) { + return format(units[key], number, withoutSuffix); + } + function relativeSeconds(number, withoutSuffix) { + return withoutSuffix ? 'dažas sekundes' : 'dažām sekundēm'; + } - return moment.defineLocale('lv', { + var lv = moment.defineLocale('lv', { months : 'janvāris_februāris_marts_aprÄ«lis_maijs_jÅ«nijs_jÅ«lijs_augusts_septembris_oktobris_novembris_decembris'.split('_'), monthsShort : 'jan_feb_mar_apr_mai_jÅ«n_jÅ«l_aug_sep_okt_nov_dec'.split('_'), weekdays : 'svētdiena_pirmdiena_otrdiena_treÅ¡diena_ceturtdiena_piektdiena_sestdiena'.split('_'), weekdaysShort : 'Sv_P_O_T_C_Pk_S'.split('_'), weekdaysMin : 'Sv_P_O_T_C_Pk_S'.split('_'), + weekdaysParseExact : true, longDateFormat : { LT : 'HH:mm', - LTS : 'LT:ss', - L : 'DD.MM.YYYY', + LTS : 'HH:mm:ss', + L : 'DD.MM.YYYY.', LL : 'YYYY. [gada] D. MMMM', - LLL : 'YYYY. [gada] D. MMMM, LT', - LLLL : 'YYYY. [gada] D. MMMM, dddd, LT' + LLL : 'YYYY. [gada] D. MMMM, HH:mm', + LLLL : 'YYYY. [gada] D. MMMM, dddd, HH:mm' }, calendar : { sameDay : '[Å odien pulksten] LT', @@ -57,18 +70,18 @@ sameElse : 'L' }, relativeTime : { - future : '%s vēlāk', - past : '%s agrāk', - s : 'dažas sekundes', - m : 'minÅ«ti', + future : 'pēc %s', + past : 'pirms %s', + s : relativeSeconds, + m : relativeTimeWithSingular, mm : relativeTimeWithPlural, - h : 'stundu', + h : relativeTimeWithSingular, hh : relativeTimeWithPlural, - d : 'dienu', + d : relativeTimeWithSingular, dd : relativeTimeWithPlural, - M : 'mēnesi', + M : relativeTimeWithSingular, MM : relativeTimeWithPlural, - y : 'gadu', + y : relativeTimeWithSingular, yy : relativeTimeWithPlural }, ordinalParse: /\d{1,2}\./, @@ -78,4 +91,7 @@ doy : 4 // The week that contains Jan 4th is the first week of the year. } }); -})); + + return lv; + +})); \ No newline at end of file diff --git a/resources/lib/moment/locale/mi.js b/resources/lib/moment/locale/mi.js new file mode 100644 index 0000000000..850e4cda94 --- /dev/null +++ b/resources/lib/moment/locale/mi.js @@ -0,0 +1,64 @@ +//! moment.js locale configuration +//! locale : Maori [mi] +//! author : John Corrigan <robbiecloset@gmail.com> : https://github.com/johnideal + +;(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' + && typeof require === 'function' ? factory(require('../moment')) : + typeof define === 'function' && define.amd ? define(['../moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + + + var mi = moment.defineLocale('mi', { + months: 'Kohi-tāte_Hui-tanguru_PoutÅ«-te-rangi_Paenga-whāwhā_Haratua_Pipiri_Hōngoingoi_Here-turi-kōkā_Mahuru_Whiringa-ā-nuku_Whiringa-ā-rangi_Hakihea'.split('_'), + monthsShort: 'Kohi_Hui_Pou_Pae_Hara_Pipi_Hōngoi_Here_Mahu_Whi-nu_Whi-ra_Haki'.split('_'), + monthsRegex: /(?:['a-z\u0101\u014D\u016B]+\-?){1,3}/i, + monthsStrictRegex: /(?:['a-z\u0101\u014D\u016B]+\-?){1,3}/i, + monthsShortRegex: /(?:['a-z\u0101\u014D\u016B]+\-?){1,3}/i, + monthsShortStrictRegex: /(?:['a-z\u0101\u014D\u016B]+\-?){1,2}/i, + weekdays: 'Rātapu_Mane_TÅ«rei_Wenerei_Tāite_Paraire_Hātarei'.split('_'), + weekdaysShort: 'Ta_Ma_TÅ«_We_Tāi_Pa_Hā'.split('_'), + weekdaysMin: 'Ta_Ma_TÅ«_We_Tāi_Pa_Hā'.split('_'), + longDateFormat: { + LT: 'HH:mm', + LTS: 'HH:mm:ss', + L: 'DD/MM/YYYY', + LL: 'D MMMM YYYY', + LLL: 'D MMMM YYYY [i] HH:mm', + LLLL: 'dddd, D MMMM YYYY [i] HH:mm' + }, + calendar: { + sameDay: '[i teie mahana, i] LT', + nextDay: '[apopo i] LT', + nextWeek: 'dddd [i] LT', + lastDay: '[inanahi i] LT', + lastWeek: 'dddd [whakamutunga i] LT', + sameElse: 'L' + }, + relativeTime: { + future: 'i roto i %s', + past: '%s i mua', + s: 'te hēkona ruarua', + m: 'he meneti', + mm: '%d meneti', + h: 'te haora', + hh: '%d haora', + d: 'he ra', + dd: '%d ra', + M: 'he marama', + MM: '%d marama', + y: 'he tau', + yy: '%d tau' + }, + ordinalParse: /\d{1,2}º/, + ordinal: '%dº', + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } + }); + + return mi; + +})); \ No newline at end of file diff --git a/resources/lib/moment/locale/mk.js b/resources/lib/moment/locale/mk.js index 74fd5a1185..88413ace21 100644 --- a/resources/lib/moment/locale/mk.js +++ b/resources/lib/moment/locale/mk.js @@ -1,19 +1,16 @@ -// moment.js locale configuration -// locale : macedonian (mk) -// author : Borislav Mickov : https://github.com/B0k0 +//! moment.js locale configuration +//! locale : Macedonian [mk] +//! author : Borislav Mickov : https://github.com/B0k0 -(function (factory) { - // Comment out broken wrapper, see T145382 - /*if (typeof define === 'function' && define.amd) { - define(['moment'], factory); // AMD - } else if (typeof exports === 'object') { - module.exports = factory(require('../moment')); // Node - } else { - factory((typeof global !== 'undefined' ? global : this).moment); // node or other global - }*/ - factory(this.moment); -}(function (moment) { - return moment.defineLocale('mk', { +;(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' + && typeof require === 'function' ? factory(require('../moment')) : + typeof define === 'function' && define.amd ? define(['../moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + + + var mk = moment.defineLocale('mk', { months : 'јануари_февруари_март_април_мај_јуни_јули_август_септември_октомври_ноември_декември'.split('_'), monthsShort : 'јан_фев_мар_апр_мај_јун_јул_авг_сеп_окт_ное_дек'.split('_'), weekdays : 'недела_понеделник_вторник_среда_четврток_петок_сабота'.split('_'), @@ -21,28 +18,28 @@ weekdaysMin : 'нe_пo_вт_ср_че_пе_сa'.split('_'), longDateFormat : { LT : 'H:mm', - LTS : 'LT:ss', + LTS : 'H:mm:ss', L : 'D.MM.YYYY', LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY LT', - LLLL : 'dddd, D MMMM YYYY LT' + LLL : 'D MMMM YYYY H:mm', + LLLL : 'dddd, D MMMM YYYY H:mm' }, calendar : { sameDay : '[Денес во] LT', nextDay : '[Утре во] LT', - nextWeek : 'dddd [во] LT', + nextWeek : '[Во] dddd [во] LT', lastDay : '[Вчера во] LT', lastWeek : function () { switch (this.day()) { - case 0: - case 3: - case 6: - return '[Во изминатата] dddd [во] LT'; - case 1: - case 2: - case 4: - case 5: - return '[Во изминатиот] dddd [во] LT'; + case 0: + case 3: + case 6: + return '[Изминатата] dddd [во] LT'; + case 1: + case 2: + case 4: + case 5: + return '[Изминатиот] dddd [во] LT'; } }, sameElse : 'L' @@ -87,4 +84,7 @@ doy : 7 // The week that contains Jan 1st is the first week of the year. } }); -})); + + return mk; + +})); \ No newline at end of file diff --git a/resources/lib/moment/locale/ml.js b/resources/lib/moment/locale/ml.js index f72b2c40ba..487b37a638 100644 --- a/resources/lib/moment/locale/ml.js +++ b/resources/lib/moment/locale/ml.js @@ -1,21 +1,19 @@ -// moment.js locale configuration -// locale : malayalam (ml) -// author : Floyd Pink : https://github.com/floydpink +//! moment.js locale configuration +//! locale : Malayalam [ml] +//! author : Floyd Pink : https://github.com/floydpink -(function (factory) { - // Comment out broken wrapper, see T145382 - /*if (typeof define === 'function' && define.amd) { - define(['moment'], factory); // AMD - } else if (typeof exports === 'object') { - module.exports = factory(require('../moment')); // Node - } else { - factory((typeof global !== 'undefined' ? global : this).moment); // node or other global - }*/ - factory(this.moment); -}(function (moment) { - return moment.defineLocale('ml', { +;(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' + && typeof require === 'function' ? factory(require('../moment')) : + typeof define === 'function' && define.amd ? define(['../moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + + + var ml = moment.defineLocale('ml', { months : 'ജനുവരി_ഫെബ്രുവരി_മാർച്ച്_ഏപ്രിൽ_മേയ്_ജൂൺ_ജൂലൈ_ഓഗസ്റ്റ്_സെപ്റ്റംബർ_ഒക്ടോബർ_നവംബർ_ഡിസംബർ'.split('_'), monthsShort : 'ജനു._ഫെബ്രു._മാർ._ഏപ്രി._മേയ്_ജൂൺ_ജൂലൈ._ഓഗ._സെപ്റ്റ._ഒക്ടോ._നവം._ഡിസം.'.split('_'), + monthsParseExact : true, weekdays : 'ഞായറാഴ്ച_തിങ്കളാഴ്ച_ചൊവ്വാഴ്ച_ബുധനാഴ്ച_വ്യാഴാഴ്ച_വെള്ളിയാഴ്ച_ശനിയാഴ്ച'.split('_'), weekdaysShort : 'ഞായർ_തിങ്കൾ_ചൊവ്വ_ബുധൻ_വ്യാഴം_വെള്ളി_ശനി'.split('_'), weekdaysMin : 'ഞാ_തി_ചൊ_ബു_വ്യാ_വെ_à´¶'.split('_'), @@ -24,8 +22,8 @@ LTS : 'A h:mm:ss -നു', L : 'DD/MM/YYYY', LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY, LT', - LLLL : 'dddd, D MMMM YYYY, LT' + LLL : 'D MMMM YYYY, A h:mm -നു', + LLLL : 'dddd, D MMMM YYYY, A h:mm -നു' }, calendar : { sameDay : '[ഇന്ന്] LT', @@ -50,6 +48,19 @@ y : 'ഒരു വർഷം', yy : '%d വർഷം' }, + meridiemParse: /രാത്രി|രാവിലെ|ഉച്ച കഴിഞ്ഞ്|വൈകുന്നേരം|രാത്രി/i, + meridiemHour : function (hour, meridiem) { + if (hour === 12) { + hour = 0; + } + if ((meridiem === 'രാത്രി' && hour >= 4) || + meridiem === 'ഉച്ച കഴിഞ്ഞ്' || + meridiem === 'വൈകുന്നേരം') { + return hour + 12; + } else { + return hour; + } + }, meridiem : function (hour, minute, isLower) { if (hour < 4) { return 'രാത്രി'; @@ -64,4 +75,7 @@ } } }); -})); + + return ml; + +})); \ No newline at end of file diff --git a/resources/lib/moment/locale/mr.js b/resources/lib/moment/locale/mr.js index 7c047150d1..fc388b0137 100644 --- a/resources/lib/moment/locale/mr.js +++ b/resources/lib/moment/locale/mr.js @@ -1,18 +1,16 @@ -// moment.js locale configuration -// locale : Marathi (mr) -// author : Harshad Kale : https://github.com/kalehv +//! moment.js locale configuration +//! locale : Marathi [mr] +//! author : Harshad Kale : https://github.com/kalehv +//! author : Vivek Athalye : https://github.com/vnathalye + +;(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' + && typeof require === 'function' ? factory(require('../moment')) : + typeof define === 'function' && define.amd ? define(['../moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + -(function (factory) { - // Comment out broken wrapper, see T145382 - /*if (typeof define === 'function' && define.amd) { - define(['moment'], factory); // AMD - } else if (typeof exports === 'object') { - module.exports = factory(require('../moment')); // Node - } else { - factory((typeof global !== 'undefined' ? global : this).moment); // node or other global - }*/ - factory(this.moment); -}(function (moment) { var symbolMap = { '1': '१', '2': '२', @@ -38,9 +36,46 @@ '०': '0' }; - return moment.defineLocale('mr', { + function relativeTimeMr(number, withoutSuffix, string, isFuture) + { + var output = ''; + if (withoutSuffix) { + switch (string) { + case 's': output = 'काही सेकंद'; break; + case 'm': output = 'एक मिनिट'; break; + case 'mm': output = '%d मिनिटे'; break; + case 'h': output = 'एक तास'; break; + case 'hh': output = '%d तास'; break; + case 'd': output = 'एक दिवस'; break; + case 'dd': output = '%d दिवस'; break; + case 'M': output = 'एक महिना'; break; + case 'MM': output = '%d महिने'; break; + case 'y': output = 'एक वर्ष'; break; + case 'yy': output = '%d वर्षे'; break; + } + } + else { + switch (string) { + case 's': output = 'काही सेकंदां'; break; + case 'm': output = 'एका मिनिटा'; break; + case 'mm': output = '%d मिनिटां'; break; + case 'h': output = 'एका तासा'; break; + case 'hh': output = '%d तासां'; break; + case 'd': output = 'एका दिवसा'; break; + case 'dd': output = '%d दिवसां'; break; + case 'M': output = 'एका महिन्या'; break; + case 'MM': output = '%d महिन्यां'; break; + case 'y': output = 'एका वर्षा'; break; + case 'yy': output = '%d वर्षां'; break; + } + } + return output.replace(/%d/i, number); + } + + var mr = moment.defineLocale('mr', { months : 'जानेवारी_फेब्रुवारी_मार्च_एप्रिल_मे_जून_जुलै_ऑगस्ट_सप्टेंबर_ऑक्टोबर_नोव्हेंबर_डिसेंबर'.split('_'), monthsShort: 'जाने._फेब्रु._मार्च._एप्रि._मे._जून._जुलै._ऑग._सप्टें._ऑक्टो._नोव्हें._डिसें.'.split('_'), + monthsParseExact : true, weekdays : 'रविवार_सोमवार_मंगळवार_बुधवार_गुरूवार_शुक्रवार_शनिवार'.split('_'), weekdaysShort : 'रवि_सोम_मंगळ_बुध_गुरू_शुक्र_शनि'.split('_'), weekdaysMin : 'र_सो_मं_बु_गु_शु_श'.split('_'), @@ -49,8 +84,8 @@ LTS : 'A h:mm:ss वाजता', L : 'DD/MM/YYYY', LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY, LT', - LLLL : 'dddd, D MMMM YYYY, LT' + LLL : 'D MMMM YYYY, A h:mm वाजता', + LLLL : 'dddd, D MMMM YYYY, A h:mm वाजता' }, calendar : { sameDay : '[आज] LT', @@ -61,19 +96,19 @@ sameElse : 'L' }, relativeTime : { - future : '%s नंतर', - past : '%s पूर्वी', - s : 'सेकंद', - m: 'एक मिनिट', - mm: '%d मिनिटे', - h : 'एक तास', - hh : '%d तास', - d : 'एक दिवस', - dd : '%d दिवस', - M : 'एक महिना', - MM : '%d महिने', - y : 'एक वर्ष', - yy : '%d वर्षे' + future: '%sमध्ये', + past: '%sपूर्वी', + s: relativeTimeMr, + m: relativeTimeMr, + mm: relativeTimeMr, + h: relativeTimeMr, + hh: relativeTimeMr, + d: relativeTimeMr, + dd: relativeTimeMr, + M: relativeTimeMr, + MM: relativeTimeMr, + y: relativeTimeMr, + yy: relativeTimeMr }, preparse: function (string) { return string.replace(/[१२३४५६७८९०]/g, function (match) { @@ -85,8 +120,22 @@ return symbolMap[match]; }); }, - meridiem: function (hour, minute, isLower) - { + meridiemParse: /रात्री|सकाळी|दुपारी|सायंकाळी/, + meridiemHour : function (hour, meridiem) { + if (hour === 12) { + hour = 0; + } + if (meridiem === 'रात्री') { + return hour < 4 ? hour : hour + 12; + } else if (meridiem === 'सकाळी') { + return hour; + } else if (meridiem === 'दुपारी') { + return hour >= 10 ? hour : hour + 12; + } else if (meridiem === 'सायंकाळी') { + return hour + 12; + } + }, + meridiem: function (hour, minute, isLower) { if (hour < 4) { return 'रात्री'; } else if (hour < 10) { @@ -104,4 +153,7 @@ doy : 6 // The week that contains Jan 1st is the first week of the year. } }); -})); + + return mr; + +})); \ No newline at end of file diff --git a/resources/lib/moment/locale/ms-my.js b/resources/lib/moment/locale/ms-my.js index 7072c2f289..e353173a91 100644 --- a/resources/lib/moment/locale/ms-my.js +++ b/resources/lib/moment/locale/ms-my.js @@ -1,19 +1,17 @@ -// moment.js locale configuration -// locale : Bahasa Malaysia (ms-MY) -// author : Weldan Jamili : https://github.com/weldan +//! moment.js locale configuration +//! locale : Malay [ms-my] +//! note : DEPRECATED, the correct one is [ms] +//! author : Weldan Jamili : https://github.com/weldan -(function (factory) { - // Comment out broken wrapper, see T145382 - /*if (typeof define === 'function' && define.amd) { - define(['moment'], factory); // AMD - } else if (typeof exports === 'object') { - module.exports = factory(require('../moment')); // Node - } else { - factory((typeof global !== 'undefined' ? global : this).moment); // node or other global - }*/ - factory(this.moment); -}(function (moment) { - return moment.defineLocale('ms-my', { +;(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' + && typeof require === 'function' ? factory(require('../moment')) : + typeof define === 'function' && define.amd ? define(['../moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + + + var ms_my = moment.defineLocale('ms-my', { months : 'Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember'.split('_'), monthsShort : 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis'.split('_'), weekdays : 'Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu'.split('_'), @@ -21,11 +19,24 @@ weekdaysMin : 'Ah_Is_Sl_Rb_Km_Jm_Sb'.split('_'), longDateFormat : { LT : 'HH.mm', - LTS : 'LT.ss', + LTS : 'HH.mm.ss', L : 'DD/MM/YYYY', LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY [pukul] LT', - LLLL : 'dddd, D MMMM YYYY [pukul] LT' + LLL : 'D MMMM YYYY [pukul] HH.mm', + LLLL : 'dddd, D MMMM YYYY [pukul] HH.mm' + }, + meridiemParse: /pagi|tengahari|petang|malam/, + meridiemHour: function (hour, meridiem) { + if (hour === 12) { + hour = 0; + } + if (meridiem === 'pagi') { + return hour; + } else if (meridiem === 'tengahari') { + return hour >= 11 ? hour : hour + 12; + } else if (meridiem === 'petang' || meridiem === 'malam') { + return hour + 12; + } }, meridiem : function (hours, minutes, isLower) { if (hours < 11) { @@ -66,4 +77,7 @@ doy : 7 // The week that contains Jan 1st is the first week of the year. } }); -})); + + return ms_my; + +})); \ No newline at end of file diff --git a/resources/lib/moment/locale/ms.js b/resources/lib/moment/locale/ms.js new file mode 100644 index 0000000000..280194ced7 --- /dev/null +++ b/resources/lib/moment/locale/ms.js @@ -0,0 +1,82 @@ +//! moment.js locale configuration +//! locale : Malay [ms] +//! author : Weldan Jamili : https://github.com/weldan + +;(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' + && typeof require === 'function' ? factory(require('../moment')) : + typeof define === 'function' && define.amd ? define(['../moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + + + var ms = moment.defineLocale('ms', { + months : 'Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember'.split('_'), + monthsShort : 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis'.split('_'), + weekdays : 'Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu'.split('_'), + weekdaysShort : 'Ahd_Isn_Sel_Rab_Kha_Jum_Sab'.split('_'), + weekdaysMin : 'Ah_Is_Sl_Rb_Km_Jm_Sb'.split('_'), + longDateFormat : { + LT : 'HH.mm', + LTS : 'HH.mm.ss', + L : 'DD/MM/YYYY', + LL : 'D MMMM YYYY', + LLL : 'D MMMM YYYY [pukul] HH.mm', + LLLL : 'dddd, D MMMM YYYY [pukul] HH.mm' + }, + meridiemParse: /pagi|tengahari|petang|malam/, + meridiemHour: function (hour, meridiem) { + if (hour === 12) { + hour = 0; + } + if (meridiem === 'pagi') { + return hour; + } else if (meridiem === 'tengahari') { + return hour >= 11 ? hour : hour + 12; + } else if (meridiem === 'petang' || meridiem === 'malam') { + return hour + 12; + } + }, + meridiem : function (hours, minutes, isLower) { + if (hours < 11) { + return 'pagi'; + } else if (hours < 15) { + return 'tengahari'; + } else if (hours < 19) { + return 'petang'; + } else { + return 'malam'; + } + }, + calendar : { + sameDay : '[Hari ini pukul] LT', + nextDay : '[Esok pukul] LT', + nextWeek : 'dddd [pukul] LT', + lastDay : '[Kelmarin pukul] LT', + lastWeek : 'dddd [lepas pukul] LT', + sameElse : 'L' + }, + relativeTime : { + future : 'dalam %s', + past : '%s yang lepas', + s : 'beberapa saat', + m : 'seminit', + mm : '%d minit', + h : 'sejam', + hh : '%d jam', + d : 'sehari', + dd : '%d hari', + M : 'sebulan', + MM : '%d bulan', + y : 'setahun', + yy : '%d tahun' + }, + week : { + dow : 1, // Monday is the first day of the week. + doy : 7 // The week that contains Jan 1st is the first week of the year. + } + }); + + return ms; + +})); \ No newline at end of file diff --git a/resources/lib/moment/locale/my.js b/resources/lib/moment/locale/my.js index daba17d554..0e7b86ded1 100644 --- a/resources/lib/moment/locale/my.js +++ b/resources/lib/moment/locale/my.js @@ -1,18 +1,17 @@ -// moment.js locale configuration -// locale : Burmese (my) -// author : Squar team, mysquar.com +//! moment.js locale configuration +//! locale : Burmese [my] +//! author : Squar team, mysquar.com +//! author : David Rossellat : https://github.com/gholadr +//! author : Tin Aung Lin : https://github.com/thanyawzinmin + +;(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' + && typeof require === 'function' ? factory(require('../moment')) : + typeof define === 'function' && define.amd ? define(['../moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + -(function (factory) { - // Comment out broken wrapper, see T145382 - /*if (typeof define === 'function' && define.amd) { - define(['moment'], factory); // AMD - } else if (typeof exports === 'object') { - module.exports = factory(require('../moment')); // Node - } else { - factory((typeof global !== 'undefined' ? global : this).moment); // node or other global - }*/ - factory(this.moment); -}(function (moment) { var symbolMap = { '1': '၁', '2': '၂', @@ -36,19 +35,21 @@ '၉': '9', '၀': '0' }; - return moment.defineLocale('my', { + + var my = moment.defineLocale('my', { months: 'ဇန်နဝါရီ_ဖေဖော်ဝါရီ_မတ်_ဧပြီ_မေ_ဇွန်_ဇူလိုင်_သြဂုတ်_စက်တင်ဘာ_အောက်တိုဘာ_နိုဝင်ဘာ_ဒီဇင်ဘာ'.split('_'), monthsShort: 'ဇန်_ဖေ_မတ်_ပြီ_မေ_ဇွန်_လိုင်_သြ_စက်_အောက်_နို_ဒီ'.split('_'), weekdays: 'တနင်္ဂနွေ_တနင်္လာ_အင်္ဂါ_ဗုဒ္ဓဟူး_ကြာသပတေး_သောကြာ_စနေ'.split('_'), - weekdaysShort: 'နွေ_လာ_င်္ဂါ_ဟူး_ကြာ_သော_နေ'.split('_'), - weekdaysMin: 'နွေ_လာ_င်္ဂါ_ဟူး_ကြာ_သော_နေ'.split('_'), + weekdaysShort: 'နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ'.split('_'), + weekdaysMin: 'နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ'.split('_'), + longDateFormat: { LT: 'HH:mm', LTS: 'HH:mm:ss', L: 'DD/MM/YYYY', LL: 'D MMMM YYYY', - LLL: 'D MMMM YYYY LT', - LLLL: 'dddd D MMMM YYYY LT' + LLL: 'D MMMM YYYY HH:mm', + LLLL: 'dddd D MMMM YYYY HH:mm' }, calendar: { sameDay: '[ယနေ.] LT [မှာ]', @@ -88,4 +89,7 @@ doy: 4 // The week that contains Jan 1st is the first week of the year. } }); -})); + + return my; + +})); \ No newline at end of file diff --git a/resources/lib/moment/locale/nb.js b/resources/lib/moment/locale/nb.js index 4fab78bd71..592734d6c9 100644 --- a/resources/lib/moment/locale/nb.js +++ b/resources/lib/moment/locale/nb.js @@ -1,32 +1,31 @@ -// moment.js locale configuration -// locale : norwegian bokmÃ¥l (nb) -// authors : Espen Hovlandsdal : https://github.com/rexxars -// Sigurd Gartmann : https://github.com/sigurdga +//! moment.js locale configuration +//! locale : Norwegian BokmÃ¥l [nb] +//! authors : Espen Hovlandsdal : https://github.com/rexxars +//! Sigurd Gartmann : https://github.com/sigurdga -(function (factory) { - // Comment out broken wrapper, see T145382 - /*if (typeof define === 'function' && define.amd) { - define(['moment'], factory); // AMD - } else if (typeof exports === 'object') { - module.exports = factory(require('../moment')); // Node - } else { - factory((typeof global !== 'undefined' ? global : this).moment); // node or other global - }*/ - factory(this.moment); -}(function (moment) { - return moment.defineLocale('nb', { +;(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' + && typeof require === 'function' ? factory(require('../moment')) : + typeof define === 'function' && define.amd ? define(['../moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + + + var nb = moment.defineLocale('nb', { months : 'januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember'.split('_'), - monthsShort : 'jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des'.split('_'), + monthsShort : 'jan._feb._mars_april_mai_juni_juli_aug._sep._okt._nov._des.'.split('_'), + monthsParseExact : true, weekdays : 'søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag'.split('_'), - weekdaysShort : 'søn_man_tirs_ons_tors_fre_lør'.split('_'), + weekdaysShort : 'sø._ma._ti._on._to._fr._lø.'.split('_'), weekdaysMin : 'sø_ma_ti_on_to_fr_lø'.split('_'), + weekdaysParseExact : true, longDateFormat : { - LT : 'H.mm', - LTS : 'LT.ss', + LT : 'HH:mm', + LTS : 'HH:mm:ss', L : 'DD.MM.YYYY', LL : 'D. MMMM YYYY', - LLL : 'D. MMMM YYYY [kl.] LT', - LLLL : 'dddd D. MMMM YYYY [kl.] LT' + LLL : 'D. MMMM YYYY [kl.] HH:mm', + LLLL : 'dddd D. MMMM YYYY [kl.] HH:mm' }, calendar : { sameDay: '[i dag kl.] LT', @@ -38,7 +37,7 @@ }, relativeTime : { future : 'om %s', - past : 'for %s siden', + past : '%s siden', s : 'noen sekunder', m : 'ett minutt', mm : '%d minutter', @@ -58,4 +57,7 @@ doy : 4 // The week that contains Jan 4th is the first week of the year. } }); -})); + + return nb; + +})); \ No newline at end of file diff --git a/resources/lib/moment/locale/ne.js b/resources/lib/moment/locale/ne.js index ad10165710..85de195eaa 100644 --- a/resources/lib/moment/locale/ne.js +++ b/resources/lib/moment/locale/ne.js @@ -1,18 +1,15 @@ -// moment.js locale configuration -// locale : nepali/nepalese -// author : suvash : https://github.com/suvash +//! moment.js locale configuration +//! locale : Nepalese [ne] +//! author : suvash : https://github.com/suvash + +;(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' + && typeof require === 'function' ? factory(require('../moment')) : + typeof define === 'function' && define.amd ? define(['../moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + -(function (factory) { - // Comment out broken wrapper, see T145382 - /*if (typeof define === 'function' && define.amd) { - define(['moment'], factory); // AMD - } else if (typeof exports === 'object') { - module.exports = factory(require('../moment')); // Node - } else { - factory((typeof global !== 'undefined' ? global : this).moment); // node or other global - }*/ - factory(this.moment); -}(function (moment) { var symbolMap = { '1': '१', '2': '२', @@ -38,19 +35,21 @@ '०': '0' }; - return moment.defineLocale('ne', { + var ne = moment.defineLocale('ne', { months : 'जनवरी_फेब्रुवरी_मार्च_अप्रिल_मई_जुन_जुलाई_अगष्ट_सेप्टेम्बर_अक्टोबर_नोभेम्बर_डिसेम्बर'.split('_'), monthsShort : 'जन._फेब्रु._मार्च_अप्रि._मई_जुन_जुलाई._अग._सेप्ट._अक्टो._नोभे._डिसे.'.split('_'), + monthsParseExact : true, weekdays : 'आइतबार_सोमबार_मङ्गलबार_बुधबार_बिहिबार_शुक्रबार_शनिबार'.split('_'), weekdaysShort : 'आइत._सोम._मङ्गल._बुध._बिहि._शुक्र._शनि.'.split('_'), - weekdaysMin : 'आइ._सो._मङ्_बु._बि._शु._श.'.split('_'), + weekdaysMin : 'आ._सो._मं._बु._बि._शु._श.'.split('_'), + weekdaysParseExact : true, longDateFormat : { LT : 'Aको h:mm बजे', LTS : 'Aको h:mm:ss बजे', L : 'DD/MM/YYYY', LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY, LT', - LLLL : 'dddd, D MMMM YYYY, LT' + LLL : 'D MMMM YYYY, Aको h:mm बजे', + LLLL : 'dddd, D MMMM YYYY, Aको h:mm बजे' }, preparse: function (string) { return string.replace(/[१२३४५६७८९०]/g, function (match) { @@ -62,24 +61,37 @@ return symbolMap[match]; }); }, + meridiemParse: /राति|बिहान|दिउँसो|साँझ/, + meridiemHour : function (hour, meridiem) { + if (hour === 12) { + hour = 0; + } + if (meridiem === 'राति') { + return hour < 4 ? hour : hour + 12; + } else if (meridiem === 'बिहान') { + return hour; + } else if (meridiem === 'दिउँसो') { + return hour >= 10 ? hour : hour + 12; + } else if (meridiem === 'साँझ') { + return hour + 12; + } + }, meridiem : function (hour, minute, isLower) { if (hour < 3) { - return 'राती'; - } else if (hour < 10) { + return 'राति'; + } else if (hour < 12) { return 'बिहान'; - } else if (hour < 15) { + } else if (hour < 16) { return 'दिउँसो'; - } else if (hour < 18) { - return 'बेलुका'; } else if (hour < 20) { return 'साँझ'; } else { - return 'राती'; + return 'राति'; } }, calendar : { sameDay : '[आज] LT', - nextDay : '[भोली] LT', + nextDay : '[भोलि] LT', nextWeek : '[आउँदो] dddd[,] LT', lastDay : '[हिजो] LT', lastWeek : '[गएको] dddd[,] LT', @@ -87,8 +99,8 @@ }, relativeTime : { future : '%sमा', - past : '%s अगाडी', - s : 'केही समय', + past : '%s अगाडि', + s : 'केही क्षण', m : 'एक मिनेट', mm : '%d मिनेट', h : 'एक घण्टा', @@ -101,8 +113,11 @@ yy : '%d बर्ष' }, week : { - dow : 1, // Monday is the first day of the week. - doy : 7 // The week that contains Jan 1st is the first week of the year. + dow : 0, // Sunday is the first day of the week. + doy : 6 // The week that contains Jan 1st is the first week of the year. } }); -})); + + return ne; + +})); \ No newline at end of file diff --git a/resources/lib/moment/locale/nl.js b/resources/lib/moment/locale/nl.js index 871760d53b..93741019e2 100644 --- a/resources/lib/moment/locale/nl.js +++ b/resources/lib/moment/locale/nl.js @@ -1,22 +1,23 @@ -// moment.js locale configuration -// locale : dutch (nl) -// author : Joris Röling : https://github.com/jjupiter +//! moment.js locale configuration +//! locale : Dutch [nl] +//! author : Joris Röling : https://github.com/jorisroling +//! author : Jacob Middag : https://github.com/middagj + +;(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' + && typeof require === 'function' ? factory(require('../moment')) : + typeof define === 'function' && define.amd ? define(['../moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + -(function (factory) { - // Comment out broken wrapper, see T145382 - /*if (typeof define === 'function' && define.amd) { - define(['moment'], factory); // AMD - } else if (typeof exports === 'object') { - module.exports = factory(require('../moment')); // Node - } else { - factory((typeof global !== 'undefined' ? global : this).moment); // node or other global - }*/ - factory(this.moment); -}(function (moment) { var monthsShortWithDots = 'jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.'.split('_'), monthsShortWithoutDots = 'jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec'.split('_'); - return moment.defineLocale('nl', { + var monthsParse = [/^jan/i, /^feb/i, /^maart|mrt.?$/i, /^apr/i, /^mei$/i, /^jun[i.]?$/i, /^jul[i.]?$/i, /^aug/i, /^sep/i, /^okt/i, /^nov/i, /^dec/i]; + var monthsRegex = /^(januari|februari|maart|april|mei|april|ju[nl]i|augustus|september|oktober|november|december|jan\.?|feb\.?|mrt\.?|apr\.?|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i; + + var nl = moment.defineLocale('nl', { months : 'januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december'.split('_'), monthsShort : function (m, format) { if (/-MMM-/.test(format)) { @@ -25,16 +26,27 @@ return monthsShortWithDots[m.month()]; } }, + + monthsRegex: monthsRegex, + monthsShortRegex: monthsRegex, + monthsStrictRegex: /^(januari|februari|maart|mei|ju[nl]i|april|augustus|september|oktober|november|december)/i, + monthsShortStrictRegex: /^(jan\.?|feb\.?|mrt\.?|apr\.?|mei|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i, + + monthsParse : monthsParse, + longMonthsParse : monthsParse, + shortMonthsParse : monthsParse, + weekdays : 'zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag'.split('_'), weekdaysShort : 'zo._ma._di._wo._do._vr._za.'.split('_'), weekdaysMin : 'Zo_Ma_Di_Wo_Do_Vr_Za'.split('_'), + weekdaysParseExact : true, longDateFormat : { LT : 'HH:mm', - LTS : 'LT:ss', + LTS : 'HH:mm:ss', L : 'DD-MM-YYYY', LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY LT', - LLLL : 'dddd D MMMM YYYY LT' + LLL : 'D MMMM YYYY HH:mm', + LLLL : 'dddd D MMMM YYYY HH:mm' }, calendar : { sameDay: '[vandaag om] LT', @@ -68,4 +80,7 @@ doy : 4 // The week that contains Jan 4th is the first week of the year. } }); -})); + + return nl; + +})); \ No newline at end of file diff --git a/resources/lib/moment/locale/nn.js b/resources/lib/moment/locale/nn.js index de8deff169..cb3307d3d0 100644 --- a/resources/lib/moment/locale/nn.js +++ b/resources/lib/moment/locale/nn.js @@ -1,19 +1,16 @@ -// moment.js locale configuration -// locale : norwegian nynorsk (nn) -// author : https://github.com/mechuwind +//! moment.js locale configuration +//! locale : Nynorsk [nn] +//! author : https://github.com/mechuwind -(function (factory) { - // Comment out broken wrapper, see T145382 - /*if (typeof define === 'function' && define.amd) { - define(['moment'], factory); // AMD - } else if (typeof exports === 'object') { - module.exports = factory(require('../moment')); // Node - } else { - factory((typeof global !== 'undefined' ? global : this).moment); // node or other global - }*/ - factory(this.moment); -}(function (moment) { - return moment.defineLocale('nn', { +;(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' + && typeof require === 'function' ? factory(require('../moment')) : + typeof define === 'function' && define.amd ? define(['../moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + + + var nn = moment.defineLocale('nn', { months : 'januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember'.split('_'), monthsShort : 'jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des'.split('_'), weekdays : 'sundag_mÃ¥ndag_tysdag_onsdag_torsdag_fredag_laurdag'.split('_'), @@ -21,11 +18,11 @@ weekdaysMin : 'su_mÃ¥_ty_on_to_fr_lø'.split('_'), longDateFormat : { LT : 'HH:mm', - LTS : 'LT:ss', + LTS : 'HH:mm:ss', L : 'DD.MM.YYYY', - LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY LT', - LLLL : 'dddd D MMMM YYYY LT' + LL : 'D. MMMM YYYY', + LLL : 'D. MMMM YYYY [kl.] H:mm', + LLLL : 'dddd D. MMMM YYYY [kl.] HH:mm' }, calendar : { sameDay: '[I dag klokka] LT', @@ -37,7 +34,7 @@ }, relativeTime : { future : 'om %s', - past : 'for %s sidan', + past : '%s sidan', s : 'nokre sekund', m : 'eit minutt', mm : '%d minutt', @@ -57,4 +54,7 @@ doy : 4 // The week that contains Jan 4th is the first week of the year. } }); -})); + + return nn; + +})); \ No newline at end of file diff --git a/resources/lib/moment/locale/pa-in.js b/resources/lib/moment/locale/pa-in.js new file mode 100644 index 0000000000..595174f124 --- /dev/null +++ b/resources/lib/moment/locale/pa-in.js @@ -0,0 +1,124 @@ +//! moment.js locale configuration +//! locale : Punjabi (India) [pa-in] +//! author : Harpreet Singh : https://github.com/harpreetkhalsagtbit + +;(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' + && typeof require === 'function' ? factory(require('../moment')) : + typeof define === 'function' && define.amd ? define(['../moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + + + var symbolMap = { + '1': '੧', + '2': '੨', + '3': 'à©©', + '4': '੪', + '5': 'à©«', + '6': '੬', + '7': 'à©­', + '8': 'à©®', + '9': '੯', + '0': '੦' + }, + numberMap = { + '੧': '1', + '੨': '2', + 'à©©': '3', + '੪': '4', + 'à©«': '5', + '੬': '6', + 'à©­': '7', + 'à©®': '8', + '੯': '9', + '੦': '0' + }; + + var pa_in = moment.defineLocale('pa-in', { + // There are months name as per Nanakshahi Calender but they are not used as rigidly in modern Punjabi. + months : 'ਜਨਵਰੀ_ਫ਼ਰਵਰੀ_ਮਾਰਚ_ਅਪ੍ਰੈਲ_ਮਈ_ਜੂਨ_ਜੁਲਾਈ_ਅਗਸਤ_ਸਤੰਬਰ_ਅਕਤੂਬਰ_ਨਵੰਬਰ_ਦਸੰਬਰ'.split('_'), + monthsShort : 'ਜਨਵਰੀ_ਫ਼ਰਵਰੀ_ਮਾਰਚ_ਅਪ੍ਰੈਲ_ਮਈ_ਜੂਨ_ਜੁਲਾਈ_ਅਗਸਤ_ਸਤੰਬਰ_ਅਕਤੂਬਰ_ਨਵੰਬਰ_ਦਸੰਬਰ'.split('_'), + weekdays : 'ਐਤਵਾਰ_ਸੋਮਵਾਰ_ਮੰਗਲਵਾਰ_ਬੁਧਵਾਰ_ਵੀਰਵਾਰ_ਸ਼ੁੱਕਰਵਾਰ_ਸ਼ਨੀਚਰਵਾਰ'.split('_'), + weekdaysShort : 'ਐਤ_ਸੋਮ_ਮੰਗਲ_ਬੁਧ_ਵੀਰ_ਸ਼ੁਕਰ_ਸ਼ਨੀ'.split('_'), + weekdaysMin : 'ਐਤ_ਸੋਮ_ਮੰਗਲ_ਬੁਧ_ਵੀਰ_ਸ਼ੁਕਰ_ਸ਼ਨੀ'.split('_'), + longDateFormat : { + LT : 'A h:mm ਵਜੇ', + LTS : 'A h:mm:ss ਵਜੇ', + L : 'DD/MM/YYYY', + LL : 'D MMMM YYYY', + LLL : 'D MMMM YYYY, A h:mm ਵਜੇ', + LLLL : 'dddd, D MMMM YYYY, A h:mm ਵਜੇ' + }, + calendar : { + sameDay : '[ਅਜ] LT', + nextDay : '[ਕਲ] LT', + nextWeek : 'dddd, LT', + lastDay : '[ਕਲ] LT', + lastWeek : '[ਪਿਛਲੇ] dddd, LT', + sameElse : 'L' + }, + relativeTime : { + future : '%s ਵਿੱਚ', + past : '%s ਪਿਛਲੇ', + s : 'ਕੁਝ ਸਕਿੰਟ', + m : 'ਇਕ ਮਿੰਟ', + mm : '%d ਮਿੰਟ', + h : 'ਇੱਕ ਘੰਟਾ', + hh : '%d ਘੰਟੇ', + d : 'ਇੱਕ ਦਿਨ', + dd : '%d ਦਿਨ', + M : 'ਇੱਕ ਮਹੀਨਾ', + MM : '%d ਮਹੀਨੇ', + y : 'ਇੱਕ ਸਾਲ', + yy : '%d ਸਾਲ' + }, + preparse: function (string) { + return string.replace(/[੧੨੩੪੫੬੭੮੯੦]/g, function (match) { + return numberMap[match]; + }); + }, + postformat: function (string) { + return string.replace(/\d/g, function (match) { + return symbolMap[match]; + }); + }, + // Punjabi notation for meridiems are quite fuzzy in practice. While there exists + // a rigid notion of a 'Pahar' it is not used as rigidly in modern Punjabi. + meridiemParse: /ਰਾਤ|ਸਵੇਰ|ਦੁਪਹਿਰ|ਸ਼ਾਮ/, + meridiemHour : function (hour, meridiem) { + if (hour === 12) { + hour = 0; + } + if (meridiem === 'ਰਾਤ') { + return hour < 4 ? hour : hour + 12; + } else if (meridiem === 'ਸਵੇਰ') { + return hour; + } else if (meridiem === 'ਦੁਪਹਿਰ') { + return hour >= 10 ? hour : hour + 12; + } else if (meridiem === 'ਸ਼ਾਮ') { + return hour + 12; + } + }, + meridiem : function (hour, minute, isLower) { + if (hour < 4) { + return 'ਰਾਤ'; + } else if (hour < 10) { + return 'ਸਵੇਰ'; + } else if (hour < 17) { + return 'ਦੁਪਹਿਰ'; + } else if (hour < 20) { + return 'ਸ਼ਾਮ'; + } else { + return 'ਰਾਤ'; + } + }, + week : { + dow : 0, // Sunday is the first day of the week. + doy : 6 // The week that contains Jan 1st is the first week of the year. + } + }); + + return pa_in; + +})); \ No newline at end of file diff --git a/resources/lib/moment/locale/pl.js b/resources/lib/moment/locale/pl.js index 167b4b4023..0a861d1d67 100644 --- a/resources/lib/moment/locale/pl.js +++ b/resources/lib/moment/locale/pl.js @@ -1,46 +1,46 @@ -// moment.js locale configuration -// locale : polish (pl) -// author : Rafal Hirsz : https://github.com/evoL +//! moment.js locale configuration +//! locale : Polish [pl] +//! author : Rafal Hirsz : https://github.com/evoL + +;(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' + && typeof require === 'function' ? factory(require('../moment')) : + typeof define === 'function' && define.amd ? define(['../moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + -(function (factory) { - // Comment out broken wrapper, see T145382 - /*if (typeof define === 'function' && define.amd) { - define(['moment'], factory); // AMD - } else if (typeof exports === 'object') { - module.exports = factory(require('../moment')); // Node - } else { - factory((typeof global !== 'undefined' ? global : this).moment); // node or other global - }*/ - factory(this.moment); -}(function (moment) { var monthsNominative = 'styczeń_luty_marzec_kwiecień_maj_czerwiec_lipiec_sierpień_wrzesień_październik_listopad_grudzień'.split('_'), monthsSubjective = 'stycznia_lutego_marca_kwietnia_maja_czerwca_lipca_sierpnia_września_października_listopada_grudnia'.split('_'); - function plural(n) { return (n % 10 < 5) && (n % 10 > 1) && ((~~(n / 10) % 10) !== 1); } - function translate(number, withoutSuffix, key) { var result = number + ' '; switch (key) { - case 'm': - return withoutSuffix ? 'minuta' : 'minutę'; - case 'mm': - return result + (plural(number) ? 'minuty' : 'minut'); - case 'h': - return withoutSuffix ? 'godzina' : 'godzinę'; - case 'hh': - return result + (plural(number) ? 'godziny' : 'godzin'); - case 'MM': - return result + (plural(number) ? 'miesiące' : 'miesięcy'); - case 'yy': - return result + (plural(number) ? 'lata' : 'lat'); + case 'm': + return withoutSuffix ? 'minuta' : 'minutę'; + case 'mm': + return result + (plural(number) ? 'minuty' : 'minut'); + case 'h': + return withoutSuffix ? 'godzina' : 'godzinę'; + case 'hh': + return result + (plural(number) ? 'godziny' : 'godzin'); + case 'MM': + return result + (plural(number) ? 'miesiące' : 'miesięcy'); + case 'yy': + return result + (plural(number) ? 'lata' : 'lat'); } } - return moment.defineLocale('pl', { + var pl = moment.defineLocale('pl', { months : function (momentToFormat, format) { - if (/D MMMM/.test(format)) { + if (format === '') { + // Hack: if format empty we know this is used to generate + // RegExp by moment. Give then back both valid forms of months + // in RegExp ready format. + return '(' + monthsSubjective[momentToFormat.month()] + '|' + monthsNominative[momentToFormat.month()] + ')'; + } else if (/D MMMM/.test(format)) { return monthsSubjective[momentToFormat.month()]; } else { return monthsNominative[momentToFormat.month()]; @@ -49,14 +49,14 @@ monthsShort : 'sty_lut_mar_kwi_maj_cze_lip_sie_wrz_paź_lis_gru'.split('_'), weekdays : 'niedziela_poniedziałek_wtorek_środa_czwartek_piątek_sobota'.split('_'), weekdaysShort : 'nie_pon_wt_śr_czw_pt_sb'.split('_'), - weekdaysMin : 'N_Pn_Wt_Śr_Cz_Pt_So'.split('_'), + weekdaysMin : 'Nd_Pn_Wt_Śr_Cz_Pt_So'.split('_'), longDateFormat : { LT : 'HH:mm', - LTS : 'LT:ss', + LTS : 'HH:mm:ss', L : 'DD.MM.YYYY', LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY LT', - LLLL : 'dddd, D MMMM YYYY LT' + LLL : 'D MMMM YYYY HH:mm', + LLLL : 'dddd, D MMMM YYYY HH:mm' }, calendar : { sameDay: '[Dziś o] LT', @@ -65,14 +65,14 @@ lastDay: '[Wczoraj o] LT', lastWeek: function () { switch (this.day()) { - case 0: - return '[W zeszłą niedzielę o] LT'; - case 3: - return '[W zeszłą środę o] LT'; - case 6: - return '[W zeszłą sobotę o] LT'; - default: - return '[W zeszły] dddd [o] LT'; + case 0: + return '[W zeszłą niedzielę o] LT'; + case 3: + return '[W zeszłą środę o] LT'; + case 6: + return '[W zeszłą sobotę o] LT'; + default: + return '[W zeszły] dddd [o] LT'; } }, sameElse: 'L' @@ -99,4 +99,7 @@ doy : 4 // The week that contains Jan 4th is the first week of the year. } }); -})); + + return pl; + +})); \ No newline at end of file diff --git a/resources/lib/moment/locale/pt-br.js b/resources/lib/moment/locale/pt-br.js index 0c5d2c241f..32272050cf 100644 --- a/resources/lib/moment/locale/pt-br.js +++ b/resources/lib/moment/locale/pt-br.js @@ -1,31 +1,29 @@ -// moment.js locale configuration -// locale : brazilian portuguese (pt-br) -// author : Caio Ribeiro Pereira : https://github.com/caio-ribeiro-pereira +//! moment.js locale configuration +//! locale : Portuguese (Brazil) [pt-br] +//! author : Caio Ribeiro Pereira : https://github.com/caio-ribeiro-pereira -(function (factory) { - // Comment out broken wrapper, see T145382 - /*if (typeof define === 'function' && define.amd) { - define(['moment'], factory); // AMD - } else if (typeof exports === 'object') { - module.exports = factory(require('../moment')); // Node - } else { - factory((typeof global !== 'undefined' ? global : this).moment); // node or other global - }*/ - factory(this.moment); -}(function (moment) { - return moment.defineLocale('pt-br', { - months : 'janeiro_fevereiro_março_abril_maio_junho_julho_agosto_setembro_outubro_novembro_dezembro'.split('_'), - monthsShort : 'jan_fev_mar_abr_mai_jun_jul_ago_set_out_nov_dez'.split('_'), - weekdays : 'domingo_segunda-feira_terça-feira_quarta-feira_quinta-feira_sexta-feira_sábado'.split('_'), - weekdaysShort : 'dom_seg_ter_qua_qui_sex_sáb'.split('_'), - weekdaysMin : 'dom_2ª_3ª_4ª_5ª_6ª_sáb'.split('_'), +;(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' + && typeof require === 'function' ? factory(require('../moment')) : + typeof define === 'function' && define.amd ? define(['../moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + + + var pt_br = moment.defineLocale('pt-br', { + months : 'Janeiro_Fevereiro_Março_Abril_Maio_Junho_Julho_Agosto_Setembro_Outubro_Novembro_Dezembro'.split('_'), + monthsShort : 'Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez'.split('_'), + weekdays : 'Domingo_Segunda-feira_Terça-feira_Quarta-feira_Quinta-feira_Sexta-feira_Sábado'.split('_'), + weekdaysShort : 'Dom_Seg_Ter_Qua_Qui_Sex_Sáb'.split('_'), + weekdaysMin : 'Dom_2ª_3ª_4ª_5ª_6ª_Sáb'.split('_'), + weekdaysParseExact : true, longDateFormat : { LT : 'HH:mm', - LTS : 'LT:ss', + LTS : 'HH:mm:ss', L : 'DD/MM/YYYY', LL : 'D [de] MMMM [de] YYYY', - LLL : 'D [de] MMMM [de] YYYY [às] LT', - LLLL : 'dddd, D [de] MMMM [de] YYYY [às] LT' + LLL : 'D [de] MMMM [de] YYYY [às] HH:mm', + LLLL : 'dddd, D [de] MMMM [de] YYYY [às] HH:mm' }, calendar : { sameDay: '[Hoje às] LT', @@ -42,7 +40,7 @@ relativeTime : { future : 'em %s', past : '%s atrás', - s : 'segundos', + s : 'poucos segundos', m : 'um minuto', mm : '%d minutos', h : 'uma hora', @@ -57,4 +55,7 @@ ordinalParse: /\d{1,2}º/, ordinal : '%dº' }); -})); + + return pt_br; + +})); \ No newline at end of file diff --git a/resources/lib/moment/locale/pt.js b/resources/lib/moment/locale/pt.js index ef9cb80053..72c2a1bdb9 100644 --- a/resources/lib/moment/locale/pt.js +++ b/resources/lib/moment/locale/pt.js @@ -1,31 +1,29 @@ -// moment.js locale configuration -// locale : portuguese (pt) -// author : Jefferson : https://github.com/jalex79 +//! moment.js locale configuration +//! locale : Portuguese [pt] +//! author : Jefferson : https://github.com/jalex79 -(function (factory) { - // Comment out broken wrapper, see T145382 - /*if (typeof define === 'function' && define.amd) { - define(['moment'], factory); // AMD - } else if (typeof exports === 'object') { - module.exports = factory(require('../moment')); // Node - } else { - factory((typeof global !== 'undefined' ? global : this).moment); // node or other global - }*/ - factory(this.moment); -}(function (moment) { - return moment.defineLocale('pt', { - months : 'janeiro_fevereiro_março_abril_maio_junho_julho_agosto_setembro_outubro_novembro_dezembro'.split('_'), - monthsShort : 'jan_fev_mar_abr_mai_jun_jul_ago_set_out_nov_dez'.split('_'), - weekdays : 'domingo_segunda-feira_terça-feira_quarta-feira_quinta-feira_sexta-feira_sábado'.split('_'), - weekdaysShort : 'dom_seg_ter_qua_qui_sex_sáb'.split('_'), - weekdaysMin : 'dom_2ª_3ª_4ª_5ª_6ª_sáb'.split('_'), +;(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' + && typeof require === 'function' ? factory(require('../moment')) : + typeof define === 'function' && define.amd ? define(['../moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + + + var pt = moment.defineLocale('pt', { + months : 'Janeiro_Fevereiro_Março_Abril_Maio_Junho_Julho_Agosto_Setembro_Outubro_Novembro_Dezembro'.split('_'), + monthsShort : 'Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez'.split('_'), + weekdays : 'Domingo_Segunda-Feira_Terça-Feira_Quarta-Feira_Quinta-Feira_Sexta-Feira_Sábado'.split('_'), + weekdaysShort : 'Dom_Seg_Ter_Qua_Qui_Sex_Sáb'.split('_'), + weekdaysMin : 'Dom_2ª_3ª_4ª_5ª_6ª_Sáb'.split('_'), + weekdaysParseExact : true, longDateFormat : { LT : 'HH:mm', - LTS : 'LT:ss', + LTS : 'HH:mm:ss', L : 'DD/MM/YYYY', LL : 'D [de] MMMM [de] YYYY', - LLL : 'D [de] MMMM [de] YYYY LT', - LLLL : 'dddd, D [de] MMMM [de] YYYY LT' + LLL : 'D [de] MMMM [de] YYYY HH:mm', + LLLL : 'dddd, D [de] MMMM [de] YYYY HH:mm' }, calendar : { sameDay: '[Hoje às] LT', @@ -61,4 +59,7 @@ doy : 4 // The week that contains Jan 4th is the first week of the year. } }); -})); + + return pt; + +})); \ No newline at end of file diff --git a/resources/lib/moment/locale/ro.js b/resources/lib/moment/locale/ro.js index 7b2c93d708..78b325ac38 100644 --- a/resources/lib/moment/locale/ro.js +++ b/resources/lib/moment/locale/ro.js @@ -1,19 +1,16 @@ -// moment.js locale configuration -// locale : romanian (ro) -// author : Vlad Gurdiga : https://github.com/gurdiga -// author : Valentin Agachi : https://github.com/avaly +//! moment.js locale configuration +//! locale : Romanian [ro] +//! author : Vlad Gurdiga : https://github.com/gurdiga +//! author : Valentin Agachi : https://github.com/avaly + +;(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' + && typeof require === 'function' ? factory(require('../moment')) : + typeof define === 'function' && define.amd ? define(['../moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + -(function (factory) { - // Comment out broken wrapper, see T145382 - /*if (typeof define === 'function' && define.amd) { - define(['moment'], factory); // AMD - } else if (typeof exports === 'object') { - module.exports = factory(require('../moment')); // Node - } else { - factory((typeof global !== 'undefined' ? global : this).moment); // node or other global - }*/ - factory(this.moment); -}(function (moment) { function relativeTimeWithPlural(number, withoutSuffix, key) { var format = { 'mm': 'minute', @@ -26,19 +23,19 @@ if (number % 100 >= 20 || (number >= 100 && number % 100 === 0)) { separator = ' de '; } - return number + separator + format[key]; } - return moment.defineLocale('ro', { + var ro = moment.defineLocale('ro', { months : 'ianuarie_februarie_martie_aprilie_mai_iunie_iulie_august_septembrie_octombrie_noiembrie_decembrie'.split('_'), monthsShort : 'ian._febr._mart._apr._mai_iun._iul._aug._sept._oct._nov._dec.'.split('_'), + monthsParseExact: true, weekdays : 'duminică_luni_marți_miercuri_joi_vineri_sâmbătă'.split('_'), weekdaysShort : 'Dum_Lun_Mar_Mie_Joi_Vin_Sâm'.split('_'), weekdaysMin : 'Du_Lu_Ma_Mi_Jo_Vi_Sâ'.split('_'), longDateFormat : { LT : 'H:mm', - LTS : 'LT:ss', + LTS : 'H:mm:ss', L : 'DD.MM.YYYY', LL : 'D MMMM YYYY', LLL : 'D MMMM YYYY H:mm', @@ -72,4 +69,7 @@ doy : 7 // The week that contains Jan 1st is the first week of the year. } }); -})); + + return ro; + +})); \ No newline at end of file diff --git a/resources/lib/moment/locale/ru.js b/resources/lib/moment/locale/ru.js index 65265dac40..faa3cc2e37 100644 --- a/resources/lib/moment/locale/ru.js +++ b/resources/lib/moment/locale/ru.js @@ -1,24 +1,21 @@ -// moment.js locale configuration -// locale : russian (ru) -// author : Viktorminator : https://github.com/Viktorminator -// Author : Menelion Elensúle : https://github.com/Oire +//! moment.js locale configuration +//! locale : Russian [ru] +//! author : Viktorminator : https://github.com/Viktorminator +//! Author : Menelion Elensúle : https://github.com/Oire +//! author : Коренберг Марк : https://github.com/socketpair + +;(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' + && typeof require === 'function' ? factory(require('../moment')) : + typeof define === 'function' && define.amd ? define(['../moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + -(function (factory) { - // Comment out broken wrapper, see T145382 - /*if (typeof define === 'function' && define.amd) { - define(['moment'], factory); // AMD - } else if (typeof exports === 'object') { - module.exports = factory(require('../moment')); // Node - } else { - factory((typeof global !== 'undefined' ? global : this).moment); // node or other global - }*/ - factory(this.moment); -}(function (moment) { function plural(word, num) { var forms = word.split('_'); return num % 10 === 1 && num % 100 !== 11 ? forms[0] : (num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20) ? forms[1] : forms[2]); } - function relativeTimeWithPlural(number, withoutSuffix, key) { var format = { 'mm': withoutSuffix ? 'минута_минуты_минут' : 'минуту_минуты_минут', @@ -34,81 +31,90 @@ return number + ' ' + plural(format[key], +number); } } - - function monthsCaseReplace(m, format) { - var months = { - 'nominative': 'январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь'.split('_'), - 'accusative': 'января_февраля_марта_апреля_мая_июня_июля_августа_сентября_октября_ноября_декабря'.split('_') + var monthsParse = [/^янв/i, /^фев/i, /^мар/i, /^апр/i, /^ма[йя]/i, /^июн/i, /^июл/i, /^авг/i, /^сен/i, /^окт/i, /^ноя/i, /^дек/i]; + + // http://new.gramota.ru/spravka/rules/139-prop : § 103 + // Сокращения месяцев: http://new.gramota.ru/spravka/buro/search-answer?s=242637 + // CLDR data: http://www.unicode.org/cldr/charts/28/summary/ru.html#1753 + var ru = moment.defineLocale('ru', { + months : { + format: 'января_февраля_марта_апреля_мая_июня_июля_августа_сентября_октября_ноября_декабря'.split('_'), + standalone: 'январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь'.split('_') }, - - nounCase = (/D[oD]?(\[[^\[\]]*\]|\s+)+MMMM?/).test(format) ? - 'accusative' : - 'nominative'; - - return months[nounCase][m.month()]; - } - - function monthsShortCaseReplace(m, format) { - var monthsShort = { - 'nominative': 'янв_фев_март_апр_май_июнь_июль_авг_сен_окт_ноя_дек'.split('_'), - 'accusative': 'янв_фев_мар_апр_мая_июня_июля_авг_сен_окт_ноя_дек'.split('_') + monthsShort : { + // по CLDR именно "июл." и "июн.", но какой смысл менять букву на точку ? + format: 'янв._февр._мар._апр._мая_июня_июля_авг._сент._окт._нояб._дек.'.split('_'), + standalone: 'янв._февр._март_апр._май_июнь_июль_авг._сент._окт._нояб._дек.'.split('_') }, - - nounCase = (/D[oD]?(\[[^\[\]]*\]|\s+)+MMMM?/).test(format) ? - 'accusative' : - 'nominative'; - - return monthsShort[nounCase][m.month()]; - } - - function weekdaysCaseReplace(m, format) { - var weekdays = { - 'nominative': 'воскресенье_понедельник_вторник_среда_четверг_пятница_суббота'.split('_'), - 'accusative': 'воскресенье_понедельник_вторник_среду_четверг_пятницу_субботу'.split('_') + weekdays : { + standalone: 'воскресенье_понедельник_вторник_среда_четверг_пятница_суббота'.split('_'), + format: 'воскресенье_понедельник_вторник_среду_четверг_пятницу_субботу'.split('_'), + isFormat: /\[ ?[Вв] ?(?:прошлую|следующую|эту)? ?\] ?dddd/ }, + weekdaysShort : 'вс_пн_вт_ср_чт_пт_сб'.split('_'), + weekdaysMin : 'вс_пн_вт_ср_чт_пт_сб'.split('_'), + monthsParse : monthsParse, + longMonthsParse : monthsParse, + shortMonthsParse : monthsParse, - nounCase = (/\[ ?[Вв] ?(?:прошлую|следующую|эту)? ?\] ?dddd/).test(format) ? - 'accusative' : - 'nominative'; + // полные названия с падежами, по три буквы, для некоторых, по 4 буквы, сокращения с точкой и без точки + monthsRegex: /^(январ[ья]|янв\.?|феврал[ья]|февр?\.?|марта?|мар\.?|апрел[ья]|апр\.?|ма[йя]|июн[ья]|июн\.?|июл[ья]|июл\.?|августа?|авг\.?|сентябр[ья]|сент?\.?|октябр[ья]|окт\.?|ноябр[ья]|нояб?\.?|декабр[ья]|дек\.?)/i, - return weekdays[nounCase][m.day()]; - } + // копия предыдущего + monthsShortRegex: /^(январ[ья]|янв\.?|феврал[ья]|февр?\.?|марта?|мар\.?|апрел[ья]|апр\.?|ма[йя]|июн[ья]|июн\.?|июл[ья]|июл\.?|августа?|авг\.?|сентябр[ья]|сент?\.?|октябр[ья]|окт\.?|ноябр[ья]|нояб?\.?|декабр[ья]|дек\.?)/i, - return moment.defineLocale('ru', { - months : monthsCaseReplace, - monthsShort : monthsShortCaseReplace, - weekdays : weekdaysCaseReplace, - weekdaysShort : 'вс_пн_вт_ср_чт_пт_сб'.split('_'), - weekdaysMin : 'вс_пн_вт_ср_чт_пт_сб'.split('_'), - monthsParse : [/^янв/i, /^фев/i, /^мар/i, /^апр/i, /^ма[й|я]/i, /^июн/i, /^июл/i, /^авг/i, /^сен/i, /^окт/i, /^ноя/i, /^дек/i], + // полные названия с падежами + monthsStrictRegex: /^(январ[яь]|феврал[яь]|марта?|апрел[яь]|ма[яй]|июн[яь]|июл[яь]|августа?|сентябр[яь]|октябр[яь]|ноябр[яь]|декабр[яь])/i, + + // Выражение, которое соотвествует только сокращённым формам + monthsShortStrictRegex: /^(янв\.|февр?\.|мар[т.]|апр\.|ма[яй]|июн[ья.]|июл[ья.]|авг\.|сент?\.|окт\.|нояб?\.|дек\.)/i, longDateFormat : { LT : 'HH:mm', - LTS : 'LT:ss', + LTS : 'HH:mm:ss', L : 'DD.MM.YYYY', LL : 'D MMMM YYYY г.', - LLL : 'D MMMM YYYY г., LT', - LLLL : 'dddd, D MMMM YYYY г., LT' + LLL : 'D MMMM YYYY г., HH:mm', + LLLL : 'dddd, D MMMM YYYY г., HH:mm' }, calendar : { sameDay: '[Сегодня в] LT', nextDay: '[Завтра в] LT', lastDay: '[Вчера в] LT', - nextWeek: function () { - return this.day() === 2 ? '[Во] dddd [в] LT' : '[В] dddd [в] LT'; + nextWeek: function (now) { + if (now.week() !== this.week()) { + switch (this.day()) { + case 0: + return '[В следующее] dddd [в] LT'; + case 1: + case 2: + case 4: + return '[В следующий] dddd [в] LT'; + case 3: + case 5: + case 6: + return '[В следующую] dddd [в] LT'; + } + } else { + if (this.day() === 2) { + return '[Во] dddd [в] LT'; + } else { + return '[В] dddd [в] LT'; + } + } }, lastWeek: function (now) { if (now.week() !== this.week()) { switch (this.day()) { - case 0: - return '[В прошлое] dddd [в] LT'; - case 1: - case 2: - case 4: - return '[В прошлый] dddd [в] LT'; - case 3: - case 5: - case 6: - return '[В прошлую] dddd [в] LT'; + case 0: + return '[В прошлое] dddd [в] LT'; + case 1: + case 2: + case 4: + return '[В прошлый] dddd [в] LT'; + case 3: + case 5: + case 6: + return '[В прошлую] dddd [в] LT'; } } else { if (this.day() === 2) { @@ -135,12 +141,10 @@ y : 'год', yy : relativeTimeWithPlural }, - meridiemParse: /ночи|утра|дня|вечера/i, isPM : function (input) { return /^(дня|вечера)$/.test(input); }, - meridiem : function (hour, minute, isLower) { if (hour < 4) { return 'ночи'; @@ -152,27 +156,28 @@ return 'вечера'; } }, - ordinalParse: /\d{1,2}-(й|го|я)/, ordinal: function (number, period) { switch (period) { - case 'M': - case 'd': - case 'DDD': - return number + '-й'; - case 'D': - return number + '-го'; - case 'w': - case 'W': - return number + '-я'; - default: - return number; + case 'M': + case 'd': + case 'DDD': + return number + '-й'; + case 'D': + return number + '-го'; + case 'w': + case 'W': + return number + '-я'; + default: + return number; } }, - week : { dow : 1, // Monday is the first day of the week. doy : 7 // The week that contains Jan 1st is the first week of the year. } }); -})); + + return ru; + +})); \ No newline at end of file diff --git a/resources/lib/moment/locale/se.js b/resources/lib/moment/locale/se.js new file mode 100644 index 0000000000..4ed6afbae9 --- /dev/null +++ b/resources/lib/moment/locale/se.js @@ -0,0 +1,61 @@ +//! moment.js locale configuration +//! locale : Northern Sami [se] +//! authors : BÃ¥rd Rolstad Henriksen : https://github.com/karamell + +;(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' + && typeof require === 'function' ? factory(require('../moment')) : + typeof define === 'function' && define.amd ? define(['../moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + + + + var se = moment.defineLocale('se', { + months : 'ođđajagemánnu_guovvamánnu_njukčamánnu_cuoŋománnu_miessemánnu_geassemánnu_suoidnemánnu_borgemánnu_čakčamánnu_golggotmánnu_skábmamánnu_juovlamánnu'.split('_'), + monthsShort : 'ođđj_guov_njuk_cuo_mies_geas_suoi_borg_čakč_golg_skáb_juov'.split('_'), + weekdays : 'sotnabeaivi_vuossárga_maŋŋebárga_gaskavahkku_duorastat_bearjadat_lávvardat'.split('_'), + weekdaysShort : 'sotn_vuos_maŋ_gask_duor_bear_láv'.split('_'), + weekdaysMin : 's_v_m_g_d_b_L'.split('_'), + longDateFormat : { + LT : 'HH:mm', + LTS : 'HH:mm:ss', + L : 'DD.MM.YYYY', + LL : 'MMMM D. [b.] YYYY', + LLL : 'MMMM D. [b.] YYYY [ti.] HH:mm', + LLLL : 'dddd, MMMM D. [b.] YYYY [ti.] HH:mm' + }, + calendar : { + sameDay: '[otne ti] LT', + nextDay: '[ihttin ti] LT', + nextWeek: 'dddd [ti] LT', + lastDay: '[ikte ti] LT', + lastWeek: '[ovddit] dddd [ti] LT', + sameElse: 'L' + }, + relativeTime : { + future : '%s geažes', + past : 'maŋit %s', + s : 'moadde sekunddat', + m : 'okta minuhta', + mm : '%d minuhtat', + h : 'okta diimmu', + hh : '%d diimmut', + d : 'okta beaivi', + dd : '%d beaivvit', + M : 'okta mánnu', + MM : '%d mánut', + y : 'okta jahki', + yy : '%d jagit' + }, + ordinalParse: /\d{1,2}\./, + ordinal : '%d.', + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } + }); + + return se; + +})); \ No newline at end of file diff --git a/resources/lib/moment/locale/si.js b/resources/lib/moment/locale/si.js new file mode 100644 index 0000000000..be2387acad --- /dev/null +++ b/resources/lib/moment/locale/si.js @@ -0,0 +1,71 @@ +//! moment.js locale configuration +//! locale : Sinhalese [si] +//! author : Sampath Sitinamaluwa : https://github.com/sampathsris + +;(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' + && typeof require === 'function' ? factory(require('../moment')) : + typeof define === 'function' && define.amd ? define(['../moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + + + /*jshint -W100*/ + var si = moment.defineLocale('si', { + months : 'ජනවාරි_පෙබරවාරි_මාර්තු_අප්‍රේල්_මැයි_ජූනි_ජූලි_අගෝස්තු_සැප්තැම්බර්_ඔක්තෝබර්_නොවැම්බර්_දෙසැම්බර්'.split('_'), + monthsShort : 'ජන_පෙබ_මාර්_අප්_මැයි_ජූනි_ජූලි_අගෝ_සැප්_ඔක්_නොවැ_දෙසැ'.split('_'), + weekdays : 'ඉරිදා_සඳුදා_අඟහරුවාදා_බදාදා_බ්‍රහස්පතින්දා_සිකුරාදා_සෙනසුරාදා'.split('_'), + weekdaysShort : 'ඉරි_සඳු_අඟ_බදා_බ්‍රහ_සිකු_සෙන'.split('_'), + weekdaysMin : 'ඉ_ස_අ_බ_බ්‍ර_සි_සෙ'.split('_'), + weekdaysParseExact : true, + longDateFormat : { + LT : 'a h:mm', + LTS : 'a h:mm:ss', + L : 'YYYY/MM/DD', + LL : 'YYYY MMMM D', + LLL : 'YYYY MMMM D, a h:mm', + LLLL : 'YYYY MMMM D [වැනි] dddd, a h:mm:ss' + }, + calendar : { + sameDay : '[අද] LT[ට]', + nextDay : '[හෙට] LT[ට]', + nextWeek : 'dddd LT[ට]', + lastDay : '[ඊයේ] LT[ට]', + lastWeek : '[පසුගිය] dddd LT[ට]', + sameElse : 'L' + }, + relativeTime : { + future : '%sකින්', + past : '%sකට පෙර', + s : 'තත්පර කිහිපය', + m : 'මිනිත්තුව', + mm : 'මිනිත්තු %d', + h : 'පැය', + hh : 'පැය %d', + d : 'දිනය', + dd : 'දින %d', + M : 'මාසය', + MM : 'මාස %d', + y : 'වසර', + yy : 'වසර %d' + }, + ordinalParse: /\d{1,2} වැනි/, + ordinal : function (number) { + return number + ' වැනි'; + }, + meridiemParse : /පෙර වරු|පස් වරු|පෙ.ව|ප.ව./, + isPM : function (input) { + return input === 'ප.ව.' || input === 'පස් වරු'; + }, + meridiem : function (hours, minutes, isLower) { + if (hours > 11) { + return isLower ? 'ප.ව.' : 'පස් වරු'; + } else { + return isLower ? 'පෙ.ව.' : 'පෙර වරු'; + } + } + }); + + return si; + +})); \ No newline at end of file diff --git a/resources/lib/moment/locale/sk.js b/resources/lib/moment/locale/sk.js index 7eae2f4bbb..582ae7ee69 100644 --- a/resources/lib/moment/locale/sk.js +++ b/resources/lib/moment/locale/sk.js @@ -1,136 +1,123 @@ -// moment.js locale configuration -// locale : slovak (sk) -// author : Martin Minka : https://github.com/k2s -// based on work of petrbela : https://github.com/petrbela +//! moment.js locale configuration +//! locale : Slovak [sk] +//! author : Martin Minka : https://github.com/k2s +//! based on work of petrbela : https://github.com/petrbela + +;(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' + && typeof require === 'function' ? factory(require('../moment')) : + typeof define === 'function' && define.amd ? define(['../moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + -(function (factory) { - // Comment out broken wrapper, see T145382 - /*if (typeof define === 'function' && define.amd) { - define(['moment'], factory); // AMD - } else if (typeof exports === 'object') { - module.exports = factory(require('../moment')); // Node - } else { - factory((typeof global !== 'undefined' ? global : this).moment); // node or other global - }*/ - factory(this.moment); -}(function (moment) { var months = 'január_február_marec_apríl_máj_jún_júl_august_september_október_november_december'.split('_'), monthsShort = 'jan_feb_mar_apr_máj_jún_júl_aug_sep_okt_nov_dec'.split('_'); - function plural(n) { return (n > 1) && (n < 5); } - function translate(number, withoutSuffix, key, isFuture) { var result = number + ' '; switch (key) { - case 's': // a few seconds / in a few seconds / a few seconds ago - return (withoutSuffix || isFuture) ? 'pár sekúnd' : 'pár sekundami'; - case 'm': // a minute / in a minute / a minute ago - return withoutSuffix ? 'minúta' : (isFuture ? 'minútu' : 'minútou'); - case 'mm': // 9 minutes / in 9 minutes / 9 minutes ago - if (withoutSuffix || isFuture) { - return result + (plural(number) ? 'minúty' : 'minút'); - } else { - return result + 'minútami'; - } - break; - case 'h': // an hour / in an hour / an hour ago - return withoutSuffix ? 'hodina' : (isFuture ? 'hodinu' : 'hodinou'); - case 'hh': // 9 hours / in 9 hours / 9 hours ago - if (withoutSuffix || isFuture) { - return result + (plural(number) ? 'hodiny' : 'hodín'); - } else { - return result + 'hodinami'; - } - break; - case 'd': // a day / in a day / a day ago - return (withoutSuffix || isFuture) ? 'deň' : 'dňom'; - case 'dd': // 9 days / in 9 days / 9 days ago - if (withoutSuffix || isFuture) { - return result + (plural(number) ? 'dni' : 'dní'); - } else { - return result + 'dňami'; - } - break; - case 'M': // a month / in a month / a month ago - return (withoutSuffix || isFuture) ? 'mesiac' : 'mesiacom'; - case 'MM': // 9 months / in 9 months / 9 months ago - if (withoutSuffix || isFuture) { - return result + (plural(number) ? 'mesiace' : 'mesiacov'); - } else { - return result + 'mesiacmi'; - } - break; - case 'y': // a year / in a year / a year ago - return (withoutSuffix || isFuture) ? 'rok' : 'rokom'; - case 'yy': // 9 years / in 9 years / 9 years ago - if (withoutSuffix || isFuture) { - return result + (plural(number) ? 'roky' : 'rokov'); - } else { - return result + 'rokmi'; - } - break; + case 's': // a few seconds / in a few seconds / a few seconds ago + return (withoutSuffix || isFuture) ? 'pár sekúnd' : 'pár sekundami'; + case 'm': // a minute / in a minute / a minute ago + return withoutSuffix ? 'minúta' : (isFuture ? 'minútu' : 'minútou'); + case 'mm': // 9 minutes / in 9 minutes / 9 minutes ago + if (withoutSuffix || isFuture) { + return result + (plural(number) ? 'minúty' : 'minút'); + } else { + return result + 'minútami'; + } + break; + case 'h': // an hour / in an hour / an hour ago + return withoutSuffix ? 'hodina' : (isFuture ? 'hodinu' : 'hodinou'); + case 'hh': // 9 hours / in 9 hours / 9 hours ago + if (withoutSuffix || isFuture) { + return result + (plural(number) ? 'hodiny' : 'hodín'); + } else { + return result + 'hodinami'; + } + break; + case 'd': // a day / in a day / a day ago + return (withoutSuffix || isFuture) ? 'deň' : 'dňom'; + case 'dd': // 9 days / in 9 days / 9 days ago + if (withoutSuffix || isFuture) { + return result + (plural(number) ? 'dni' : 'dní'); + } else { + return result + 'dňami'; + } + break; + case 'M': // a month / in a month / a month ago + return (withoutSuffix || isFuture) ? 'mesiac' : 'mesiacom'; + case 'MM': // 9 months / in 9 months / 9 months ago + if (withoutSuffix || isFuture) { + return result + (plural(number) ? 'mesiace' : 'mesiacov'); + } else { + return result + 'mesiacmi'; + } + break; + case 'y': // a year / in a year / a year ago + return (withoutSuffix || isFuture) ? 'rok' : 'rokom'; + case 'yy': // 9 years / in 9 years / 9 years ago + if (withoutSuffix || isFuture) { + return result + (plural(number) ? 'roky' : 'rokov'); + } else { + return result + 'rokmi'; + } + break; } } - return moment.defineLocale('sk', { + var sk = moment.defineLocale('sk', { months : months, monthsShort : monthsShort, - monthsParse : (function (months, monthsShort) { - var i, _monthsParse = []; - for (i = 0; i < 12; i++) { - // use custom parser to solve problem with July (červenec) - _monthsParse[i] = new RegExp('^' + months[i] + '$|^' + monthsShort[i] + '$', 'i'); - } - return _monthsParse; - }(months, monthsShort)), weekdays : 'nedeľa_pondelok_utorok_streda_Å¡tvrtok_piatok_sobota'.split('_'), weekdaysShort : 'ne_po_ut_st_Å¡t_pi_so'.split('_'), weekdaysMin : 'ne_po_ut_st_Å¡t_pi_so'.split('_'), longDateFormat : { LT: 'H:mm', - LTS : 'LT:ss', + LTS : 'H:mm:ss', L : 'DD.MM.YYYY', LL : 'D. MMMM YYYY', - LLL : 'D. MMMM YYYY LT', - LLLL : 'dddd D. MMMM YYYY LT' + LLL : 'D. MMMM YYYY H:mm', + LLLL : 'dddd D. MMMM YYYY H:mm' }, calendar : { sameDay: '[dnes o] LT', nextDay: '[zajtra o] LT', nextWeek: function () { switch (this.day()) { - case 0: - return '[v nedeľu o] LT'; - case 1: - case 2: - return '[v] dddd [o] LT'; - case 3: - return '[v stredu o] LT'; - case 4: - return '[vo Å¡tvrtok o] LT'; - case 5: - return '[v piatok o] LT'; - case 6: - return '[v sobotu o] LT'; + case 0: + return '[v nedeľu o] LT'; + case 1: + case 2: + return '[v] dddd [o] LT'; + case 3: + return '[v stredu o] LT'; + case 4: + return '[vo Å¡tvrtok o] LT'; + case 5: + return '[v piatok o] LT'; + case 6: + return '[v sobotu o] LT'; } }, lastDay: '[včera o] LT', lastWeek: function () { switch (this.day()) { - case 0: - return '[minulú nedeľu o] LT'; - case 1: - case 2: - return '[minulý] dddd [o] LT'; - case 3: - return '[minulú stredu o] LT'; - case 4: - case 5: - return '[minulý] dddd [o] LT'; - case 6: - return '[minulú sobotu o] LT'; + case 0: + return '[minulú nedeľu o] LT'; + case 1: + case 2: + return '[minulý] dddd [o] LT'; + case 3: + return '[minulú stredu o] LT'; + case 4: + case 5: + return '[minulý] dddd [o] LT'; + case 6: + return '[minulú sobotu o] LT'; } }, sameElse: 'L' @@ -157,4 +144,7 @@ doy : 4 // The week that contains Jan 4th is the first week of the year. } }); -})); + + return sk; + +})); \ No newline at end of file diff --git a/resources/lib/moment/locale/sl.js b/resources/lib/moment/locale/sl.js index 54fe37d7f7..3371f6b7c2 100644 --- a/resources/lib/moment/locale/sl.js +++ b/resources/lib/moment/locale/sl.js @@ -1,92 +1,101 @@ -// moment.js locale configuration -// locale : slovenian (sl) -// author : Robert SedovÅ¡ek : https://github.com/sedovsek +//! moment.js locale configuration +//! locale : Slovenian [sl] +//! author : Robert SedovÅ¡ek : https://github.com/sedovsek -(function (factory) { - // Comment out broken wrapper, see T145382 - /*if (typeof define === 'function' && define.amd) { - define(['moment'], factory); // AMD - } else if (typeof exports === 'object') { - module.exports = factory(require('../moment')); // Node - } else { - factory((typeof global !== 'undefined' ? global : this).moment); // node or other global - }*/ - factory(this.moment); -}(function (moment) { - function translate(number, withoutSuffix, key) { +;(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' + && typeof require === 'function' ? factory(require('../moment')) : + typeof define === 'function' && define.amd ? define(['../moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + + + function processRelativeTime(number, withoutSuffix, key, isFuture) { var result = number + ' '; switch (key) { - case 'm': - return withoutSuffix ? 'ena minuta' : 'eno minuto'; - case 'mm': - if (number === 1) { - result += 'minuta'; - } else if (number === 2) { - result += 'minuti'; - } else if (number === 3 || number === 4) { - result += 'minute'; - } else { - result += 'minut'; - } - return result; - case 'h': - return withoutSuffix ? 'ena ura' : 'eno uro'; - case 'hh': - if (number === 1) { - result += 'ura'; - } else if (number === 2) { - result += 'uri'; - } else if (number === 3 || number === 4) { - result += 'ure'; - } else { - result += 'ur'; - } - return result; - case 'dd': - if (number === 1) { - result += 'dan'; - } else { - result += 'dni'; - } - return result; - case 'MM': - if (number === 1) { - result += 'mesec'; - } else if (number === 2) { - result += 'meseca'; - } else if (number === 3 || number === 4) { - result += 'mesece'; - } else { - result += 'mesecev'; - } - return result; - case 'yy': - if (number === 1) { - result += 'leto'; - } else if (number === 2) { - result += 'leti'; - } else if (number === 3 || number === 4) { - result += 'leta'; - } else { - result += 'let'; - } - return result; + case 's': + return withoutSuffix || isFuture ? 'nekaj sekund' : 'nekaj sekundami'; + case 'm': + return withoutSuffix ? 'ena minuta' : 'eno minuto'; + case 'mm': + if (number === 1) { + result += withoutSuffix ? 'minuta' : 'minuto'; + } else if (number === 2) { + result += withoutSuffix || isFuture ? 'minuti' : 'minutama'; + } else if (number < 5) { + result += withoutSuffix || isFuture ? 'minute' : 'minutami'; + } else { + result += withoutSuffix || isFuture ? 'minut' : 'minutami'; + } + return result; + case 'h': + return withoutSuffix ? 'ena ura' : 'eno uro'; + case 'hh': + if (number === 1) { + result += withoutSuffix ? 'ura' : 'uro'; + } else if (number === 2) { + result += withoutSuffix || isFuture ? 'uri' : 'urama'; + } else if (number < 5) { + result += withoutSuffix || isFuture ? 'ure' : 'urami'; + } else { + result += withoutSuffix || isFuture ? 'ur' : 'urami'; + } + return result; + case 'd': + return withoutSuffix || isFuture ? 'en dan' : 'enim dnem'; + case 'dd': + if (number === 1) { + result += withoutSuffix || isFuture ? 'dan' : 'dnem'; + } else if (number === 2) { + result += withoutSuffix || isFuture ? 'dni' : 'dnevoma'; + } else { + result += withoutSuffix || isFuture ? 'dni' : 'dnevi'; + } + return result; + case 'M': + return withoutSuffix || isFuture ? 'en mesec' : 'enim mesecem'; + case 'MM': + if (number === 1) { + result += withoutSuffix || isFuture ? 'mesec' : 'mesecem'; + } else if (number === 2) { + result += withoutSuffix || isFuture ? 'meseca' : 'mesecema'; + } else if (number < 5) { + result += withoutSuffix || isFuture ? 'mesece' : 'meseci'; + } else { + result += withoutSuffix || isFuture ? 'mesecev' : 'meseci'; + } + return result; + case 'y': + return withoutSuffix || isFuture ? 'eno leto' : 'enim letom'; + case 'yy': + if (number === 1) { + result += withoutSuffix || isFuture ? 'leto' : 'letom'; + } else if (number === 2) { + result += withoutSuffix || isFuture ? 'leti' : 'letoma'; + } else if (number < 5) { + result += withoutSuffix || isFuture ? 'leta' : 'leti'; + } else { + result += withoutSuffix || isFuture ? 'let' : 'leti'; + } + return result; } } - return moment.defineLocale('sl', { + var sl = moment.defineLocale('sl', { months : 'januar_februar_marec_april_maj_junij_julij_avgust_september_oktober_november_december'.split('_'), monthsShort : 'jan._feb._mar._apr._maj._jun._jul._avg._sep._okt._nov._dec.'.split('_'), + monthsParseExact: true, weekdays : 'nedelja_ponedeljek_torek_sreda_četrtek_petek_sobota'.split('_'), weekdaysShort : 'ned._pon._tor._sre._čet._pet._sob.'.split('_'), weekdaysMin : 'ne_po_to_sr_če_pe_so'.split('_'), + weekdaysParseExact : true, longDateFormat : { LT : 'H:mm', - LTS : 'LT:ss', - L : 'DD. MM. YYYY', + LTS : 'H:mm:ss', + L : 'DD.MM.YYYY', LL : 'D. MMMM YYYY', - LLL : 'D. MMMM YYYY LT', - LLLL : 'dddd, D. MMMM YYYY LT' + LLL : 'D. MMMM YYYY H:mm', + LLLL : 'dddd, D. MMMM YYYY H:mm' }, calendar : { sameDay : '[danes ob] LT', @@ -94,49 +103,51 @@ nextWeek : function () { switch (this.day()) { - case 0: - return '[v] [nedeljo] [ob] LT'; - case 3: - return '[v] [sredo] [ob] LT'; - case 6: - return '[v] [soboto] [ob] LT'; - case 1: - case 2: - case 4: - case 5: - return '[v] dddd [ob] LT'; + case 0: + return '[v] [nedeljo] [ob] LT'; + case 3: + return '[v] [sredo] [ob] LT'; + case 6: + return '[v] [soboto] [ob] LT'; + case 1: + case 2: + case 4: + case 5: + return '[v] dddd [ob] LT'; } }, lastDay : '[včeraj ob] LT', lastWeek : function () { switch (this.day()) { - case 0: - case 3: - case 6: - return '[prejÅ¡nja] dddd [ob] LT'; - case 1: - case 2: - case 4: - case 5: - return '[prejÅ¡nji] dddd [ob] LT'; + case 0: + return '[prejÅ¡njo] [nedeljo] [ob] LT'; + case 3: + return '[prejÅ¡njo] [sredo] [ob] LT'; + case 6: + return '[prejÅ¡njo] [soboto] [ob] LT'; + case 1: + case 2: + case 4: + case 5: + return '[prejÅ¡nji] dddd [ob] LT'; } }, sameElse : 'L' }, relativeTime : { future : 'čez %s', - past : '%s nazaj', - s : 'nekaj sekund', - m : translate, - mm : translate, - h : translate, - hh : translate, - d : 'en dan', - dd : translate, - M : 'en mesec', - MM : translate, - y : 'eno leto', - yy : translate + past : 'pred %s', + s : processRelativeTime, + m : processRelativeTime, + mm : processRelativeTime, + h : processRelativeTime, + hh : processRelativeTime, + d : processRelativeTime, + dd : processRelativeTime, + M : processRelativeTime, + MM : processRelativeTime, + y : processRelativeTime, + yy : processRelativeTime }, ordinalParse: /\d{1,2}\./, ordinal : '%d.', @@ -145,4 +156,7 @@ doy : 7 // The week that contains Jan 1st is the first week of the year. } }); -})); + + return sl; + +})); \ No newline at end of file diff --git a/resources/lib/moment/locale/sq.js b/resources/lib/moment/locale/sq.js index 89cd7ba6a4..c224cac140 100644 --- a/resources/lib/moment/locale/sq.js +++ b/resources/lib/moment/locale/sq.js @@ -1,36 +1,38 @@ -// moment.js locale configuration -// locale : Albanian (sq) -// author : Flakërim Ismani : https://github.com/flakerimi -// author: Menelion Elensúle: https://github.com/Oire (tests) -// author : Oerd Cukalla : https://github.com/oerd (fixes) +//! moment.js locale configuration +//! locale : Albanian [sq] +//! author : Flakërim Ismani : https://github.com/flakerimi +//! author : Menelion Elensúle : https://github.com/Oire +//! author : Oerd Cukalla : https://github.com/oerd -(function (factory) { - // Comment out broken wrapper, see T145382 - /*if (typeof define === 'function' && define.amd) { - define(['moment'], factory); // AMD - } else if (typeof exports === 'object') { - module.exports = factory(require('../moment')); // Node - } else { - factory((typeof global !== 'undefined' ? global : this).moment); // node or other global - }*/ - factory(this.moment); -}(function (moment) { - return moment.defineLocale('sq', { +;(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' + && typeof require === 'function' ? factory(require('../moment')) : + typeof define === 'function' && define.amd ? define(['../moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + + + var sq = moment.defineLocale('sq', { months : 'Janar_Shkurt_Mars_Prill_Maj_Qershor_Korrik_Gusht_Shtator_Tetor_Nëntor_Dhjetor'.split('_'), monthsShort : 'Jan_Shk_Mar_Pri_Maj_Qer_Kor_Gus_Sht_Tet_Nën_Dhj'.split('_'), weekdays : 'E Diel_E Hënë_E Martë_E Mërkurë_E Enjte_E Premte_E Shtunë'.split('_'), weekdaysShort : 'Die_Hën_Mar_Mër_Enj_Pre_Sht'.split('_'), weekdaysMin : 'D_H_Ma_Më_E_P_Sh'.split('_'), + weekdaysParseExact : true, + meridiemParse: /PD|MD/, + isPM: function (input) { + return input.charAt(0) === 'M'; + }, meridiem : function (hours, minutes, isLower) { return hours < 12 ? 'PD' : 'MD'; }, longDateFormat : { LT : 'HH:mm', - LTS : 'LT:ss', + LTS : 'HH:mm:ss', L : 'DD/MM/YYYY', LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY LT', - LLLL : 'dddd, D MMMM YYYY LT' + LLL : 'D MMMM YYYY HH:mm', + LLLL : 'dddd, D MMMM YYYY HH:mm' }, calendar : { sameDay : '[Sot në] LT', @@ -62,4 +64,7 @@ doy : 4 // The week that contains Jan 4th is the first week of the year. } }); -})); + + return sq; + +})); \ No newline at end of file diff --git a/resources/lib/moment/locale/sr-cyrl.js b/resources/lib/moment/locale/sr-cyrl.js index db1dea413b..bf0df12588 100644 --- a/resources/lib/moment/locale/sr-cyrl.js +++ b/resources/lib/moment/locale/sr-cyrl.js @@ -1,18 +1,15 @@ -// moment.js locale configuration -// locale : Serbian-cyrillic (sr-cyrl) -// author : Milan Janačković<milanjanackovic@gmail.com> : https://github.com/milan-j +//! moment.js locale configuration +//! locale : Serbian Cyrillic [sr-cyrl] +//! author : Milan Janačković<milanjanackovic@gmail.com> : https://github.com/milan-j + +;(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' + && typeof require === 'function' ? factory(require('../moment')) : + typeof define === 'function' && define.amd ? define(['../moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + -(function (factory) { - // Comment out broken wrapper, see T145382 - /*if (typeof define === 'function' && define.amd) { - define(['moment'], factory); // AMD - } else if (typeof exports === 'object') { - module.exports = factory(require('../moment')); // Node - } else { - factory((typeof global !== 'undefined' ? global : this).moment); // node or other global - }*/ - factory(this.moment); -}(function (moment) { var translator = { words: { //Different grammatical cases m: ['један минут', 'једне минуте'], @@ -36,37 +33,38 @@ } }; - return moment.defineLocale('sr-cyrl', { - months: ['јануар', 'фебруар', 'март', 'април', 'мај', 'јун', 'јул', 'август', 'септембар', 'октобар', 'новембар', 'децембар'], - monthsShort: ['јан.', 'феб.', 'мар.', 'апр.', 'мај', 'јун', 'јул', 'авг.', 'сеп.', 'окт.', 'нов.', 'дец.'], - weekdays: ['недеља', 'понедељак', 'уторак', 'среда', 'четвртак', 'петак', 'субота'], - weekdaysShort: ['нед.', 'пон.', 'уто.', 'сре.', 'чет.', 'пет.', 'суб.'], - weekdaysMin: ['не', 'по', 'ут', 'ср', 'че', 'пе', 'су'], + var sr_cyrl = moment.defineLocale('sr-cyrl', { + months: 'јануар_фебруар_март_април_мај_јун_јул_август_септембар_октобар_новембар_децембар'.split('_'), + monthsShort: 'јан._феб._мар._апр._мај_јун_јул_авг._сеп._окт._нов._дец.'.split('_'), + monthsParseExact: true, + weekdays: 'недеља_понедељак_уторак_среда_четвртак_петак_субота'.split('_'), + weekdaysShort: 'нед._пон._уто._сре._чет._пет._суб.'.split('_'), + weekdaysMin: 'не_по_ут_ср_че_пе_су'.split('_'), + weekdaysParseExact : true, longDateFormat: { LT: 'H:mm', - LTS : 'LT:ss', - L: 'DD. MM. YYYY', + LTS : 'H:mm:ss', + L: 'DD.MM.YYYY', LL: 'D. MMMM YYYY', - LLL: 'D. MMMM YYYY LT', - LLLL: 'dddd, D. MMMM YYYY LT' + LLL: 'D. MMMM YYYY H:mm', + LLLL: 'dddd, D. MMMM YYYY H:mm' }, calendar: { sameDay: '[данас у] LT', nextDay: '[сутра у] LT', - nextWeek: function () { switch (this.day()) { - case 0: - return '[у] [недељу] [у] LT'; - case 3: - return '[у] [среду] [у] LT'; - case 6: - return '[у] [суботу] [у] LT'; - case 1: - case 2: - case 4: - case 5: - return '[у] dddd [у] LT'; + case 0: + return '[у] [недељу] [у] LT'; + case 3: + return '[у] [среду] [у] LT'; + case 6: + return '[у] [суботу] [у] LT'; + case 1: + case 2: + case 4: + case 5: + return '[у] dddd [у] LT'; } }, lastDay : '[јуче у] LT', @@ -106,4 +104,7 @@ doy : 7 // The week that contains Jan 1st is the first week of the year. } }); -})); + + return sr_cyrl; + +})); \ No newline at end of file diff --git a/resources/lib/moment/locale/sr.js b/resources/lib/moment/locale/sr.js index f732316ae7..16f5dd0d50 100644 --- a/resources/lib/moment/locale/sr.js +++ b/resources/lib/moment/locale/sr.js @@ -1,18 +1,15 @@ -// moment.js locale configuration -// locale : Serbian-latin (sr) -// author : Milan Janačković<milanjanackovic@gmail.com> : https://github.com/milan-j +//! moment.js locale configuration +//! locale : Serbian [sr] +//! author : Milan Janačković<milanjanackovic@gmail.com> : https://github.com/milan-j + +;(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' + && typeof require === 'function' ? factory(require('../moment')) : + typeof define === 'function' && define.amd ? define(['../moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + -(function (factory) { - // Comment out broken wrapper, see T145382 - /*if (typeof define === 'function' && define.amd) { - define(['moment'], factory); // AMD - } else if (typeof exports === 'object') { - module.exports = factory(require('../moment')); // Node - } else { - factory((typeof global !== 'undefined' ? global : this).moment); // node or other global - }*/ - factory(this.moment); -}(function (moment) { var translator = { words: { //Different grammatical cases m: ['jedan minut', 'jedne minute'], @@ -36,37 +33,38 @@ } }; - return moment.defineLocale('sr', { - months: ['januar', 'februar', 'mart', 'april', 'maj', 'jun', 'jul', 'avgust', 'septembar', 'oktobar', 'novembar', 'decembar'], - monthsShort: ['jan.', 'feb.', 'mar.', 'apr.', 'maj', 'jun', 'jul', 'avg.', 'sep.', 'okt.', 'nov.', 'dec.'], - weekdays: ['nedelja', 'ponedeljak', 'utorak', 'sreda', 'četvrtak', 'petak', 'subota'], - weekdaysShort: ['ned.', 'pon.', 'uto.', 'sre.', 'čet.', 'pet.', 'sub.'], - weekdaysMin: ['ne', 'po', 'ut', 'sr', 'če', 'pe', 'su'], + var sr = moment.defineLocale('sr', { + months: 'januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar'.split('_'), + monthsShort: 'jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.'.split('_'), + monthsParseExact: true, + weekdays: 'nedelja_ponedeljak_utorak_sreda_četvrtak_petak_subota'.split('_'), + weekdaysShort: 'ned._pon._uto._sre._čet._pet._sub.'.split('_'), + weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'), + weekdaysParseExact : true, longDateFormat: { LT: 'H:mm', - LTS : 'LT:ss', - L: 'DD. MM. YYYY', + LTS : 'H:mm:ss', + L: 'DD.MM.YYYY', LL: 'D. MMMM YYYY', - LLL: 'D. MMMM YYYY LT', - LLLL: 'dddd, D. MMMM YYYY LT' + LLL: 'D. MMMM YYYY H:mm', + LLLL: 'dddd, D. MMMM YYYY H:mm' }, calendar: { sameDay: '[danas u] LT', nextDay: '[sutra u] LT', - nextWeek: function () { switch (this.day()) { - case 0: - return '[u] [nedelju] [u] LT'; - case 3: - return '[u] [sredu] [u] LT'; - case 6: - return '[u] [subotu] [u] LT'; - case 1: - case 2: - case 4: - case 5: - return '[u] dddd [u] LT'; + case 0: + return '[u] [nedelju] [u] LT'; + case 3: + return '[u] [sredu] [u] LT'; + case 6: + return '[u] [subotu] [u] LT'; + case 1: + case 2: + case 4: + case 5: + return '[u] dddd [u] LT'; } }, lastDay : '[juče u] LT', @@ -106,4 +104,7 @@ doy : 7 // The week that contains Jan 1st is the first week of the year. } }); -})); + + return sr; + +})); \ No newline at end of file diff --git a/resources/lib/moment/locale/ss.js b/resources/lib/moment/locale/ss.js new file mode 100644 index 0000000000..e1d942e4f3 --- /dev/null +++ b/resources/lib/moment/locale/ss.js @@ -0,0 +1,89 @@ +//! moment.js locale configuration +//! locale : siSwati [ss] +//! author : Nicolai Davies<mail@nicolai.io> : https://github.com/nicolaidavies + +;(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' + && typeof require === 'function' ? factory(require('../moment')) : + typeof define === 'function' && define.amd ? define(['../moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + + + + var ss = moment.defineLocale('ss', { + months : "Bhimbidvwane_Indlovana_Indlov'lenkhulu_Mabasa_Inkhwekhweti_Inhlaba_Kholwane_Ingci_Inyoni_Imphala_Lweti_Ingongoni".split('_'), + monthsShort : 'Bhi_Ina_Inu_Mab_Ink_Inh_Kho_Igc_Iny_Imp_Lwe_Igo'.split('_'), + weekdays : 'Lisontfo_Umsombuluko_Lesibili_Lesitsatfu_Lesine_Lesihlanu_Umgcibelo'.split('_'), + weekdaysShort : 'Lis_Umb_Lsb_Les_Lsi_Lsh_Umg'.split('_'), + weekdaysMin : 'Li_Us_Lb_Lt_Ls_Lh_Ug'.split('_'), + weekdaysParseExact : true, + longDateFormat : { + LT : 'h:mm A', + LTS : 'h:mm:ss A', + L : 'DD/MM/YYYY', + LL : 'D MMMM YYYY', + LLL : 'D MMMM YYYY h:mm A', + LLLL : 'dddd, D MMMM YYYY h:mm A' + }, + calendar : { + sameDay : '[Namuhla nga] LT', + nextDay : '[Kusasa nga] LT', + nextWeek : 'dddd [nga] LT', + lastDay : '[Itolo nga] LT', + lastWeek : 'dddd [leliphelile] [nga] LT', + sameElse : 'L' + }, + relativeTime : { + future : 'nga %s', + past : 'wenteka nga %s', + s : 'emizuzwana lomcane', + m : 'umzuzu', + mm : '%d emizuzu', + h : 'lihora', + hh : '%d emahora', + d : 'lilanga', + dd : '%d emalanga', + M : 'inyanga', + MM : '%d tinyanga', + y : 'umnyaka', + yy : '%d iminyaka' + }, + meridiemParse: /ekuseni|emini|entsambama|ebusuku/, + meridiem : function (hours, minutes, isLower) { + if (hours < 11) { + return 'ekuseni'; + } else if (hours < 15) { + return 'emini'; + } else if (hours < 19) { + return 'entsambama'; + } else { + return 'ebusuku'; + } + }, + meridiemHour : function (hour, meridiem) { + if (hour === 12) { + hour = 0; + } + if (meridiem === 'ekuseni') { + return hour; + } else if (meridiem === 'emini') { + return hour >= 11 ? hour : hour + 12; + } else if (meridiem === 'entsambama' || meridiem === 'ebusuku') { + if (hour === 0) { + return 0; + } + return hour + 12; + } + }, + ordinalParse: /\d{1,2}/, + ordinal : '%d', + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } + }); + + return ss; + +})); \ No newline at end of file diff --git a/resources/lib/moment/locale/sv.js b/resources/lib/moment/locale/sv.js index 48c3deee2c..a77c3e1072 100644 --- a/resources/lib/moment/locale/sv.js +++ b/resources/lib/moment/locale/sv.js @@ -1,19 +1,16 @@ -// moment.js locale configuration -// locale : swedish (sv) -// author : Jens Alm : https://github.com/ulmus +//! moment.js locale configuration +//! locale : Swedish [sv] +//! author : Jens Alm : https://github.com/ulmus -(function (factory) { - // Comment out broken wrapper, see T145382 - /*if (typeof define === 'function' && define.amd) { - define(['moment'], factory); // AMD - } else if (typeof exports === 'object') { - module.exports = factory(require('../moment')); // Node - } else { - factory((typeof global !== 'undefined' ? global : this).moment); // node or other global - }*/ - factory(this.moment); -}(function (moment) { - return moment.defineLocale('sv', { +;(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' + && typeof require === 'function' ? factory(require('../moment')) : + typeof define === 'function' && define.amd ? define(['../moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + + + var sv = moment.defineLocale('sv', { months : 'januari_februari_mars_april_maj_juni_juli_augusti_september_oktober_november_december'.split('_'), monthsShort : 'jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec'.split('_'), weekdays : 'söndag_mÃ¥ndag_tisdag_onsdag_torsdag_fredag_lördag'.split('_'), @@ -21,18 +18,20 @@ weekdaysMin : 'sö_mÃ¥_ti_on_to_fr_lö'.split('_'), longDateFormat : { LT : 'HH:mm', - LTS : 'LT:ss', + LTS : 'HH:mm:ss', L : 'YYYY-MM-DD', LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY LT', - LLLL : 'dddd D MMMM YYYY LT' + LLL : 'D MMMM YYYY [kl.] HH:mm', + LLLL : 'dddd D MMMM YYYY [kl.] HH:mm', + lll : 'D MMM YYYY HH:mm', + llll : 'ddd D MMM YYYY HH:mm' }, calendar : { sameDay: '[Idag] LT', nextDay: '[Imorgon] LT', lastDay: '[IgÃ¥r] LT', - nextWeek: 'dddd LT', - lastWeek: '[Förra] dddd[en] LT', + nextWeek: '[PÃ¥] dddd LT', + lastWeek: '[I] dddd[s] LT', sameElse: 'L' }, relativeTime : { @@ -64,4 +63,7 @@ doy : 4 // The week that contains Jan 4th is the first week of the year. } }); -})); + + return sv; + +})); \ No newline at end of file diff --git a/resources/lib/moment/locale/sw.js b/resources/lib/moment/locale/sw.js new file mode 100644 index 0000000000..1458d892fe --- /dev/null +++ b/resources/lib/moment/locale/sw.js @@ -0,0 +1,59 @@ +//! moment.js locale configuration +//! locale : Swahili [sw] +//! author : Fahad Kassim : https://github.com/fadsel + +;(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' + && typeof require === 'function' ? factory(require('../moment')) : + typeof define === 'function' && define.amd ? define(['../moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + + + var sw = moment.defineLocale('sw', { + months : 'Januari_Februari_Machi_Aprili_Mei_Juni_Julai_Agosti_Septemba_Oktoba_Novemba_Desemba'.split('_'), + monthsShort : 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ago_Sep_Okt_Nov_Des'.split('_'), + weekdays : 'Jumapili_Jumatatu_Jumanne_Jumatano_Alhamisi_Ijumaa_Jumamosi'.split('_'), + weekdaysShort : 'Jpl_Jtat_Jnne_Jtan_Alh_Ijm_Jmos'.split('_'), + weekdaysMin : 'J2_J3_J4_J5_Al_Ij_J1'.split('_'), + weekdaysParseExact : true, + longDateFormat : { + LT : 'HH:mm', + LTS : 'HH:mm:ss', + L : 'DD.MM.YYYY', + LL : 'D MMMM YYYY', + LLL : 'D MMMM YYYY HH:mm', + LLLL : 'dddd, D MMMM YYYY HH:mm' + }, + calendar : { + sameDay : '[leo saa] LT', + nextDay : '[kesho saa] LT', + nextWeek : '[wiki ijayo] dddd [saat] LT', + lastDay : '[jana] LT', + lastWeek : '[wiki iliyopita] dddd [saat] LT', + sameElse : 'L' + }, + relativeTime : { + future : '%s baadaye', + past : 'tokea %s', + s : 'hivi punde', + m : 'dakika moja', + mm : 'dakika %d', + h : 'saa limoja', + hh : 'masaa %d', + d : 'siku moja', + dd : 'masiku %d', + M : 'mwezi mmoja', + MM : 'miezi %d', + y : 'mwaka mmoja', + yy : 'miaka %d' + }, + week : { + dow : 1, // Monday is the first day of the week. + doy : 7 // The week that contains Jan 1st is the first week of the year. + } + }); + + return sw; + +})); \ No newline at end of file diff --git a/resources/lib/moment/locale/ta.js b/resources/lib/moment/locale/ta.js index 7e735998da..c04fa587b6 100644 --- a/resources/lib/moment/locale/ta.js +++ b/resources/lib/moment/locale/ta.js @@ -1,44 +1,40 @@ -// moment.js locale configuration -// locale : tamil (ta) -// author : Arjunkumar Krishnamoorthy : https://github.com/tk120404 +//! moment.js locale configuration +//! locale : Tamil [ta] +//! author : Arjunkumar Krishnamoorthy : https://github.com/tk120404 -(function (factory) { - // Comment out broken wrapper, see T145382 - /*if (typeof define === 'function' && define.amd) { - define(['moment'], factory); // AMD - } else if (typeof exports === 'object') { - module.exports = factory(require('../moment')); // Node - } else { - factory((typeof global !== 'undefined' ? global : this).moment); // node or other global - }*/ - factory(this.moment); -}(function (moment) { - /*var symbolMap = { - '1': '௧', - '2': '௨', - '3': '௩', - '4': '௪', - '5': '௫', - '6': '௬', - '7': '௭', - '8': '௮', - '9': '௯', - '0': '௦' - }, - numberMap = { - '௧': '1', - '௨': '2', - '௩': '3', - '௪': '4', - '௫': '5', - '௬': '6', - '௭': '7', - '௮': '8', - '௯': '9', - '௦': '0' - }; */ +;(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' + && typeof require === 'function' ? factory(require('../moment')) : + typeof define === 'function' && define.amd ? define(['../moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + + + var symbolMap = { + '1': '௧', + '2': '௨', + '3': '௩', + '4': '௪', + '5': '௫', + '6': '௬', + '7': '௭', + '8': '௮', + '9': '௯', + '0': '௦' + }, numberMap = { + '௧': '1', + '௨': '2', + '௩': '3', + '௪': '4', + '௫': '5', + '௬': '6', + '௭': '7', + '௮': '8', + '௯': '9', + '௦': '0' + }; - return moment.defineLocale('ta', { + var ta = moment.defineLocale('ta', { months : 'ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்'.split('_'), monthsShort : 'ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்'.split('_'), weekdays : 'ஞாயிற்றுக்கிழமை_திங்கட்கிழமை_செவ்வாய்கிழமை_புதன்கிழமை_வியாழக்கிழமை_வெள்ளிக்கிழமை_சனிக்கிழமை'.split('_'), @@ -46,11 +42,11 @@ weekdaysMin : 'ஞா_தி_செ_பு_வி_வெ_ச'.split('_'), longDateFormat : { LT : 'HH:mm', - LTS : 'LT:ss', + LTS : 'HH:mm:ss', L : 'DD/MM/YYYY', LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY, LT', - LLLL : 'dddd, D MMMM YYYY, LT' + LLL : 'D MMMM YYYY, HH:mm', + LLLL : 'dddd, D MMMM YYYY, HH:mm' }, calendar : { sameDay : '[இன்று] LT', @@ -75,7 +71,11 @@ y : 'ஒரு வருடம்', yy : '%d ஆண்டுகள்' }, -/* preparse: function (string) { + ordinalParse: /\d{1,2}வது/, + ordinal : function (number) { + return number + 'வது'; + }, + preparse: function (string) { return string.replace(/[௧௨௩௪௫௬௭௮௯௦]/g, function (match) { return numberMap[match]; }); @@ -84,28 +84,38 @@ return string.replace(/\d/g, function (match) { return symbolMap[match]; }); - },*/ - ordinalParse: /\d{1,2}வது/, - ordinal : function (number) { - return number + 'வது'; }, - - // refer http://ta.wikipedia.org/s/1er1 - + meridiemParse: /யாமம்|வைகறை|காலை|நண்பகல்|எற்பாடு|மாலை/, meridiem : function (hour, minute, isLower) { - if (hour >= 6 && hour <= 10) { - return ' காலை'; - } else if (hour >= 10 && hour <= 14) { - return ' நண்பகல்'; - } else if (hour >= 14 && hour <= 18) { - return ' எற்பாடு'; - } else if (hour >= 18 && hour <= 20) { - return ' மாலை'; - } else if (hour >= 20 && hour <= 24) { - return ' இரவு'; - } else if (hour >= 0 && hour <= 6) { - return ' வைகறை'; + if (hour < 2) { + return ' யாமம்'; + } else if (hour < 6) { + return ' வைகறை'; // வைகறை + } else if (hour < 10) { + return ' காலை'; // காலை + } else if (hour < 14) { + return ' நண்பகல்'; // நண்பகல் + } else if (hour < 18) { + return ' எற்பாடு'; // எற்பாடு + } else if (hour < 22) { + return ' மாலை'; // மாலை + } else { + return ' யாமம்'; + } + }, + meridiemHour : function (hour, meridiem) { + if (hour === 12) { + hour = 0; + } + if (meridiem === 'யாமம்') { + return hour < 2 ? hour : hour + 12; + } else if (meridiem === 'வைகறை' || meridiem === 'காலை') { + return hour; + } else if (meridiem === 'நண்பகல்') { + return hour >= 10 ? hour : hour + 12; + } else { + return hour + 12; } }, week : { @@ -113,4 +123,7 @@ doy : 6 // The week that contains Jan 1st is the first week of the year. } }); -})); + + return ta; + +})); \ No newline at end of file diff --git a/resources/lib/moment/locale/te.js b/resources/lib/moment/locale/te.js new file mode 100644 index 0000000000..1061ad22a4 --- /dev/null +++ b/resources/lib/moment/locale/te.js @@ -0,0 +1,89 @@ +//! moment.js locale configuration +//! locale : Telugu [te] +//! author : Krishna Chaitanya Thota : https://github.com/kcthota + +;(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' + && typeof require === 'function' ? factory(require('../moment')) : + typeof define === 'function' && define.amd ? define(['../moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + + + var te = moment.defineLocale('te', { + months : 'జనవరి_ఫిబ్రవరి_మార్చి_ఏప్రిల్_మే_జూన్_జూలై_ఆగస్టు_సెప్టెంబర్_అక్టోబర్_నవంబర్_డిసెంబర్'.split('_'), + monthsShort : 'జన._ఫిబ్ర._మార్చి_ఏప్రి._మే_జూన్_జూలై_ఆగ._సెప్._అక్టో._నవ._డిసె.'.split('_'), + monthsParseExact : true, + weekdays : 'ఆదివారం_సోమవారం_మంగళవారం_బుధవారం_గురువారం_శుక్రవారం_శనివారం'.split('_'), + weekdaysShort : 'ఆది_సోమ_మంగళ_బుధ_గురు_శుక్ర_శని'.split('_'), + weekdaysMin : 'ఆ_సో_మం_బు_గు_శు_à°¶'.split('_'), + longDateFormat : { + LT : 'A h:mm', + LTS : 'A h:mm:ss', + L : 'DD/MM/YYYY', + LL : 'D MMMM YYYY', + LLL : 'D MMMM YYYY, A h:mm', + LLLL : 'dddd, D MMMM YYYY, A h:mm' + }, + calendar : { + sameDay : '[నేడు] LT', + nextDay : '[రేపు] LT', + nextWeek : 'dddd, LT', + lastDay : '[నిన్న] LT', + lastWeek : '[గత] dddd, LT', + sameElse : 'L' + }, + relativeTime : { + future : '%s లో', + past : '%s క్రితం', + s : 'కొన్ని క్షణాలు', + m : 'ఒక నిమిషం', + mm : '%d నిమిషాలు', + h : 'ఒక గంట', + hh : '%d గంటలు', + d : 'ఒక రోజు', + dd : '%d రోజులు', + M : 'ఒక నెల', + MM : '%d నెలలు', + y : 'ఒక సంవత్సరం', + yy : '%d సంవత్సరాలు' + }, + ordinalParse : /\d{1,2}à°µ/, + ordinal : '%dà°µ', + meridiemParse: /రాత్రి|ఉదయం|మధ్యాహ్నం|సాయంత్రం/, + meridiemHour : function (hour, meridiem) { + if (hour === 12) { + hour = 0; + } + if (meridiem === 'రాత్రి') { + return hour < 4 ? hour : hour + 12; + } else if (meridiem === 'ఉదయం') { + return hour; + } else if (meridiem === 'మధ్యాహ్నం') { + return hour >= 10 ? hour : hour + 12; + } else if (meridiem === 'సాయంత్రం') { + return hour + 12; + } + }, + meridiem : function (hour, minute, isLower) { + if (hour < 4) { + return 'రాత్రి'; + } else if (hour < 10) { + return 'ఉదయం'; + } else if (hour < 17) { + return 'మధ్యాహ్నం'; + } else if (hour < 20) { + return 'సాయంత్రం'; + } else { + return 'రాత్రి'; + } + }, + week : { + dow : 0, // Sunday is the first day of the week. + doy : 6 // The week that contains Jan 1st is the first week of the year. + } + }); + + return te; + +})); \ No newline at end of file diff --git a/resources/lib/moment/locale/th.js b/resources/lib/moment/locale/th.js index fc949cb40f..779968ebc0 100644 --- a/resources/lib/moment/locale/th.js +++ b/resources/lib/moment/locale/th.js @@ -1,31 +1,34 @@ -// moment.js locale configuration -// locale : thai (th) -// author : Kridsada Thanabulpong : https://github.com/sirn +//! moment.js locale configuration +//! locale : Thai [th] +//! author : Kridsada Thanabulpong : https://github.com/sirn -(function (factory) { - // Comment out broken wrapper, see T145382 - /*if (typeof define === 'function' && define.amd) { - define(['moment'], factory); // AMD - } else if (typeof exports === 'object') { - module.exports = factory(require('../moment')); // Node - } else { - factory((typeof global !== 'undefined' ? global : this).moment); // node or other global - }*/ - factory(this.moment); -}(function (moment) { - return moment.defineLocale('th', { +;(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' + && typeof require === 'function' ? factory(require('../moment')) : + typeof define === 'function' && define.amd ? define(['../moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + + + var th = moment.defineLocale('th', { months : 'มกราคม_กุมภาพันธ์_มีนาคม_เมษายน_พฤษภาคม_มิถุนายน_กรกฎาคม_สิงหาคม_กันยายน_ตุลาคม_พฤศจิกายน_ธันวาคม'.split('_'), - monthsShort : 'มกรา_กุมภา_มีนา_เมษา_พฤษภา_มิถุนา_กรกฎา_สิงหา_กันยา_ตุลา_พฤศจิกา_ธันวา'.split('_'), + monthsShort : 'ม.ค._ก.พ._มี.ค._เม.ย._พ.ค._มิ.ย._ก.ค._ส.ค._ก.ย._ต.ค._พ.ย._ธ.ค.'.split('_'), + monthsParseExact: true, weekdays : 'อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัสบดี_ศุกร์_เสาร์'.split('_'), weekdaysShort : 'อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัส_ศุกร์_เสาร์'.split('_'), // yes, three characters difference weekdaysMin : 'อา._จ._อ._พ._พฤ._ศ._ส.'.split('_'), + weekdaysParseExact : true, longDateFormat : { - LT : 'H นาฬิกา m นาที', - LTS : 'LT s วินาที', + LT : 'H:mm', + LTS : 'H:mm:ss', L : 'YYYY/MM/DD', LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY เวลา LT', - LLLL : 'วันddddที่ D MMMM YYYY เวลา LT' + LLL : 'D MMMM YYYY เวลา H:mm', + LLLL : 'วันddddที่ D MMMM YYYY เวลา H:mm' + }, + meridiemParse: /ก่อนเที่ยง|หลังเที่ยง/, + isPM: function (input) { + return input === 'หลังเที่ยง'; }, meridiem : function (hour, minute, isLower) { if (hour < 12) { @@ -58,4 +61,7 @@ yy : '%d ปี' } }); -})); + + return th; + +})); \ No newline at end of file diff --git a/resources/lib/moment/locale/tl-ph.js b/resources/lib/moment/locale/tl-ph.js index 910c681b41..8c3448c3a2 100644 --- a/resources/lib/moment/locale/tl-ph.js +++ b/resources/lib/moment/locale/tl-ph.js @@ -1,19 +1,16 @@ -// moment.js locale configuration -// locale : Tagalog/Filipino (tl-ph) -// author : Dan Hagman +//! moment.js locale configuration +//! locale : Tagalog (Philippines) [tl-ph] +//! author : Dan Hagman : https://github.com/hagmandan -(function (factory) { - // Comment out broken wrapper, see T145382 - /*if (typeof define === 'function' && define.amd) { - define(['moment'], factory); // AMD - } else if (typeof exports === 'object') { - module.exports = factory(require('../moment')); // Node - } else { - factory((typeof global !== 'undefined' ? global : this).moment); // node or other global - }*/ - factory(this.moment); -}(function (moment) { - return moment.defineLocale('tl-ph', { +;(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' + && typeof require === 'function' ? factory(require('../moment')) : + typeof define === 'function' && define.amd ? define(['../moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + + + var tl_ph = moment.defineLocale('tl-ph', { months : 'Enero_Pebrero_Marso_Abril_Mayo_Hunyo_Hulyo_Agosto_Setyembre_Oktubre_Nobyembre_Disyembre'.split('_'), monthsShort : 'Ene_Peb_Mar_Abr_May_Hun_Hul_Ago_Set_Okt_Nob_Dis'.split('_'), weekdays : 'Linggo_Lunes_Martes_Miyerkules_Huwebes_Biyernes_Sabado'.split('_'), @@ -21,11 +18,11 @@ weekdaysMin : 'Li_Lu_Ma_Mi_Hu_Bi_Sab'.split('_'), longDateFormat : { LT : 'HH:mm', - LTS : 'LT:ss', + LTS : 'HH:mm:ss', L : 'MM/D/YYYY', LL : 'MMMM D, YYYY', - LLL : 'MMMM D, YYYY LT', - LLLL : 'dddd, MMMM DD, YYYY LT' + LLL : 'MMMM D, YYYY HH:mm', + LLLL : 'dddd, MMMM DD, YYYY HH:mm' }, calendar : { sameDay: '[Ngayon sa] LT', @@ -59,4 +56,7 @@ doy : 4 // The week that contains Jan 4th is the first week of the year. } }); -})); + + return tl_ph; + +})); \ No newline at end of file diff --git a/resources/lib/moment/locale/tr.js b/resources/lib/moment/locale/tr.js index a2707bc30d..c88ed7eedd 100644 --- a/resources/lib/moment/locale/tr.js +++ b/resources/lib/moment/locale/tr.js @@ -1,46 +1,38 @@ -// moment.js locale configuration -// locale : turkish (tr) -// authors : Erhan Gundogan : https://github.com/erhangundogan, -// Burak Yiğit Kaya: https://github.com/BYK +//! moment.js locale configuration +//! locale : Turkish [tr] +//! authors : Erhan Gundogan : https://github.com/erhangundogan, +//! Burak Yiğit Kaya: https://github.com/BYK + +;(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' + && typeof require === 'function' ? factory(require('../moment')) : + typeof define === 'function' && define.amd ? define(['../moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + -(function (factory) { - // Comment out broken wrapper, see T145382 - /*if (typeof define === 'function' && define.amd) { - define(['moment'], factory); // AMD - } else if (typeof exports === 'object') { - module.exports = factory(require('../moment')); // Node - } else { - factory((typeof global !== 'undefined' ? global : this).moment); // node or other global - }*/ - factory(this.moment); -}(function (moment) { var suffixes = { 1: '\'inci', 5: '\'inci', 8: '\'inci', 70: '\'inci', 80: '\'inci', - 2: '\'nci', 7: '\'nci', 20: '\'nci', 50: '\'nci', - 3: '\'üncü', 4: '\'üncü', 100: '\'üncü', - 6: '\'ncı', - 9: '\'uncu', 10: '\'uncu', 30: '\'uncu', - 60: '\'ıncı', 90: '\'ıncı' }; - return moment.defineLocale('tr', { + var tr = moment.defineLocale('tr', { months : 'Ocak_Şubat_Mart_Nisan_Mayıs_Haziran_Temmuz_Ağustos_Eylül_Ekim_Kasım_Aralık'.split('_'), monthsShort : 'Oca_Şub_Mar_Nis_May_Haz_Tem_Ağu_Eyl_Eki_Kas_Ara'.split('_'), weekdays : 'Pazar_Pazartesi_Salı_Çarşamba_Perşembe_Cuma_Cumartesi'.split('_'), @@ -48,11 +40,11 @@ weekdaysMin : 'Pz_Pt_Sa_Ça_Pe_Cu_Ct'.split('_'), longDateFormat : { LT : 'HH:mm', - LTS : 'LT:ss', + LTS : 'HH:mm:ss', L : 'DD.MM.YYYY', LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY LT', - LLLL : 'dddd, D MMMM YYYY LT' + LLL : 'D MMMM YYYY HH:mm', + LLLL : 'dddd, D MMMM YYYY HH:mm' }, calendar : { sameDay : '[bugün saat] LT', @@ -85,7 +77,6 @@ var a = number % 10, b = number % 100 - a, c = number >= 100 ? 100 : null; - return number + (suffixes[a] || suffixes[b] || suffixes[c]); }, week : { @@ -93,4 +84,7 @@ doy : 7 // The week that contains Jan 1st is the first week of the year. } }); -})); + + return tr; + +})); \ No newline at end of file diff --git a/resources/lib/moment/locale/tzm-latn.js b/resources/lib/moment/locale/tzm-latn.js index 9eefde57a5..ccf96b992e 100644 --- a/resources/lib/moment/locale/tzm-latn.js +++ b/resources/lib/moment/locale/tzm-latn.js @@ -1,19 +1,16 @@ -// moment.js locale configuration -// locale : Morocco Central Atlas TamaziÉ£t in Latin (tzm-latn) -// author : Abdel Said : https://github.com/abdelsaid +//! moment.js locale configuration +//! locale : Central Atlas Tamazight Latin [tzm-latn] +//! author : Abdel Said : https://github.com/abdelsaid -(function (factory) { - // Comment out broken wrapper, see T145382 - /*if (typeof define === 'function' && define.amd) { - define(['moment'], factory); // AMD - } else if (typeof exports === 'object') { - module.exports = factory(require('../moment')); // Node - } else { - factory((typeof global !== 'undefined' ? global : this).moment); // node or other global - }*/ - factory(this.moment); -}(function (moment) { - return moment.defineLocale('tzm-latn', { +;(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' + && typeof require === 'function' ? factory(require('../moment')) : + typeof define === 'function' && define.amd ? define(['../moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + + + var tzm_latn = moment.defineLocale('tzm-latn', { months : 'innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_É£wÅ¡t_Å¡wtanbir_ktˤwbrˤ_nwwanbir_dwjnbir'.split('_'), monthsShort : 'innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_É£wÅ¡t_Å¡wtanbir_ktˤwbrˤ_nwwanbir_dwjnbir'.split('_'), weekdays : 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'), @@ -21,11 +18,11 @@ weekdaysMin : 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'), longDateFormat : { LT : 'HH:mm', - LTS : 'LT:ss', + LTS : 'HH:mm:ss', L : 'DD/MM/YYYY', LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY LT', - LLLL : 'dddd D MMMM YYYY LT' + LLL : 'D MMMM YYYY HH:mm', + LLLL : 'dddd D MMMM YYYY HH:mm' }, calendar : { sameDay: '[asdkh g] LT', @@ -55,4 +52,7 @@ doy : 12 // The week that contains Jan 1st is the first week of the year. } }); -})); + + return tzm_latn; + +})); \ No newline at end of file diff --git a/resources/lib/moment/locale/tzm.js b/resources/lib/moment/locale/tzm.js index 08952988b4..71fb076ae2 100644 --- a/resources/lib/moment/locale/tzm.js +++ b/resources/lib/moment/locale/tzm.js @@ -1,19 +1,16 @@ -// moment.js locale configuration -// locale : Morocco Central Atlas TamaziÉ£t (tzm) -// author : Abdel Said : https://github.com/abdelsaid +//! moment.js locale configuration +//! locale : Central Atlas Tamazight [tzm] +//! author : Abdel Said : https://github.com/abdelsaid -(function (factory) { - // Comment out broken wrapper, see T145382 - /*if (typeof define === 'function' && define.amd) { - define(['moment'], factory); // AMD - } else if (typeof exports === 'object') { - module.exports = factory(require('../moment')); // Node - } else { - factory((typeof global !== 'undefined' ? global : this).moment); // node or other global - }*/ - factory(this.moment); -}(function (moment) { - return moment.defineLocale('tzm', { +;(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' + && typeof require === 'function' ? factory(require('../moment')) : + typeof define === 'function' && define.amd ? define(['../moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + + + var tzm = moment.defineLocale('tzm', { months : 'ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ'.split('_'), monthsShort : 'ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ'.split('_'), weekdays : 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'), @@ -21,11 +18,11 @@ weekdaysMin : 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'), longDateFormat : { LT : 'HH:mm', - LTS: 'LT:ss', + LTS: 'HH:mm:ss', L : 'DD/MM/YYYY', LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY LT', - LLLL : 'dddd D MMMM YYYY LT' + LLL : 'D MMMM YYYY HH:mm', + LLLL : 'dddd D MMMM YYYY HH:mm' }, calendar : { sameDay: '[ⴰⵙⴷⵅ â´´] LT', @@ -55,4 +52,7 @@ doy : 12 // The week that contains Jan 1st is the first week of the year. } }); -})); + + return tzm; + +})); \ No newline at end of file diff --git a/resources/lib/moment/locale/uk.js b/resources/lib/moment/locale/uk.js index 32c51dee22..91ec18bf74 100644 --- a/resources/lib/moment/locale/uk.js +++ b/resources/lib/moment/locale/uk.js @@ -1,28 +1,24 @@ -// moment.js locale configuration -// locale : ukrainian (uk) -// author : zemlanin : https://github.com/zemlanin -// Author : Menelion Elensúle : https://github.com/Oire +//! moment.js locale configuration +//! locale : Ukrainian [uk] +//! author : zemlanin : https://github.com/zemlanin +//! Author : Menelion Elensúle : https://github.com/Oire + +;(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' + && typeof require === 'function' ? factory(require('../moment')) : + typeof define === 'function' && define.amd ? define(['../moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + -(function (factory) { - // Comment out broken wrapper, see T145382 - /*if (typeof define === 'function' && define.amd) { - define(['moment'], factory); // AMD - } else if (typeof exports === 'object') { - module.exports = factory(require('../moment')); // Node - } else { - factory((typeof global !== 'undefined' ? global : this).moment); // node or other global - }*/ - factory(this.moment); -}(function (moment) { function plural(word, num) { var forms = word.split('_'); return num % 10 === 1 && num % 100 !== 11 ? forms[0] : (num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20) ? forms[1] : forms[2]); } - function relativeTimeWithPlural(number, withoutSuffix, key) { var format = { - 'mm': 'хвилина_хвилини_хвилин', - 'hh': 'година_години_годин', + 'mm': withoutSuffix ? 'хвилина_хвилини_хвилин' : 'хвилину_хвилини_хвилин', + 'hh': withoutSuffix ? 'година_години_годин' : 'годину_години_годин', 'dd': 'день_дні_днів', 'MM': 'місяць_місяці_місяців', 'yy': 'рік_роки_років' @@ -37,55 +33,41 @@ return number + ' ' + plural(format[key], +number); } } - - function monthsCaseReplace(m, format) { - var months = { - 'nominative': 'січень_лютий_березень_квітень_травень_червень_липень_серпень_вересень_жовтень_листопад_грудень'.split('_'), - 'accusative': 'січня_лютого_березня_квітня_травня_червня_липня_серпня_вересня_жовтня_листопада_грудня'.split('_') - }, - - nounCase = (/D[oD]? *MMMM?/).test(format) ? - 'accusative' : - 'nominative'; - - return months[nounCase][m.month()]; - } - function weekdaysCaseReplace(m, format) { var weekdays = { 'nominative': 'неділя_понеділок_вівторок_середа_четвер_п’ятниця_субота'.split('_'), 'accusative': 'неділю_понеділок_вівторок_середу_четвер_п’ятницю_суботу'.split('_'), 'genitive': 'неділі_понеділка_вівторка_середи_четверга_п’ятниці_суботи'.split('_') }, - nounCase = (/(\[[ВвУу]\]) ?dddd/).test(format) ? 'accusative' : ((/\[?(?:минулої|наступної)? ?\] ?dddd/).test(format) ? 'genitive' : 'nominative'); - return weekdays[nounCase][m.day()]; } - function processHoursFunction(str) { return function () { return str + 'о' + (this.hours() === 11 ? 'б' : '') + '] LT'; }; } - return moment.defineLocale('uk', { - months : monthsCaseReplace, + var uk = moment.defineLocale('uk', { + months : { + 'format': 'січня_лютого_березня_квітня_травня_червня_липня_серпня_вересня_жовтня_листопада_грудня'.split('_'), + 'standalone': 'січень_лютий_березень_квітень_травень_червень_липень_серпень_вересень_жовтень_листопад_грудень'.split('_') + }, monthsShort : 'січ_лют_бер_квіт_трав_черв_лип_серп_вер_жовт_лист_груд'.split('_'), weekdays : weekdaysCaseReplace, weekdaysShort : 'нд_пн_вт_ср_чт_пт_сб'.split('_'), weekdaysMin : 'нд_пн_вт_ср_чт_пт_сб'.split('_'), longDateFormat : { LT : 'HH:mm', - LTS : 'LT:ss', + LTS : 'HH:mm:ss', L : 'DD.MM.YYYY', LL : 'D MMMM YYYY р.', - LLL : 'D MMMM YYYY р., LT', - LLLL : 'dddd, D MMMM YYYY р., LT' + LLL : 'D MMMM YYYY р., HH:mm', + LLLL : 'dddd, D MMMM YYYY р., HH:mm' }, calendar : { sameDay: processHoursFunction('[Сьогодні '), @@ -94,15 +76,15 @@ nextWeek: processHoursFunction('[У] dddd ['), lastWeek: function () { switch (this.day()) { - case 0: - case 3: - case 5: - case 6: - return processHoursFunction('[Минулої] dddd [').call(this); - case 1: - case 2: - case 4: - return processHoursFunction('[Минулого] dddd [').call(this); + case 0: + case 3: + case 5: + case 6: + return processHoursFunction('[Минулої] dddd [').call(this); + case 1: + case 2: + case 4: + return processHoursFunction('[Минулого] dddd [').call(this); } }, sameElse: 'L' @@ -122,9 +104,11 @@ y : 'рік', yy : relativeTimeWithPlural }, - // M. E.: those two are virtually unused but a user might want to implement them for his/her website for some reason - + meridiemParse: /ночі|ранку|дня|вечора/, + isPM: function (input) { + return /^(дня|вечора)$/.test(input); + }, meridiem : function (hour, minute, isLower) { if (hour < 4) { return 'ночі'; @@ -136,26 +120,27 @@ return 'вечора'; } }, - ordinalParse: /\d{1,2}-(й|го)/, ordinal: function (number, period) { switch (period) { - case 'M': - case 'd': - case 'DDD': - case 'w': - case 'W': - return number + '-й'; - case 'D': - return number + '-го'; - default: - return number; + case 'M': + case 'd': + case 'DDD': + case 'w': + case 'W': + return number + '-й'; + case 'D': + return number + '-го'; + default: + return number; } }, - week : { dow : 1, // Monday is the first day of the week. doy : 7 // The week that contains Jan 1st is the first week of the year. } }); -})); + + return uk; + +})); \ No newline at end of file diff --git a/resources/lib/moment/locale/uz.js b/resources/lib/moment/locale/uz.js index db4fc24c94..3fccde1845 100644 --- a/resources/lib/moment/locale/uz.js +++ b/resources/lib/moment/locale/uz.js @@ -1,31 +1,28 @@ -// moment.js locale configuration -// locale : uzbek (uz) -// author : Sardor Muminov : https://github.com/muminoff +//! moment.js locale configuration +//! locale : Uzbek [uz] +//! author : Sardor Muminov : https://github.com/muminoff -(function (factory) { - // Comment out broken wrapper, see T145382 - /*if (typeof define === 'function' && define.amd) { - define(['moment'], factory); // AMD - } else if (typeof exports === 'object') { - module.exports = factory(require('../moment')); // Node - } else { - factory((typeof global !== 'undefined' ? global : this).moment); // node or other global - }*/ - factory(this.moment); -}(function (moment) { - return moment.defineLocale('uz', { - months : 'январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь'.split('_'), +;(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' + && typeof require === 'function' ? factory(require('../moment')) : + typeof define === 'function' && define.amd ? define(['../moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + + + var uz = moment.defineLocale('uz', { + months : 'январ_феврал_март_апрел_май_июн_июл_август_сентябр_октябр_ноябр_декабр'.split('_'), monthsShort : 'янв_фев_мар_апр_май_июн_июл_авг_сен_окт_ноя_дек'.split('_'), weekdays : 'Якшанба_Душанба_Сешанба_Чоршанба_Пайшанба_Жума_Шанба'.split('_'), weekdaysShort : 'Якш_Душ_Сеш_Чор_Пай_Жум_Шан'.split('_'), weekdaysMin : 'Як_Ду_Се_Чо_Па_Жу_Ша'.split('_'), longDateFormat : { LT : 'HH:mm', - LTS : 'LT:ss', + LTS : 'HH:mm:ss', L : 'DD/MM/YYYY', LL : 'D MMMM YYYY', - LLL : 'D MMMM YYYY LT', - LLLL : 'D MMMM YYYY, dddd LT' + LLL : 'D MMMM YYYY HH:mm', + LLLL : 'D MMMM YYYY, dddd HH:mm' }, calendar : { sameDay : '[Бугун соат] LT [да]', @@ -55,4 +52,7 @@ doy : 7 // The week that contains Jan 4th is the first week of the year. } }); -})); + + return uz; + +})); \ No newline at end of file diff --git a/resources/lib/moment/locale/vi.js b/resources/lib/moment/locale/vi.js index 127d0641da..ba207e93ed 100644 --- a/resources/lib/moment/locale/vi.js +++ b/resources/lib/moment/locale/vi.js @@ -1,35 +1,45 @@ -// moment.js locale configuration -// locale : vietnamese (vi) -// author : Bang Nguyen : https://github.com/bangnk +//! moment.js locale configuration +//! locale : Vietnamese [vi] +//! author : Bang Nguyen : https://github.com/bangnk -(function (factory) { - // Comment out broken wrapper, see T145382 - /*if (typeof define === 'function' && define.amd) { - define(['moment'], factory); // AMD - } else if (typeof exports === 'object') { - module.exports = factory(require('../moment')); // Node - } else { - factory((typeof global !== 'undefined' ? global : this).moment); // node or other global - }*/ - factory(this.moment); -}(function (moment) { - return moment.defineLocale('vi', { +;(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' + && typeof require === 'function' ? factory(require('../moment')) : + typeof define === 'function' && define.amd ? define(['../moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + + + var vi = moment.defineLocale('vi', { months : 'tháng 1_tháng 2_tháng 3_tháng 4_tháng 5_tháng 6_tháng 7_tháng 8_tháng 9_tháng 10_tháng 11_tháng 12'.split('_'), monthsShort : 'Th01_Th02_Th03_Th04_Th05_Th06_Th07_Th08_Th09_Th10_Th11_Th12'.split('_'), + monthsParseExact : true, weekdays : 'chủ nhật_thứ hai_thứ ba_thứ tÆ°_thứ năm_thứ sáu_thứ bảy'.split('_'), weekdaysShort : 'CN_T2_T3_T4_T5_T6_T7'.split('_'), weekdaysMin : 'CN_T2_T3_T4_T5_T6_T7'.split('_'), + weekdaysParseExact : true, + meridiemParse: /sa|ch/i, + isPM : function (input) { + return /^ch$/i.test(input); + }, + meridiem : function (hours, minutes, isLower) { + if (hours < 12) { + return isLower ? 'sa' : 'SA'; + } else { + return isLower ? 'ch' : 'CH'; + } + }, longDateFormat : { LT : 'HH:mm', - LTS : 'LT:ss', + LTS : 'HH:mm:ss', L : 'DD/MM/YYYY', LL : 'D MMMM [năm] YYYY', - LLL : 'D MMMM [năm] YYYY LT', - LLLL : 'dddd, D MMMM [năm] YYYY LT', + LLL : 'D MMMM [năm] YYYY HH:mm', + LLLL : 'dddd, D MMMM [năm] YYYY HH:mm', l : 'DD/M/YYYY', ll : 'D MMM YYYY', - lll : 'D MMM YYYY LT', - llll : 'ddd, D MMM YYYY LT' + lll : 'D MMM YYYY HH:mm', + llll : 'ddd, D MMM YYYY HH:mm' }, calendar : { sameDay: '[Hôm nay lúc] LT', @@ -63,4 +73,7 @@ doy : 4 // The week that contains Jan 4th is the first week of the year. } }); -})); + + return vi; + +})); \ No newline at end of file diff --git a/resources/lib/moment/locale/x-pseudo.js b/resources/lib/moment/locale/x-pseudo.js new file mode 100644 index 0000000000..f573d4c1a7 --- /dev/null +++ b/resources/lib/moment/locale/x-pseudo.js @@ -0,0 +1,68 @@ +//! moment.js locale configuration +//! locale : Pseudo [x-pseudo] +//! author : Andrew Hood : https://github.com/andrewhood125 + +;(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' + && typeof require === 'function' ? factory(require('../moment')) : + typeof define === 'function' && define.amd ? define(['../moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + + + var x_pseudo = moment.defineLocale('x-pseudo', { + months : 'J~áñúá~rý_F~ébrú~árý_~Márc~h_Áp~ríl_~Máý_~Júñé~_Júl~ý_Áú~gúst~_Sép~témb~ér_Ó~ctób~ér_Ñ~óvém~bér_~Décé~mbér'.split('_'), + monthsShort : 'J~áñ_~Féb_~Már_~Ápr_~Máý_~Júñ_~Júl_~Áúg_~Sép_~Óct_~Ñóv_~Déc'.split('_'), + monthsParseExact : true, + weekdays : 'S~úñdá~ý_Mó~ñdáý~_Túé~sdáý~_Wéd~ñésd~áý_T~húrs~dáý_~Fríd~áý_S~átúr~dáý'.split('_'), + weekdaysShort : 'S~úñ_~Móñ_~Túé_~Wéd_~Thú_~Frí_~Sát'.split('_'), + weekdaysMin : 'S~ú_Mó~_Tú_~Wé_T~h_Fr~_Sá'.split('_'), + weekdaysParseExact : true, + longDateFormat : { + LT : 'HH:mm', + L : 'DD/MM/YYYY', + LL : 'D MMMM YYYY', + LLL : 'D MMMM YYYY HH:mm', + LLLL : 'dddd, D MMMM YYYY HH:mm' + }, + calendar : { + sameDay : '[T~ódá~ý át] LT', + nextDay : '[T~ómó~rró~w át] LT', + nextWeek : 'dddd [át] LT', + lastDay : '[Ý~ést~érdá~ý át] LT', + lastWeek : '[L~ást] dddd [át] LT', + sameElse : 'L' + }, + relativeTime : { + future : 'í~ñ %s', + past : '%s á~gó', + s : 'á ~féw ~sécó~ñds', + m : 'á ~míñ~úté', + mm : '%d m~íñú~tés', + h : 'á~ñ hó~úr', + hh : '%d h~óúrs', + d : 'á ~dáý', + dd : '%d d~áýs', + M : 'á ~móñ~th', + MM : '%d m~óñt~hs', + y : 'á ~ýéár', + yy : '%d ý~éárs' + }, + ordinalParse: /\d{1,2}(th|st|nd|rd)/, + ordinal : function (number) { + var b = number % 10, + output = (~~(number % 100 / 10) === 1) ? 'th' : + (b === 1) ? 'st' : + (b === 2) ? 'nd' : + (b === 3) ? 'rd' : 'th'; + return number + output; + }, + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } + }); + + return x_pseudo; + +})); \ No newline at end of file diff --git a/resources/lib/moment/locale/zh-cn.js b/resources/lib/moment/locale/zh-cn.js index 5b71928bc8..cee6160fbc 100644 --- a/resources/lib/moment/locale/zh-cn.js +++ b/resources/lib/moment/locale/zh-cn.js @@ -1,36 +1,48 @@ -// moment.js locale configuration -// locale : chinese (zh-cn) -// author : suupic : https://github.com/suupic -// author : Zeno Zeng : https://github.com/zenozeng +//! moment.js locale configuration +//! locale : Chinese (China) [zh-cn] +//! author : suupic : https://github.com/suupic +//! author : Zeno Zeng : https://github.com/zenozeng -(function (factory) { - // Comment out broken wrapper, see T145382 - /*if (typeof define === 'function' && define.amd) { - define(['moment'], factory); // AMD - } else if (typeof exports === 'object') { - module.exports = factory(require('../moment')); // Node - } else { - factory((typeof global !== 'undefined' ? global : this).moment); // node or other global - }*/ - factory(this.moment); -}(function (moment) { - return moment.defineLocale('zh-cn', { +;(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' + && typeof require === 'function' ? factory(require('../moment')) : + typeof define === 'function' && define.amd ? define(['../moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + + + var zh_cn = moment.defineLocale('zh-cn', { months : '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split('_'), monthsShort : '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'), weekdays : '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'), weekdaysShort : '周日_周一_周二_周三_周四_周五_周六'.split('_'), weekdaysMin : '日_一_二_三_四_五_六'.split('_'), longDateFormat : { - LT : 'Ah点mm', + LT : 'Ah点mm分', LTS : 'Ah点m分s秒', L : 'YYYY-MM-DD', LL : 'YYYYå¹´MMMD日', - LLL : 'YYYYå¹´MMMD日LT', - LLLL : 'YYYYå¹´MMMD日ddddLT', + LLL : 'YYYYå¹´MMMD日Ah点mm分', + LLLL : 'YYYYå¹´MMMD日ddddAh点mm分', l : 'YYYY-MM-DD', ll : 'YYYYå¹´MMMD日', - lll : 'YYYYå¹´MMMD日LT', - llll : 'YYYYå¹´MMMD日ddddLT' + lll : 'YYYYå¹´MMMD日Ah点mm分', + llll : 'YYYYå¹´MMMD日ddddAh点mm分' + }, + meridiemParse: /凌晨|早上|上午|中午|下午|晚上/, + meridiemHour: function (hour, meridiem) { + if (hour === 12) { + hour = 0; + } + if (meridiem === '凌晨' || meridiem === '早上' || + meridiem === '上午') { + return hour; + } else if (meridiem === '下午' || meridiem === '晚上') { + return hour + 12; + } else { + // '中午' + return hour >= 11 ? hour : hour + 12; + } }, meridiem : function (hour, minute, isLower) { var hm = hour * 100 + minute; @@ -61,7 +73,7 @@ nextWeek : function () { var startOfWeek, prefix; startOfWeek = moment().startOf('week'); - prefix = this.unix() - startOfWeek.unix() >= 7 * 24 * 3600 ? '[下]' : '[本]'; + prefix = this.diff(startOfWeek, 'days') >= 7 ? '[下]' : '[本]'; return this.minutes() === 0 ? prefix + 'dddAh点整' : prefix + 'dddAh点mm'; }, lastWeek : function () { @@ -75,33 +87,33 @@ ordinalParse: /\d{1,2}(日|月|周)/, ordinal : function (number, period) { switch (period) { - case 'd': - case 'D': - case 'DDD': - return number + '日'; - case 'M': - return number + '月'; - case 'w': - case 'W': - return number + '周'; - default: - return number; + case 'd': + case 'D': + case 'DDD': + return number + '日'; + case 'M': + return number + '月'; + case 'w': + case 'W': + return number + '周'; + default: + return number; } }, relativeTime : { future : '%s内', past : '%s前', s : '几秒', - m : '1分钟', - mm : '%d分钟', - h : '1小时', - hh : '%d小时', - d : '1天', - dd : '%d天', - M : '1个月', - MM : '%d个月', - y : '1å¹´', - yy : '%då¹´' + m : '1 分钟', + mm : '%d 分钟', + h : '1 小时', + hh : '%d 小时', + d : '1 天', + dd : '%d 天', + M : '1 个月', + MM : '%d 个月', + y : '1 å¹´', + yy : '%d å¹´' }, week : { // GB/T 7408-1994《数据元和交换格式·信息交换·日期和时间表示法》与ISO 8601:1988等效 @@ -109,4 +121,7 @@ doy : 4 // The week that contains Jan 4th is the first week of the year. } }); -})); + + return zh_cn; + +})); \ No newline at end of file diff --git a/resources/lib/moment/locale/zh-hk.js b/resources/lib/moment/locale/zh-hk.js new file mode 100644 index 0000000000..d12a260735 --- /dev/null +++ b/resources/lib/moment/locale/zh-hk.js @@ -0,0 +1,105 @@ +//! moment.js locale configuration +//! locale : Chinese (Hong Kong) [zh-hk] +//! author : Ben : https://github.com/ben-lin +//! author : Chris Lam : https://github.com/hehachris +//! author : Konstantin : https://github.com/skfd + +;(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' + && typeof require === 'function' ? factory(require('../moment')) : + typeof define === 'function' && define.amd ? define(['../moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + + + var zh_hk = moment.defineLocale('zh-hk', { + months : '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split('_'), + monthsShort : '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'), + weekdays : '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'), + weekdaysShort : '週日_週一_週二_週三_週四_週五_週六'.split('_'), + weekdaysMin : '日_一_二_三_四_五_六'.split('_'), + longDateFormat : { + LT : 'Ah點mm分', + LTS : 'Ah點m分s秒', + L : 'YYYYå¹´MMMD日', + LL : 'YYYYå¹´MMMD日', + LLL : 'YYYYå¹´MMMD日Ah點mm分', + LLLL : 'YYYYå¹´MMMD日ddddAh點mm分', + l : 'YYYYå¹´MMMD日', + ll : 'YYYYå¹´MMMD日', + lll : 'YYYYå¹´MMMD日Ah點mm分', + llll : 'YYYYå¹´MMMD日ddddAh點mm分' + }, + meridiemParse: /凌晨|早上|上午|中午|下午|晚上/, + meridiemHour : function (hour, meridiem) { + if (hour === 12) { + hour = 0; + } + if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') { + return hour; + } else if (meridiem === '中午') { + return hour >= 11 ? hour : hour + 12; + } else if (meridiem === '下午' || meridiem === '晚上') { + return hour + 12; + } + }, + meridiem : function (hour, minute, isLower) { + var hm = hour * 100 + minute; + if (hm < 600) { + return '凌晨'; + } else if (hm < 900) { + return '早上'; + } else if (hm < 1130) { + return '上午'; + } else if (hm < 1230) { + return '中午'; + } else if (hm < 1800) { + return '下午'; + } else { + return '晚上'; + } + }, + calendar : { + sameDay : '[今天]LT', + nextDay : '[明天]LT', + nextWeek : '[下]ddddLT', + lastDay : '[昨天]LT', + lastWeek : '[上]ddddLT', + sameElse : 'L' + }, + ordinalParse: /\d{1,2}(日|月|週)/, + ordinal : function (number, period) { + switch (period) { + case 'd' : + case 'D' : + case 'DDD' : + return number + '日'; + case 'M' : + return number + '月'; + case 'w' : + case 'W' : + return number + '週'; + default : + return number; + } + }, + relativeTime : { + future : '%s內', + past : '%s前', + s : '幾秒', + m : '1 分鐘', + mm : '%d 分鐘', + h : '1 小時', + hh : '%d 小時', + d : '1 天', + dd : '%d 天', + M : '1 個月', + MM : '%d 個月', + y : '1 å¹´', + yy : '%d å¹´' + } + }); + + return zh_hk; + +})); \ No newline at end of file diff --git a/resources/lib/moment/locale/zh-tw.js b/resources/lib/moment/locale/zh-tw.js index 7883edef64..c6766c8b68 100644 --- a/resources/lib/moment/locale/zh-tw.js +++ b/resources/lib/moment/locale/zh-tw.js @@ -1,39 +1,52 @@ -// moment.js locale configuration -// locale : traditional chinese (zh-tw) -// author : Ben : https://github.com/ben-lin +//! moment.js locale configuration +//! locale : Chinese (Taiwan) [zh-tw] +//! author : Ben : https://github.com/ben-lin +//! author : Chris Lam : https://github.com/hehachris -(function (factory) { - // Comment out broken wrapper, see T145382 - /*if (typeof define === 'function' && define.amd) { - define(['moment'], factory); // AMD - } else if (typeof exports === 'object') { - module.exports = factory(require('../moment')); // Node - } else { - factory((typeof global !== 'undefined' ? global : this).moment); // node or other global - }*/ - factory(this.moment); -}(function (moment) { - return moment.defineLocale('zh-tw', { +;(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' + && typeof require === 'function' ? factory(require('../moment')) : + typeof define === 'function' && define.amd ? define(['../moment'], factory) : + factory(global.moment) +}(this, function (moment) { 'use strict'; + + + var zh_tw = moment.defineLocale('zh-tw', { months : '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split('_'), monthsShort : '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'), weekdays : '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'), weekdaysShort : '週日_週一_週二_週三_週四_週五_週六'.split('_'), weekdaysMin : '日_一_二_三_四_五_六'.split('_'), longDateFormat : { - LT : 'Ah點mm', + LT : 'Ah點mm分', LTS : 'Ah點m分s秒', L : 'YYYYå¹´MMMD日', LL : 'YYYYå¹´MMMD日', - LLL : 'YYYYå¹´MMMD日LT', - LLLL : 'YYYYå¹´MMMD日ddddLT', + LLL : 'YYYYå¹´MMMD日Ah點mm分', + LLLL : 'YYYYå¹´MMMD日ddddAh點mm分', l : 'YYYYå¹´MMMD日', ll : 'YYYYå¹´MMMD日', - lll : 'YYYYå¹´MMMD日LT', - llll : 'YYYYå¹´MMMD日ddddLT' + lll : 'YYYYå¹´MMMD日Ah點mm分', + llll : 'YYYYå¹´MMMD日ddddAh點mm分' + }, + meridiemParse: /凌晨|早上|上午|中午|下午|晚上/, + meridiemHour : function (hour, meridiem) { + if (hour === 12) { + hour = 0; + } + if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') { + return hour; + } else if (meridiem === '中午') { + return hour >= 11 ? hour : hour + 12; + } else if (meridiem === '下午' || meridiem === '晚上') { + return hour + 12; + } }, meridiem : function (hour, minute, isLower) { var hm = hour * 100 + minute; - if (hm < 900) { + if (hm < 600) { + return '凌晨'; + } else if (hm < 900) { return '早上'; } else if (hm < 1130) { return '上午'; @@ -56,33 +69,36 @@ ordinalParse: /\d{1,2}(日|月|週)/, ordinal : function (number, period) { switch (period) { - case 'd' : - case 'D' : - case 'DDD' : - return number + '日'; - case 'M' : - return number + '月'; - case 'w' : - case 'W' : - return number + '週'; - default : - return number; + case 'd' : + case 'D' : + case 'DDD' : + return number + '日'; + case 'M' : + return number + '月'; + case 'w' : + case 'W' : + return number + '週'; + default : + return number; } }, relativeTime : { future : '%s內', past : '%s前', s : '幾秒', - m : '一分鐘', - mm : '%d分鐘', - h : '一小時', - hh : '%d小時', - d : '一天', - dd : '%d天', - M : '一個月', - MM : '%d個月', - y : '一年', - yy : '%då¹´' + m : '1 分鐘', + mm : '%d 分鐘', + h : '1 小時', + hh : '%d 小時', + d : '1 天', + dd : '%d 天', + M : '1 個月', + MM : '%d 個月', + y : '1 å¹´', + yy : '%d å¹´' } }); -})); + + return zh_tw; + +})); \ No newline at end of file diff --git a/resources/lib/moment/moment.js b/resources/lib/moment/moment.js index 85e190d4ae..7d0fef9611 100644 --- a/resources/lib/moment/moment.js +++ b/resources/lib/moment/moment.js @@ -1,476 +1,211 @@ //! moment.js -//! version : 2.8.4 +//! version : 2.15.0 //! authors : Tim Wood, Iskren Chernev, Moment.js contributors //! license : MIT //! momentjs.com -(function (undefined) { - /************************************ - Constants - ************************************/ - - var moment, - VERSION = '2.8.4', - // the global-scope this is NOT the global object in Node.js - globalScope = typeof global !== 'undefined' ? global : this, - oldGlobalMoment, - round = Math.round, - hasOwnProperty = Object.prototype.hasOwnProperty, - i, - - YEAR = 0, - MONTH = 1, - DATE = 2, - HOUR = 3, - MINUTE = 4, - SECOND = 5, - MILLISECOND = 6, - - // internal storage for locale config files - locales = {}, - - // extra moment internal properties (plugins register props here) - momentProperties = [], - - // check for nodeJS - hasModule = (typeof module !== 'undefined' && module && module.exports), - - // ASP.NET json date format regex - aspNetJsonRegex = /^\/?Date\((\-?\d+)/i, - aspNetTimeSpanJsonRegex = /(\-)?(?:(\d*)\.)?(\d+)\:(\d+)(?:\:(\d+)\.?(\d{3})?)?/, - - // from http://docs.closure-library.googlecode.com/git/closure_goog_date_date.js.source.html - // somewhat more in line with 4.4.3.2 2004 spec, but allows decimal anywhere - isoDurationRegex = /^(-)?P(?:(?:([0-9,.]*)Y)?(?:([0-9,.]*)M)?(?:([0-9,.]*)D)?(?:T(?:([0-9,.]*)H)?(?:([0-9,.]*)M)?(?:([0-9,.]*)S)?)?|([0-9,.]*)W)$/, - - // format tokens - formattingTokens = /(\[[^\[]*\])|(\\)?(Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Q|YYYYYY|YYYYY|YYYY|YY|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|mm?|ss?|S{1,4}|x|X|zz?|ZZ?|.)/g, - localFormattingTokens = /(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g, - - // parsing token regexes - parseTokenOneOrTwoDigits = /\d\d?/, // 0 - 99 - parseTokenOneToThreeDigits = /\d{1,3}/, // 0 - 999 - parseTokenOneToFourDigits = /\d{1,4}/, // 0 - 9999 - parseTokenOneToSixDigits = /[+\-]?\d{1,6}/, // -999,999 - 999,999 - parseTokenDigits = /\d+/, // nonzero number of digits - parseTokenWord = /[0-9]*['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+|[\u0600-\u06FF\/]+(\s*?[\u0600-\u06FF]+){1,2}/i, // any word (or two) characters or numbers including two/three word month in arabic. - parseTokenTimezone = /Z|[\+\-]\d\d:?\d\d/gi, // +00:00 -00:00 +0000 -0000 or Z - parseTokenT = /T/i, // T (ISO separator) - parseTokenOffsetMs = /[\+\-]?\d+/, // 1234567890123 - parseTokenTimestampMs = /[\+\-]?\d+(\.\d{1,3})?/, // 123456789 123456789.123 - - //strict parsing regexes - parseTokenOneDigit = /\d/, // 0 - 9 - parseTokenTwoDigits = /\d\d/, // 00 - 99 - parseTokenThreeDigits = /\d{3}/, // 000 - 999 - parseTokenFourDigits = /\d{4}/, // 0000 - 9999 - parseTokenSixDigits = /[+-]?\d{6}/, // -999,999 - 999,999 - parseTokenSignedNumber = /[+-]?\d+/, // -inf - inf - - // iso 8601 regex - // 0000-00-00 0000-W00 or 0000-W00-0 + T + 00 or 00:00 or 00:00:00 or 00:00:00.000 + +00:00 or +0000 or +00) - isoRegex = /^\s*(?:[+-]\d{6}|\d{4})-(?:(\d\d-\d\d)|(W\d\d$)|(W\d\d-\d)|(\d\d\d))((T| )(\d\d(:\d\d(:\d\d(\.\d+)?)?)?)?([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/, - - isoFormat = 'YYYY-MM-DDTHH:mm:ssZ', - - isoDates = [ - ['YYYYYY-MM-DD', /[+-]\d{6}-\d{2}-\d{2}/], - ['YYYY-MM-DD', /\d{4}-\d{2}-\d{2}/], - ['GGGG-[W]WW-E', /\d{4}-W\d{2}-\d/], - ['GGGG-[W]WW', /\d{4}-W\d{2}/], - ['YYYY-DDD', /\d{4}-\d{3}/] - ], - - // iso time formats and regexes - isoTimes = [ - ['HH:mm:ss.SSSS', /(T| )\d\d:\d\d:\d\d\.\d+/], - ['HH:mm:ss', /(T| )\d\d:\d\d:\d\d/], - ['HH:mm', /(T| )\d\d:\d\d/], - ['HH', /(T| )\d\d/] - ], - - // timezone chunker '+10:00' > ['10', '00'] or '-1530' > ['-15', '30'] - parseTimezoneChunker = /([\+\-]|\d\d)/gi, - - // getter and setter names - proxyGettersAndSetters = 'Date|Hours|Minutes|Seconds|Milliseconds'.split('|'), - unitMillisecondFactors = { - 'Milliseconds' : 1, - 'Seconds' : 1e3, - 'Minutes' : 6e4, - 'Hours' : 36e5, - 'Days' : 864e5, - 'Months' : 2592e6, - 'Years' : 31536e6 - }, - - unitAliases = { - ms : 'millisecond', - s : 'second', - m : 'minute', - h : 'hour', - d : 'day', - D : 'date', - w : 'week', - W : 'isoWeek', - M : 'month', - Q : 'quarter', - y : 'year', - DDD : 'dayOfYear', - e : 'weekday', - E : 'isoWeekday', - gg: 'weekYear', - GG: 'isoWeekYear' - }, - - camelFunctions = { - dayofyear : 'dayOfYear', - isoweekday : 'isoWeekday', - isoweek : 'isoWeek', - weekyear : 'weekYear', - isoweekyear : 'isoWeekYear' - }, - - // format function strings - formatFunctions = {}, - - // default relative time thresholds - relativeTimeThresholds = { - s: 45, // seconds to minute - m: 45, // minutes to hour - h: 22, // hours to day - d: 26, // days to month - M: 11 // months to year - }, - - // tokens to ordinalize and pad - ordinalizeTokens = 'DDD w W M D d'.split(' '), - paddedTokens = 'M D H h m s w W'.split(' '), - - formatTokenFunctions = { - M : function () { - return this.month() + 1; - }, - MMM : function (format) { - return this.localeData().monthsShort(this, format); - }, - MMMM : function (format) { - return this.localeData().months(this, format); - }, - D : function () { - return this.date(); - }, - DDD : function () { - return this.dayOfYear(); - }, - d : function () { - return this.day(); - }, - dd : function (format) { - return this.localeData().weekdaysMin(this, format); - }, - ddd : function (format) { - return this.localeData().weekdaysShort(this, format); - }, - dddd : function (format) { - return this.localeData().weekdays(this, format); - }, - w : function () { - return this.week(); - }, - W : function () { - return this.isoWeek(); - }, - YY : function () { - return leftZeroFill(this.year() % 100, 2); - }, - YYYY : function () { - return leftZeroFill(this.year(), 4); - }, - YYYYY : function () { - return leftZeroFill(this.year(), 5); - }, - YYYYYY : function () { - var y = this.year(), sign = y >= 0 ? '+' : '-'; - return sign + leftZeroFill(Math.abs(y), 6); - }, - gg : function () { - return leftZeroFill(this.weekYear() % 100, 2); - }, - gggg : function () { - return leftZeroFill(this.weekYear(), 4); - }, - ggggg : function () { - return leftZeroFill(this.weekYear(), 5); - }, - GG : function () { - return leftZeroFill(this.isoWeekYear() % 100, 2); - }, - GGGG : function () { - return leftZeroFill(this.isoWeekYear(), 4); - }, - GGGGG : function () { - return leftZeroFill(this.isoWeekYear(), 5); - }, - e : function () { - return this.weekday(); - }, - E : function () { - return this.isoWeekday(); - }, - a : function () { - return this.localeData().meridiem(this.hours(), this.minutes(), true); - }, - A : function () { - return this.localeData().meridiem(this.hours(), this.minutes(), false); - }, - H : function () { - return this.hours(); - }, - h : function () { - return this.hours() % 12 || 12; - }, - m : function () { - return this.minutes(); - }, - s : function () { - return this.seconds(); - }, - S : function () { - return toInt(this.milliseconds() / 100); - }, - SS : function () { - return leftZeroFill(toInt(this.milliseconds() / 10), 2); - }, - SSS : function () { - return leftZeroFill(this.milliseconds(), 3); - }, - SSSS : function () { - return leftZeroFill(this.milliseconds(), 3); - }, - Z : function () { - var a = -this.zone(), - b = '+'; - if (a < 0) { - a = -a; - b = '-'; - } - return b + leftZeroFill(toInt(a / 60), 2) + ':' + leftZeroFill(toInt(a) % 60, 2); - }, - ZZ : function () { - var a = -this.zone(), - b = '+'; - if (a < 0) { - a = -a; - b = '-'; - } - return b + leftZeroFill(toInt(a / 60), 2) + leftZeroFill(toInt(a) % 60, 2); - }, - z : function () { - return this.zoneAbbr(); - }, - zz : function () { - return this.zoneName(); - }, - x : function () { - return this.valueOf(); - }, - X : function () { - return this.unix(); - }, - Q : function () { - return this.quarter(); - } - }, - - deprecations = {}, - - lists = ['months', 'monthsShort', 'weekdays', 'weekdaysShort', 'weekdaysMin']; - - // Pick the first defined of two or three arguments. dfl comes from - // default. - function dfl(a, b, c) { - switch (arguments.length) { - case 2: return a != null ? a : b; - case 3: return a != null ? a : b != null ? b : c; - default: throw new Error('Implement me'); - } - } +;(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : + typeof define === 'function' && define.amd ? define(factory) : + global.moment = factory() +}(this, function () { 'use strict'; - function hasOwnProp(a, b) { - return hasOwnProperty.call(a, b); + var hookCallback; + + function utils_hooks__hooks () { + return hookCallback.apply(null, arguments); } - function defaultParsingFlags() { - // We need to deep clone this object, and es5 standard is not very - // helpful. - return { - empty : false, - unusedTokens : [], - unusedInput : [], - overflow : -2, - charsLeftOver : 0, - nullInput : false, - invalidMonth : null, - invalidFormat : false, - userInvalidated : false, - iso: false - }; + // This is done to register the method called with moment() + // without creating circular dependencies. + function setHookCallback (callback) { + hookCallback = callback; } - function printMsg(msg) { - if (moment.suppressDeprecationWarnings === false && - typeof console !== 'undefined' && console.warn) { - console.warn('Deprecation warning: ' + msg); - } + function isArray(input) { + return input instanceof Array || Object.prototype.toString.call(input) === '[object Array]'; } - function deprecate(msg, fn) { - var firstTime = true; - return extend(function () { - if (firstTime) { - printMsg(msg); - firstTime = false; - } - return fn.apply(this, arguments); - }, fn); + function isObject(input) { + // IE8 will treat undefined and null as object if it wasn't for + // input != null + return input != null && Object.prototype.toString.call(input) === '[object Object]'; } - function deprecateSimple(name, msg) { - if (!deprecations[name]) { - printMsg(msg); - deprecations[name] = true; + function isObjectEmpty(obj) { + var k; + for (k in obj) { + // even if its not own property I'd still call it non-empty + return false; } + return true; } - function padToken(func, count) { - return function (a) { - return leftZeroFill(func.call(this, a), count); - }; - } - function ordinalizeToken(func, period) { - return function (a) { - return this.localeData().ordinal(func.call(this, a), period); - }; + function isDate(input) { + return input instanceof Date || Object.prototype.toString.call(input) === '[object Date]'; } - while (ordinalizeTokens.length) { - i = ordinalizeTokens.pop(); - formatTokenFunctions[i + 'o'] = ordinalizeToken(formatTokenFunctions[i], i); + function map(arr, fn) { + var res = [], i; + for (i = 0; i < arr.length; ++i) { + res.push(fn(arr[i], i)); + } + return res; } - while (paddedTokens.length) { - i = paddedTokens.pop(); - formatTokenFunctions[i + i] = padToken(formatTokenFunctions[i], 2); + + function hasOwnProp(a, b) { + return Object.prototype.hasOwnProperty.call(a, b); } - formatTokenFunctions.DDDD = padToken(formatTokenFunctions.DDD, 3); + function extend(a, b) { + for (var i in b) { + if (hasOwnProp(b, i)) { + a[i] = b[i]; + } + } + + if (hasOwnProp(b, 'toString')) { + a.toString = b.toString; + } - /************************************ - Constructors - ************************************/ + if (hasOwnProp(b, 'valueOf')) { + a.valueOf = b.valueOf; + } - function Locale() { + return a; } - // Moment prototype object - function Moment(config, skipOverflow) { - if (skipOverflow !== false) { - checkOverflow(config); - } - copyConfig(this, config); - this._d = new Date(+config._d); + function create_utc__createUTC (input, format, locale, strict) { + return createLocalOrUTC(input, format, locale, strict, true).utc(); } - // Duration Constructor - function Duration(duration) { - var normalizedInput = normalizeObjectUnits(duration), - years = normalizedInput.year || 0, - quarters = normalizedInput.quarter || 0, - months = normalizedInput.month || 0, - weeks = normalizedInput.week || 0, - days = normalizedInput.day || 0, - hours = normalizedInput.hour || 0, - minutes = normalizedInput.minute || 0, - seconds = normalizedInput.second || 0, - milliseconds = normalizedInput.millisecond || 0; + function defaultParsingFlags() { + // We need to deep clone this object. + return { + empty : false, + unusedTokens : [], + unusedInput : [], + overflow : -2, + charsLeftOver : 0, + nullInput : false, + invalidMonth : null, + invalidFormat : false, + userInvalidated : false, + iso : false, + parsedDateParts : [], + meridiem : null + }; + } - // representation for dateAddRemove - this._milliseconds = +milliseconds + - seconds * 1e3 + // 1000 - minutes * 6e4 + // 1000 * 60 - hours * 36e5; // 1000 * 60 * 60 - // Because of dateAddRemove treats 24 hours as different from a - // day when working around DST, we need to store them separately - this._days = +days + - weeks * 7; - // It is impossible translate months into days without knowing - // which months you are are talking about, so we have to store - // it separately. - this._months = +months + - quarters * 3 + - years * 12; + function getParsingFlags(m) { + if (m._pf == null) { + m._pf = defaultParsingFlags(); + } + return m._pf; + } - this._data = {}; + var some; + if (Array.prototype.some) { + some = Array.prototype.some; + } else { + some = function (fun) { + var t = Object(this); + var len = t.length >>> 0; - this._locale = moment.localeData(); + for (var i = 0; i < len; i++) { + if (i in t && fun.call(this, t[i], i, t)) { + return true; + } + } - this._bubble(); + return false; + }; } - /************************************ - Helpers - ************************************/ + function valid__isValid(m) { + if (m._isValid == null) { + var flags = getParsingFlags(m); + var parsedParts = some.call(flags.parsedDateParts, function (i) { + return i != null; + }); + var isNowValid = !isNaN(m._d.getTime()) && + flags.overflow < 0 && + !flags.empty && + !flags.invalidMonth && + !flags.invalidWeekday && + !flags.nullInput && + !flags.invalidFormat && + !flags.userInvalidated && + (!flags.meridiem || (flags.meridiem && parsedParts)); + if (m._strict) { + isNowValid = isNowValid && + flags.charsLeftOver === 0 && + flags.unusedTokens.length === 0 && + flags.bigHour === undefined; + } - function extend(a, b) { - for (var i in b) { - if (hasOwnProp(b, i)) { - a[i] = b[i]; + if (Object.isFrozen == null || !Object.isFrozen(m)) { + m._isValid = isNowValid; + } + else { + return isNowValid; } } + return m._isValid; + } - if (hasOwnProp(b, 'toString')) { - a.toString = b.toString; + function valid__createInvalid (flags) { + var m = create_utc__createUTC(NaN); + if (flags != null) { + extend(getParsingFlags(m), flags); } - - if (hasOwnProp(b, 'valueOf')) { - a.valueOf = b.valueOf; + else { + getParsingFlags(m).userInvalidated = true; } - return a; + return m; + } + + function isUndefined(input) { + return input === void 0; } + // Plugins that add properties should also add the key here (null value), + // so we can properly clone ourselves. + var momentProperties = utils_hooks__hooks.momentProperties = []; + function copyConfig(to, from) { var i, prop, val; - if (typeof from._isAMomentObject !== 'undefined') { + if (!isUndefined(from._isAMomentObject)) { to._isAMomentObject = from._isAMomentObject; } - if (typeof from._i !== 'undefined') { + if (!isUndefined(from._i)) { to._i = from._i; } - if (typeof from._f !== 'undefined') { + if (!isUndefined(from._f)) { to._f = from._f; } - if (typeof from._l !== 'undefined') { + if (!isUndefined(from._l)) { to._l = from._l; } - if (typeof from._strict !== 'undefined') { + if (!isUndefined(from._strict)) { to._strict = from._strict; } - if (typeof from._tzm !== 'undefined') { + if (!isUndefined(from._tzm)) { to._tzm = from._tzm; } - if (typeof from._isUTC !== 'undefined') { + if (!isUndefined(from._isUTC)) { to._isUTC = from._isUTC; } - if (typeof from._offset !== 'undefined') { + if (!isUndefined(from._offset)) { to._offset = from._offset; } - if (typeof from._pf !== 'undefined') { - to._pf = from._pf; + if (!isUndefined(from._pf)) { + to._pf = getParsingFlags(from); } - if (typeof from._locale !== 'undefined') { + if (!isUndefined(from._locale)) { to._locale = from._locale; } @@ -478,7 +213,7 @@ for (i in momentProperties) { prop = momentProperties[i]; val = from[prop]; - if (typeof val !== 'undefined') { + if (!isUndefined(val)) { to[prop] = val; } } @@ -487,99 +222,43 @@ return to; } - function absRound(number) { - if (number < 0) { - return Math.ceil(number); - } else { - return Math.floor(number); - } - } - - // left zero fill a number - // see http://jsperf.com/left-zero-filling for performance comparison - function leftZeroFill(number, targetLength, forceSign) { - var output = '' + Math.abs(number), - sign = number >= 0; + var updateInProgress = false; - while (output.length < targetLength) { - output = '0' + output; + // Moment prototype object + function Moment(config) { + copyConfig(this, config); + this._d = new Date(config._d != null ? config._d.getTime() : NaN); + // Prevent infinite loop in case updateOffset creates new moment + // objects. + if (updateInProgress === false) { + updateInProgress = true; + utils_hooks__hooks.updateOffset(this); + updateInProgress = false; } - return (sign ? (forceSign ? '+' : '') : '-') + output; } - function positiveMomentsDifference(base, other) { - var res = {milliseconds: 0, months: 0}; - - res.months = other.month() - base.month() + - (other.year() - base.year()) * 12; - if (base.clone().add(res.months, 'M').isAfter(other)) { - --res.months; - } - - res.milliseconds = +other - +(base.clone().add(res.months, 'M')); - - return res; + function isMoment (obj) { + return obj instanceof Moment || (obj != null && obj._isAMomentObject != null); } - function momentsDifference(base, other) { - var res; - other = makeAs(other, base); - if (base.isBefore(other)) { - res = positiveMomentsDifference(base, other); + function absFloor (number) { + if (number < 0) { + // -0 -> 0 + return Math.ceil(number) || 0; } else { - res = positiveMomentsDifference(other, base); - res.milliseconds = -res.milliseconds; - res.months = -res.months; + return Math.floor(number); } - - return res; - } - - // TODO: remove 'name' arg after deprecation is removed - function createAdder(direction, name) { - return function (val, period) { - var dur, tmp; - //invert the arguments, but complain about it - if (period !== null && !isNaN(+period)) { - deprecateSimple(name, 'moment().' + name + '(period, number) is deprecated. Please use moment().' + name + '(number, period).'); - tmp = val; val = period; period = tmp; - } - - val = typeof val === 'string' ? +val : val; - dur = moment.duration(val, period); - addOrSubtractDurationFromMoment(this, dur, direction); - return this; - }; } - function addOrSubtractDurationFromMoment(mom, duration, isAdding, updateOffset) { - var milliseconds = duration._milliseconds, - days = duration._days, - months = duration._months; - updateOffset = updateOffset == null ? true : updateOffset; + function toInt(argumentForCoercion) { + var coercedNumber = +argumentForCoercion, + value = 0; - if (milliseconds) { - mom._d.setTime(+mom._d + milliseconds * isAdding); - } - if (days) { - rawSetter(mom, 'Date', rawGetter(mom, 'Date') + days * isAdding); - } - if (months) { - rawMonthSetter(mom, rawGetter(mom, 'Month') + months * isAdding); - } - if (updateOffset) { - moment.updateOffset(mom, days || months); + if (coercedNumber !== 0 && isFinite(coercedNumber)) { + value = absFloor(coercedNumber); } - } - // check if is an array - function isArray(input) { - return Object.prototype.toString.call(input) === '[object Array]'; - } - - function isDate(input) { - return Object.prototype.toString.call(input) === '[object Date]' || - input instanceof Date; + return value; } // compare two arrays, return the number of differences @@ -597,414 +276,341 @@ return diffs + lengthDiff; } - function normalizeUnits(units) { - if (units) { - var lowered = units.toLowerCase().replace(/(.)s$/, '$1'); - units = unitAliases[units] || camelFunctions[lowered] || lowered; + function warn(msg) { + if (utils_hooks__hooks.suppressDeprecationWarnings === false && + (typeof console !== 'undefined') && console.warn) { + console.warn('Deprecation warning: ' + msg); } - return units; } - function normalizeObjectUnits(inputObject) { - var normalizedInput = {}, - normalizedProp, - prop; + function deprecate(msg, fn) { + var firstTime = true; - for (prop in inputObject) { - if (hasOwnProp(inputObject, prop)) { - normalizedProp = normalizeUnits(prop); - if (normalizedProp) { - normalizedInput[normalizedProp] = inputObject[prop]; + return extend(function () { + if (utils_hooks__hooks.deprecationHandler != null) { + utils_hooks__hooks.deprecationHandler(null, msg); + } + if (firstTime) { + var args = []; + var arg; + for (var i = 0; i < arguments.length; i++) { + arg = ''; + if (typeof arguments[i] === 'object') { + arg += '\n[' + i + '] '; + for (var key in arguments[0]) { + arg += key + ': ' + arguments[0][key] + ', '; + } + arg = arg.slice(0, -2); // Remove trailing comma and space + } else { + arg = arguments[i]; + } + args.push(arg); } + warn(msg + '\nArguments: ' + Array.prototype.slice.call(args).join('') + '\n' + (new Error()).stack); + firstTime = false; } - } - - return normalizedInput; + return fn.apply(this, arguments); + }, fn); } - function makeList(field) { - var count, setter; + var deprecations = {}; - if (field.indexOf('week') === 0) { - count = 7; - setter = 'day'; - } - else if (field.indexOf('month') === 0) { - count = 12; - setter = 'month'; + function deprecateSimple(name, msg) { + if (utils_hooks__hooks.deprecationHandler != null) { + utils_hooks__hooks.deprecationHandler(name, msg); } - else { - return; + if (!deprecations[name]) { + warn(msg); + deprecations[name] = true; } + } - moment[field] = function (format, index) { - var i, getter, - method = moment._locale[field], - results = []; - - if (typeof format === 'number') { - index = format; - format = undefined; - } - - getter = function (i) { - var m = moment().utc().set(setter, i); - return method.call(moment._locale, m, format || ''); - }; + utils_hooks__hooks.suppressDeprecationWarnings = false; + utils_hooks__hooks.deprecationHandler = null; - if (index != null) { - return getter(index); - } - else { - for (i = 0; i < count; i++) { - results.push(getter(i)); - } - return results; - } - }; + function isFunction(input) { + return input instanceof Function || Object.prototype.toString.call(input) === '[object Function]'; } - function toInt(argumentForCoercion) { - var coercedNumber = +argumentForCoercion, - value = 0; - - if (coercedNumber !== 0 && isFinite(coercedNumber)) { - if (coercedNumber >= 0) { - value = Math.floor(coercedNumber); + function locale_set__set (config) { + var prop, i; + for (i in config) { + prop = config[i]; + if (isFunction(prop)) { + this[i] = prop; } else { - value = Math.ceil(coercedNumber); + this['_' + i] = prop; } } - - return value; + this._config = config; + // Lenient ordinal parsing accepts just a number in addition to + // number + (possibly) stuff coming from _ordinalParseLenient. + this._ordinalParseLenient = new RegExp(this._ordinalParse.source + '|' + (/\d{1,2}/).source); } - function daysInMonth(year, month) { - return new Date(Date.UTC(year, month + 1, 0)).getUTCDate(); + function mergeConfigs(parentConfig, childConfig) { + var res = extend({}, parentConfig), prop; + for (prop in childConfig) { + if (hasOwnProp(childConfig, prop)) { + if (isObject(parentConfig[prop]) && isObject(childConfig[prop])) { + res[prop] = {}; + extend(res[prop], parentConfig[prop]); + extend(res[prop], childConfig[prop]); + } else if (childConfig[prop] != null) { + res[prop] = childConfig[prop]; + } else { + delete res[prop]; + } + } + } + for (prop in parentConfig) { + if (hasOwnProp(parentConfig, prop) && + !hasOwnProp(childConfig, prop) && + isObject(parentConfig[prop])) { + // make sure changes to properties don't modify parent config + res[prop] = extend({}, res[prop]); + } + } + return res; } - function weeksInYear(year, dow, doy) { - return weekOfYear(moment([year, 11, 31 + dow - doy]), dow, doy).week; + function Locale(config) { + if (config != null) { + this.set(config); + } } - function daysInYear(year) { - return isLeapYear(year) ? 366 : 365; - } + var keys; - function isLeapYear(year) { - return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0; + if (Object.keys) { + keys = Object.keys; + } else { + keys = function (obj) { + var i, res = []; + for (i in obj) { + if (hasOwnProp(obj, i)) { + res.push(i); + } + } + return res; + }; } - function checkOverflow(m) { - var overflow; - if (m._a && m._pf.overflow === -2) { - overflow = - m._a[MONTH] < 0 || m._a[MONTH] > 11 ? MONTH : - m._a[DATE] < 1 || m._a[DATE] > daysInMonth(m._a[YEAR], m._a[MONTH]) ? DATE : - m._a[HOUR] < 0 || m._a[HOUR] > 24 || - (m._a[HOUR] === 24 && (m._a[MINUTE] !== 0 || - m._a[SECOND] !== 0 || - m._a[MILLISECOND] !== 0)) ? HOUR : - m._a[MINUTE] < 0 || m._a[MINUTE] > 59 ? MINUTE : - m._a[SECOND] < 0 || m._a[SECOND] > 59 ? SECOND : - m._a[MILLISECOND] < 0 || m._a[MILLISECOND] > 999 ? MILLISECOND : - -1; - - if (m._pf._overflowDayOfYear && (overflow < YEAR || overflow > DATE)) { - overflow = DATE; - } + var defaultCalendar = { + sameDay : '[Today at] LT', + nextDay : '[Tomorrow at] LT', + nextWeek : 'dddd [at] LT', + lastDay : '[Yesterday at] LT', + lastWeek : '[Last] dddd [at] LT', + sameElse : 'L' + }; - m._pf.overflow = overflow; - } + function locale_calendar__calendar (key, mom, now) { + var output = this._calendar[key] || this._calendar['sameElse']; + return isFunction(output) ? output.call(mom, now) : output; } - function isValid(m) { - if (m._isValid == null) { - m._isValid = !isNaN(m._d.getTime()) && - m._pf.overflow < 0 && - !m._pf.empty && - !m._pf.invalidMonth && - !m._pf.nullInput && - !m._pf.invalidFormat && - !m._pf.userInvalidated; + var defaultLongDateFormat = { + LTS : 'h:mm:ss A', + LT : 'h:mm A', + L : 'MM/DD/YYYY', + LL : 'MMMM D, YYYY', + LLL : 'MMMM D, YYYY h:mm A', + LLLL : 'dddd, MMMM D, YYYY h:mm A' + }; - if (m._strict) { - m._isValid = m._isValid && - m._pf.charsLeftOver === 0 && - m._pf.unusedTokens.length === 0 && - m._pf.bigHour === undefined; - } + function longDateFormat (key) { + var format = this._longDateFormat[key], + formatUpper = this._longDateFormat[key.toUpperCase()]; + + if (format || !formatUpper) { + return format; } - return m._isValid; + + this._longDateFormat[key] = formatUpper.replace(/MMMM|MM|DD|dddd/g, function (val) { + return val.slice(1); + }); + + return this._longDateFormat[key]; } - function normalizeLocale(key) { - return key ? key.toLowerCase().replace('_', '-') : key; + var defaultInvalidDate = 'Invalid date'; + + function invalidDate () { + return this._invalidDate; } - // pick the locale from the array - // try ['en-au', 'en-gb'] as 'en-au', 'en-gb', 'en', as in move through the list trying each - // substring from most specific to least, but move to the next array item if it's a more specific variant than the current root - function chooseLocale(names) { - var i = 0, j, next, locale, split; + var defaultOrdinal = '%d'; + var defaultOrdinalParse = /\d{1,2}/; - while (i < names.length) { - split = normalizeLocale(names[i]).split('-'); - j = split.length; - next = normalizeLocale(names[i + 1]); - next = next ? next.split('-') : null; - while (j > 0) { - locale = loadLocale(split.slice(0, j).join('-')); - if (locale) { - return locale; - } - if (next && next.length >= j && compareArrays(split, next, true) >= j - 1) { - //the next array item is better than a shallower substring of this one - break; - } - j--; - } - i++; - } - return null; + function ordinal (number) { + return this._ordinal.replace('%d', number); } - function loadLocale(name) { - var oldLocale = null; - if (!locales[name] && hasModule) { - try { - oldLocale = moment.locale(); - require('./locale/' + name); - // because defineLocale currently also sets the global locale, we want to undo that for lazy loaded locales - moment.locale(oldLocale); - } catch (e) { } - } - return locales[name]; + var defaultRelativeTime = { + future : 'in %s', + past : '%s ago', + s : 'a few seconds', + m : 'a minute', + mm : '%d minutes', + h : 'an hour', + hh : '%d hours', + d : 'a day', + dd : '%d days', + M : 'a month', + MM : '%d months', + y : 'a year', + yy : '%d years' + }; + + function relative__relativeTime (number, withoutSuffix, string, isFuture) { + var output = this._relativeTime[string]; + return (isFunction(output)) ? + output(number, withoutSuffix, string, isFuture) : + output.replace(/%d/i, number); } - // Return a moment from input, that is local/utc/zone equivalent to model. - function makeAs(input, model) { - var res, diff; - if (model._isUTC) { - res = model.clone(); - diff = (moment.isMoment(input) || isDate(input) ? - +input : +moment(input)) - (+res); - // Use low-level api, because this fn is low-level api. - res._d.setTime(+res._d + diff); - moment.updateOffset(res, false); - return res; - } else { - return moment(input).local(); - } + function pastFuture (diff, output) { + var format = this._relativeTime[diff > 0 ? 'future' : 'past']; + return isFunction(format) ? format(output) : format.replace(/%s/i, output); } - /************************************ - Locale - ************************************/ + var aliases = {}; + function addUnitAlias (unit, shorthand) { + var lowerCase = unit.toLowerCase(); + aliases[lowerCase] = aliases[lowerCase + 's'] = aliases[shorthand] = unit; + } - extend(Locale.prototype, { + function normalizeUnits(units) { + return typeof units === 'string' ? aliases[units] || aliases[units.toLowerCase()] : undefined; + } - set : function (config) { - var prop, i; - for (i in config) { - prop = config[i]; - if (typeof prop === 'function') { - this[i] = prop; - } else { - this['_' + i] = prop; + function normalizeObjectUnits(inputObject) { + var normalizedInput = {}, + normalizedProp, + prop; + + for (prop in inputObject) { + if (hasOwnProp(inputObject, prop)) { + normalizedProp = normalizeUnits(prop); + if (normalizedProp) { + normalizedInput[normalizedProp] = inputObject[prop]; } } - // Lenient ordinal parsing accepts just a number in addition to - // number + (possibly) stuff coming from _ordinalParseLenient. - this._ordinalParseLenient = new RegExp(this._ordinalParse.source + '|' + /\d{1,2}/.source); - }, + } - _months : 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'), - months : function (m) { - return this._months[m.month()]; - }, + return normalizedInput; + } - _monthsShort : 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'), - monthsShort : function (m) { - return this._monthsShort[m.month()]; - }, + var priorities = {}; - monthsParse : function (monthName, format, strict) { - var i, mom, regex; + function addUnitPriority(unit, priority) { + priorities[unit] = priority; + } - if (!this._monthsParse) { - this._monthsParse = []; - this._longMonthsParse = []; - this._shortMonthsParse = []; - } + function getPrioritizedUnits(unitsObj) { + var units = []; + for (var u in unitsObj) { + units.push({unit: u, priority: priorities[u]}); + } + units.sort(function (a, b) { + return a.priority - b.priority; + }); + return units; + } - for (i = 0; i < 12; i++) { - // make the regex if we don't have it already - mom = moment.utc([2000, i]); - if (strict && !this._longMonthsParse[i]) { - this._longMonthsParse[i] = new RegExp('^' + this.months(mom, '').replace('.', '') + '$', 'i'); - this._shortMonthsParse[i] = new RegExp('^' + this.monthsShort(mom, '').replace('.', '') + '$', 'i'); - } - if (!strict && !this._monthsParse[i]) { - regex = '^' + this.months(mom, '') + '|^' + this.monthsShort(mom, ''); - this._monthsParse[i] = new RegExp(regex.replace('.', ''), 'i'); - } - // test the regex - if (strict && format === 'MMMM' && this._longMonthsParse[i].test(monthName)) { - return i; - } else if (strict && format === 'MMM' && this._shortMonthsParse[i].test(monthName)) { - return i; - } else if (!strict && this._monthsParse[i].test(monthName)) { - return i; - } + function makeGetSet (unit, keepTime) { + return function (value) { + if (value != null) { + get_set__set(this, unit, value); + utils_hooks__hooks.updateOffset(this, keepTime); + return this; + } else { + return get_set__get(this, unit); } - }, + }; + } - _weekdays : 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'), - weekdays : function (m) { - return this._weekdays[m.day()]; - }, + function get_set__get (mom, unit) { + return mom.isValid() ? + mom._d['get' + (mom._isUTC ? 'UTC' : '') + unit]() : NaN; + } - _weekdaysShort : 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'), - weekdaysShort : function (m) { - return this._weekdaysShort[m.day()]; - }, + function get_set__set (mom, unit, value) { + if (mom.isValid()) { + mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](value); + } + } - _weekdaysMin : 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'), - weekdaysMin : function (m) { - return this._weekdaysMin[m.day()]; - }, + // MOMENTS - weekdaysParse : function (weekdayName) { - var i, mom, regex; + function stringGet (units) { + units = normalizeUnits(units); + if (isFunction(this[units])) { + return this[units](); + } + return this; + } - if (!this._weekdaysParse) { - this._weekdaysParse = []; - } - for (i = 0; i < 7; i++) { - // make the regex if we don't have it already - if (!this._weekdaysParse[i]) { - mom = moment([2000, 1]).day(i); - regex = '^' + this.weekdays(mom, '') + '|^' + this.weekdaysShort(mom, '') + '|^' + this.weekdaysMin(mom, ''); - this._weekdaysParse[i] = new RegExp(regex.replace('.', ''), 'i'); - } - // test the regex - if (this._weekdaysParse[i].test(weekdayName)) { - return i; - } + function stringSet (units, value) { + if (typeof units === 'object') { + units = normalizeObjectUnits(units); + var prioritized = getPrioritizedUnits(units); + for (var i = 0; i < prioritized.length; i++) { + this[prioritized[i].unit](units[prioritized[i].unit]); } - }, - - _longDateFormat : { - LTS : 'h:mm:ss A', - LT : 'h:mm A', - L : 'MM/DD/YYYY', - LL : 'MMMM D, YYYY', - LLL : 'MMMM D, YYYY LT', - LLLL : 'dddd, MMMM D, YYYY LT' - }, - longDateFormat : function (key) { - var output = this._longDateFormat[key]; - if (!output && this._longDateFormat[key.toUpperCase()]) { - output = this._longDateFormat[key.toUpperCase()].replace(/MMMM|MM|DD|dddd/g, function (val) { - return val.slice(1); - }); - this._longDateFormat[key] = output; + } else { + units = normalizeUnits(units); + if (isFunction(this[units])) { + return this[units](value); } - return output; - }, - - isPM : function (input) { - // IE8 Quirks Mode & IE7 Standards Mode do not allow accessing strings like arrays - // Using charAt should be more compatible. - return ((input + '').toLowerCase().charAt(0) === 'p'); - }, - - _meridiemParse : /[ap]\.?m?\.?/i, - meridiem : function (hours, minutes, isLower) { - if (hours > 11) { - return isLower ? 'pm' : 'PM'; - } else { - return isLower ? 'am' : 'AM'; - } - }, - - _calendar : { - sameDay : '[Today at] LT', - nextDay : '[Tomorrow at] LT', - nextWeek : 'dddd [at] LT', - lastDay : '[Yesterday at] LT', - lastWeek : '[Last] dddd [at] LT', - sameElse : 'L' - }, - calendar : function (key, mom, now) { - var output = this._calendar[key]; - return typeof output === 'function' ? output.apply(mom, [now]) : output; - }, - - _relativeTime : { - future : 'in %s', - past : '%s ago', - s : 'a few seconds', - m : 'a minute', - mm : '%d minutes', - h : 'an hour', - hh : '%d hours', - d : 'a day', - dd : '%d days', - M : 'a month', - MM : '%d months', - y : 'a year', - yy : '%d years' - }, - - relativeTime : function (number, withoutSuffix, string, isFuture) { - var output = this._relativeTime[string]; - return (typeof output === 'function') ? - output(number, withoutSuffix, string, isFuture) : - output.replace(/%d/i, number); - }, - - pastFuture : function (diff, output) { - var format = this._relativeTime[diff > 0 ? 'future' : 'past']; - return typeof format === 'function' ? format(output) : format.replace(/%s/i, output); - }, + } + return this; + } - ordinal : function (number) { - return this._ordinal.replace('%d', number); - }, - _ordinal : '%d', - _ordinalParse : /\d{1,2}/, + function zeroFill(number, targetLength, forceSign) { + var absNumber = '' + Math.abs(number), + zerosToFill = targetLength - absNumber.length, + sign = number >= 0; + return (sign ? (forceSign ? '+' : '') : '-') + + Math.pow(10, Math.max(0, zerosToFill)).toString().substr(1) + absNumber; + } - preparse : function (string) { - return string; - }, + var formattingTokens = /(\[[^\[]*\])|(\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|YYYYYY|YYYYY|YYYY|YY|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g; - postformat : function (string) { - return string; - }, + var localFormattingTokens = /(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g; - week : function (mom) { - return weekOfYear(mom, this._week.dow, this._week.doy).week; - }, + var formatFunctions = {}; - _week : { - dow : 0, // Sunday is the first day of the week. - doy : 6 // The week that contains Jan 1st is the first week of the year. - }, + var formatTokenFunctions = {}; - _invalidDate: 'Invalid date', - invalidDate: function () { - return this._invalidDate; + // token: 'M' + // padded: ['MM', 2] + // ordinal: 'Mo' + // callback: function () { this.month() + 1 } + function addFormatToken (token, padded, ordinal, callback) { + var func = callback; + if (typeof callback === 'string') { + func = function () { + return this[callback](); + }; } - }); - - /************************************ - Formatting - ************************************/ - + if (token) { + formatTokenFunctions[token] = func; + } + if (padded) { + formatTokenFunctions[padded[0]] = function () { + return zeroFill(func.apply(this, arguments), padded[1], padded[2]); + }; + } + if (ordinal) { + formatTokenFunctions[ordinal] = function () { + return this.localeData().ordinal(func.apply(this, arguments), token); + }; + } + } function removeFormattingTokens(input) { if (input.match(/\[[\s\S]/)) { @@ -1025,7 +631,7 @@ } return function (mom) { - var output = ''; + var output = '', i; for (i = 0; i < length; i++) { output += array[i] instanceof Function ? array[i].call(mom, format) : array[i]; } @@ -1040,10 +646,7 @@ } format = expandFormat(format, m.localeData()); - - if (!formatFunctions[format]) { - formatFunctions[format] = makeFormatFunction(format); - } + formatFunctions[format] = formatFunctions[format] || makeFormatFunction(format); return formatFunctions[format](m); } @@ -1065,984 +668,1187 @@ return format; } + var match1 = /\d/; // 0 - 9 + var match2 = /\d\d/; // 00 - 99 + var match3 = /\d{3}/; // 000 - 999 + var match4 = /\d{4}/; // 0000 - 9999 + var match6 = /[+-]?\d{6}/; // -999999 - 999999 + var match1to2 = /\d\d?/; // 0 - 99 + var match3to4 = /\d\d\d\d?/; // 999 - 9999 + var match5to6 = /\d\d\d\d\d\d?/; // 99999 - 999999 + var match1to3 = /\d{1,3}/; // 0 - 999 + var match1to4 = /\d{1,4}/; // 0 - 9999 + var match1to6 = /[+-]?\d{1,6}/; // -999999 - 999999 - /************************************ - Parsing - ************************************/ - - - // get the regex to find the next token - function getParseRegexForToken(token, config) { - var a, strict = config._strict; - switch (token) { - case 'Q': - return parseTokenOneDigit; - case 'DDDD': - return parseTokenThreeDigits; - case 'YYYY': - case 'GGGG': - case 'gggg': - return strict ? parseTokenFourDigits : parseTokenOneToFourDigits; - case 'Y': - case 'G': - case 'g': - return parseTokenSignedNumber; - case 'YYYYYY': - case 'YYYYY': - case 'GGGGG': - case 'ggggg': - return strict ? parseTokenSixDigits : parseTokenOneToSixDigits; - case 'S': - if (strict) { - return parseTokenOneDigit; - } - /* falls through */ - case 'SS': - if (strict) { - return parseTokenTwoDigits; - } - /* falls through */ - case 'SSS': - if (strict) { - return parseTokenThreeDigits; - } - /* falls through */ - case 'DDD': - return parseTokenOneToThreeDigits; - case 'MMM': - case 'MMMM': - case 'dd': - case 'ddd': - case 'dddd': - return parseTokenWord; - case 'a': - case 'A': - return config._locale._meridiemParse; - case 'x': - return parseTokenOffsetMs; - case 'X': - return parseTokenTimestampMs; - case 'Z': - case 'ZZ': - return parseTokenTimezone; - case 'T': - return parseTokenT; - case 'SSSS': - return parseTokenDigits; - case 'MM': - case 'DD': - case 'YY': - case 'GG': - case 'gg': - case 'HH': - case 'hh': - case 'mm': - case 'ss': - case 'ww': - case 'WW': - return strict ? parseTokenTwoDigits : parseTokenOneOrTwoDigits; - case 'M': - case 'D': - case 'd': - case 'H': - case 'h': - case 'm': - case 's': - case 'w': - case 'W': - case 'e': - case 'E': - return parseTokenOneOrTwoDigits; - case 'Do': - return strict ? config._locale._ordinalParse : config._locale._ordinalParseLenient; - default : - a = new RegExp(regexpEscape(unescapeFormat(token.replace('\\', '')), 'i')); - return a; + var matchUnsigned = /\d+/; // 0 - inf + var matchSigned = /[+-]?\d+/; // -inf - inf + + var matchOffset = /Z|[+-]\d\d:?\d\d/gi; // +00:00 -00:00 +0000 -0000 or Z + var matchShortOffset = /Z|[+-]\d\d(?::?\d\d)?/gi; // +00 -00 +00:00 -00:00 +0000 -0000 or Z + + var matchTimestamp = /[+-]?\d+(\.\d{1,3})?/; // 123456789 123456789.123 + + // any word (or two) characters or numbers including two/three word month in arabic. + // includes scottish gaelic two word and hyphenated months + var matchWord = /[0-9]*['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+|[\u0600-\u06FF\/]+(\s*?[\u0600-\u06FF]+){1,2}/i; + + + var regexes = {}; + + function addRegexToken (token, regex, strictRegex) { + regexes[token] = isFunction(regex) ? regex : function (isStrict, localeData) { + return (isStrict && strictRegex) ? strictRegex : regex; + }; + } + + function getParseRegexForToken (token, config) { + if (!hasOwnProp(regexes, token)) { + return new RegExp(unescapeFormat(token)); } + + return regexes[token](config._strict, config._locale); } - function timezoneMinutesFromString(string) { - string = string || ''; - var possibleTzMatches = (string.match(parseTokenTimezone) || []), - tzChunk = possibleTzMatches[possibleTzMatches.length - 1] || [], - parts = (tzChunk + '').match(parseTimezoneChunker) || ['-', 0, 0], - minutes = +(parts[1] * 60) + toInt(parts[2]); + // Code from http://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript + function unescapeFormat(s) { + return regexEscape(s.replace('\\', '').replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g, function (matched, p1, p2, p3, p4) { + return p1 || p2 || p3 || p4; + })); + } - return parts[0] === '+' ? -minutes : minutes; + function regexEscape(s) { + return s.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&'); } - // function to convert string input to date - function addTimeToArrayFromToken(token, input, config) { - var a, datePartArray = config._a; - - switch (token) { - // QUARTER - case 'Q': - if (input != null) { - datePartArray[MONTH] = (toInt(input) - 1) * 3; - } - break; - // MONTH - case 'M' : // fall through to MM - case 'MM' : - if (input != null) { - datePartArray[MONTH] = toInt(input) - 1; - } - break; - case 'MMM' : // fall through to MMMM - case 'MMMM' : - a = config._locale.monthsParse(input, token, config._strict); - // if we didn't find a month name, mark the date as invalid. - if (a != null) { - datePartArray[MONTH] = a; - } else { - config._pf.invalidMonth = input; - } - break; - // DAY OF MONTH - case 'D' : // fall through to DD - case 'DD' : - if (input != null) { - datePartArray[DATE] = toInt(input); - } - break; - case 'Do' : - if (input != null) { - datePartArray[DATE] = toInt(parseInt( - input.match(/\d{1,2}/)[0], 10)); - } - break; - // DAY OF YEAR - case 'DDD' : // fall through to DDDD - case 'DDDD' : - if (input != null) { - config._dayOfYear = toInt(input); - } - - break; - // YEAR - case 'YY' : - datePartArray[YEAR] = moment.parseTwoDigitYear(input); - break; - case 'YYYY' : - case 'YYYYY' : - case 'YYYYYY' : - datePartArray[YEAR] = toInt(input); - break; - // AM / PM - case 'a' : // fall through to A - case 'A' : - config._isPm = config._locale.isPM(input); - break; - // HOUR - case 'h' : // fall through to hh - case 'hh' : - config._pf.bigHour = true; - /* falls through */ - case 'H' : // fall through to HH - case 'HH' : - datePartArray[HOUR] = toInt(input); - break; - // MINUTE - case 'm' : // fall through to mm - case 'mm' : - datePartArray[MINUTE] = toInt(input); - break; - // SECOND - case 's' : // fall through to ss - case 'ss' : - datePartArray[SECOND] = toInt(input); - break; - // MILLISECOND - case 'S' : - case 'SS' : - case 'SSS' : - case 'SSSS' : - datePartArray[MILLISECOND] = toInt(('0.' + input) * 1000); - break; - // UNIX OFFSET (MILLISECONDS) - case 'x': - config._d = new Date(toInt(input)); - break; - // UNIX TIMESTAMP WITH MS - case 'X': - config._d = new Date(parseFloat(input) * 1000); - break; - // TIMEZONE - case 'Z' : // fall through to ZZ - case 'ZZ' : - config._useUTC = true; - config._tzm = timezoneMinutesFromString(input); - break; - // WEEKDAY - human - case 'dd': - case 'ddd': - case 'dddd': - a = config._locale.weekdaysParse(input); - // if we didn't get a weekday name, mark the date as invalid - if (a != null) { - config._w = config._w || {}; - config._w['d'] = a; - } else { - config._pf.invalidWeekday = input; - } - break; - // WEEK, WEEK DAY - numeric - case 'w': - case 'ww': - case 'W': - case 'WW': - case 'd': - case 'e': - case 'E': - token = token.substr(0, 1); - /* falls through */ - case 'gggg': - case 'GGGG': - case 'GGGGG': - token = token.substr(0, 2); - if (input) { - config._w = config._w || {}; - config._w[token] = toInt(input); - } - break; - case 'gg': - case 'GG': - config._w = config._w || {}; - config._w[token] = moment.parseTwoDigitYear(input); + var tokens = {}; + + function addParseToken (token, callback) { + var i, func = callback; + if (typeof token === 'string') { + token = [token]; + } + if (typeof callback === 'number') { + func = function (input, array) { + array[callback] = toInt(input); + }; + } + for (i = 0; i < token.length; i++) { + tokens[token[i]] = func; } } - function dayOfYearFromWeekInfo(config) { - var w, weekYear, week, weekday, dow, doy, temp; + function addWeekParseToken (token, callback) { + addParseToken(token, function (input, array, config, token) { + config._w = config._w || {}; + callback(input, config._w, config, token); + }); + } - w = config._w; - if (w.GG != null || w.W != null || w.E != null) { - dow = 1; - doy = 4; + function addTimeToArrayFromToken(token, input, config) { + if (input != null && hasOwnProp(tokens, token)) { + tokens[token](input, config._a, config, token); + } + } - // TODO: We need to take the current isoWeekYear, but that depends on - // how we interpret now (local, utc, fixed offset). So create - // a now version of current config (take local/utc/offset flags, and - // create now). - weekYear = dfl(w.GG, config._a[YEAR], weekOfYear(moment(), 1, 4).year); - week = dfl(w.W, 1); - weekday = dfl(w.E, 1); - } else { - dow = config._locale._week.dow; - doy = config._locale._week.doy; + var YEAR = 0; + var MONTH = 1; + var DATE = 2; + var HOUR = 3; + var MINUTE = 4; + var SECOND = 5; + var MILLISECOND = 6; + var WEEK = 7; + var WEEKDAY = 8; - weekYear = dfl(w.gg, config._a[YEAR], weekOfYear(moment(), dow, doy).year); - week = dfl(w.w, 1); + var indexOf; - if (w.d != null) { - // weekday -- low day numbers are considered next week - weekday = w.d; - if (weekday < dow) { - ++week; + if (Array.prototype.indexOf) { + indexOf = Array.prototype.indexOf; + } else { + indexOf = function (o) { + // I know + var i; + for (i = 0; i < this.length; ++i) { + if (this[i] === o) { + return i; } - } else if (w.e != null) { - // local weekday -- counting starts from begining of week - weekday = w.e + dow; - } else { - // default to begining of week - weekday = dow; } - } - temp = dayOfYearFromWeeks(weekYear, week, weekday, doy, dow); + return -1; + }; + } - config._a[YEAR] = temp.year; - config._dayOfYear = temp.dayOfYear; + function daysInMonth(year, month) { + return new Date(Date.UTC(year, month + 1, 0)).getUTCDate(); } - // convert an array to a date. - // the array should mirror the parameters below - // note: all values past the year are optional and will default to the lowest possible value. - // [year, month, day , hour, minute, second, millisecond] - function dateFromConfig(config) { - var i, date, input = [], currentDate, yearToUse; + // FORMATTING - if (config._d) { - return; - } + addFormatToken('M', ['MM', 2], 'Mo', function () { + return this.month() + 1; + }); - currentDate = currentDateArray(config); + addFormatToken('MMM', 0, 0, function (format) { + return this.localeData().monthsShort(this, format); + }); - //compute day of the year from weeks and weekdays - if (config._w && config._a[DATE] == null && config._a[MONTH] == null) { - dayOfYearFromWeekInfo(config); - } + addFormatToken('MMMM', 0, 0, function (format) { + return this.localeData().months(this, format); + }); - //if the day of the year is set, figure out what it is - if (config._dayOfYear) { - yearToUse = dfl(config._a[YEAR], currentDate[YEAR]); + // ALIASES - if (config._dayOfYear > daysInYear(yearToUse)) { - config._pf._overflowDayOfYear = true; - } + addUnitAlias('month', 'M'); - date = makeUTCDate(yearToUse, 0, config._dayOfYear); - config._a[MONTH] = date.getUTCMonth(); - config._a[DATE] = date.getUTCDate(); - } + // PRIORITY - // Default to current date. - // * if no year, month, day of month are given, default to today - // * if day of month is given, default month and year - // * if month is given, default only year - // * if year is given, don't default anything - for (i = 0; i < 3 && config._a[i] == null; ++i) { - config._a[i] = input[i] = currentDate[i]; + addUnitPriority('month', 8); + + // PARSING + + addRegexToken('M', match1to2); + addRegexToken('MM', match1to2, match2); + addRegexToken('MMM', function (isStrict, locale) { + return locale.monthsShortRegex(isStrict); + }); + addRegexToken('MMMM', function (isStrict, locale) { + return locale.monthsRegex(isStrict); + }); + + addParseToken(['M', 'MM'], function (input, array) { + array[MONTH] = toInt(input) - 1; + }); + + addParseToken(['MMM', 'MMMM'], function (input, array, config, token) { + var month = config._locale.monthsParse(input, token, config._strict); + // if we didn't find a month name, mark the date as invalid. + if (month != null) { + array[MONTH] = month; + } else { + getParsingFlags(config).invalidMonth = input; } + }); - // Zero out whatever was not defaulted, including time - for (; i < 7; i++) { - config._a[i] = input[i] = (config._a[i] == null) ? (i === 2 ? 1 : 0) : config._a[i]; + // LOCALES + + var MONTHS_IN_FORMAT = /D[oD]?(\[[^\[\]]*\]|\s+)+MMMM?/; + var defaultLocaleMonths = 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'); + function localeMonths (m, format) { + if (!m) { + return this._months; } + return isArray(this._months) ? this._months[m.month()] : + this._months[(this._months.isFormat || MONTHS_IN_FORMAT).test(format) ? 'format' : 'standalone'][m.month()]; + } - // Check for 24:00:00.000 - if (config._a[HOUR] === 24 && - config._a[MINUTE] === 0 && - config._a[SECOND] === 0 && - config._a[MILLISECOND] === 0) { - config._nextDay = true; - config._a[HOUR] = 0; + var defaultLocaleMonthsShort = 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'); + function localeMonthsShort (m, format) { + if (!m) { + return this._monthsShort; } + return isArray(this._monthsShort) ? this._monthsShort[m.month()] : + this._monthsShort[MONTHS_IN_FORMAT.test(format) ? 'format' : 'standalone'][m.month()]; + } - config._d = (config._useUTC ? makeUTCDate : makeDate).apply(null, input); - // Apply timezone offset from input. The actual zone can be changed - // with parseZone. - if (config._tzm != null) { - config._d.setUTCMinutes(config._d.getUTCMinutes() + config._tzm); + function units_month__handleStrictParse(monthName, format, strict) { + var i, ii, mom, llc = monthName.toLocaleLowerCase(); + if (!this._monthsParse) { + // this is not used + this._monthsParse = []; + this._longMonthsParse = []; + this._shortMonthsParse = []; + for (i = 0; i < 12; ++i) { + mom = create_utc__createUTC([2000, i]); + this._shortMonthsParse[i] = this.monthsShort(mom, '').toLocaleLowerCase(); + this._longMonthsParse[i] = this.months(mom, '').toLocaleLowerCase(); + } } - if (config._nextDay) { - config._a[HOUR] = 24; + if (strict) { + if (format === 'MMM') { + ii = indexOf.call(this._shortMonthsParse, llc); + return ii !== -1 ? ii : null; + } else { + ii = indexOf.call(this._longMonthsParse, llc); + return ii !== -1 ? ii : null; + } + } else { + if (format === 'MMM') { + ii = indexOf.call(this._shortMonthsParse, llc); + if (ii !== -1) { + return ii; + } + ii = indexOf.call(this._longMonthsParse, llc); + return ii !== -1 ? ii : null; + } else { + ii = indexOf.call(this._longMonthsParse, llc); + if (ii !== -1) { + return ii; + } + ii = indexOf.call(this._shortMonthsParse, llc); + return ii !== -1 ? ii : null; + } } } - function dateFromObject(config) { - var normalizedInput; + function localeMonthsParse (monthName, format, strict) { + var i, mom, regex; - if (config._d) { - return; + if (this._monthsParseExact) { + return units_month__handleStrictParse.call(this, monthName, format, strict); } - normalizedInput = normalizeObjectUnits(config._i); - config._a = [ - normalizedInput.year, - normalizedInput.month, - normalizedInput.day || normalizedInput.date, - normalizedInput.hour, - normalizedInput.minute, - normalizedInput.second, - normalizedInput.millisecond - ]; + if (!this._monthsParse) { + this._monthsParse = []; + this._longMonthsParse = []; + this._shortMonthsParse = []; + } - dateFromConfig(config); + // TODO: add sorting + // Sorting makes sure if one month (or abbr) is a prefix of another + // see sorting in computeMonthsParse + for (i = 0; i < 12; i++) { + // make the regex if we don't have it already + mom = create_utc__createUTC([2000, i]); + if (strict && !this._longMonthsParse[i]) { + this._longMonthsParse[i] = new RegExp('^' + this.months(mom, '').replace('.', '') + '$', 'i'); + this._shortMonthsParse[i] = new RegExp('^' + this.monthsShort(mom, '').replace('.', '') + '$', 'i'); + } + if (!strict && !this._monthsParse[i]) { + regex = '^' + this.months(mom, '') + '|^' + this.monthsShort(mom, ''); + this._monthsParse[i] = new RegExp(regex.replace('.', ''), 'i'); + } + // test the regex + if (strict && format === 'MMMM' && this._longMonthsParse[i].test(monthName)) { + return i; + } else if (strict && format === 'MMM' && this._shortMonthsParse[i].test(monthName)) { + return i; + } else if (!strict && this._monthsParse[i].test(monthName)) { + return i; + } + } } - function currentDateArray(config) { - var now = new Date(); - if (config._useUTC) { - return [ - now.getUTCFullYear(), - now.getUTCMonth(), - now.getUTCDate() - ]; - } else { - return [now.getFullYear(), now.getMonth(), now.getDate()]; + // MOMENTS + + function setMonth (mom, value) { + var dayOfMonth; + + if (!mom.isValid()) { + // No op + return mom; } - } - // date from string and format string - function makeDateFromStringAndFormat(config) { - if (config._f === moment.ISO_8601) { - parseISO(config); - return; + if (typeof value === 'string') { + if (/^\d+$/.test(value)) { + value = toInt(value); + } else { + value = mom.localeData().monthsParse(value); + // TODO: Another silent failure? + if (typeof value !== 'number') { + return mom; + } + } } - config._a = []; - config._pf.empty = true; + dayOfMonth = Math.min(mom.date(), daysInMonth(mom.year(), value)); + mom._d['set' + (mom._isUTC ? 'UTC' : '') + 'Month'](value, dayOfMonth); + return mom; + } - // This array is used to make a Date, either with `new Date` or `Date.UTC` - var string = '' + config._i, - i, parsedInput, tokens, token, skipped, - stringLength = string.length, - totalParsedInputLength = 0; + function getSetMonth (value) { + if (value != null) { + setMonth(this, value); + utils_hooks__hooks.updateOffset(this, true); + return this; + } else { + return get_set__get(this, 'Month'); + } + } - tokens = expandFormat(config._f, config._locale).match(formattingTokens) || []; + function getDaysInMonth () { + return daysInMonth(this.year(), this.month()); + } - for (i = 0; i < tokens.length; i++) { - token = tokens[i]; - parsedInput = (string.match(getParseRegexForToken(token, config)) || [])[0]; - if (parsedInput) { - skipped = string.substr(0, string.indexOf(parsedInput)); - if (skipped.length > 0) { - config._pf.unusedInput.push(skipped); - } - string = string.slice(string.indexOf(parsedInput) + parsedInput.length); - totalParsedInputLength += parsedInput.length; + var defaultMonthsShortRegex = matchWord; + function monthsShortRegex (isStrict) { + if (this._monthsParseExact) { + if (!hasOwnProp(this, '_monthsRegex')) { + computeMonthsParse.call(this); } - // don't parse if it's not a known token - if (formatTokenFunctions[token]) { - if (parsedInput) { - config._pf.empty = false; - } - else { - config._pf.unusedTokens.push(token); - } - addTimeToArrayFromToken(token, parsedInput, config); + if (isStrict) { + return this._monthsShortStrictRegex; + } else { + return this._monthsShortRegex; } - else if (config._strict && !parsedInput) { - config._pf.unusedTokens.push(token); + } else { + if (!hasOwnProp(this, '_monthsShortRegex')) { + this._monthsShortRegex = defaultMonthsShortRegex; } + return this._monthsShortStrictRegex && isStrict ? + this._monthsShortStrictRegex : this._monthsShortRegex; } + } - // add remaining unparsed input length to the string - config._pf.charsLeftOver = stringLength - totalParsedInputLength; - if (string.length > 0) { - config._pf.unusedInput.push(string); + var defaultMonthsRegex = matchWord; + function monthsRegex (isStrict) { + if (this._monthsParseExact) { + if (!hasOwnProp(this, '_monthsRegex')) { + computeMonthsParse.call(this); + } + if (isStrict) { + return this._monthsStrictRegex; + } else { + return this._monthsRegex; + } + } else { + if (!hasOwnProp(this, '_monthsRegex')) { + this._monthsRegex = defaultMonthsRegex; + } + return this._monthsStrictRegex && isStrict ? + this._monthsStrictRegex : this._monthsRegex; } + } - // clear _12h flag if hour is <= 12 - if (config._pf.bigHour === true && config._a[HOUR] <= 12) { - config._pf.bigHour = undefined; + function computeMonthsParse () { + function cmpLenRev(a, b) { + return b.length - a.length; } - // handle am pm - if (config._isPm && config._a[HOUR] < 12) { - config._a[HOUR] += 12; + + var shortPieces = [], longPieces = [], mixedPieces = [], + i, mom; + for (i = 0; i < 12; i++) { + // make the regex if we don't have it already + mom = create_utc__createUTC([2000, i]); + shortPieces.push(this.monthsShort(mom, '')); + longPieces.push(this.months(mom, '')); + mixedPieces.push(this.months(mom, '')); + mixedPieces.push(this.monthsShort(mom, '')); } - // if is 12 am, change hours to 0 - if (config._isPm === false && config._a[HOUR] === 12) { - config._a[HOUR] = 0; + // Sorting makes sure if one month (or abbr) is a prefix of another it + // will match the longer piece. + shortPieces.sort(cmpLenRev); + longPieces.sort(cmpLenRev); + mixedPieces.sort(cmpLenRev); + for (i = 0; i < 12; i++) { + shortPieces[i] = regexEscape(shortPieces[i]); + longPieces[i] = regexEscape(longPieces[i]); + } + for (i = 0; i < 24; i++) { + mixedPieces[i] = regexEscape(mixedPieces[i]); } - dateFromConfig(config); - checkOverflow(config); - } - function unescapeFormat(s) { - return s.replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g, function (matched, p1, p2, p3, p4) { - return p1 || p2 || p3 || p4; - }); + this._monthsRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i'); + this._monthsShortRegex = this._monthsRegex; + this._monthsStrictRegex = new RegExp('^(' + longPieces.join('|') + ')', 'i'); + this._monthsShortStrictRegex = new RegExp('^(' + shortPieces.join('|') + ')', 'i'); } - // Code from http://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript - function regexpEscape(s) { - return s.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&'); - } + // FORMATTING - // date from string and array of format strings - function makeDateFromStringAndArray(config) { - var tempConfig, - bestMoment, + addFormatToken('Y', 0, 0, function () { + var y = this.year(); + return y <= 9999 ? '' + y : '+' + y; + }); - scoreToBeat, - i, - currentScore; + addFormatToken(0, ['YY', 2], 0, function () { + return this.year() % 100; + }); - if (config._f.length === 0) { - config._pf.invalidFormat = true; - config._d = new Date(NaN); - return; - } + addFormatToken(0, ['YYYY', 4], 0, 'year'); + addFormatToken(0, ['YYYYY', 5], 0, 'year'); + addFormatToken(0, ['YYYYYY', 6, true], 0, 'year'); - for (i = 0; i < config._f.length; i++) { - currentScore = 0; - tempConfig = copyConfig({}, config); - if (config._useUTC != null) { - tempConfig._useUTC = config._useUTC; - } - tempConfig._pf = defaultParsingFlags(); - tempConfig._f = config._f[i]; - makeDateFromStringAndFormat(tempConfig); + // ALIASES - if (!isValid(tempConfig)) { - continue; - } + addUnitAlias('year', 'y'); - // if there is any input that was not parsed add a penalty for that format - currentScore += tempConfig._pf.charsLeftOver; + // PRIORITIES - //or tokens - currentScore += tempConfig._pf.unusedTokens.length * 10; + addUnitPriority('year', 1); - tempConfig._pf.score = currentScore; + // PARSING - if (scoreToBeat == null || currentScore < scoreToBeat) { - scoreToBeat = currentScore; - bestMoment = tempConfig; - } - } + addRegexToken('Y', matchSigned); + addRegexToken('YY', match1to2, match2); + addRegexToken('YYYY', match1to4, match4); + addRegexToken('YYYYY', match1to6, match6); + addRegexToken('YYYYYY', match1to6, match6); - extend(config, bestMoment || tempConfig); - } + addParseToken(['YYYYY', 'YYYYYY'], YEAR); + addParseToken('YYYY', function (input, array) { + array[YEAR] = input.length === 2 ? utils_hooks__hooks.parseTwoDigitYear(input) : toInt(input); + }); + addParseToken('YY', function (input, array) { + array[YEAR] = utils_hooks__hooks.parseTwoDigitYear(input); + }); + addParseToken('Y', function (input, array) { + array[YEAR] = parseInt(input, 10); + }); - // date from iso format - function parseISO(config) { - var i, l, - string = config._i, - match = isoRegex.exec(string); + // HELPERS - if (match) { - config._pf.iso = true; - for (i = 0, l = isoDates.length; i < l; i++) { - if (isoDates[i][1].exec(string)) { - // match[5] should be 'T' or undefined - config._f = isoDates[i][0] + (match[6] || ' '); - break; - } - } - for (i = 0, l = isoTimes.length; i < l; i++) { - if (isoTimes[i][1].exec(string)) { - config._f += isoTimes[i][0]; - break; - } - } - if (string.match(parseTokenTimezone)) { - config._f += 'Z'; - } - makeDateFromStringAndFormat(config); - } else { - config._isValid = false; - } + function daysInYear(year) { + return isLeapYear(year) ? 366 : 365; } - // date from iso format or fallback - function makeDateFromString(config) { - parseISO(config); - if (config._isValid === false) { - delete config._isValid; - moment.createFromInputFallback(config); - } + function isLeapYear(year) { + return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0; } - function map(arr, fn) { - var res = [], i; - for (i = 0; i < arr.length; ++i) { - res.push(fn(arr[i], i)); - } - return res; - } + // HOOKS - function makeDateFromInput(config) { - var input = config._i, matched; - if (input === undefined) { - config._d = new Date(); - } else if (isDate(input)) { - config._d = new Date(+input); - } else if ((matched = aspNetJsonRegex.exec(input)) !== null) { - config._d = new Date(+matched[1]); - } else if (typeof input === 'string') { - makeDateFromString(config); - } else if (isArray(input)) { - config._a = map(input.slice(0), function (obj) { - return parseInt(obj, 10); - }); - dateFromConfig(config); - } else if (typeof(input) === 'object') { - dateFromObject(config); - } else if (typeof(input) === 'number') { - // from milliseconds - config._d = new Date(input); - } else { - moment.createFromInputFallback(config); - } + utils_hooks__hooks.parseTwoDigitYear = function (input) { + return toInt(input) + (toInt(input) > 68 ? 1900 : 2000); + }; + + // MOMENTS + + var getSetYear = makeGetSet('FullYear', true); + + function getIsLeapYear () { + return isLeapYear(this.year()); } - function makeDate(y, m, d, h, M, s, ms) { + function createDate (y, m, d, h, M, s, ms) { //can't just apply() to create a date: //http://stackoverflow.com/questions/181348/instantiating-a-javascript-object-by-calling-prototype-constructor-apply var date = new Date(y, m, d, h, M, s, ms); - //the date constructor doesn't accept years < 1970 - if (y < 1970) { + //the date constructor remaps years 0-99 to 1900-1999 + if (y < 100 && y >= 0 && isFinite(date.getFullYear())) { date.setFullYear(y); } return date; } - function makeUTCDate(y) { + function createUTCDate (y) { var date = new Date(Date.UTC.apply(null, arguments)); - if (y < 1970) { + + //the Date.UTC function remaps years 0-99 to 1900-1999 + if (y < 100 && y >= 0 && isFinite(date.getUTCFullYear())) { date.setUTCFullYear(y); } return date; } - function parseWeekday(input, locale) { - if (typeof input === 'string') { - if (!isNaN(input)) { - input = parseInt(input, 10); - } - else { - input = locale.weekdaysParse(input); - if (typeof input !== 'number') { - return null; - } - } + // start-of-first-week - start-of-year + function firstWeekOffset(year, dow, doy) { + var // first-week day -- which january is always in the first week (4 for iso, 1 for other) + fwd = 7 + dow - doy, + // first-week day local weekday -- which local weekday is fwd + fwdlw = (7 + createUTCDate(year, 0, fwd).getUTCDay() - dow) % 7; + + return -fwdlw + fwd - 1; + } + + //http://en.wikipedia.org/wiki/ISO_week_date#Calculating_a_date_given_the_year.2C_week_number_and_weekday + function dayOfYearFromWeeks(year, week, weekday, dow, doy) { + var localWeekday = (7 + weekday - dow) % 7, + weekOffset = firstWeekOffset(year, dow, doy), + dayOfYear = 1 + 7 * (week - 1) + localWeekday + weekOffset, + resYear, resDayOfYear; + + if (dayOfYear <= 0) { + resYear = year - 1; + resDayOfYear = daysInYear(resYear) + dayOfYear; + } else if (dayOfYear > daysInYear(year)) { + resYear = year + 1; + resDayOfYear = dayOfYear - daysInYear(year); + } else { + resYear = year; + resDayOfYear = dayOfYear; } - return input; + + return { + year: resYear, + dayOfYear: resDayOfYear + }; } - /************************************ - Relative Time - ************************************/ + function weekOfYear(mom, dow, doy) { + var weekOffset = firstWeekOffset(mom.year(), dow, doy), + week = Math.floor((mom.dayOfYear() - weekOffset - 1) / 7) + 1, + resWeek, resYear; + + if (week < 1) { + resYear = mom.year() - 1; + resWeek = week + weeksInYear(resYear, dow, doy); + } else if (week > weeksInYear(mom.year(), dow, doy)) { + resWeek = week - weeksInYear(mom.year(), dow, doy); + resYear = mom.year() + 1; + } else { + resYear = mom.year(); + resWeek = week; + } + return { + week: resWeek, + year: resYear + }; + } - // helper function for moment.fn.from, moment.fn.fromNow, and moment.duration.fn.humanize - function substituteTimeAgo(string, number, withoutSuffix, isFuture, locale) { - return locale.relativeTime(number || 1, !!withoutSuffix, string, isFuture); + function weeksInYear(year, dow, doy) { + var weekOffset = firstWeekOffset(year, dow, doy), + weekOffsetNext = firstWeekOffset(year + 1, dow, doy); + return (daysInYear(year) - weekOffset + weekOffsetNext) / 7; } - function relativeTime(posNegDuration, withoutSuffix, locale) { - var duration = moment.duration(posNegDuration).abs(), - seconds = round(duration.as('s')), - minutes = round(duration.as('m')), - hours = round(duration.as('h')), - days = round(duration.as('d')), - months = round(duration.as('M')), - years = round(duration.as('y')), + // FORMATTING - args = seconds < relativeTimeThresholds.s && ['s', seconds] || - minutes === 1 && ['m'] || - minutes < relativeTimeThresholds.m && ['mm', minutes] || - hours === 1 && ['h'] || - hours < relativeTimeThresholds.h && ['hh', hours] || - days === 1 && ['d'] || - days < relativeTimeThresholds.d && ['dd', days] || - months === 1 && ['M'] || - months < relativeTimeThresholds.M && ['MM', months] || - years === 1 && ['y'] || ['yy', years]; + addFormatToken('w', ['ww', 2], 'wo', 'week'); + addFormatToken('W', ['WW', 2], 'Wo', 'isoWeek'); - args[2] = withoutSuffix; - args[3] = +posNegDuration > 0; - args[4] = locale; - return substituteTimeAgo.apply({}, args); - } + // ALIASES + addUnitAlias('week', 'w'); + addUnitAlias('isoWeek', 'W'); - /************************************ - Week of Year - ************************************/ + // PRIORITIES + addUnitPriority('week', 5); + addUnitPriority('isoWeek', 5); - // firstDayOfWeek 0 = sun, 6 = sat - // the day of the week that starts the week - // (usually sunday or monday) - // firstDayOfWeekOfYear 0 = sun, 6 = sat - // the first week is the week that contains the first - // of this day of the week - // (eg. ISO weeks use thursday (4)) - function weekOfYear(mom, firstDayOfWeek, firstDayOfWeekOfYear) { - var end = firstDayOfWeekOfYear - firstDayOfWeek, - daysToDayOfWeek = firstDayOfWeekOfYear - mom.day(), - adjustedMoment; + // PARSING + addRegexToken('w', match1to2); + addRegexToken('ww', match1to2, match2); + addRegexToken('W', match1to2); + addRegexToken('WW', match1to2, match2); - if (daysToDayOfWeek > end) { - daysToDayOfWeek -= 7; - } + addWeekParseToken(['w', 'ww', 'W', 'WW'], function (input, week, config, token) { + week[token.substr(0, 1)] = toInt(input); + }); - if (daysToDayOfWeek < end - 7) { - daysToDayOfWeek += 7; - } + // HELPERS - adjustedMoment = moment(mom).add(daysToDayOfWeek, 'd'); - return { - week: Math.ceil(adjustedMoment.dayOfYear() / 7), - year: adjustedMoment.year() - }; + // LOCALES + + function localeWeek (mom) { + return weekOfYear(mom, this._week.dow, this._week.doy).week; } - //http://en.wikipedia.org/wiki/ISO_week_date#Calculating_a_date_given_the_year.2C_week_number_and_weekday - function dayOfYearFromWeeks(year, week, weekday, firstDayOfWeekOfYear, firstDayOfWeek) { - var d = makeUTCDate(year, 0, 1).getUTCDay(), daysToAdd, dayOfYear; + var defaultLocaleWeek = { + dow : 0, // Sunday is the first day of the week. + doy : 6 // The week that contains Jan 1st is the first week of the year. + }; - d = d === 0 ? 7 : d; - weekday = weekday != null ? weekday : firstDayOfWeek; - daysToAdd = firstDayOfWeek - d + (d > firstDayOfWeekOfYear ? 7 : 0) - (d < firstDayOfWeek ? 7 : 0); - dayOfYear = 7 * (week - 1) + (weekday - firstDayOfWeek) + daysToAdd + 1; + function localeFirstDayOfWeek () { + return this._week.dow; + } - return { - year: dayOfYear > 0 ? year : year - 1, - dayOfYear: dayOfYear > 0 ? dayOfYear : daysInYear(year - 1) + dayOfYear - }; + function localeFirstDayOfYear () { + return this._week.doy; } - /************************************ - Top Level Functions - ************************************/ + // MOMENTS - function makeMoment(config) { - var input = config._i, - format = config._f, - res; + function getSetWeek (input) { + var week = this.localeData().week(this); + return input == null ? week : this.add((input - week) * 7, 'd'); + } - config._locale = config._locale || moment.localeData(config._l); + function getSetISOWeek (input) { + var week = weekOfYear(this, 1, 4).week; + return input == null ? week : this.add((input - week) * 7, 'd'); + } - if (input === null || (format === undefined && input === '')) { - return moment.invalid({nullInput: true}); - } + // FORMATTING - if (typeof input === 'string') { - config._i = input = config._locale.preparse(input); - } + addFormatToken('d', 0, 'do', 'day'); - if (moment.isMoment(input)) { - return new Moment(input, true); - } else if (format) { - if (isArray(format)) { - makeDateFromStringAndArray(config); - } else { - makeDateFromStringAndFormat(config); - } - } else { - makeDateFromInput(config); - } + addFormatToken('dd', 0, 0, function (format) { + return this.localeData().weekdaysMin(this, format); + }); - res = new Moment(config); - if (res._nextDay) { - // Adding is smart enough around DST - res.add(1, 'd'); - res._nextDay = undefined; - } + addFormatToken('ddd', 0, 0, function (format) { + return this.localeData().weekdaysShort(this, format); + }); - return res; - } + addFormatToken('dddd', 0, 0, function (format) { + return this.localeData().weekdays(this, format); + }); - moment = function (input, format, locale, strict) { - var c; + addFormatToken('e', 0, 0, 'weekday'); + addFormatToken('E', 0, 0, 'isoWeekday'); - if (typeof(locale) === 'boolean') { - strict = locale; - locale = undefined; + // ALIASES + + addUnitAlias('day', 'd'); + addUnitAlias('weekday', 'e'); + addUnitAlias('isoWeekday', 'E'); + + // PRIORITY + addUnitPriority('day', 11); + addUnitPriority('weekday', 11); + addUnitPriority('isoWeekday', 11); + + // PARSING + + addRegexToken('d', match1to2); + addRegexToken('e', match1to2); + addRegexToken('E', match1to2); + addRegexToken('dd', function (isStrict, locale) { + return locale.weekdaysMinRegex(isStrict); + }); + addRegexToken('ddd', function (isStrict, locale) { + return locale.weekdaysShortRegex(isStrict); + }); + addRegexToken('dddd', function (isStrict, locale) { + return locale.weekdaysRegex(isStrict); + }); + + addWeekParseToken(['dd', 'ddd', 'dddd'], function (input, week, config, token) { + var weekday = config._locale.weekdaysParse(input, token, config._strict); + // if we didn't get a weekday name, mark the date as invalid + if (weekday != null) { + week.d = weekday; + } else { + getParsingFlags(config).invalidWeekday = input; } - // object construction must be done this way. - // https://github.com/moment/moment/issues/1423 - c = {}; - c._isAMomentObject = true; - c._i = input; - c._f = format; - c._l = locale; - c._strict = strict; - c._isUTC = false; - c._pf = defaultParsingFlags(); + }); - return makeMoment(c); - }; + addWeekParseToken(['d', 'e', 'E'], function (input, week, config, token) { + week[token] = toInt(input); + }); - moment.suppressDeprecationWarnings = false; + // HELPERS - moment.createFromInputFallback = deprecate( - 'moment construction falls back to js Date. This is ' + - 'discouraged and will be removed in upcoming major ' + - 'release. Please refer to ' + - 'https://github.com/moment/moment/issues/1407 for more info.', - function (config) { - config._d = new Date(config._i + (config._useUTC ? ' UTC' : '')); + function parseWeekday(input, locale) { + if (typeof input !== 'string') { + return input; } - ); - // Pick a moment m from moments so that m[fn](other) is true for all - // other. This relies on the function fn to be transitive. - // - // moments should either be an array of moment objects or an array, whose - // first element is an array of moment objects. - function pickBy(fn, moments) { - var res, i; - if (moments.length === 1 && isArray(moments[0])) { - moments = moments[0]; + if (!isNaN(input)) { + return parseInt(input, 10); } - if (!moments.length) { - return moment(); + + input = locale.weekdaysParse(input); + if (typeof input === 'number') { + return input; } - res = moments[0]; - for (i = 1; i < moments.length; ++i) { - if (moments[i][fn](res)) { - res = moments[i]; - } + + return null; + } + + function parseIsoWeekday(input, locale) { + if (typeof input === 'string') { + return locale.weekdaysParse(input) % 7 || 7; } - return res; + return isNaN(input) ? null : input; } - moment.min = function () { - var args = [].slice.call(arguments, 0); + // LOCALES - return pickBy('isBefore', args); - }; + var defaultLocaleWeekdays = 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'); + function localeWeekdays (m, format) { + if (!m) { + return this._weekdays; + } + return isArray(this._weekdays) ? this._weekdays[m.day()] : + this._weekdays[this._weekdays.isFormat.test(format) ? 'format' : 'standalone'][m.day()]; + } - moment.max = function () { - var args = [].slice.call(arguments, 0); + var defaultLocaleWeekdaysShort = 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'); + function localeWeekdaysShort (m) { + return (m) ? this._weekdaysShort[m.day()] : this._weekdaysShort; + } - return pickBy('isAfter', args); - }; + var defaultLocaleWeekdaysMin = 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'); + function localeWeekdaysMin (m) { + return (m) ? this._weekdaysMin[m.day()] : this._weekdaysMin; + } - // creating with utc - moment.utc = function (input, format, locale, strict) { - var c; + function day_of_week__handleStrictParse(weekdayName, format, strict) { + var i, ii, mom, llc = weekdayName.toLocaleLowerCase(); + if (!this._weekdaysParse) { + this._weekdaysParse = []; + this._shortWeekdaysParse = []; + this._minWeekdaysParse = []; + + for (i = 0; i < 7; ++i) { + mom = create_utc__createUTC([2000, 1]).day(i); + this._minWeekdaysParse[i] = this.weekdaysMin(mom, '').toLocaleLowerCase(); + this._shortWeekdaysParse[i] = this.weekdaysShort(mom, '').toLocaleLowerCase(); + this._weekdaysParse[i] = this.weekdays(mom, '').toLocaleLowerCase(); + } + } - if (typeof(locale) === 'boolean') { - strict = locale; - locale = undefined; + if (strict) { + if (format === 'dddd') { + ii = indexOf.call(this._weekdaysParse, llc); + return ii !== -1 ? ii : null; + } else if (format === 'ddd') { + ii = indexOf.call(this._shortWeekdaysParse, llc); + return ii !== -1 ? ii : null; + } else { + ii = indexOf.call(this._minWeekdaysParse, llc); + return ii !== -1 ? ii : null; + } + } else { + if (format === 'dddd') { + ii = indexOf.call(this._weekdaysParse, llc); + if (ii !== -1) { + return ii; + } + ii = indexOf.call(this._shortWeekdaysParse, llc); + if (ii !== -1) { + return ii; + } + ii = indexOf.call(this._minWeekdaysParse, llc); + return ii !== -1 ? ii : null; + } else if (format === 'ddd') { + ii = indexOf.call(this._shortWeekdaysParse, llc); + if (ii !== -1) { + return ii; + } + ii = indexOf.call(this._weekdaysParse, llc); + if (ii !== -1) { + return ii; + } + ii = indexOf.call(this._minWeekdaysParse, llc); + return ii !== -1 ? ii : null; + } else { + ii = indexOf.call(this._minWeekdaysParse, llc); + if (ii !== -1) { + return ii; + } + ii = indexOf.call(this._weekdaysParse, llc); + if (ii !== -1) { + return ii; + } + ii = indexOf.call(this._shortWeekdaysParse, llc); + return ii !== -1 ? ii : null; + } } - // object construction must be done this way. - // https://github.com/moment/moment/issues/1423 - c = {}; - c._isAMomentObject = true; - c._useUTC = true; - c._isUTC = true; - c._l = locale; - c._i = input; - c._f = format; - c._strict = strict; - c._pf = defaultParsingFlags(); + } - return makeMoment(c).utc(); - }; + function localeWeekdaysParse (weekdayName, format, strict) { + var i, mom, regex; - // creating with unix timestamp (in seconds) - moment.unix = function (input) { - return moment(input * 1000); - }; + if (this._weekdaysParseExact) { + return day_of_week__handleStrictParse.call(this, weekdayName, format, strict); + } - // duration - moment.duration = function (input, key) { - var duration = input, - // matching against regexp is expensive, do it on demand - match = null, - sign, - ret, - parseIso, - diffRes; + if (!this._weekdaysParse) { + this._weekdaysParse = []; + this._minWeekdaysParse = []; + this._shortWeekdaysParse = []; + this._fullWeekdaysParse = []; + } - if (moment.isDuration(input)) { - duration = { - ms: input._milliseconds, - d: input._days, - M: input._months - }; - } else if (typeof input === 'number') { - duration = {}; - if (key) { - duration[key] = input; - } else { - duration.milliseconds = input; + for (i = 0; i < 7; i++) { + // make the regex if we don't have it already + + mom = create_utc__createUTC([2000, 1]).day(i); + if (strict && !this._fullWeekdaysParse[i]) { + this._fullWeekdaysParse[i] = new RegExp('^' + this.weekdays(mom, '').replace('.', '\.?') + '$', 'i'); + this._shortWeekdaysParse[i] = new RegExp('^' + this.weekdaysShort(mom, '').replace('.', '\.?') + '$', 'i'); + this._minWeekdaysParse[i] = new RegExp('^' + this.weekdaysMin(mom, '').replace('.', '\.?') + '$', 'i'); } - } else if (!!(match = aspNetTimeSpanJsonRegex.exec(input))) { - sign = (match[1] === '-') ? -1 : 1; - duration = { - y: 0, - d: toInt(match[DATE]) * sign, - h: toInt(match[HOUR]) * sign, - m: toInt(match[MINUTE]) * sign, - s: toInt(match[SECOND]) * sign, - ms: toInt(match[MILLISECOND]) * sign - }; - } else if (!!(match = isoDurationRegex.exec(input))) { - sign = (match[1] === '-') ? -1 : 1; - parseIso = function (inp) { - // We'd normally use ~~inp for this, but unfortunately it also - // converts floats to ints. - // inp may be undefined, so careful calling replace on it. - var res = inp && parseFloat(inp.replace(',', '.')); - // apply sign while we're at it - return (isNaN(res) ? 0 : res) * sign; - }; - duration = { - y: parseIso(match[2]), - M: parseIso(match[3]), - d: parseIso(match[4]), - h: parseIso(match[5]), - m: parseIso(match[6]), - s: parseIso(match[7]), - w: parseIso(match[8]) - }; - } else if (typeof duration === 'object' && - ('from' in duration || 'to' in duration)) { - diffRes = momentsDifference(moment(duration.from), moment(duration.to)); + if (!this._weekdaysParse[i]) { + regex = '^' + this.weekdays(mom, '') + '|^' + this.weekdaysShort(mom, '') + '|^' + this.weekdaysMin(mom, ''); + this._weekdaysParse[i] = new RegExp(regex.replace('.', ''), 'i'); + } + // test the regex + if (strict && format === 'dddd' && this._fullWeekdaysParse[i].test(weekdayName)) { + return i; + } else if (strict && format === 'ddd' && this._shortWeekdaysParse[i].test(weekdayName)) { + return i; + } else if (strict && format === 'dd' && this._minWeekdaysParse[i].test(weekdayName)) { + return i; + } else if (!strict && this._weekdaysParse[i].test(weekdayName)) { + return i; + } + } + } - duration = {}; - duration.ms = diffRes.milliseconds; - duration.M = diffRes.months; + // MOMENTS + + function getSetDayOfWeek (input) { + if (!this.isValid()) { + return input != null ? this : NaN; + } + var day = this._isUTC ? this._d.getUTCDay() : this._d.getDay(); + if (input != null) { + input = parseWeekday(input, this.localeData()); + return this.add(input - day, 'd'); + } else { + return day; } + } - ret = new Duration(duration); + function getSetLocaleDayOfWeek (input) { + if (!this.isValid()) { + return input != null ? this : NaN; + } + var weekday = (this.day() + 7 - this.localeData()._week.dow) % 7; + return input == null ? weekday : this.add(input - weekday, 'd'); + } - if (moment.isDuration(input) && hasOwnProp(input, '_locale')) { - ret._locale = input._locale; + function getSetISODayOfWeek (input) { + if (!this.isValid()) { + return input != null ? this : NaN; } - return ret; - }; + // behaves the same as moment#day except + // as a getter, returns 7 instead of 0 (1-7 range instead of 0-6) + // as a setter, sunday should belong to the previous week. - // version number - moment.version = VERSION; + if (input != null) { + var weekday = parseIsoWeekday(input, this.localeData()); + return this.day(this.day() % 7 ? weekday : weekday - 7); + } else { + return this.day() || 7; + } + } - // default format - moment.defaultFormat = isoFormat; + var defaultWeekdaysRegex = matchWord; + function weekdaysRegex (isStrict) { + if (this._weekdaysParseExact) { + if (!hasOwnProp(this, '_weekdaysRegex')) { + computeWeekdaysParse.call(this); + } + if (isStrict) { + return this._weekdaysStrictRegex; + } else { + return this._weekdaysRegex; + } + } else { + if (!hasOwnProp(this, '_weekdaysRegex')) { + this._weekdaysRegex = defaultWeekdaysRegex; + } + return this._weekdaysStrictRegex && isStrict ? + this._weekdaysStrictRegex : this._weekdaysRegex; + } + } - // constant that refers to the ISO standard - moment.ISO_8601 = function () {}; + var defaultWeekdaysShortRegex = matchWord; + function weekdaysShortRegex (isStrict) { + if (this._weekdaysParseExact) { + if (!hasOwnProp(this, '_weekdaysRegex')) { + computeWeekdaysParse.call(this); + } + if (isStrict) { + return this._weekdaysShortStrictRegex; + } else { + return this._weekdaysShortRegex; + } + } else { + if (!hasOwnProp(this, '_weekdaysShortRegex')) { + this._weekdaysShortRegex = defaultWeekdaysShortRegex; + } + return this._weekdaysShortStrictRegex && isStrict ? + this._weekdaysShortStrictRegex : this._weekdaysShortRegex; + } + } - // Plugins that add properties should also add the key here (null value), - // so we can properly clone ourselves. - moment.momentProperties = momentProperties; + var defaultWeekdaysMinRegex = matchWord; + function weekdaysMinRegex (isStrict) { + if (this._weekdaysParseExact) { + if (!hasOwnProp(this, '_weekdaysRegex')) { + computeWeekdaysParse.call(this); + } + if (isStrict) { + return this._weekdaysMinStrictRegex; + } else { + return this._weekdaysMinRegex; + } + } else { + if (!hasOwnProp(this, '_weekdaysMinRegex')) { + this._weekdaysMinRegex = defaultWeekdaysMinRegex; + } + return this._weekdaysMinStrictRegex && isStrict ? + this._weekdaysMinStrictRegex : this._weekdaysMinRegex; + } + } - // This function will be called whenever a moment is mutated. - // It is intended to keep the offset in sync with the timezone. - moment.updateOffset = function () {}; - // This function allows you to set a threshold for relative time strings - moment.relativeTimeThreshold = function (threshold, limit) { - if (relativeTimeThresholds[threshold] === undefined) { - return false; + function computeWeekdaysParse () { + function cmpLenRev(a, b) { + return b.length - a.length; } - if (limit === undefined) { - return relativeTimeThresholds[threshold]; + + var minPieces = [], shortPieces = [], longPieces = [], mixedPieces = [], + i, mom, minp, shortp, longp; + for (i = 0; i < 7; i++) { + // make the regex if we don't have it already + mom = create_utc__createUTC([2000, 1]).day(i); + minp = this.weekdaysMin(mom, ''); + shortp = this.weekdaysShort(mom, ''); + longp = this.weekdays(mom, ''); + minPieces.push(minp); + shortPieces.push(shortp); + longPieces.push(longp); + mixedPieces.push(minp); + mixedPieces.push(shortp); + mixedPieces.push(longp); } - relativeTimeThresholds[threshold] = limit; - return true; + // Sorting makes sure if one weekday (or abbr) is a prefix of another it + // will match the longer piece. + minPieces.sort(cmpLenRev); + shortPieces.sort(cmpLenRev); + longPieces.sort(cmpLenRev); + mixedPieces.sort(cmpLenRev); + for (i = 0; i < 7; i++) { + shortPieces[i] = regexEscape(shortPieces[i]); + longPieces[i] = regexEscape(longPieces[i]); + mixedPieces[i] = regexEscape(mixedPieces[i]); + } + + this._weekdaysRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i'); + this._weekdaysShortRegex = this._weekdaysRegex; + this._weekdaysMinRegex = this._weekdaysRegex; + + this._weekdaysStrictRegex = new RegExp('^(' + longPieces.join('|') + ')', 'i'); + this._weekdaysShortStrictRegex = new RegExp('^(' + shortPieces.join('|') + ')', 'i'); + this._weekdaysMinStrictRegex = new RegExp('^(' + minPieces.join('|') + ')', 'i'); + } + + // FORMATTING + + function hFormat() { + return this.hours() % 12 || 12; + } + + function kFormat() { + return this.hours() || 24; + } + + addFormatToken('H', ['HH', 2], 0, 'hour'); + addFormatToken('h', ['hh', 2], 0, hFormat); + addFormatToken('k', ['kk', 2], 0, kFormat); + + addFormatToken('hmm', 0, 0, function () { + return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2); + }); + + addFormatToken('hmmss', 0, 0, function () { + return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2) + + zeroFill(this.seconds(), 2); + }); + + addFormatToken('Hmm', 0, 0, function () { + return '' + this.hours() + zeroFill(this.minutes(), 2); + }); + + addFormatToken('Hmmss', 0, 0, function () { + return '' + this.hours() + zeroFill(this.minutes(), 2) + + zeroFill(this.seconds(), 2); + }); + + function meridiem (token, lowercase) { + addFormatToken(token, 0, 0, function () { + return this.localeData().meridiem(this.hours(), this.minutes(), lowercase); + }); + } + + meridiem('a', true); + meridiem('A', false); + + // ALIASES + + addUnitAlias('hour', 'h'); + + // PRIORITY + addUnitPriority('hour', 13); + + // PARSING + + function matchMeridiem (isStrict, locale) { + return locale._meridiemParse; + } + + addRegexToken('a', matchMeridiem); + addRegexToken('A', matchMeridiem); + addRegexToken('H', match1to2); + addRegexToken('h', match1to2); + addRegexToken('HH', match1to2, match2); + addRegexToken('hh', match1to2, match2); + + addRegexToken('hmm', match3to4); + addRegexToken('hmmss', match5to6); + addRegexToken('Hmm', match3to4); + addRegexToken('Hmmss', match5to6); + + addParseToken(['H', 'HH'], HOUR); + addParseToken(['a', 'A'], function (input, array, config) { + config._isPm = config._locale.isPM(input); + config._meridiem = input; + }); + addParseToken(['h', 'hh'], function (input, array, config) { + array[HOUR] = toInt(input); + getParsingFlags(config).bigHour = true; + }); + addParseToken('hmm', function (input, array, config) { + var pos = input.length - 2; + array[HOUR] = toInt(input.substr(0, pos)); + array[MINUTE] = toInt(input.substr(pos)); + getParsingFlags(config).bigHour = true; + }); + addParseToken('hmmss', function (input, array, config) { + var pos1 = input.length - 4; + var pos2 = input.length - 2; + array[HOUR] = toInt(input.substr(0, pos1)); + array[MINUTE] = toInt(input.substr(pos1, 2)); + array[SECOND] = toInt(input.substr(pos2)); + getParsingFlags(config).bigHour = true; + }); + addParseToken('Hmm', function (input, array, config) { + var pos = input.length - 2; + array[HOUR] = toInt(input.substr(0, pos)); + array[MINUTE] = toInt(input.substr(pos)); + }); + addParseToken('Hmmss', function (input, array, config) { + var pos1 = input.length - 4; + var pos2 = input.length - 2; + array[HOUR] = toInt(input.substr(0, pos1)); + array[MINUTE] = toInt(input.substr(pos1, 2)); + array[SECOND] = toInt(input.substr(pos2)); + }); + + // LOCALES + + function localeIsPM (input) { + // IE8 Quirks Mode & IE7 Standards Mode do not allow accessing strings like arrays + // Using charAt should be more compatible. + return ((input + '').toLowerCase().charAt(0) === 'p'); + } + + var defaultLocaleMeridiemParse = /[ap]\.?m?\.?/i; + function localeMeridiem (hours, minutes, isLower) { + if (hours > 11) { + return isLower ? 'pm' : 'PM'; + } else { + return isLower ? 'am' : 'AM'; + } + } + + + // MOMENTS + + // Setting the hour should keep the time, because the user explicitly + // specified which hour he wants. So trying to maintain the same hour (in + // a new timezone) makes sense. Adding/subtracting hours does not follow + // this rule. + var getSetHour = makeGetSet('Hours', true); + + var baseConfig = { + calendar: defaultCalendar, + longDateFormat: defaultLongDateFormat, + invalidDate: defaultInvalidDate, + ordinal: defaultOrdinal, + ordinalParse: defaultOrdinalParse, + relativeTime: defaultRelativeTime, + + months: defaultLocaleMonths, + monthsShort: defaultLocaleMonthsShort, + + week: defaultLocaleWeek, + + weekdays: defaultLocaleWeekdays, + weekdaysMin: defaultLocaleWeekdaysMin, + weekdaysShort: defaultLocaleWeekdaysShort, + + meridiemParse: defaultLocaleMeridiemParse }; - moment.lang = deprecate( - 'moment.lang is deprecated. Use moment.locale instead.', - function (key, value) { - return moment.locale(key, value); + // internal storage for locale config files + var locales = {}; + var globalLocale; + + function normalizeLocale(key) { + return key ? key.toLowerCase().replace('_', '-') : key; + } + + // pick the locale from the array + // try ['en-au', 'en-gb'] as 'en-au', 'en-gb', 'en', as in move through the list trying each + // substring from most specific to least, but move to the next array item if it's a more specific variant than the current root + function chooseLocale(names) { + var i = 0, j, next, locale, split; + + while (i < names.length) { + split = normalizeLocale(names[i]).split('-'); + j = split.length; + next = normalizeLocale(names[i + 1]); + next = next ? next.split('-') : null; + while (j > 0) { + locale = loadLocale(split.slice(0, j).join('-')); + if (locale) { + return locale; + } + if (next && next.length >= j && compareArrays(split, next, true) >= j - 1) { + //the next array item is better than a shallower substring of this one + break; + } + j--; + } + i++; + } + return null; + } + + function loadLocale(name) { + var oldLocale = null; + // TODO: Find a better way to register and load all the locales in Node + if (!locales[name] && (typeof module !== 'undefined') && + module && module.require) { + try { + oldLocale = globalLocale._abbr; + module.require('./locale/' + name); + // because defineLocale currently also sets the global locale, we + // want to undo that for lazy loaded locales + locale_locales__getSetGlobalLocale(oldLocale); + } catch (e) { } } - ); + return locales[name]; + } // This function will load locale and then set the global locale. If // no arguments are passed in, it will simply return the current global // locale key. - moment.locale = function (key, values) { + function locale_locales__getSetGlobalLocale (key, values) { var data; if (key) { - if (typeof(values) !== 'undefined') { - data = moment.defineLocale(key, values); + if (isUndefined(values)) { + data = locale_locales__getLocale(key); } else { - data = moment.localeData(key); + data = defineLocale(key, values); } if (data) { - moment.duration._locale = moment._locale = data; + // moment.duration._locale = moment._locale = data; + globalLocale = data; } } - return moment._locale._abbr; - }; + return globalLocale._abbr; + } - moment.defineLocale = function (name, values) { - if (values !== null) { - values.abbr = name; - if (!locales[name]) { - locales[name] = new Locale(); + function defineLocale (name, config) { + if (config !== null) { + var parentConfig = baseConfig; + config.abbr = name; + if (locales[name] != null) { + deprecateSimple('defineLocaleOverride', + 'use moment.updateLocale(localeName, config) to change ' + + 'an existing locale. moment.defineLocale(localeName, ' + + 'config) should only be used for creating a new locale ' + + 'See http://momentjs.com/guides/#/warnings/define-locale/ for more info.'); + parentConfig = locales[name]._config; + } else if (config.parentLocale != null) { + if (locales[config.parentLocale] != null) { + parentConfig = locales[config.parentLocale]._config; + } else { + // treat as if there is no base config + deprecateSimple('parentLocaleUndefined', + 'specified parentLocale is not defined yet. See http://momentjs.com/guides/#/warnings/parent-locale/'); + } } - locales[name].set(values); + locales[name] = new Locale(mergeConfigs(parentConfig, config)); // backwards compat for now: also set the locale - moment.locale(name); + locale_locales__getSetGlobalLocale(name); return locales[name]; } else { @@ -2050,887 +1856,2379 @@ delete locales[name]; return null; } - }; + } - moment.langData = deprecate( - 'moment.langData is deprecated. Use moment.localeData instead.', - function (key) { - return moment.localeData(key); + function updateLocale(name, config) { + if (config != null) { + var locale, parentConfig = baseConfig; + // MERGE + if (locales[name] != null) { + parentConfig = locales[name]._config; + } + config = mergeConfigs(parentConfig, config); + locale = new Locale(config); + locale.parentLocale = locales[name]; + locales[name] = locale; + + // backwards compat for now: also set the locale + locale_locales__getSetGlobalLocale(name); + } else { + // pass null for config to unupdate, useful for tests + if (locales[name] != null) { + if (locales[name].parentLocale != null) { + locales[name] = locales[name].parentLocale; + } else if (locales[name] != null) { + delete locales[name]; + } + } } - ); + return locales[name]; + } // returns locale data - moment.localeData = function (key) { + function locale_locales__getLocale (key) { var locale; - if (key && key._locale && key._locale._abbr) { - key = key._locale._abbr; - } + if (key && key._locale && key._locale._abbr) { + key = key._locale._abbr; + } + + if (!key) { + return globalLocale; + } + + if (!isArray(key)) { + //short-circuit everything else + locale = loadLocale(key); + if (locale) { + return locale; + } + key = [key]; + } + + return chooseLocale(key); + } + + function locale_locales__listLocales() { + return keys(locales); + } + + function checkOverflow (m) { + var overflow; + var a = m._a; + + if (a && getParsingFlags(m).overflow === -2) { + overflow = + a[MONTH] < 0 || a[MONTH] > 11 ? MONTH : + a[DATE] < 1 || a[DATE] > daysInMonth(a[YEAR], a[MONTH]) ? DATE : + a[HOUR] < 0 || a[HOUR] > 24 || (a[HOUR] === 24 && (a[MINUTE] !== 0 || a[SECOND] !== 0 || a[MILLISECOND] !== 0)) ? HOUR : + a[MINUTE] < 0 || a[MINUTE] > 59 ? MINUTE : + a[SECOND] < 0 || a[SECOND] > 59 ? SECOND : + a[MILLISECOND] < 0 || a[MILLISECOND] > 999 ? MILLISECOND : + -1; + + if (getParsingFlags(m)._overflowDayOfYear && (overflow < YEAR || overflow > DATE)) { + overflow = DATE; + } + if (getParsingFlags(m)._overflowWeeks && overflow === -1) { + overflow = WEEK; + } + if (getParsingFlags(m)._overflowWeekday && overflow === -1) { + overflow = WEEKDAY; + } + + getParsingFlags(m).overflow = overflow; + } + + return m; + } + + // iso 8601 regex + // 0000-00-00 0000-W00 or 0000-W00-0 + T + 00 or 00:00 or 00:00:00 or 00:00:00.000 + +00:00 or +0000 or +00) + var extendedIsoRegex = /^\s*((?:[+-]\d{6}|\d{4})-(?:\d\d-\d\d|W\d\d-\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?::\d\d(?::\d\d(?:[.,]\d+)?)?)?)([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?/; + var basicIsoRegex = /^\s*((?:[+-]\d{6}|\d{4})(?:\d\d\d\d|W\d\d\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?:\d\d(?:\d\d(?:[.,]\d+)?)?)?)([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?/; + + var tzRegex = /Z|[+-]\d\d(?::?\d\d)?/; + + var isoDates = [ + ['YYYYYY-MM-DD', /[+-]\d{6}-\d\d-\d\d/], + ['YYYY-MM-DD', /\d{4}-\d\d-\d\d/], + ['GGGG-[W]WW-E', /\d{4}-W\d\d-\d/], + ['GGGG-[W]WW', /\d{4}-W\d\d/, false], + ['YYYY-DDD', /\d{4}-\d{3}/], + ['YYYY-MM', /\d{4}-\d\d/, false], + ['YYYYYYMMDD', /[+-]\d{10}/], + ['YYYYMMDD', /\d{8}/], + // YYYYMM is NOT allowed by the standard + ['GGGG[W]WWE', /\d{4}W\d{3}/], + ['GGGG[W]WW', /\d{4}W\d{2}/, false], + ['YYYYDDD', /\d{7}/] + ]; + + // iso time formats and regexes + var isoTimes = [ + ['HH:mm:ss.SSSS', /\d\d:\d\d:\d\d\.\d+/], + ['HH:mm:ss,SSSS', /\d\d:\d\d:\d\d,\d+/], + ['HH:mm:ss', /\d\d:\d\d:\d\d/], + ['HH:mm', /\d\d:\d\d/], + ['HHmmss.SSSS', /\d\d\d\d\d\d\.\d+/], + ['HHmmss,SSSS', /\d\d\d\d\d\d,\d+/], + ['HHmmss', /\d\d\d\d\d\d/], + ['HHmm', /\d\d\d\d/], + ['HH', /\d\d/] + ]; + + var aspNetJsonRegex = /^\/?Date\((\-?\d+)/i; + + // date from iso format + function configFromISO(config) { + var i, l, + string = config._i, + match = extendedIsoRegex.exec(string) || basicIsoRegex.exec(string), + allowTime, dateFormat, timeFormat, tzFormat; + + if (match) { + getParsingFlags(config).iso = true; + + for (i = 0, l = isoDates.length; i < l; i++) { + if (isoDates[i][1].exec(match[1])) { + dateFormat = isoDates[i][0]; + allowTime = isoDates[i][2] !== false; + break; + } + } + if (dateFormat == null) { + config._isValid = false; + return; + } + if (match[3]) { + for (i = 0, l = isoTimes.length; i < l; i++) { + if (isoTimes[i][1].exec(match[3])) { + // match[2] should be 'T' or space + timeFormat = (match[2] || ' ') + isoTimes[i][0]; + break; + } + } + if (timeFormat == null) { + config._isValid = false; + return; + } + } + if (!allowTime && timeFormat != null) { + config._isValid = false; + return; + } + if (match[4]) { + if (tzRegex.exec(match[4])) { + tzFormat = 'Z'; + } else { + config._isValid = false; + return; + } + } + config._f = dateFormat + (timeFormat || '') + (tzFormat || ''); + configFromStringAndFormat(config); + } else { + config._isValid = false; + } + } + + // date from iso format or fallback + function configFromString(config) { + var matched = aspNetJsonRegex.exec(config._i); + + if (matched !== null) { + config._d = new Date(+matched[1]); + return; + } + + configFromISO(config); + if (config._isValid === false) { + delete config._isValid; + utils_hooks__hooks.createFromInputFallback(config); + } + } + + utils_hooks__hooks.createFromInputFallback = deprecate( + 'value provided is not in a recognized ISO format. moment construction falls back to js Date(), ' + + 'which is not reliable across all browsers and versions. Non ISO date formats are ' + + 'discouraged and will be removed in an upcoming major release. Please refer to ' + + 'http://momentjs.com/guides/#/warnings/js-date/ for more info.', + function (config) { + config._d = new Date(config._i + (config._useUTC ? ' UTC' : '')); + } + ); + + // Pick the first defined of two or three arguments. + function defaults(a, b, c) { + if (a != null) { + return a; + } + if (b != null) { + return b; + } + return c; + } + + function currentDateArray(config) { + // hooks is actually the exported moment object + var nowValue = new Date(utils_hooks__hooks.now()); + if (config._useUTC) { + return [nowValue.getUTCFullYear(), nowValue.getUTCMonth(), nowValue.getUTCDate()]; + } + return [nowValue.getFullYear(), nowValue.getMonth(), nowValue.getDate()]; + } + + // convert an array to a date. + // the array should mirror the parameters below + // note: all values past the year are optional and will default to the lowest possible value. + // [year, month, day , hour, minute, second, millisecond] + function configFromArray (config) { + var i, date, input = [], currentDate, yearToUse; + + if (config._d) { + return; + } + + currentDate = currentDateArray(config); + + //compute day of the year from weeks and weekdays + if (config._w && config._a[DATE] == null && config._a[MONTH] == null) { + dayOfYearFromWeekInfo(config); + } + + //if the day of the year is set, figure out what it is + if (config._dayOfYear) { + yearToUse = defaults(config._a[YEAR], currentDate[YEAR]); + + if (config._dayOfYear > daysInYear(yearToUse)) { + getParsingFlags(config)._overflowDayOfYear = true; + } + + date = createUTCDate(yearToUse, 0, config._dayOfYear); + config._a[MONTH] = date.getUTCMonth(); + config._a[DATE] = date.getUTCDate(); + } + + // Default to current date. + // * if no year, month, day of month are given, default to today + // * if day of month is given, default month and year + // * if month is given, default only year + // * if year is given, don't default anything + for (i = 0; i < 3 && config._a[i] == null; ++i) { + config._a[i] = input[i] = currentDate[i]; + } + + // Zero out whatever was not defaulted, including time + for (; i < 7; i++) { + config._a[i] = input[i] = (config._a[i] == null) ? (i === 2 ? 1 : 0) : config._a[i]; + } + + // Check for 24:00:00.000 + if (config._a[HOUR] === 24 && + config._a[MINUTE] === 0 && + config._a[SECOND] === 0 && + config._a[MILLISECOND] === 0) { + config._nextDay = true; + config._a[HOUR] = 0; + } + + config._d = (config._useUTC ? createUTCDate : createDate).apply(null, input); + // Apply timezone offset from input. The actual utcOffset can be changed + // with parseZone. + if (config._tzm != null) { + config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm); + } + + if (config._nextDay) { + config._a[HOUR] = 24; + } + } + + function dayOfYearFromWeekInfo(config) { + var w, weekYear, week, weekday, dow, doy, temp, weekdayOverflow; + + w = config._w; + if (w.GG != null || w.W != null || w.E != null) { + dow = 1; + doy = 4; + + // TODO: We need to take the current isoWeekYear, but that depends on + // how we interpret now (local, utc, fixed offset). So create + // a now version of current config (take local/utc/offset flags, and + // create now). + weekYear = defaults(w.GG, config._a[YEAR], weekOfYear(local__createLocal(), 1, 4).year); + week = defaults(w.W, 1); + weekday = defaults(w.E, 1); + if (weekday < 1 || weekday > 7) { + weekdayOverflow = true; + } + } else { + dow = config._locale._week.dow; + doy = config._locale._week.doy; + + weekYear = defaults(w.gg, config._a[YEAR], weekOfYear(local__createLocal(), dow, doy).year); + week = defaults(w.w, 1); + + if (w.d != null) { + // weekday -- low day numbers are considered next week + weekday = w.d; + if (weekday < 0 || weekday > 6) { + weekdayOverflow = true; + } + } else if (w.e != null) { + // local weekday -- counting starts from begining of week + weekday = w.e + dow; + if (w.e < 0 || w.e > 6) { + weekdayOverflow = true; + } + } else { + // default to begining of week + weekday = dow; + } + } + if (week < 1 || week > weeksInYear(weekYear, dow, doy)) { + getParsingFlags(config)._overflowWeeks = true; + } else if (weekdayOverflow != null) { + getParsingFlags(config)._overflowWeekday = true; + } else { + temp = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy); + config._a[YEAR] = temp.year; + config._dayOfYear = temp.dayOfYear; + } + } + + // constant that refers to the ISO standard + utils_hooks__hooks.ISO_8601 = function () {}; + + // date from string and format string + function configFromStringAndFormat(config) { + // TODO: Move this to another part of the creation flow to prevent circular deps + if (config._f === utils_hooks__hooks.ISO_8601) { + configFromISO(config); + return; + } + + config._a = []; + getParsingFlags(config).empty = true; + + // This array is used to make a Date, either with `new Date` or `Date.UTC` + var string = '' + config._i, + i, parsedInput, tokens, token, skipped, + stringLength = string.length, + totalParsedInputLength = 0; + + tokens = expandFormat(config._f, config._locale).match(formattingTokens) || []; + + for (i = 0; i < tokens.length; i++) { + token = tokens[i]; + parsedInput = (string.match(getParseRegexForToken(token, config)) || [])[0]; + // console.log('token', token, 'parsedInput', parsedInput, + // 'regex', getParseRegexForToken(token, config)); + if (parsedInput) { + skipped = string.substr(0, string.indexOf(parsedInput)); + if (skipped.length > 0) { + getParsingFlags(config).unusedInput.push(skipped); + } + string = string.slice(string.indexOf(parsedInput) + parsedInput.length); + totalParsedInputLength += parsedInput.length; + } + // don't parse if it's not a known token + if (formatTokenFunctions[token]) { + if (parsedInput) { + getParsingFlags(config).empty = false; + } + else { + getParsingFlags(config).unusedTokens.push(token); + } + addTimeToArrayFromToken(token, parsedInput, config); + } + else if (config._strict && !parsedInput) { + getParsingFlags(config).unusedTokens.push(token); + } + } + + // add remaining unparsed input length to the string + getParsingFlags(config).charsLeftOver = stringLength - totalParsedInputLength; + if (string.length > 0) { + getParsingFlags(config).unusedInput.push(string); + } + + // clear _12h flag if hour is <= 12 + if (config._a[HOUR] <= 12 && + getParsingFlags(config).bigHour === true && + config._a[HOUR] > 0) { + getParsingFlags(config).bigHour = undefined; + } + + getParsingFlags(config).parsedDateParts = config._a.slice(0); + getParsingFlags(config).meridiem = config._meridiem; + // handle meridiem + config._a[HOUR] = meridiemFixWrap(config._locale, config._a[HOUR], config._meridiem); + + configFromArray(config); + checkOverflow(config); + } + + + function meridiemFixWrap (locale, hour, meridiem) { + var isPm; + + if (meridiem == null) { + // nothing to do + return hour; + } + if (locale.meridiemHour != null) { + return locale.meridiemHour(hour, meridiem); + } else if (locale.isPM != null) { + // Fallback + isPm = locale.isPM(meridiem); + if (isPm && hour < 12) { + hour += 12; + } + if (!isPm && hour === 12) { + hour = 0; + } + return hour; + } else { + // this is not supposed to happen + return hour; + } + } + + // date from string and array of format strings + function configFromStringAndArray(config) { + var tempConfig, + bestMoment, + + scoreToBeat, + i, + currentScore; + + if (config._f.length === 0) { + getParsingFlags(config).invalidFormat = true; + config._d = new Date(NaN); + return; + } + + for (i = 0; i < config._f.length; i++) { + currentScore = 0; + tempConfig = copyConfig({}, config); + if (config._useUTC != null) { + tempConfig._useUTC = config._useUTC; + } + tempConfig._f = config._f[i]; + configFromStringAndFormat(tempConfig); + + if (!valid__isValid(tempConfig)) { + continue; + } + + // if there is any input that was not parsed add a penalty for that format + currentScore += getParsingFlags(tempConfig).charsLeftOver; + + //or tokens + currentScore += getParsingFlags(tempConfig).unusedTokens.length * 10; + + getParsingFlags(tempConfig).score = currentScore; + + if (scoreToBeat == null || currentScore < scoreToBeat) { + scoreToBeat = currentScore; + bestMoment = tempConfig; + } + } + + extend(config, bestMoment || tempConfig); + } + + function configFromObject(config) { + if (config._d) { + return; + } + + var i = normalizeObjectUnits(config._i); + config._a = map([i.year, i.month, i.day || i.date, i.hour, i.minute, i.second, i.millisecond], function (obj) { + return obj && parseInt(obj, 10); + }); + + configFromArray(config); + } + + function createFromConfig (config) { + var res = new Moment(checkOverflow(prepareConfig(config))); + if (res._nextDay) { + // Adding is smart enough around DST + res.add(1, 'd'); + res._nextDay = undefined; + } + + return res; + } + + function prepareConfig (config) { + var input = config._i, + format = config._f; + + config._locale = config._locale || locale_locales__getLocale(config._l); + + if (input === null || (format === undefined && input === '')) { + return valid__createInvalid({nullInput: true}); + } + + if (typeof input === 'string') { + config._i = input = config._locale.preparse(input); + } + + if (isMoment(input)) { + return new Moment(checkOverflow(input)); + } else if (isArray(format)) { + configFromStringAndArray(config); + } else if (isDate(input)) { + config._d = input; + } else if (format) { + configFromStringAndFormat(config); + } else { + configFromInput(config); + } + + if (!valid__isValid(config)) { + config._d = null; + } + + return config; + } + + function configFromInput(config) { + var input = config._i; + if (input === undefined) { + config._d = new Date(utils_hooks__hooks.now()); + } else if (isDate(input)) { + config._d = new Date(input.valueOf()); + } else if (typeof input === 'string') { + configFromString(config); + } else if (isArray(input)) { + config._a = map(input.slice(0), function (obj) { + return parseInt(obj, 10); + }); + configFromArray(config); + } else if (typeof(input) === 'object') { + configFromObject(config); + } else if (typeof(input) === 'number') { + // from milliseconds + config._d = new Date(input); + } else { + utils_hooks__hooks.createFromInputFallback(config); + } + } + + function createLocalOrUTC (input, format, locale, strict, isUTC) { + var c = {}; + + if (typeof(locale) === 'boolean') { + strict = locale; + locale = undefined; + } + + if ((isObject(input) && isObjectEmpty(input)) || + (isArray(input) && input.length === 0)) { + input = undefined; + } + // object construction must be done this way. + // https://github.com/moment/moment/issues/1423 + c._isAMomentObject = true; + c._useUTC = c._isUTC = isUTC; + c._l = locale; + c._i = input; + c._f = format; + c._strict = strict; + + return createFromConfig(c); + } + + function local__createLocal (input, format, locale, strict) { + return createLocalOrUTC(input, format, locale, strict, false); + } + + var prototypeMin = deprecate( + 'moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/', + function () { + var other = local__createLocal.apply(null, arguments); + if (this.isValid() && other.isValid()) { + return other < this ? this : other; + } else { + return valid__createInvalid(); + } + } + ); + + var prototypeMax = deprecate( + 'moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/', + function () { + var other = local__createLocal.apply(null, arguments); + if (this.isValid() && other.isValid()) { + return other > this ? this : other; + } else { + return valid__createInvalid(); + } + } + ); + + // Pick a moment m from moments so that m[fn](other) is true for all + // other. This relies on the function fn to be transitive. + // + // moments should either be an array of moment objects or an array, whose + // first element is an array of moment objects. + function pickBy(fn, moments) { + var res, i; + if (moments.length === 1 && isArray(moments[0])) { + moments = moments[0]; + } + if (!moments.length) { + return local__createLocal(); + } + res = moments[0]; + for (i = 1; i < moments.length; ++i) { + if (!moments[i].isValid() || moments[i][fn](res)) { + res = moments[i]; + } + } + return res; + } + + // TODO: Use [].sort instead? + function min () { + var args = [].slice.call(arguments, 0); + + return pickBy('isBefore', args); + } + + function max () { + var args = [].slice.call(arguments, 0); + + return pickBy('isAfter', args); + } + + var now = function () { + return Date.now ? Date.now() : +(new Date()); + }; + + function Duration (duration) { + var normalizedInput = normalizeObjectUnits(duration), + years = normalizedInput.year || 0, + quarters = normalizedInput.quarter || 0, + months = normalizedInput.month || 0, + weeks = normalizedInput.week || 0, + days = normalizedInput.day || 0, + hours = normalizedInput.hour || 0, + minutes = normalizedInput.minute || 0, + seconds = normalizedInput.second || 0, + milliseconds = normalizedInput.millisecond || 0; + + // representation for dateAddRemove + this._milliseconds = +milliseconds + + seconds * 1e3 + // 1000 + minutes * 6e4 + // 1000 * 60 + hours * 1000 * 60 * 60; //using 1000 * 60 * 60 instead of 36e5 to avoid floating point rounding errors https://github.com/moment/moment/issues/2978 + // Because of dateAddRemove treats 24 hours as different from a + // day when working around DST, we need to store them separately + this._days = +days + + weeks * 7; + // It is impossible translate months into days without knowing + // which months you are are talking about, so we have to store + // it separately. + this._months = +months + + quarters * 3 + + years * 12; + + this._data = {}; + + this._locale = locale_locales__getLocale(); + + this._bubble(); + } + + function isDuration (obj) { + return obj instanceof Duration; + } + + function absRound (number) { + if (number < 0) { + return Math.round(-1 * number) * -1; + } else { + return Math.round(number); + } + } + + // FORMATTING + + function offset (token, separator) { + addFormatToken(token, 0, 0, function () { + var offset = this.utcOffset(); + var sign = '+'; + if (offset < 0) { + offset = -offset; + sign = '-'; + } + return sign + zeroFill(~~(offset / 60), 2) + separator + zeroFill(~~(offset) % 60, 2); + }); + } + + offset('Z', ':'); + offset('ZZ', ''); + + // PARSING + + addRegexToken('Z', matchShortOffset); + addRegexToken('ZZ', matchShortOffset); + addParseToken(['Z', 'ZZ'], function (input, array, config) { + config._useUTC = true; + config._tzm = offsetFromString(matchShortOffset, input); + }); + + // HELPERS + + // timezone chunker + // '+10:00' > ['10', '00'] + // '-1530' > ['-15', '30'] + var chunkOffset = /([\+\-]|\d\d)/gi; + + function offsetFromString(matcher, string) { + var matches = ((string || '').match(matcher) || []); + var chunk = matches[matches.length - 1] || []; + var parts = (chunk + '').match(chunkOffset) || ['-', 0, 0]; + var minutes = +(parts[1] * 60) + toInt(parts[2]); + + return parts[0] === '+' ? minutes : -minutes; + } + + // Return a moment from input, that is local/utc/zone equivalent to model. + function cloneWithOffset(input, model) { + var res, diff; + if (model._isUTC) { + res = model.clone(); + diff = (isMoment(input) || isDate(input) ? input.valueOf() : local__createLocal(input).valueOf()) - res.valueOf(); + // Use low-level api, because this fn is low-level api. + res._d.setTime(res._d.valueOf() + diff); + utils_hooks__hooks.updateOffset(res, false); + return res; + } else { + return local__createLocal(input).local(); + } + } + + function getDateOffset (m) { + // On Firefox.24 Date#getTimezoneOffset returns a floating point. + // https://github.com/moment/moment/pull/1871 + return -Math.round(m._d.getTimezoneOffset() / 15) * 15; + } + + // HOOKS + + // This function will be called whenever a moment is mutated. + // It is intended to keep the offset in sync with the timezone. + utils_hooks__hooks.updateOffset = function () {}; + + // MOMENTS + + // keepLocalTime = true means only change the timezone, without + // affecting the local hour. So 5:31:26 +0300 --[utcOffset(2, true)]--> + // 5:31:26 +0200 It is possible that 5:31:26 doesn't exist with offset + // +0200, so we adjust the time as needed, to be valid. + // + // Keeping the time actually adds/subtracts (one hour) + // from the actual represented time. That is why we call updateOffset + // a second time. In case it wants us to change the offset again + // _changeInProgress == true case, then we have to adjust, because + // there is no such time in the given timezone. + function getSetOffset (input, keepLocalTime) { + var offset = this._offset || 0, + localAdjust; + if (!this.isValid()) { + return input != null ? this : NaN; + } + if (input != null) { + if (typeof input === 'string') { + input = offsetFromString(matchShortOffset, input); + } else if (Math.abs(input) < 16) { + input = input * 60; + } + if (!this._isUTC && keepLocalTime) { + localAdjust = getDateOffset(this); + } + this._offset = input; + this._isUTC = true; + if (localAdjust != null) { + this.add(localAdjust, 'm'); + } + if (offset !== input) { + if (!keepLocalTime || this._changeInProgress) { + add_subtract__addSubtract(this, create__createDuration(input - offset, 'm'), 1, false); + } else if (!this._changeInProgress) { + this._changeInProgress = true; + utils_hooks__hooks.updateOffset(this, true); + this._changeInProgress = null; + } + } + return this; + } else { + return this._isUTC ? offset : getDateOffset(this); + } + } + + function getSetZone (input, keepLocalTime) { + if (input != null) { + if (typeof input !== 'string') { + input = -input; + } + + this.utcOffset(input, keepLocalTime); + + return this; + } else { + return -this.utcOffset(); + } + } + + function setOffsetToUTC (keepLocalTime) { + return this.utcOffset(0, keepLocalTime); + } + + function setOffsetToLocal (keepLocalTime) { + if (this._isUTC) { + this.utcOffset(0, keepLocalTime); + this._isUTC = false; + + if (keepLocalTime) { + this.subtract(getDateOffset(this), 'm'); + } + } + return this; + } + + function setOffsetToParsedOffset () { + if (this._tzm) { + this.utcOffset(this._tzm); + } else if (typeof this._i === 'string') { + var tZone = offsetFromString(matchOffset, this._i); + + if (tZone === 0) { + this.utcOffset(0, true); + } else { + this.utcOffset(offsetFromString(matchOffset, this._i)); + } + } + return this; + } + + function hasAlignedHourOffset (input) { + if (!this.isValid()) { + return false; + } + input = input ? local__createLocal(input).utcOffset() : 0; + + return (this.utcOffset() - input) % 60 === 0; + } + + function isDaylightSavingTime () { + return ( + this.utcOffset() > this.clone().month(0).utcOffset() || + this.utcOffset() > this.clone().month(5).utcOffset() + ); + } + + function isDaylightSavingTimeShifted () { + if (!isUndefined(this._isDSTShifted)) { + return this._isDSTShifted; + } + + var c = {}; + + copyConfig(c, this); + c = prepareConfig(c); + + if (c._a) { + var other = c._isUTC ? create_utc__createUTC(c._a) : local__createLocal(c._a); + this._isDSTShifted = this.isValid() && + compareArrays(c._a, other.toArray()) > 0; + } else { + this._isDSTShifted = false; + } + + return this._isDSTShifted; + } + + function isLocal () { + return this.isValid() ? !this._isUTC : false; + } + + function isUtcOffset () { + return this.isValid() ? this._isUTC : false; + } + + function isUtc () { + return this.isValid() ? this._isUTC && this._offset === 0 : false; + } + + // ASP.NET json date format regex + var aspNetRegex = /^(\-)?(?:(\d*)[. ])?(\d+)\:(\d+)(?:\:(\d+)(\.\d*)?)?$/; + + // from http://docs.closure-library.googlecode.com/git/closure_goog_date_date.js.source.html + // somewhat more in line with 4.4.3.2 2004 spec, but allows decimal anywhere + // and further modified to allow for strings containing both week and day + var isoRegex = /^(-)?P(?:(-?[0-9,.]*)Y)?(?:(-?[0-9,.]*)M)?(?:(-?[0-9,.]*)W)?(?:(-?[0-9,.]*)D)?(?:T(?:(-?[0-9,.]*)H)?(?:(-?[0-9,.]*)M)?(?:(-?[0-9,.]*)S)?)?$/; + + function create__createDuration (input, key) { + var duration = input, + // matching against regexp is expensive, do it on demand + match = null, + sign, + ret, + diffRes; + + if (isDuration(input)) { + duration = { + ms : input._milliseconds, + d : input._days, + M : input._months + }; + } else if (typeof input === 'number') { + duration = {}; + if (key) { + duration[key] = input; + } else { + duration.milliseconds = input; + } + } else if (!!(match = aspNetRegex.exec(input))) { + sign = (match[1] === '-') ? -1 : 1; + duration = { + y : 0, + d : toInt(match[DATE]) * sign, + h : toInt(match[HOUR]) * sign, + m : toInt(match[MINUTE]) * sign, + s : toInt(match[SECOND]) * sign, + ms : toInt(absRound(match[MILLISECOND] * 1000)) * sign // the millisecond decimal point is included in the match + }; + } else if (!!(match = isoRegex.exec(input))) { + sign = (match[1] === '-') ? -1 : 1; + duration = { + y : parseIso(match[2], sign), + M : parseIso(match[3], sign), + w : parseIso(match[4], sign), + d : parseIso(match[5], sign), + h : parseIso(match[6], sign), + m : parseIso(match[7], sign), + s : parseIso(match[8], sign) + }; + } else if (duration == null) {// checks for null or undefined + duration = {}; + } else if (typeof duration === 'object' && ('from' in duration || 'to' in duration)) { + diffRes = momentsDifference(local__createLocal(duration.from), local__createLocal(duration.to)); + + duration = {}; + duration.ms = diffRes.milliseconds; + duration.M = diffRes.months; + } + + ret = new Duration(duration); + + if (isDuration(input) && hasOwnProp(input, '_locale')) { + ret._locale = input._locale; + } + + return ret; + } + + create__createDuration.fn = Duration.prototype; + + function parseIso (inp, sign) { + // We'd normally use ~~inp for this, but unfortunately it also + // converts floats to ints. + // inp may be undefined, so careful calling replace on it. + var res = inp && parseFloat(inp.replace(',', '.')); + // apply sign while we're at it + return (isNaN(res) ? 0 : res) * sign; + } + + function positiveMomentsDifference(base, other) { + var res = {milliseconds: 0, months: 0}; + + res.months = other.month() - base.month() + + (other.year() - base.year()) * 12; + if (base.clone().add(res.months, 'M').isAfter(other)) { + --res.months; + } + + res.milliseconds = +other - +(base.clone().add(res.months, 'M')); + + return res; + } + + function momentsDifference(base, other) { + var res; + if (!(base.isValid() && other.isValid())) { + return {milliseconds: 0, months: 0}; + } + + other = cloneWithOffset(other, base); + if (base.isBefore(other)) { + res = positiveMomentsDifference(base, other); + } else { + res = positiveMomentsDifference(other, base); + res.milliseconds = -res.milliseconds; + res.months = -res.months; + } + + return res; + } + + // TODO: remove 'name' arg after deprecation is removed + function createAdder(direction, name) { + return function (val, period) { + var dur, tmp; + //invert the arguments, but complain about it + if (period !== null && !isNaN(+period)) { + deprecateSimple(name, 'moment().' + name + '(period, number) is deprecated. Please use moment().' + name + '(number, period). ' + + 'See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info.'); + tmp = val; val = period; period = tmp; + } + + val = typeof val === 'string' ? +val : val; + dur = create__createDuration(val, period); + add_subtract__addSubtract(this, dur, direction); + return this; + }; + } + + function add_subtract__addSubtract (mom, duration, isAdding, updateOffset) { + var milliseconds = duration._milliseconds, + days = absRound(duration._days), + months = absRound(duration._months); + + if (!mom.isValid()) { + // No op + return; + } + + updateOffset = updateOffset == null ? true : updateOffset; + + if (milliseconds) { + mom._d.setTime(mom._d.valueOf() + milliseconds * isAdding); + } + if (days) { + get_set__set(mom, 'Date', get_set__get(mom, 'Date') + days * isAdding); + } + if (months) { + setMonth(mom, get_set__get(mom, 'Month') + months * isAdding); + } + if (updateOffset) { + utils_hooks__hooks.updateOffset(mom, days || months); + } + } + + var add_subtract__add = createAdder(1, 'add'); + var add_subtract__subtract = createAdder(-1, 'subtract'); + + function getCalendarFormat(myMoment, now) { + var diff = myMoment.diff(now, 'days', true); + return diff < -6 ? 'sameElse' : + diff < -1 ? 'lastWeek' : + diff < 0 ? 'lastDay' : + diff < 1 ? 'sameDay' : + diff < 2 ? 'nextDay' : + diff < 7 ? 'nextWeek' : 'sameElse'; + } + + function moment_calendar__calendar (time, formats) { + // We want to compare the start of today, vs this. + // Getting start-of-today depends on whether we're local/utc/offset or not. + var now = time || local__createLocal(), + sod = cloneWithOffset(now, this).startOf('day'), + format = utils_hooks__hooks.calendarFormat(this, sod) || 'sameElse'; + + var output = formats && (isFunction(formats[format]) ? formats[format].call(this, now) : formats[format]); + + return this.format(output || this.localeData().calendar(format, this, local__createLocal(now))); + } + + function clone () { + return new Moment(this); + } + + function isAfter (input, units) { + var localInput = isMoment(input) ? input : local__createLocal(input); + if (!(this.isValid() && localInput.isValid())) { + return false; + } + units = normalizeUnits(!isUndefined(units) ? units : 'millisecond'); + if (units === 'millisecond') { + return this.valueOf() > localInput.valueOf(); + } else { + return localInput.valueOf() < this.clone().startOf(units).valueOf(); + } + } + + function isBefore (input, units) { + var localInput = isMoment(input) ? input : local__createLocal(input); + if (!(this.isValid() && localInput.isValid())) { + return false; + } + units = normalizeUnits(!isUndefined(units) ? units : 'millisecond'); + if (units === 'millisecond') { + return this.valueOf() < localInput.valueOf(); + } else { + return this.clone().endOf(units).valueOf() < localInput.valueOf(); + } + } + + function isBetween (from, to, units, inclusivity) { + inclusivity = inclusivity || '()'; + return (inclusivity[0] === '(' ? this.isAfter(from, units) : !this.isBefore(from, units)) && + (inclusivity[1] === ')' ? this.isBefore(to, units) : !this.isAfter(to, units)); + } + + function isSame (input, units) { + var localInput = isMoment(input) ? input : local__createLocal(input), + inputMs; + if (!(this.isValid() && localInput.isValid())) { + return false; + } + units = normalizeUnits(units || 'millisecond'); + if (units === 'millisecond') { + return this.valueOf() === localInput.valueOf(); + } else { + inputMs = localInput.valueOf(); + return this.clone().startOf(units).valueOf() <= inputMs && inputMs <= this.clone().endOf(units).valueOf(); + } + } + + function isSameOrAfter (input, units) { + return this.isSame(input, units) || this.isAfter(input,units); + } + + function isSameOrBefore (input, units) { + return this.isSame(input, units) || this.isBefore(input,units); + } + + function diff (input, units, asFloat) { + var that, + zoneDelta, + delta, output; + + if (!this.isValid()) { + return NaN; + } + + that = cloneWithOffset(input, this); + + if (!that.isValid()) { + return NaN; + } + + zoneDelta = (that.utcOffset() - this.utcOffset()) * 6e4; + + units = normalizeUnits(units); + + if (units === 'year' || units === 'month' || units === 'quarter') { + output = monthDiff(this, that); + if (units === 'quarter') { + output = output / 3; + } else if (units === 'year') { + output = output / 12; + } + } else { + delta = this - that; + output = units === 'second' ? delta / 1e3 : // 1000 + units === 'minute' ? delta / 6e4 : // 1000 * 60 + units === 'hour' ? delta / 36e5 : // 1000 * 60 * 60 + units === 'day' ? (delta - zoneDelta) / 864e5 : // 1000 * 60 * 60 * 24, negate dst + units === 'week' ? (delta - zoneDelta) / 6048e5 : // 1000 * 60 * 60 * 24 * 7, negate dst + delta; + } + return asFloat ? output : absFloor(output); + } + + function monthDiff (a, b) { + // difference in months + var wholeMonthDiff = ((b.year() - a.year()) * 12) + (b.month() - a.month()), + // b is in (anchor - 1 month, anchor + 1 month) + anchor = a.clone().add(wholeMonthDiff, 'months'), + anchor2, adjust; + + if (b - anchor < 0) { + anchor2 = a.clone().add(wholeMonthDiff - 1, 'months'); + // linear across the month + adjust = (b - anchor) / (anchor - anchor2); + } else { + anchor2 = a.clone().add(wholeMonthDiff + 1, 'months'); + // linear across the month + adjust = (b - anchor) / (anchor2 - anchor); + } + + //check for negative zero, return zero if negative zero + return -(wholeMonthDiff + adjust) || 0; + } + + utils_hooks__hooks.defaultFormat = 'YYYY-MM-DDTHH:mm:ssZ'; + utils_hooks__hooks.defaultFormatUtc = 'YYYY-MM-DDTHH:mm:ss[Z]'; + + function toString () { + return this.clone().locale('en').format('ddd MMM DD YYYY HH:mm:ss [GMT]ZZ'); + } + + function moment_format__toISOString () { + var m = this.clone().utc(); + if (0 < m.year() && m.year() <= 9999) { + if (isFunction(Date.prototype.toISOString)) { + // native implementation is ~50x faster, use it when we can + return this.toDate().toISOString(); + } else { + return formatMoment(m, 'YYYY-MM-DD[T]HH:mm:ss.SSS[Z]'); + } + } else { + return formatMoment(m, 'YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]'); + } + } + + function format (inputString) { + if (!inputString) { + inputString = this.isUtc() ? utils_hooks__hooks.defaultFormatUtc : utils_hooks__hooks.defaultFormat; + } + var output = formatMoment(this, inputString); + return this.localeData().postformat(output); + } + + function from (time, withoutSuffix) { + if (this.isValid() && + ((isMoment(time) && time.isValid()) || + local__createLocal(time).isValid())) { + return create__createDuration({to: this, from: time}).locale(this.locale()).humanize(!withoutSuffix); + } else { + return this.localeData().invalidDate(); + } + } + + function fromNow (withoutSuffix) { + return this.from(local__createLocal(), withoutSuffix); + } + + function to (time, withoutSuffix) { + if (this.isValid() && + ((isMoment(time) && time.isValid()) || + local__createLocal(time).isValid())) { + return create__createDuration({from: this, to: time}).locale(this.locale()).humanize(!withoutSuffix); + } else { + return this.localeData().invalidDate(); + } + } + + function toNow (withoutSuffix) { + return this.to(local__createLocal(), withoutSuffix); + } + + // If passed a locale key, it will set the locale for this + // instance. Otherwise, it will return the locale configuration + // variables for this instance. + function locale (key) { + var newLocaleData; + + if (key === undefined) { + return this._locale._abbr; + } else { + newLocaleData = locale_locales__getLocale(key); + if (newLocaleData != null) { + this._locale = newLocaleData; + } + return this; + } + } + + var lang = deprecate( + 'moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.', + function (key) { + if (key === undefined) { + return this.localeData(); + } else { + return this.locale(key); + } + } + ); + + function localeData () { + return this._locale; + } + + function startOf (units) { + units = normalizeUnits(units); + // the following switch intentionally omits break keywords + // to utilize falling through the cases. + switch (units) { + case 'year': + this.month(0); + /* falls through */ + case 'quarter': + case 'month': + this.date(1); + /* falls through */ + case 'week': + case 'isoWeek': + case 'day': + case 'date': + this.hours(0); + /* falls through */ + case 'hour': + this.minutes(0); + /* falls through */ + case 'minute': + this.seconds(0); + /* falls through */ + case 'second': + this.milliseconds(0); + } + + // weeks are a special case + if (units === 'week') { + this.weekday(0); + } + if (units === 'isoWeek') { + this.isoWeekday(1); + } + + // quarters are also special + if (units === 'quarter') { + this.month(Math.floor(this.month() / 3) * 3); + } + + return this; + } + + function endOf (units) { + units = normalizeUnits(units); + if (units === undefined || units === 'millisecond') { + return this; + } + + // 'date' is an alias for 'day', so it should be considered as such. + if (units === 'date') { + units = 'day'; + } + + return this.startOf(units).add(1, (units === 'isoWeek' ? 'week' : units)).subtract(1, 'ms'); + } + + function to_type__valueOf () { + return this._d.valueOf() - ((this._offset || 0) * 60000); + } + + function unix () { + return Math.floor(this.valueOf() / 1000); + } + + function toDate () { + return new Date(this.valueOf()); + } + + function toArray () { + var m = this; + return [m.year(), m.month(), m.date(), m.hour(), m.minute(), m.second(), m.millisecond()]; + } + + function toObject () { + var m = this; + return { + years: m.year(), + months: m.month(), + date: m.date(), + hours: m.hours(), + minutes: m.minutes(), + seconds: m.seconds(), + milliseconds: m.milliseconds() + }; + } + + function toJSON () { + // new Date(NaN).toJSON() === null + return this.isValid() ? this.toISOString() : null; + } + + function moment_valid__isValid () { + return valid__isValid(this); + } + + function parsingFlags () { + return extend({}, getParsingFlags(this)); + } + + function invalidAt () { + return getParsingFlags(this).overflow; + } + + function creationData() { + return { + input: this._i, + format: this._f, + locale: this._locale, + isUTC: this._isUTC, + strict: this._strict + }; + } + + // FORMATTING + + addFormatToken(0, ['gg', 2], 0, function () { + return this.weekYear() % 100; + }); + + addFormatToken(0, ['GG', 2], 0, function () { + return this.isoWeekYear() % 100; + }); + + function addWeekYearFormatToken (token, getter) { + addFormatToken(0, [token, token.length], 0, getter); + } + + addWeekYearFormatToken('gggg', 'weekYear'); + addWeekYearFormatToken('ggggg', 'weekYear'); + addWeekYearFormatToken('GGGG', 'isoWeekYear'); + addWeekYearFormatToken('GGGGG', 'isoWeekYear'); + + // ALIASES + + addUnitAlias('weekYear', 'gg'); + addUnitAlias('isoWeekYear', 'GG'); + + // PRIORITY + + addUnitPriority('weekYear', 1); + addUnitPriority('isoWeekYear', 1); + + + // PARSING + + addRegexToken('G', matchSigned); + addRegexToken('g', matchSigned); + addRegexToken('GG', match1to2, match2); + addRegexToken('gg', match1to2, match2); + addRegexToken('GGGG', match1to4, match4); + addRegexToken('gggg', match1to4, match4); + addRegexToken('GGGGG', match1to6, match6); + addRegexToken('ggggg', match1to6, match6); + + addWeekParseToken(['gggg', 'ggggg', 'GGGG', 'GGGGG'], function (input, week, config, token) { + week[token.substr(0, 2)] = toInt(input); + }); + + addWeekParseToken(['gg', 'GG'], function (input, week, config, token) { + week[token] = utils_hooks__hooks.parseTwoDigitYear(input); + }); + + // MOMENTS + + function getSetWeekYear (input) { + return getSetWeekYearHelper.call(this, + input, + this.week(), + this.weekday(), + this.localeData()._week.dow, + this.localeData()._week.doy); + } + + function getSetISOWeekYear (input) { + return getSetWeekYearHelper.call(this, + input, this.isoWeek(), this.isoWeekday(), 1, 4); + } + + function getISOWeeksInYear () { + return weeksInYear(this.year(), 1, 4); + } + + function getWeeksInYear () { + var weekInfo = this.localeData()._week; + return weeksInYear(this.year(), weekInfo.dow, weekInfo.doy); + } + + function getSetWeekYearHelper(input, week, weekday, dow, doy) { + var weeksTarget; + if (input == null) { + return weekOfYear(this, dow, doy).year; + } else { + weeksTarget = weeksInYear(input, dow, doy); + if (week > weeksTarget) { + week = weeksTarget; + } + return setWeekAll.call(this, input, week, weekday, dow, doy); + } + } + + function setWeekAll(weekYear, week, weekday, dow, doy) { + var dayOfYearData = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy), + date = createUTCDate(dayOfYearData.year, 0, dayOfYearData.dayOfYear); + + this.year(date.getUTCFullYear()); + this.month(date.getUTCMonth()); + this.date(date.getUTCDate()); + return this; + } + + // FORMATTING + + addFormatToken('Q', 0, 'Qo', 'quarter'); + + // ALIASES + + addUnitAlias('quarter', 'Q'); + + // PRIORITY + + addUnitPriority('quarter', 7); + + // PARSING + + addRegexToken('Q', match1); + addParseToken('Q', function (input, array) { + array[MONTH] = (toInt(input) - 1) * 3; + }); + + // MOMENTS + + function getSetQuarter (input) { + return input == null ? Math.ceil((this.month() + 1) / 3) : this.month((input - 1) * 3 + this.month() % 3); + } + + // FORMATTING + + addFormatToken('D', ['DD', 2], 'Do', 'date'); + + // ALIASES + + addUnitAlias('date', 'D'); + + // PRIOROITY + addUnitPriority('date', 9); + + // PARSING - if (!key) { - return moment._locale; - } + addRegexToken('D', match1to2); + addRegexToken('DD', match1to2, match2); + addRegexToken('Do', function (isStrict, locale) { + return isStrict ? locale._ordinalParse : locale._ordinalParseLenient; + }); - if (!isArray(key)) { - //short-circuit everything else - locale = loadLocale(key); - if (locale) { - return locale; - } - key = [key]; - } + addParseToken(['D', 'DD'], DATE); + addParseToken('Do', function (input, array) { + array[DATE] = toInt(input.match(match1to2)[0], 10); + }); - return chooseLocale(key); - }; + // MOMENTS - // compare moment object - moment.isMoment = function (obj) { - return obj instanceof Moment || - (obj != null && hasOwnProp(obj, '_isAMomentObject')); - }; + var getSetDayOfMonth = makeGetSet('Date', true); - // for typechecking Duration objects - moment.isDuration = function (obj) { - return obj instanceof Duration; - }; + // FORMATTING - for (i = lists.length - 1; i >= 0; --i) { - makeList(lists[i]); - } + addFormatToken('DDD', ['DDDD', 3], 'DDDo', 'dayOfYear'); - moment.normalizeUnits = function (units) { - return normalizeUnits(units); - }; + // ALIASES - moment.invalid = function (flags) { - var m = moment.utc(NaN); - if (flags != null) { - extend(m._pf, flags); - } - else { - m._pf.userInvalidated = true; - } + addUnitAlias('dayOfYear', 'DDD'); - return m; - }; + // PRIORITY + addUnitPriority('dayOfYear', 4); - moment.parseZone = function () { - return moment.apply(null, arguments).parseZone(); - }; + // PARSING - moment.parseTwoDigitYear = function (input) { - return toInt(input) + (toInt(input) > 68 ? 1900 : 2000); - }; + addRegexToken('DDD', match1to3); + addRegexToken('DDDD', match3); + addParseToken(['DDD', 'DDDD'], function (input, array, config) { + config._dayOfYear = toInt(input); + }); - /************************************ - Moment Prototype - ************************************/ + // HELPERS + // MOMENTS - extend(moment.fn = Moment.prototype, { + function getSetDayOfYear (input) { + var dayOfYear = Math.round((this.clone().startOf('day') - this.clone().startOf('year')) / 864e5) + 1; + return input == null ? dayOfYear : this.add((input - dayOfYear), 'd'); + } - clone : function () { - return moment(this); - }, + // FORMATTING - valueOf : function () { - return +this._d + ((this._offset || 0) * 60000); - }, + addFormatToken('m', ['mm', 2], 0, 'minute'); - unix : function () { - return Math.floor(+this / 1000); - }, + // ALIASES - toString : function () { - return this.clone().locale('en').format('ddd MMM DD YYYY HH:mm:ss [GMT]ZZ'); - }, + addUnitAlias('minute', 'm'); - toDate : function () { - return this._offset ? new Date(+this) : this._d; - }, + // PRIORITY - toISOString : function () { - var m = moment(this).utc(); - if (0 < m.year() && m.year() <= 9999) { - if ('function' === typeof Date.prototype.toISOString) { - // native implementation is ~50x faster, use it when we can - return this.toDate().toISOString(); - } else { - return formatMoment(m, 'YYYY-MM-DD[T]HH:mm:ss.SSS[Z]'); - } - } else { - return formatMoment(m, 'YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]'); - } - }, + addUnitPriority('minute', 14); - toArray : function () { - var m = this; - return [ - m.year(), - m.month(), - m.date(), - m.hours(), - m.minutes(), - m.seconds(), - m.milliseconds() - ]; - }, + // PARSING - isValid : function () { - return isValid(this); - }, + addRegexToken('m', match1to2); + addRegexToken('mm', match1to2, match2); + addParseToken(['m', 'mm'], MINUTE); - isDSTShifted : function () { - if (this._a) { - return this.isValid() && compareArrays(this._a, (this._isUTC ? moment.utc(this._a) : moment(this._a)).toArray()) > 0; - } + // MOMENTS - return false; - }, + var getSetMinute = makeGetSet('Minutes', false); - parsingFlags : function () { - return extend({}, this._pf); - }, + // FORMATTING - invalidAt: function () { - return this._pf.overflow; - }, + addFormatToken('s', ['ss', 2], 0, 'second'); - utc : function (keepLocalTime) { - return this.zone(0, keepLocalTime); - }, + // ALIASES - local : function (keepLocalTime) { - if (this._isUTC) { - this.zone(0, keepLocalTime); - this._isUTC = false; + addUnitAlias('second', 's'); - if (keepLocalTime) { - this.add(this._dateTzOffset(), 'm'); - } - } - return this; - }, + // PRIORITY - format : function (inputString) { - var output = formatMoment(this, inputString || moment.defaultFormat); - return this.localeData().postformat(output); - }, + addUnitPriority('second', 15); - add : createAdder(1, 'add'), + // PARSING - subtract : createAdder(-1, 'subtract'), + addRegexToken('s', match1to2); + addRegexToken('ss', match1to2, match2); + addParseToken(['s', 'ss'], SECOND); - diff : function (input, units, asFloat) { - var that = makeAs(input, this), - zoneDiff = (this.zone() - that.zone()) * 6e4, - diff, output, daysAdjust; + // MOMENTS - units = normalizeUnits(units); + var getSetSecond = makeGetSet('Seconds', false); - if (units === 'year' || units === 'month') { - // average number of days in the months in the given dates - diff = (this.daysInMonth() + that.daysInMonth()) * 432e5; // 24 * 60 * 60 * 1000 / 2 - // difference in months - output = ((this.year() - that.year()) * 12) + (this.month() - that.month()); - // adjust by taking difference in days, average number of days - // and dst in the given months. - daysAdjust = (this - moment(this).startOf('month')) - - (that - moment(that).startOf('month')); - // same as above but with zones, to negate all dst - daysAdjust -= ((this.zone() - moment(this).startOf('month').zone()) - - (that.zone() - moment(that).startOf('month').zone())) * 6e4; - output += daysAdjust / diff; - if (units === 'year') { - output = output / 12; - } - } else { - diff = (this - that); - output = units === 'second' ? diff / 1e3 : // 1000 - units === 'minute' ? diff / 6e4 : // 1000 * 60 - units === 'hour' ? diff / 36e5 : // 1000 * 60 * 60 - units === 'day' ? (diff - zoneDiff) / 864e5 : // 1000 * 60 * 60 * 24, negate dst - units === 'week' ? (diff - zoneDiff) / 6048e5 : // 1000 * 60 * 60 * 24 * 7, negate dst - diff; - } - return asFloat ? output : absRound(output); - }, - - from : function (time, withoutSuffix) { - return moment.duration({to: this, from: time}).locale(this.locale()).humanize(!withoutSuffix); - }, - - fromNow : function (withoutSuffix) { - return this.from(moment(), withoutSuffix); - }, - - calendar : function (time) { - // We want to compare the start of today, vs this. - // Getting start-of-today depends on whether we're zone'd or not. - var now = time || moment(), - sod = makeAs(now, this).startOf('day'), - diff = this.diff(sod, 'days', true), - format = diff < -6 ? 'sameElse' : - diff < -1 ? 'lastWeek' : - diff < 0 ? 'lastDay' : - diff < 1 ? 'sameDay' : - diff < 2 ? 'nextDay' : - diff < 7 ? 'nextWeek' : 'sameElse'; - return this.format(this.localeData().calendar(format, this, moment(now))); - }, - - isLeapYear : function () { - return isLeapYear(this.year()); - }, - - isDST : function () { - return (this.zone() < this.clone().month(0).zone() || - this.zone() < this.clone().month(5).zone()); - }, - - day : function (input) { - var day = this._isUTC ? this._d.getUTCDay() : this._d.getDay(); - if (input != null) { - input = parseWeekday(input, this.localeData()); - return this.add(input - day, 'd'); - } else { - return day; - } - }, + // FORMATTING - month : makeAccessor('Month', true), + addFormatToken('S', 0, 0, function () { + return ~~(this.millisecond() / 100); + }); - startOf : function (units) { - units = normalizeUnits(units); - // the following switch intentionally omits break keywords - // to utilize falling through the cases. - switch (units) { - case 'year': - this.month(0); - /* falls through */ - case 'quarter': - case 'month': - this.date(1); - /* falls through */ - case 'week': - case 'isoWeek': - case 'day': - this.hours(0); - /* falls through */ - case 'hour': - this.minutes(0); - /* falls through */ - case 'minute': - this.seconds(0); - /* falls through */ - case 'second': - this.milliseconds(0); - /* falls through */ - } + addFormatToken(0, ['SS', 2], 0, function () { + return ~~(this.millisecond() / 10); + }); - // weeks are a special case - if (units === 'week') { - this.weekday(0); - } else if (units === 'isoWeek') { - this.isoWeekday(1); - } + addFormatToken(0, ['SSS', 3], 0, 'millisecond'); + addFormatToken(0, ['SSSS', 4], 0, function () { + return this.millisecond() * 10; + }); + addFormatToken(0, ['SSSSS', 5], 0, function () { + return this.millisecond() * 100; + }); + addFormatToken(0, ['SSSSSS', 6], 0, function () { + return this.millisecond() * 1000; + }); + addFormatToken(0, ['SSSSSSS', 7], 0, function () { + return this.millisecond() * 10000; + }); + addFormatToken(0, ['SSSSSSSS', 8], 0, function () { + return this.millisecond() * 100000; + }); + addFormatToken(0, ['SSSSSSSSS', 9], 0, function () { + return this.millisecond() * 1000000; + }); - // quarters are also special - if (units === 'quarter') { - this.month(Math.floor(this.month() / 3) * 3); - } - return this; - }, + // ALIASES - endOf: function (units) { - units = normalizeUnits(units); - if (units === undefined || units === 'millisecond') { - return this; - } - return this.startOf(units).add(1, (units === 'isoWeek' ? 'week' : units)).subtract(1, 'ms'); - }, + addUnitAlias('millisecond', 'ms'); - isAfter: function (input, units) { - var inputMs; - units = normalizeUnits(typeof units !== 'undefined' ? units : 'millisecond'); - if (units === 'millisecond') { - input = moment.isMoment(input) ? input : moment(input); - return +this > +input; - } else { - inputMs = moment.isMoment(input) ? +input : +moment(input); - return inputMs < +this.clone().startOf(units); - } - }, + // PRIORITY - isBefore: function (input, units) { - var inputMs; - units = normalizeUnits(typeof units !== 'undefined' ? units : 'millisecond'); - if (units === 'millisecond') { - input = moment.isMoment(input) ? input : moment(input); - return +this < +input; - } else { - inputMs = moment.isMoment(input) ? +input : +moment(input); - return +this.clone().endOf(units) < inputMs; - } - }, + addUnitPriority('millisecond', 16); - isSame: function (input, units) { - var inputMs; - units = normalizeUnits(units || 'millisecond'); - if (units === 'millisecond') { - input = moment.isMoment(input) ? input : moment(input); - return +this === +input; - } else { - inputMs = +moment(input); - return +(this.clone().startOf(units)) <= inputMs && inputMs <= +(this.clone().endOf(units)); - } - }, - - min: deprecate( - 'moment().min is deprecated, use moment.min instead. https://github.com/moment/moment/issues/1548', - function (other) { - other = moment.apply(null, arguments); - return other < this ? this : other; - } - ), - - max: deprecate( - 'moment().max is deprecated, use moment.max instead. https://github.com/moment/moment/issues/1548', - function (other) { - other = moment.apply(null, arguments); - return other > this ? this : other; - } - ), - - // keepLocalTime = true means only change the timezone, without - // affecting the local hour. So 5:31:26 +0300 --[zone(2, true)]--> - // 5:31:26 +0200 It is possible that 5:31:26 doesn't exist int zone - // +0200, so we adjust the time as needed, to be valid. - // - // Keeping the time actually adds/subtracts (one hour) - // from the actual represented time. That is why we call updateOffset - // a second time. In case it wants us to change the offset again - // _changeInProgress == true case, then we have to adjust, because - // there is no such time in the given timezone. - zone : function (input, keepLocalTime) { - var offset = this._offset || 0, - localAdjust; - if (input != null) { - if (typeof input === 'string') { - input = timezoneMinutesFromString(input); - } - if (Math.abs(input) < 16) { - input = input * 60; - } - if (!this._isUTC && keepLocalTime) { - localAdjust = this._dateTzOffset(); - } - this._offset = input; - this._isUTC = true; - if (localAdjust != null) { - this.subtract(localAdjust, 'm'); - } - if (offset !== input) { - if (!keepLocalTime || this._changeInProgress) { - addOrSubtractDurationFromMoment(this, - moment.duration(offset - input, 'm'), 1, false); - } else if (!this._changeInProgress) { - this._changeInProgress = true; - moment.updateOffset(this, true); - this._changeInProgress = null; - } - } - } else { - return this._isUTC ? offset : this._dateTzOffset(); - } - return this; - }, + // PARSING - zoneAbbr : function () { - return this._isUTC ? 'UTC' : ''; - }, + addRegexToken('S', match1to3, match1); + addRegexToken('SS', match1to3, match2); + addRegexToken('SSS', match1to3, match3); - zoneName : function () { - return this._isUTC ? 'Coordinated Universal Time' : ''; - }, + var token; + for (token = 'SSSS'; token.length <= 9; token += 'S') { + addRegexToken(token, matchUnsigned); + } - parseZone : function () { - if (this._tzm) { - this.zone(this._tzm); - } else if (typeof this._i === 'string') { - this.zone(this._i); - } - return this; - }, + function parseMs(input, array) { + array[MILLISECOND] = toInt(('0.' + input) * 1000); + } - hasAlignedHourOffset : function (input) { - if (!input) { - input = 0; - } - else { - input = moment(input).zone(); - } - - return (this.zone() - input) % 60 === 0; - }, - - daysInMonth : function () { - return daysInMonth(this.year(), this.month()); - }, - - dayOfYear : function (input) { - var dayOfYear = round((moment(this).startOf('day') - moment(this).startOf('year')) / 864e5) + 1; - return input == null ? dayOfYear : this.add((input - dayOfYear), 'd'); - }, - - quarter : function (input) { - return input == null ? Math.ceil((this.month() + 1) / 3) : this.month((input - 1) * 3 + this.month() % 3); - }, - - weekYear : function (input) { - var year = weekOfYear(this, this.localeData()._week.dow, this.localeData()._week.doy).year; - return input == null ? year : this.add((input - year), 'y'); - }, - - isoWeekYear : function (input) { - var year = weekOfYear(this, 1, 4).year; - return input == null ? year : this.add((input - year), 'y'); - }, - - week : function (input) { - var week = this.localeData().week(this); - return input == null ? week : this.add((input - week) * 7, 'd'); - }, - - isoWeek : function (input) { - var week = weekOfYear(this, 1, 4).week; - return input == null ? week : this.add((input - week) * 7, 'd'); - }, - - weekday : function (input) { - var weekday = (this.day() + 7 - this.localeData()._week.dow) % 7; - return input == null ? weekday : this.add(input - weekday, 'd'); - }, - - isoWeekday : function (input) { - // behaves the same as moment#day except - // as a getter, returns 7 instead of 0 (1-7 range instead of 0-6) - // as a setter, sunday should belong to the previous week. - return input == null ? this.day() || 7 : this.day(this.day() % 7 ? input : input - 7); - }, - - isoWeeksInYear : function () { - return weeksInYear(this.year(), 1, 4); - }, - - weeksInYear : function () { - var weekInfo = this.localeData()._week; - return weeksInYear(this.year(), weekInfo.dow, weekInfo.doy); - }, - - get : function (units) { - units = normalizeUnits(units); - return this[units](); - }, + for (token = 'S'; token.length <= 9; token += 'S') { + addParseToken(token, parseMs); + } + // MOMENTS - set : function (units, value) { - units = normalizeUnits(units); - if (typeof this[units] === 'function') { - this[units](value); - } - return this; - }, + var getSetMillisecond = makeGetSet('Milliseconds', false); - // If passed a locale key, it will set the locale for this - // instance. Otherwise, it will return the locale configuration - // variables for this instance. - locale : function (key) { - var newLocaleData; + // FORMATTING - if (key === undefined) { - return this._locale._abbr; - } else { - newLocaleData = moment.localeData(key); - if (newLocaleData != null) { - this._locale = newLocaleData; - } - return this; - } - }, + addFormatToken('z', 0, 0, 'zoneAbbr'); + addFormatToken('zz', 0, 0, 'zoneName'); - lang : deprecate( - 'moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.', - function (key) { - if (key === undefined) { - return this.localeData(); - } else { - return this.locale(key); - } - } - ), + // MOMENTS - localeData : function () { - return this._locale; - }, + function getZoneAbbr () { + return this._isUTC ? 'UTC' : ''; + } - _dateTzOffset : function () { - // On Firefox.24 Date#getTimezoneOffset returns a floating point. - // https://github.com/moment/moment/pull/1871 - return Math.round(this._d.getTimezoneOffset() / 15) * 15; - } - }); + function getZoneName () { + return this._isUTC ? 'Coordinated Universal Time' : ''; + } - function rawMonthSetter(mom, value) { - var dayOfMonth; + var momentPrototype__proto = Moment.prototype; + + momentPrototype__proto.add = add_subtract__add; + momentPrototype__proto.calendar = moment_calendar__calendar; + momentPrototype__proto.clone = clone; + momentPrototype__proto.diff = diff; + momentPrototype__proto.endOf = endOf; + momentPrototype__proto.format = format; + momentPrototype__proto.from = from; + momentPrototype__proto.fromNow = fromNow; + momentPrototype__proto.to = to; + momentPrototype__proto.toNow = toNow; + momentPrototype__proto.get = stringGet; + momentPrototype__proto.invalidAt = invalidAt; + momentPrototype__proto.isAfter = isAfter; + momentPrototype__proto.isBefore = isBefore; + momentPrototype__proto.isBetween = isBetween; + momentPrototype__proto.isSame = isSame; + momentPrototype__proto.isSameOrAfter = isSameOrAfter; + momentPrototype__proto.isSameOrBefore = isSameOrBefore; + momentPrototype__proto.isValid = moment_valid__isValid; + momentPrototype__proto.lang = lang; + momentPrototype__proto.locale = locale; + momentPrototype__proto.localeData = localeData; + momentPrototype__proto.max = prototypeMax; + momentPrototype__proto.min = prototypeMin; + momentPrototype__proto.parsingFlags = parsingFlags; + momentPrototype__proto.set = stringSet; + momentPrototype__proto.startOf = startOf; + momentPrototype__proto.subtract = add_subtract__subtract; + momentPrototype__proto.toArray = toArray; + momentPrototype__proto.toObject = toObject; + momentPrototype__proto.toDate = toDate; + momentPrototype__proto.toISOString = moment_format__toISOString; + momentPrototype__proto.toJSON = toJSON; + momentPrototype__proto.toString = toString; + momentPrototype__proto.unix = unix; + momentPrototype__proto.valueOf = to_type__valueOf; + momentPrototype__proto.creationData = creationData; + + // Year + momentPrototype__proto.year = getSetYear; + momentPrototype__proto.isLeapYear = getIsLeapYear; + + // Week Year + momentPrototype__proto.weekYear = getSetWeekYear; + momentPrototype__proto.isoWeekYear = getSetISOWeekYear; + + // Quarter + momentPrototype__proto.quarter = momentPrototype__proto.quarters = getSetQuarter; + + // Month + momentPrototype__proto.month = getSetMonth; + momentPrototype__proto.daysInMonth = getDaysInMonth; + + // Week + momentPrototype__proto.week = momentPrototype__proto.weeks = getSetWeek; + momentPrototype__proto.isoWeek = momentPrototype__proto.isoWeeks = getSetISOWeek; + momentPrototype__proto.weeksInYear = getWeeksInYear; + momentPrototype__proto.isoWeeksInYear = getISOWeeksInYear; + + // Day + momentPrototype__proto.date = getSetDayOfMonth; + momentPrototype__proto.day = momentPrototype__proto.days = getSetDayOfWeek; + momentPrototype__proto.weekday = getSetLocaleDayOfWeek; + momentPrototype__proto.isoWeekday = getSetISODayOfWeek; + momentPrototype__proto.dayOfYear = getSetDayOfYear; + + // Hour + momentPrototype__proto.hour = momentPrototype__proto.hours = getSetHour; + + // Minute + momentPrototype__proto.minute = momentPrototype__proto.minutes = getSetMinute; + + // Second + momentPrototype__proto.second = momentPrototype__proto.seconds = getSetSecond; + + // Millisecond + momentPrototype__proto.millisecond = momentPrototype__proto.milliseconds = getSetMillisecond; + + // Offset + momentPrototype__proto.utcOffset = getSetOffset; + momentPrototype__proto.utc = setOffsetToUTC; + momentPrototype__proto.local = setOffsetToLocal; + momentPrototype__proto.parseZone = setOffsetToParsedOffset; + momentPrototype__proto.hasAlignedHourOffset = hasAlignedHourOffset; + momentPrototype__proto.isDST = isDaylightSavingTime; + momentPrototype__proto.isLocal = isLocal; + momentPrototype__proto.isUtcOffset = isUtcOffset; + momentPrototype__proto.isUtc = isUtc; + momentPrototype__proto.isUTC = isUtc; + + // Timezone + momentPrototype__proto.zoneAbbr = getZoneAbbr; + momentPrototype__proto.zoneName = getZoneName; + + // Deprecations + momentPrototype__proto.dates = deprecate('dates accessor is deprecated. Use date instead.', getSetDayOfMonth); + momentPrototype__proto.months = deprecate('months accessor is deprecated. Use month instead', getSetMonth); + momentPrototype__proto.years = deprecate('years accessor is deprecated. Use year instead', getSetYear); + momentPrototype__proto.zone = deprecate('moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/', getSetZone); + momentPrototype__proto.isDSTShifted = deprecate('isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information', isDaylightSavingTimeShifted); + + var momentPrototype = momentPrototype__proto; + + function moment__createUnix (input) { + return local__createLocal(input * 1000); + } - // TODO: Move this out of here! - if (typeof value === 'string') { - value = mom.localeData().monthsParse(value); - // TODO: Another silent failure? - if (typeof value !== 'number') { - return mom; - } - } + function moment__createInZone () { + return local__createLocal.apply(null, arguments).parseZone(); + } - dayOfMonth = Math.min(mom.date(), - daysInMonth(mom.year(), value)); - mom._d['set' + (mom._isUTC ? 'UTC' : '') + 'Month'](value, dayOfMonth); - return mom; + function preParsePostFormat (string) { + return string; } - function rawGetter(mom, unit) { - return mom._d['get' + (mom._isUTC ? 'UTC' : '') + unit](); + var prototype__proto = Locale.prototype; + + prototype__proto.calendar = locale_calendar__calendar; + prototype__proto.longDateFormat = longDateFormat; + prototype__proto.invalidDate = invalidDate; + prototype__proto.ordinal = ordinal; + prototype__proto.preparse = preParsePostFormat; + prototype__proto.postformat = preParsePostFormat; + prototype__proto.relativeTime = relative__relativeTime; + prototype__proto.pastFuture = pastFuture; + prototype__proto.set = locale_set__set; + + // Month + prototype__proto.months = localeMonths; + prototype__proto.monthsShort = localeMonthsShort; + prototype__proto.monthsParse = localeMonthsParse; + prototype__proto.monthsRegex = monthsRegex; + prototype__proto.monthsShortRegex = monthsShortRegex; + + // Week + prototype__proto.week = localeWeek; + prototype__proto.firstDayOfYear = localeFirstDayOfYear; + prototype__proto.firstDayOfWeek = localeFirstDayOfWeek; + + // Day of Week + prototype__proto.weekdays = localeWeekdays; + prototype__proto.weekdaysMin = localeWeekdaysMin; + prototype__proto.weekdaysShort = localeWeekdaysShort; + prototype__proto.weekdaysParse = localeWeekdaysParse; + + prototype__proto.weekdaysRegex = weekdaysRegex; + prototype__proto.weekdaysShortRegex = weekdaysShortRegex; + prototype__proto.weekdaysMinRegex = weekdaysMinRegex; + + // Hours + prototype__proto.isPM = localeIsPM; + prototype__proto.meridiem = localeMeridiem; + + function lists__get (format, index, field, setter) { + var locale = locale_locales__getLocale(); + var utc = create_utc__createUTC().set(setter, index); + return locale[field](utc, format); } - function rawSetter(mom, unit, value) { - if (unit === 'Month') { - return rawMonthSetter(mom, value); - } else { - return mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](value); + function listMonthsImpl (format, index, field) { + if (typeof format === 'number') { + index = format; + format = undefined; + } + + format = format || ''; + + if (index != null) { + return lists__get(format, index, field, 'month'); + } + + var i; + var out = []; + for (i = 0; i < 12; i++) { + out[i] = lists__get(format, i, field, 'month'); } + return out; } - function makeAccessor(unit, keepTime) { - return function (value) { - if (value != null) { - rawSetter(this, unit, value); - moment.updateOffset(this, keepTime); - return this; - } else { - return rawGetter(this, unit); + // () + // (5) + // (fmt, 5) + // (fmt) + // (true) + // (true, 5) + // (true, fmt, 5) + // (true, fmt) + function listWeekdaysImpl (localeSorted, format, index, field) { + if (typeof localeSorted === 'boolean') { + if (typeof format === 'number') { + index = format; + format = undefined; } - }; - } - moment.fn.millisecond = moment.fn.milliseconds = makeAccessor('Milliseconds', false); - moment.fn.second = moment.fn.seconds = makeAccessor('Seconds', false); - moment.fn.minute = moment.fn.minutes = makeAccessor('Minutes', false); - // Setting the hour should keep the time, because the user explicitly - // specified which hour he wants. So trying to maintain the same hour (in - // a new timezone) makes sense. Adding/subtracting hours does not follow - // this rule. - moment.fn.hour = moment.fn.hours = makeAccessor('Hours', true); - // moment.fn.month is defined separately - moment.fn.date = makeAccessor('Date', true); - moment.fn.dates = deprecate('dates accessor is deprecated. Use date instead.', makeAccessor('Date', true)); - moment.fn.year = makeAccessor('FullYear', true); - moment.fn.years = deprecate('years accessor is deprecated. Use year instead.', makeAccessor('FullYear', true)); + format = format || ''; + } else { + format = localeSorted; + index = format; + localeSorted = false; - // add plural methods - moment.fn.days = moment.fn.day; - moment.fn.months = moment.fn.month; - moment.fn.weeks = moment.fn.week; - moment.fn.isoWeeks = moment.fn.isoWeek; - moment.fn.quarters = moment.fn.quarter; + if (typeof format === 'number') { + index = format; + format = undefined; + } - // add aliased format methods - moment.fn.toJSON = moment.fn.toISOString; + format = format || ''; + } - /************************************ - Duration Prototype - ************************************/ + var locale = locale_locales__getLocale(), + shift = localeSorted ? locale._week.dow : 0; + if (index != null) { + return lists__get(format, (index + shift) % 7, field, 'day'); + } - function daysToYears (days) { - // 400 years have 146097 days (taking into account leap year rules) - return days * 400 / 146097; + var i; + var out = []; + for (i = 0; i < 7; i++) { + out[i] = lists__get(format, (i + shift) % 7, field, 'day'); + } + return out; } - function yearsToDays (years) { - // years * 365 + absRound(years / 4) - - // absRound(years / 100) + absRound(years / 400); - return years * 146097 / 400; + function lists__listMonths (format, index) { + return listMonthsImpl(format, index, 'months'); } - extend(moment.duration.fn = Duration.prototype, { - - _bubble : function () { - var milliseconds = this._milliseconds, - days = this._days, - months = this._months, - data = this._data, - seconds, minutes, hours, years = 0; - - // The following code bubbles up values, see the tests for - // examples of what that means. - data.milliseconds = milliseconds % 1000; + function lists__listMonthsShort (format, index) { + return listMonthsImpl(format, index, 'monthsShort'); + } - seconds = absRound(milliseconds / 1000); - data.seconds = seconds % 60; + function lists__listWeekdays (localeSorted, format, index) { + return listWeekdaysImpl(localeSorted, format, index, 'weekdays'); + } - minutes = absRound(seconds / 60); - data.minutes = minutes % 60; + function lists__listWeekdaysShort (localeSorted, format, index) { + return listWeekdaysImpl(localeSorted, format, index, 'weekdaysShort'); + } - hours = absRound(minutes / 60); - data.hours = hours % 24; + function lists__listWeekdaysMin (localeSorted, format, index) { + return listWeekdaysImpl(localeSorted, format, index, 'weekdaysMin'); + } - days += absRound(hours / 24); + locale_locales__getSetGlobalLocale('en', { + ordinalParse: /\d{1,2}(th|st|nd|rd)/, + ordinal : function (number) { + var b = number % 10, + output = (toInt(number % 100 / 10) === 1) ? 'th' : + (b === 1) ? 'st' : + (b === 2) ? 'nd' : + (b === 3) ? 'rd' : 'th'; + return number + output; + } + }); - // Accurately convert days to years, assume start from year 0. - years = absRound(daysToYears(days)); - days -= absRound(yearsToDays(years)); + // Side effect imports + utils_hooks__hooks.lang = deprecate('moment.lang is deprecated. Use moment.locale instead.', locale_locales__getSetGlobalLocale); + utils_hooks__hooks.langData = deprecate('moment.langData is deprecated. Use moment.localeData instead.', locale_locales__getLocale); - // 30 days to a month - // TODO (iskren): Use anchor date (like 1st Jan) to compute this. - months += absRound(days / 30); - days %= 30; + var mathAbs = Math.abs; - // 12 months -> 1 year - years += absRound(months / 12); - months %= 12; + function duration_abs__abs () { + var data = this._data; - data.days = days; - data.months = months; - data.years = years; - }, + this._milliseconds = mathAbs(this._milliseconds); + this._days = mathAbs(this._days); + this._months = mathAbs(this._months); - abs : function () { - this._milliseconds = Math.abs(this._milliseconds); - this._days = Math.abs(this._days); - this._months = Math.abs(this._months); + data.milliseconds = mathAbs(data.milliseconds); + data.seconds = mathAbs(data.seconds); + data.minutes = mathAbs(data.minutes); + data.hours = mathAbs(data.hours); + data.months = mathAbs(data.months); + data.years = mathAbs(data.years); - this._data.milliseconds = Math.abs(this._data.milliseconds); - this._data.seconds = Math.abs(this._data.seconds); - this._data.minutes = Math.abs(this._data.minutes); - this._data.hours = Math.abs(this._data.hours); - this._data.months = Math.abs(this._data.months); - this._data.years = Math.abs(this._data.years); + return this; + } - return this; - }, + function duration_add_subtract__addSubtract (duration, input, value, direction) { + var other = create__createDuration(input, value); - weeks : function () { - return absRound(this.days() / 7); - }, + duration._milliseconds += direction * other._milliseconds; + duration._days += direction * other._days; + duration._months += direction * other._months; - valueOf : function () { - return this._milliseconds + - this._days * 864e5 + - (this._months % 12) * 2592e6 + - toInt(this._months / 12) * 31536e6; - }, + return duration._bubble(); + } - humanize : function (withSuffix) { - var output = relativeTime(this, !withSuffix, this.localeData()); + // supports only 2.0-style add(1, 's') or add(duration) + function duration_add_subtract__add (input, value) { + return duration_add_subtract__addSubtract(this, input, value, 1); + } - if (withSuffix) { - output = this.localeData().pastFuture(+this, output); - } + // supports only 2.0-style subtract(1, 's') or subtract(duration) + function duration_add_subtract__subtract (input, value) { + return duration_add_subtract__addSubtract(this, input, value, -1); + } - return this.localeData().postformat(output); - }, + function absCeil (number) { + if (number < 0) { + return Math.floor(number); + } else { + return Math.ceil(number); + } + } - add : function (input, val) { - // supports only 2.0-style add(1, 's') or add(moment) - var dur = moment.duration(input, val); + function bubble () { + var milliseconds = this._milliseconds; + var days = this._days; + var months = this._months; + var data = this._data; + var seconds, minutes, hours, years, monthsFromDays; + + // if we have a mix of positive and negative values, bubble down first + // check: https://github.com/moment/moment/issues/2166 + if (!((milliseconds >= 0 && days >= 0 && months >= 0) || + (milliseconds <= 0 && days <= 0 && months <= 0))) { + milliseconds += absCeil(monthsToDays(months) + days) * 864e5; + days = 0; + months = 0; + } - this._milliseconds += dur._milliseconds; - this._days += dur._days; - this._months += dur._months; + // The following code bubbles up values, see the tests for + // examples of what that means. + data.milliseconds = milliseconds % 1000; - this._bubble(); + seconds = absFloor(milliseconds / 1000); + data.seconds = seconds % 60; - return this; - }, + minutes = absFloor(seconds / 60); + data.minutes = minutes % 60; - subtract : function (input, val) { - var dur = moment.duration(input, val); + hours = absFloor(minutes / 60); + data.hours = hours % 24; - this._milliseconds -= dur._milliseconds; - this._days -= dur._days; - this._months -= dur._months; + days += absFloor(hours / 24); - this._bubble(); + // convert days to months + monthsFromDays = absFloor(daysToMonths(days)); + months += monthsFromDays; + days -= absCeil(monthsToDays(monthsFromDays)); - return this; - }, + // 12 months -> 1 year + years = absFloor(months / 12); + months %= 12; - get : function (units) { - units = normalizeUnits(units); - return this[units.toLowerCase() + 's'](); - }, + data.days = days; + data.months = months; + data.years = years; - as : function (units) { - var days, months; - units = normalizeUnits(units); + return this; + } - if (units === 'month' || units === 'year') { - days = this._days + this._milliseconds / 864e5; - months = this._months + daysToYears(days) * 12; - return units === 'month' ? months : months / 12; - } else { - // handle milliseconds separately because of floating point math errors (issue #1867) - days = this._days + Math.round(yearsToDays(this._months / 12)); - switch (units) { - case 'week': return days / 7 + this._milliseconds / 6048e5; - case 'day': return days + this._milliseconds / 864e5; - case 'hour': return days * 24 + this._milliseconds / 36e5; - case 'minute': return days * 24 * 60 + this._milliseconds / 6e4; - case 'second': return days * 24 * 60 * 60 + this._milliseconds / 1000; - // Math.floor prevents floating point math errors here - case 'millisecond': return Math.floor(days * 24 * 60 * 60 * 1000) + this._milliseconds; - default: throw new Error('Unknown unit ' + units); - } - } - }, + function daysToMonths (days) { + // 400 years have 146097 days (taking into account leap year rules) + // 400 years have 12 months === 4800 + return days * 4800 / 146097; + } - lang : moment.fn.lang, - locale : moment.fn.locale, + function monthsToDays (months) { + // the reverse of daysToMonths + return months * 146097 / 4800; + } - toIsoString : deprecate( - 'toIsoString() is deprecated. Please use toISOString() instead ' + - '(notice the capitals)', - function () { - return this.toISOString(); - } - ), + function as (units) { + var days; + var months; + var milliseconds = this._milliseconds; - toISOString : function () { - // inspired by https://github.com/dordille/moment-isoduration/blob/master/moment.isoduration.js - var years = Math.abs(this.years()), - months = Math.abs(this.months()), - days = Math.abs(this.days()), - hours = Math.abs(this.hours()), - minutes = Math.abs(this.minutes()), - seconds = Math.abs(this.seconds() + this.milliseconds() / 1000); + units = normalizeUnits(units); - if (!this.asSeconds()) { - // this is the same as C#'s (Noda) and python (isodate)... - // but not other JS (goog.date) - return 'P0D'; + if (units === 'month' || units === 'year') { + days = this._days + milliseconds / 864e5; + months = this._months + daysToMonths(days); + return units === 'month' ? months : months / 12; + } else { + // handle milliseconds separately because of floating point math errors (issue #1867) + days = this._days + Math.round(monthsToDays(this._months)); + switch (units) { + case 'week' : return days / 7 + milliseconds / 6048e5; + case 'day' : return days + milliseconds / 864e5; + case 'hour' : return days * 24 + milliseconds / 36e5; + case 'minute' : return days * 1440 + milliseconds / 6e4; + case 'second' : return days * 86400 + milliseconds / 1000; + // Math.floor prevents floating point math errors here + case 'millisecond': return Math.floor(days * 864e5) + milliseconds; + default: throw new Error('Unknown unit ' + units); } + } + } - return (this.asSeconds() < 0 ? '-' : '') + - 'P' + - (years ? years + 'Y' : '') + - (months ? months + 'M' : '') + - (days ? days + 'D' : '') + - ((hours || minutes || seconds) ? 'T' : '') + - (hours ? hours + 'H' : '') + - (minutes ? minutes + 'M' : '') + - (seconds ? seconds + 'S' : ''); - }, + // TODO: Use this.as('ms')? + function duration_as__valueOf () { + return ( + this._milliseconds + + this._days * 864e5 + + (this._months % 12) * 2592e6 + + toInt(this._months / 12) * 31536e6 + ); + } - localeData : function () { - return this._locale; - } - }); + function makeAs (alias) { + return function () { + return this.as(alias); + }; + } - moment.duration.fn.toString = moment.duration.fn.toISOString; + var asMilliseconds = makeAs('ms'); + var asSeconds = makeAs('s'); + var asMinutes = makeAs('m'); + var asHours = makeAs('h'); + var asDays = makeAs('d'); + var asWeeks = makeAs('w'); + var asMonths = makeAs('M'); + var asYears = makeAs('y'); + + function duration_get__get (units) { + units = normalizeUnits(units); + return this[units + 's'](); + } - function makeDurationGetter(name) { - moment.duration.fn[name] = function () { + function makeGetter(name) { + return function () { return this._data[name]; }; } - for (i in unitMillisecondFactors) { - if (hasOwnProp(unitMillisecondFactors, i)) { - makeDurationGetter(i.toLowerCase()); - } + var milliseconds = makeGetter('milliseconds'); + var seconds = makeGetter('seconds'); + var minutes = makeGetter('minutes'); + var hours = makeGetter('hours'); + var days = makeGetter('days'); + var months = makeGetter('months'); + var years = makeGetter('years'); + + function weeks () { + return absFloor(this.days() / 7); } - moment.duration.fn.asMilliseconds = function () { - return this.as('ms'); - }; - moment.duration.fn.asSeconds = function () { - return this.as('s'); - }; - moment.duration.fn.asMinutes = function () { - return this.as('m'); - }; - moment.duration.fn.asHours = function () { - return this.as('h'); - }; - moment.duration.fn.asDays = function () { - return this.as('d'); - }; - moment.duration.fn.asWeeks = function () { - return this.as('weeks'); - }; - moment.duration.fn.asMonths = function () { - return this.as('M'); - }; - moment.duration.fn.asYears = function () { - return this.as('y'); + var round = Math.round; + var thresholds = { + s: 45, // seconds to minute + m: 45, // minutes to hour + h: 22, // hours to day + d: 26, // days to month + M: 11 // months to year }; - /************************************ - Default Locale - ************************************/ + // helper function for moment.fn.from, moment.fn.fromNow, and moment.duration.fn.humanize + function substituteTimeAgo(string, number, withoutSuffix, isFuture, locale) { + return locale.relativeTime(number || 1, !!withoutSuffix, string, isFuture); + } + function duration_humanize__relativeTime (posNegDuration, withoutSuffix, locale) { + var duration = create__createDuration(posNegDuration).abs(); + var seconds = round(duration.as('s')); + var minutes = round(duration.as('m')); + var hours = round(duration.as('h')); + var days = round(duration.as('d')); + var months = round(duration.as('M')); + var years = round(duration.as('y')); + + var a = seconds < thresholds.s && ['s', seconds] || + minutes <= 1 && ['m'] || + minutes < thresholds.m && ['mm', minutes] || + hours <= 1 && ['h'] || + hours < thresholds.h && ['hh', hours] || + days <= 1 && ['d'] || + days < thresholds.d && ['dd', days] || + months <= 1 && ['M'] || + months < thresholds.M && ['MM', months] || + years <= 1 && ['y'] || ['yy', years]; + + a[2] = withoutSuffix; + a[3] = +posNegDuration > 0; + a[4] = locale; + return substituteTimeAgo.apply(null, a); + } - // Set default locale, other locale will inherit from English. - moment.locale('en', { - ordinalParse: /\d{1,2}(th|st|nd|rd)/, - ordinal : function (number) { - var b = number % 10, - output = (toInt(number % 100 / 10) === 1) ? 'th' : - (b === 1) ? 'st' : - (b === 2) ? 'nd' : - (b === 3) ? 'rd' : 'th'; - return number + output; + // This function allows you to set the rounding function for relative time strings + function duration_humanize__getSetRelativeTimeRounding (roundingFunction) { + if (roundingFunction === undefined) { + return round; } - }); + if (typeof(roundingFunction) === 'function') { + round = roundingFunction; + return true; + } + return false; + } - /* EMBED_LOCALES */ + // This function allows you to set a threshold for relative time strings + function duration_humanize__getSetRelativeTimeThreshold (threshold, limit) { + if (thresholds[threshold] === undefined) { + return false; + } + if (limit === undefined) { + return thresholds[threshold]; + } + thresholds[threshold] = limit; + return true; + } - /************************************ - Exposing Moment - ************************************/ + function humanize (withSuffix) { + var locale = this.localeData(); + var output = duration_humanize__relativeTime(this, !withSuffix, locale); - function makeGlobal(shouldDeprecate) { - /*global ender:false */ - if (typeof ender !== 'undefined') { - return; - } - oldGlobalMoment = globalScope.moment; - if (shouldDeprecate) { - globalScope.moment = deprecate( - 'Accessing Moment through the global scope is ' + - 'deprecated, and will be removed in an upcoming ' + - 'release.', - moment); - } else { - globalScope.moment = moment; + if (withSuffix) { + output = locale.pastFuture(+this, output); } + + return locale.postformat(output); } - // CommonJS module is defined - if (hasModule) { - module.exports = moment; - } else if (typeof define === 'function' && define.amd) { - define('moment', function (require, exports, module) { - if (module.config && module.config() && module.config().noGlobal === true) { - // release the global variable - globalScope.moment = oldGlobalMoment; - } + var iso_string__abs = Math.abs; + + function iso_string__toISOString() { + // for ISO strings we do not use the normal bubbling rules: + // * milliseconds bubble up until they become hours + // * days do not bubble at all + // * months bubble up until they become years + // This is because there is no context-free conversion between hours and days + // (think of clock changes) + // and also not between days and months (28-31 days per month) + var seconds = iso_string__abs(this._milliseconds) / 1000; + var days = iso_string__abs(this._days); + var months = iso_string__abs(this._months); + var minutes, hours, years; + + // 3600 seconds -> 60 minutes -> 1 hour + minutes = absFloor(seconds / 60); + hours = absFloor(minutes / 60); + seconds %= 60; + minutes %= 60; + + // 12 months -> 1 year + years = absFloor(months / 12); + months %= 12; + + + // inspired by https://github.com/dordille/moment-isoduration/blob/master/moment.isoduration.js + var Y = years; + var M = months; + var D = days; + var h = hours; + var m = minutes; + var s = seconds; + var total = this.asSeconds(); + + if (!total) { + // this is the same as C#'s (Noda) and python (isodate)... + // but not other JS (goog.date) + return 'P0D'; + } - return moment; - }); - makeGlobal(true); - } else { - makeGlobal(); + return (total < 0 ? '-' : '') + + 'P' + + (Y ? Y + 'Y' : '') + + (M ? M + 'M' : '') + + (D ? D + 'D' : '') + + ((h || m || s) ? 'T' : '') + + (h ? h + 'H' : '') + + (m ? m + 'M' : '') + + (s ? s + 'S' : ''); } -}).call(this); + + var duration_prototype__proto = Duration.prototype; + + duration_prototype__proto.abs = duration_abs__abs; + duration_prototype__proto.add = duration_add_subtract__add; + duration_prototype__proto.subtract = duration_add_subtract__subtract; + duration_prototype__proto.as = as; + duration_prototype__proto.asMilliseconds = asMilliseconds; + duration_prototype__proto.asSeconds = asSeconds; + duration_prototype__proto.asMinutes = asMinutes; + duration_prototype__proto.asHours = asHours; + duration_prototype__proto.asDays = asDays; + duration_prototype__proto.asWeeks = asWeeks; + duration_prototype__proto.asMonths = asMonths; + duration_prototype__proto.asYears = asYears; + duration_prototype__proto.valueOf = duration_as__valueOf; + duration_prototype__proto._bubble = bubble; + duration_prototype__proto.get = duration_get__get; + duration_prototype__proto.milliseconds = milliseconds; + duration_prototype__proto.seconds = seconds; + duration_prototype__proto.minutes = minutes; + duration_prototype__proto.hours = hours; + duration_prototype__proto.days = days; + duration_prototype__proto.weeks = weeks; + duration_prototype__proto.months = months; + duration_prototype__proto.years = years; + duration_prototype__proto.humanize = humanize; + duration_prototype__proto.toISOString = iso_string__toISOString; + duration_prototype__proto.toString = iso_string__toISOString; + duration_prototype__proto.toJSON = iso_string__toISOString; + duration_prototype__proto.locale = locale; + duration_prototype__proto.localeData = localeData; + + // Deprecations + duration_prototype__proto.toIsoString = deprecate('toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)', iso_string__toISOString); + duration_prototype__proto.lang = lang; + + // Side effect imports + + // FORMATTING + + addFormatToken('X', 0, 0, 'unix'); + addFormatToken('x', 0, 0, 'valueOf'); + + // PARSING + + addRegexToken('x', matchSigned); + addRegexToken('X', matchTimestamp); + addParseToken('X', function (input, array, config) { + config._d = new Date(parseFloat(input, 10) * 1000); + }); + addParseToken('x', function (input, array, config) { + config._d = new Date(toInt(input)); + }); + + // Side effect imports + + + utils_hooks__hooks.version = '2.15.0'; + + setHookCallback(local__createLocal); + + utils_hooks__hooks.fn = momentPrototype; + utils_hooks__hooks.min = min; + utils_hooks__hooks.max = max; + utils_hooks__hooks.now = now; + utils_hooks__hooks.utc = create_utc__createUTC; + utils_hooks__hooks.unix = moment__createUnix; + utils_hooks__hooks.months = lists__listMonths; + utils_hooks__hooks.isDate = isDate; + utils_hooks__hooks.locale = locale_locales__getSetGlobalLocale; + utils_hooks__hooks.invalid = valid__createInvalid; + utils_hooks__hooks.duration = create__createDuration; + utils_hooks__hooks.isMoment = isMoment; + utils_hooks__hooks.weekdays = lists__listWeekdays; + utils_hooks__hooks.parseZone = moment__createInZone; + utils_hooks__hooks.localeData = locale_locales__getLocale; + utils_hooks__hooks.isDuration = isDuration; + utils_hooks__hooks.monthsShort = lists__listMonthsShort; + utils_hooks__hooks.weekdaysMin = lists__listWeekdaysMin; + utils_hooks__hooks.defineLocale = defineLocale; + utils_hooks__hooks.updateLocale = updateLocale; + utils_hooks__hooks.locales = locale_locales__listLocales; + utils_hooks__hooks.weekdaysShort = lists__listWeekdaysShort; + utils_hooks__hooks.normalizeUnits = normalizeUnits; + utils_hooks__hooks.relativeTimeRounding = duration_humanize__getSetRelativeTimeRounding; + utils_hooks__hooks.relativeTimeThreshold = duration_humanize__getSetRelativeTimeThreshold; + utils_hooks__hooks.calendarFormat = getCalendarFormat; + utils_hooks__hooks.prototype = momentPrototype; + + var _moment = utils_hooks__hooks; + + return _moment; + +})); \ No newline at end of file diff --git a/resources/lib/oojs-ui/i18n/bqi.json b/resources/lib/oojs-ui/i18n/bqi.json new file mode 100644 index 0000000000..a84374a29a --- /dev/null +++ b/resources/lib/oojs-ui/i18n/bqi.json @@ -0,0 +1,17 @@ +{ + "@metadata": { + "authors": [ + "Mogoeilor" + ] + }, + "ooui-toolbar-more": "بیشتر", + "ooui-toolgroup-expand": "بیشتر", + "ooui-toolgroup-collapse": "کمتر", + "ooui-dialog-message-accept": "خۈڤإ", + "ooui-dialog-message-reject": "أنجومشيڤ کردن", + "ooui-dialog-process-retry": "ز نۉ تلاش کونين", + "ooui-dialog-process-continue": "ديندا گرهڌن", + "ooui-selectfile-button-select": "گولإڤورچين کردن جانیا", + "ooui-selectfile-placeholder": "هيژ جانيایي گولإ ڤورچين نڤابيڌإ", + "ooui-selectfile-dragdrop-placeholder": "جانيانأ ڤأنين ايچو" +} diff --git a/resources/lib/oojs-ui/i18n/br.json b/resources/lib/oojs-ui/i18n/br.json index 83af863c38..cbfcab074e 100644 --- a/resources/lib/oojs-ui/i18n/br.json +++ b/resources/lib/oojs-ui/i18n/br.json @@ -18,5 +18,9 @@ "ooui-dialog-process-error": "Un dra bennak a-dreuz a zo bet", "ooui-dialog-process-dismiss": "Disteurel", "ooui-dialog-process-retry": "Klask en-dro", - "ooui-dialog-process-continue": "Kenderc'hel" + "ooui-dialog-process-continue": "Kenderc'hel", + "ooui-selectfile-button-select": "Diuzañ ur restr", + "ooui-selectfile-not-supported": "N'eo ket skoret an diuzañ restroù", + "ooui-selectfile-placeholder": "N'eus bet diuzet restr ebet", + "ooui-selectfile-dragdrop-placeholder": "Lezel ar restr amañ" } diff --git a/resources/lib/oojs-ui/i18n/fr.json b/resources/lib/oojs-ui/i18n/fr.json index 92015a4f59..a68c90f695 100644 --- a/resources/lib/oojs-ui/i18n/fr.json +++ b/resources/lib/oojs-ui/i18n/fr.json @@ -29,7 +29,8 @@ "SnowedEarth", "Jdforrester", "Wladek92", - "Harmonia Amanda" + "Harmonia Amanda", + "The RedBurn" ] }, "ooui-outline-control-move-down": "Descendre l’élément", @@ -41,7 +42,7 @@ "ooui-dialog-message-accept": "OK", "ooui-dialog-message-reject": "Annuler", "ooui-dialog-process-error": "Quelque chose s'est mal passé", - "ooui-dialog-process-dismiss": "Rejeter", + "ooui-dialog-process-dismiss": "Fermer", "ooui-dialog-process-retry": "Réessayer", "ooui-dialog-process-continue": "Continuer", "ooui-selectfile-button-select": "Sélectionner un fichier", diff --git a/resources/lib/oojs-ui/i18n/io.json b/resources/lib/oojs-ui/i18n/io.json new file mode 100644 index 0000000000..7d7b1b8337 --- /dev/null +++ b/resources/lib/oojs-ui/i18n/io.json @@ -0,0 +1,23 @@ +{ + "@metadata": { + "authors": [ + "Idojc" + ] + }, + "ooui-outline-control-move-down": "Movar elemento adsube", + "ooui-outline-control-move-up": "Movar elemento adsupere", + "ooui-outline-control-remove": "Forigar elemento", + "ooui-toolbar-more": "Plu multa", + "ooui-toolgroup-expand": "Plu multa", + "ooui-toolgroup-collapse": "Min multa", + "ooui-dialog-message-accept": "Aplikar", + "ooui-dialog-message-reject": "Anular", + "ooui-dialog-process-error": "Ulo faliis", + "ooui-dialog-process-dismiss": "Celar", + "ooui-dialog-process-retry": "Riprobar", + "ooui-dialog-process-continue": "Durar", + "ooui-selectfile-button-select": "Selektar dokumento", + "ooui-selectfile-not-supported": "Dokumento-selekto ne esas suportata", + "ooui-selectfile-placeholder": "Nula dokumento selektesis", + "ooui-selectfile-dragdrop-placeholder": "Pozar dokumento hike" +} diff --git a/resources/lib/oojs-ui/i18n/mg.json b/resources/lib/oojs-ui/i18n/mg.json index af97d17116..722b3e2995 100644 --- a/resources/lib/oojs-ui/i18n/mg.json +++ b/resources/lib/oojs-ui/i18n/mg.json @@ -3,5 +3,21 @@ "authors": [ "Jagwar" ] - } + }, + "ooui-outline-control-move-down": "Hampidina ilay zavatra", + "ooui-outline-control-move-up": "Hampiakatra ilay zavatra", + "ooui-outline-control-remove": "Hanala iay zavatra", + "ooui-toolbar-more": "Be kokoa", + "ooui-toolgroup-expand": "Be kokoa", + "ooui-toolgroup-collapse": "Kely kokoa", + "ooui-dialog-message-accept": "OK", + "ooui-dialog-message-reject": "Avela", + "ooui-dialog-process-error": "Nisy hadisoana nitranga", + "ooui-dialog-process-dismiss": "Esorina", + "ooui-dialog-process-retry": "Andramana indray", + "ooui-dialog-process-continue": "Tohizana", + "ooui-selectfile-button-select": "Misafidia rakitra iray", + "ooui-selectfile-not-supported": "Tsy zaka ny fisafidiana rakitra", + "ooui-selectfile-placeholder": "Tsy misy rakitra voafidy", + "ooui-selectfile-dragdrop-placeholder": "Hametraka rakitra eto" } diff --git a/resources/lib/oojs-ui/i18n/nn.json b/resources/lib/oojs-ui/i18n/nn.json index c8fba3db06..e3f3e115fd 100644 --- a/resources/lib/oojs-ui/i18n/nn.json +++ b/resources/lib/oojs-ui/i18n/nn.json @@ -7,7 +7,13 @@ }, "ooui-outline-control-move-down": "Flytt element ned", "ooui-outline-control-move-up": "Flytt element opp", - "ooui-toolbar-more": "Fleire", + "ooui-toolbar-more": "Meir", + "ooui-toolgroup-expand": "Meir", + "ooui-toolgroup-collapse": "Færre", + "ooui-dialog-message-reject": "Bryt av", + "ooui-dialog-process-error": "Noko gjekk gale", + "ooui-dialog-process-dismiss": "Lat att", + "ooui-dialog-process-continue": "Hald fram", "ooui-selectfile-button-select": "Vel ei fil", "ooui-selectfile-placeholder": "Inga fil er vald" } diff --git a/resources/lib/oojs-ui/i18n/pnb.json b/resources/lib/oojs-ui/i18n/pnb.json index 8bd4be8b3b..386871c164 100644 --- a/resources/lib/oojs-ui/i18n/pnb.json +++ b/resources/lib/oojs-ui/i18n/pnb.json @@ -1,7 +1,8 @@ { "@metadata": { "authors": [ - "Saanvel" + "Saanvel", + "Abbas dhothar" ] }, "ooui-outline-control-move-down": "شیہ تھلے کرو", @@ -9,6 +10,7 @@ "ooui-outline-control-remove": "شیہ مٹاؤ", "ooui-toolbar-more": "ہور", "ooui-toolgroup-expand": "ہور", + "ooui-toolgroup-collapse": "Ú¯Ú¾Ù¹", "ooui-dialog-message-accept": "OK", "ooui-dialog-message-reject": "مکاؤ", "ooui-dialog-process-error": "کوئی رپھڑ پے گیا اے۔", diff --git a/resources/lib/oojs-ui/i18n/sr-ec.json b/resources/lib/oojs-ui/i18n/sr-ec.json index de52812e78..9d3b926dba 100644 --- a/resources/lib/oojs-ui/i18n/sr-ec.json +++ b/resources/lib/oojs-ui/i18n/sr-ec.json @@ -3,7 +3,8 @@ "authors": [ "Milicevic01", "Nikola Smolenski", - "Милан Јелисавчић" + "Милан Јелисавчић", + "Zoranzoki21" ] }, "ooui-outline-control-move-down": "Премести ставку на доле", @@ -19,5 +20,7 @@ "ooui-dialog-process-retry": "Покушај поново", "ooui-dialog-process-continue": "Настави", "ooui-selectfile-button-select": "Изабери датотеку", - "ooui-selectfile-placeholder": "Није изабрана ниједна датотека" + "ooui-selectfile-not-supported": "Избор датотеке није подржан", + "ooui-selectfile-placeholder": "Није изабрана ниједна датотека", + "ooui-selectfile-dragdrop-placeholder": "Додајте датотеку овде" } diff --git a/resources/lib/oojs-ui/i18n/yi.json b/resources/lib/oojs-ui/i18n/yi.json index f206a72378..84048e7c3a 100644 --- a/resources/lib/oojs-ui/i18n/yi.json +++ b/resources/lib/oojs-ui/i18n/yi.json @@ -18,6 +18,7 @@ "ooui-dialog-process-dismiss": "צומאַכן", "ooui-dialog-process-retry": "פרובירט נאכאמאל", "ooui-dialog-process-continue": "פֿארזעצן", + "ooui-selectfile-button-select": "קלויבט א טעקע", "ooui-selectfile-not-supported": "טעקע אויסווייל נישט געשטיצט", "ooui-selectfile-placeholder": "קיין טעקע נישט אויסגעוויילט" } diff --git a/resources/lib/oojs-ui/oojs-ui-apex.js b/resources/lib/oojs-ui/oojs-ui-apex.js index 556196cec0..53ce966f67 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.18.3 + * OOjs UI v0.19.5 * https://www.mediawiki.org/wiki/OOjs_UI * * Copyright 2011–2017 OOjs UI Team and other contributors. * Released under the MIT license * http://oojs.mit-license.org * - * Date: 2017-01-04T00:22:40Z + * Date: 2017-03-07T22:57:01Z */ ( 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 c36774ace2..369cf096ba 100644 --- a/resources/lib/oojs-ui/oojs-ui-core-apex.css +++ b/resources/lib/oojs-ui/oojs-ui-core-apex.css @@ -1,16 +1,15 @@ /*! - * OOjs UI v0.18.3 + * OOjs UI v0.19.5 * https://www.mediawiki.org/wiki/OOjs_UI * * Copyright 2011–2017 OOjs UI Team and other contributors. * Released under the MIT license * http://oojs.mit-license.org * - * Date: 2017-01-04T00:22:45Z + * Date: 2017-03-07T22:57:06Z */ .oo-ui-element-hidden { display: none !important; - /* stylelint-disable-line declaration-no-important */ } .oo-ui-buttonElement { display: inline-block; @@ -19,6 +18,9 @@ .oo-ui-buttonElement > .oo-ui-buttonElement-button { cursor: pointer; display: inline-block; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; vertical-align: middle; font-family: inherit; font-size: inherit; @@ -38,8 +40,8 @@ cursor: default; } .oo-ui-buttonElement.oo-ui-indicatorElement > .oo-ui-buttonElement-button > .oo-ui-indicatorElement-indicator, -.oo-ui-buttonElement.oo-ui-iconElement > .oo-ui-buttonElement-button > .oo-ui-iconElement-icon, -.oo-ui-buttonElement.oo-ui-labelElement > .oo-ui-buttonElement-button > .oo-ui-labelElement-label { +.oo-ui-buttonElement.oo-ui-labelElement > .oo-ui-buttonElement-button > .oo-ui-labelElement-label, +.oo-ui-buttonElement-frameless.oo-ui-iconElement > .oo-ui-buttonElement-button > .oo-ui-iconElement-icon { display: inline-block; vertical-align: middle; } @@ -64,7 +66,7 @@ } .oo-ui-buttonElement-frameless > .oo-ui-buttonElement-button:hover, .oo-ui-buttonElement-frameless > .oo-ui-buttonElement-button:focus { - outline: none; + outline: 0; } .oo-ui-buttonElement-frameless > .oo-ui-buttonElement-button:hover > .oo-ui-iconElement-icon, .oo-ui-buttonElement-frameless > .oo-ui-buttonElement-button:focus > .oo-ui-iconElement-icon { @@ -121,7 +123,7 @@ .oo-ui-buttonElement-framed > .oo-ui-buttonElement-button:hover, .oo-ui-buttonElement-framed > .oo-ui-buttonElement-button:focus { border-color: #aaa; - outline: none; + outline: 0; } .oo-ui-buttonElement-framed > input.oo-ui-buttonElement-button, .oo-ui-buttonElement-framed.oo-ui-labelElement > .oo-ui-buttonElement-button > .oo-ui-labelElement-label { @@ -143,6 +145,8 @@ .oo-ui-buttonElement-framed.oo-ui-iconElement > .oo-ui-buttonElement-button > .oo-ui-iconElement-icon { margin-left: -0.5em; margin-right: -0.5em; + display: inline-block; + vertical-align: middle; } .oo-ui-buttonElement-framed.oo-ui-iconElement.oo-ui-labelElement > .oo-ui-buttonElement-button > .oo-ui-iconElement-icon { margin-right: 0.3em; @@ -211,7 +215,8 @@ .oo-ui-buttonElement-framed.oo-ui-widget-disabled.oo-ui-buttonElement-active > .oo-ui-buttonElement-button, .oo-ui-buttonElement-framed.oo-ui-widget-disabled.oo-ui-buttonElement-pressed > .oo-ui-buttonElement-button { opacity: 0.5; - -webkit-transform: translate3d(0, 0, 0); + -webkit-transform: translateZ(0); + transform: translateZ(0); box-shadow: none; color: #333; background: #eee; @@ -230,6 +235,10 @@ -webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box; + min-height: 3.125em; +} +.oo-ui-floatableElement { + position: absolute; } .oo-ui-iconElement .oo-ui-iconElement-icon, .oo-ui-iconElement.oo-ui-iconElement-icon { @@ -277,57 +286,73 @@ .oo-ui-fieldLayout:after { clear: both; } -.oo-ui-fieldLayout.oo-ui-fieldLayout-align-left > .oo-ui-fieldLayout-body > .oo-ui-labelElement-label, -.oo-ui-fieldLayout.oo-ui-fieldLayout-align-right > .oo-ui-fieldLayout-body > .oo-ui-labelElement-label, +.oo-ui-fieldLayout.oo-ui-fieldLayout-align-left > .oo-ui-fieldLayout-body > .oo-ui-fieldLayout-header, +.oo-ui-fieldLayout.oo-ui-fieldLayout-align-right > .oo-ui-fieldLayout-body > .oo-ui-fieldLayout-header, +.oo-ui-fieldLayout.oo-ui-fieldLayout-align-left > .oo-ui-fieldLayout-body > .oo-ui-fieldLayout-help, +.oo-ui-fieldLayout.oo-ui-fieldLayout-align-right > .oo-ui-fieldLayout-body > .oo-ui-fieldLayout-help, .oo-ui-fieldLayout.oo-ui-fieldLayout-align-left > .oo-ui-fieldLayout-body > .oo-ui-fieldLayout-field, .oo-ui-fieldLayout.oo-ui-fieldLayout-align-right > .oo-ui-fieldLayout-body > .oo-ui-fieldLayout-field { display: block; float: left; } -.oo-ui-fieldLayout.oo-ui-fieldLayout-align-right > .oo-ui-fieldLayout-body > .oo-ui-labelElement-label { +.oo-ui-fieldLayout.oo-ui-fieldLayout-align-right > .oo-ui-fieldLayout-body > .oo-ui-fieldLayout-header { text-align: right; } .oo-ui-fieldLayout.oo-ui-fieldLayout-align-inline > .oo-ui-fieldLayout-body { display: table; + width: 100%; } -.oo-ui-fieldLayout.oo-ui-fieldLayout-align-inline > .oo-ui-fieldLayout-body > .oo-ui-labelElement-label, +.oo-ui-fieldLayout.oo-ui-fieldLayout-align-inline > .oo-ui-fieldLayout-body > .oo-ui-fieldLayout-header, .oo-ui-fieldLayout.oo-ui-fieldLayout-align-inline > .oo-ui-fieldLayout-body > .oo-ui-fieldLayout-field { display: table-cell; vertical-align: middle; } -.oo-ui-fieldLayout.oo-ui-labelElement.oo-ui-fieldLayout-align-top > .oo-ui-fieldLayout-body > .oo-ui-labelElement-label { - display: inline-block; +.oo-ui-fieldLayout.oo-ui-fieldLayout-align-inline > .oo-ui-fieldLayout-body > .oo-ui-fieldLayout-field { + width: 1px; } -.oo-ui-fieldLayout > .oo-ui-fieldLayout-help { +.oo-ui-fieldLayout .oo-ui-fieldLayout-help { float: right; } -.oo-ui-fieldLayout > .oo-ui-fieldLayout-help > .oo-ui-popupWidget > .oo-ui-popupWidget-popup { +.oo-ui-fieldLayout .oo-ui-fieldLayout-help > .oo-ui-popupWidget > .oo-ui-popupWidget-popup { z-index: 1; } -.oo-ui-fieldLayout > .oo-ui-fieldLayout-help .oo-ui-fieldLayout-help-content { - padding: 0.5em 0.75em; - line-height: 1.5; +.oo-ui-fieldLayout.oo-ui-fieldLayout-align-top .oo-ui-fieldLayout-help, +.oo-ui-fieldLayout.oo-ui-fieldLayout-align-inline .oo-ui-fieldLayout-help { + margin-top: -0.3em; } .oo-ui-fieldLayout:last-child { margin-bottom: 0; } -.oo-ui-fieldLayout.oo-ui-fieldLayout-align-left.oo-ui-labelElement > .oo-ui-fieldLayout-body > .oo-ui-labelElement-label, -.oo-ui-fieldLayout.oo-ui-fieldLayout-align-right.oo-ui-labelElement > .oo-ui-fieldLayout-body > .oo-ui-labelElement-label { - padding-top: 0.5em; - margin-right: 5%; - width: 35%; +.oo-ui-fieldLayout.oo-ui-fieldLayout-align-left > .oo-ui-fieldLayout-body > .oo-ui-fieldLayout-help, +.oo-ui-fieldLayout.oo-ui-fieldLayout-align-right > .oo-ui-fieldLayout-body > .oo-ui-fieldLayout-help { + margin-right: 0; + margin-left: -1.875em; } .oo-ui-fieldLayout.oo-ui-fieldLayout-align-left > .oo-ui-fieldLayout-body > .oo-ui-fieldLayout-field, .oo-ui-fieldLayout.oo-ui-fieldLayout-align-right > .oo-ui-fieldLayout-body > .oo-ui-fieldLayout-field { width: 60%; } +.oo-ui-fieldLayout.oo-ui-fieldLayout-align-left.oo-ui-labelElement > .oo-ui-fieldLayout-body > .oo-ui-fieldLayout-header, +.oo-ui-fieldLayout.oo-ui-fieldLayout-align-right.oo-ui-labelElement > .oo-ui-fieldLayout-body > .oo-ui-fieldLayout-header { + margin-right: 5%; + width: 35%; +} +.oo-ui-fieldLayout.oo-ui-fieldLayout-align-left.oo-ui-labelElement > .oo-ui-fieldLayout-body > .oo-ui-fieldLayout-header > .oo-ui-labelElement-label, +.oo-ui-fieldLayout.oo-ui-fieldLayout-align-right.oo-ui-labelElement > .oo-ui-fieldLayout-body > .oo-ui-fieldLayout-header > .oo-ui-labelElement-label { + display: block; + padding-top: 0.5em; +} .oo-ui-fieldLayout.oo-ui-fieldLayout-align-inline { margin-bottom: 1.25em; } -.oo-ui-fieldLayout.oo-ui-fieldLayout-align-inline.oo-ui-labelElement > .oo-ui-fieldLayout-body > .oo-ui-labelElement-label { - padding: 0.25em 0.25em 0.25em 0.5em; +.oo-ui-fieldLayout.oo-ui-fieldLayout-align-inline > .oo-ui-fieldLayout-body { + max-width: 50em; +} +.oo-ui-fieldLayout.oo-ui-fieldLayout-align-inline.oo-ui-labelElement > .oo-ui-fieldLayout-body > .oo-ui-fieldLayout-header { + padding: 0.25em 0 0.25em 0.5em; } -.oo-ui-fieldLayout.oo-ui-fieldLayout-align-top.oo-ui-labelElement > .oo-ui-fieldLayout-body > .oo-ui-labelElement-label { +.oo-ui-fieldLayout.oo-ui-fieldLayout-align-top.oo-ui-labelElement > .oo-ui-fieldLayout-body > .oo-ui-fieldLayout-header { + max-width: 50em; padding: 0.5em 0; } .oo-ui-fieldLayout > .oo-ui-popupButtonWidget { @@ -337,7 +362,7 @@ .oo-ui-fieldLayout > .oo-ui-popupButtonWidget:last-child { margin-right: 0; } -.oo-ui-fieldLayout-disabled > .oo-ui-fieldLayout-body > .oo-ui-labelElement-label { +.oo-ui-fieldLayout-disabled > .oo-ui-fieldLayout-body > .oo-ui-fieldLayout-header > .oo-ui-labelElement-label { color: #ccc; } .oo-ui-fieldLayout-messages { @@ -362,9 +387,6 @@ line-height: 1.5em; vertical-align: middle; } -.oo-ui-actionFieldLayout { - max-width: 50em; -} .oo-ui-actionFieldLayout-input, .oo-ui-actionFieldLayout-button { display: table-cell; @@ -377,6 +399,9 @@ width: 1%; white-space: nowrap; } +.oo-ui-actionFieldLayout.oo-ui-fieldLayout-align-top { + max-width: 50em; +} .oo-ui-fieldsetLayout { position: relative; min-width: 0; @@ -387,57 +412,57 @@ body:not( :-moz-handler-blocked ) .oo-ui-fieldsetLayout { display: table-cell; } -.oo-ui-fieldsetLayout.oo-ui-iconElement > .oo-ui-iconElement-icon { +.oo-ui-fieldsetLayout.oo-ui-iconElement > .oo-ui-fieldsetLayout-header > .oo-ui-iconElement-icon { display: block; position: absolute; } -.oo-ui-fieldsetLayout.oo-ui-labelElement > .oo-ui-labelElement-label { +.oo-ui-fieldsetLayout.oo-ui-labelElement > .oo-ui-fieldsetLayout-header { color: inherit; display: inline-table; box-sizing: border-box; - max-width: 100%; padding: 0; white-space: normal; float: left; + width: 100%; } -.oo-ui-fieldsetLayout.oo-ui-labelElement > .oo-ui-labelElement-label:empty { +.oo-ui-fieldsetLayout.oo-ui-labelElement > .oo-ui-fieldsetLayout-header > .oo-ui-labelElement-label:empty { display: none; } .oo-ui-fieldsetLayout-group { clear: both; } -.oo-ui-fieldsetLayout > .oo-ui-fieldsetLayout-help { +.oo-ui-fieldsetLayout .oo-ui-fieldsetLayout-help { float: right; } -.oo-ui-fieldsetLayout > .oo-ui-fieldsetLayout-help > .oo-ui-popupWidget > .oo-ui-popupWidget-popup { +.oo-ui-fieldsetLayout .oo-ui-fieldsetLayout-help > .oo-ui-popupWidget > .oo-ui-popupWidget-popup { z-index: 1; } -.oo-ui-fieldsetLayout > .oo-ui-fieldsetLayout-help .oo-ui-fieldsetLayout-help-content { - padding: 0.5em 0.75em; - line-height: 1.4; +.oo-ui-fieldsetLayout .oo-ui-fieldsetLayout-header { + max-width: 50em; } .oo-ui-fieldsetLayout + .oo-ui-fieldsetLayout, .oo-ui-fieldsetLayout + .oo-ui-formLayout { margin-top: 2em; } -.oo-ui-fieldsetLayout.oo-ui-labelElement > .oo-ui-labelElement-label { +.oo-ui-fieldsetLayout.oo-ui-labelElement > .oo-ui-fieldsetLayout-header > .oo-ui-labelElement-label { + display: inline-block; font-size: 1.1em; margin-bottom: 0.5em; padding: 0.25em 0; font-weight: bold; } -.oo-ui-fieldsetLayout.oo-ui-iconElement > .oo-ui-labelElement-label { +.oo-ui-fieldsetLayout.oo-ui-iconElement > .oo-ui-fieldsetLayout-header > .oo-ui-labelElement-label { padding-left: 2em; line-height: 1.8em; } -.oo-ui-fieldsetLayout.oo-ui-iconElement > .oo-ui-iconElement-icon { +.oo-ui-fieldsetLayout.oo-ui-iconElement > .oo-ui-fieldsetLayout-header > .oo-ui-iconElement-icon { left: 0; top: 0.25em; } -.oo-ui-fieldsetLayout > .oo-ui-popupButtonWidget { +.oo-ui-fieldsetLayout > .oo-ui-fieldsetLayout-header > .oo-ui-popupButtonWidget { margin-right: 0; } -.oo-ui-fieldsetLayout > .oo-ui-popupButtonWidget:last-child { +.oo-ui-fieldsetLayout > .oo-ui-fieldsetLayout-header > .oo-ui-popupButtonWidget:last-child { margin-right: 0; } .oo-ui-formLayout + .oo-ui-fieldsetLayout, @@ -448,9 +473,9 @@ body:not( :-moz-handler-blocked ) .oo-ui-fieldsetLayout { position: relative; } .oo-ui-panelLayout-scrollable { - overflow-y: auto; - /* Make scrolling smooth */ - -webkit-transform: translate3d(0, 0, 0); + overflow: auto; + -webkit-transform: translateZ(0); + transform: translateZ(0); } .oo-ui-panelLayout-expanded { position: absolute; @@ -463,6 +488,7 @@ body:not( :-moz-handler-blocked ) .oo-ui-fieldsetLayout { padding: 1.25em; } .oo-ui-panelLayout-framed { + border: 1px solid #ccc; border-radius: 0.5em; box-shadow: 0 0.25em 1em rgba(0, 0, 0, 0.25); } @@ -598,7 +624,7 @@ body:not( :-moz-handler-blocked ) .oo-ui-fieldsetLayout { border-radius: 0.3em; margin-right: 0.5em; } -.oo-ui-buttonGroupWidget .oo-ui-buttonElement-active .oo-ui-buttonElement-button { +.oo-ui-buttonGroupWidget .oo-ui-buttonWidget.oo-ui-buttonElement-active .oo-ui-buttonElement-button { cursor: default; } .oo-ui-buttonGroupWidget:last-child { @@ -625,8 +651,6 @@ body:not( :-moz-handler-blocked ) .oo-ui-fieldsetLayout { } .oo-ui-popupWidget { position: absolute; - /* @noflip */ - left: 0; } .oo-ui-popupWidget-popup { position: relative; @@ -640,11 +664,49 @@ body:not( :-moz-handler-blocked ) .oo-ui-fieldsetLayout { .oo-ui-popupWidget-anchored .oo-ui-popupWidget-anchor { display: block; position: absolute; - top: 0; - /* @noflip */ - left: 0; background-repeat: no-repeat; } +.oo-ui-popupWidget-anchored .oo-ui-popupWidget-anchor:before, +.oo-ui-popupWidget-anchored .oo-ui-popupWidget-anchor:after { + content: ''; + position: absolute; + width: 0; + height: 0; + border-style: solid; + border-color: transparent; +} +.oo-ui-popupWidget-anchored-top .oo-ui-popupWidget-anchor { + left: 0; + /* `top` property is to be set in theme's selector due to specific `@size-anchor` values */ +} +.oo-ui-popupWidget-anchored-top .oo-ui-popupWidget-anchor:before, +.oo-ui-popupWidget-anchored-top .oo-ui-popupWidget-anchor:after { + border-top: 0; +} +.oo-ui-popupWidget-anchored-bottom .oo-ui-popupWidget-anchor { + left: 0; + /* `bottom` property is to be set in theme's selector due to specific `@size-anchor` values */ +} +.oo-ui-popupWidget-anchored-bottom .oo-ui-popupWidget-anchor:before, +.oo-ui-popupWidget-anchored-bottom .oo-ui-popupWidget-anchor:after { + border-bottom: 0; +} +.oo-ui-popupWidget-anchored-start .oo-ui-popupWidget-anchor { + top: 0; + /* `left` property is to be set in theme's selector due to specific `@size-anchor` values */ +} +.oo-ui-popupWidget-anchored-start .oo-ui-popupWidget-anchor:before, +.oo-ui-popupWidget-anchored-start .oo-ui-popupWidget-anchor:after { + border-left: 0; +} +.oo-ui-popupWidget-anchored-end .oo-ui-popupWidget-anchor { + top: 0; + /* `right` property is to be set in theme's selector due to specific `@size-anchor` values */ +} +.oo-ui-popupWidget-anchored-end .oo-ui-popupWidget-anchor:before, +.oo-ui-popupWidget-anchored-end .oo-ui-popupWidget-anchor:after { + border-right: 0; +} .oo-ui-popupWidget-head { -webkit-touch-callout: none; -webkit-user-select: none; @@ -661,7 +723,9 @@ body:not( :-moz-handler-blocked ) .oo-ui-fieldsetLayout { } .oo-ui-popupWidget-body { clear: both; - overflow: hidden; +} +.oo-ui-popupWidget-body.oo-ui-clippableElement-clippable { + min-height: 1em; } .oo-ui-popupWidget-popup { background-color: #fff; @@ -669,31 +733,78 @@ body:not( :-moz-handler-blocked ) .oo-ui-fieldsetLayout { border-radius: 0.25em; box-shadow: 0 0.15em 0.5em 0 rgba(0, 0, 0, 0.2); } -.oo-ui-popupWidget-anchored .oo-ui-popupWidget-popup { +.oo-ui-popupWidget-anchored-top { margin-top: 6px; } -.oo-ui-popupWidget-anchored .oo-ui-popupWidget-anchor:before, -.oo-ui-popupWidget-anchored .oo-ui-popupWidget-anchor:after { - content: ''; - position: absolute; - width: 0; - height: 0; - border-style: solid; - border-color: transparent; - border-top: 0; +.oo-ui-popupWidget-anchored-top .oo-ui-popupWidget-anchor { + top: -6px; } -.oo-ui-popupWidget-anchored .oo-ui-popupWidget-anchor:before { +.oo-ui-popupWidget-anchored-top .oo-ui-popupWidget-anchor:before { bottom: -7px; left: -6px; border-bottom-color: #aaa; border-width: 7px; } -.oo-ui-popupWidget-anchored .oo-ui-popupWidget-anchor:after { +.oo-ui-popupWidget-anchored-top .oo-ui-popupWidget-anchor:after { bottom: -7px; left: -5px; border-bottom-color: #fff; border-width: 6px; } +.oo-ui-popupWidget-anchored-bottom { + margin-bottom: 6px; +} +.oo-ui-popupWidget-anchored-bottom .oo-ui-popupWidget-anchor { + bottom: -6px; +} +.oo-ui-popupWidget-anchored-bottom .oo-ui-popupWidget-anchor:before { + top: -7px; + left: -6px; + border-top-color: #aaa; + border-width: 7px; +} +.oo-ui-popupWidget-anchored-bottom .oo-ui-popupWidget-anchor:after { + top: -7px; + left: -5px; + border-top-color: #fff; + border-width: 6px; +} +.oo-ui-popupWidget-anchored-start { + margin-left: 6px; +} +.oo-ui-popupWidget-anchored-start .oo-ui-popupWidget-anchor { + left: -6px; +} +.oo-ui-popupWidget-anchored-start .oo-ui-popupWidget-anchor:before { + right: -7px; + top: -6px; + border-right-color: #aaa; + border-width: 7px; +} +.oo-ui-popupWidget-anchored-start .oo-ui-popupWidget-anchor:after { + right: -7px; + top: -5px; + border-right-color: #fff; + border-width: 6px; +} +.oo-ui-popupWidget-anchored-end { + margin-right: 6px; +} +.oo-ui-popupWidget-anchored-end .oo-ui-popupWidget-anchor { + right: -6px; +} +.oo-ui-popupWidget-anchored-end .oo-ui-popupWidget-anchor:before { + left: -7px; + top: -6px; + border-left-color: #aaa; + border-width: 7px; +} +.oo-ui-popupWidget-anchored-end .oo-ui-popupWidget-anchor:after { + left: -7px; + top: -5px; + border-left-color: #fff; + border-width: 6px; +} .oo-ui-popupWidget-transitioning .oo-ui-popupWidget-popup { -webkit-transition: width 100ms ease, height 100ms ease, left 100ms ease; -moz-transition: width 100ms ease, height 100ms ease, left 100ms ease; @@ -708,8 +819,11 @@ body:not( :-moz-handler-blocked ) .oo-ui-fieldsetLayout { .oo-ui-popupWidget-head > .oo-ui-labelElement-label { margin: 0.75em 1em; } +.oo-ui-popupWidget-body { + line-height: 1.4; +} .oo-ui-popupWidget-body-padded { - padding: 0 1em; + margin: 0.75em 1em; } .oo-ui-popupButtonWidget { position: relative; @@ -717,13 +831,13 @@ body:not( :-moz-handler-blocked ) .oo-ui-fieldsetLayout { .oo-ui-popupButtonWidget .oo-ui-popupWidget { cursor: auto; } -.oo-ui-popupButtonWidget.oo-ui-buttonElement-frameless > .oo-ui-popupWidget { - /* @noflip */ - left: 0.9375em; +.oo-ui-popupButtonWidget-frameless-popup.oo-ui-popupWidget-anchored-top .oo-ui-popupWidget-anchor, +.oo-ui-popupButtonWidget-frameless-popup.oo-ui-popupWidget-anchored-bottom .oo-ui-popupWidget-anchor { + margin-left: 0.9375em; } -.oo-ui-popupButtonWidget.oo-ui-buttonElement-framed > .oo-ui-popupWidget { - /* @noflip */ - left: 1.2375em; +.oo-ui-popupButtonWidget-framed-popup.oo-ui-popupWidget-anchored-top .oo-ui-popupWidget-anchor, +.oo-ui-popupButtonWidget-framed-popup.oo-ui-popupWidget-anchored-bottom .oo-ui-popupWidget-anchor { + margin-left: 1.2375em; } .oo-ui-inputWidget { margin-right: 0.5em; @@ -778,7 +892,7 @@ body:not( :-moz-handler-blocked ) .oo-ui-fieldsetLayout { .oo-ui-dropdownInputWidget.oo-ui-widget-enabled select:hover, .oo-ui-dropdownInputWidget.oo-ui-widget-enabled select:focus { border-color: rgba(0, 0, 0, 0.2); - outline: none; + outline: 0; } .oo-ui-dropdownInputWidget.oo-ui-widget-disabled select { color: #ccc; @@ -833,14 +947,10 @@ body:not( :-moz-handler-blocked ) .oo-ui-fieldsetLayout { display: none; } .oo-ui-textInputWidget.oo-ui-iconElement > .oo-ui-iconElement-icon, -.oo-ui-textInputWidget.oo-ui-indicatorElement > .oo-ui-indicatorElement-indicator, -.oo-ui-textInputWidget > .oo-ui-labelElement-label { +.oo-ui-textInputWidget.oo-ui-indicatorElement > .oo-ui-indicatorElement-indicator { display: block; position: absolute; top: 0; -} -.oo-ui-textInputWidget.oo-ui-iconElement > .oo-ui-iconElement-icon, -.oo-ui-textInputWidget.oo-ui-indicatorElement > .oo-ui-indicatorElement-indicator { height: 100%; -webkit-touch-callout: none; -webkit-user-select: none; @@ -848,24 +958,21 @@ body:not( :-moz-handler-blocked ) .oo-ui-fieldsetLayout { -ms-user-select: none; user-select: none; } -.oo-ui-textInputWidget > .oo-ui-iconElement-icon, -.oo-ui-textInputWidget-labelPosition-before > .oo-ui-labelElement-label { - left: 0; -} -.oo-ui-textInputWidget > .oo-ui-indicatorElement-indicator, -.oo-ui-textInputWidget-labelPosition-after > .oo-ui-labelElement-label { - right: 0; -} .oo-ui-textInputWidget.oo-ui-widget-enabled > .oo-ui-iconElement-icon, -.oo-ui-textInputWidget.oo-ui-widget-enabled > .oo-ui-indicatorElement-indicator, -.oo-ui-textInputWidget.oo-ui-widget-enabled > .oo-ui-labelElement-label { +.oo-ui-textInputWidget.oo-ui-widget-enabled > .oo-ui-indicatorElement-indicator { cursor: text; } .oo-ui-textInputWidget.oo-ui-widget-enabled.oo-ui-textInputWidget-type-search > .oo-ui-indicatorElement-indicator { cursor: pointer; } .oo-ui-textInputWidget.oo-ui-widget-disabled input, -.oo-ui-textInputWidget.oo-ui-widget-disabled textarea, +.oo-ui-textInputWidget.oo-ui-widget-disabled textarea { + -webkit-touch-callout: none; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} .oo-ui-textInputWidget.oo-ui-widget-disabled .oo-ui-labelElement-label { -webkit-touch-callout: none; -webkit-user-select: none; @@ -873,6 +980,26 @@ body:not( :-moz-handler-blocked ) .oo-ui-fieldsetLayout { -ms-user-select: none; user-select: none; } +.oo-ui-textInputWidget.oo-ui-labelElement > .oo-ui-labelElement-label { + display: block; +} +.oo-ui-textInputWidget > .oo-ui-iconElement-icon, +.oo-ui-textInputWidget-labelPosition-before > .oo-ui-labelElement-label { + left: 0; +} +.oo-ui-textInputWidget > .oo-ui-indicatorElement-indicator, +.oo-ui-textInputWidget-labelPosition-after > .oo-ui-labelElement-label { + right: 0; +} +.oo-ui-textInputWidget > .oo-ui-labelElement-label { + position: absolute; + top: 0; +} +.oo-ui-textInputWidget-php > .oo-ui-iconElement-icon, +.oo-ui-textInputWidget-php > .oo-ui-indicatorElement-indicator, +.oo-ui-textInputWidget-php > .oo-ui-labelElement-label { + pointer-events: none; +} .oo-ui-textInputWidget input, .oo-ui-textInputWidget textarea { padding: 0.5em; @@ -892,9 +1019,34 @@ body:not( :-moz-handler-blocked ) .oo-ui-fieldsetLayout { .oo-ui-textInputWidget textarea.oo-ui-pendingElement-pending { background-color: transparent; } +.oo-ui-textInputWidget input::-webkit-input-placeholder, +.oo-ui-textInputWidget textarea::-webkit-input-placeholder { + color: #72777d; + opacity: 1; +} +.oo-ui-textInputWidget input:-ms-input-placeholder, +.oo-ui-textInputWidget textarea:-ms-input-placeholder { + color: #72777d; + opacity: 1; +} +.oo-ui-textInputWidget input::-moz-placeholder, +.oo-ui-textInputWidget textarea::-moz-placeholder { + color: #72777d; + opacity: 1; +} +.oo-ui-textInputWidget input:-moz-placeholder, +.oo-ui-textInputWidget textarea:-moz-placeholder { + color: #72777d; + opacity: 1; +} +.oo-ui-textInputWidget input::placeholder, +.oo-ui-textInputWidget textarea::placeholder { + color: #72777d; + opacity: 1; +} .oo-ui-textInputWidget.oo-ui-widget-enabled input:focus, .oo-ui-textInputWidget.oo-ui-widget-enabled textarea:focus { - outline: none; + outline: 0; border-color: #a7dcff; box-shadow: 0 0 0.3em #a7dcff, 0 0 0 #fff; } @@ -965,6 +1117,12 @@ body:not( :-moz-handler-blocked ) .oo-ui-fieldsetLayout { overflow: hidden; opacity: 0; } +.oo-ui-menuSelectWidget.oo-ui-clippableElement-clippable { + min-height: 2.6em; +} +.oo-ui-menuSelectWidget-invisible { + display: none; +} .oo-ui-menuOptionWidget { position: relative; } @@ -1010,9 +1168,11 @@ body:not( :-moz-handler-blocked ) .oo-ui-fieldsetLayout { -moz-box-sizing: border-box; box-sizing: border-box; } -.oo-ui-dropdownWidget-handle .oo-ui-indicatorElement-indicator, -.oo-ui-dropdownWidget-handle .oo-ui-iconElement-icon { +.oo-ui-dropdownWidget-handle .oo-ui-iconElement-icon, +.oo-ui-dropdownWidget-handle .oo-ui-indicatorElement-indicator { position: absolute; + top: 0; + height: 100%; } .oo-ui-dropdownWidget.oo-ui-widget-enabled .oo-ui-dropdownWidget-handle { cursor: pointer; @@ -1028,20 +1188,18 @@ 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 .oo-ui-indicatorElement-indicator { - top: 0; - right: 0; - margin: 0.775em; -} .oo-ui-dropdownWidget-handle .oo-ui-iconElement-icon { - top: 0; left: 0.25em; - margin: 0.3em; + margin: 0 0.3em; } .oo-ui-dropdownWidget-handle .oo-ui-labelElement-label { line-height: 2.5em; margin: 0 0.5em; } +.oo-ui-dropdownWidget-handle .oo-ui-indicatorElement-indicator { + right: 0; + margin: 0 0.775em; +} .oo-ui-dropdownWidget.oo-ui-widget-disabled .oo-ui-dropdownWidget-handle { color: #ccc; text-shadow: 0 1px 1px #fff; @@ -1083,9 +1241,6 @@ body:not( :-moz-handler-blocked ) .oo-ui-fieldsetLayout { } .oo-ui-comboBoxInputWidget-dropdownButton > .oo-ui-buttonElement-button { display: block; - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; overflow: hidden; } .oo-ui-comboBoxInputWidget.oo-ui-comboBoxInputWidget-empty .oo-ui-comboBoxInputWidget-dropdownButton { @@ -1096,8 +1251,8 @@ body:not( :-moz-handler-blocked ) .oo-ui-fieldsetLayout { position: absolute; right: 0; top: 0; - height: 2.5em; width: 2.5em; + height: 2.5em; padding: 0; } .oo-ui-comboBoxInputWidget-php > .oo-ui-indicatorElement-indicator { diff --git a/resources/lib/oojs-ui/oojs-ui-core-mediawiki.css b/resources/lib/oojs-ui/oojs-ui-core-mediawiki.css index 68d6413f82..b041ef4ab4 100644 --- a/resources/lib/oojs-ui/oojs-ui-core-mediawiki.css +++ b/resources/lib/oojs-ui/oojs-ui-core-mediawiki.css @@ -1,16 +1,15 @@ /*! - * OOjs UI v0.18.3 + * OOjs UI v0.19.5 * https://www.mediawiki.org/wiki/OOjs_UI * * Copyright 2011–2017 OOjs UI Team and other contributors. * Released under the MIT license * http://oojs.mit-license.org * - * Date: 2017-01-04T00:22:45Z + * Date: 2017-03-07T22:57:06Z */ .oo-ui-element-hidden { display: none !important; - /* stylelint-disable-line declaration-no-important */ } .oo-ui-buttonElement { display: inline-block; @@ -19,6 +18,9 @@ .oo-ui-buttonElement > .oo-ui-buttonElement-button { cursor: pointer; display: inline-block; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; vertical-align: middle; font-family: inherit; font-size: inherit; @@ -38,8 +40,8 @@ cursor: default; } .oo-ui-buttonElement.oo-ui-indicatorElement > .oo-ui-buttonElement-button > .oo-ui-indicatorElement-indicator, -.oo-ui-buttonElement.oo-ui-iconElement > .oo-ui-buttonElement-button > .oo-ui-iconElement-icon, -.oo-ui-buttonElement.oo-ui-labelElement > .oo-ui-buttonElement-button > .oo-ui-labelElement-label { +.oo-ui-buttonElement.oo-ui-labelElement > .oo-ui-buttonElement-button > .oo-ui-labelElement-label, +.oo-ui-buttonElement-frameless.oo-ui-iconElement > .oo-ui-buttonElement-button > .oo-ui-iconElement-icon { display: inline-block; vertical-align: middle; } @@ -61,9 +63,6 @@ .oo-ui-buttonElement > .oo-ui-buttonElement-button:focus::-moz-focus-inner { border-color: transparent; } -.oo-ui-buttonElement.oo-ui-iconElement > .oo-ui-buttonElement-button > .oo-ui-iconElement-icon { - margin-left: 0; -} .oo-ui-buttonElement.oo-ui-iconElement > .oo-ui-buttonElement-button > .oo-ui-indicatorElement-indicator { margin-right: 0.25em; margin-left: 0.46875em; @@ -177,19 +176,27 @@ padding-left: 2.4em; } .oo-ui-buttonElement-framed > .oo-ui-buttonElement-button { - padding: 0.546875em 1em; - min-height: 1.25em; - min-width: 1em; - border-radius: 2px; position: relative; + min-height: 2.5em; + border-radius: 2px; + padding: 0.546875em 1em; +} +.oo-ui-buttonElement-framed.oo-ui-iconElement > .oo-ui-buttonElement-button { + min-width: 3.125em; +} +.oo-ui-buttonElement-framed.oo-ui-labelElement > .oo-ui-buttonElement-button, +.oo-ui-buttonElement-framed.oo-ui-indicatorElement > .oo-ui-buttonElement-button { + min-width: 0; } .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.25; } .oo-ui-buttonElement-framed.oo-ui-iconElement > .oo-ui-buttonElement-button > .oo-ui-iconElement-icon { + display: block; position: absolute; - top: 0.2em; + top: 0; + height: 100%; left: 0.5625em; } .oo-ui-buttonElement-framed.oo-ui-iconElement.oo-ui-labelElement > .oo-ui-buttonElement-button > .oo-ui-labelElement-label { @@ -377,6 +384,10 @@ -webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box; + min-height: 3.125em; +} +.oo-ui-floatableElement { + position: absolute; } .oo-ui-iconElement .oo-ui-iconElement-icon, .oo-ui-iconElement.oo-ui-iconElement-icon { @@ -416,36 +427,39 @@ .oo-ui-fieldLayout:after { clear: both; } -.oo-ui-fieldLayout.oo-ui-fieldLayout-align-left > .oo-ui-fieldLayout-body > .oo-ui-labelElement-label, -.oo-ui-fieldLayout.oo-ui-fieldLayout-align-right > .oo-ui-fieldLayout-body > .oo-ui-labelElement-label, +.oo-ui-fieldLayout.oo-ui-fieldLayout-align-left > .oo-ui-fieldLayout-body > .oo-ui-fieldLayout-header, +.oo-ui-fieldLayout.oo-ui-fieldLayout-align-right > .oo-ui-fieldLayout-body > .oo-ui-fieldLayout-header, +.oo-ui-fieldLayout.oo-ui-fieldLayout-align-left > .oo-ui-fieldLayout-body > .oo-ui-fieldLayout-help, +.oo-ui-fieldLayout.oo-ui-fieldLayout-align-right > .oo-ui-fieldLayout-body > .oo-ui-fieldLayout-help, .oo-ui-fieldLayout.oo-ui-fieldLayout-align-left > .oo-ui-fieldLayout-body > .oo-ui-fieldLayout-field, .oo-ui-fieldLayout.oo-ui-fieldLayout-align-right > .oo-ui-fieldLayout-body > .oo-ui-fieldLayout-field { display: block; float: left; } -.oo-ui-fieldLayout.oo-ui-fieldLayout-align-right > .oo-ui-fieldLayout-body > .oo-ui-labelElement-label { +.oo-ui-fieldLayout.oo-ui-fieldLayout-align-right > .oo-ui-fieldLayout-body > .oo-ui-fieldLayout-header { text-align: right; } .oo-ui-fieldLayout.oo-ui-fieldLayout-align-inline > .oo-ui-fieldLayout-body { display: table; + width: 100%; } -.oo-ui-fieldLayout.oo-ui-fieldLayout-align-inline > .oo-ui-fieldLayout-body > .oo-ui-labelElement-label, +.oo-ui-fieldLayout.oo-ui-fieldLayout-align-inline > .oo-ui-fieldLayout-body > .oo-ui-fieldLayout-header, .oo-ui-fieldLayout.oo-ui-fieldLayout-align-inline > .oo-ui-fieldLayout-body > .oo-ui-fieldLayout-field { display: table-cell; vertical-align: middle; } -.oo-ui-fieldLayout.oo-ui-labelElement.oo-ui-fieldLayout-align-top > .oo-ui-fieldLayout-body > .oo-ui-labelElement-label { - display: inline-block; +.oo-ui-fieldLayout.oo-ui-fieldLayout-align-inline > .oo-ui-fieldLayout-body > .oo-ui-fieldLayout-field { + width: 1px; } -.oo-ui-fieldLayout > .oo-ui-fieldLayout-help { +.oo-ui-fieldLayout .oo-ui-fieldLayout-help { float: right; } -.oo-ui-fieldLayout > .oo-ui-fieldLayout-help > .oo-ui-popupWidget > .oo-ui-popupWidget-popup { +.oo-ui-fieldLayout .oo-ui-fieldLayout-help > .oo-ui-popupWidget > .oo-ui-popupWidget-popup { z-index: 1; } -.oo-ui-fieldLayout > .oo-ui-fieldLayout-help .oo-ui-fieldLayout-help-content { - padding: 0.5em 0.75em; - line-height: 1.5; +.oo-ui-fieldLayout.oo-ui-fieldLayout-align-top .oo-ui-fieldLayout-help, +.oo-ui-fieldLayout.oo-ui-fieldLayout-align-inline .oo-ui-fieldLayout-help { + margin-top: -0.3em; } .oo-ui-fieldLayout.oo-ui-labelElement, .oo-ui-fieldLayout.oo-ui-fieldLayout-align-inline { @@ -456,24 +470,40 @@ .oo-ui-fieldLayout.oo-ui-fieldLayout-align-inline:first-child { margin-top: 0; } -.oo-ui-fieldLayout.oo-ui-labelElement > .oo-ui-fieldLayout-body > .oo-ui-labelElement-label { +.oo-ui-fieldLayout.oo-ui-labelElement > .oo-ui-fieldLayout-body > .oo-ui-fieldLayout-header { padding-bottom: 0.3125em; +} +.oo-ui-fieldLayout.oo-ui-labelElement > .oo-ui-fieldLayout-body > .oo-ui-fieldLayout-header > .oo-ui-labelElement-label { line-height: 1.4; } -.oo-ui-fieldLayout.oo-ui-labelElement.oo-ui-fieldLayout-align-inline > .oo-ui-fieldLayout-body > .oo-ui-labelElement-label { - padding: 0.3125em 0.46875em; +.oo-ui-fieldLayout.oo-ui-labelElement.oo-ui-fieldLayout-align-top > .oo-ui-fieldLayout-body > .oo-ui-fieldLayout-header, +.oo-ui-fieldLayout.oo-ui-labelElement.oo-ui-fieldLayout-align-inline > .oo-ui-fieldLayout-body { + max-width: 50em; } -.oo-ui-fieldLayout.oo-ui-labelElement.oo-ui-fieldLayout-align-left > .oo-ui-fieldLayout-body > .oo-ui-labelElement-label, -.oo-ui-fieldLayout.oo-ui-labelElement.oo-ui-fieldLayout-align-right > .oo-ui-fieldLayout-body > .oo-ui-labelElement-label { +.oo-ui-fieldLayout.oo-ui-labelElement.oo-ui-fieldLayout-align-left > .oo-ui-fieldLayout-body > .oo-ui-fieldLayout-header, +.oo-ui-fieldLayout.oo-ui-labelElement.oo-ui-fieldLayout-align-right > .oo-ui-fieldLayout-body > .oo-ui-fieldLayout-header { width: 35%; margin-right: 5%; +} +.oo-ui-fieldLayout.oo-ui-labelElement.oo-ui-fieldLayout-align-left > .oo-ui-fieldLayout-body > .oo-ui-fieldLayout-header > .oo-ui-labelElement-label, +.oo-ui-fieldLayout.oo-ui-labelElement.oo-ui-fieldLayout-align-right > .oo-ui-fieldLayout-body > .oo-ui-fieldLayout-header > .oo-ui-labelElement-label { + display: block; padding-top: 0.3125em; } +.oo-ui-fieldLayout.oo-ui-labelElement.oo-ui-fieldLayout-align-left > .oo-ui-fieldLayout-body > .oo-ui-fieldLayout-help, +.oo-ui-fieldLayout.oo-ui-labelElement.oo-ui-fieldLayout-align-right > .oo-ui-fieldLayout-body > .oo-ui-fieldLayout-help { + margin-right: 0; + margin-left: -1.875em; +} .oo-ui-fieldLayout.oo-ui-labelElement.oo-ui-fieldLayout-align-left > .oo-ui-fieldLayout-body > .oo-ui-fieldLayout-field, .oo-ui-fieldLayout.oo-ui-labelElement.oo-ui-fieldLayout-align-right > .oo-ui-fieldLayout-body > .oo-ui-fieldLayout-field { width: 60%; } -.oo-ui-fieldLayout-disabled > .oo-ui-fieldLayout-body > .oo-ui-labelElement-label { +.oo-ui-fieldLayout.oo-ui-labelElement.oo-ui-fieldLayout-align-inline > .oo-ui-fieldLayout-body > .oo-ui-fieldLayout-header { + padding: 0.3125em 0.46875em; + padding-right: 0; +} +.oo-ui-fieldLayout-disabled > .oo-ui-fieldLayout-body > .oo-ui-fieldLayout-header > .oo-ui-labelElement-label { color: #72777d; } .oo-ui-fieldLayout > .oo-ui-popupButtonWidget { @@ -501,9 +531,6 @@ line-height: 1.4; vertical-align: middle; } -.oo-ui-actionFieldLayout { - max-width: 50em; -} .oo-ui-actionFieldLayout-input, .oo-ui-actionFieldLayout-button { display: table-cell; @@ -516,6 +543,9 @@ width: 1%; white-space: nowrap; } +.oo-ui-actionFieldLayout.oo-ui-fieldLayout-align-top { + max-width: 50em; +} .oo-ui-fieldsetLayout { position: relative; min-width: 0; @@ -526,57 +556,57 @@ body:not( :-moz-handler-blocked ) .oo-ui-fieldsetLayout { display: table-cell; } -.oo-ui-fieldsetLayout.oo-ui-iconElement > .oo-ui-iconElement-icon { +.oo-ui-fieldsetLayout.oo-ui-iconElement > .oo-ui-fieldsetLayout-header > .oo-ui-iconElement-icon { display: block; position: absolute; } -.oo-ui-fieldsetLayout.oo-ui-labelElement > .oo-ui-labelElement-label { +.oo-ui-fieldsetLayout.oo-ui-labelElement > .oo-ui-fieldsetLayout-header { color: inherit; display: inline-table; box-sizing: border-box; - max-width: 100%; padding: 0; white-space: normal; float: left; + width: 100%; } -.oo-ui-fieldsetLayout.oo-ui-labelElement > .oo-ui-labelElement-label:empty { +.oo-ui-fieldsetLayout.oo-ui-labelElement > .oo-ui-fieldsetLayout-header > .oo-ui-labelElement-label:empty { display: none; } .oo-ui-fieldsetLayout-group { clear: both; } -.oo-ui-fieldsetLayout > .oo-ui-fieldsetLayout-help { +.oo-ui-fieldsetLayout .oo-ui-fieldsetLayout-help { float: right; } -.oo-ui-fieldsetLayout > .oo-ui-fieldsetLayout-help > .oo-ui-popupWidget > .oo-ui-popupWidget-popup { +.oo-ui-fieldsetLayout .oo-ui-fieldsetLayout-help > .oo-ui-popupWidget > .oo-ui-popupWidget-popup { z-index: 1; } -.oo-ui-fieldsetLayout > .oo-ui-fieldsetLayout-help .oo-ui-fieldsetLayout-help-content { - padding: 0.5em 0.75em; - line-height: 1.4; +.oo-ui-fieldsetLayout .oo-ui-fieldsetLayout-header { + max-width: 50em; } .oo-ui-fieldsetLayout + .oo-ui-fieldsetLayout, .oo-ui-fieldsetLayout + .oo-ui-formLayout { margin-top: 2em; } -.oo-ui-fieldsetLayout.oo-ui-labelElement > .oo-ui-labelElement-label { +.oo-ui-fieldsetLayout.oo-ui-labelElement > .oo-ui-fieldsetLayout-header > .oo-ui-labelElement-label { + display: inline-block; margin-bottom: 0.56818em; font-size: 1.1em; font-weight: bold; line-height: 1.4; } -.oo-ui-fieldsetLayout.oo-ui-iconElement > .oo-ui-labelElement-label { +.oo-ui-fieldsetLayout.oo-ui-iconElement > .oo-ui-fieldsetLayout-header > .oo-ui-labelElement-label { padding-left: 2em; line-height: 1.8; } -.oo-ui-fieldsetLayout.oo-ui-iconElement > .oo-ui-iconElement-icon { +.oo-ui-fieldsetLayout.oo-ui-iconElement > .oo-ui-fieldsetLayout-header > .oo-ui-iconElement-icon { top: 0; left: 0; } -.oo-ui-fieldsetLayout > .oo-ui-popupButtonWidget { +.oo-ui-fieldsetLayout > .oo-ui-fieldsetLayout-header > .oo-ui-popupButtonWidget { margin-right: 0; } -.oo-ui-fieldsetLayout > .oo-ui-popupButtonWidget:last-child { +.oo-ui-fieldsetLayout > .oo-ui-fieldsetLayout-header > .oo-ui-popupButtonWidget:last-child { margin-right: 0; } .oo-ui-formLayout + .oo-ui-fieldsetLayout, @@ -587,9 +617,9 @@ body:not( :-moz-handler-blocked ) .oo-ui-fieldsetLayout { position: relative; } .oo-ui-panelLayout-scrollable { - overflow-y: auto; - /* Make scrolling smooth */ - -webkit-transform: translate3d(0, 0, 0); + overflow: auto; + -webkit-transform: translateZ(0); + transform: translateZ(0); } .oo-ui-panelLayout-expanded { position: absolute; @@ -601,10 +631,13 @@ body:not( :-moz-handler-blocked ) .oo-ui-fieldsetLayout { .oo-ui-panelLayout-padded { padding: 1.25em; } +.oo-ui-panelLayout-padded.oo-ui-formLayout > .oo-ui-fieldsetLayout .oo-ui-labelElement-label, +.oo-ui-panelLayout-padded.oo-ui-formLayout > .oo-ui-fieldsetLayout .oo-ui-iconElement-icon { + margin-top: -0.25em; +} .oo-ui-panelLayout-framed { border: 1px solid #a2a9b1; border-radius: 2px; - box-shadow: 0 0.15em 0 0 rgba(0, 0, 0, 0.15); } .oo-ui-panelLayout-padded.oo-ui-panelLayout-framed { margin: 1em 0; @@ -625,7 +658,7 @@ body:not( :-moz-handler-blocked ) .oo-ui-fieldsetLayout { margin-right: 0; } .oo-ui-horizontalLayout > .oo-ui-layout { - margin-bottom: 0; + margin-top: 0; } .oo-ui-optionWidget { position: relative; @@ -737,7 +770,7 @@ body:not( :-moz-handler-blocked ) .oo-ui-fieldsetLayout { z-index: 0; position: relative; } -.oo-ui-buttonGroupWidget .oo-ui-buttonElement-active .oo-ui-buttonElement-button { +.oo-ui-buttonGroupWidget .oo-ui-buttonWidget.oo-ui-buttonElement-active .oo-ui-buttonElement-button { cursor: default; } .oo-ui-buttonGroupWidget:last-child { @@ -777,8 +810,6 @@ body:not( :-moz-handler-blocked ) .oo-ui-fieldsetLayout { } .oo-ui-popupWidget { position: absolute; - /* @noflip */ - left: 0; } .oo-ui-popupWidget-popup { position: relative; @@ -792,11 +823,49 @@ body:not( :-moz-handler-blocked ) .oo-ui-fieldsetLayout { .oo-ui-popupWidget-anchored .oo-ui-popupWidget-anchor { display: block; position: absolute; - top: 0; - /* @noflip */ - left: 0; background-repeat: no-repeat; } +.oo-ui-popupWidget-anchored .oo-ui-popupWidget-anchor:before, +.oo-ui-popupWidget-anchored .oo-ui-popupWidget-anchor:after { + content: ''; + position: absolute; + width: 0; + height: 0; + border-style: solid; + border-color: transparent; +} +.oo-ui-popupWidget-anchored-top .oo-ui-popupWidget-anchor { + left: 0; + /* `top` property is to be set in theme's selector due to specific `@size-anchor` values */ +} +.oo-ui-popupWidget-anchored-top .oo-ui-popupWidget-anchor:before, +.oo-ui-popupWidget-anchored-top .oo-ui-popupWidget-anchor:after { + border-top: 0; +} +.oo-ui-popupWidget-anchored-bottom .oo-ui-popupWidget-anchor { + left: 0; + /* `bottom` property is to be set in theme's selector due to specific `@size-anchor` values */ +} +.oo-ui-popupWidget-anchored-bottom .oo-ui-popupWidget-anchor:before, +.oo-ui-popupWidget-anchored-bottom .oo-ui-popupWidget-anchor:after { + border-bottom: 0; +} +.oo-ui-popupWidget-anchored-start .oo-ui-popupWidget-anchor { + top: 0; + /* `left` property is to be set in theme's selector due to specific `@size-anchor` values */ +} +.oo-ui-popupWidget-anchored-start .oo-ui-popupWidget-anchor:before, +.oo-ui-popupWidget-anchored-start .oo-ui-popupWidget-anchor:after { + border-left: 0; +} +.oo-ui-popupWidget-anchored-end .oo-ui-popupWidget-anchor { + top: 0; + /* `right` property is to be set in theme's selector due to specific `@size-anchor` values */ +} +.oo-ui-popupWidget-anchored-end .oo-ui-popupWidget-anchor:before, +.oo-ui-popupWidget-anchored-end .oo-ui-popupWidget-anchor:after { + border-right: 0; +} .oo-ui-popupWidget-head { -webkit-touch-callout: none; -webkit-user-select: none; @@ -813,39 +882,88 @@ body:not( :-moz-handler-blocked ) .oo-ui-fieldsetLayout { } .oo-ui-popupWidget-body { clear: both; - overflow: hidden; +} +.oo-ui-popupWidget-body.oo-ui-clippableElement-clippable { + min-height: 1em; } .oo-ui-popupWidget-popup { background-color: #fff; border: 1px solid #a2a9b1; border-radius: 2px; - box-shadow: 0 0.15em 0 0 rgba(0, 0, 0, 0.15); + box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.25); } -.oo-ui-popupWidget-anchored .oo-ui-popupWidget-popup { +.oo-ui-popupWidget-anchored-top { margin-top: 9px; } -.oo-ui-popupWidget-anchored .oo-ui-popupWidget-anchor:before, -.oo-ui-popupWidget-anchored .oo-ui-popupWidget-anchor:after { - content: ''; - position: absolute; - width: 0; - height: 0; - border-style: solid; - border-color: transparent; - border-top: 0; +.oo-ui-popupWidget-anchored-top .oo-ui-popupWidget-anchor { + top: -9px; } -.oo-ui-popupWidget-anchored .oo-ui-popupWidget-anchor:before { +.oo-ui-popupWidget-anchored-top .oo-ui-popupWidget-anchor:before { bottom: -10px; left: -9px; - border-bottom-color: #888; + border-bottom-color: #a2a9b1; border-width: 10px; } -.oo-ui-popupWidget-anchored .oo-ui-popupWidget-anchor:after { +.oo-ui-popupWidget-anchored-top .oo-ui-popupWidget-anchor:after { bottom: -10px; left: -8px; border-bottom-color: #fff; border-width: 9px; } +.oo-ui-popupWidget-anchored-bottom { + margin-bottom: 9px; +} +.oo-ui-popupWidget-anchored-bottom .oo-ui-popupWidget-anchor { + bottom: -9px; +} +.oo-ui-popupWidget-anchored-bottom .oo-ui-popupWidget-anchor:before { + top: -10px; + left: -9px; + border-top-color: #a2a9b1; + border-width: 10px; +} +.oo-ui-popupWidget-anchored-bottom .oo-ui-popupWidget-anchor:after { + top: -10px; + left: -8px; + border-top-color: #fff; + border-width: 9px; +} +.oo-ui-popupWidget-anchored-start { + margin-left: 9px; +} +.oo-ui-popupWidget-anchored-start .oo-ui-popupWidget-anchor { + left: -9px; +} +.oo-ui-popupWidget-anchored-start .oo-ui-popupWidget-anchor:before { + right: -10px; + top: -9px; + border-right-color: #a2a9b1; + border-width: 10px; +} +.oo-ui-popupWidget-anchored-start .oo-ui-popupWidget-anchor:after { + right: -10px; + top: -8px; + border-right-color: #fff; + border-width: 9px; +} +.oo-ui-popupWidget-anchored-end { + margin-right: 9px; +} +.oo-ui-popupWidget-anchored-end .oo-ui-popupWidget-anchor { + right: -9px; +} +.oo-ui-popupWidget-anchored-end .oo-ui-popupWidget-anchor:before { + left: -10px; + top: -9px; + border-left-color: #a2a9b1; + border-width: 10px; +} +.oo-ui-popupWidget-anchored-end .oo-ui-popupWidget-anchor:after { + left: -10px; + top: -8px; + border-left-color: #fff; + border-width: 9px; +} .oo-ui-popupWidget-transitioning .oo-ui-popupWidget-popup { -webkit-transition: width 100ms, height 100ms, left 100ms; -moz-transition: width 100ms, height 100ms, left 100ms; @@ -860,8 +978,11 @@ body:not( :-moz-handler-blocked ) .oo-ui-fieldsetLayout { .oo-ui-popupWidget-head > .oo-ui-labelElement-label { margin: 0.75em 1em; } +.oo-ui-popupWidget-body { + line-height: 1.4; +} .oo-ui-popupWidget-body-padded { - padding: 0 1em; + margin: 0.75em 1em; } .oo-ui-popupButtonWidget { position: relative; @@ -869,13 +990,13 @@ body:not( :-moz-handler-blocked ) .oo-ui-fieldsetLayout { .oo-ui-popupButtonWidget .oo-ui-popupWidget { cursor: auto; } -.oo-ui-popupButtonWidget.oo-ui-buttonElement-frameless > .oo-ui-popupWidget { - /* @noflip */ - left: 0.9375em; +.oo-ui-popupButtonWidget-frameless-popup.oo-ui-popupWidget-anchored-top .oo-ui-popupWidget-anchor, +.oo-ui-popupButtonWidget-frameless-popup.oo-ui-popupWidget-anchored-bottom .oo-ui-popupWidget-anchor { + margin-left: 0.9375em; } -.oo-ui-popupButtonWidget.oo-ui-buttonElement-framed > .oo-ui-popupWidget { - /* @noflip */ - left: 1.5em; +.oo-ui-popupButtonWidget-framed-popup.oo-ui-popupWidget-anchored-top .oo-ui-popupWidget-anchor, +.oo-ui-popupButtonWidget-framed-popup.oo-ui-popupWidget-anchored-bottom .oo-ui-popupWidget-anchor { + margin-left: 1.5em; } .oo-ui-inputWidget { margin-right: 0.5em; @@ -1011,17 +1132,23 @@ body:not( :-moz-handler-blocked ) .oo-ui-fieldsetLayout { -moz-box-sizing: border-box; box-sizing: border-box; } +.oo-ui-dropdownInputWidget-php { + border-right: 1px solid #a2a9b1; + border-radius: 2px; + overflow-x: hidden; +} .oo-ui-dropdownInputWidget select { - background-color: #fff; - height: 2.275em; - font-size: inherit; - font-family: inherit; + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; -webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box; border: 1px solid #a2a9b1; border-radius: 2px; - padding-left: 1em; + padding: 0.5em 1em; + font-size: inherit; + font-family: inherit; vertical-align: middle; } .oo-ui-dropdownInputWidget option { @@ -1030,14 +1157,42 @@ 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 { + background-color: #f8f9fa; + background-position: -9999em 0; + background-repeat: no-repeat; + color: #222; + -webkit-transition: background-color 100ms, border-color 100ms, box-shadow 100ms; + -moz-transition: background-color 100ms, border-color 100ms, box-shadow 100ms; + transition: background-color 100ms, border-color 100ms, box-shadow 100ms; +} +.oo-ui-dropdownInputWidget.oo-ui-widget-enabled select:hover { + background-color: #fff; + color: #444; + border-color: #a2a9b1; +} +.oo-ui-dropdownInputWidget.oo-ui-widget-enabled select:active { + color: #000; + border-color: #72777d; +} .oo-ui-dropdownInputWidget.oo-ui-widget-enabled select:focus { + border-color: #36c; outline: 0; + box-shadow: inset 0 0 0 1px #36c; +} +.oo-ui-dropdownInputWidget.oo-ui-widget-enabled select::-ms-expand { + display: none; +} +.oo-ui-dropdownInputWidget.oo-ui-widget-enabled select:not( [no-ie] ) { + background-position: right 1.75em center; + width: calc( 100% + 1em ); + height: 2.5em; + padding: 0 0 0 1em; } .oo-ui-dropdownInputWidget.oo-ui-widget-disabled select { + background-color: #eaecf0; color: #72777d; border-color: #c8ccd1; - background-color: #eaecf0; } .oo-ui-radioInputWidget { position: relative; @@ -1192,14 +1347,10 @@ body:not( :-moz-handler-blocked ) .oo-ui-fieldsetLayout { display: none; } .oo-ui-textInputWidget.oo-ui-iconElement > .oo-ui-iconElement-icon, -.oo-ui-textInputWidget.oo-ui-indicatorElement > .oo-ui-indicatorElement-indicator, -.oo-ui-textInputWidget > .oo-ui-labelElement-label { +.oo-ui-textInputWidget.oo-ui-indicatorElement > .oo-ui-indicatorElement-indicator { display: block; position: absolute; top: 0; -} -.oo-ui-textInputWidget.oo-ui-iconElement > .oo-ui-iconElement-icon, -.oo-ui-textInputWidget.oo-ui-indicatorElement > .oo-ui-indicatorElement-indicator { height: 100%; -webkit-touch-callout: none; -webkit-user-select: none; @@ -1207,24 +1358,21 @@ body:not( :-moz-handler-blocked ) .oo-ui-fieldsetLayout { -ms-user-select: none; user-select: none; } -.oo-ui-textInputWidget > .oo-ui-iconElement-icon, -.oo-ui-textInputWidget-labelPosition-before > .oo-ui-labelElement-label { - left: 0; -} -.oo-ui-textInputWidget > .oo-ui-indicatorElement-indicator, -.oo-ui-textInputWidget-labelPosition-after > .oo-ui-labelElement-label { - right: 0; -} .oo-ui-textInputWidget.oo-ui-widget-enabled > .oo-ui-iconElement-icon, -.oo-ui-textInputWidget.oo-ui-widget-enabled > .oo-ui-indicatorElement-indicator, -.oo-ui-textInputWidget.oo-ui-widget-enabled > .oo-ui-labelElement-label { +.oo-ui-textInputWidget.oo-ui-widget-enabled > .oo-ui-indicatorElement-indicator { cursor: text; } .oo-ui-textInputWidget.oo-ui-widget-enabled.oo-ui-textInputWidget-type-search > .oo-ui-indicatorElement-indicator { cursor: pointer; } .oo-ui-textInputWidget.oo-ui-widget-disabled input, -.oo-ui-textInputWidget.oo-ui-widget-disabled textarea, +.oo-ui-textInputWidget.oo-ui-widget-disabled textarea { + -webkit-touch-callout: none; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} .oo-ui-textInputWidget.oo-ui-widget-disabled .oo-ui-labelElement-label { -webkit-touch-callout: none; -webkit-user-select: none; @@ -1232,22 +1380,42 @@ body:not( :-moz-handler-blocked ) .oo-ui-fieldsetLayout { -ms-user-select: none; user-select: none; } +.oo-ui-textInputWidget.oo-ui-labelElement > .oo-ui-labelElement-label { + display: block; +} +.oo-ui-textInputWidget > .oo-ui-iconElement-icon, +.oo-ui-textInputWidget-labelPosition-before > .oo-ui-labelElement-label { + left: 0; +} +.oo-ui-textInputWidget > .oo-ui-indicatorElement-indicator, +.oo-ui-textInputWidget-labelPosition-after > .oo-ui-labelElement-label { + right: 0; +} +.oo-ui-textInputWidget > .oo-ui-labelElement-label { + position: absolute; + top: 0; +} +.oo-ui-textInputWidget-php > .oo-ui-iconElement-icon, +.oo-ui-textInputWidget-php > .oo-ui-indicatorElement-indicator, +.oo-ui-textInputWidget-php > .oo-ui-labelElement-label { + pointer-events: none; +} .oo-ui-textInputWidget input, .oo-ui-textInputWidget textarea { + margin: 0; font-size: inherit; font-family: inherit; background-color: #fff; color: #000; border: 1px solid #a2a9b1; border-radius: 2px; + padding: 0.625em 0.546875em 0.546875em; } .oo-ui-textInputWidget input { - padding: 0.625em 0.546875em 0.546875em; line-height: 1.172em; } .oo-ui-textInputWidget textarea { - padding: 0.46875em 0.546875em 0.546875em; - line-height: 1.4; + line-height: 1.275; } .oo-ui-textInputWidget .oo-ui-pendingElement-pending { background-color: transparent; @@ -1282,22 +1450,36 @@ body:not( :-moz-handler-blocked ) .oo-ui-fieldsetLayout { border-color: #c8ccd1; box-shadow: inset 0 0 0 1px #c8ccd1; } -.oo-ui-textInputWidget.oo-ui-widget-enabled :-moz-placeholder { +.oo-ui-textInputWidget.oo-ui-widget-enabled input::-webkit-input-placeholder, +.oo-ui-textInputWidget.oo-ui-widget-enabled textarea::-webkit-input-placeholder { color: #72777d; opacity: 1; } -.oo-ui-textInputWidget.oo-ui-widget-enabled ::-moz-placeholder { +.oo-ui-textInputWidget.oo-ui-widget-enabled input:-ms-input-placeholder, +.oo-ui-textInputWidget.oo-ui-widget-enabled textarea:-ms-input-placeholder { color: #72777d; opacity: 1; } -.oo-ui-textInputWidget.oo-ui-widget-enabled :-ms-input-placeholder { +.oo-ui-textInputWidget.oo-ui-widget-enabled input::-moz-placeholder, +.oo-ui-textInputWidget.oo-ui-widget-enabled textarea::-moz-placeholder { color: #72777d; + opacity: 1; } -.oo-ui-textInputWidget.oo-ui-widget-enabled ::-webkit-input-placeholder { +.oo-ui-textInputWidget.oo-ui-widget-enabled input:-moz-placeholder, +.oo-ui-textInputWidget.oo-ui-widget-enabled textarea:-moz-placeholder { color: #72777d; + opacity: 1; } -.oo-ui-textInputWidget.oo-ui-widget-enabled :placeholder-shown { +.oo-ui-textInputWidget.oo-ui-widget-enabled input::placeholder, +.oo-ui-textInputWidget.oo-ui-widget-enabled textarea::placeholder { color: #72777d; + opacity: 1; +} +@media screen and (min-width: 0) { + .oo-ui-textInputWidget.oo-ui-widget-enabled textarea:focus { + outline: 1px solid #36c; + outline-offset: -2px; + } } .oo-ui-textInputWidget.oo-ui-widget-enabled.oo-ui-flaggedElement-invalid input, .oo-ui-textInputWidget.oo-ui-widget-enabled.oo-ui-flaggedElement-invalid textarea { @@ -1312,50 +1494,51 @@ body:not( :-moz-handler-blocked ) .oo-ui-fieldsetLayout { border-color: #d33; box-shadow: inset 0 0 0 1px #d33; } +.oo-ui-textInputWidget.oo-ui-widget-disabled input, +.oo-ui-textInputWidget.oo-ui-widget-disabled textarea { + background-color: #eaecf0; + color: #72777d; + text-shadow: 0 1px 1px #fff; + border-color: #c8ccd1; +} +.oo-ui-textInputWidget.oo-ui-widget-disabled .oo-ui-iconElement-icon, +.oo-ui-textInputWidget.oo-ui-widget-disabled .oo-ui-indicatorElement-indicator { + opacity: 0.51; +} +.oo-ui-textInputWidget.oo-ui-widget-disabled .oo-ui-labelElement-label { + color: #72777d; + text-shadow: 0 1px 1px #fff; +} .oo-ui-textInputWidget.oo-ui-iconElement input, .oo-ui-textInputWidget.oo-ui-iconElement textarea { - padding-left: 2.65625em; + padding-left: 2.875em; } .oo-ui-textInputWidget.oo-ui-iconElement .oo-ui-iconElement-icon { - max-height: 2.5em; - left: 0.46875em; + left: 0; + max-height: 2.375em; + margin-left: 0.5em; + background-position: right center; } .oo-ui-textInputWidget.oo-ui-indicatorElement input, .oo-ui-textInputWidget.oo-ui-indicatorElement textarea { padding-right: 2.4875em; } .oo-ui-textInputWidget.oo-ui-indicatorElement .oo-ui-indicatorElement-indicator { - max-height: 2.5em; - right: 0.625em; + height: 100%; + max-height: 2.375em; + margin: 0 0.775em; } .oo-ui-textInputWidget > .oo-ui-labelElement-label { color: #72777d; - right: 0.625em; - border: 1px solid transparent; - border-width: 1px 0; - padding: 0.625em 0 0.546875em; + margin-top: 1px; + padding: 0.625em 0.546875em 0.546875em; line-height: 1.172em; } .oo-ui-textInputWidget-labelPosition-after.oo-ui-indicatorElement > .oo-ui-labelElement-label { - right: 2.1875em; + margin-right: 2.0875em; } .oo-ui-textInputWidget-labelPosition-before.oo-ui-iconElement > .oo-ui-labelElement-label { - left: 2.65625em; -} -.oo-ui-textInputWidget.oo-ui-widget-disabled input, -.oo-ui-textInputWidget.oo-ui-widget-disabled textarea { - background-color: #eaecf0; - color: #72777d; - text-shadow: 0 1px 1px #fff; - border-color: #c8ccd1; -} -.oo-ui-textInputWidget.oo-ui-widget-disabled .oo-ui-iconElement-icon, -.oo-ui-textInputWidget.oo-ui-widget-disabled .oo-ui-indicatorElement-indicator { - opacity: 0.51; -} -.oo-ui-textInputWidget.oo-ui-widget-disabled .oo-ui-labelElement-label { - color: #72777d; - text-shadow: 0 1px 1px #fff; + margin-left: 2.475em; } .oo-ui-menuSelectWidget { position: absolute; @@ -1365,7 +1548,7 @@ body:not( :-moz-handler-blocked ) .oo-ui-fieldsetLayout { margin-top: -1px; border: 1px solid #a2a9b1; border-radius: 0 0 2px 2px; - box-shadow: 0 0.15em 0 0 rgba(0, 0, 0, 0.15); + box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.25); } .oo-ui-menuSelectWidget input { position: absolute; @@ -1374,6 +1557,12 @@ body:not( :-moz-handler-blocked ) .oo-ui-fieldsetLayout { overflow: hidden; opacity: 0; } +.oo-ui-menuSelectWidget.oo-ui-clippableElement-clippable { + min-height: 2.6em; +} +.oo-ui-menuSelectWidget-invisible { + display: none; +} .oo-ui-menuOptionWidget { position: relative; padding: 0.5em 1em; @@ -1431,9 +1620,11 @@ body:not( :-moz-handler-blocked ) .oo-ui-fieldsetLayout { -moz-box-sizing: border-box; box-sizing: border-box; } -.oo-ui-dropdownWidget-handle .oo-ui-indicatorElement-indicator, -.oo-ui-dropdownWidget-handle .oo-ui-iconElement-icon { +.oo-ui-dropdownWidget-handle .oo-ui-iconElement-icon, +.oo-ui-dropdownWidget-handle .oo-ui-indicatorElement-indicator { position: absolute; + top: 0; + height: 100%; } .oo-ui-dropdownWidget.oo-ui-widget-enabled .oo-ui-dropdownWidget-handle { cursor: pointer; @@ -1449,14 +1640,12 @@ body:not( :-moz-handler-blocked ) .oo-ui-fieldsetLayout { border-radius: 2px; } .oo-ui-dropdownWidget-handle .oo-ui-indicatorElement-indicator { - top: 0; right: 0; - margin: 0.775em; + margin: 0 0.775em; } .oo-ui-dropdownWidget-handle .oo-ui-iconElement-icon { - top: 0; left: 0.25em; - margin: 0.3em; + margin: 0 0.3em; } .oo-ui-dropdownWidget-handle .oo-ui-labelElement-label { margin: 0 1em; @@ -1538,9 +1727,6 @@ body:not( :-moz-handler-blocked ) .oo-ui-fieldsetLayout { } .oo-ui-comboBoxInputWidget-dropdownButton > .oo-ui-buttonElement-button { display: block; - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; overflow: hidden; } .oo-ui-comboBoxInputWidget.oo-ui-comboBoxInputWidget-empty .oo-ui-comboBoxInputWidget-dropdownButton { @@ -1551,15 +1737,14 @@ body:not( :-moz-handler-blocked ) .oo-ui-fieldsetLayout { position: absolute; right: 0; top: 0; - height: 2.5em; width: 2.5em; + height: 2.5em; padding: 0; } .oo-ui-comboBoxInputWidget-php > .oo-ui-indicatorElement-indicator { pointer-events: none; } -.oo-ui-comboBoxInputWidget input, -.oo-ui-comboBoxInputWidget textarea { +.oo-ui-comboBoxInputWidget input { height: 2.5em; border-top-right-radius: 0; border-bottom-right-radius: 0; @@ -1569,16 +1754,17 @@ body:not( :-moz-handler-blocked ) .oo-ui-fieldsetLayout { width: 2.5em; } .oo-ui-comboBoxInputWidget-dropdownButton .oo-ui-buttonElement-button { + min-width: 2.5em; min-height: 2.5em; - padding: 0.546875em; + padding-left: 0; + padding-right: 0; } .oo-ui-comboBoxInputWidget-dropdownButton .oo-ui-buttonElement-button, .oo-ui-comboBoxInputWidget-dropdownButton .oo-ui-buttonElement-button:focus { border-top-left-radius: 0; border-bottom-left-radius: 0; } -.oo-ui-comboBoxInputWidget.oo-ui-comboBoxInputWidget-empty input, -.oo-ui-comboBoxInputWidget.oo-ui-comboBoxInputWidget-empty textarea { +.oo-ui-comboBoxInputWidget.oo-ui-comboBoxInputWidget-empty input { border-right-width: 1px; } .oo-ui-comboBoxInputWidget.oo-ui-widget-disabled .oo-ui-indicatorElement-indicator { @@ -1626,7 +1812,6 @@ body:not( :-moz-handler-blocked ) .oo-ui-fieldsetLayout { overflow: hidden; } .oo-ui-progressBarWidget-bar { - background-color: #36c; height: 1em; -webkit-transition: width 200ms; -moz-transition: width 200ms; @@ -1643,8 +1828,11 @@ body:not( :-moz-handler-blocked ) .oo-ui-fieldsetLayout { transform: translate(-25%); border-left-width: 1px; } -.oo-ui-progressBarWidget.oo-ui-widget-disabled { - opacity: 0.6; +.oo-ui-progressBarWidget.oo-ui-widget-enabled .oo-ui-progressBarWidget-bar { + background-color: #36c; +} +.oo-ui-progressBarWidget.oo-ui-widget-disabled .oo-ui-progressBarWidget-bar { + background-color: #c8ccd1; } @-webkit-keyframes oo-ui-progressBarWidget-slide { from { diff --git a/resources/lib/oojs-ui/oojs-ui-core.js b/resources/lib/oojs-ui/oojs-ui-core.js index 872d81ff64..f10bdfa710 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.18.3 + * OOjs UI v0.19.5 * https://www.mediawiki.org/wiki/OOjs_UI * * Copyright 2011–2017 OOjs UI Team and other contributors. * Released under the MIT license * http://oojs.mit-license.org * - * Date: 2017-01-04T00:22:40Z + * Date: 2017-03-07T22:57:01Z */ ( function ( OO ) { @@ -57,16 +57,17 @@ OO.ui.MouseButtons = { /** * @property {number} + * @private */ OO.ui.elementId = 0; /** * Generate a unique ID for element * - * @return {string} [id] + * @return {string} ID */ OO.ui.generateElementId = function () { - OO.ui.elementId += 1; + OO.ui.elementId++; return 'oojsui-' + OO.ui.elementId; }; @@ -386,15 +387,49 @@ OO.ui.infuse = function ( idOrNode ) { /** * Get a localized message. * - * In environments that provide a localization system, this function should be overridden to - * return the message translated in the user's language. The default implementation always returns - * English messages. - * * After the message key, message parameters may optionally be passed. In the default implementation, * any occurrences of $1 are replaced with the first parameter, $2 with the second parameter, etc. * Alternative implementations of OO.ui.msg may use any substitution system they like, as long as * they support unnamed, ordered message parameters. * + * In environments that provide a localization system, this function should be overridden to + * return the message translated in the user's language. The default implementation always returns + * English messages. An example of doing this with [jQuery.i18n](https://github.com/wikimedia/jquery.i18n) + * follows. + * + * @example + * var i, iLen, button, + * messagePath = 'oojs-ui/dist/i18n/', + * languages = [ $.i18n().locale, 'ur', 'en' ], + * languageMap = {}; + * + * for ( i = 0, iLen = languages.length; i < iLen; i++ ) { + * languageMap[ languages[ i ] ] = messagePath + languages[ i ].toLowerCase() + '.json'; + * } + * + * $.i18n().load( languageMap ).done( function() { + * // Replace the built-in `msg` only once we've loaded the internationalization. + * // OOjs UI uses `OO.ui.deferMsg` for all initially-loaded messages. So long as + * // you put off creating any widgets until this promise is complete, no English + * // will be displayed. + * OO.ui.msg = $.i18n; + * + * // A button displaying "OK" in the default locale + * button = new OO.ui.ButtonWidget( { + * label: OO.ui.msg( 'ooui-dialog-message-accept' ), + * icon: 'check' + * } ); + * $( 'body' ).append( button.$element ); + * + * // A button displaying "OK" in Urdu + * $.i18n().locale = 'ur'; + * button = new OO.ui.ButtonWidget( { + * label: OO.ui.msg( 'ooui-dialog-message-accept' ), + * icon: 'check' + * } ); + * $( 'body' ).append( button.$element ); + * } ); + * * @param {string} key Message key * @param {...Mixed} [params] Message parameters * @return {string} Translated message with parameters substituted @@ -554,7 +589,6 @@ OO.ui.Element = function OoUiElement( config ) { this.$element = config.$element || $( document.createElement( this.getTagName() ) ); this.elementGroup = null; - this.debouncedUpdateThemeClassesHandler = OO.ui.debounce( this.debouncedUpdateThemeClasses ); // Initialization if ( Array.isArray( config.classes ) ) { @@ -792,7 +826,7 @@ OO.ui.Element.static.reusePreInfuseDOM = function ( node, config ) { }; /** - * Gather the dynamic state (focus, value of form inputs, scroll position, etc.) of a HTML DOM node + * Gather the dynamic state (focus, value of form inputs, scroll position, etc.) of an HTML DOM node * (and its children) that represent an Element of the same class and the given configuration, * generated by the PHP implementation. * @@ -1038,6 +1072,73 @@ OO.ui.Element.static.getDimensions = function ( el ) { } }; +/** + * Get the number of pixels that an element's content is scrolled to the left. + * + * Adapted from <https://github.com/othree/jquery.rtl-scroll-type>. + * Original code copyright 2012 Wei-Ko Kao, licensed under the MIT License. + * + * This function smooths out browser inconsistencies (nicely described in the README at + * <https://github.com/othree/jquery.rtl-scroll-type>) and produces a result consistent + * with Firefox's 'scrollLeft', which seems the sanest. + * + * @static + * @method + * @param {HTMLElement|Window} el Element to measure + * @return {number} Scroll position from the left. + * If the element's direction is LTR, this is a positive number between `0` (initial scroll position) + * and `el.scrollWidth - el.clientWidth` (furthest possible scroll position). + * If the element's direction is RTL, this is a negative number between `0` (initial scroll position) + * and `-el.scrollWidth + el.clientWidth` (furthest possible scroll position). + */ +OO.ui.Element.static.getScrollLeft = ( function () { + var rtlScrollType = null; + + function test() { + var $definer = $( '<div dir="rtl" style="font-size: 14px; width: 1px; height: 1px; position: absolute; top: -1000px; overflow: scroll">A</div>' ), + definer = $definer[ 0 ]; + + $definer.appendTo( 'body' ); + if ( definer.scrollLeft > 0 ) { + // Safari, Chrome + rtlScrollType = 'default'; + } else { + definer.scrollLeft = 1; + if ( definer.scrollLeft === 0 ) { + // Firefox, old Opera + rtlScrollType = 'negative'; + } else { + // Internet Explorer, Edge + rtlScrollType = 'reverse'; + } + } + $definer.remove(); + } + + return function getScrollLeft( el ) { + var isRoot = el.window === el || + el === el.ownerDocument.body || + el === el.ownerDocument.documentElement, + scrollLeft = isRoot ? $( window ).scrollLeft() : el.scrollLeft, + // All browsers use the correct scroll type ('negative') on the root, so don't + // do any fixups when looking at the root element + direction = isRoot ? 'ltr' : $( el ).css( 'direction' ); + + if ( direction === 'rtl' ) { + if ( rtlScrollType === null ) { + test(); + } + if ( rtlScrollType === 'reverse' ) { + scrollLeft = -scrollLeft; + } else if ( rtlScrollType === 'default' ) { + scrollLeft = scrollLeft - el.scrollWidth + el.clientWidth; + } + } + + return scrollLeft; + }; +}() ); + /** * Get scrollable object parent * @@ -1083,7 +1184,8 @@ OO.ui.Element.static.getRootScrollableElement = function ( el ) { */ OO.ui.Element.static.getClosestScrollableContainer = function ( el, dimension ) { var i, val, - // props = [ 'overflow' ] doesn't work due to https://bugzilla.mozilla.org/show_bug.cgi?id=889091 + // Browsers do not correctly return the computed value of 'overflow' when 'overflow-x' and + // 'overflow-y' have different values, so we need to check the separate properties. props = [ 'overflow-x', 'overflow-y' ], $parent = $( el ).parent(); @@ -1098,6 +1200,11 @@ OO.ui.Element.static.getClosestScrollableContainer = function ( el, dimension ) i = props.length; while ( i-- ) { val = $parent.css( props[ i ] ); + // We assume that elements with 'overflow' (in any direction) set to 'hidden' will never be + // scrolled in that direction, but they can actually be scrolled programatically. The user can + // unintentionally perform a scroll in such case even if the application doesn't scroll + // programatically, e.g. when jumping to an anchor, or when using built-in find functionality. + // This could cause funny issues... if ( val === 'auto' || val === 'scroll' ) { return $parent[ 0 ]; } @@ -1129,6 +1236,9 @@ OO.ui.Element.static.scrollIntoView = function ( el, config ) { animations = {}; callback = typeof config.complete === 'function' && config.complete; + if ( callback ) { + OO.ui.warnDeprecation( 'Element#scrollIntoView: The `complete` callback config option is deprecated. Use the return promise instead.' ); + } container = this.getClosestScrollableContainer( el, config.direction ); $container = $( container ); elementDimensions = this.getDimensions( el ); @@ -1297,16 +1407,7 @@ OO.ui.Element.prototype.supports = function ( methods ) { * guaranteeing that theme updates do not occur within an element's constructor */ OO.ui.Element.prototype.updateThemeClasses = function () { - this.debouncedUpdateThemeClassesHandler(); -}; - -/** - * @private - * @localdoc This method is called directly from the QUnit tests instead of #updateThemeClasses, to - * make them synchronous. - */ -OO.ui.Element.prototype.debouncedUpdateThemeClasses = function () { - OO.ui.theme.updateElementClasses( this ); + OO.ui.theme.queueUpdateElementClasses( this ); }; /** @@ -1512,7 +1613,7 @@ OO.mixinClass( OO.ui.Widget, OO.EventEmitter ); /* Static Properties */ /** - * Whether this widget will behave reasonably when wrapped in a HTML `<label>`. If this is true, + * Whether this widget will behave reasonably when wrapped in an HTML `<label>`. If this is true, * wrappers such as OO.ui.FieldLayout may use a `<label>` instead of implementing own label click * handling. * @@ -1595,7 +1696,10 @@ OO.ui.Widget.prototype.updateDisabled = function () { * * @constructor */ -OO.ui.Theme = function OoUiTheme() {}; +OO.ui.Theme = function OoUiTheme() { + this.elementClassesQueue = []; + this.debouncedUpdateQueuedElementClasses = OO.ui.debounce( this.updateQueuedElementClasses ); +}; /* Setup */ @@ -1639,6 +1743,36 @@ OO.ui.Theme.prototype.updateElementClasses = function ( element ) { .addClass( classes.on.join( ' ' ) ); }; +/** + * @private + */ +OO.ui.Theme.prototype.updateQueuedElementClasses = function () { + var i; + for ( i = 0; i < this.elementClassesQueue.length; i++ ) { + this.updateElementClasses( this.elementClassesQueue[ i ] ); + } + // Clear the queue + this.elementClassesQueue = []; +}; + +/** + * Queue #updateElementClasses to be called for this element. + * + * @localdoc QUnit tests override this method to directly call #queueUpdateElementClasses, + * to make them synchronous. + * + * @param {OO.ui.Element} element Element for which to update classes + */ +OO.ui.Theme.prototype.queueUpdateElementClasses = function ( element ) { + // Keep items in the queue unique. Use lastIndexOf to start checking from the end because that's + // the most common case (this method is often called repeatedly for the same element). + if ( this.elementClassesQueue.lastIndexOf( element ) !== -1 ) { + return; + } + this.elementClassesQueue.push( element ); + this.debouncedUpdateQueuedElementClasses(); +}; + /** * Get the transition duration in milliseconds for dialogs opening/closing * @@ -2861,16 +2995,6 @@ OO.ui.mixin.LabelElement.prototype.getLabel = function () { return this.label; }; -/** - * Fit the label. - * - * @chainable - * @deprecated since 0.16.0 - */ -OO.ui.mixin.LabelElement.prototype.fitLabel = function () { - return this; -}; - /** * Set the content of the label. * @@ -3412,6 +3536,7 @@ OO.mixinClass( OO.ui.ButtonWidget, OO.ui.mixin.AccessKeyedElement ); /* Static Properties */ /** + * @static * @inheritdoc */ OO.ui.ButtonWidget.static.cancelButtonMouseDownEvents = false; @@ -3646,6 +3771,10 @@ OO.mixinClass( OO.ui.IconWidget, OO.ui.mixin.FlaggedElement ); /* Static Properties */ +/** + * @static + * @inheritdoc + */ OO.ui.IconWidget.static.tagName = 'span'; /** @@ -3699,6 +3828,10 @@ OO.mixinClass( OO.ui.IndicatorWidget, OO.ui.mixin.TitledElement ); /* Static Properties */ +/** + * @static + * @inheritdoc + */ OO.ui.IndicatorWidget.static.tagName = 'span'; /** @@ -3754,12 +3887,17 @@ OO.ui.LabelWidget = function OoUiLabelWidget( config ) { // Properties this.input = config.input; - // Events + // Initialization if ( this.input instanceof OO.ui.InputWidget ) { - this.$element.on( 'click', this.onClick.bind( this ) ); + if ( this.input.getInputId() ) { + this.$element.attr( 'for', this.input.getInputId() ); + } else { + this.$label.on( 'click', function () { + this.fieldWidget.focus(); + return false; + }.bind( this ) ); + } } - - // Initialization this.$element.addClass( 'oo-ui-labelWidget' ); }; @@ -3771,20 +3909,11 @@ OO.mixinClass( OO.ui.LabelWidget, OO.ui.mixin.TitledElement ); /* Static Properties */ -OO.ui.LabelWidget.static.tagName = 'span'; - -/* Methods */ - /** - * Handles label mouse click events. - * - * @private - * @param {jQuery.Event} e Mouse click event + * @static + * @inheritdoc */ -OO.ui.LabelWidget.prototype.onClick = function () { - this.input.simulateLabelClick(); - return false; -}; +OO.ui.LabelWidget.static.tagName = 'label'; /** * PendingElement is a mixin that is used to create elements that notify users that something is happening @@ -3802,6 +3931,7 @@ OO.ui.LabelWidget.prototype.onClick = function () { * } * OO.inheritClass( MessageDialog, OO.ui.MessageDialog ); * + * MessageDialog.static.name = 'myMessageDialog'; * MessageDialog.static.actions = [ * { action: 'save', label: 'Done', flags: 'primary' }, * { label: 'Cancel', flags: 'safe' } @@ -3919,188 +4049,592 @@ OO.ui.mixin.PendingElement.prototype.popPending = function () { }; /** - * Element that can be automatically clipped to visible boundaries. + * Element that will stick adjacent to a specified container, even when it is inserted elsewhere + * in the document (for example, in an OO.ui.Window's $overlay). * - * Whenever the element's natural height changes, you have to call - * {@link OO.ui.mixin.ClippableElement#clip} to make sure it's still - * clipping correctly. + * The elements's position is automatically calculated and maintained when window is resized or the + * page is scrolled. If you reposition the container manually, you have to call #position to make + * sure the element is still placed correctly. * - * The dimensions of #$clippableContainer will be compared to the boundaries of the - * nearest scrollable container. If #$clippableContainer is too tall and/or too wide, - * then #$clippable will be given a fixed reduced height and/or width and will be made - * scrollable. By default, #$clippable and #$clippableContainer are the same element, - * but you can build a static footer by setting #$clippableContainer to an element that contains - * #$clippable and the footer. + * As positioning is only possible when both the element and the container are attached to the DOM + * and visible, it's only done after you call #togglePositioning. You might want to do this inside + * the #toggle method to display a floating popup, for example. * * @abstract * @class * * @constructor * @param {Object} [config] Configuration options - * @cfg {jQuery} [$clippable] Node to clip, assigned to #$clippable, omit to use #$element - * @cfg {jQuery} [$clippableContainer] Node to keep visible, assigned to #$clippableContainer, - * omit to use #$clippable + * @cfg {jQuery} [$floatable] Node to position, assigned to #$floatable, omit to use #$element + * @cfg {jQuery} [$floatableContainer] Node to position adjacent to + * @cfg {string} [verticalPosition='below'] Where to position $floatable vertically: + * 'below': Directly below $floatableContainer, aligning f's top edge with fC's bottom edge + * 'above': Directly above $floatableContainer, aligning f's bottom edge with fC's top edge + * 'top': Align the top edge with $floatableContainer's top edge + * 'bottom': Align the bottom edge with $floatableContainer's bottom edge + * 'center': Vertically align the center with $floatableContainer's center + * @cfg {string} [horizontalPosition='start'] Where to position $floatable horizontally: + * 'before': Directly before $floatableContainer, aligning f's end edge with fC's start edge + * 'after': Directly after $floatableContainer, algining f's start edge with fC's end edge + * 'start': Align the start (left in LTR, right in RTL) edge with $floatableContainer's start edge + * 'end': Align the end (right in LTR, left in RTL) edge with $floatableContainer's end edge + * 'center': Horizontally align the center with $floatableContainer's center + * @cfg {boolean} [hideWhenOutOfView=true] Whether to hide the floatable element if the container + * is out of view */ -OO.ui.mixin.ClippableElement = function OoUiMixinClippableElement( config ) { +OO.ui.mixin.FloatableElement = function OoUiMixinFloatableElement( config ) { // Configuration initialization config = config || {}; // Properties - this.$clippable = null; - this.$clippableContainer = null; - this.clipping = false; - this.clippedHorizontally = false; - this.clippedVertically = false; - this.$clippableScrollableContainer = null; - this.$clippableScroller = null; - this.$clippableWindow = null; - this.idealWidth = null; - this.idealHeight = null; - this.onClippableScrollHandler = this.clip.bind( this ); - this.onClippableWindowResizeHandler = this.clip.bind( this ); + this.$floatable = null; + this.$floatableContainer = null; + this.$floatableWindow = null; + this.$floatableClosestScrollable = null; + this.onFloatableScrollHandler = this.position.bind( this ); + this.onFloatableWindowResizeHandler = this.position.bind( this ); // Initialization - if ( config.$clippableContainer ) { - this.setClippableContainer( config.$clippableContainer ); - } - this.setClippableElement( config.$clippable || this.$element ); + this.setFloatableContainer( config.$floatableContainer ); + this.setFloatableElement( config.$floatable || this.$element ); + this.setVerticalPosition( config.verticalPosition || 'below' ); + this.setHorizontalPosition( config.horizontalPosition || 'start' ); + this.hideWhenOutOfView = config.hideWhenOutOfView === undefined ? true : !!config.hideWhenOutOfView; }; /* Methods */ /** - * Set clippable element. + * Set floatable element. * * If an element is already set, it will be cleaned up before setting up the new element. * - * @param {jQuery} $clippable Element to make clippable + * @param {jQuery} $floatable Element to make floatable */ -OO.ui.mixin.ClippableElement.prototype.setClippableElement = function ( $clippable ) { - if ( this.$clippable ) { - this.$clippable.removeClass( 'oo-ui-clippableElement-clippable' ); - this.$clippable.css( { width: '', height: '', overflowX: '', overflowY: '' } ); - OO.ui.Element.static.reconsiderScrollbars( this.$clippable[ 0 ] ); +OO.ui.mixin.FloatableElement.prototype.setFloatableElement = function ( $floatable ) { + if ( this.$floatable ) { + this.$floatable.removeClass( 'oo-ui-floatableElement-floatable' ); + this.$floatable.css( { left: '', top: '' } ); } - this.$clippable = $clippable.addClass( 'oo-ui-clippableElement-clippable' ); - this.clip(); + this.$floatable = $floatable.addClass( 'oo-ui-floatableElement-floatable' ); + this.position(); }; /** - * Set clippable container. - * - * This is the container that will be measured when deciding whether to clip. When clipping, - * #$clippable will be resized in order to keep the clippable container fully visible. + * Set floatable container. * - * If the clippable container is unset, #$clippable will be used. + * The element will be positioned relative to the specified container. * - * @param {jQuery|null} $clippableContainer Container to keep visible, or null to unset + * @param {jQuery|null} $floatableContainer Container to keep visible, or null to unset */ -OO.ui.mixin.ClippableElement.prototype.setClippableContainer = function ( $clippableContainer ) { - this.$clippableContainer = $clippableContainer; - if ( this.$clippable ) { - this.clip(); +OO.ui.mixin.FloatableElement.prototype.setFloatableContainer = function ( $floatableContainer ) { + this.$floatableContainer = $floatableContainer; + if ( this.$floatable ) { + this.position(); } }; /** - * Toggle clipping. - * - * Do not turn clipping on until after the element is attached to the DOM and visible. + * Change how the element is positioned vertically. * - * @param {boolean} [clipping] Enable clipping, omit to toggle - * @chainable + * @param {string} position 'below', 'above', 'top', 'bottom' or 'center' */ -OO.ui.mixin.ClippableElement.prototype.toggleClipping = function ( clipping ) { - clipping = clipping === undefined ? !this.clipping : !!clipping; - - if ( this.clipping !== clipping ) { - this.clipping = clipping; - if ( clipping ) { - this.$clippableScrollableContainer = $( this.getClosestScrollableElementContainer() ); - // If the clippable container is the root, we have to listen to scroll events and check - // jQuery.scrollTop on the window because of browser inconsistencies - this.$clippableScroller = this.$clippableScrollableContainer.is( 'html, body' ) ? - $( OO.ui.Element.static.getWindow( this.$clippableScrollableContainer ) ) : - this.$clippableScrollableContainer; - this.$clippableScroller.on( 'scroll', this.onClippableScrollHandler ); - this.$clippableWindow = $( this.getElementWindow() ) - .on( 'resize', this.onClippableWindowResizeHandler ); - // Initial clip after visible - this.clip(); - } else { - this.$clippable.css( { width: '', height: '', overflowX: '', overflowY: '' } ); - OO.ui.Element.static.reconsiderScrollbars( this.$clippable[ 0 ] ); - - this.$clippableScrollableContainer = null; - this.$clippableScroller.off( 'scroll', this.onClippableScrollHandler ); - this.$clippableScroller = null; - this.$clippableWindow.off( 'resize', this.onClippableWindowResizeHandler ); - this.$clippableWindow = null; +OO.ui.mixin.FloatableElement.prototype.setVerticalPosition = function ( position ) { + if ( [ 'below', 'above', 'top', 'bottom', 'center' ].indexOf( position ) === -1 ) { + throw new Error( 'Invalid value for vertical position: ' + position ); + } + if ( this.verticalPosition !== position ) { + this.verticalPosition = position; + if ( this.$floatable ) { + this.position(); } } - - return this; }; /** - * Check if the element will be clipped to fit the visible area of the nearest scrollable container. + * Change how the element is positioned horizontally. * - * @return {boolean} Element will be clipped to the visible area + * @param {string} position 'before', 'after', 'start', 'end' or 'center' */ -OO.ui.mixin.ClippableElement.prototype.isClipping = function () { - return this.clipping; +OO.ui.mixin.FloatableElement.prototype.setHorizontalPosition = function ( position ) { + if ( [ 'before', 'after', 'start', 'end', 'center' ].indexOf( position ) === -1 ) { + throw new Error( 'Invalid value for horizontal position: ' + position ); + } + if ( this.horizontalPosition !== position ) { + this.horizontalPosition = position; + if ( this.$floatable ) { + this.position(); + } + } }; /** - * Check if the bottom or right of the element is being clipped by the nearest scrollable container. + * Toggle positioning. * - * @return {boolean} Part of the element is being clipped - */ -OO.ui.mixin.ClippableElement.prototype.isClipped = function () { - return this.clippedHorizontally || this.clippedVertically; -}; - -/** - * Check if the right of the element is being clipped by the nearest scrollable container. + * Do not turn positioning on until after the element is attached to the DOM and visible. * - * @return {boolean} Part of the element is being clipped + * @param {boolean} [positioning] Enable positioning, omit to toggle + * @chainable */ -OO.ui.mixin.ClippableElement.prototype.isClippedHorizontally = function () { - return this.clippedHorizontally; -}; +OO.ui.mixin.FloatableElement.prototype.togglePositioning = function ( positioning ) { + var closestScrollableOfContainer; -/** - * Check if the bottom of the element is being clipped by the nearest scrollable container. - * - * @return {boolean} Part of the element is being clipped - */ -OO.ui.mixin.ClippableElement.prototype.isClippedVertically = function () { - return this.clippedVertically; -}; + if ( !this.$floatable || !this.$floatableContainer ) { + return this; + } -/** - * Set the ideal size. These are the dimensions the element will have when it's not being clipped. - * - * @param {number|string} [width] Width as a number of pixels or CSS string with unit suffix - * @param {number|string} [height] Height as a number of pixels or CSS string with unit suffix - */ -OO.ui.mixin.ClippableElement.prototype.setIdealSize = function ( width, height ) { - this.idealWidth = width; - this.idealHeight = height; + positioning = positioning === undefined ? !this.positioning : !!positioning; - if ( !this.clipping ) { - // Update dimensions - this.$clippable.css( { width: width, height: height } ); + if ( positioning && !this.warnedUnattached && !this.isElementAttached() ) { + OO.ui.warnDeprecation( 'FloatableElement#togglePositioning: Before calling this method, the element must be attached to the DOM.' ); + this.warnedUnattached = true; } - // While clipping, idealWidth and idealHeight are not considered -}; -/** - * Clip element to visible boundaries and allow scrolling when needed. You should call this method - * when the element's natural height changes. - * - * Element will be clipped the bottom or right of the element is within 10px of the edge of, or + if ( this.positioning !== positioning ) { + this.positioning = positioning; + + this.needsCustomPosition = + this.verticalPostion !== 'below' || + this.horizontalPosition !== 'start' || + !OO.ui.contains( this.$floatableContainer[ 0 ], this.$floatable[ 0 ] ); + + closestScrollableOfContainer = OO.ui.Element.static.getClosestScrollableContainer( this.$floatableContainer[ 0 ] ); + // If the scrollable is the root, we have to listen to scroll events + // on the window because of browser inconsistencies. + if ( $( closestScrollableOfContainer ).is( 'html, body' ) ) { + closestScrollableOfContainer = OO.ui.Element.static.getWindow( closestScrollableOfContainer ); + } + + if ( positioning ) { + this.$floatableWindow = $( this.getElementWindow() ); + this.$floatableWindow.on( 'resize', this.onFloatableWindowResizeHandler ); + + this.$floatableClosestScrollable = $( closestScrollableOfContainer ); + this.$floatableClosestScrollable.on( 'scroll', this.onFloatableScrollHandler ); + + // Initial position after visible + this.position(); + } else { + if ( this.$floatableWindow ) { + this.$floatableWindow.off( 'resize', this.onFloatableWindowResizeHandler ); + this.$floatableWindow = null; + } + + if ( this.$floatableClosestScrollable ) { + this.$floatableClosestScrollable.off( 'scroll', this.onFloatableScrollHandler ); + this.$floatableClosestScrollable = null; + } + + this.$floatable.css( { left: '', right: '', top: '' } ); + } + } + + return this; +}; + +/** + * Check whether the bottom edge of the given element is within the viewport of the given container. + * + * @private + * @param {jQuery} $element + * @param {jQuery} $container + * @return {boolean} + */ +OO.ui.mixin.FloatableElement.prototype.isElementInViewport = function ( $element, $container ) { + var elemRect, contRect, topEdgeInBounds, bottomEdgeInBounds, leftEdgeInBounds, rightEdgeInBounds, + startEdgeInBounds, endEdgeInBounds, + direction = $element.css( 'direction' ); + + elemRect = $element[ 0 ].getBoundingClientRect(); + if ( $container[ 0 ] === window ) { + contRect = { + top: 0, + left: 0, + right: document.documentElement.clientWidth, + bottom: document.documentElement.clientHeight + }; + } else { + contRect = $container[ 0 ].getBoundingClientRect(); + } + + topEdgeInBounds = elemRect.top >= contRect.top && elemRect.top <= contRect.bottom; + bottomEdgeInBounds = elemRect.bottom >= contRect.top && elemRect.bottom <= contRect.bottom; + leftEdgeInBounds = elemRect.left >= contRect.left && elemRect.left <= contRect.right; + rightEdgeInBounds = elemRect.right >= contRect.left && elemRect.right <= contRect.right; + if ( direction === 'rtl' ) { + startEdgeInBounds = rightEdgeInBounds; + endEdgeInBounds = leftEdgeInBounds; + } else { + startEdgeInBounds = leftEdgeInBounds; + endEdgeInBounds = rightEdgeInBounds; + } + + if ( this.verticalPosition === 'below' && !bottomEdgeInBounds ) { + return false; + } + if ( this.verticalPosition === 'above' && !topEdgeInBounds ) { + return false; + } + if ( this.horizontalPosition === 'before' && !startEdgeInBounds ) { + return false; + } + if ( this.horizontalPosition === 'after' && !endEdgeInBounds ) { + return false; + } + + // The other positioning values are all about being inside the container, + // so in those cases all we care about is that any part of the container is visible. + return elemRect.top <= contRect.bottom && elemRect.bottom >= contRect.top && + elemRect.left <= contRect.right && elemRect.right >= contRect.left; +}; + +/** + * Position the floatable below its container. + * + * This should only be done when both of them are attached to the DOM and visible. + * + * @chainable + */ +OO.ui.mixin.FloatableElement.prototype.position = function () { + if ( !this.positioning ) { + return this; + } + + if ( this.hideWhenOutOfView && !this.isElementInViewport( this.$floatableContainer, this.$floatableClosestScrollable ) ) { + this.$floatable.addClass( 'oo-ui-element-hidden' ); + return this; + } else { + this.$floatable.removeClass( 'oo-ui-element-hidden' ); + } + + if ( !this.needsCustomPosition ) { + return this; + } + + this.$floatable.css( this.computePosition() ); + + // We updated the position, so re-evaluate the clipping state. + // (ClippableElement does not listen to 'scroll' events on $floatableContainer's parent, and so + // will not notice the need to update itself.) + // TODO: This is terrible, we shouldn't need to know about ClippableElement at all here. Why does + // it not listen to the right events in the right places? + if ( this.clip ) { + this.clip(); + } + + return this; +}; + +/** + * Compute how #$floatable should be positioned based on the position of #$floatableContainer + * and the positioning settings. This is a helper for #position that shouldn't be called directly, + * but may be overridden by subclasses if they want to change or add to the positioning logic. + * + * @return {Object} New position to apply with .css(). Keys are 'top', 'left', 'bottom' and 'right'. + */ +OO.ui.mixin.FloatableElement.prototype.computePosition = function () { + var isBody, scrollableX, scrollableY, containerPos, + horizScrollbarHeight, vertScrollbarWidth, scrollTop, scrollLeft, + newPos = { top: '', left: '', bottom: '', right: '' }, + direction = this.$floatableContainer.css( 'direction' ), + $offsetParent = this.$floatable.offsetParent(); + + if ( $offsetParent.is( 'html' ) ) { + // The innerHeight/Width and clientHeight/Width calculations don't work well on the + // <html> element, but they do work on the <body> + $offsetParent = $( $offsetParent[ 0 ].ownerDocument.body ); + } + isBody = $offsetParent.is( 'body' ); + scrollableX = $offsetParent.css( 'overflow-x' ) === 'scroll' || $offsetParent.css( 'overflow-x' ) === 'auto'; + scrollableY = $offsetParent.css( 'overflow-y' ) === 'scroll' || $offsetParent.css( 'overflow-y' ) === 'auto'; + + vertScrollbarWidth = $offsetParent.innerWidth() - $offsetParent.prop( 'clientWidth' ); + horizScrollbarHeight = $offsetParent.innerHeight() - $offsetParent.prop( 'clientHeight' ); + // We don't need to compute and add scrollTop and scrollLeft if the scrollable container is the body, + // or if it isn't scrollable + scrollTop = scrollableY && !isBody ? $offsetParent.scrollTop() : 0; + scrollLeft = scrollableX && !isBody ? OO.ui.Element.static.getScrollLeft( $offsetParent[ 0 ] ) : 0; + + // Avoid passing the <body> to getRelativePosition(), because it won't return what we expect + // if the <body> has a margin + containerPos = isBody ? + this.$floatableContainer.offset() : + OO.ui.Element.static.getRelativePosition( this.$floatableContainer, $offsetParent ); + containerPos.bottom = containerPos.top + this.$floatableContainer.outerHeight(); + containerPos.right = containerPos.left + this.$floatableContainer.outerWidth(); + containerPos.start = direction === 'rtl' ? containerPos.right : containerPos.left; + containerPos.end = direction === 'rtl' ? containerPos.left : containerPos.right; + + if ( this.verticalPosition === 'below' ) { + newPos.top = containerPos.bottom; + } else if ( this.verticalPosition === 'above' ) { + newPos.bottom = $offsetParent.outerHeight() - containerPos.top; + } else if ( this.verticalPosition === 'top' ) { + newPos.top = containerPos.top; + } else if ( this.verticalPosition === 'bottom' ) { + newPos.bottom = $offsetParent.outerHeight() - containerPos.bottom; + } else if ( this.verticalPosition === 'center' ) { + newPos.top = containerPos.top + + ( this.$floatableContainer.height() - this.$floatable.height() ) / 2; + } + + if ( this.horizontalPosition === 'before' ) { + newPos.end = containerPos.start; + } else if ( this.horizontalPosition === 'after' ) { + newPos.start = containerPos.end; + } else if ( this.horizontalPosition === 'start' ) { + newPos.start = containerPos.start; + } else if ( this.horizontalPosition === 'end' ) { + newPos.end = containerPos.end; + } else if ( this.horizontalPosition === 'center' ) { + newPos.left = containerPos.left + + ( this.$floatableContainer.width() - this.$floatable.width() ) / 2; + } + + if ( newPos.start !== undefined ) { + if ( direction === 'rtl' ) { + newPos.right = ( isBody ? $( $offsetParent[ 0 ].ownerDocument.documentElement ) : $offsetParent ).outerWidth() - newPos.start; + } else { + newPos.left = newPos.start; + } + delete newPos.start; + } + if ( newPos.end !== undefined ) { + if ( direction === 'rtl' ) { + newPos.left = newPos.end; + } else { + newPos.right = ( isBody ? $( $offsetParent[ 0 ].ownerDocument.documentElement ) : $offsetParent ).outerWidth() - newPos.end; + } + delete newPos.end; + } + + // Account for scroll position + if ( newPos.top !== '' ) { + newPos.top += scrollTop; + } + if ( newPos.bottom !== '' ) { + newPos.bottom -= scrollTop; + } + if ( newPos.left !== '' ) { + newPos.left += scrollLeft; + } + if ( newPos.right !== '' ) { + newPos.right -= scrollLeft; + } + + // Account for scrollbar gutter + if ( newPos.bottom !== '' ) { + newPos.bottom -= horizScrollbarHeight; + } + if ( direction === 'rtl' ) { + if ( newPos.left !== '' ) { + newPos.left -= vertScrollbarWidth; + } + } else { + if ( newPos.right !== '' ) { + newPos.right -= vertScrollbarWidth; + } + } + + return newPos; +}; + +/** + * Element that can be automatically clipped to visible boundaries. + * + * Whenever the element's natural height changes, you have to call + * {@link OO.ui.mixin.ClippableElement#clip} to make sure it's still + * clipping correctly. + * + * The dimensions of #$clippableContainer will be compared to the boundaries of the + * nearest scrollable container. If #$clippableContainer is too tall and/or too wide, + * then #$clippable will be given a fixed reduced height and/or width and will be made + * scrollable. By default, #$clippable and #$clippableContainer are the same element, + * but you can build a static footer by setting #$clippableContainer to an element that contains + * #$clippable and the footer. + * + * @abstract + * @class + * + * @constructor + * @param {Object} [config] Configuration options + * @cfg {jQuery} [$clippable] Node to clip, assigned to #$clippable, omit to use #$element + * @cfg {jQuery} [$clippableContainer] Node to keep visible, assigned to #$clippableContainer, + * omit to use #$clippable + */ +OO.ui.mixin.ClippableElement = function OoUiMixinClippableElement( config ) { + // Configuration initialization + config = config || {}; + + // Properties + this.$clippable = null; + this.$clippableContainer = null; + this.clipping = false; + this.clippedHorizontally = false; + this.clippedVertically = false; + this.$clippableScrollableContainer = null; + this.$clippableScroller = null; + this.$clippableWindow = null; + this.idealWidth = null; + this.idealHeight = null; + this.onClippableScrollHandler = this.clip.bind( this ); + this.onClippableWindowResizeHandler = this.clip.bind( this ); + + // Initialization + if ( config.$clippableContainer ) { + this.setClippableContainer( config.$clippableContainer ); + } + this.setClippableElement( config.$clippable || this.$element ); +}; + +/* Methods */ + +/** + * Set clippable element. + * + * If an element is already set, it will be cleaned up before setting up the new element. + * + * @param {jQuery} $clippable Element to make clippable + */ +OO.ui.mixin.ClippableElement.prototype.setClippableElement = function ( $clippable ) { + if ( this.$clippable ) { + this.$clippable.removeClass( 'oo-ui-clippableElement-clippable' ); + this.$clippable.css( { width: '', height: '', overflowX: '', overflowY: '' } ); + OO.ui.Element.static.reconsiderScrollbars( this.$clippable[ 0 ] ); + } + + this.$clippable = $clippable.addClass( 'oo-ui-clippableElement-clippable' ); + this.clip(); +}; + +/** + * Set clippable container. + * + * This is the container that will be measured when deciding whether to clip. When clipping, + * #$clippable will be resized in order to keep the clippable container fully visible. + * + * If the clippable container is unset, #$clippable will be used. + * + * @param {jQuery|null} $clippableContainer Container to keep visible, or null to unset + */ +OO.ui.mixin.ClippableElement.prototype.setClippableContainer = function ( $clippableContainer ) { + this.$clippableContainer = $clippableContainer; + if ( this.$clippable ) { + this.clip(); + } +}; + +/** + * Toggle clipping. + * + * Do not turn clipping on until after the element is attached to the DOM and visible. + * + * @param {boolean} [clipping] Enable clipping, omit to toggle + * @chainable + */ +OO.ui.mixin.ClippableElement.prototype.toggleClipping = function ( clipping ) { + clipping = clipping === undefined ? !this.clipping : !!clipping; + + if ( clipping && !this.warnedUnattached && !this.isElementAttached() ) { + OO.ui.warnDeprecation( 'ClippableElement#toggleClipping: Before calling this method, the element must be attached to the DOM.' ); + this.warnedUnattached = true; + } + + if ( this.clipping !== clipping ) { + this.clipping = clipping; + if ( clipping ) { + this.$clippableScrollableContainer = $( this.getClosestScrollableElementContainer() ); + // If the clippable container is the root, we have to listen to scroll events and check + // jQuery.scrollTop on the window because of browser inconsistencies + this.$clippableScroller = this.$clippableScrollableContainer.is( 'html, body' ) ? + $( OO.ui.Element.static.getWindow( this.$clippableScrollableContainer ) ) : + this.$clippableScrollableContainer; + this.$clippableScroller.on( 'scroll', this.onClippableScrollHandler ); + this.$clippableWindow = $( this.getElementWindow() ) + .on( 'resize', this.onClippableWindowResizeHandler ); + // Initial clip after visible + this.clip(); + } else { + this.$clippable.css( { + width: '', + height: '', + maxWidth: '', + maxHeight: '', + overflowX: '', + overflowY: '' + } ); + OO.ui.Element.static.reconsiderScrollbars( this.$clippable[ 0 ] ); + + this.$clippableScrollableContainer = null; + this.$clippableScroller.off( 'scroll', this.onClippableScrollHandler ); + this.$clippableScroller = null; + this.$clippableWindow.off( 'resize', this.onClippableWindowResizeHandler ); + this.$clippableWindow = null; + } + } + + return this; +}; + +/** + * Check if the element will be clipped to fit the visible area of the nearest scrollable container. + * + * @return {boolean} Element will be clipped to the visible area + */ +OO.ui.mixin.ClippableElement.prototype.isClipping = function () { + return this.clipping; +}; + +/** + * Check if the bottom or right of the element is being clipped by the nearest scrollable container. + * + * @return {boolean} Part of the element is being clipped + */ +OO.ui.mixin.ClippableElement.prototype.isClipped = function () { + return this.clippedHorizontally || this.clippedVertically; +}; + +/** + * Check if the right of the element is being clipped by the nearest scrollable container. + * + * @return {boolean} Part of the element is being clipped + */ +OO.ui.mixin.ClippableElement.prototype.isClippedHorizontally = function () { + return this.clippedHorizontally; +}; + +/** + * Check if the bottom of the element is being clipped by the nearest scrollable container. + * + * @return {boolean} Part of the element is being clipped + */ +OO.ui.mixin.ClippableElement.prototype.isClippedVertically = function () { + return this.clippedVertically; +}; + +/** + * Set the ideal size. These are the dimensions the element will have when it's not being clipped. + * + * @param {number|string} [width] Width as a number of pixels or CSS string with unit suffix + * @param {number|string} [height] Height as a number of pixels or CSS string with unit suffix + */ +OO.ui.mixin.ClippableElement.prototype.setIdealSize = function ( width, height ) { + this.idealWidth = width; + this.idealHeight = height; + + if ( !this.clipping ) { + // Update dimensions + this.$clippable.css( { width: width, height: height } ); + } + // While clipping, idealWidth and idealHeight are not considered +}; + +/** + * Clip element to visible boundaries and allow scrolling when needed. You should call this method + * when the element's natural height changes. + * + * Element will be clipped the bottom or right of the element is within 10px of the edge of, or * overlapped by, the visible area of the nearest scrollable container. * * Because calling clip() when the natural height changes isn't always possible, we also set @@ -4154,8 +4688,11 @@ 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) + // 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 this.$clippable.css( { - overflowX: 'scroll', width: Math.max( 0, allotedWidth ), maxWidth: '' } ); @@ -4167,8 +4704,11 @@ OO.ui.mixin.ClippableElement.prototype.clip = function () { } ); } if ( clipHeight ) { + // The order matters here. If overflow is not set first, Chrome displays bogus scrollbars. (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 this.$clippable.css( { - overflowY: 'scroll', height: Math.max( 0, allotedHeight ), maxHeight: '' } ); @@ -4196,6 +4736,8 @@ OO.ui.mixin.ClippableElement.prototype.clip = function () { * By default, each popup has an anchor that points toward its origin. * Please see the [OOjs UI documentation on Mediawiki] [1] for more information and examples. * + * Unlike most widgets, PopupWidget is initially hidden and must be shown by calling #toggle. + * * @example * // A popup widget. * var popup = new OO.ui.PopupWidget( { @@ -4214,19 +4756,31 @@ OO.ui.mixin.ClippableElement.prototype.clip = function () { * @extends OO.ui.Widget * @mixins OO.ui.mixin.LabelElement * @mixins OO.ui.mixin.ClippableElement + * @mixins OO.ui.mixin.FloatableElement * * @constructor * @param {Object} [config] Configuration options * @cfg {number} [width=320] Width of popup in pixels * @cfg {number} [height] Height of popup in pixels. Omit to use the automatic height. * @cfg {boolean} [anchor=true] Show anchor pointing to origin of popup - * @cfg {string} [align='center'] Alignment of the popup: `center`, `force-left`, `force-right`, `backwards` or `forwards`. - * If the popup is forced-left the popup body is leaning towards the left. For force-right alignment, the body of the - * popup is leaning towards the right of the screen. - * Using 'backwards' is a logical direction which will result in the popup leaning towards the beginning of the sentence - * in the given language, which means it will flip to the correct positioning in right-to-left languages. - * Using 'forward' will also result in a logical alignment where the body of the popup leans towards the end of the - * sentence in the given language. + * @cfg {string} [position='below'] Where to position the popup relative to $floatableContainer + * 'above': Put popup above $floatableContainer; anchor points down to the start edge of $floatableContainer + * 'below': Put popup below $floatableContainer; anchor points up to the start edge of $floatableContainer + * 'before': Put popup to the left (LTR) / right (RTL) of $floatableContainer; anchor points + * endwards (right/left) to the vertical center of $floatableContainer + * 'after': Put popup to the right (LTR) / left (RTL) of $floatableContainer; anchor points + * startwards (left/right) to the vertical center of $floatableContainer + * @cfg {string} [align='center'] How to align the popup to $floatableContainer + * 'forwards': If position is above/below, move the popup as far endwards (right in LTR, left in RTL) + * as possible while still keeping the anchor within the popup; + * if position is before/after, move the popup as far downwards as possible. + * 'backwards': If position is above/below, move the popup as far startwards (left in LTR, right in RTL) + * as possible while still keeping the anchor within the popup; + * if position in before/after, move the popup as far upwards as possible. + * 'center': Horizontally (if position is above/below) or vertically (before/after) align the center + * of the popup with the center of $floatableContainer. + * 'force-left': Alias for 'forwards' in LTR and 'backwards' in RTL + * 'force-right': Alias for 'backwards' in RTL and 'forwards' in LTR * @cfg {jQuery} [$container] Constrain the popup to the boundaries of the specified container. * See the [OOjs UI docs on MediaWiki][3] for an example. * [3]: https://www.mediawiki.org/wiki/OOjs_UI/Widgets/Popups#containerExample @@ -4259,6 +4813,7 @@ OO.ui.PopupWidget = function OoUiPopupWidget( config ) { $clippable: this.$body, $clippableContainer: this.$popup } ) ); + OO.ui.mixin.FloatableElement.call( this, config ); // Properties this.$anchor = $( '<div>' ); @@ -4268,15 +4823,16 @@ OO.ui.PopupWidget = function OoUiPopupWidget( config ) { this.autoClose = !!config.autoClose; this.$autoCloseIgnore = config.$autoCloseIgnore; this.transitionTimeout = null; - this.anchor = null; + this.anchored = false; this.width = config.width !== undefined ? config.width : 320; this.height = config.height !== undefined ? config.height : null; - this.setAlignment( config.align ); this.onMouseDownHandler = this.onMouseDown.bind( this ); this.onDocumentKeyDownHandler = this.onDocumentKeyDown.bind( this ); // Initialization this.toggleAnchor( config.anchor === undefined || config.anchor ); + this.setAlignment( config.align || 'center' ); + this.setPosition( config.position || 'below' ); this.$body.addClass( 'oo-ui-popupWidget-body' ); this.$anchor.addClass( 'oo-ui-popupWidget-anchor' ); this.$popup @@ -4323,6 +4879,7 @@ OO.ui.PopupWidget = function OoUiPopupWidget( config ) { OO.inheritClass( OO.ui.PopupWidget, OO.ui.Widget ); OO.mixinClass( OO.ui.PopupWidget, OO.ui.mixin.LabelElement ); OO.mixinClass( OO.ui.PopupWidget, OO.ui.mixin.ClippableElement ); +OO.mixinClass( OO.ui.PopupWidget, OO.ui.mixin.FloatableElement ); /* Methods */ @@ -4423,6 +4980,21 @@ OO.ui.PopupWidget.prototype.toggleAnchor = function ( show ) { this.anchored = show; } }; +/** + * Change which edge the anchor appears on. + * + * @param {string} edge 'top', 'bottom', 'start' or 'end' + */ +OO.ui.PopupWidget.prototype.setAnchorEdge = function ( edge ) { + if ( [ 'top', 'bottom', 'start', 'end' ].indexOf( edge ) === -1 ) { + throw new Error( 'Invalid value for edge: ' + edge ); + } + if ( this.anchorEdge !== null ) { + this.$element.removeClass( 'oo-ui-popupWidget-anchored-' + this.anchorEdge ); + } + this.anchorEdge = edge; + this.$element.addClass( 'oo-ui-popupWidget-anchored-' + edge ); +}; /** * Check if the anchor is visible. @@ -4430,10 +5002,18 @@ OO.ui.PopupWidget.prototype.toggleAnchor = function ( show ) { * @return {boolean} Anchor is visible */ OO.ui.PopupWidget.prototype.hasAnchor = function () { - return this.anchor; + return this.anchored; }; /** + * Toggle visibility of the popup. The popup is initially hidden and must be shown by calling + * `.toggle( true )` after its #$element is attached to the DOM. + * + * Do not show the popup while it is not attached to the DOM. The calculations required to display + * it in the right place and with the right dimensions only work correctly while it is attached. + * Side-effects may include broken interface and exceptions being thrown. This wasn't always + * strictly enforced, so currently it only generates a warning in the browser console. + * * @inheritdoc */ OO.ui.PopupWidget.prototype.toggle = function ( show ) { @@ -4442,10 +5022,21 @@ OO.ui.PopupWidget.prototype.toggle = function ( show ) { change = show !== this.isVisible(); + if ( show && !this.warnedUnattached && !this.isElementAttached() ) { + OO.ui.warnDeprecation( 'PopupWidget#toggle: Before calling this method, the popup must be attached to the DOM.' ); + this.warnedUnattached = true; + } + if ( show && !this.$floatableContainer && this.isElementAttached() ) { + // Fall back to the parent node if the floatableContainer is not set + this.setFloatableContainer( this.$element.parent() ); + } + // Parent method OO.ui.PopupWidget.parent.prototype.toggle.call( this, show ); if ( change ) { + this.togglePositioning( show && !!this.$floatableContainer ); + if ( show ) { if ( this.autoClose ) { this.bindMouseDownListener(); @@ -4493,62 +5084,7 @@ OO.ui.PopupWidget.prototype.setSize = function ( width, height, transition ) { * @chainable */ OO.ui.PopupWidget.prototype.updateDimensions = function ( transition ) { - var popupOffset, originOffset, containerLeft, containerWidth, containerRight, - popupLeft, popupRight, overlapLeft, overlapRight, anchorWidth, - align = this.align, - widget = this; - - if ( !this.$container ) { - // Lazy-initialize $container if not specified in constructor - this.$container = $( this.getClosestScrollableElementContainer() ); - } - - // Set height and width before measuring things, since it might cause our measurements - // to change (e.g. due to scrollbars appearing or disappearing) - this.$popup.css( { - width: this.width, - height: this.height !== null ? this.height : 'auto' - } ); - - // If we are in RTL, we need to flip the alignment, unless it is center - if ( align === 'forwards' || align === 'backwards' ) { - if ( this.$container.css( 'direction' ) === 'rtl' ) { - align = ( { forwards: 'force-left', backwards: 'force-right' } )[ this.align ]; - } else { - align = ( { forwards: 'force-right', backwards: 'force-left' } )[ this.align ]; - } - - } - - // Compute initial popupOffset based on alignment - popupOffset = this.width * ( { 'force-left': -1, center: -0.5, 'force-right': 0 } )[ align ]; - - // Figure out if this will cause the popup to go beyond the edge of the container - originOffset = this.$element.offset().left; - containerLeft = this.$container.offset().left; - containerWidth = this.$container.innerWidth(); - containerRight = containerLeft + containerWidth; - popupLeft = popupOffset - this.containerPadding; - popupRight = popupOffset + this.containerPadding + this.width + this.containerPadding; - overlapLeft = ( originOffset + popupLeft ) - containerLeft; - overlapRight = containerRight - ( originOffset + popupRight ); - - // Adjust offset to make the popup not go beyond the edge, if needed - if ( overlapRight < 0 ) { - popupOffset += overlapRight; - } else if ( overlapLeft < 0 ) { - popupOffset -= overlapLeft; - } - - // Adjust offset to avoid anchor being rendered too close to the edge - // $anchor.width() doesn't work with the pure CSS anchor (returns 0) - // TODO: Find a measurement that works for CSS anchors and image anchors - anchorWidth = this.$anchor[ 0 ].scrollWidth * 2; - if ( popupOffset + this.width < anchorWidth ) { - popupOffset = anchorWidth - this.width; - } else if ( -popupOffset < anchorWidth ) { - popupOffset = -anchorWidth; - } + var widget = this; // Prevent transition from being interrupted clearTimeout( this.transitionTimeout ); @@ -4557,8 +5093,7 @@ OO.ui.PopupWidget.prototype.updateDimensions = function ( transition ) { this.$element.addClass( 'oo-ui-popupWidget-transitioning' ); } - // Position body relative to anchor - this.$popup.css( 'margin-left', popupOffset ); + this.position(); if ( transition ) { // Prevent transitioning after transition is complete @@ -4569,38 +5104,196 @@ OO.ui.PopupWidget.prototype.updateDimensions = function ( transition ) { // Prevent transitioning immediately this.$element.removeClass( 'oo-ui-popupWidget-transitioning' ); } +}; - // Reevaluate clipping state since we've relocated and resized the popup - this.clip(); +/** + * @inheritdoc + */ +OO.ui.PopupWidget.prototype.computePosition = function () { + var direction, align, vertical, start, end, near, far, sizeProp, popupSize, anchorSize, anchorPos, + anchorOffset, anchorMargin, parentPosition, positionProp, positionAdjustment, floatablePos, + offsetParentPos, containerPos, + popupPos = {}, + anchorCss = { left: '', right: '', top: '', bottom: '' }, + alignMap = { + ltr: { + 'force-left': 'backwards', + 'force-right': 'forwards' + }, + rtl: { + 'force-left': 'forwards', + 'force-right': 'backwards' + } + }, + anchorEdgeMap = { + above: 'bottom', + below: 'top', + before: 'end', + after: 'start' + }, + hPosMap = { + forwards: 'start', + center: 'center', + backwards: 'before' + }, + vPosMap = { + forwards: 'top', + center: 'center', + backwards: 'bottom' + }; - return this; + if ( !this.$container ) { + // Lazy-initialize $container if not specified in constructor + this.$container = $( this.getClosestScrollableElementContainer() ); + } + direction = this.$container.css( 'direction' ); + + // Set height and width before we do anything else, since it might cause our measurements + // to change (e.g. due to scrollbars appearing or disappearing), and it also affects centering + this.$popup.css( { + width: this.width, + height: this.height !== null ? this.height : 'auto' + } ); + + align = alignMap[ direction ][ this.align ] || this.align; + // If the popup is positioned before or after, then the anchor positioning is vertical, otherwise horizontal + vertical = this.popupPosition === 'before' || this.popupPosition === 'after'; + start = vertical ? 'top' : ( direction === 'rtl' ? 'right' : 'left' ); + end = vertical ? 'bottom' : ( direction === 'rtl' ? 'left' : 'right' ); + near = vertical ? 'top' : 'left'; + far = vertical ? 'bottom' : 'right'; + sizeProp = vertical ? 'Height' : 'Width'; + popupSize = vertical ? ( this.height || this.$popup.height() ) : this.width; + + this.setAnchorEdge( anchorEdgeMap[ this.popupPosition ] ); + this.horizontalPosition = vertical ? this.popupPosition : hPosMap[ align ]; + this.verticalPosition = vertical ? vPosMap[ align ] : this.popupPosition; + + // Parent method + parentPosition = OO.ui.mixin.FloatableElement.prototype.computePosition.call( this ); + // Find out which property FloatableElement used for positioning, and adjust that value + positionProp = vertical ? + ( parentPosition.top !== '' ? 'top' : 'bottom' ) : + ( parentPosition.left !== '' ? 'left' : 'right' ); + + // Figure out where the near and far edges of the popup and $floatableContainer are + floatablePos = this.$floatableContainer.offset(); + floatablePos[ far ] = floatablePos[ near ] + this.$floatableContainer[ 'outer' + sizeProp ](); + // Measure where the offsetParent is and compute our position based on that and parentPosition + offsetParentPos = this.$element.offsetParent().offset(); + + if ( positionProp === near ) { + popupPos[ near ] = offsetParentPos[ near ] + parentPosition[ near ]; + popupPos[ far ] = popupPos[ near ] + popupSize; + } else { + popupPos[ far ] = offsetParentPos[ near ] + + this.$element.offsetParent()[ 'inner' + sizeProp ]() - parentPosition[ far ]; + popupPos[ near ] = popupPos[ far ] - popupSize; + } + + // Position the anchor (which is positioned relative to the popup) to point to $floatableContainer + // For popups above/below, we point to the start edge; for popups before/after, we point to the center + anchorPos = vertical ? ( floatablePos[ start ] + floatablePos[ end ] ) / 2 : floatablePos[ start ]; + anchorOffset = ( start === far ? -1 : 1 ) * ( anchorPos - popupPos[ start ] ); + + // If the anchor is less than 2*anchorSize from either edge, move the popup to make more space + // this.$anchor.width()/height() returns 0 because of the CSS trickery we use, so use scrollWidth/Height + anchorSize = this.$anchor[ 0 ][ 'scroll' + sizeProp ]; + anchorMargin = parseFloat( this.$anchor.css( 'margin-' + start ) ); + if ( anchorOffset + anchorMargin < 2 * anchorSize ) { + // Not enough space for the anchor on the start side; pull the popup startwards + positionAdjustment = ( positionProp === start ? -1 : 1 ) * + ( 2 * anchorSize - ( anchorOffset + anchorMargin ) ); + } else if ( anchorOffset + anchorMargin > popupSize - 2 * anchorSize ) { + // Not enough space for the anchor on the end side; pull the popup endwards + positionAdjustment = ( positionProp === end ? -1 : 1 ) * + ( anchorOffset + anchorMargin - ( popupSize - 2 * anchorSize ) ); + } else { + positionAdjustment = 0; + } + + // Check if the popup will go beyond the edge of this.$container + containerPos = this.$container.offset(); + containerPos[ far ] = containerPos[ near ] + this.$container[ 'inner' + sizeProp ](); + // Take into account how much the popup will move because of the adjustments we're going to make + popupPos[ near ] += ( positionProp === near ? 1 : -1 ) * positionAdjustment; + popupPos[ far ] += ( positionProp === near ? 1 : -1 ) * positionAdjustment; + if ( containerPos[ near ] + this.containerPadding > popupPos[ near ] ) { + // Popup goes beyond the near (left/top) edge, move it to the right/bottom + positionAdjustment += ( positionProp === near ? 1 : -1 ) * + ( containerPos[ near ] + this.containerPadding - popupPos[ near ] ); + } else if ( containerPos[ far ] - this.containerPadding < popupPos[ far ] ) { + // Popup goes beyond the far (right/bottom) edge, move it to the left/top + positionAdjustment += ( positionProp === far ? 1 : -1 ) * + ( popupPos[ far ] - ( containerPos[ far ] - this.containerPadding ) ); + } + + // Adjust anchorOffset for positionAdjustment + anchorOffset += ( positionProp === start ? -1 : 1 ) * positionAdjustment; + + // Position the anchor + anchorCss[ start ] = anchorOffset; + this.$anchor.css( anchorCss ); + // Move the popup if needed + parentPosition[ positionProp ] += positionAdjustment; + + return parentPosition; }; /** * Set popup alignment * - * @param {string} align Alignment of the popup, `center`, `force-left`, `force-right`, + * @param {string} [align=center] Alignment of the popup, `center`, `force-left`, `force-right`, * `backwards` or `forwards`. */ OO.ui.PopupWidget.prototype.setAlignment = function ( align ) { - // Validate alignment and transform deprecated values - if ( [ 'left', 'right', 'force-left', 'force-right', 'backwards', 'forwards', 'center' ].indexOf( align ) > -1 ) { - this.align = { left: 'force-right', right: 'force-left' }[ align ] || align; + // Transform values deprecated since v0.11.0 + if ( align === 'left' || align === 'right' ) { + OO.ui.warnDeprecation( 'PopupWidget#setAlignment parameter value `' + align + '` is deprecated. Use `force-right` or `force-left` instead.' ); + align = { left: 'force-right', right: 'force-left' }[ align ]; + } + + // Validate alignment + if ( [ 'force-left', 'force-right', 'backwards', 'forwards', 'center' ].indexOf( align ) > -1 ) { + this.align = align; } else { this.align = 'center'; } + this.position(); }; /** * Get popup alignment * - * @return {string} align Alignment of the popup, `center`, `force-left`, `force-right`, + * @return {string} Alignment of the popup, `center`, `force-left`, `force-right`, * `backwards` or `forwards`. */ OO.ui.PopupWidget.prototype.getAlignment = function () { return this.align; }; +/** + * Change the positioning of the popup. + * + * @param {string} position 'above', 'below', 'before' or 'after' + */ +OO.ui.PopupWidget.prototype.setPosition = function ( position ) { + if ( [ 'above', 'below', 'before', 'after' ].indexOf( position ) === -1 ) { + position = 'below'; + } + this.popupPosition = position; + this.position(); +}; + +/** + * Get popup positioning. + * + * @return {string} 'above', 'below', 'before' or 'after' + */ +OO.ui.PopupWidget.prototype.getPosition = function () { + return this.popupPosition; +}; + /** * PopupElement is mixed into other classes to generate a {@link OO.ui.PopupWidget popup widget}. * A popup is a container for content. It is overlaid and positioned absolutely. By default, each @@ -4621,9 +5314,14 @@ OO.ui.mixin.PopupElement = function OoUiMixinPopupElement( config ) { // Properties this.popup = new OO.ui.PopupWidget( $.extend( - { autoClose: true }, + { + autoClose: true, + $floatableContainer: this.$element + }, config.popup, - { $autoCloseIgnore: this.$element.add( config.popup && config.popup.$autoCloseIgnore ) } + { + $autoCloseIgnore: this.$element.add( config.popup && config.popup.$autoCloseIgnore ) + } ) ); }; @@ -4662,6 +5360,9 @@ OO.ui.mixin.PopupElement.prototype.getPopup = function () { * * @constructor * @param {Object} [config] Configuration options + * @cfg {jQuery} [$overlay] Render the popup into a separate layer. This configuration is useful in cases where + * the expanded popup is larger than its containing `<div>`. The specified overlay layer is usually on top of the + * containing `<div>` and has a larger area. By default, the popup uses relative positioning. */ OO.ui.PopupButtonWidget = function OoUiPopupButtonWidget( config ) { // Parent constructor @@ -4670,14 +5371,21 @@ OO.ui.PopupButtonWidget = function OoUiPopupButtonWidget( config ) { // Mixin constructors OO.ui.mixin.PopupElement.call( this, config ); + // Properties + this.$overlay = config.$overlay || this.$element; + // Events this.connect( this, { click: 'onAction' } ); // Initialization this.$element .addClass( 'oo-ui-popupButtonWidget' ) - .attr( 'aria-haspopup', 'true' ) - .append( this.popup.$element ); + .attr( 'aria-haspopup', 'true' ); + this.popup.$element + .addClass( 'oo-ui-popupButtonWidget-popup' ) + .toggleClass( 'oo-ui-popupButtonWidget-framed-popup', this.isFramed() ) + .toggleClass( 'oo-ui-popupButtonWidget-frameless-popup', !this.isFramed() ); + this.$overlay.append( this.popup.$element ); }; /* Setup */ @@ -4851,12 +5559,40 @@ OO.mixinClass( OO.ui.OptionWidget, OO.ui.mixin.AccessKeyedElement ); /* Static Properties */ +/** + * Whether this option can be selected. See #setSelected. + * + * @static + * @inheritable + * @property {boolean} + */ OO.ui.OptionWidget.static.selectable = true; +/** + * Whether this option can be highlighted. See #setHighlighted. + * + * @static + * @inheritable + * @property {boolean} + */ OO.ui.OptionWidget.static.highlightable = true; +/** + * Whether this option can be pressed. See #setPressed. + * + * @static + * @inheritable + * @property {boolean} + */ OO.ui.OptionWidget.static.pressable = true; +/** + * Whether this option will be scrolled into view when it is selected. + * + * @static + * @inheritable + * @property {boolean} + */ OO.ui.OptionWidget.static.scrollIntoViewOnSelect = false; /* Methods */ @@ -4979,6 +5715,19 @@ OO.ui.OptionWidget.prototype.setPressed = function ( state ) { return this; }; +/** + * Get text to match search strings against. + * + * The default implementation returns the label text, but subclasses + * can override this to provide more complex behavior. + * + * @return {string|boolean} String to match search string against + */ +OO.ui.OptionWidget.prototype.getMatchText = function () { + var label = this.getLabel(); + return typeof label === 'string' ? label : this.$label.text(); +}; + /** * A SelectWidget is of a generic selection of options. The OOjs UI library contains several types of * select widgets, including {@link OO.ui.ButtonSelectWidget button selects}, @@ -5423,7 +6172,7 @@ OO.ui.SelectWidget.prototype.onKeyPress = function ( e ) { * @protected * @param {string} s String to match against items * @param {boolean} [exact=false] Only accept exact matches - * @return {Function} function ( OO.ui.OptionItem ) => boolean + * @return {Function} function ( OO.ui.OptionWidget ) => boolean */ OO.ui.SelectWidget.prototype.getItemMatcher = function ( s, exact ) { var re; @@ -5438,14 +6187,11 @@ OO.ui.SelectWidget.prototype.getItemMatcher = function ( s, exact ) { } re = new RegExp( re, 'i' ); return function ( item ) { - var l = item.getLabel(); - if ( typeof l !== 'string' ) { - l = item.$label.text(); + var matchText = item.getMatchText(); + if ( matchText.normalize ) { + matchText = matchText.normalize(); } - if ( l.normalize ) { - l = l.normalize(); - } - return re.test( l ); + return re.test( matchText ); }; }; @@ -5929,6 +6675,10 @@ OO.inheritClass( OO.ui.MenuOptionWidget, OO.ui.DecoratedOptionWidget ); /* Static Properties */ +/** + * @static + * @inheritdoc + */ OO.ui.MenuOptionWidget.static.scrollIntoViewOnSelect = true; /** @@ -5982,8 +6732,16 @@ OO.inheritClass( OO.ui.MenuSectionOptionWidget, OO.ui.DecoratedOptionWidget ); /* Static Properties */ +/** + * @static + * @inheritdoc + */ OO.ui.MenuSectionOptionWidget.static.selectable = false; +/** + * @static + * @inheritdoc + */ OO.ui.MenuSectionOptionWidget.static.highlightable = false; /** @@ -6004,6 +6762,8 @@ OO.ui.MenuSectionOptionWidget.static.highlightable = false; * - Down-arrow key: highlight the next menu option * - Esc key: hide the menu * + * Unlike most widgets, MenuSelectWidget is initially hidden and must be shown by calling #toggle. + * * Please see the [OOjs UI documentation on MediaWiki][1] for more information. * [1]: https://www.mediawiki.org/wiki/OOjs_UI/Widgets/Selects_and_Options * @@ -6023,6 +6783,7 @@ OO.ui.MenuSectionOptionWidget.static.highlightable = false; * that toggles the menu's visibility on click, the menu will be hidden then re-shown when the user clicks * that button, unless the button (or its parent widget) is passed in here. * @cfg {boolean} [autoHide=true] Hide the menu when the mouse is pressed outside the menu. + * @cfg {boolean} [hideOnChoose=true] Hide the menu when the user chooses an option. * @cfg {boolean} [filterFromInput=false] Filter the displayed options from the input */ OO.ui.MenuSelectWidget = function OoUiMenuSelectWidget( config ) { @@ -6037,6 +6798,7 @@ OO.ui.MenuSelectWidget = function OoUiMenuSelectWidget( config ) { // Properties this.autoHide = config.autoHide === undefined || !!config.autoHide; + this.hideOnChoose = config.hideOnChoose === undefined || !!config.hideOnChoose; this.filterFromInput = !!config.filterFromInput; this.$input = config.$input ? config.$input : config.input ? config.input.$input : null; this.$widget = config.widget ? config.widget.$element : null; @@ -6117,17 +6879,36 @@ OO.ui.MenuSelectWidget.prototype.onKeyDown = function ( e ) { * @protected */ OO.ui.MenuSelectWidget.prototype.updateItemVisibility = function () { - var i, item, + var i, item, visible, section, sectionEmpty, + anyVisible = false, len = this.items.length, showAll = !this.isVisible(), filter = showAll ? null : this.getItemMatcher( this.$input.val() ); + // Hide non-matching options, and also hide section headers if all options + // in their section are hidden. for ( i = 0; i < len; i++ ) { item = this.items[ i ]; - if ( item instanceof OO.ui.OptionWidget ) { - item.toggle( showAll || filter( item ) ); + if ( item instanceof OO.ui.MenuSectionOptionWidget ) { + if ( section ) { + // If the previous section was empty, hide its header + section.toggle( showAll || !sectionEmpty ); + } + section = item; + sectionEmpty = true; + } else if ( item instanceof OO.ui.OptionWidget ) { + visible = showAll || filter( item ); + anyVisible = anyVisible || visible; + sectionEmpty = sectionEmpty && !visible; + item.toggle( visible ); } } + // Process the final section + if ( section ) { + section.toggle( showAll || !sectionEmpty ); + } + + this.$element.toggleClass( 'oo-ui-menuSelectWidget-invisible', !anyVisible ); // Reevaluate clipping this.clip(); @@ -6185,7 +6966,7 @@ OO.ui.MenuSelectWidget.prototype.unbindKeyPressListener = function () { /** * Choose an item. * - * When a user chooses an item, the menu is closed. + * When a user chooses an item, the menu is closed, unless the hideOnChoose config option is set to false. * * Note that ‘choose’ should never be modified programmatically. A user can choose an option with the keyboard * or mouse and it becomes selected. To select an item programmatically, use the #selectItem method. @@ -6195,7 +6976,9 @@ OO.ui.MenuSelectWidget.prototype.unbindKeyPressListener = function () { */ OO.ui.MenuSelectWidget.prototype.chooseItem = function ( item ) { OO.ui.MenuSelectWidget.parent.prototype.chooseItem.call( this, item ); - this.toggle( false ); + if ( this.hideOnChoose ) { + this.toggle( false ); + } return this; }; @@ -6239,6 +7022,14 @@ OO.ui.MenuSelectWidget.prototype.clearItems = function () { }; /** + * Toggle visibility of the menu. The menu is initially hidden and must be shown by calling + * `.toggle( true )` after its #$element is attached to the DOM. + * + * Do not show the menu while it is not attached to the DOM. The calculations required to display + * it in the right place and with the right dimensions only work correctly while it is attached. + * Side-effects may include broken interface and exceptions being thrown. This wasn't always + * strictly enforced, so currently it only generates a warning in the browser console. + * * @inheritdoc */ OO.ui.MenuSelectWidget.prototype.toggle = function ( visible ) { @@ -6247,6 +7038,11 @@ OO.ui.MenuSelectWidget.prototype.toggle = function ( visible ) { visible = ( visible === undefined ? !this.visible : !!visible ) && !!this.items.length; change = visible !== this.isVisible(); + if ( visible && !this.warnedUnattached && !this.isElementAttached() ) { + OO.ui.warnDeprecation( 'MenuSelectWidget#toggle: Before calling this method, the menu must be attached to the DOM.' ); + this.warnedUnattached = true; + } + // Parent method OO.ui.MenuSelectWidget.parent.prototype.toggle.call( this, visible ); @@ -6281,7 +7077,7 @@ OO.ui.MenuSelectWidget.prototype.toggle = function ( visible ) { * OO.ui.MenuOptionWidget. The DropdownWidget takes care of opening and displaying the menu so that * users can interact with it. * - * If you want to use this within a HTML form, such as a OO.ui.FormLayout, use + * If you want to use this within an HTML form, such as a OO.ui.FormLayout, use * OO.ui.DropdownInputWidget instead. * * @example @@ -6511,12 +7307,28 @@ OO.inheritClass( OO.ui.RadioOptionWidget, OO.ui.OptionWidget ); /* Static Properties */ +/** + * @static + * @inheritdoc + */ OO.ui.RadioOptionWidget.static.highlightable = false; +/** + * @static + * @inheritdoc + */ OO.ui.RadioOptionWidget.static.scrollIntoViewOnSelect = true; +/** + * @static + * @inheritdoc + */ OO.ui.RadioOptionWidget.static.pressable = false; +/** + * @static + * @inheritdoc + */ OO.ui.RadioOptionWidget.static.tagName = 'label'; /* Methods */ @@ -6552,7 +7364,7 @@ OO.ui.RadioOptionWidget.prototype.setDisabled = function ( disabled ) { * an interface for adding, removing and selecting options. * Please see the [OOjs UI documentation on MediaWiki][1] for more information. * - * If you want to use this within a HTML form, such as a OO.ui.FormLayout, use + * If you want to use this within an HTML form, such as a OO.ui.FormLayout, use * OO.ui.RadioSelectInputWidget instead. * * @example @@ -6846,6 +7658,10 @@ OO.inheritClass( OO.ui.CheckboxMultioptionWidget, OO.ui.MultioptionWidget ); /* Static Properties */ +/** + * @static + * @inheritdoc + */ OO.ui.CheckboxMultioptionWidget.static.tagName = 'label'; /* Methods */ @@ -6913,7 +7729,7 @@ OO.ui.CheckboxMultioptionWidget.prototype.onKeyDown = function ( e ) { * CheckboxMultiselectWidget provides an interface for adding, removing and selecting options. * Please see the [OOjs UI documentation on MediaWiki][1] for more information. * - * If you want to use this within a HTML form, such as a OO.ui.FormLayout, use + * If you want to use this within an HTML form, such as a OO.ui.FormLayout, use * OO.ui.CheckboxMultiselectInputWidget instead. * * @example @@ -6941,315 +7757,108 @@ OO.ui.CheckboxMultioptionWidget.prototype.onKeyDown = function ( e ) { * @extends OO.ui.MultiselectWidget * * @constructor - * @param {Object} [config] Configuration options - */ -OO.ui.CheckboxMultiselectWidget = function OoUiCheckboxMultiselectWidget( config ) { - // Parent constructor - OO.ui.CheckboxMultiselectWidget.parent.call( this, config ); - - // Properties - this.$lastClicked = null; - - // Events - this.$group.on( 'click', this.onClick.bind( this ) ); - - // Initialization - this.$element - .addClass( 'oo-ui-checkboxMultiselectWidget' ); -}; - -/* Setup */ - -OO.inheritClass( OO.ui.CheckboxMultiselectWidget, OO.ui.MultiselectWidget ); - -/* Methods */ - -/** - * 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. - * - * @param {OO.ui.CheckboxMultioptionWidget|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 - * @return {OO.ui.CheckboxMultioptionWidget|null} Item at position, `null` if there are no items in the select - */ -OO.ui.CheckboxMultiselectWidget.prototype.getRelativeFocusableItem = function ( item, direction ) { - var currentIndex, nextIndex, i, - increase = direction > 0 ? 1 : -1, - len = this.items.length; - - if ( item ) { - currentIndex = this.items.indexOf( item ); - nextIndex = ( currentIndex + increase + len ) % len; - } else { - // If no item is selected and moving forward, start at the beginning. - // If moving backward, start at the end. - nextIndex = direction > 0 ? 0 : len - 1; - } - - for ( i = 0; i < len; i++ ) { - item = this.items[ nextIndex ]; - if ( item && !item.isDisabled() ) { - return item; - } - nextIndex = ( nextIndex + increase + len ) % len; - } - return null; -}; - -/** - * Handle click events on checkboxes. - * - * @param {jQuery.Event} e - */ -OO.ui.CheckboxMultiselectWidget.prototype.onClick = function ( e ) { - var $options, lastClickedIndex, nowClickedIndex, i, direction, wasSelected, items, - $lastClicked = this.$lastClicked, - $nowClicked = $( e.target ).closest( '.oo-ui-checkboxMultioptionWidget' ) - .not( '.oo-ui-widget-disabled' ); - - // Allow selecting multiple options at once by Shift-clicking them - if ( $lastClicked && $nowClicked.length && e.shiftKey ) { - $options = this.$group.find( '.oo-ui-checkboxMultioptionWidget' ); - lastClickedIndex = $options.index( $lastClicked ); - nowClickedIndex = $options.index( $nowClicked ); - // If it's the same item, either the user is being silly, or it's a fake event generated by the - // browser. In either case we don't need custom handling. - if ( nowClickedIndex !== lastClickedIndex ) { - items = this.items; - wasSelected = items[ nowClickedIndex ].isSelected(); - direction = nowClickedIndex > lastClickedIndex ? 1 : -1; - - // This depends on the DOM order of the items and the order of the .items array being the same. - for ( i = lastClickedIndex; i !== nowClickedIndex; i += direction ) { - if ( !items[ i ].isDisabled() ) { - items[ i ].setSelected( !wasSelected ); - } - } - // For the now-clicked element, use immediate timeout to allow the browser to do its own - // handling first, then set our value. The order in which events happen is different for - // clicks on the <input> and on the <label> and there are additional fake clicks fired for - // non-click actions that change the checkboxes. - e.preventDefault(); - setTimeout( function () { - if ( !items[ nowClickedIndex ].isDisabled() ) { - items[ nowClickedIndex ].setSelected( !wasSelected ); - } - } ); - } - } - - if ( $nowClicked.length ) { - this.$lastClicked = $nowClicked; - } -}; - -/** - * Element that will stick under a specified container, even when it is inserted elsewhere in the - * document (for example, in a OO.ui.Window's $overlay). - * - * The elements's position is automatically calculated and maintained when window is resized or the - * page is scrolled. If you reposition the container manually, you have to call #position to make - * sure the element is still placed correctly. - * - * As positioning is only possible when both the element and the container are attached to the DOM - * and visible, it's only done after you call #togglePositioning. You might want to do this inside - * the #toggle method to display a floating popup, for example. - * - * @abstract - * @class - * - * @constructor - * @param {Object} [config] Configuration options - * @cfg {jQuery} [$floatable] Node to position, assigned to #$floatable, omit to use #$element - * @cfg {jQuery} [$floatableContainer] Node to position below - */ -OO.ui.mixin.FloatableElement = function OoUiMixinFloatableElement( config ) { - // Configuration initialization - config = config || {}; - - // Properties - this.$floatable = null; - this.$floatableContainer = null; - this.$floatableWindow = null; - this.$floatableClosestScrollable = null; - this.onFloatableScrollHandler = this.position.bind( this ); - this.onFloatableWindowResizeHandler = this.position.bind( this ); - - // Initialization - this.setFloatableContainer( config.$floatableContainer ); - this.setFloatableElement( config.$floatable || this.$element ); -}; - -/* Methods */ - -/** - * Set floatable element. - * - * If an element is already set, it will be cleaned up before setting up the new element. - * - * @param {jQuery} $floatable Element to make floatable - */ -OO.ui.mixin.FloatableElement.prototype.setFloatableElement = function ( $floatable ) { - if ( this.$floatable ) { - this.$floatable.removeClass( 'oo-ui-floatableElement-floatable' ); - this.$floatable.css( { left: '', top: '' } ); - } - - this.$floatable = $floatable.addClass( 'oo-ui-floatableElement-floatable' ); - this.position(); -}; - -/** - * Set floatable container. - * - * The element will be always positioned under the specified container. - * - * @param {jQuery|null} $floatableContainer Container to keep visible, or null to unset - */ -OO.ui.mixin.FloatableElement.prototype.setFloatableContainer = function ( $floatableContainer ) { - this.$floatableContainer = $floatableContainer; - if ( this.$floatable ) { - this.position(); - } -}; - -/** - * Toggle positioning. - * - * Do not turn positioning on until after the element is attached to the DOM and visible. - * - * @param {boolean} [positioning] Enable positioning, omit to toggle - * @chainable + * @param {Object} [config] Configuration options */ -OO.ui.mixin.FloatableElement.prototype.togglePositioning = function ( positioning ) { - var closestScrollableOfContainer, closestScrollableOfFloatable; - - positioning = positioning === undefined ? !this.positioning : !!positioning; - - if ( this.positioning !== positioning ) { - this.positioning = positioning; - - closestScrollableOfContainer = OO.ui.Element.static.getClosestScrollableContainer( this.$floatableContainer[ 0 ] ); - closestScrollableOfFloatable = OO.ui.Element.static.getClosestScrollableContainer( this.$floatable[ 0 ] ); - this.needsCustomPosition = closestScrollableOfContainer !== closestScrollableOfFloatable; - // If the scrollable is the root, we have to listen to scroll events - // on the window because of browser inconsistencies. - if ( $( closestScrollableOfContainer ).is( 'html, body' ) ) { - closestScrollableOfContainer = OO.ui.Element.static.getWindow( closestScrollableOfContainer ); - } +OO.ui.CheckboxMultiselectWidget = function OoUiCheckboxMultiselectWidget( config ) { + // Parent constructor + OO.ui.CheckboxMultiselectWidget.parent.call( this, config ); - if ( positioning ) { - this.$floatableWindow = $( this.getElementWindow() ); - this.$floatableWindow.on( 'resize', this.onFloatableWindowResizeHandler ); + // Properties + this.$lastClicked = null; - this.$floatableClosestScrollable = $( closestScrollableOfContainer ); - this.$floatableClosestScrollable.on( 'scroll', this.onFloatableScrollHandler ); + // Events + this.$group.on( 'click', this.onClick.bind( this ) ); - // Initial position after visible - this.position(); - } else { - if ( this.$floatableWindow ) { - this.$floatableWindow.off( 'resize', this.onFloatableWindowResizeHandler ); - this.$floatableWindow = null; - } + // Initialization + this.$element + .addClass( 'oo-ui-checkboxMultiselectWidget' ); +}; - if ( this.$floatableClosestScrollable ) { - this.$floatableClosestScrollable.off( 'scroll', this.onFloatableScrollHandler ); - this.$floatableClosestScrollable = null; - } +/* Setup */ - this.$floatable.css( { left: '', top: '' } ); - } - } +OO.inheritClass( OO.ui.CheckboxMultiselectWidget, OO.ui.MultiselectWidget ); - return this; -}; +/* Methods */ /** - * Check whether the bottom edge of the given element is within the viewport of the given container. + * 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. * - * @private - * @param {jQuery} $element - * @param {jQuery} $container - * @return {boolean} + * @param {OO.ui.CheckboxMultioptionWidget|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 + * @return {OO.ui.CheckboxMultioptionWidget|null} Item at position, `null` if there are no items in the select */ -OO.ui.mixin.FloatableElement.prototype.isElementInViewport = function ( $element, $container ) { - var elemRect, contRect, - leftEdgeInBounds = false, - bottomEdgeInBounds = false, - rightEdgeInBounds = false; +OO.ui.CheckboxMultiselectWidget.prototype.getRelativeFocusableItem = function ( item, direction ) { + var currentIndex, nextIndex, i, + increase = direction > 0 ? 1 : -1, + len = this.items.length; - elemRect = $element[ 0 ].getBoundingClientRect(); - if ( $container[ 0 ] === window ) { - contRect = { - top: 0, - left: 0, - right: document.documentElement.clientWidth, - bottom: document.documentElement.clientHeight - }; + if ( item ) { + currentIndex = this.items.indexOf( item ); + nextIndex = ( currentIndex + increase + len ) % len; } else { - contRect = $container[ 0 ].getBoundingClientRect(); + // If no item is selected and moving forward, start at the beginning. + // If moving backward, start at the end. + nextIndex = direction > 0 ? 0 : len - 1; } - // For completeness, if we still cared about topEdgeInBounds, that'd be: - // elemRect.top >= contRect.top && elemRect.top <= contRect.bottom - if ( elemRect.left >= contRect.left && elemRect.left <= contRect.right ) { - leftEdgeInBounds = true; - } - if ( elemRect.bottom >= contRect.top && elemRect.bottom <= contRect.bottom ) { - bottomEdgeInBounds = true; - } - if ( elemRect.right >= contRect.left && elemRect.right <= contRect.right ) { - rightEdgeInBounds = true; + for ( i = 0; i < len; i++ ) { + item = this.items[ nextIndex ]; + if ( item && !item.isDisabled() ) { + return item; + } + nextIndex = ( nextIndex + increase + len ) % len; } - - // We only care that any part of the bottom edge is visible - return bottomEdgeInBounds && ( leftEdgeInBounds || rightEdgeInBounds ); + return null; }; /** - * Position the floatable below its container. - * - * This should only be done when both of them are attached to the DOM and visible. + * Handle click events on checkboxes. * - * @chainable + * @param {jQuery.Event} e */ -OO.ui.mixin.FloatableElement.prototype.position = function () { - var pos; - - if ( !this.positioning ) { - return this; - } +OO.ui.CheckboxMultiselectWidget.prototype.onClick = function ( e ) { + var $options, lastClickedIndex, nowClickedIndex, i, direction, wasSelected, items, + $lastClicked = this.$lastClicked, + $nowClicked = $( e.target ).closest( '.oo-ui-checkboxMultioptionWidget' ) + .not( '.oo-ui-widget-disabled' ); - if ( !this.isElementInViewport( this.$floatableContainer, this.$floatableClosestScrollable ) ) { - this.$floatable.addClass( 'oo-ui-element-hidden' ); - return; - } else { - this.$floatable.removeClass( 'oo-ui-element-hidden' ); - } + // Allow selecting multiple options at once by Shift-clicking them + if ( $lastClicked && $nowClicked.length && e.shiftKey ) { + $options = this.$group.find( '.oo-ui-checkboxMultioptionWidget' ); + lastClickedIndex = $options.index( $lastClicked ); + nowClickedIndex = $options.index( $nowClicked ); + // If it's the same item, either the user is being silly, or it's a fake event generated by the + // browser. In either case we don't need custom handling. + if ( nowClickedIndex !== lastClickedIndex ) { + items = this.items; + wasSelected = items[ nowClickedIndex ].isSelected(); + direction = nowClickedIndex > lastClickedIndex ? 1 : -1; - if ( !this.needsCustomPosition ) { - return; + // This depends on the DOM order of the items and the order of the .items array being the same. + for ( i = lastClickedIndex; i !== nowClickedIndex; i += direction ) { + if ( !items[ i ].isDisabled() ) { + items[ i ].setSelected( !wasSelected ); + } + } + // For the now-clicked element, use immediate timeout to allow the browser to do its own + // handling first, then set our value. The order in which events happen is different for + // clicks on the <input> and on the <label> and there are additional fake clicks fired for + // non-click actions that change the checkboxes. + e.preventDefault(); + setTimeout( function () { + if ( !items[ nowClickedIndex ].isDisabled() ) { + items[ nowClickedIndex ].setSelected( !wasSelected ); + } + } ); + } } - pos = OO.ui.Element.static.getRelativePosition( this.$floatableContainer, this.$floatable.offsetParent() ); - - // Position under container - pos.top += this.$floatableContainer.height(); - this.$floatable.css( pos ); - - // We updated the position, so re-evaluate the clipping state. - // (ClippableElement does not listen to 'scroll' events on $floatableContainer's parent, and so - // will not notice the need to update itself.) - // TODO: This is terrible, we shouldn't need to know about ClippableElement at all here. Why does - // it not listen to the right events in the right places? - if ( this.clip ) { - this.clip(); + if ( $nowClicked.length ) { + this.$lastClicked = $nowClicked; } - - return this; }; /** @@ -7304,9 +7913,6 @@ OO.ui.FloatingMenuSelectWidget = function OoUiFloatingMenuSelectWidget( inputWid OO.inheritClass( OO.ui.FloatingMenuSelectWidget, OO.ui.MenuSelectWidget ); OO.mixinClass( OO.ui.FloatingMenuSelectWidget, OO.ui.mixin.FloatableElement ); -// For backwards compatibility -OO.ui.TextInputMenuSelectWidget = OO.ui.FloatingMenuSelectWidget; - /* Methods */ /** @@ -7333,6 +7939,23 @@ OO.ui.FloatingMenuSelectWidget.prototype.toggle = function ( visible ) { return this; }; +/* + * The old name for the FloatingMenuSelectWidget widget, provided for backwards-compatibility. + * + * @class + * @extends OO.ui.FloatingMenuSelectWidget + * + * @constructor + * @deprecated since v0.12.5. + */ +OO.ui.TextInputMenuSelectWidget = function OoUiTextInputMenuSelectWidget() { + OO.ui.warnDeprecation( 'TextInputMenuSelectWidget is deprecated. Use the FloatingMenuSelectWidget instead.' ); + // Parent constructor + OO.ui.TextInputMenuSelectWidget.parent.apply( this, arguments ); +}; + +OO.inheritClass( OO.ui.TextInputMenuSelectWidget, OO.ui.FloatingMenuSelectWidget ); + /** * Progress bars visually display the status of an operation, such as a download, * and can be either determinate or indeterminate: @@ -7399,6 +8022,10 @@ OO.inheritClass( OO.ui.ProgressBarWidget, OO.ui.Widget ); /* Static Properties */ +/** + * @static + * @inheritdoc + */ OO.ui.ProgressBarWidget.static.tagName = 'div'; /* Methods */ @@ -7500,6 +8127,10 @@ OO.mixinClass( OO.ui.InputWidget, OO.ui.mixin.AccessKeyedElement ); /* Static Properties */ +/** + * @static + * @inheritdoc + */ OO.ui.InputWidget.static.supportsSimpleLabel = true; /* Static Methods */ @@ -7553,6 +8184,25 @@ OO.ui.InputWidget.prototype.getInputElement = function () { return $( '<input>' ); }; +/** + * Get input element's ID. + * + * If the element already has an ID then that is returned, otherwise unique ID is + * generated, set on the element, and returned. + * + * @return {string} The ID of the element + */ +OO.ui.InputWidget.prototype.getInputId = function () { + var id = this.$input.attr( 'id' ); + + if ( id === undefined ) { + id = OO.ui.generateElementId(); + this.$input.attr( 'id', id ); + } + + return id; +}; + /** * Handle potentially value-changing events. * @@ -7641,6 +8291,7 @@ OO.ui.InputWidget.prototype.cleanUpValue = function ( value ) { * called directly. */ OO.ui.InputWidget.prototype.simulateLabelClick = function () { + OO.ui.warnDeprecation( 'InputWidget: simulateLabelClick() is deprecated.' ); if ( !this.isDisabled() ) { if ( this.$input.is( ':checkbox, :radio' ) ) { this.$input.click(); @@ -7772,6 +8423,9 @@ OO.mixinClass( OO.ui.ButtonInputWidget, OO.ui.mixin.TitledElement ); /** * Disable generating `<label>` elements for buttons. One would very rarely need additional label * for a button, and it's already a big clickable target, and it causes unexpected rendering. + * + * @static + * @inheritdoc */ OO.ui.ButtonInputWidget.static.supportsSimpleLabel = false; @@ -7835,7 +8489,7 @@ OO.ui.ButtonInputWidget.prototype.setValue = function ( value ) { * in {@link OO.ui.FieldLayout field layouts} that use the {@link OO.ui.FieldLayout#align inline} * alignment. For more information, please see the [OOjs UI documentation on MediaWiki][1]. * - * This widget can be used inside a HTML form, such as a OO.ui.FormLayout. + * This widget can be used inside an HTML form, such as a OO.ui.FormLayout. * * @example * // An example of selected, unselected, and disabled checkbox inputs @@ -7966,7 +8620,7 @@ OO.ui.CheckboxInputWidget.prototype.restorePreInfuseState = function ( state ) { /** * DropdownInputWidget is a {@link OO.ui.DropdownWidget DropdownWidget} intended to be used - * within a HTML form, such as a OO.ui.FormLayout. The selected value is synchronized with the value + * within an HTML form, such as a OO.ui.FormLayout. The selected value is synchronized with the value * of a hidden HTML `input` tag. Please see the [OOjs UI documentation on MediaWiki][1] for * more information about input widgets. * @@ -8128,7 +8782,7 @@ OO.ui.DropdownInputWidget.prototype.blur = function () { * with {@link OO.ui.RadioOptionWidget radio options} instead of this class. For more information, * please see the [OOjs UI documentation on MediaWiki][1]. * - * This widget can be used inside a HTML form, such as a OO.ui.FormLayout. + * This widget can be used inside an HTML form, such as a OO.ui.FormLayout. * * @example * // An example of selected, unselected, and disabled radio inputs @@ -8243,7 +8897,7 @@ OO.ui.RadioInputWidget.prototype.restorePreInfuseState = function ( state ) { /** * RadioSelectInputWidget is a {@link OO.ui.RadioSelectWidget RadioSelectWidget} intended to be used - * within a HTML form, such as a OO.ui.FormLayout. The selected value is synchronized with the value + * within an HTML form, such as a OO.ui.FormLayout. The selected value is synchronized with the value * of a hidden HTML `input` tag. Please see the [OOjs UI documentation on MediaWiki][1] for * more information about input widgets. * @@ -8295,6 +8949,10 @@ OO.inheritClass( OO.ui.RadioSelectInputWidget, OO.ui.InputWidget ); /* Static Properties */ +/** + * @static + * @inheritdoc + */ OO.ui.RadioSelectInputWidget.static.supportsSimpleLabel = false; /* Static Methods */ @@ -8418,7 +9076,7 @@ OO.ui.RadioSelectInputWidget.prototype.setOptions = function ( options ) { * * @constructor * @param {Object} [config] Configuration options - * @cfg {Object[]} [options=[]] Array of menu options in the format `{ data: …, label: … }` + * @cfg {Object[]} [options=[]] Array of menu options in the format `{ data: …, label: …, disabled: … }` */ OO.ui.CheckboxMultiselectInputWidget = function OoUiCheckboxMultiselectInputWidget( config ) { // Configuration initialization @@ -8450,6 +9108,10 @@ OO.inheritClass( OO.ui.CheckboxMultiselectInputWidget, OO.ui.InputWidget ); /* Static Properties */ +/** + * @static + * @inheritdoc + */ OO.ui.CheckboxMultiselectInputWidget.static.supportsSimpleLabel = false; /* Static Methods */ @@ -8543,7 +9205,7 @@ OO.ui.CheckboxMultiselectInputWidget.prototype.setDisabled = function ( state ) /** * Set the options available for this input. * - * @param {Object[]} options Array of menu options in the format `{ data: …, label: … }` + * @param {Object[]} options Array of menu options in the format `{ data: …, label: …, disabled: … }` * @chainable */ OO.ui.CheckboxMultiselectInputWidget.prototype.setOptions = function ( options ) { @@ -8553,12 +9215,14 @@ OO.ui.CheckboxMultiselectInputWidget.prototype.setOptions = function ( options ) this.checkboxMultiselectWidget .clearItems() .addItems( options.map( function ( opt ) { - var optValue, item; + var optValue, item, optDisabled; optValue = OO.ui.CheckboxMultiselectInputWidget.parent.prototype.cleanUpValue.call( widget, opt.data ); + optDisabled = opt.disabled !== undefined ? opt.disabled : false; item = new OO.ui.CheckboxMultioptionWidget( { data: optValue, - label: opt.label !== undefined ? opt.label : optValue + label: opt.label !== undefined ? opt.label : optValue, + disabled: optDisabled } ); // Set the 'name' and 'value' for form submission item.checkbox.$input.attr( 'name', widget.inputName ); @@ -8581,7 +9245,7 @@ OO.ui.CheckboxMultiselectInputWidget.prototype.setOptions = function ( options ) * which modifies incoming values rather than validating them. * Please see the [OOjs UI documentation on MediaWiki] [1] for more information and examples. * - * This widget can be used inside a HTML form, such as a OO.ui.FormLayout. + * This widget can be used inside an HTML form, such as a OO.ui.FormLayout. * * @example * // Example of a text input widget @@ -8618,7 +9282,7 @@ OO.ui.CheckboxMultiselectInputWidget.prototype.setOptions = function ( options ) * specifies minimum number of rows to display. * @cfg {boolean} [autosize=false] Automatically resize the text input to fit its content. * Use the #maxRows config to specify a maximum number of displayed rows. - * @cfg {boolean} [maxRows] Maximum number of rows to display when #autosize is set to true. + * @cfg {number} [maxRows] Maximum number of rows to display when #autosize is set to true. * Defaults to the maximum of `10` and `2 * rows`, or `10` if `rows` isn't provided. * @cfg {string} [labelPosition='after'] The position of the inline label relative to that of * the value or placeholder text: `'before'` or `'after'` @@ -9347,6 +10011,15 @@ OO.ui.TextInputWidget.prototype.getValidity = function () { } } + // Check browser validity and reject if it is invalid + if ( + this.$input[ 0 ].checkValidity !== undefined && + this.$input[ 0 ].checkValidity() === false + ) { + return rejectOrResolve( false ); + } + + // Run our checks if the browser thinks the field is valid if ( this.validate instanceof Function ) { result = this.validate( this.getValue() ); if ( result && $.isFunction( result.promise ) ) { @@ -9565,39 +10238,44 @@ OO.ui.SearchInputWidget.prototype.setReadOnly = function ( state ) { * - by choosing a value from the menu. The value of the chosen option will then appear in the text * input field. * - * This widget can be used inside a HTML form, such as a OO.ui.FormLayout. + * After the user chooses an option, its `data` will be used as a new value for the widget. + * A `label` also can be specified for each option: if given, it will be shown instead of the + * `data` in the dropdown menu. + * + * This widget can be used inside an HTML form, such as a OO.ui.FormLayout. * * For more information about menus and options, please see the [OOjs UI documentation on MediaWiki][1]. * * @example * // Example: A ComboBoxInputWidget. * var comboBox = new OO.ui.ComboBoxInputWidget( { - * label: 'ComboBoxInputWidget', * value: 'Option 1', - * menu: { - * items: [ - * new OO.ui.MenuOptionWidget( { - * data: 'Option 1', - * label: 'Option One' - * } ), - * new OO.ui.MenuOptionWidget( { - * data: 'Option 2', - * label: 'Option Two' - * } ), - * new OO.ui.MenuOptionWidget( { - * data: 'Option 3', - * label: 'Option Three' - * } ), - * new OO.ui.MenuOptionWidget( { - * data: 'Option 4', - * label: 'Option Four' - * } ), - * new OO.ui.MenuOptionWidget( { - * data: 'Option 5', - * label: 'Option Five' - * } ) - * ] - * } + * options: [ + * { data: 'Option 1' }, + * { data: 'Option 2' }, + * { data: 'Option 3' } + * ] + * } ); + * $( 'body' ).append( comboBox.$element ); + * + * @example + * // Example: A ComboBoxInputWidget with additional option labels. + * var comboBox = new OO.ui.ComboBoxInputWidget( { + * value: 'Option 1', + * options: [ + * { + * data: 'Option 1', + * label: 'Option One' + * }, + * { + * data: 'Option 2', + * label: 'Option Two' + * }, + * { + * data: 'Option 3', + * label: 'Option Three' + * } + * ] * } ); * $( 'body' ).append( comboBox.$element ); * @@ -9837,12 +10515,11 @@ OO.ui.ComboBoxInputWidget.prototype.setOptions = function ( options ) { * @cfg {string|OO.ui.HtmlSnippet} [help] Help text. When help text is specified, a "help" icon will appear * in the upper-right corner of the rendered field; clicking it will display the text in a popup. * For important messages, you are advised to use `notices`, as they are always shown. + * @cfg {jQuery} [$overlay] Passed to OO.ui.PopupButtonWidget for help popup, if `help` is given. * * @throws {Error} An error is thrown if no widget is specified */ OO.ui.FieldLayout = function OoUiFieldLayout( fieldWidget, config ) { - var hasInputWidget, $div; - // Allow passing positional parameters inside the config object if ( OO.isPlainObject( fieldWidget ) && config === undefined ) { config = fieldWidget; @@ -9854,8 +10531,6 @@ OO.ui.FieldLayout = function OoUiFieldLayout( fieldWidget, config ) { throw new Error( 'Widget not found' ); } - hasInputWidget = fieldWidget.constructor.static.supportsSimpleLabel; - // Configuration initialization config = $.extend( { align: 'left' }, config ); @@ -9863,7 +10538,9 @@ OO.ui.FieldLayout = function OoUiFieldLayout( fieldWidget, config ) { OO.ui.FieldLayout.parent.call( this, config ); // Mixin constructors - OO.ui.mixin.LabelElement.call( this, config ); + OO.ui.mixin.LabelElement.call( this, $.extend( {}, config, { + $label: $( '<label>' ) + } ) ); OO.ui.mixin.TitledElement.call( this, $.extend( {}, config, { $titled: this.$label } ) ); // Properties @@ -9872,41 +10549,49 @@ OO.ui.FieldLayout = function OoUiFieldLayout( fieldWidget, config ) { this.notices = []; this.$field = $( '<div>' ); this.$messages = $( '<ul>' ); - this.$body = $( '<' + ( hasInputWidget ? 'label' : 'div' ) + '>' ); + this.$header = $( '<div>' ); + this.$body = $( '<div>' ); this.align = null; if ( config.help ) { this.popupButtonWidget = new OO.ui.PopupButtonWidget( { + $overlay: config.$overlay, + popup: { + padded: true + }, classes: [ 'oo-ui-fieldLayout-help' ], framed: false, icon: 'info' } ); - - $div = $( '<div>' ); if ( config.help instanceof OO.ui.HtmlSnippet ) { - $div.html( config.help.toString() ); + this.popupButtonWidget.getPopup().$body.html( config.help.toString() ); } else { - $div.text( config.help ); + this.popupButtonWidget.getPopup().$body.text( config.help ); } - this.popupButtonWidget.getPopup().$body.append( - $div.addClass( 'oo-ui-fieldLayout-help-content' ) - ); this.$help = this.popupButtonWidget.$element; } else { this.$help = $( [] ); } // Events - if ( hasInputWidget ) { - this.$label.on( 'click', this.onLabelClick.bind( this ) ); - } this.fieldWidget.connect( this, { disable: 'onFieldDisable' } ); // Initialization + if ( fieldWidget.constructor.static.supportsSimpleLabel ) { + if ( this.fieldWidget.getInputId() ) { + this.$label.attr( 'for', this.fieldWidget.getInputId() ); + } else { + this.$label.on( 'click', function () { + this.fieldWidget.focus(); + return false; + }.bind( this ) ); + } + } this.$element .addClass( 'oo-ui-fieldLayout' ) .toggleClass( 'oo-ui-fieldLayout-disabled', this.fieldWidget.isDisabled() ) - .append( this.$help, this.$body ); + .append( this.$body ); this.$body.addClass( 'oo-ui-fieldLayout-body' ); + this.$header.addClass( 'oo-ui-fieldLayout-header' ); this.$messages.addClass( 'oo-ui-fieldLayout-messages' ); this.$field .addClass( 'oo-ui-fieldLayout-field' ) @@ -9935,17 +10620,6 @@ OO.ui.FieldLayout.prototype.onFieldDisable = function ( value ) { this.$element.toggleClass( 'oo-ui-fieldLayout-disabled', value ); }; -/** - * Handle label mouse click events. - * - * @private - * @param {jQuery.Event} e Mouse click event - */ -OO.ui.FieldLayout.prototype.onLabelClick = function () { - this.fieldWidget.simulateLabelClick(); - return false; -}; - /** * Get the widget contained by the field. * @@ -9992,10 +10666,15 @@ OO.ui.FieldLayout.prototype.setAlignment = function ( value ) { value = 'left'; } // Reorder elements - if ( value === 'inline' ) { - this.$body.append( this.$field, this.$label ); + if ( value === 'top' ) { + this.$header.append( this.$label, this.$help ); + this.$body.append( this.$header, this.$field ); + } else if ( value === 'inline' ) { + this.$header.append( this.$label, this.$help ); + this.$body.append( this.$field, this.$header ); } else { - this.$body.append( this.$label, this.$field ); + this.$header.append( this.$label ); + this.$body.append( this.$header, this.$help, this.$field ); } // Set classes. The following classes can be used here: // * oo-ui-fieldLayout-align-left @@ -10185,10 +10864,9 @@ OO.inheritClass( OO.ui.ActionFieldLayout, OO.ui.FieldLayout ); * @cfg {string|OO.ui.HtmlSnippet} [help] Help text. When help text is specified, a "help" icon will appear * in the upper-right corner of the rendered field; clicking it will display the text in a popup. * For important messages, you are advised to use `notices`, as they are always shown. + * @cfg {jQuery} [$overlay] Passed to OO.ui.PopupButtonWidget for help popup, if `help` is given. */ OO.ui.FieldsetLayout = function OoUiFieldsetLayout( config ) { - var $div; - // Configuration initialization config = config || {}; @@ -10200,32 +10878,36 @@ OO.ui.FieldsetLayout = function OoUiFieldsetLayout( config ) { OO.ui.mixin.LabelElement.call( this, $.extend( {}, config, { $label: $( '<div>' ) } ) ); OO.ui.mixin.GroupElement.call( this, config ); + // Properties + this.$header = $( '<div>' ); if ( config.help ) { this.popupButtonWidget = new OO.ui.PopupButtonWidget( { + $overlay: config.$overlay, + popup: { + padded: true + }, classes: [ 'oo-ui-fieldsetLayout-help' ], framed: false, icon: 'info' } ); - - $div = $( '<div>' ); if ( config.help instanceof OO.ui.HtmlSnippet ) { - $div.html( config.help.toString() ); + this.popupButtonWidget.getPopup().$body.html( config.help.toString() ); } else { - $div.text( config.help ); + this.popupButtonWidget.getPopup().$body.text( config.help ); } - this.popupButtonWidget.getPopup().$body.append( - $div.addClass( 'oo-ui-fieldsetLayout-help-content' ) - ); this.$help = this.popupButtonWidget.$element; } else { this.$help = $( [] ); } // Initialization + this.$header + .addClass( 'oo-ui-fieldsetLayout-header' ) + .append( this.$icon, this.$label, this.$help ); this.$group.addClass( 'oo-ui-fieldsetLayout-group' ); this.$element .addClass( 'oo-ui-fieldsetLayout' ) - .prepend( this.$label, this.$help, this.$icon, this.$group ); + .prepend( this.$header, this.$group ); if ( Array.isArray( config.items ) ) { this.addItems( config.items ); } @@ -10240,6 +10922,10 @@ OO.mixinClass( OO.ui.FieldsetLayout, OO.ui.mixin.GroupElement ); /* Static Properties */ +/** + * @static + * @inheritdoc + */ OO.ui.FieldsetLayout.static.tagName = 'fieldset'; /** @@ -10353,6 +11039,10 @@ OO.mixinClass( OO.ui.FormLayout, OO.ui.mixin.GroupElement ); /* Static Properties */ +/** + * @static + * @inheritdoc + */ OO.ui.FormLayout.static.tagName = 'form'; /* Methods */ diff --git a/resources/lib/oojs-ui/oojs-ui-mediawiki.js b/resources/lib/oojs-ui/oojs-ui-mediawiki.js index c2ea652d1c..7b1c099925 100644 --- a/resources/lib/oojs-ui/oojs-ui-mediawiki.js +++ b/resources/lib/oojs-ui/oojs-ui-mediawiki.js @@ -1,12 +1,12 @@ /*! - * OOjs UI v0.18.3 + * OOjs UI v0.19.5 * https://www.mediawiki.org/wiki/OOjs_UI * * Copyright 2011–2017 OOjs UI Team and other contributors. * Released under the MIT license * http://oojs.mit-license.org * - * Date: 2017-01-04T00:22:40Z + * Date: 2017-03-07T22:57:01Z */ ( function ( OO ) { diff --git a/resources/lib/oojs-ui/oojs-ui-toolbars-apex.css b/resources/lib/oojs-ui/oojs-ui-toolbars-apex.css index a367301f1a..760458952a 100644 --- a/resources/lib/oojs-ui/oojs-ui-toolbars-apex.css +++ b/resources/lib/oojs-ui/oojs-ui-toolbars-apex.css @@ -1,19 +1,19 @@ /*! - * OOjs UI v0.18.3 + * OOjs UI v0.19.5 * https://www.mediawiki.org/wiki/OOjs_UI * * Copyright 2011–2017 OOjs UI Team and other contributors. * Released under the MIT license * http://oojs.mit-license.org * - * Date: 2017-01-04T00:22:45Z + * Date: 2017-03-07T22:57:06Z */ .oo-ui-popupTool .oo-ui-popupWidget-popup, .oo-ui-popupTool .oo-ui-popupWidget-anchor { z-index: 4; } -.oo-ui-popupTool .oo-ui-popupWidget { - /* @noflip */ +.oo-ui-popupTool .oo-ui-popupWidget-anchored-top .oo-ui-popupWidget-anchor, +.oo-ui-popupTool .oo-ui-popupWidget-anchored-bottom .oo-ui-popupWidget-anchor { margin-left: 1.25em; } .oo-ui-toolGroupTool > .oo-ui-popupToolGroup { @@ -276,12 +276,17 @@ -ms-filter: "progid:DXImageTransform.Microsoft.gradient( startColorstr='#fff1f7fb', endColorstr='#ffffffff' )"; } .oo-ui-popupToolGroup .oo-ui-toolGroup-tools { - top: 2.5em; margin: 0 -1px; border: 1px solid #ccc; background-color: #fff; box-shadow: 0 0.3125em 1.25em rgba(0, 0, 0, 0.25); } +.oo-ui-toolbar-position-top .oo-ui-popupToolGroup .oo-ui-toolGroup-tools { + top: 2.5em; +} +.oo-ui-toolbar-position-bottom .oo-ui-popupToolGroup .oo-ui-toolGroup-tools { + bottom: 2.5em; +} .oo-ui-popupToolGroup .oo-ui-tool-link { padding: 0.3125em 0 0.3125em 0.3125em; } @@ -416,8 +421,7 @@ position: relative; } .oo-ui-toolbar-tools, -.oo-ui-toolbar-actions, -.oo-ui-toolbar-shadow { +.oo-ui-toolbar-actions { -webkit-touch-callout: none; -webkit-user-select: none; -moz-user-select: none; @@ -447,15 +451,7 @@ -ms-user-select: all; user-select: all; } -.oo-ui-toolbar-shadow { - background-position: left top; - background-repeat: repeat-x; - position: absolute; - width: 100%; - pointer-events: none; -} .oo-ui-toolbar-bar { - border-bottom: 1px solid #ccc; background-color: #f8fbfd; background-image: -webkit-gradient(linear, right top, right bottom, color-stop(0, #fff), color-stop(100%, #F1F7FB)); background-image: -webkit-linear-gradient(top, #fff 0, #F1F7FB 100%); @@ -463,9 +459,18 @@ background-image: linear-gradient(to bottom, #fff 0, #F1F7FB 100%); -ms-filter: "progid:DXImageTransform.Microsoft.gradient( startColorstr='#ffffffff', endColorstr='#fff1f7fb' )"; } +.oo-ui-toolbar-position-top > .oo-ui-toolbar-bar { + border-bottom: 1px solid #ccc; + box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.1); +} +.oo-ui-toolbar-position-bottom > .oo-ui-toolbar-bar { + border-top: 1px solid #ccc; + box-shadow: 0 -2px 2px 0 rgba(0, 0, 0, 0.1); +} .oo-ui-toolbar-bar .oo-ui-toolbar-bar { border: 0; background: none; + box-shadow: none; } .oo-ui-toolbar-actions > .oo-ui-buttonElement-framed, .oo-ui-toolbar-actions > .oo-ui-buttonElement-framed:last-child { @@ -487,12 +492,3 @@ margin: 0 1em; line-height: 3.40625em; } -.oo-ui-toolbar-shadow { - background-image: /* @embed */ url(themes/apex/images/toolbar-shadow.png); - bottom: -9px; - height: 9px; - opacity: 0.5; - -webkit-transition: opacity 500ms ease; - -moz-transition: opacity 500ms ease; - transition: opacity 500ms ease; -} diff --git a/resources/lib/oojs-ui/oojs-ui-toolbars-mediawiki.css b/resources/lib/oojs-ui/oojs-ui-toolbars-mediawiki.css index 061082262e..ad1746d9dd 100644 --- a/resources/lib/oojs-ui/oojs-ui-toolbars-mediawiki.css +++ b/resources/lib/oojs-ui/oojs-ui-toolbars-mediawiki.css @@ -1,12 +1,12 @@ /*! - * OOjs UI v0.18.3 + * OOjs UI v0.19.5 * https://www.mediawiki.org/wiki/OOjs_UI * * Copyright 2011–2017 OOjs UI Team and other contributors. * Released under the MIT license * http://oojs.mit-license.org * - * Date: 2017-01-04T00:22:45Z + * Date: 2017-03-07T22:57:06Z */ .oo-ui-tool.oo-ui-widget-enabled { -webkit-transition: background-color 100ms; @@ -22,8 +22,8 @@ .oo-ui-popupTool .oo-ui-popupWidget-anchor { z-index: 4; } -.oo-ui-popupTool .oo-ui-popupWidget { - /* @noflip */ +.oo-ui-popupTool .oo-ui-popupWidget-anchored-top .oo-ui-popupWidget-anchor, +.oo-ui-popupTool .oo-ui-popupWidget-anchored-bottom .oo-ui-popupWidget-anchor { margin-left: 1.25em; } .oo-ui-toolGroupTool > .oo-ui-toolGroup { @@ -37,9 +37,6 @@ height: 2.5em; width: 1.875em; } -.oo-ui-toolGroupTool > .oo-ui-popupToolGroup.oo-ui-labelElement > .oo-ui-popupToolGroup-handle .oo-ui-labelElement-label { - line-height: 2.1; -} .oo-ui-toolGroup { display: inline-block; vertical-align: middle; @@ -239,13 +236,18 @@ left: 0; } .oo-ui-popupToolGroup .oo-ui-toolGroup-tools { - top: 3.125em; margin: 0 -1px; border: 1px solid #c8ccd1; background-color: #fff; - box-shadow: 0 2px 3px rgba(0, 0, 0, 0.2); + box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.25); min-width: 16em; } +.oo-ui-toolbar-position-top .oo-ui-popupToolGroup .oo-ui-toolGroup-tools { + top: 3.125em; +} +.oo-ui-toolbar-position-bottom .oo-ui-popupToolGroup .oo-ui-toolGroup-tools { + bottom: 3.125em; +} .oo-ui-popupToolGroup .oo-ui-tool-link { padding: 0.4em 0.625em; -webkit-box-sizing: border-box; @@ -257,10 +259,6 @@ width: 1.875em; min-width: 1.875em; } -.oo-ui-popupToolGroup .oo-ui-tool-link .oo-ui-tool-title, -.oo-ui-popupToolGroup .oo-ui-tool-link .oo-ui-tool-accel { - line-height: 2; -} .oo-ui-popupToolGroup .oo-ui-tool-link .oo-ui-tool-title { padding-left: 0.5em; color: #222; @@ -363,8 +361,7 @@ position: relative; } .oo-ui-toolbar-tools, -.oo-ui-toolbar-actions, -.oo-ui-toolbar-shadow { +.oo-ui-toolbar-actions { -webkit-touch-callout: none; -webkit-user-select: none; -moz-user-select: none; @@ -394,22 +391,20 @@ -ms-user-select: all; user-select: all; } -.oo-ui-toolbar-shadow { - background-position: left top; - background-repeat: repeat-x; - position: absolute; - width: 100%; - pointer-events: none; -} .oo-ui-toolbar-bar { - border-bottom: 1px solid #c8ccd1; background-color: #fff; - box-shadow: 0 1px 1px rgba(0, 0, 0, 0.1); - font-weight: 500; color: #222; } +.oo-ui-toolbar-position-top > .oo-ui-toolbar-bar { + border-bottom: 1px solid #c8ccd1; + box-shadow: 0 1px 1px 0 rgba(0, 0, 0, 0.1); +} +.oo-ui-toolbar-position-bottom > .oo-ui-toolbar-bar { + border-top: 1px solid #c8ccd1; + box-shadow: 0 -1px 1px 0 rgba(0, 0, 0, 0.1); +} .oo-ui-toolbar-bar .oo-ui-toolbar-bar { - border-bottom: 0; + border: 0; background-color: transparent; box-shadow: none; } diff --git a/resources/lib/oojs-ui/oojs-ui-toolbars.js b/resources/lib/oojs-ui/oojs-ui-toolbars.js index 5280a9f78a..1574f6c452 100644 --- a/resources/lib/oojs-ui/oojs-ui-toolbars.js +++ b/resources/lib/oojs-ui/oojs-ui-toolbars.js @@ -1,12 +1,12 @@ /*! - * OOjs UI v0.18.3 + * OOjs UI v0.19.5 * https://www.mediawiki.org/wiki/OOjs_UI * * Copyright 2011–2017 OOjs UI Team and other contributors. * Released under the MIT license * http://oojs.mit-license.org * - * Date: 2017-01-04T00:22:40Z + * Date: 2017-03-07T22:57:01Z */ ( function ( OO ) { @@ -292,7 +292,7 @@ * @cfg {boolean} [actions] Add an actions section to the toolbar. Actions are commands that are included * in the toolbar, but are not configured as tools. By default, actions are displayed on the right side of * the toolbar. - * @cfg {boolean} [shadow] Add a shadow below the toolbar. + * @cfg {string} [position='top'] Whether the toolbar is positioned above ('top') or below ('bottom') content. */ OO.ui.Toolbar = function OoUiToolbar( toolFactory, toolGroupFactory, config ) { // Allow passing positional parameters inside the config object @@ -317,6 +317,7 @@ OO.ui.Toolbar = function OoUiToolbar( toolFactory, toolGroupFactory, config ) { this.toolGroupFactory = toolGroupFactory; this.groups = []; this.tools = {}; + this.position = config.position || 'top'; this.$bar = $( '<div>' ); this.$actions = $( '<div>' ); this.initialized = false; @@ -336,10 +337,7 @@ OO.ui.Toolbar = function OoUiToolbar( toolFactory, toolGroupFactory, config ) { this.$bar .addClass( 'oo-ui-toolbar-bar' ) .append( this.$group, '<div style="clear:both"></div>' ); - if ( config.shadow ) { - this.$bar.append( '<div class="oo-ui-toolbar-shadow"></div>' ); - } - this.$element.addClass( 'oo-ui-toolbar' ).append( this.$bar ); + this.$element.addClass( 'oo-ui-toolbar oo-ui-toolbar-position-' + this.position ).append( this.$bar ); }; /* Setup */ @@ -795,10 +793,10 @@ OO.ui.Tool.prototype.setActive = function ( state ) { this.active = !!state; if ( this.active ) { this.$element.addClass( 'oo-ui-tool-active' ); - this.setFlags( 'progressive' ); + this.setFlags( { progressive: true } ); } else { this.$element.removeClass( 'oo-ui-tool-active' ); - this.clearFlags(); + this.setFlags( { progressive: false } ); } }; @@ -993,6 +991,14 @@ OO.ui.ToolGroup.static.accelTooltips = false; */ OO.ui.ToolGroup.static.autoDisable = true; +/** + * @abstract + * @static + * @inheritable + * @property {string} + */ +OO.ui.ToolGroup.static.name = null; + /* Methods */ /** @@ -1463,6 +1469,7 @@ OO.ui.PopupTool = function OoUiPopupTool( toolGroup, config ) { OO.ui.mixin.PopupElement.call( this, config ); // Initialization + this.popup.setPosition( toolGroup.getToolbar().position === 'bottom' ? 'above' : 'below' ); this.$element .addClass( 'oo-ui-popupTool' ) .append( this.popup.$element ); @@ -1741,10 +1748,22 @@ OO.inheritClass( OO.ui.BarToolGroup, OO.ui.ToolGroup ); /* Static Properties */ +/** + * @static + * @inheritdoc + */ OO.ui.BarToolGroup.static.titleTooltips = true; +/** + * @static + * @inheritdoc + */ OO.ui.BarToolGroup.static.accelTooltips = true; +/** + * @static + * @inheritdoc + */ OO.ui.BarToolGroup.static.name = 'bar'; /** @@ -1775,7 +1794,9 @@ OO.ui.PopupToolGroup = function OoUiPopupToolGroup( toolbar, config ) { } // Configuration initialization - config = config || {}; + config = $.extend( { + indicator: toolbar.position === 'bottom' ? 'up' : 'down' + }, config ); // Parent constructor OO.ui.PopupToolGroup.parent.call( this, toolbar, config ); @@ -2010,7 +2031,6 @@ OO.ui.PopupToolGroup.prototype.setActive = function ( value ) { * // Configurations for list toolgroup. * type: 'list', * label: 'ListToolGroup', - * indicator: 'down', * icon: 'ellipsis', * title: 'This is the title, displayed when user moves the mouse over the list toolgroup', * header: 'This is the header', @@ -2081,6 +2101,10 @@ OO.inheritClass( OO.ui.ListToolGroup, OO.ui.PopupToolGroup ); /* Static Properties */ +/** + * @static + * @inheritdoc + */ OO.ui.ListToolGroup.static.name = 'list'; /* Methods */ @@ -2171,6 +2195,9 @@ OO.ui.ListToolGroup.prototype.updateCollapsibleState = function () { for ( i = 0, len = this.collapsibleTools.length; i < len; i++ ) { this.collapsibleTools[ i ].toggle( this.expanded ); } + + // Re-evaluate clipping, because our height has changed + this.clip(); }; /** @@ -2240,7 +2267,6 @@ OO.ui.ListToolGroup.prototype.updateCollapsibleState = function () { * type: 'menu', * header: 'This is the (optional) header', * title: 'This is the (optional) title', - * indicator: 'down', * include: [ 'settings', 'stuff' ] * } * ] ); @@ -2303,6 +2329,10 @@ OO.inheritClass( OO.ui.MenuToolGroup, OO.ui.PopupToolGroup ); /* Static Properties */ +/** + * @static + * @inheritdoc + */ OO.ui.MenuToolGroup.static.name = 'menu'; /* Methods */ diff --git a/resources/lib/oojs-ui/oojs-ui-widgets-apex.css b/resources/lib/oojs-ui/oojs-ui-widgets-apex.css index 941eb3715d..4ec3d1c189 100644 --- a/resources/lib/oojs-ui/oojs-ui-widgets-apex.css +++ b/resources/lib/oojs-ui/oojs-ui-widgets-apex.css @@ -1,12 +1,12 @@ /*! - * OOjs UI v0.18.3 + * OOjs UI v0.19.5 * https://www.mediawiki.org/wiki/OOjs_UI * * Copyright 2011–2017 OOjs UI Team and other contributors. * Released under the MIT license * http://oojs.mit-license.org * - * Date: 2017-01-04T00:22:45Z + * Date: 2017-03-07T22:57:06Z */ .oo-ui-draggableElement-handle, .oo-ui-draggableElement-handle.oo-ui-widget { @@ -33,7 +33,7 @@ display: inline-block; } .oo-ui-bookletLayout-stackLayout.oo-ui-stackLayout-continuous > .oo-ui-panelLayout-scrollable { - overflow-y: hidden; + overflow: hidden; } .oo-ui-bookletLayout-stackLayout > .oo-ui-panelLayout { width: 100%; @@ -41,19 +41,13 @@ -moz-box-sizing: border-box; box-sizing: border-box; } -.oo-ui-bookletLayout-stackLayout > .oo-ui-panelLayout-scrollable { - overflow-y: auto; -} -.oo-ui-bookletLayout-stackLayout > .oo-ui-panelLayout-padded { - padding: 2em; -} .oo-ui-bookletLayout-outlinePanel-editable > .oo-ui-outlineSelectWidget { position: absolute; top: 0; left: 0; right: 0; bottom: 3em; - overflow-y: auto; + overflow: auto; } .oo-ui-bookletLayout-outlinePanel > .oo-ui-outlineControlsWidget { position: absolute; @@ -85,8 +79,6 @@ left: 0; right: 0; bottom: 0; - /* stylelint-disable declaration-no-important */ - /* stylelint-enable declaration-no-important */ } .oo-ui-menuLayout-menu, .oo-ui-menuLayout-content { @@ -219,7 +211,8 @@ -webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box; - -webkit-transform: translate3d(0, 0, 0); + -webkit-transform: translateZ(0); + transform: translateZ(0); height: 2em; width: 4em; border-radius: 1em; @@ -352,6 +345,8 @@ .oo-ui-selectFileWidget-info > .oo-ui-indicatorElement-indicator, .oo-ui-selectFileWidget-info > .oo-ui-iconElement-icon { position: absolute; + top: 0; + height: 100%; } .oo-ui-widget-disabled .oo-ui-selectFileWidget-info { cursor: default; @@ -482,15 +477,11 @@ border-width: 1px 0 1px 1px; } .oo-ui-selectFileWidget-info > .oo-ui-iconElement-icon { - top: 0; left: 0; - height: 2.3em; margin-left: 0.3em; } .oo-ui-selectFileWidget-info > .oo-ui-indicatorElement-indicator { - top: 0; right: 0; - height: 2.3em; margin-right: 0.775em; } .oo-ui-selectFileWidget-label { @@ -598,37 +589,31 @@ .oo-ui-outlineOptionWidget.oo-ui-indicatorElement .oo-ui-indicatorElement-indicator { opacity: 0.5; } -.oo-ui-outlineOptionWidget-level-0 { - padding-left: 3.5em; -} -.oo-ui-outlineOptionWidget-level-0 .oo-ui-iconElement-icon { - left: 1em; +.oo-ui-outlineOptionWidget-level-0.oo-ui-iconElement { + padding-left: 2.5em; } .oo-ui-outlineOptionWidget-level-1 { - padding-left: 5em; + padding-left: 2.5em; +} +.oo-ui-outlineOptionWidget-level-1.oo-ui-iconElement { + padding-left: 4.5em; } -.oo-ui-outlineOptionWidget-level-1 .oo-ui-iconElement-icon { +.oo-ui-outlineOptionWidget-level-1.oo-ui-iconElement .oo-ui-iconElement-icon { left: 2.5em; } .oo-ui-outlineOptionWidget-level-2 { - padding-left: 6.5em; + padding-left: 5em; } -.oo-ui-outlineOptionWidget-level-2 .oo-ui-iconElement-icon { - left: 4em; +.oo-ui-outlineOptionWidget-level-2.oo-ui-iconElement { + padding-left: 7em; +} +.oo-ui-outlineOptionWidget-level-2.oo-ui-iconElement .oo-ui-iconElement-icon { + left: 5em; } .oo-ui-selectWidget-depressed .oo-ui-outlineOptionWidget.oo-ui-optionWidget-selected { background-color: #a7dcff; text-shadow: 0 1px 1px rgba(255, 255, 255, 0.5); } -.oo-ui-outlineOptionWidget.oo-ui-flaggedElement-important { - font-weight: bold; -} -.oo-ui-outlineOptionWidget.oo-ui-flaggedElement-empty .oo-ui-iconElement-icon { - opacity: 0.5; -} -.oo-ui-outlineOptionWidget.oo-ui-flaggedElement-empty .oo-ui-labelElement-label { - color: #777; -} .oo-ui-outlineControlsWidget { height: 3em; background-color: #fff; @@ -719,6 +704,12 @@ display: block; position: relative; } +.oo-ui-capsuleMultiselectWidget-handle > .oo-ui-iconElement-icon, +.oo-ui-capsuleMultiselectWidget-handle > .oo-ui-indicatorElement-indicator { + position: absolute; + top: 0; + height: 100%; +} .oo-ui-capsuleMultiselectWidget-content { position: relative; } @@ -728,6 +719,14 @@ .oo-ui-capsuleMultiselectWidget-group { display: inline; } +.oo-ui-capsuleMultiselectWidget-popup > .oo-ui-popupWidget-popup > .oo-ui-popupWidget-body > * { + display: block; +} +.oo-ui-capsuleMultiselectWidget-focusTrap { + display: inline-block; + height: 1px; + width: 1px; +} .oo-ui-capsuleMultiselectWidget-handle { background-color: #fff; cursor: text; @@ -743,10 +742,6 @@ .oo-ui-capsuleMultiselectWidget-handle:last-child { margin-right: 0; } -.oo-ui-capsuleMultiselectWidget-handle > .oo-ui-indicatorElement-indicator, -.oo-ui-capsuleMultiselectWidget-handle > .oo-ui-iconElement-icon { - position: absolute; -} .oo-ui-capsuleMultiselectWidget-handle > .oo-ui-capsuleMultiselectWidget-content > input { border: 0; line-height: 1.675em; @@ -759,24 +754,42 @@ color: #000; vertical-align: middle; } -.oo-ui-capsuleMultiselectWidget-handle > .oo-ui-capsuleMultiselectWidget-content > input:focus { - outline: none; +.oo-ui-capsuleMultiselectWidget-handle > .oo-ui-capsuleMultiselectWidget-content > input::-webkit-input-placeholder { + color: #72777d; + opacity: 1; } -.oo-ui-capsuleMultiselectWidget.oo-ui-indicatorElement .oo-ui-capsuleMultiselectWidget-handle { - padding-right: 2.4875em; +.oo-ui-capsuleMultiselectWidget-handle > .oo-ui-capsuleMultiselectWidget-content > input:-ms-input-placeholder { + color: #72777d; + opacity: 1; } -.oo-ui-capsuleMultiselectWidget.oo-ui-indicatorElement .oo-ui-capsuleMultiselectWidget-handle > .oo-ui-indicatorElement-indicator { - right: 0; - top: 0; - margin: 0.775em; +.oo-ui-capsuleMultiselectWidget-handle > .oo-ui-capsuleMultiselectWidget-content > input::-moz-placeholder { + color: #72777d; + opacity: 1; +} +.oo-ui-capsuleMultiselectWidget-handle > .oo-ui-capsuleMultiselectWidget-content > input:-moz-placeholder { + color: #72777d; + opacity: 1; +} +.oo-ui-capsuleMultiselectWidget-handle > .oo-ui-capsuleMultiselectWidget-content > input::placeholder { + color: #72777d; + opacity: 1; +} +.oo-ui-capsuleMultiselectWidget-handle > .oo-ui-capsuleMultiselectWidget-content > input:focus { + outline: 0; } .oo-ui-capsuleMultiselectWidget.oo-ui-iconElement .oo-ui-capsuleMultiselectWidget-handle { padding-left: 2.475em; } .oo-ui-capsuleMultiselectWidget.oo-ui-iconElement .oo-ui-capsuleMultiselectWidget-handle > .oo-ui-iconElement-icon { left: 0; - top: 0; - margin: 0.3em; + margin: 0 0.3em; +} +.oo-ui-capsuleMultiselectWidget.oo-ui-indicatorElement .oo-ui-capsuleMultiselectWidget-handle { + padding-right: 2.4875em; +} +.oo-ui-capsuleMultiselectWidget.oo-ui-indicatorElement .oo-ui-capsuleMultiselectWidget-handle > .oo-ui-indicatorElement-indicator { + right: 0; + margin: 0 0.775em; } .oo-ui-capsuleMultiselectWidget:hover .oo-ui-capsuleMultiselectWidget-handle { border-color: rgba(0, 0, 0, 0.2); @@ -792,6 +805,9 @@ .oo-ui-capsuleMultiselectWidget.oo-ui-widget-disabled .oo-ui-capsuleMultiselectWidget-handle > .oo-ui-indicatorElement-indicator { opacity: 0.2; } +.oo-ui-capsuleMultiselectWidget-popup > .oo-ui-popupWidget-popup { + border: 0; +} .oo-ui-capsuleItemWidget { position: relative; display: inline-block; @@ -824,12 +840,13 @@ cursor: text; } .oo-ui-capsuleItemWidget:focus { - outline: none; + outline: 0; border-color: #087ecc; } .oo-ui-capsuleItemWidget.oo-ui-widget-disabled { opacity: 0.5; - -webkit-transform: translate3d(0, 0, 0); + -webkit-transform: translateZ(0); + transform: translateZ(0); box-shadow: none; color: #333; background: #eee; @@ -878,11 +895,6 @@ .oo-ui-numberInputWidget-buttoned .oo-ui-textInputWidget { display: table-cell; } -.oo-ui-numberInputWidget-buttoned .oo-ui-buttonElement-button { - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; -} .oo-ui-numberInputWidget-field { display: table; table-layout: fixed; diff --git a/resources/lib/oojs-ui/oojs-ui-widgets-mediawiki.css b/resources/lib/oojs-ui/oojs-ui-widgets-mediawiki.css index 37eee66be0..f64a619f2f 100644 --- a/resources/lib/oojs-ui/oojs-ui-widgets-mediawiki.css +++ b/resources/lib/oojs-ui/oojs-ui-widgets-mediawiki.css @@ -1,12 +1,12 @@ /*! - * OOjs UI v0.18.3 + * OOjs UI v0.19.5 * https://www.mediawiki.org/wiki/OOjs_UI * * Copyright 2011–2017 OOjs UI Team and other contributors. * Released under the MIT license * http://oojs.mit-license.org * - * Date: 2017-01-04T00:22:45Z + * Date: 2017-03-07T22:57:06Z */ .oo-ui-draggableElement-handle, .oo-ui-draggableElement-handle.oo-ui-widget { @@ -32,8 +32,13 @@ .oo-ui-draggableGroupElement-horizontal .oo-ui-draggableElement { display: inline-block; } +.oo-ui-draggableElement-handle:focus { + border-radius: 2px; + box-shadow: inset 0 0 0 1px #36c, 0 0 0 1px #36c; + outline: 0; +} .oo-ui-bookletLayout-stackLayout.oo-ui-stackLayout-continuous > .oo-ui-panelLayout-scrollable { - overflow-y: hidden; + overflow: hidden; } .oo-ui-bookletLayout-stackLayout > .oo-ui-panelLayout { width: 100%; @@ -41,19 +46,13 @@ -moz-box-sizing: border-box; box-sizing: border-box; } -.oo-ui-bookletLayout-stackLayout > .oo-ui-panelLayout-scrollable { - overflow-y: auto; -} -.oo-ui-bookletLayout-stackLayout > .oo-ui-panelLayout-padded { - padding: 2em; -} .oo-ui-bookletLayout-outlinePanel-editable > .oo-ui-outlineSelectWidget { position: absolute; top: 0; left: 0; right: 0; bottom: 3em; - overflow-y: auto; + overflow: auto; } .oo-ui-bookletLayout-outlinePanel > .oo-ui-outlineControlsWidget { position: absolute; @@ -68,7 +67,7 @@ border-right: 1px solid #ddd; } .oo-ui-bookletLayout-outlinePanel > .oo-ui-outlineControlsWidget { - box-shadow: 0 0.15em 0 0 rgba(0, 0, 0, 0.15); + box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.25); } .oo-ui-indexLayout > .oo-ui-menuLayout-menu { height: 3em; @@ -91,8 +90,6 @@ left: 0; right: 0; bottom: 0; - /* stylelint-disable declaration-no-important */ - /* stylelint-enable declaration-no-important */ } .oo-ui-menuLayout-menu, .oo-ui-menuLayout-content { @@ -243,7 +240,8 @@ -webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box; - -webkit-transform: translate3d(0, 0, 0); + -webkit-transform: translateZ(0); + transform: translateZ(0); background-color: #f8f9fa; width: 3.5em; min-height: 26px; @@ -418,6 +416,8 @@ .oo-ui-selectFileWidget-info > .oo-ui-indicatorElement-indicator, .oo-ui-selectFileWidget-info > .oo-ui-iconElement-icon { position: absolute; + top: 0; + height: 100%; } .oo-ui-widget-disabled .oo-ui-selectFileWidget-info { cursor: default; @@ -549,14 +549,10 @@ } .oo-ui-selectFileWidget-info > .oo-ui-iconElement-icon { left: 0; - top: 0; - height: 2.3em; margin-left: 0.5em; } .oo-ui-selectFileWidget-info > .oo-ui-indicatorElement-indicator { - top: 0; right: 0; - height: 2.3em; margin-right: 0.775em; } .oo-ui-selectFileWidget-label { @@ -602,15 +598,12 @@ .oo-ui-selectFileWidget-notsupported.oo-ui-indicatorElement .oo-ui-selectFileWidget-label { right: 2em; } -.oo-ui-selectFileWidget-supported.oo-ui-widget-enabled.oo-ui-selectFileWidget-canDrop.oo-ui-selectFileWidget-dropTarget { - background-color: #eaf3ff; -} .oo-ui-selectFileWidget-dropTarget { background-color: #fff; border: 1px solid #a2a9b1; + border-radius: 2px; vertical-align: middle; overflow: hidden; - border-radius: 2px; } .oo-ui-selectFileWidget-dropTarget .oo-ui-selectFileWidget-selectButton > .oo-ui-buttonElement-button { border-radius: 2px; @@ -621,8 +614,18 @@ white-space: normal; } .oo-ui-selectFileWidget-empty.oo-ui-widget-enabled.oo-ui-selectFileWidget-dropTarget { - background-color: #eee; + background-color: #fff; border-style: dashed; + -webkit-transition: background-color 200ms cubic-bezier(0.39, 0.575, 0.565, 1), color 200ms cubic-bezier(0.39, 0.575, 0.565, 1), border-color 200ms cubic-bezier(0.39, 0.575, 0.565, 1); + -moz-transition: background-color 200ms cubic-bezier(0.39, 0.575, 0.565, 1), color 200ms cubic-bezier(0.39, 0.575, 0.565, 1), border-color 200ms cubic-bezier(0.39, 0.575, 0.565, 1); + transition: background-color 200ms cubic-bezier(0.39, 0.575, 0.565, 1), color 200ms cubic-bezier(0.39, 0.575, 0.565, 1), border-color 200ms cubic-bezier(0.39, 0.575, 0.565, 1); +} +.oo-ui-selectFileWidget-empty.oo-ui-widget-enabled.oo-ui-selectFileWidget-dropTarget:hover { + border-color: #72777d; +} +.oo-ui-selectFileWidget-supported.oo-ui-widget-enabled.oo-ui-selectFileWidget-canDrop.oo-ui-selectFileWidget-dropTarget { + background-color: #eaf3ff; + color: #36c; } .oo-ui-selectFileWidget.oo-ui-widget-disabled.oo-ui-selectFileWidget-dropTarget, .oo-ui-selectFileWidget-empty.oo-ui-widget-disabled.oo-ui-selectFileWidget-dropTarget, @@ -649,6 +652,12 @@ .oo-ui-widget-disabled .oo-ui-selectFileWidget-dropLabel { display: none; } +.oo-ui-outlineSelectWidget { + height: 100%; +} +.oo-ui-outlineSelectWidget:focus { + box-shadow: inset 0 0 0 2px #36c; +} .oo-ui-outlineOptionWidget { -webkit-touch-callout: none; -webkit-user-select: none; @@ -682,32 +691,26 @@ .oo-ui-outlineOptionWidget.oo-ui-indicatorElement .oo-ui-indicatorElement-indicator { opacity: 0.5; } -.oo-ui-outlineOptionWidget-level-0 { - padding-left: 3.5em; -} -.oo-ui-outlineOptionWidget-level-0 .oo-ui-iconElement-icon { - left: 1em; +.oo-ui-outlineOptionWidget-level-0.oo-ui-iconElement { + padding-left: 2.571em; } .oo-ui-outlineOptionWidget-level-1 { - padding-left: 5em; -} -.oo-ui-outlineOptionWidget-level-1 .oo-ui-iconElement-icon { - left: 2.5em; + padding-left: 2.571em; } -.oo-ui-outlineOptionWidget-level-2 { - padding-left: 6.5em; +.oo-ui-outlineOptionWidget-level-1.oo-ui-iconElement { + padding-left: 4.429em; } -.oo-ui-outlineOptionWidget-level-2 .oo-ui-iconElement-icon { - left: 4em; +.oo-ui-outlineOptionWidget-level-1.oo-ui-iconElement .oo-ui-iconElement-icon { + left: 2.571em; } -.oo-ui-outlineOptionWidget.oo-ui-flaggedElement-important { - font-weight: bold; +.oo-ui-outlineOptionWidget-level-2 { + padding-left: 5.142em; } -.oo-ui-outlineOptionWidget.oo-ui-flaggedElement-empty .oo-ui-iconElement-icon { - opacity: 0.5; +.oo-ui-outlineOptionWidget-level-2.oo-ui-iconElement { + padding-left: 6.857em; } -.oo-ui-outlineOptionWidget.oo-ui-flaggedElement-empty .oo-ui-labelElement-label { - color: #777; +.oo-ui-outlineOptionWidget-level-2.oo-ui-iconElement .oo-ui-iconElement-icon { + left: 4.429em; } .oo-ui-outlineControlsWidget { height: 3em; @@ -752,19 +755,22 @@ text-align: left; white-space: nowrap; overflow: hidden; - background-color: #ddd; + background-color: #eaecf0; } .oo-ui-tabOptionWidget { display: inline-block; vertical-align: bottom; - padding: 0.35em 1em; + color: #222; margin: 0.5em 0 0 0.75em; border: 1px solid transparent; border-bottom: 0; border-top-left-radius: 2px; border-top-right-radius: 2px; - color: #222; + padding: 0.35em 1em; font-weight: bold; + -webkit-transition: background-color 100ms, color 100ms; + -moz-transition: background-color 100ms, color 100ms; + transition: background-color 100ms, color 100ms; } .oo-ui-tabOptionWidget.oo-ui-widget-enabled:hover { background-color: rgba(255, 255, 255, 0.3); @@ -782,7 +788,7 @@ .oo-ui-selectWidget-depressed .oo-ui-tabOptionWidget.oo-ui-optionWidget-selected, .oo-ui-tabOptionWidget.oo-ui-optionWidget-selected:hover { background-color: #fff; - color: #333; + color: #000; } .oo-ui-capsuleMultiselectWidget { display: inline-block; @@ -795,6 +801,12 @@ display: block; position: relative; } +.oo-ui-capsuleMultiselectWidget-handle > .oo-ui-iconElement-icon, +.oo-ui-capsuleMultiselectWidget-handle > .oo-ui-indicatorElement-indicator { + position: absolute; + top: 0; + height: 100%; +} .oo-ui-capsuleMultiselectWidget-content { position: relative; } @@ -804,6 +816,14 @@ .oo-ui-capsuleMultiselectWidget-group { display: inline; } +.oo-ui-capsuleMultiselectWidget-popup > .oo-ui-popupWidget-popup > .oo-ui-popupWidget-body > * { + display: block; +} +.oo-ui-capsuleMultiselectWidget-focusTrap { + display: inline-block; + height: 1px; + width: 1px; +} .oo-ui-capsuleMultiselectWidget-handle { min-height: 2.4em; margin-right: 0.5em; @@ -817,68 +837,59 @@ .oo-ui-capsuleMultiselectWidget-handle:last-child { margin-right: 0; } -.oo-ui-capsuleMultiselectWidget-handle > .oo-ui-indicatorElement-indicator, -.oo-ui-capsuleMultiselectWidget-handle > .oo-ui-iconElement-icon { - position: absolute; +.oo-ui-capsuleMultiselectWidget-handle > .oo-ui-capsuleMultiselectWidget-content > input { + border: 0; + line-height: 1.675; + margin: 0 0 0 0.2em; + padding: 0; + font-size: inherit; + font-family: inherit; + background-color: transparent; + color: #000; + vertical-align: middle; } -.oo-ui-capsuleMultiselectWidget-handle > .oo-ui-capsuleMultiselectWidget-content :-moz-placeholder { +.oo-ui-capsuleMultiselectWidget-handle > .oo-ui-capsuleMultiselectWidget-content > input::-webkit-input-placeholder { color: #72777d; opacity: 1; } -.oo-ui-capsuleMultiselectWidget-handle > .oo-ui-capsuleMultiselectWidget-content ::-moz-placeholder { +.oo-ui-capsuleMultiselectWidget-handle > .oo-ui-capsuleMultiselectWidget-content > input:-ms-input-placeholder { color: #72777d; opacity: 1; } -.oo-ui-capsuleMultiselectWidget-handle > .oo-ui-capsuleMultiselectWidget-content :-ms-input-placeholder { +.oo-ui-capsuleMultiselectWidget-handle > .oo-ui-capsuleMultiselectWidget-content > input::-moz-placeholder { color: #72777d; + opacity: 1; } -.oo-ui-capsuleMultiselectWidget-handle > .oo-ui-capsuleMultiselectWidget-content ::-webkit-input-placeholder { +.oo-ui-capsuleMultiselectWidget-handle > .oo-ui-capsuleMultiselectWidget-content > input:-moz-placeholder { color: #72777d; + opacity: 1; } -.oo-ui-capsuleMultiselectWidget-handle > .oo-ui-capsuleMultiselectWidget-content :placeholder-shown { +.oo-ui-capsuleMultiselectWidget-handle > .oo-ui-capsuleMultiselectWidget-content > input::placeholder { color: #72777d; -} -.oo-ui-capsuleMultiselectWidget-handle > .oo-ui-capsuleMultiselectWidget-content > input { - border: 0; - line-height: 1.675; - margin: 0 0 0 0.2em; - padding: 0; - font-size: inherit; - font-family: inherit; - background-color: transparent; - color: #000; - vertical-align: middle; + opacity: 1; } .oo-ui-capsuleMultiselectWidget-handle > .oo-ui-capsuleMultiselectWidget-content > input:focus { outline: 0; } -.oo-ui-capsuleMultiselectWidget.oo-ui-indicatorElement .oo-ui-capsuleMultiselectWidget-handle { - padding-right: 2.4875em; -} -.oo-ui-capsuleMultiselectWidget.oo-ui-indicatorElement .oo-ui-capsuleMultiselectWidget-handle > .oo-ui-indicatorElement-indicator { - right: 0; - top: 0; - margin: 0.775em; -} .oo-ui-capsuleMultiselectWidget.oo-ui-iconElement .oo-ui-capsuleMultiselectWidget-handle { padding-left: 2.475em; } .oo-ui-capsuleMultiselectWidget.oo-ui-iconElement .oo-ui-capsuleMultiselectWidget-handle > .oo-ui-iconElement-icon { left: 0; - top: 0; - margin: 0.3em; + margin: 0 0.3em; } -.oo-ui-capsuleMultiselectWidget .oo-ui-popupWidget { - width: 100%; +.oo-ui-capsuleMultiselectWidget.oo-ui-indicatorElement .oo-ui-capsuleMultiselectWidget-handle { + padding-right: 2.4875em; +} +.oo-ui-capsuleMultiselectWidget.oo-ui-indicatorElement .oo-ui-capsuleMultiselectWidget-handle > .oo-ui-indicatorElement-indicator { + right: 0; + margin: 0 0.775em; +} +.oo-ui-capsuleMultiselectWidget-popup { margin-top: -1px; } -.oo-ui-capsuleMultiselectWidget .oo-ui-popupWidget-popup { - min-width: 100%; - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; - border-width: 0 1px; - border-radius: 0 0 2px 2px; +.oo-ui-capsuleMultiselectWidget-popup > .oo-ui-popupWidget-popup { + border: 0; } .oo-ui-capsuleMultiselectWidget.oo-ui-widget-enabled .oo-ui-capsuleMultiselectWidget-handle { background-color: #fff; @@ -912,20 +923,18 @@ display: inline-block; cursor: default; white-space: nowrap; - width: auto; - max-width: 100%; -webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box; - vertical-align: middle; + width: auto; + max-width: 100%; height: 1.7em; - line-height: 1.7; - background-color: #eee; - color: #222; margin: 0.1em; border: 1px solid #a2a9b1; border-radius: 2px; padding: 0 0.4em; + line-height: 1.7; + vertical-align: middle; } .oo-ui-capsuleItemWidget.oo-ui-labelElement .oo-ui-labelElement-label { display: inline-block; @@ -933,22 +942,23 @@ overflow: hidden; cursor: text; } -.oo-ui-capsuleItemWidget:focus { - outline: 0; - border-color: #36c; - box-shadow: inset 0 0 0 1px #36c; -} -.oo-ui-capsuleItemWidget.oo-ui-widget-disabled { - background-color: #eaecf0; - color: #72777d; - border-color: #c8ccd1; - text-shadow: 0 1px 1px #fff; -} -.oo-ui-capsuleItemWidget > .oo-ui-buttonElement { - display: none; -} .oo-ui-capsuleItemWidget.oo-ui-widget-enabled { + background-color: #f8f9fa; + color: #222; padding-right: 1.5375em; + -webkit-transition: background-color 100ms, color 100ms, border-color 100ms, box-shadow 100ms; + -moz-transition: background-color 100ms, color 100ms, border-color 100ms, box-shadow 100ms; + transition: background-color 100ms, color 100ms, border-color 100ms, box-shadow 100ms; +} +.oo-ui-capsuleItemWidget.oo-ui-widget-enabled:hover { + background-color: #fff; + color: #444; + border-color: #a2a9b1; +} +.oo-ui-capsuleItemWidget.oo-ui-widget-enabled:focus { + border-color: #36c; + box-shadow: inset 0 0 0 1px #36c; + outline: 0; } .oo-ui-capsuleItemWidget.oo-ui-widget-enabled > .oo-ui-buttonElement { display: block; @@ -969,6 +979,15 @@ bottom: 0; height: auto; } +.oo-ui-capsuleItemWidget.oo-ui-widget-disabled { + background-color: #eaecf0; + color: #72777d; + border-color: #c8ccd1; + text-shadow: 0 1px 1px #fff; +} +.oo-ui-capsuleItemWidget.oo-ui-widget-disabled > .oo-ui-buttonElement { + display: none; +} .oo-ui-searchWidget-query { position: absolute; top: 0; @@ -1008,11 +1027,6 @@ .oo-ui-numberInputWidget-buttoned .oo-ui-textInputWidget { display: table-cell; } -.oo-ui-numberInputWidget-buttoned .oo-ui-buttonElement-button { - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; -} .oo-ui-numberInputWidget-field { display: table; table-layout: fixed; @@ -1023,6 +1037,7 @@ } .oo-ui-numberInputWidget-buttoned .oo-ui-buttonElement-button { display: block; + min-width: 2.5em; min-height: 2.5em; padding-left: 0; padding-right: 0; diff --git a/resources/lib/oojs-ui/oojs-ui-widgets.js b/resources/lib/oojs-ui/oojs-ui-widgets.js index d7e92c2606..d1fbe0df48 100644 --- a/resources/lib/oojs-ui/oojs-ui-widgets.js +++ b/resources/lib/oojs-ui/oojs-ui-widgets.js @@ -1,12 +1,12 @@ /*! - * OOjs UI v0.18.3 + * OOjs UI v0.19.5 * https://www.mediawiki.org/wiki/OOjs_UI * * Copyright 2011–2017 OOjs UI Team and other contributors. * Released under the MIT license * http://oojs.mit-license.org * - * Date: 2017-01-04T00:22:40Z + * Date: 2017-03-07T22:57:01Z */ ( function ( OO ) { @@ -241,6 +241,7 @@ OO.ui.mixin.DraggableGroupElement = function OoUiMixinDraggableGroupElement( con } this.$element .addClass( 'oo-ui-draggableGroupElement' ) + .attr( 'role', 'listbox' ) .append( this.$status ) .toggleClass( 'oo-ui-draggableGroupElement-horizontal', this.orientation === 'horizontal' ); }; @@ -1779,11 +1780,9 @@ OO.ui.BookletLayout.prototype.onStackLayoutVisibleItemChange = function ( page ) OO.ui.BookletLayout.prototype.onStackLayoutSet = function ( page ) { var layout = this; if ( !this.scrolling && page ) { - page.scrollElementIntoView( { - complete: function () { - if ( layout.autoFocus && !OO.ui.isMobile() ) { - layout.focus(); - } + page.scrollElementIntoView().done( function () { + if ( layout.autoFocus && !OO.ui.isMobile() ) { + layout.focus(); } } ); } @@ -2290,11 +2289,9 @@ OO.ui.IndexLayout.prototype.onStackLayoutFocus = function ( e ) { OO.ui.IndexLayout.prototype.onStackLayoutSet = function ( card ) { var layout = this; if ( card ) { - card.scrollElementIntoView( { - complete: function () { - if ( layout.autoFocus && !OO.ui.isMobile() ) { - layout.focus(); - } + card.scrollElementIntoView().done( function () { + if ( layout.autoFocus && !OO.ui.isMobile() ) { + layout.focus(); } } ); } @@ -3061,12 +3058,30 @@ OO.inheritClass( OO.ui.OutlineOptionWidget, OO.ui.DecoratedOptionWidget ); /* Static Properties */ +/** + * @static + * @inheritdoc + */ OO.ui.OutlineOptionWidget.static.highlightable = true; +/** + * @static + * @inheritdoc + */ OO.ui.OutlineOptionWidget.static.scrollIntoViewOnSelect = true; +/** + * @static + * @inheritable + * @property {string} + */ OO.ui.OutlineOptionWidget.static.levelClass = 'oo-ui-outlineOptionWidget-level-'; +/** + * @static + * @inheritable + * @property {number} + */ OO.ui.OutlineOptionWidget.static.levels = 3; /* Methods */ @@ -3108,9 +3123,9 @@ OO.ui.OutlineOptionWidget.prototype.getLevel = function () { OO.ui.OutlineOptionWidget.prototype.setPressed = function ( state ) { OO.ui.OutlineOptionWidget.parent.prototype.setPressed.call( this, state ); if ( this.pressed ) { - this.setFlags( 'progressive' ); + this.setFlags( { progressive: true } ); } else if ( !this.selected ) { - this.clearFlags(); + this.setFlags( { progressive: false } ); } return this; }; @@ -3149,9 +3164,9 @@ OO.ui.OutlineOptionWidget.prototype.setRemovable = function ( removable ) { OO.ui.OutlineOptionWidget.prototype.setSelected = function ( state ) { OO.ui.OutlineOptionWidget.parent.prototype.setSelected.call( this, state ); if ( this.selected ) { - this.setFlags( 'progressive' ); + this.setFlags( { progressive: true } ); } else { - this.clearFlags(); + this.setFlags( { progressive: false } ); } return this; }; @@ -3262,9 +3277,18 @@ OO.mixinClass( OO.ui.ButtonOptionWidget, OO.ui.mixin.TitledElement ); /* Static Properties */ -// Allow button mouse down events to pass through so they can be handled by the parent select widget +/** + * Allow button mouse down events to pass through so they can be handled by the parent select widget + * + * @static + * @inheritdoc + */ OO.ui.ButtonOptionWidget.static.cancelButtonMouseDownEvents = false; +/** + * @static + * @inheritdoc + */ OO.ui.ButtonOptionWidget.static.highlightable = false; /* Methods */ @@ -3375,6 +3399,10 @@ OO.inheritClass( OO.ui.TabOptionWidget, OO.ui.OptionWidget ); /* Static Properties */ +/** + * @static + * @inheritdoc + */ OO.ui.TabOptionWidget.static.highlightable = false; /** @@ -3575,6 +3603,7 @@ OO.ui.CapsuleItemWidget.prototype.focus = function () { * @param {Object} [config] Configuration options * @cfg {string} [placeholder] Placeholder text * @cfg {boolean} [allowArbitrary=false] Allow data items to be added even if not present in the menu. + * @cfg {boolean} [allowDuplicates=false] Allow duplicate items to be added. * @cfg {Object} [menu] (required) Configuration options to pass to the * {@link OO.ui.MenuSelectWidget menu select widget}. * @cfg {Object} [popup] Configuration options to pass to the {@link OO.ui.PopupWidget popup widget}. @@ -3596,6 +3625,7 @@ OO.ui.CapsuleMultiselectWidget = function OoUiCapsuleMultiselectWidget( config ) // Configuration initialization config = $.extend( { allowArbitrary: false, + allowDuplicates: false, $overlay: this.$element }, config ); @@ -3627,6 +3657,7 @@ OO.ui.CapsuleMultiselectWidget = function OoUiCapsuleMultiselectWidget( config ) // Properties this.$content = $( '<div>' ); this.allowArbitrary = config.allowArbitrary; + this.allowDuplicates = config.allowDuplicates; this.$overlay = config.$overlay; this.menu = new OO.ui.FloatingMenuSelectWidget( $.extend( { @@ -3642,7 +3673,7 @@ OO.ui.CapsuleMultiselectWidget = function OoUiCapsuleMultiselectWidget( config ) // Events if ( this.popup ) { $tabFocus.on( { - focus: this.onFocusForPopup.bind( this ) + focus: this.focus.bind( this ) } ); this.popup.$element.on( 'focusout', this.onPopupFocusOut.bind( this ) ); if ( this.popup.$autoCloseIgnore ) { @@ -3692,12 +3723,16 @@ OO.ui.CapsuleMultiselectWidget = function OoUiCapsuleMultiselectWidget( config ) this.$element.addClass( 'oo-ui-capsuleMultiselectWidget' ) .append( this.$handle ); if ( this.popup ) { + this.popup.$element.addClass( 'oo-ui-capsuleMultiselectWidget-popup' ); this.$content.append( $tabFocus ); this.$overlay.append( this.popup.$element ); } else { this.$content.append( this.$input ); this.$overlay.append( this.menu.$element ); } + if ( $tabFocus ) { + $tabFocus.addClass( 'oo-ui-capsuleMultiselectWidget-focusTrap' ); + } // Input size needs to be calculated after everything else is rendered setTimeout( function () { @@ -3718,6 +3753,10 @@ OO.mixinClass( OO.ui.CapsuleMultiselectWidget, OO.ui.mixin.TabIndexedElement ); OO.mixinClass( OO.ui.CapsuleMultiselectWidget, OO.ui.mixin.IndicatorElement ); OO.mixinClass( OO.ui.CapsuleMultiselectWidget, OO.ui.mixin.IconElement ); +/* Static Properties */ + +OO.ui.CapsuleMultiselectWidget.static.supportsSimpleLabel = true; + /* Events */ /** @@ -3753,6 +3792,26 @@ OO.ui.CapsuleMultiselectWidget.prototype.createItemWidget = function ( data, lab return new OO.ui.CapsuleItemWidget( { data: data, label: label } ); }; +/** + * Get the widget's input's id, or generate one, if it has an input. + * + * @return {string} + */ +OO.ui.CapsuleMultiselectWidget.prototype.getInputId = function () { + var id; + if ( !this.$input ) { + return false; + } + + id = this.$input.attr( 'id' ); + if ( id === undefined ) { + id = OO.ui.generateElementId(); + this.$input.attr( 'id', id ); + } + + return id; +}; + /** * Get the data of the items in the capsule * @@ -3826,7 +3885,7 @@ OO.ui.CapsuleMultiselectWidget.prototype.addItemsFromData = function ( datas ) { $.each( datas, function ( i, data ) { var item; - if ( !widget.getItemFromData( data ) ) { + if ( !widget.getItemFromData( data ) || widget.allowDuplicates ) { item = menu.getItemFromData( data ); if ( item ) { item = widget.createItemWidget( data, item.label ); @@ -4050,20 +4109,6 @@ OO.ui.CapsuleMultiselectWidget.prototype.onInputBlur = function () { this.clearInput(); }; -/** - * Handle focus events - * - * @private - * @param {jQuery.Event} event - */ -OO.ui.CapsuleMultiselectWidget.prototype.onFocusForPopup = function () { - if ( !this.isDisabled() ) { - this.popup.setSize( this.$handle.width() ); - this.popup.toggle( true ); - OO.ui.findFocusable( this.popup.$element ).focus(); - } -}; - /** * Handles popup focus out events. * @@ -4224,6 +4269,9 @@ OO.ui.CapsuleMultiselectWidget.prototype.updateIfHeightChanged = function () { if ( height !== this.height ) { this.height = height; this.menu.position(); + if ( this.popup ) { + this.popup.updateDimensions(); + } this.emit( 'resize' ); } }; @@ -4316,7 +4364,7 @@ OO.ui.CapsuleMultiselectWidget.prototype.setDisabled = function ( disabled ) { OO.ui.CapsuleMultiselectWidget.prototype.focus = function () { if ( !this.isDisabled() ) { if ( this.popup ) { - this.popup.setSize( this.$handle.width() ); + this.popup.setSize( this.$handle.outerWidth() ); this.popup.toggle( true ); OO.ui.findFocusable( this.popup.$element ).focus(); } else { @@ -4329,10 +4377,21 @@ OO.ui.CapsuleMultiselectWidget.prototype.focus = function () { }; /** + * The old name for the CapsuleMultiselectWidget widget, provided for backwards-compatibility. + * * @class + * @extends OO.ui.CapsuleMultiselectWidget + * + * @constructor * @deprecated since 0.17.3; use OO.ui.CapsuleMultiselectWidget instead */ -OO.ui.CapsuleMultiSelectWidget = OO.ui.CapsuleMultiselectWidget; +OO.ui.CapsuleMultiSelectWidget = function OoUiCapsuleMultiSelectWidget() { + OO.ui.warnDeprecation( 'CapsuleMultiSelectWidget is deprecated. Use the CapsuleMultiselectWidget instead.' ); + // Parent constructor + OO.ui.CapsuleMultiSelectWidget.parent.apply( this, arguments ); +}; + +OO.inheritClass( OO.ui.CapsuleMultiSelectWidget, OO.ui.CapsuleMultiselectWidget ); /** * SelectFileWidgets allow for selecting files, using the HTML5 File API. These diff --git a/resources/lib/oojs-ui/oojs-ui-windows-apex.css b/resources/lib/oojs-ui/oojs-ui-windows-apex.css index ff013a0c79..4353b43362 100644 --- a/resources/lib/oojs-ui/oojs-ui-windows-apex.css +++ b/resources/lib/oojs-ui/oojs-ui-windows-apex.css @@ -1,12 +1,12 @@ /*! - * OOjs UI v0.18.3 + * OOjs UI v0.19.5 * https://www.mediawiki.org/wiki/OOjs_UI * * Copyright 2011–2017 OOjs UI Team and other contributors. * Released under the MIT license * http://oojs.mit-license.org * - * Date: 2017-01-04T00:22:45Z + * Date: 2017-03-07T22:57:06Z */ .oo-ui-actionWidget.oo-ui-pendingElement-pending { background-image: /* @embed */ url(themes/apex/images/textures/pending.gif); diff --git a/resources/lib/oojs-ui/oojs-ui-windows-mediawiki.css b/resources/lib/oojs-ui/oojs-ui-windows-mediawiki.css index de26ac0873..823b1a1db0 100644 --- a/resources/lib/oojs-ui/oojs-ui-windows-mediawiki.css +++ b/resources/lib/oojs-ui/oojs-ui-windows-mediawiki.css @@ -1,12 +1,12 @@ /*! - * OOjs UI v0.18.3 + * OOjs UI v0.19.5 * https://www.mediawiki.org/wiki/OOjs_UI * * Copyright 2011–2017 OOjs UI Team and other contributors. * Released under the MIT license * http://oojs.mit-license.org * - * Date: 2017-01-04T00:22:45Z + * Date: 2017-03-07T22:57:06Z */ .oo-ui-window { background: transparent; @@ -265,22 +265,22 @@ .oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-buttonElement-frameless:active { background-color: rgba(0, 0, 0, 0.1); } -.oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-buttonElement-frameless.oo-ui-flaggedElement-progressive .oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-buttonElement-frameless.oo-ui-flaggedElement-constructive:hover, -.oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-buttonElement-frameless.oo-ui-flaggedElement-progressive .oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-buttonElement-frameless.oo-ui-flaggedElement-constructive:hover, -.oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-buttonElement-frameless.oo-ui-flaggedElement-progressive .oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-buttonElement-frameless.oo-ui-flaggedElement-constructive:hover, -.oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-buttonElement-frameless.oo-ui-flaggedElement-progressive .oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-buttonElement-frameless.oo-ui-flaggedElement-constructive:hover { +.oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-buttonElement-frameless.oo-ui-flaggedElement-progressive:hover, +.oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-buttonElement-frameless.oo-ui-flaggedElement-progressive:hover, +.oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-buttonElement-frameless.oo-ui-flaggedElement-constructive:hover, +.oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-buttonElement-frameless.oo-ui-flaggedElement-constructive:hover { background-color: rgba(8, 126, 204, 0.05); } -.oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-buttonElement-frameless.oo-ui-flaggedElement-progressive .oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-buttonElement-frameless.oo-ui-flaggedElement-constructive:active, -.oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-buttonElement-frameless.oo-ui-flaggedElement-progressive .oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-buttonElement-frameless.oo-ui-flaggedElement-constructive:active, -.oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-buttonElement-frameless.oo-ui-flaggedElement-progressive .oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-buttonElement-frameless.oo-ui-flaggedElement-constructive:active, -.oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-buttonElement-frameless.oo-ui-flaggedElement-progressive .oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-buttonElement-frameless.oo-ui-flaggedElement-constructive:active { +.oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-buttonElement-frameless.oo-ui-flaggedElement-progressive:active, +.oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-buttonElement-frameless.oo-ui-flaggedElement-progressive:active, +.oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-buttonElement-frameless.oo-ui-flaggedElement-constructive:active, +.oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-buttonElement-frameless.oo-ui-flaggedElement-constructive:active { background-color: rgba(8, 126, 204, 0.1); } -.oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-buttonElement-frameless.oo-ui-flaggedElement-progressive .oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-buttonElement-frameless.oo-ui-flaggedElement-constructive .oo-ui-labelElement-label, -.oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-buttonElement-frameless.oo-ui-flaggedElement-progressive .oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-buttonElement-frameless.oo-ui-flaggedElement-constructive .oo-ui-labelElement-label, -.oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-buttonElement-frameless.oo-ui-flaggedElement-progressive .oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-buttonElement-frameless.oo-ui-flaggedElement-constructive .oo-ui-labelElement-label, -.oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-buttonElement-frameless.oo-ui-flaggedElement-progressive .oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-buttonElement-frameless.oo-ui-flaggedElement-constructive .oo-ui-labelElement-label { +.oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-buttonElement-frameless.oo-ui-flaggedElement-progressive .oo-ui-labelElement-label, +.oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-buttonElement-frameless.oo-ui-flaggedElement-progressive .oo-ui-labelElement-label, +.oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-buttonElement-frameless.oo-ui-flaggedElement-constructive .oo-ui-labelElement-label, +.oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-buttonElement-frameless.oo-ui-flaggedElement-constructive .oo-ui-labelElement-label { font-weight: bold; } .oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-buttonElement-frameless.oo-ui-flaggedElement-destructive:hover, @@ -384,5 +384,5 @@ max-height: calc(100% - 2em); border: 1px solid #a2a9b1; border-radius: 2px; - box-shadow: 0 0.15em 0 0 rgba(0, 0, 0, 0.15); + box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.25); } diff --git a/resources/lib/oojs-ui/oojs-ui-windows.js b/resources/lib/oojs-ui/oojs-ui-windows.js index be818419a2..586efb0d72 100644 --- a/resources/lib/oojs-ui/oojs-ui-windows.js +++ b/resources/lib/oojs-ui/oojs-ui-windows.js @@ -1,12 +1,12 @@ /*! - * OOjs UI v0.18.3 + * OOjs UI v0.19.5 * https://www.mediawiki.org/wiki/OOjs_UI * * Copyright 2011–2017 OOjs UI Team and other contributors. * Released under the MIT license * http://oojs.mit-license.org * - * Date: 2017-01-04T00:22:40Z + * Date: 2017-03-07T22:57:01Z */ ( function ( OO ) { @@ -203,6 +203,7 @@ OO.ui.ActionWidget.prototype.toggle = function () { * } * OO.inheritClass( MyProcessDialog, OO.ui.ProcessDialog ); * MyProcessDialog.static.title = 'An action set in a process dialog'; + * MyProcessDialog.static.name = 'myProcessDialog'; * // An action set that uses modes ('edit' and 'help' mode, in this example). * MyProcessDialog.static.actions = [ * { action: 'continue', modes: 'edit', label: 'Continue', flags: [ 'primary', 'constructive' ] }, @@ -1442,6 +1443,41 @@ OO.ui.WindowManager.prototype.closeWindow = function ( win, data ) { * See the [OOjs ui documentation on MediaWiki] [2] for examples. * [2]: https://www.mediawiki.org/wiki/OOjs_UI/Windows/Window_managers * + * This function can be called in two manners: + * + * 1. `.addWindows( [ windowA, windowB, ... ] )` (where `windowA`, `windowB` are OO.ui.Window objects) + * + * This syntax registers windows under the symbolic names defined in their `.static.name` + * properties. For example, if `windowA.constructor.static.name` is `'nameA'`, calling + * `.openWindow( 'nameA' )` afterwards will open the window `windowA`. This syntax requires the + * static name to be set, otherwise an exception will be thrown. + * + * This is the recommended way, as it allows for an easier switch to using a window factory. + * + * 2. `.addWindows( { nameA: windowA, nameB: windowB, ... } )` + * + * This syntax registers windows under the explicitly given symbolic names. In this example, + * calling `.openWindow( 'nameA' )` afterwards will open the window `windowA`, regardless of what + * its `.static.name` is set to. The static name is not required to be set. + * + * This should only be used if you need to override the default symbolic names. + * + * Example: + * + * var windowManager = new OO.ui.WindowManager(); + * $( 'body' ).append( windowManager.$element ); + * + * // Add a window under the default name: see OO.ui.MessageDialog.static.name + * windowManager.addWindows( [ new OO.ui.MessageDialog() ] ); + * // Add a window under an explicit name + * windowManager.addWindows( { myMessageDialog: new OO.ui.MessageDialog() } ); + * + * // Open window by default name + * windowManager.openWindow( 'message' ); + * // Open window by explicitly given name + * windowManager.openWindow( 'myMessageDialog' ); + * + * * @param {Object.<string,OO.ui.Window>|OO.ui.Window[]} windows An array of window objects specified * by reference, symbolic name, or explicitly defined symbolic names. * @throws {Error} An error is thrown if a window is added by symbolic name, but has neither an @@ -1455,11 +1491,8 @@ OO.ui.WindowManager.prototype.addWindows = function ( windows ) { list = {}; for ( i = 0, len = windows.length; i < len; i++ ) { name = windows[ i ].constructor.static.name; - if ( typeof name !== 'string' ) { - throw new Error( 'Cannot add window' ); - } if ( !name ) { - OO.ui.warnDeprecation( 'OO.ui.WindowManager#addWindows: Windows must have a `name` static property defined.' ); + throw new Error( 'Windows must have a `name` static property defined.' ); } list[ name ] = windows[ i ]; } @@ -2320,6 +2353,7 @@ OO.ui.Window.prototype.teardown = function ( data ) { * MyDialog.parent.call( this, config ); * } * OO.inheritClass( MyDialog, OO.ui.Dialog ); + * MyDialog.static.name = 'myDialog'; * MyDialog.prototype.initialize = function () { * MyDialog.parent.prototype.initialize.call( this ); * this.content = new OO.ui.PanelLayout( { padded: true, expanded: false } ); @@ -2365,7 +2399,6 @@ OO.ui.Dialog = function OoUiDialog( config ) { // Events this.actions.connect( this, { click: 'onActionClick', - resize: 'onActionResize', change: 'onActionsChange' } ); @@ -2449,7 +2482,7 @@ OO.ui.Dialog.prototype.onDialogKeyDown = function ( e ) { this.executeAction( '' ); e.preventDefault(); e.stopPropagation(); - } else if ( e.which === OO.ui.Keys.ENTER && e.ctrlKey ) { + } else if ( e.which === OO.ui.Keys.ENTER && ( e.ctrlKey || e.metaKey ) ) { actions = this.actions.get( { flags: 'primary', visible: true, disabled: false } ); if ( actions.length > 0 ) { this.executeAction( actions[ 0 ].getAction() ); @@ -2459,16 +2492,6 @@ OO.ui.Dialog.prototype.onDialogKeyDown = function ( e ) { } }; -/** - * Handle action resized events. - * - * @private - * @param {OO.ui.ActionWidget} action Action that was resized - */ -OO.ui.Dialog.prototype.onActionResize = function () { - // Override in subclass -}; - /** * Handle action click events. * @@ -2698,11 +2721,23 @@ OO.inheritClass( OO.ui.MessageDialog, OO.ui.Dialog ); /* Static Properties */ +/** + * @static + * @inheritdoc + */ OO.ui.MessageDialog.static.name = 'message'; +/** + * @static + * @inheritdoc + */ OO.ui.MessageDialog.static.size = 'small'; -OO.ui.MessageDialog.static.verbose = false; +/** + * @static + * @deprecated since v0.18.4 as default; TODO: Remove + */ +OO.ui.MessageDialog.static.verbose = true; /** * Dialog title. @@ -2728,8 +2763,12 @@ OO.ui.MessageDialog.static.title = null; */ OO.ui.MessageDialog.static.message = null; -// Note that OO.ui.alert() and OO.ui.confirm() rely on these. +/** + * @static + * @inheritdoc + */ OO.ui.MessageDialog.static.actions = [ + // Note that OO.ui.alert() and OO.ui.confirm() rely on these. { action: 'accept', label: OO.ui.deferMsg( 'ooui-dialog-message-accept' ), flags: 'primary' }, { action: 'reject', label: OO.ui.deferMsg( 'ooui-dialog-message-reject' ), flags: 'safe' } ]; @@ -2750,14 +2789,6 @@ OO.ui.MessageDialog.prototype.setManager = function ( manager ) { return this; }; -/** - * @inheritdoc - */ -OO.ui.MessageDialog.prototype.onActionResize = function ( action ) { - this.fitActions(); - return OO.ui.MessageDialog.parent.prototype.onActionResize.call( this, action ); -}; - /** * Handle window resized events. * @@ -2810,7 +2841,6 @@ OO.ui.MessageDialog.prototype.getActionProcess = function ( action ) { * @param {Object} [data] Dialog opening data * @param {jQuery|string|Function|null} [data.title] Description of the action being confirmed * @param {jQuery|string|Function|null} [data.message] Description of the action's consequence - * @param {boolean} [data.verbose] Message is verbose and should be styled as a long message * @param {Object[]} [data.actions] List of OO.ui.ActionOptionWidget configuration options for each * action item */ @@ -2826,6 +2856,7 @@ OO.ui.MessageDialog.prototype.getSetupProcess = function ( data ) { this.message.setLabel( data.message !== undefined ? data.message : this.constructor.static.message ); + // @deprecated since v0.18.4 as default; TODO: Remove and make default instead. this.message.$element.toggleClass( 'oo-ui-messageDialog-message-verbose', data.verbose !== undefined ? data.verbose : this.constructor.static.verbose @@ -3017,6 +3048,7 @@ OO.ui.MessageDialog.prototype.fitActions = function () { * } * OO.inheritClass( MyProcessDialog, OO.ui.ProcessDialog ); * + * MyProcessDialog.static.name = 'myProcessDialog'; * MyProcessDialog.static.title = 'Process dialog'; * MyProcessDialog.static.actions = [ * { action: 'save', label: 'Done', flags: 'primary' }, @@ -3095,16 +3127,6 @@ OO.ui.ProcessDialog.prototype.onRetryButtonClick = function () { this.executeAction( this.currentAction ); }; -/** - * @inheritdoc - */ -OO.ui.ProcessDialog.prototype.onActionResize = function ( action ) { - if ( this.actions.isSpecial( action ) ) { - this.fitLabel(); - } - return OO.ui.ProcessDialog.parent.prototype.onActionResize.call( this, action ); -}; - /** * @inheritdoc */ @@ -3167,7 +3189,9 @@ OO.ui.ProcessDialog.prototype.getActionWidgets = function ( actions ) { for ( i = 0, len = actions.length; i < len; i++ ) { config = $.extend( { framed: !OO.ui.isMobile() }, actions[ i ] ); - if ( isMobile && ( config.flags === 'back' || config.flags.indexOf( 'back' ) !== -1 ) ) { + if ( isMobile && + ( config.flags === 'back' || ( Array.isArray( config.flags ) && config.flags.indexOf( 'back' ) !== -1 ) ) + ) { $.extend( config, { icon: 'previous', label: '' @@ -3371,9 +3395,7 @@ OO.ui.getWindowManager = function () { if ( !OO.ui.windowManager ) { OO.ui.windowManager = new OO.ui.WindowManager(); $( 'body' ).append( OO.ui.windowManager.$element ); - OO.ui.windowManager.addWindows( { - messageDialog: new OO.ui.MessageDialog() - } ); + OO.ui.windowManager.addWindows( [ new OO.ui.MessageDialog() ] ); } return OO.ui.windowManager; }; @@ -3395,9 +3417,8 @@ OO.ui.getWindowManager = function () { * @return {jQuery.Promise} Promise resolved when the user closes the dialog */ OO.ui.alert = function ( text, options ) { - return OO.ui.getWindowManager().openWindow( 'messageDialog', $.extend( { + return OO.ui.getWindowManager().openWindow( 'message', $.extend( { message: text, - verbose: true, actions: [ OO.ui.MessageDialog.static.actions[ 0 ] ] }, options ) ).then( function ( opened ) { return opened.then( function ( closing ) { @@ -3432,9 +3453,8 @@ OO.ui.alert = function ( text, options ) { * `false`. */ OO.ui.confirm = function ( text, options ) { - return OO.ui.getWindowManager().openWindow( 'messageDialog', $.extend( { - message: text, - verbose: true + return OO.ui.getWindowManager().openWindow( 'message', $.extend( { + message: text }, options ) ).then( function ( opened ) { return opened.then( function ( closing ) { return closing.then( function ( data ) { @@ -3463,7 +3483,7 @@ OO.ui.confirm = function ( text, options ) { * * @param {jQuery|string} text Message text to display * @param {Object} [options] Additional options, see OO.ui.MessageDialog#getSetupProcess - * @cfg {Object} [textInput] Additional options for text input widget, see OO.ui.TextInputWidget + * @param {Object} [options.textInput] Additional options for text input widget, see OO.ui.TextInputWidget * @return {jQuery.Promise} Promise resolved when the user closes the dialog. If the user chose to * confirm, the promise will resolve with the value of the text input widget; otherwise, it will * resolve to `null`. @@ -3478,9 +3498,8 @@ OO.ui.prompt = function ( text, options ) { // TODO: This is a little hacky, and could be done by extending MessageDialog instead. - return manager.openWindow( 'messageDialog', $.extend( { - message: textField.$element, - verbose: true + return manager.openWindow( 'message', $.extend( { + message: textField.$element }, options ) ).then( function ( opened ) { // After ready textInput.on( 'enter', function () { diff --git a/resources/lib/oojs-ui/themes/apex/icons-content.json b/resources/lib/oojs-ui/themes/apex/icons-content.json index 394ec85ea7..0cd901f62b 100644 --- a/resources/lib/oojs-ui/themes/apex/icons-content.json +++ b/resources/lib/oojs-ui/themes/apex/icons-content.json @@ -10,6 +10,10 @@ "ltr": "images/icons/articleRedirect-ltr.svg", "rtl": "images/icons/articleRedirect-rtl.svg" } }, + "journal": { "file": { + "ltr": "images/icons/journal-ltr.svg", + "rtl": "images/icons/journal-rtl.svg" + } }, "upload": { "file": { "ltr": "images/icons/upload-ltr.svg", "rtl": "images/icons/upload-rtl.svg" diff --git a/resources/lib/oojs-ui/themes/apex/icons-editing-advanced.json b/resources/lib/oojs-ui/themes/apex/icons-editing-advanced.json index ec755a1d0c..ea2e2ecdc4 100644 --- a/resources/lib/oojs-ui/themes/apex/icons-editing-advanced.json +++ b/resources/lib/oojs-ui/themes/apex/icons-editing-advanced.json @@ -56,6 +56,7 @@ "rtl": "images/icons/articleRedirect-rtl.svg" } }, "searchCaseSensitive": { "file": "images/icons/case-sensitive.svg" }, + "searchDiacritics": { "file": "images/icons/diacritic.svg" }, "searchRegularExpression": { "file": "images/icons/regular-expression.svg" }, "specialCharacter": { "file": "images/icons/specialCharacter.svg" }, "table": { "file": "images/icons/table.svg" }, diff --git a/resources/lib/oojs-ui/themes/apex/icons-editing-styling.json b/resources/lib/oojs-ui/themes/apex/icons-editing-styling.json index 5b35e74a60..718f9ffa68 100644 --- a/resources/lib/oojs-ui/themes/apex/icons-editing-styling.json +++ b/resources/lib/oojs-ui/themes/apex/icons-editing-styling.json @@ -36,6 +36,10 @@ "os": "images/icons/bold-cyrl-be.svg" } } }, + "highlight": { "file": { + "ltr": "images/icons/highlight-ltr.svg", + "rtl": "images/icons/highlight-rtl.svg" + } }, "italic": { "file": { "default": "images/icons/italic-a.svg", "lang": { diff --git a/resources/lib/oojs-ui/themes/apex/icons-interactions.json b/resources/lib/oojs-ui/themes/apex/icons-interactions.json index 449cb77667..ec18f29ddb 100644 --- a/resources/lib/oojs-ui/themes/apex/icons-interactions.json +++ b/resources/lib/oojs-ui/themes/apex/icons-interactions.json @@ -8,8 +8,9 @@ } }, "images": { - "beta": { "file": "images/icons/beta.svg" }, - "betaLaunch": { "file": "images/icons/logo-wikimediaDiscovery.svg" }, + "add": { "file": "images/icons/add.svg" }, + "beta": { "file": "images/icons/beta.svg", "deprecated": "Deprecated since v0.18.3, don't use." }, + "betaLaunch": { "file": "images/icons/logo-wikimediaDiscovery.svg", "deprecated": "Moved since v0.18.3, use 'logoWikimediaDiscovery' from the 'Wikimedia' pack instead." }, "bookmark": { "file": { "ltr": "images/icons/bookmark-ltr.svg", "rtl": "images/icons/bookmark-rtl.svg" @@ -20,6 +21,10 @@ } }, "clear": { "file": "images/icons/clear.svg" }, "clock": { "file": "images/icons/clock.svg" }, + "feedback": { "file": { + "ltr": "images/icons/feedback-ltr.svg", + "rtl": "images/icons/feedback-rtl.svg" + } }, "funnel": { "file": { "ltr": "images/icons/funnel-ltr.svg", "rtl": "images/icons/funnel-rtl.svg" @@ -45,7 +50,8 @@ "ltr": "images/icons/printer-ltr.svg", "rtl": "images/icons/printer-rtl.svg" } }, - "ribbonPrize": { "file": "images/icons/ribbonPrize.svg" }, + "ribbonPrize": { "file": "images/icons/ribbonPrize.svg", "deprecated": "Deprecated since v0.18.3, don't use." }, + "subtract": { "file": "images/icons/subtract.svg" }, "sun": { "file": { "ltr": "images/icons/sun-ltr.svg", "rtl": "images/icons/sun-rtl.svg" diff --git a/resources/lib/oojs-ui/themes/apex/icons-moderation.json b/resources/lib/oojs-ui/themes/apex/icons-moderation.json index b5dff27496..c8385e4dc2 100644 --- a/resources/lib/oojs-ui/themes/apex/icons-moderation.json +++ b/resources/lib/oojs-ui/themes/apex/icons-moderation.json @@ -6,7 +6,7 @@ "blockUndo": { "file": { "ltr": "images/icons/unBlock-ltr.svg", "rtl": "images/icons/unBlock-rtl.svg" - } }, + }, "deprecated": "Renamed since v0.18.3, use 'unBlock' instead." }, "unBlock": { "file": { "ltr": "images/icons/unBlock-ltr.svg", "rtl": "images/icons/unBlock-rtl.svg" @@ -18,7 +18,7 @@ "flagUndo": { "file": { "ltr": "images/icons/unFlag-ltr.svg", "rtl": "images/icons/unFlag-rtl.svg" - } }, + }, "deprecated": "Renamed since v0.18.3, use 'unFlag' instead." }, "unFlag": { "file": { "ltr": "images/icons/unFlag-ltr.svg", "rtl": "images/icons/unFlag-rtl.svg" @@ -29,6 +29,10 @@ "rtl": "images/icons/unLock-rtl.svg" } }, "star": { "file": "images/icons/star.svg" }, + "halfStar": { "file": { + "ltr": "images/icons/halfStar-ltr.svg", + "rtl": "images/icons/halfStar-rtl.svg" + } }, "unStar": { "file": "images/icons/unStar.svg" }, "trash": { "file": "images/icons/trash.svg" }, "unTrash": { "file": { @@ -38,7 +42,7 @@ "trashUndo": { "file": { "ltr": "images/icons/unTrash-ltr.svg", "rtl": "images/icons/unTrash-rtl.svg" - } }, + }, "deprecated": "Renamed since v0.18.3, use 'unTrash' instead." }, "ongoingConversation": { "file": { "ltr": "images/icons/ongoingConversation-ltr.svg", diff --git a/resources/lib/oojs-ui/themes/apex/icons.json b/resources/lib/oojs-ui/themes/apex/icons.json index b5fbbed0cd..f4a2dc9269 100644 --- a/resources/lib/oojs-ui/themes/apex/icons.json +++ b/resources/lib/oojs-ui/themes/apex/icons.json @@ -2,7 +2,7 @@ "prefix": "oo-ui-icon", "intro": "@import '../../../../src/styles/common';", "images": { - "add": { "file": "images/icons/add.svg" }, + "add": { "file": "images/icons/add.svg", "deprecated": "Moved since v0.19.5, use from the 'interactive' pack instead." }, "advanced": { "file": "images/icons/advanced.svg" }, "alert": { "file": "images/icons/alert.svg" }, "cancel": { "file": "images/icons/cancel.svg" }, diff --git a/resources/lib/oojs-ui/themes/apex/images/icons/add-invert.png b/resources/lib/oojs-ui/themes/apex/images/icons/add-invert.png new file mode 100644 index 0000000000..8deeddf49e Binary files /dev/null and b/resources/lib/oojs-ui/themes/apex/images/icons/add-invert.png differ diff --git a/resources/lib/oojs-ui/themes/apex/images/icons/add-invert.svg b/resources/lib/oojs-ui/themes/apex/images/icons/add-invert.svg new file mode 100644 index 0000000000..a2d49a101f --- /dev/null +++ b/resources/lib/oojs-ui/themes/apex/images/icons/add-invert.svg @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="utf-8"?> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#FFFFFF"> + <g id="add"> + <path id="plus" d="M13 6h-2v5H6v2h5v5h2v-5h5v-2h-5z"/> + </g> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/apex/images/icons/beta-invert.svg b/resources/lib/oojs-ui/themes/apex/images/icons/beta-invert.svg index 4d8c673261..a140a5ab47 100644 --- a/resources/lib/oojs-ui/themes/apex/images/icons/beta-invert.svg +++ b/resources/lib/oojs-ui/themes/apex/images/icons/beta-invert.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #FFFFFF }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#FFFFFF"> <path d="M12 4c-4.4 0-8 3.6-8 8s3.6 8 8 8 8-3.6 8-8-3.6-8-8-8zm4 12l-3-2-1 4-1-4-3 2 2-3-4-1 4-1-2-3 3 2 1-4 1 4 3-2-2 3 4 1-4 1 2 3z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/apex/images/icons/bookmark-ltr-invert.svg b/resources/lib/oojs-ui/themes/apex/images/icons/bookmark-ltr-invert.svg index bf39564a3f..80981668eb 100644 --- a/resources/lib/oojs-ui/themes/apex/images/icons/bookmark-ltr-invert.svg +++ b/resources/lib/oojs-ui/themes/apex/images/icons/bookmark-ltr-invert.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #FFFFFF }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#FFFFFF"> <path d="M15 5H8c-1.1 0-2 .9-2 2v3h3v11l4-3 4 3V7c0-1.1-.9-2-2-2zM9 9H7V7c0-.6.4-1 1-1h1v3z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/apex/images/icons/bookmark-rtl-invert.svg b/resources/lib/oojs-ui/themes/apex/images/icons/bookmark-rtl-invert.svg index 729b8c2eda..bc3ef4e851 100644 --- a/resources/lib/oojs-ui/themes/apex/images/icons/bookmark-rtl-invert.svg +++ b/resources/lib/oojs-ui/themes/apex/images/icons/bookmark-rtl-invert.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #FFFFFF }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#FFFFFF"> <path d="M8 5h7c1.1 0 2 .9 2 2v3h-3v11l-4-3-4 3V7c0-1.1.9-2 2-2zm6 4h2V7c0-.6-.4-1-1-1h-1v3z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/apex/images/icons/browser-ltr-invert.svg b/resources/lib/oojs-ui/themes/apex/images/icons/browser-ltr-invert.svg index 762e641880..792b4aa1bd 100644 --- a/resources/lib/oojs-ui/themes/apex/images/icons/browser-ltr-invert.svg +++ b/resources/lib/oojs-ui/themes/apex/images/icons/browser-ltr-invert.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #FFFFFF }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#FFFFFF"> <path d="M3 6v11c0 1.7 1.3 3 3 3h15V6H3zm2.5 1C6.3 7 7 7.7 7 8.5S6.3 10 5.5 10 4 9.3 4 8.5 4.7 7 5.5 7zM20 19H6c-1.1 0-2-.9-2-2v-6h16v8z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/apex/images/icons/browser-rtl-invert.svg b/resources/lib/oojs-ui/themes/apex/images/icons/browser-rtl-invert.svg index d6378bf673..079a62c179 100644 --- a/resources/lib/oojs-ui/themes/apex/images/icons/browser-rtl-invert.svg +++ b/resources/lib/oojs-ui/themes/apex/images/icons/browser-rtl-invert.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #FFFFFF }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#FFFFFF"> <path d="M21 6v11c0 1.7-1.3 3-3 3H3V6h18zm-2.5 1c-.8 0-1.5.7-1.5 1.5s.7 1.5 1.5 1.5S20 9.3 20 8.5 19.3 7 18.5 7zM4 19h14c1.1 0 2-.9 2-2v-6H4v8z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/apex/images/icons/case-sensitive.svg b/resources/lib/oojs-ui/themes/apex/images/icons/case-sensitive.svg index 46cd9b0fc9..749e38ffd5 100644 --- a/resources/lib/oojs-ui/themes/apex/images/icons/case-sensitive.svg +++ b/resources/lib/oojs-ui/themes/apex/images/icons/case-sensitive.svg @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"> - <g id="regular-expression"> + <g id="case-sensitive"> <path id="upper-case" d="M7.53 7L4 17h2.063l.72-2.406h3.624l.72 2.406h2.062L9.65 7h-2.12zm1.064 1.53L9.938 13H7.25l1.344-4.47z"/> <path id="lower-case" d="M18.55 17l-.184-1.035h-.055c-.35.44-.71.747-1.08.92-.37.167-.85.25-1.44.25-.564 0-.955-.208-1.377-.625-.42-.418-.627-1.012-.627-1.784 0-.808.283-1.403.846-1.784.568-.386 1.193-.607 2.208-.64l1.322-.04v-.335c0-.772-.396-1.158-1.187-1.158-.61 0-1.325.18-2.147.55l-.688-1.4c.877-.46 1.85-.69 2.916-.69 1.024 0 1.59.22 2.134.662.545.445.818 1.12.818 2.03V17h-1.45m-.394-3.527l-.802.027c-.604.018-1.054.127-1.35.327-.294.2-.442.504-.442.912 0 .58.336.87 1.008.87.48 0 .865-.137 1.152-.414.29-.277.436-.645.436-1.103v-.627"/> </g> diff --git a/resources/lib/oojs-ui/themes/apex/images/icons/clear-invert.svg b/resources/lib/oojs-ui/themes/apex/images/icons/clear-invert.svg index 073820529a..09df1d3a71 100644 --- a/resources/lib/oojs-ui/themes/apex/images/icons/clear-invert.svg +++ b/resources/lib/oojs-ui/themes/apex/images/icons/clear-invert.svg @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #FFFFFF }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#FFFFFF"> <g id="clear"> <path id="circle-with-cross" d="M12 5c-4.4 0-8 3.6-8 8s3.6 8 8 8 8-3.6 8-8-3.6-8-8-8zm4 11l-1 1-3-3-3 3-1-1 3-3-3-3 1-1 3 3 3-3 1 1-3 3 3 3z"/> </g> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/apex/images/icons/clock-invert.svg b/resources/lib/oojs-ui/themes/apex/images/icons/clock-invert.svg index 322fc31f3d..c11e11ee06 100644 --- a/resources/lib/oojs-ui/themes/apex/images/icons/clock-invert.svg +++ b/resources/lib/oojs-ui/themes/apex/images/icons/clock-invert.svg @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #FFFFFF }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#FFFFFF"> <g id="clock"> <path id="circle" d="M12 5a7 7 0 1 0 0 14 7 7 0 0 0 0-14zm0 1.25a5.75 5.75 0 0 1 0 11.5 5.75 5.75 0 0 1 0-11.5z"/> <path id="hands" d="M15.605 14.08s-1.674-1.36-2.81-2.15c.504-1.683 1.194-4.605 1.194-4.605s-3.057 3.765-3.427 4.703c-.325.82 1.024 1.55 1.647 1.178 1.335.387 3.394.873 3.394.873z"/> </g> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/apex/images/icons/close.svg b/resources/lib/oojs-ui/themes/apex/images/icons/close.svg index d058d65b31..b379e18573 100644 --- a/resources/lib/oojs-ui/themes/apex/images/icons/close.svg +++ b/resources/lib/oojs-ui/themes/apex/images/icons/close.svg @@ -1,6 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"> - <g id="close"> - <path id="cross" d="M17.717 7.697l-1.414-1.414L12 10.586 7.697 6.283 6.283 7.697 10.586 12l-4.303 4.303 1.414 1.414L12 13.414l4.303 4.303 1.414-1.414L13.414 12z"/> - </g> + <path d="M17.717 7.697l-1.414-1.414L12 10.586 7.697 6.283 6.283 7.697 10.586 12l-4.303 4.303 1.414 1.414L12 13.414l4.303 4.303 1.414-1.414L13.414 12z"/> </svg> diff --git a/resources/lib/oojs-ui/themes/apex/images/icons/diacritic.png b/resources/lib/oojs-ui/themes/apex/images/icons/diacritic.png new file mode 100644 index 0000000000..2359b1965a Binary files /dev/null and b/resources/lib/oojs-ui/themes/apex/images/icons/diacritic.png differ diff --git a/resources/lib/oojs-ui/themes/apex/images/icons/diacritic.svg b/resources/lib/oojs-ui/themes/apex/images/icons/diacritic.svg new file mode 100644 index 0000000000..4565101324 --- /dev/null +++ b/resources/lib/oojs-ui/themes/apex/images/icons/diacritic.svg @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="utf-8"?> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"> + <g id="diacritic"> + <path id="letter-a" d="M13.55 17l-.184-1.035h-.055c-.35.44-.71.747-1.08.92-.37.167-.85.25-1.44.25-.563 0-.954-.208-1.376-.625-.42-.418-.627-1.012-.627-1.784 0-.808.283-1.403.846-1.784.568-.386 1.193-.607 2.208-.64l1.323-.04v-.335c0-.772-.396-1.158-1.187-1.158-.61 0-1.325.18-2.147.55l-.69-1.4c.878-.46 1.85-.69 2.917-.69 1.024 0 1.59.22 2.134.66.546.446.82 1.12.82 2.03V17h-1.45m-.395-3.527l-.802.027c-.604.018-1.054.127-1.35.327-.294.2-.442.504-.442.912 0 .58.337.87 1.01.87.48 0 .864-.138 1.15-.415.29-.277.437-.645.437-1.103v-.627"/> + <path id="tilde" d="M12.012 7.527l-.466-.306a.832.832 0 0 1-.085-.048c-.264-.17-.467-.256-.608-.256a.518.518 0 0 0-.466.256c-.107.17-.16.418-.16.743v.066H9.047c0-.748.144-1.326.432-1.733.294-.407.703-.61 1.228-.61.203 0 .406.037.61.114.208.073.43.19.66.357l.517.355c.124.082.237.146.338.19a.77.77 0 0 0 .288.066c.204 0 .362-.088.475-.265.113-.176.17-.42.17-.735v-.066h1.177c0 .75-.147 1.327-.44 1.735-.29.407-.695.61-1.22.61-.203 0-.4-.032-.593-.098a3.107 3.107 0 0 1-.678-.373z"/> + </g> +</svg> diff --git a/resources/lib/oojs-ui/themes/apex/images/icons/eye.png b/resources/lib/oojs-ui/themes/apex/images/icons/eye.png index 62c82c0b75..eb5f963534 100644 Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/eye.png and b/resources/lib/oojs-ui/themes/apex/images/icons/eye.png differ diff --git a/resources/lib/oojs-ui/themes/apex/images/icons/eye.svg b/resources/lib/oojs-ui/themes/apex/images/icons/eye.svg index 343e9cf5e2..cec85d0b83 100644 --- a/resources/lib/oojs-ui/themes/apex/images/icons/eye.svg +++ b/resources/lib/oojs-ui/themes/apex/images/icons/eye.svg @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8"?> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"> - <path d="M12 8c-5 0-11 6-11 6s6 6 11 6 11-6 11-6-6-6-11-6zm0 10c-2.2 0-4-1.8-4-4s1.8-4 4-4 4 1.8 4 4-1.8 4-4 4z"/> - <circle cx="12" cy="14" r="2"/> + <path id="sclera" d="M12 6C7 6 1 12 1 12s6 6 11 6 11-6 11-6-6-6-11-6zm0 10c-2.2 0-4-1.8-4-4s1.8-4 4-4 4 1.8 4 4-1.8 4-4 4z"/> + <circle id="pupil" r="2" cy="12" cx="12"/> </svg> diff --git a/resources/lib/oojs-ui/themes/apex/images/icons/feedback-ltr-invert.png b/resources/lib/oojs-ui/themes/apex/images/icons/feedback-ltr-invert.png new file mode 100644 index 0000000000..f49ebeb0a9 Binary files /dev/null and b/resources/lib/oojs-ui/themes/apex/images/icons/feedback-ltr-invert.png differ diff --git a/resources/lib/oojs-ui/themes/apex/images/icons/feedback-ltr-invert.svg b/resources/lib/oojs-ui/themes/apex/images/icons/feedback-ltr-invert.svg new file mode 100644 index 0000000000..d32e478137 --- /dev/null +++ b/resources/lib/oojs-ui/themes/apex/images/icons/feedback-ltr-invert.svg @@ -0,0 +1,4 @@ +<?xml version="1.0" encoding="utf-8"?> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#FFFFFF"> + <path d="M8.202 15.834l.568 2.101c.198.765 1.06 1.22 1.8 1.016.698-.193 1.125-.983.926-1.747l-.38-1.37H20L17.229 5 4.155 12.652c-.427.762.088 2.748.823 3.182h3.224z"/> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/apex/images/icons/feedback-ltr.png b/resources/lib/oojs-ui/themes/apex/images/icons/feedback-ltr.png new file mode 100644 index 0000000000..ac5787bdd5 Binary files /dev/null and b/resources/lib/oojs-ui/themes/apex/images/icons/feedback-ltr.png differ diff --git a/resources/lib/oojs-ui/themes/apex/images/icons/feedback-ltr.svg b/resources/lib/oojs-ui/themes/apex/images/icons/feedback-ltr.svg new file mode 100644 index 0000000000..0fdeed9a8e --- /dev/null +++ b/resources/lib/oojs-ui/themes/apex/images/icons/feedback-ltr.svg @@ -0,0 +1,4 @@ +<?xml version="1.0" encoding="utf-8"?> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"> + <path d="M8.202 15.834l.568 2.101c.198.765 1.06 1.22 1.8 1.016.698-.193 1.125-.983.926-1.747l-.38-1.37H20L17.229 5 4.155 12.652c-.427.762.088 2.748.823 3.182h3.224z"/> +</svg> diff --git a/resources/lib/oojs-ui/themes/apex/images/icons/feedback-rtl-invert.png b/resources/lib/oojs-ui/themes/apex/images/icons/feedback-rtl-invert.png new file mode 100644 index 0000000000..efba220b26 Binary files /dev/null and b/resources/lib/oojs-ui/themes/apex/images/icons/feedback-rtl-invert.png differ diff --git a/resources/lib/oojs-ui/themes/apex/images/icons/feedback-rtl-invert.svg b/resources/lib/oojs-ui/themes/apex/images/icons/feedback-rtl-invert.svg new file mode 100644 index 0000000000..14be7ff2df --- /dev/null +++ b/resources/lib/oojs-ui/themes/apex/images/icons/feedback-rtl-invert.svg @@ -0,0 +1,4 @@ +<?xml version="1.0" encoding="utf-8"?> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#FFFFFF"> + <path d="M15.798 15.834l-.568 2.101c-.198.765-1.06 1.22-1.8 1.016-.698-.193-1.125-.983-.926-1.747l.38-1.37H4L6.771 5l13.074 7.652c.427.762-.088 2.748-.823 3.182h-3.224z"/> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/apex/images/icons/feedback-rtl.png b/resources/lib/oojs-ui/themes/apex/images/icons/feedback-rtl.png new file mode 100644 index 0000000000..fdbe5e1e78 Binary files /dev/null and b/resources/lib/oojs-ui/themes/apex/images/icons/feedback-rtl.png differ diff --git a/resources/lib/oojs-ui/themes/apex/images/icons/feedback-rtl.svg b/resources/lib/oojs-ui/themes/apex/images/icons/feedback-rtl.svg new file mode 100644 index 0000000000..022d86d10f --- /dev/null +++ b/resources/lib/oojs-ui/themes/apex/images/icons/feedback-rtl.svg @@ -0,0 +1,4 @@ +<?xml version="1.0" encoding="utf-8"?> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"> + <path d="M15.798 15.834l-.568 2.101c-.198.765-1.06 1.22-1.8 1.016-.698-.193-1.125-.983-.926-1.747l.38-1.37H4L6.771 5l13.074 7.652c.427.762-.088 2.748-.823 3.182h-3.224z"/> +</svg> diff --git a/resources/lib/oojs-ui/themes/apex/images/icons/funnel-ltr-invert.svg b/resources/lib/oojs-ui/themes/apex/images/icons/funnel-ltr-invert.svg index 40d01b4bcd..d53377999f 100644 --- a/resources/lib/oojs-ui/themes/apex/images/icons/funnel-ltr-invert.svg +++ b/resources/lib/oojs-ui/themes/apex/images/icons/funnel-ltr-invert.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #FFFFFF }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#FFFFFF"> <path d="M11 13L5 6h15l-6 7v7c-1.7 0-3-1.3-3-3v-4z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/apex/images/icons/funnel-rtl-invert.svg b/resources/lib/oojs-ui/themes/apex/images/icons/funnel-rtl-invert.svg index d960a65032..f99e338053 100644 --- a/resources/lib/oojs-ui/themes/apex/images/icons/funnel-rtl-invert.svg +++ b/resources/lib/oojs-ui/themes/apex/images/icons/funnel-rtl-invert.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #FFFFFF }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#FFFFFF"> <path d="M14 13l6-7H5l6 7v7c1.7 0 3-1.3 3-3v-4z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/apex/images/icons/halfStar-ltr.png b/resources/lib/oojs-ui/themes/apex/images/icons/halfStar-ltr.png new file mode 100644 index 0000000000..d52a908076 Binary files /dev/null and b/resources/lib/oojs-ui/themes/apex/images/icons/halfStar-ltr.png differ diff --git a/resources/lib/oojs-ui/themes/apex/images/icons/halfStar-ltr.svg b/resources/lib/oojs-ui/themes/apex/images/icons/halfStar-ltr.svg new file mode 100644 index 0000000000..cfb17d8c52 --- /dev/null +++ b/resources/lib/oojs-ui/themes/apex/images/icons/halfStar-ltr.svg @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="utf-8"?> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"> + <path d="M12 7.4l1.7 3.6 4 .5-2.7 2.8.5 3.9-3.5-1.7-3.6 1.7.6-3.9-2.8-2.8 3.9-.5L12 7.4M12 4L9.2 9.6l-6.2.9 4.5 4.4L6.4 21l5.6-3 5.5 3-1-6.2 4.5-4.4-6.3-.9L12 4z"/> + <path d="M10.1 11l-3.9.5L9 14.3l-.6 3.9 3.6-1.7-.1-9z"/> +</svg> diff --git a/resources/lib/oojs-ui/themes/apex/images/icons/halfStar-rtl.png b/resources/lib/oojs-ui/themes/apex/images/icons/halfStar-rtl.png new file mode 100644 index 0000000000..4991b65cfd Binary files /dev/null and b/resources/lib/oojs-ui/themes/apex/images/icons/halfStar-rtl.png differ diff --git a/resources/lib/oojs-ui/themes/apex/images/icons/halfStar-rtl.svg b/resources/lib/oojs-ui/themes/apex/images/icons/halfStar-rtl.svg new file mode 100644 index 0000000000..c649b50512 --- /dev/null +++ b/resources/lib/oojs-ui/themes/apex/images/icons/halfStar-rtl.svg @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="utf-8"?> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"> + <path d="M12 7.4L10.3 11l-4 .5L9 14.3l-.5 3.9 3.5-1.7 3.6 1.7-.6-3.9 2.8-2.8-3.9-.5L12 7.4M12 4l2.8 5.6 6.2.9-4.5 4.4 1.1 6.1-5.6-3-5.5 3 1-6.2L3 10.4l6.3-.9L12 4z"/> + <path d="M12.1 7.5l1.8 3.5 3.9.5-2.8 2.8.6 3.9-3.6-1.7z"/> +</svg> diff --git a/resources/lib/oojs-ui/themes/apex/images/icons/heart-invert.svg b/resources/lib/oojs-ui/themes/apex/images/icons/heart-invert.svg index fc78226470..ab9e536369 100644 --- a/resources/lib/oojs-ui/themes/apex/images/icons/heart-invert.svg +++ b/resources/lib/oojs-ui/themes/apex/images/icons/heart-invert.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #FFFFFF }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#FFFFFF"> <path d="M15 7c-2 0-3 2-3 2s-1-2-3-2c-2.5 0-4 2-4 4 0 4 5 5 7 8 2-3 7-4 7-8 0-2-1.5-4-4-4z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/apex/images/icons/highlight-ltr.png b/resources/lib/oojs-ui/themes/apex/images/icons/highlight-ltr.png new file mode 100644 index 0000000000..73dd6b9c91 Binary files /dev/null and b/resources/lib/oojs-ui/themes/apex/images/icons/highlight-ltr.png differ diff --git a/resources/lib/oojs-ui/themes/apex/images/icons/highlight-ltr.svg b/resources/lib/oojs-ui/themes/apex/images/icons/highlight-ltr.svg new file mode 100644 index 0000000000..eb42923d68 --- /dev/null +++ b/resources/lib/oojs-ui/themes/apex/images/icons/highlight-ltr.svg @@ -0,0 +1,4 @@ +<?xml version="1.0" encoding="utf-8"?> +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" height="24" width="24"> + <path d="M5.066 18.236l.14-.244c.976-1.69 1.341-4.587.815-6.469l-.14-.507.2-.365L11.074 2l9.011 5.203-4.994 8.65-.204.354-.522.134c-1.893.485-4.22 2.252-5.195 3.94l-.14.244-.721-.416-1.041 1.89H3.914l1.893-3.336z" fill-rule="evenodd"/> +</svg> diff --git a/resources/lib/oojs-ui/themes/apex/images/icons/highlight-rtl.png b/resources/lib/oojs-ui/themes/apex/images/icons/highlight-rtl.png new file mode 100644 index 0000000000..2ea298305f Binary files /dev/null and b/resources/lib/oojs-ui/themes/apex/images/icons/highlight-rtl.png differ diff --git a/resources/lib/oojs-ui/themes/apex/images/icons/highlight-rtl.svg b/resources/lib/oojs-ui/themes/apex/images/icons/highlight-rtl.svg new file mode 100644 index 0000000000..9b1940ebef --- /dev/null +++ b/resources/lib/oojs-ui/themes/apex/images/icons/highlight-rtl.svg @@ -0,0 +1,4 @@ +<?xml version="1.0" encoding="utf-8"?> +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" height="24" width="24"> + <path d="M18.934 18.236l-.14-.244c-.976-1.69-1.341-4.587-.815-6.469l.14-.507-.2-.365L12.926 2 3.914 7.203l4.994 8.65.204.354.522.134c1.893.485 4.22 2.252 5.195 3.94l.14.244.721-.416 1.041 1.89h3.355l-1.893-3.336z" fill-rule="evenodd"/> +</svg> diff --git a/resources/lib/oojs-ui/themes/apex/images/icons/journal-ltr.png b/resources/lib/oojs-ui/themes/apex/images/icons/journal-ltr.png new file mode 100644 index 0000000000..2af4eb0e08 Binary files /dev/null and b/resources/lib/oojs-ui/themes/apex/images/icons/journal-ltr.png differ diff --git a/resources/lib/oojs-ui/themes/apex/images/icons/journal-ltr.svg b/resources/lib/oojs-ui/themes/apex/images/icons/journal-ltr.svg new file mode 100644 index 0000000000..8a83e4179e --- /dev/null +++ b/resources/lib/oojs-ui/themes/apex/images/icons/journal-ltr.svg @@ -0,0 +1,4 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"> + <path d="M16 8V7h-6v1h6zm-2 2V9h-4v1h4zM6 4h1v16H6V4zm2 0h10v13c0 1.7-1.3 3-3 3H8V4z"/> +</svg> diff --git a/resources/lib/oojs-ui/themes/apex/images/icons/journal-rtl.png b/resources/lib/oojs-ui/themes/apex/images/icons/journal-rtl.png new file mode 100644 index 0000000000..033ede1388 Binary files /dev/null and b/resources/lib/oojs-ui/themes/apex/images/icons/journal-rtl.png differ diff --git a/resources/lib/oojs-ui/themes/apex/images/icons/journal-rtl.svg b/resources/lib/oojs-ui/themes/apex/images/icons/journal-rtl.svg new file mode 100644 index 0000000000..2a07a44aeb --- /dev/null +++ b/resources/lib/oojs-ui/themes/apex/images/icons/journal-rtl.svg @@ -0,0 +1,4 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"> + <path d="M8 8V7h6v1H8zm2 2V9h4v1h-4zm8-6h-1v16h1V4zm-2 0H6v13c0 1.7 1.3 3 3 3h7V4z"/> +</svg> diff --git a/resources/lib/oojs-ui/themes/apex/images/icons/key-ltr-invert.svg b/resources/lib/oojs-ui/themes/apex/images/icons/key-ltr-invert.svg index 131bbdbcb6..454f6a99d7 100644 --- a/resources/lib/oojs-ui/themes/apex/images/icons/key-ltr-invert.svg +++ b/resources/lib/oojs-ui/themes/apex/images/icons/key-ltr-invert.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #FFFFFF }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#FFFFFF"> <path d="M14.5 4C11.5 4 9 6.5 9 9.5c0 1 .3 1.9.7 2.8L4 18v2h4v-2h2v-2h2l1.2-1.2c.4.1.9.2 1.3.2 3 0 5.5-2.5 5.5-5.5S17.5 4 14.5 4zM16 9c-.8 0-1.5-.7-1.5-1.5S15.2 6 16 6s1.5.7 1.5 1.5S16.8 9 16 9z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/apex/images/icons/key-rtl-invert.svg b/resources/lib/oojs-ui/themes/apex/images/icons/key-rtl-invert.svg index 906ee6e8f0..6b7fd63231 100644 --- a/resources/lib/oojs-ui/themes/apex/images/icons/key-rtl-invert.svg +++ b/resources/lib/oojs-ui/themes/apex/images/icons/key-rtl-invert.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #FFFFFF }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#FFFFFF"> <path d="M9.5 4c3 0 5.5 2.5 5.5 5.5 0 1-.3 1.9-.7 2.8L20 18v2h-4v-2h-2v-2h-2l-1.2-1.2c-.4.1-.9.2-1.3.2-3 0-5.5-2.5-5.5-5.5S6.5 4 9.5 4zM8 9c.8 0 1.5-.7 1.5-1.5S8.8 6 8 6s-1.5.7-1.5 1.5S7.2 9 8 9z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/apex/images/icons/keyboard-ltr-invert.svg b/resources/lib/oojs-ui/themes/apex/images/icons/keyboard-ltr-invert.svg index 238ca48fe6..d137db6d79 100644 --- a/resources/lib/oojs-ui/themes/apex/images/icons/keyboard-ltr-invert.svg +++ b/resources/lib/oojs-ui/themes/apex/images/icons/keyboard-ltr-invert.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #FFFFFF }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#FFFFFF"> <path d="M3 7v9c0 1.7 1.3 3 3 3h15V7H3zm8 2h2v2h-2V9zm0 3h2v2h-2v-2zM8 9h2v2H8V9zm0 3h2v2H8v-2zm-1 5H6c-.6 0-1-.4-1-1v-1h2v2zm0-3H5v-2h2v2zm0-3H5V9h2v2zm9 6H8v-2h8v2zm0-3h-2v-2h2v2zm0-3h-2V9h2v2zm3 6h-2v-2h2v2zm0-3h-2v-2h2v2zm0-3h-2V9h2v2z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/apex/images/icons/keyboard-rtl-invert.svg b/resources/lib/oojs-ui/themes/apex/images/icons/keyboard-rtl-invert.svg index 82488041f8..792025bd6d 100644 --- a/resources/lib/oojs-ui/themes/apex/images/icons/keyboard-rtl-invert.svg +++ b/resources/lib/oojs-ui/themes/apex/images/icons/keyboard-rtl-invert.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #FFFFFF }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#FFFFFF"> <path d="M21 7v9c0 1.7-1.3 3-3 3H3V7h18zm-8 2h-2v2h2V9zm0 3h-2v2h2v-2zm3-3h-2v2h2V9zm0 3h-2v2h2v-2zm1 5h1c.6 0 1-.4 1-1v-1h-2v2zm0-3h2v-2h-2v2zm0-3h2V9h-2v2zm-9 6h8v-2H8v2zm0-3h2v-2H8v2zm0-3h2V9H8v2zm-3 6h2v-2H5v2zm0-3h2v-2H5v2zm0-3h2V9H5v2z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/apex/images/icons/logOut-ltr-invert.svg b/resources/lib/oojs-ui/themes/apex/images/icons/logOut-ltr-invert.svg index 8b10f25511..14f148a23b 100644 --- a/resources/lib/oojs-ui/themes/apex/images/icons/logOut-ltr-invert.svg +++ b/resources/lib/oojs-ui/themes/apex/images/icons/logOut-ltr-invert.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #FFFFFF }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#FFFFFF"> <path d="M15 14v3l5-4.5L15 8v3H8c0 1.7 1.3 3 3 3h4zm-1-9H4v15h10v-2H6V7h8V5z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/apex/images/icons/logOut-rtl-invert.svg b/resources/lib/oojs-ui/themes/apex/images/icons/logOut-rtl-invert.svg index 412cd928fb..e3ce38b0f2 100644 --- a/resources/lib/oojs-ui/themes/apex/images/icons/logOut-rtl-invert.svg +++ b/resources/lib/oojs-ui/themes/apex/images/icons/logOut-rtl-invert.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #FFFFFF }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#FFFFFF"> <path d="M9 14v3l-5-4.5L9 8v3h7c0 1.7-1.3 3-3 3H9zm1-9h10v15H10v-2h8V7h-8V5z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/apex/images/icons/logo-wikimediaDiscovery-invert.svg b/resources/lib/oojs-ui/themes/apex/images/icons/logo-wikimediaDiscovery-invert.svg index 5058629be6..971ac48adb 100644 --- a/resources/lib/oojs-ui/themes/apex/images/icons/logo-wikimediaDiscovery-invert.svg +++ b/resources/lib/oojs-ui/themes/apex/images/icons/logo-wikimediaDiscovery-invert.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #FFFFFF }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#FFFFFF"> <path d="M15.3 14.7C16.1 10.9 14.7 4 12 4c-2.7 0-4.2 6.7-3.4 10.5L7 18h2.7l.3 1h4c.2-.3.1-.5.3-1H17l-1.7-3.3zM12 10c-.8 0-1.5-.7-1.5-1.5S11.2 7 12 7s1.5.7 1.5 1.5S12.8 10 12 10zm2 10c0 1.1-2 2-2 2s-2-.9-2-2"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/apex/images/icons/newWindow-ltr-invert.svg b/resources/lib/oojs-ui/themes/apex/images/icons/newWindow-ltr-invert.svg index 18e41186cb..f7a92e0bcd 100644 --- a/resources/lib/oojs-ui/themes/apex/images/icons/newWindow-ltr-invert.svg +++ b/resources/lib/oojs-ui/themes/apex/images/icons/newWindow-ltr-invert.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #FFFFFF }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#FFFFFF"> <path d="M12 5l2.5 2.5L11 11c-1.2 1.2-1.2 2.8 0 4l5.5-5.5L19 12V5h-7zm5 12H8c-.6 0-1-.4-1-1V7h3L8 5H5v11c0 1.7 1.3 3 3 3h11v-3l-2-2v3z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/apex/images/icons/newWindow-rtl-invert.svg b/resources/lib/oojs-ui/themes/apex/images/icons/newWindow-rtl-invert.svg index e357be69ad..ef51a669a6 100644 --- a/resources/lib/oojs-ui/themes/apex/images/icons/newWindow-rtl-invert.svg +++ b/resources/lib/oojs-ui/themes/apex/images/icons/newWindow-rtl-invert.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #FFFFFF }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#FFFFFF"> <path d="M12 5L9.5 7.5 13 11c1.2 1.2 1.2 2.8 0 4L7.5 9.5 5 12V5h7zM7 17h9c.6 0 1-.4 1-1V7h-3l2-2h3v11c0 1.7-1.3 3-3 3H5v-3l2-2v3z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/apex/images/icons/printer-ltr-invert.svg b/resources/lib/oojs-ui/themes/apex/images/icons/printer-ltr-invert.svg index 08c2c36e86..14420041f5 100644 --- a/resources/lib/oojs-ui/themes/apex/images/icons/printer-ltr-invert.svg +++ b/resources/lib/oojs-ui/themes/apex/images/icons/printer-ltr-invert.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #FFFFFF }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#FFFFFF"> <path d="M18 8h-1V4H7v4H3v6c0 1.7 1.3 3 3 3h1v3h10v-3h4v-6c0-1.7-1.3-3-3-3zM8 5h8v3H8V5zm8 14H8v-6h8v6z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/apex/images/icons/printer-rtl-invert.svg b/resources/lib/oojs-ui/themes/apex/images/icons/printer-rtl-invert.svg index d431703771..0d1cd83816 100644 --- a/resources/lib/oojs-ui/themes/apex/images/icons/printer-rtl-invert.svg +++ b/resources/lib/oojs-ui/themes/apex/images/icons/printer-rtl-invert.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #FFFFFF }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#FFFFFF"> <path d="M6 8h1V4h10v4h4v6c0 1.7-1.3 3-3 3h-1v3H7v-3H3v-6c0-1.7 1.3-3 3-3zm10-3H8v3h8V5zM8 19h8v-6H8v6z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/apex/images/icons/ribbonPrize-invert.svg b/resources/lib/oojs-ui/themes/apex/images/icons/ribbonPrize-invert.svg index 3a09864284..578f12b141 100644 --- a/resources/lib/oojs-ui/themes/apex/images/icons/ribbonPrize-invert.svg +++ b/resources/lib/oojs-ui/themes/apex/images/icons/ribbonPrize-invert.svg @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #FFFFFF }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#FFFFFF"> <circle cx="11.5" cy="8.5" r="2.5"/> <path d="M16.3 8.7L17 8l-.8-.8.4-.8-1.1-.5.1-.9-1.2-.2-.1-.9-1.2.2-.4-.8-1.1.5L11 3l-.8.8-.9-.4-.5 1.1-.9-.2-.2 1.2-.9.2.2 1.2-.9.4.5 1.1L6 9l.8.8-.4.8 1.1.5-.1.9 1.2.2.1.9 1.2-.2.4.8 1.1-.5.6.8.8-.8.8.4.5-1.1.9.1.2-1.2.9-.1-.2-1.2.8-.4-.4-1zM11.5 12C9.6 12 8 10.4 8 8.5S9.6 5 11.5 5 15 6.6 15 8.5 13.4 12 11.5 12zm.5 3l-.7-.7-1.1.6-.4-.7-.8.3V23l2.5-3 2.5 3v-8.5l-1-.5z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/apex/images/icons/subtract-invert.png b/resources/lib/oojs-ui/themes/apex/images/icons/subtract-invert.png new file mode 100644 index 0000000000..4e58b70a24 Binary files /dev/null and b/resources/lib/oojs-ui/themes/apex/images/icons/subtract-invert.png differ diff --git a/resources/lib/oojs-ui/themes/apex/images/icons/subtract-invert.svg b/resources/lib/oojs-ui/themes/apex/images/icons/subtract-invert.svg new file mode 100644 index 0000000000..9595ac67c7 --- /dev/null +++ b/resources/lib/oojs-ui/themes/apex/images/icons/subtract-invert.svg @@ -0,0 +1,4 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#FFFFFF"> + <path d="M18 13H6v-2h12"/> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/apex/images/icons/subtract.png b/resources/lib/oojs-ui/themes/apex/images/icons/subtract.png new file mode 100644 index 0000000000..bd719cb675 Binary files /dev/null and b/resources/lib/oojs-ui/themes/apex/images/icons/subtract.png differ diff --git a/resources/lib/oojs-ui/themes/apex/images/icons/subtract.svg b/resources/lib/oojs-ui/themes/apex/images/icons/subtract.svg new file mode 100644 index 0000000000..a79f0b508e --- /dev/null +++ b/resources/lib/oojs-ui/themes/apex/images/icons/subtract.svg @@ -0,0 +1,4 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"> + <path d="M18 13H6v-2h12"/> +</svg> diff --git a/resources/lib/oojs-ui/themes/apex/images/icons/sun-ltr-invert.svg b/resources/lib/oojs-ui/themes/apex/images/icons/sun-ltr-invert.svg index 7f7ef3a93c..f5339992c9 100644 --- a/resources/lib/oojs-ui/themes/apex/images/icons/sun-ltr-invert.svg +++ b/resources/lib/oojs-ui/themes/apex/images/icons/sun-ltr-invert.svg @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #FFFFFF }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#FFFFFF"> <path d="M18.1 5.1c0 .3-.1.6-.3.9l-1.4 1.4-.9-.8 2.2-2.2c.3.1.4.4.4.7zm-.5 5.3h3.2c0 .3-.1.6-.4.9s-.5.4-.8.4h-2v-1.3zm-6.2-5V2.2c.3 0 .6.1.9.4s.4.5.4.8v2h-1.3zm6.4 11.7c-.3 0-.6-.1-.8-.3l-1.4-1.4.8-.8 2.2 2.2c-.2.2-.5.3-.8.3zM6.2 4.9c.3 0 .6.1.8.3l1.4 1.4-.8.9-2.2-2.3c.2-.2.5-.3.8-.3zm5.2 11.7h1.2v3.2c-.3 0-.6-.1-.9-.4s-.4-.5-.4-.8l.1-2zm-7-6.2h2v1.2H3.2c0-.3.1-.6.4-.9s.5-.3.8-.3zM6.2 16l1.4-1.4.8.8-2.2 2.2c-.2-.2-.3-.5-.3-.8s.1-.6.3-.8z"/> <circle cx="12" cy="11" r="4"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/apex/images/icons/sun-rtl-invert.svg b/resources/lib/oojs-ui/themes/apex/images/icons/sun-rtl-invert.svg index 7559366e2f..0e19566967 100644 --- a/resources/lib/oojs-ui/themes/apex/images/icons/sun-rtl-invert.svg +++ b/resources/lib/oojs-ui/themes/apex/images/icons/sun-rtl-invert.svg @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #FFFFFF }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#FFFFFF"> <path d="M5.9 5.1c0 .3.1.6.3.9l1.4 1.4.9-.8-2.2-2.2c-.3.1-.4.4-.4.7zm.5 5.3H3.2c0 .3.1.6.4.9.3.3.5.4.8.4h2v-1.3zm6.2-5V2.2c-.3 0-.6.1-.9.4-.3.3-.4.5-.4.8v2h1.3zM6.2 17.1c.3 0 .6-.1.8-.3l1.4-1.4-.8-.8-2.2 2.2c.2.2.5.3.8.3zM17.8 4.9c-.3 0-.6.1-.8.3l-1.4 1.4.8.9 2.2-2.3c-.2-.2-.5-.3-.8-.3zm-5.2 11.7h-1.2v3.2c.3 0 .6-.1.9-.4.3-.3.4-.5.4-.8l-.1-2zm7-6.2h-2v1.2h3.2c0-.3-.1-.6-.4-.9-.3-.3-.5-.3-.8-.3zM17.8 16l-1.4-1.4-.8.8 2.2 2.2c.2-.2.3-.5.3-.8 0-.3-.1-.6-.3-.8z"/> <circle cx="12" cy="11" r="4" transform="matrix(-1 0 0 1 24 0)"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/apex/images/icons/watchlist-ltr-invert.svg b/resources/lib/oojs-ui/themes/apex/images/icons/watchlist-ltr-invert.svg index 7545aeb182..a6d466a2ef 100644 --- a/resources/lib/oojs-ui/themes/apex/images/icons/watchlist-ltr-invert.svg +++ b/resources/lib/oojs-ui/themes/apex/images/icons/watchlist-ltr-invert.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #FFFFFF }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#FFFFFF"> <path d="M13 14h5v1h-5v-1zm0 3h5v-1h-5v1zm0 1h5v1h-5v-1zm-1-5v3l-5 3 1-6-4-3 6-1 2-5s1.9 5 2 5l6 1-4 3h-4z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/apex/images/icons/watchlist-rtl-invert.svg b/resources/lib/oojs-ui/themes/apex/images/icons/watchlist-rtl-invert.svg index 812ee38872..61a2866f2b 100644 --- a/resources/lib/oojs-ui/themes/apex/images/icons/watchlist-rtl-invert.svg +++ b/resources/lib/oojs-ui/themes/apex/images/icons/watchlist-rtl-invert.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #FFFFFF }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#FFFFFF"> <path d="M11 14H6v1h5v-1zm0 3H6v-1h5v1zm0 1H6v1h5v-1zm1-5v3l5 3-1-6 4-3-6-1-2-5s-1.9 5-2 5l-6 1 4 3h4z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/apex/images/toolbar-shadow.png b/resources/lib/oojs-ui/themes/apex/images/toolbar-shadow.png deleted file mode 100644 index eeb20b0b53..0000000000 Binary files a/resources/lib/oojs-ui/themes/apex/images/toolbar-shadow.png and /dev/null differ diff --git a/resources/lib/oojs-ui/themes/mediawiki/icons-editing-advanced.json b/resources/lib/oojs-ui/themes/mediawiki/icons-editing-advanced.json index 21efb82e48..7cbbcedac9 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/icons-editing-advanced.json +++ b/resources/lib/oojs-ui/themes/mediawiki/icons-editing-advanced.json @@ -76,6 +76,7 @@ "rtl": "images/icons/articleRedirect-rtl.svg" } }, "searchCaseSensitive": { "file": "images/icons/case-sensitive.svg" }, + "searchDiacritics": { "file": "images/icons/diacritic.svg" }, "searchRegularExpression": { "file": "images/icons/regular-expression.svg" }, "specialCharacter": { "file": "images/icons/specialCharacter.svg" }, "table": { "file": "images/icons/table.svg" }, diff --git a/resources/lib/oojs-ui/themes/mediawiki/icons-editing-styling.json b/resources/lib/oojs-ui/themes/mediawiki/icons-editing-styling.json index c97d770273..85e47ee9b2 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/icons-editing-styling.json +++ b/resources/lib/oojs-ui/themes/mediawiki/icons-editing-styling.json @@ -56,6 +56,10 @@ "os": "images/icons/bold-cyrl-be.svg" } } }, + "highlight": { "file": { + "ltr": "images/icons/highlight-ltr.svg", + "rtl": "images/icons/highlight-rtl.svg" + } }, "italic": { "file": { "default": "images/icons/italic-a.svg", "lang": { diff --git a/resources/lib/oojs-ui/themes/mediawiki/icons-interactions.json b/resources/lib/oojs-ui/themes/mediawiki/icons-interactions.json index e040ffba71..827a72e157 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/icons-interactions.json +++ b/resources/lib/oojs-ui/themes/mediawiki/icons-interactions.json @@ -22,8 +22,9 @@ } }, "images": { - "beta": { "file": "images/icons/beta.svg" }, - "betaLaunch": { "file": "images/icons/logo-wikimediaDiscovery.svg" }, + "add": { "file": "images/icons/add.svg", "variants": [ "constructive", "progressive" ] }, + "beta": { "file": "images/icons/beta.svg", "deprecated": "Deprecated since v0.18.3, don't use." }, + "betaLaunch": { "file": "images/icons/logo-wikimediaDiscovery.svg", "deprecated": "Moved since v0.18.3, use 'logoWikimediaDiscovery' from the 'Wikimedia' pack instead." }, "bookmark": { "file": { "ltr": "images/icons/bookmark-ltr.svg", "rtl": "images/icons/bookmark-rtl.svg" @@ -34,6 +35,13 @@ } }, "clear": { "file": "images/icons/clear.svg" }, "clock": { "file": "images/icons/clock.svg" }, + "feedback": { + "file": { + "ltr": "images/icons/feedback-ltr.svg", + "rtl": "images/icons/feedback-rtl.svg" + }, + "variants": [ "progressive" ] + }, "funnel": { "file": { "ltr": "images/icons/funnel-ltr.svg", "rtl": "images/icons/funnel-rtl.svg" @@ -59,7 +67,8 @@ "ltr": "images/icons/printer-ltr.svg", "rtl": "images/icons/printer-rtl.svg" } }, - "ribbonPrize": { "file": "images/icons/ribbonPrize.svg" }, + "ribbonPrize": { "file": "images/icons/ribbonPrize.svg", "deprecated": "Deprecated since v0.18.3, don't use." }, + "subtract": { "file": "images/icons/subtract.svg" }, "sun": { "file": { "ltr": "images/icons/sun-ltr.svg", "rtl": "images/icons/sun-rtl.svg" diff --git a/resources/lib/oojs-ui/themes/mediawiki/icons-moderation.json b/resources/lib/oojs-ui/themes/mediawiki/icons-moderation.json index 9cc0f321cf..b4acff1ce8 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/icons-moderation.json +++ b/resources/lib/oojs-ui/themes/mediawiki/icons-moderation.json @@ -26,7 +26,7 @@ "blockUndo": { "file": { "ltr": "images/icons/unBlock-ltr.svg", "rtl": "images/icons/unBlock-rtl.svg" - } }, + }, "deprecated": "Renamed since v0.18.3, use 'unBlock' instead." }, "unBlock": { "file": { "ltr": "images/icons/unBlock-ltr.svg", "rtl": "images/icons/unBlock-rtl.svg" @@ -42,7 +42,7 @@ "flagUndo": { "file": { "ltr": "images/icons/unFlag-ltr.svg", "rtl": "images/icons/unFlag-rtl.svg" - } }, + }, "deprecated": "Renamed since v0.18.3, use 'unFlag' instead." }, "lock": { "file": { "ltr": "images/icons/lock-ltr.svg", "rtl": "images/icons/lock-rtl.svg" @@ -52,6 +52,10 @@ "rtl": "images/icons/unLock-rtl.svg" }, "variants": [ "destructive" ] }, "star": { "file": "images/icons/star.svg", "variants": [ "constructive", "progressive" ] }, + "halfStar": { "file": { + "ltr": "images/icons/halfStar-ltr.svg", + "rtl": "images/icons/halfStar-rtl.svg" + }, "variants": [ "constructive", "progressive" ] }, "unStar": { "file": "images/icons/unStar.svg", "variants": [ "constructive", "progressive" ] }, "trash": { "file": "images/icons/trash.svg" }, "unTrash": { "file": { @@ -61,7 +65,7 @@ "trashUndo": { "file": { "ltr": "images/icons/unTrash-ltr.svg", "rtl": "images/icons/unTrash-rtl.svg" - } }, + }, "deprecated": "Renamed since v0.18.3, use 'unTrash' instead." }, "ongoingConversation": { "file": { "ltr": "images/icons/ongoingConversation-ltr.svg", diff --git a/resources/lib/oojs-ui/themes/mediawiki/icons.json b/resources/lib/oojs-ui/themes/mediawiki/icons.json index 4666fd1a59..60c05f3e9a 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/icons.json +++ b/resources/lib/oojs-ui/themes/mediawiki/icons.json @@ -22,16 +22,13 @@ } }, "images": { - "add": { "file": "images/icons/add.svg", "variants": [ "constructive", "progressive" ] }, + "add": { "file": "images/icons/add.svg", "variants": [ "constructive", "progressive" ], "deprecated": "Moved since v0.19.5, use from the 'interactive' pack instead." }, "advanced": { "file": "images/icons/advanced.svg" }, "alert": { "file": "images/icons/alert.svg", "variants": [ "warning" ] }, "cancel": { "file": "images/icons/cancel.svg", "variants": [ "destructive" ] }, "check": { "file": "images/icons/check.svg", "variants": [ "constructive", "progressive", "destructive" ] }, "circle": { "file": "images/icons/circle.svg", "variants": [ "constructive", "progressive" ] }, - "close": { "file": { - "ltr": "images/icons/close-ltr.svg", - "rtl": "images/icons/close-rtl.svg" - } }, + "close": { "file": "images/icons/close.svg" }, "code": { "file": "images/icons/code.svg" }, "collapse": { "file": "images/icons/collapse.svg" }, "comment": { "file": "images/icons/comment.svg" }, diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/add-constructive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/add-constructive.svg index 94b9b7be6f..60c74f53a9 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/add-constructive.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/add-constructive.svg @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #36c }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c"> <g id="add"> <path id="plus" d="M13 6h-2v5H6v2h5v5h2v-5h5v-2h-5z"/> </g> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/add-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/add-invert.svg index 55f001370b..dfbbc82f4c 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/add-invert.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/add-invert.svg @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #fff }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff"> <g id="add"> <path id="plus" d="M13 6h-2v5H6v2h5v5h2v-5h5v-2h-5z"/> </g> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/add-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/add-progressive.svg index 94b9b7be6f..60c74f53a9 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/add-progressive.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/add-progressive.svg @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #36c }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c"> <g id="add"> <path id="plus" d="M13 6h-2v5H6v2h5v5h2v-5h5v-2h-5z"/> </g> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/advanced-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/advanced-invert.svg index 8e5d7ac27e..feb4dd4f25 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/advanced-invert.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/advanced-invert.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #fff }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff"> <path d="M20 13.44v-2.88l-1.8-.3c-.1-.397-.3-.794-.6-1.39l1.1-1.49-2.1-2.088-1.5 1.093c-.5-.298-1-.497-1.4-.596L13.5 4h-2.9l-.3 1.79c-.5.098-.9.297-1.4.595L7.4 5.292 5.3 7.38l1 1.49c-.3.496-.4.894-.6 1.39l-1.7.2v2.882l1.8.298c.1.497.3.894.6 1.39l-1 1.492 2.1 2.087 1.5-1c.4.2.9.395 1.4.594l.3 1.79h3l.3-1.79c.5-.1.9-.298 1.4-.596l1.5 1.092 2.1-2.08-1.1-1.49c.3-.496.5-.993.6-1.39l1.5-.3zm-8 1.492c-1.7 0-3-1.292-3-2.982 0-1.69 1.3-2.98 3-2.98s3 1.29 3 2.98-1.3 2.982-3 2.982z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/advanced-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/advanced-progressive.svg index b8d38f5d5c..6bb1b1023c 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/advanced-progressive.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/advanced-progressive.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #36c }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c"> <path d="M20 13.44v-2.88l-1.8-.3c-.1-.397-.3-.794-.6-1.39l1.1-1.49-2.1-2.088-1.5 1.093c-.5-.298-1-.497-1.4-.596L13.5 4h-2.9l-.3 1.79c-.5.098-.9.297-1.4.595L7.4 5.292 5.3 7.38l1 1.49c-.3.496-.4.894-.6 1.39l-1.7.2v2.882l1.8.298c.1.497.3.894.6 1.39l-1 1.492 2.1 2.087 1.5-1c.4.2.9.395 1.4.594l.3 1.79h3l.3-1.79c.5-.1.9-.298 1.4-.596l1.5 1.092 2.1-2.08-1.1-1.49c.3-.496.5-.993.6-1.39l1.5-.3zm-8 1.492c-1.7 0-3-1.292-3-2.982 0-1.69 1.3-2.98 3-2.98s3 1.29 3 2.98-1.3 2.982-3 2.982z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/alert-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/alert-invert.svg index d72ac35a18..0f6414193f 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/alert-invert.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/alert-invert.svg @@ -1,8 +1,8 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #fff }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff"> <g id="alert"> <path id="point" d="M11 16h2v2h-2z"/> <path id="stroke" d="M13.516 10h-3L11 15h2z"/> <path id="triangle" d="M12.017 5.974L19.537 19H4.497l7.52-13.026m0-2.474c-.545 0-1.09.357-1.5 1.07L2.53 18.403C1.705 19.833 2.38 21 4.03 21H20c1.65 0 2.325-1.17 1.5-2.6L13.517 4.575c-.413-.715-.956-1.072-1.5-1.072z"/> </g> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/alert-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/alert-progressive.svg index ddbb983838..78c22cda11 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/alert-progressive.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/alert-progressive.svg @@ -1,8 +1,8 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #36c }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c"> <g id="alert"> <path id="point" d="M11 16h2v2h-2z"/> <path id="stroke" d="M13.516 10h-3L11 15h2z"/> <path id="triangle" d="M12.017 5.974L19.537 19H4.497l7.52-13.026m0-2.474c-.545 0-1.09.357-1.5 1.07L2.53 18.403C1.705 19.833 2.38 21 4.03 21H20c1.65 0 2.325-1.17 1.5-2.6L13.517 4.575c-.413-.715-.956-1.072-1.5-1.072z"/> </g> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/alert-warning.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/alert-warning.svg index c5c5687732..6e96e1374d 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/alert-warning.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/alert-warning.svg @@ -1,8 +1,8 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #ff5d00 }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#ff5d00"> <g id="alert"> <path id="point" d="M11 16h2v2h-2z"/> <path id="stroke" d="M13.516 10h-3L11 15h2z"/> <path id="triangle" d="M12.017 5.974L19.537 19H4.497l7.52-13.026m0-2.474c-.545 0-1.09.357-1.5 1.07L2.53 18.403C1.705 19.833 2.38 21 4.03 21H20c1.65 0 2.325-1.17 1.5-2.6L13.517 4.575c-.413-.715-.956-1.072-1.5-1.072z"/> </g> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/align-center-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/align-center-invert.svg index dc3a39aadd..b6db3929fe 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/align-center-invert.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/align-center-invert.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #fff }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff"> <path d="M9 9h6c.554 0 1 .446 1 1v5c0 .554-.446 1-1 1H9c-.554 0-1-.446-1-1v-5c0-.554.446-1 1-1zm-5.5 9h17a.5.5 0 0 1 0 1h-17a.5.5 0 0 1 0-1zm0-12h17a.5.5 0 0 1 0 1h-17a.5.5 0 0 1 0-1z" id="align-center"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/align-center-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/align-center-progressive.svg index a88b9fe462..e69f542042 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/align-center-progressive.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/align-center-progressive.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #36c }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c"> <path d="M9 9h6c.554 0 1 .446 1 1v5c0 .554-.446 1-1 1H9c-.554 0-1-.446-1-1v-5c0-.554.446-1 1-1zm-5.5 9h17a.5.5 0 0 1 0 1h-17a.5.5 0 0 1 0-1zm0-12h17a.5.5 0 0 1 0 1h-17a.5.5 0 0 1 0-1z" id="align-center"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/align-float-left-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/align-float-left-invert.svg index 770e354577..5232a48b53 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/align-float-left-invert.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/align-float-left-invert.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #fff }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff"> <path d="M4 9h6c.554 0 1 .446 1 1v5c0 .554-.446 1-1 1H4c-.554 0-1-.446-1-1v-5c0-.554.446-1 1-1zm9.5 0h7a.5.5 0 0 1 0 1h-7a.5.5 0 0 1 0-1zm0 3h7a.5.5 0 0 1 0 1h-7a.5.5 0 0 1 0-1zm0 3h7a.5.5 0 0 1 0 1h-7a.5.5 0 0 1 0-1zm-10-9h17a.5.5 0 0 1 0 1h-17a.5.5 0 0 1 0-1zm0 12h17a.5.5 0 0 1 0 1h-17a.5.5 0 0 1 0-1z" id="align-float-left"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/align-float-left-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/align-float-left-progressive.svg index ff0257f2d9..7e03b95478 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/align-float-left-progressive.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/align-float-left-progressive.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #36c }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c"> <path d="M4 9h6c.554 0 1 .446 1 1v5c0 .554-.446 1-1 1H4c-.554 0-1-.446-1-1v-5c0-.554.446-1 1-1zm9.5 0h7a.5.5 0 0 1 0 1h-7a.5.5 0 0 1 0-1zm0 3h7a.5.5 0 0 1 0 1h-7a.5.5 0 0 1 0-1zm0 3h7a.5.5 0 0 1 0 1h-7a.5.5 0 0 1 0-1zm-10-9h17a.5.5 0 0 1 0 1h-17a.5.5 0 0 1 0-1zm0 12h17a.5.5 0 0 1 0 1h-17a.5.5 0 0 1 0-1z" id="align-float-left"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/align-float-right-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/align-float-right-invert.svg index 014fb7e741..3395516ef6 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/align-float-right-invert.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/align-float-right-invert.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #fff }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff"> <path d="M20 9h-6c-.554 0-1 .446-1 1v5c0 .554.446 1 1 1h6c.554 0 1-.446 1-1v-5c0-.554-.446-1-1-1zm-9.5 0h-7a.5.5 0 0 0 0 1h7a.5.5 0 0 0 0-1zm0 3h-7a.5.5 0 0 0 0 1h7a.5.5 0 0 0 0-1zm0 3h-7a.5.5 0 0 0 0 1h7a.5.5 0 0 0 0-1zm10-9h-17a.5.5 0 0 0 0 1h17a.5.5 0 0 0 0-1zm0 12h-17a.5.5 0 0 0 0 1h17a.5.5 0 0 0 0-1z" id="align-float-right"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/align-float-right-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/align-float-right-progressive.svg index 37ec2b5f41..f7f45e25bd 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/align-float-right-progressive.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/align-float-right-progressive.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #36c }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c"> <path d="M20 9h-6c-.554 0-1 .446-1 1v5c0 .554.446 1 1 1h6c.554 0 1-.446 1-1v-5c0-.554-.446-1-1-1zm-9.5 0h-7a.5.5 0 0 0 0 1h7a.5.5 0 0 0 0-1zm0 3h-7a.5.5 0 0 0 0 1h7a.5.5 0 0 0 0-1zm0 3h-7a.5.5 0 0 0 0 1h7a.5.5 0 0 0 0-1zm10-9h-17a.5.5 0 0 0 0 1h17a.5.5 0 0 0 0-1zm0 12h-17a.5.5 0 0 0 0 1h17a.5.5 0 0 0 0-1z" id="align-float-right"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/arched-arrow-ltr-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/arched-arrow-ltr-invert.svg index 9e18fd2098..7a6c6a43d7 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/arched-arrow-ltr-invert.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/arched-arrow-ltr-invert.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #fff }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff"> <path d="M13.3 6.3l6.3 5.7-6.3 5.7v-3.8H12c-3.2 0-6.3 1.3-7.6 3.8 0-4.7 2.8-7.6 7.9-7.6h.9V6.3z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/arched-arrow-ltr-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/arched-arrow-ltr-progressive.svg index ee78b93315..c17ebc7d4e 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/arched-arrow-ltr-progressive.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/arched-arrow-ltr-progressive.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #36c }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c"> <path d="M13.3 6.3l6.3 5.7-6.3 5.7v-3.8H12c-3.2 0-6.3 1.3-7.6 3.8 0-4.7 2.8-7.6 7.9-7.6h.9V6.3z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/arched-arrow-rtl-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/arched-arrow-rtl-invert.svg index 5bbad61df3..b05aec3a2b 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/arched-arrow-rtl-invert.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/arched-arrow-rtl-invert.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #fff }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff"> <path d="M10.7 6.3L4.4 12l6.3 5.7v-3.8H12c3.2 0 6.3 1.3 7.6 3.8 0-4.7-2.8-7.6-7.9-7.6h-.9V6.3z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/arched-arrow-rtl-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/arched-arrow-rtl-progressive.svg index d9ad31e235..cc7b2aa821 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/arched-arrow-rtl-progressive.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/arched-arrow-rtl-progressive.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #36c }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c"> <path d="M10.7 6.3L4.4 12l6.3 5.7v-3.8H12c3.2 0 6.3 1.3 7.6 3.8 0-4.7-2.8-7.6-7.9-7.6h-.9V6.3z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/arrow-ltr-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/arrow-ltr-invert.svg index 7ec8b0362e..cfde7f5bf7 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/arrow-ltr-invert.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/arrow-ltr-invert.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #fff }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff"> <path d="M16 12H6c-1.7 0-3 1.3-3 3h13v3l5-4.5L16 9v3z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/arrow-ltr-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/arrow-ltr-progressive.svg index 1317492cc4..020e740d0f 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/arrow-ltr-progressive.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/arrow-ltr-progressive.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #36c }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c"> <path d="M16 12H6c-1.7 0-3 1.3-3 3h13v3l5-4.5L16 9v3z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/arrow-rtl-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/arrow-rtl-invert.svg index 38c0f88a76..b701b6104c 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/arrow-rtl-invert.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/arrow-rtl-invert.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #fff }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff"> <path d="M8 12h10c1.7 0 3 1.3 3 3H8v3l-5-4.5L8 9v3z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/arrow-rtl-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/arrow-rtl-progressive.svg index e56da3c895..476c443bd1 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/arrow-rtl-progressive.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/arrow-rtl-progressive.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #36c }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c"> <path d="M8 12h10c1.7 0 3 1.3 3 3H8v3l-5-4.5L8 9v3z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/article-ltr-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/article-ltr-invert.svg index 5caf7dd492..3285cc738d 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/article-ltr-invert.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/article-ltr-invert.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #fff }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff"> <path d="M12 10h4V5h-4v5zm-5 2h9v-1H7v1zm0 2h9v-1H7v1zm0 2h9v-1H7v1zm4-9H7v1h4V7zm0 2H7v1h4V9zm0-4H7v1h4V5zM5 3h13v16H8c-1.7 0-3-1.3-3-3V3z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/article-ltr-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/article-ltr-progressive.svg index cd35d366bb..61dda31c60 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/article-ltr-progressive.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/article-ltr-progressive.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #36c }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c"> <path d="M12 10h4V5h-4v5zm-5 2h9v-1H7v1zm0 2h9v-1H7v1zm0 2h9v-1H7v1zm4-9H7v1h4V7zm0 2H7v1h4V9zm0-4H7v1h4V5zM5 3h13v16H8c-1.7 0-3-1.3-3-3V3z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/article-rtl-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/article-rtl-invert.svg index 19a1d723b1..b92172aefc 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/article-rtl-invert.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/article-rtl-invert.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #fff }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff"> <path d="M11 10H7V5h4v5zm5 2H7v-1h9v1zm0 2H7v-1h9v1zm0 2H7v-1h9v1zm-4-9h4v1h-4V7zm0 2h4v1h-4V9zm0-4h4v1h-4V5zm6-2H5v16h10c1.7 0 3-1.3 3-3V3z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/article-rtl-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/article-rtl-progressive.svg index b04ecae5f7..d0e6a7a5d2 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/article-rtl-progressive.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/article-rtl-progressive.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #36c }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c"> <path d="M11 10H7V5h4v5zm5 2H7v-1h9v1zm0 2H7v-1h9v1zm0 2H7v-1h9v1zm-4-9h4v1h-4V7zm0 2h4v1h-4V9zm0-4h4v1h-4V5zm6-2H5v16h10c1.7 0 3-1.3 3-3V3z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/articleCheck-ltr-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/articleCheck-ltr-invert.svg index 1f30f59530..9557c5642a 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/articleCheck-ltr-invert.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/articleCheck-ltr-invert.svg @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #fff }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff"> <path d="M21 11l-6 7-4-4-1 1 5 5 7-8z"/> <path d="M17 14V3H4v13c0 1.7 1.3 3 3 3h5l-3-3H6v-1h2.6l1-1H6v-1h9v1h-2l1 1h2l1-1zM6 5h4v1H6V5zm0 2h4v1H6V7zm0 2h4v1H6V9zm9 3H6v-1h9v1zm-4-2V5h4v5h-4z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/articleCheck-ltr-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/articleCheck-ltr-progressive.svg index b554100c8a..5802afd451 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/articleCheck-ltr-progressive.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/articleCheck-ltr-progressive.svg @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #36c }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c"> <path d="M21 11l-6 7-4-4-1 1 5 5 7-8z"/> <path d="M17 14V3H4v13c0 1.7 1.3 3 3 3h5l-3-3H6v-1h2.6l1-1H6v-1h9v1h-2l1 1h2l1-1zM6 5h4v1H6V5zm0 2h4v1H6V7zm0 2h4v1H6V9zm9 3H6v-1h9v1zm-4-2V5h4v5h-4z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/articleCheck-rtl-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/articleCheck-rtl-invert.svg index f4dc6e9d29..fba5a3277c 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/articleCheck-rtl-invert.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/articleCheck-rtl-invert.svg @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #fff }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff"> <path d="M5 11l6 7 4-4 1 1-5 5-7-8z"/> <path d="M9 14V3h13v13c0 1.7-1.3 3-3 3h-5l3-3h3v-1h-2.6l-1-1H20v-1h-9v1h2l-1 1h-2l-1-1zm11-9h-4v1h4V5zm0 2h-4v1h4V7zm0 2h-4v1h4V9zm-9 3h9v-1h-9v1zm4-2V5h-4v5h4z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/articleCheck-rtl-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/articleCheck-rtl-progressive.svg index 7a47a0e6c2..02155936da 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/articleCheck-rtl-progressive.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/articleCheck-rtl-progressive.svg @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #36c }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c"> <path d="M5 11l6 7 4-4 1 1-5 5-7-8z"/> <path d="M9 14V3h13v13c0 1.7-1.3 3-3 3h-5l3-3h3v-1h-2.6l-1-1H20v-1h-9v1h2l-1 1h-2l-1-1zm11-9h-4v1h4V5zm0 2h-4v1h4V7zm0 2h-4v1h4V9zm-9 3h9v-1h-9v1zm4-2V5h-4v5h4z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/articleRedirect-ltr-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/articleRedirect-ltr-invert.svg index 8b566ba469..f68467fda0 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/articleRedirect-ltr-invert.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/articleRedirect-ltr-invert.svg @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #fff }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff"> <g id="article-redirect"> <path id="arrow" d="M18.1 14.2L23 18l-4.9 4.8v-2.2c-1.7 0-2.9-.2-4.3-1.2-1.2-.8-2.5-2.6-2.3-4.1 1.4 1 2.9 1.5 4.4 1.5.7 0 1.4-.1 2.1-.3l.1-2.3"/> <path id="page" d="M5 3v13c0 1.7 1.3 3 3 3h3.375c-.157-.205-.3-.43-.438-.656-.42-.688-.77-1.483-.843-2.344H7v-1h3.125l.125-1H7v-1h3.375l.03-.188.283.188H16v1h-3.906l.22.156c.523.375 1.065.64 1.592.844H16v.406c.208-.013.418-.07.625-.094.068-1.294.125-3.874.125-3.874l1.25.968V3H5zm2 2h4v1H7V5zm5 0h4v5h-4V5zM7 7h4v1H7V7zm0 2h4v1H7V9zm0 2h9v1H7v-1z"/> </g> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/articleRedirect-ltr-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/articleRedirect-ltr-progressive.svg index 49c1975430..28e7a46ebc 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/articleRedirect-ltr-progressive.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/articleRedirect-ltr-progressive.svg @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #36c }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c"> <g id="article-redirect"> <path id="arrow" d="M18.1 14.2L23 18l-4.9 4.8v-2.2c-1.7 0-2.9-.2-4.3-1.2-1.2-.8-2.5-2.6-2.3-4.1 1.4 1 2.9 1.5 4.4 1.5.7 0 1.4-.1 2.1-.3l.1-2.3"/> <path id="page" d="M5 3v13c0 1.7 1.3 3 3 3h3.375c-.157-.205-.3-.43-.438-.656-.42-.688-.77-1.483-.843-2.344H7v-1h3.125l.125-1H7v-1h3.375l.03-.188.283.188H16v1h-3.906l.22.156c.523.375 1.065.64 1.592.844H16v.406c.208-.013.418-.07.625-.094.068-1.294.125-3.874.125-3.874l1.25.968V3H5zm2 2h4v1H7V5zm5 0h4v5h-4V5zM7 7h4v1H7V7zm0 2h4v1H7V9zm0 2h9v1H7v-1z"/> </g> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/articleRedirect-rtl-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/articleRedirect-rtl-invert.svg index 9bce7f2738..d70b35f86f 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/articleRedirect-rtl-invert.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/articleRedirect-rtl-invert.svg @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #fff }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff"> <g id="article-redirect"> <path id="arrow" d="M5.9 14.2L1 18l4.9 4.8v-2.2c1.7 0 2.9-.2 4.3-1.2 1.2-.8 2.5-2.6 2.3-4.1-1.4 1-2.9 1.5-4.4 1.5-.7 0-1.4-.1-2.1-.3l-.1-2.3"/> <path id="page" d="M19 3v13c0 1.7-1.3 3-3 3h-3.375c.157-.205.3-.43.438-.656.42-.688.77-1.483.843-2.344H17v-1h-3.125l-.125-1H17v-1h-3.375l-.03-.188-.283.188H8v1h3.906l-.22.156a7.097 7.097 0 0 1-1.592.844H8v.406c-.208-.013-.418-.07-.625-.094a178.903 178.903 0 0 1-.125-3.874L6 12.405V3zm-2 2h-4v1h4zm-5 0H8v5h4zm5 2h-4v1h4zm0 2h-4v1h4zm0 2H8v1h9z"/> </g> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/articleRedirect-rtl-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/articleRedirect-rtl-progressive.svg index 98a0d4ccd7..d49b9bdb20 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/articleRedirect-rtl-progressive.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/articleRedirect-rtl-progressive.svg @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #36c }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c"> <g id="article-redirect"> <path id="arrow" d="M5.9 14.2L1 18l4.9 4.8v-2.2c1.7 0 2.9-.2 4.3-1.2 1.2-.8 2.5-2.6 2.3-4.1-1.4 1-2.9 1.5-4.4 1.5-.7 0-1.4-.1-2.1-.3l-.1-2.3"/> <path id="page" d="M19 3v13c0 1.7-1.3 3-3 3h-3.375c.157-.205.3-.43.438-.656.42-.688.77-1.483.843-2.344H17v-1h-3.125l-.125-1H17v-1h-3.375l-.03-.188-.283.188H8v1h3.906l-.22.156a7.097 7.097 0 0 1-1.592.844H8v.406c-.208-.013-.418-.07-.625-.094a178.903 178.903 0 0 1-.125-3.874L6 12.405V3zm-2 2h-4v1h4zm-5 0H8v5h4zm5 2h-4v1h4zm0 2h-4v1h4zm0 2H8v1h9z"/> </g> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/articleSearch-ltr-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/articleSearch-ltr-invert.svg index 1febaf24d6..c4dbcdea7e 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/articleSearch-ltr-invert.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/articleSearch-ltr-invert.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #fff }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff"> <path d="M19.1 18.5c.6-.7.9-1.5.9-2.5 0-2.2-1.8-4-4-4s-4 1.8-4 4 1.8 4 4 4c.7 0 1.3-.1 1.8-.4l2.7 2.7 1.1-1.1-2.5-2.7zm-3.1-.3c-1.2 0-2.2-1-2.2-2.3 0-1.2 1-2.2 2.2-2.2 1.2 0 2.3 1 2.3 2.2-.1 1.3-1.1 2.3-2.3 2.3zM11.8 13c.3-.4.6-.7 1-1H7v-1h9s1.2 0 2 .6V3H5v13c0 1.7 1.3 3 3 3h3.8c-.6-.8-1-1.9-1-3H7v-1h3.9l.3-1H7v-1h4.8zm.2-8h4v5h-4V5zM7 5h4v1H7V5zm0 2h4v1H7V7zm0 2h4v1H7V9z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/articleSearch-ltr-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/articleSearch-ltr-progressive.svg index 394203aa7d..2d71a6248c 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/articleSearch-ltr-progressive.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/articleSearch-ltr-progressive.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #36c }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c"> <path d="M19.1 18.5c.6-.7.9-1.5.9-2.5 0-2.2-1.8-4-4-4s-4 1.8-4 4 1.8 4 4 4c.7 0 1.3-.1 1.8-.4l2.7 2.7 1.1-1.1-2.5-2.7zm-3.1-.3c-1.2 0-2.2-1-2.2-2.3 0-1.2 1-2.2 2.2-2.2 1.2 0 2.3 1 2.3 2.2-.1 1.3-1.1 2.3-2.3 2.3zM11.8 13c.3-.4.6-.7 1-1H7v-1h9s1.2 0 2 .6V3H5v13c0 1.7 1.3 3 3 3h3.8c-.6-.8-1-1.9-1-3H7v-1h3.9l.3-1H7v-1h4.8zm.2-8h4v5h-4V5zM7 5h4v1H7V5zm0 2h4v1H7V7zm0 2h4v1H7V9z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/articleSearch-rtl-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/articleSearch-rtl-invert.svg index be69d2aa1d..ffd42858ef 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/articleSearch-rtl-invert.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/articleSearch-rtl-invert.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #fff }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff"> <path d="M7.5 18.5c-.6-.7-.9-1.5-.9-2.5 0-2.2 1.8-4 4-4s4 1.8 4 4-1.8 4-4 4c-.7 0-1.3-.1-1.8-.4l-2.7 2.7L5 21.2l2.5-2.7zm3.1-.3c1.2 0 2.2-1 2.2-2.3 0-1.2-1-2.2-2.2-2.2-1.2 0-2.3 1-2.3 2.2.1 1.3 1.1 2.3 2.3 2.3zm4.2-5.2c-.3-.4-.6-.7-1-1h5.8v-1h-9s-1.2 0-2 .6V3h13v13c0 1.7-1.3 3-3 3h-3.8c.6-.8 1-1.9 1-3h3.8v-1h-3.9l-.3-1h4.2v-1h-4.8zm-.2-8h-4v5h4V5zm5 0h-4v1h4V5zm0 2h-4v1h4V7zm0 2h-4v1h4V9z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/articleSearch-rtl-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/articleSearch-rtl-progressive.svg index 47768e99b2..48ae2222d4 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/articleSearch-rtl-progressive.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/articleSearch-rtl-progressive.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #36c }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c"> <path d="M7.5 18.5c-.6-.7-.9-1.5-.9-2.5 0-2.2 1.8-4 4-4s4 1.8 4 4-1.8 4-4 4c-.7 0-1.3-.1-1.8-.4l-2.7 2.7L5 21.2l2.5-2.7zm3.1-.3c1.2 0 2.2-1 2.2-2.3 0-1.2-1-2.2-2.2-2.2-1.2 0-2.3 1-2.3 2.2.1 1.3 1.1 2.3 2.3 2.3zm4.2-5.2c-.3-.4-.6-.7-1-1h5.8v-1h-9s-1.2 0-2 .6V3h13v13c0 1.7-1.3 3-3 3h-3.8c.6-.8 1-1.9 1-3h3.8v-1h-3.9l-.3-1h4.2v-1h-4.8zm-.2-8h-4v5h4V5zm5 0h-4v1h4V5zm0 2h-4v1h4V7zm0 2h-4v1h4V9z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/articles-ltr-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/articles-ltr-invert.svg index 2ac79145e5..884e55c3ea 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/articles-ltr-invert.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/articles-ltr-invert.svg @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #fff }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff"> <path d="M11 12h4V7h-4v5zm-5 2h9v-1H6v1zm0 2h9v-1H6v1zm0 2h9v-1H6v1zm4-9H6v1h4V9zm0 2H6v1h4v-1zm0-4H6v1h4V7zM4 5h13v16H7c-1.7 0-3-1.3-3-3V5z"/> <path d="M18 4v14h2V2H7v2" fill-rule="evenodd"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/articles-ltr-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/articles-ltr-progressive.svg index 678916b70a..599aa6951a 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/articles-ltr-progressive.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/articles-ltr-progressive.svg @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #36c }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c"> <path d="M11 12h4V7h-4v5zm-5 2h9v-1H6v1zm0 2h9v-1H6v1zm0 2h9v-1H6v1zm4-9H6v1h4V9zm0 2H6v1h4v-1zm0-4H6v1h4V7zM4 5h13v16H7c-1.7 0-3-1.3-3-3V5z"/> <path d="M18 4v14h2V2H7v2" fill-rule="evenodd"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/articles-rtl-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/articles-rtl-invert.svg index e45e4502a4..64b918157c 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/articles-rtl-invert.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/articles-rtl-invert.svg @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #fff }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff"> <path d="M13 12H9V7h4v5zm5 2H9v-1h9v1zm0 2H9v-1h9v1zm0 2H9v-1h9v1zm-4-9h4v1h-4V9zm0 2h4v1h-4v-1zm0-4h4v1h-4V7zm6-2H7v16h10c1.7 0 3-1.3 3-3V5z"/> <path d="M6 4v14H4V2h13v2" fill-rule="evenodd"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/articles-rtl-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/articles-rtl-progressive.svg index e4ca34b8ef..18799af2be 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/articles-rtl-progressive.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/articles-rtl-progressive.svg @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #36c }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c"> <path d="M13 12H9V7h4v5zm5 2H9v-1h9v1zm0 2H9v-1h9v1zm0 2H9v-1h9v1zm-4-9h4v1h-4V9zm0 2h4v1h-4v-1zm0-4h4v1h-4V7zm6-2H7v16h10c1.7 0 3-1.3 3-3V5z"/> <path d="M6 4v14H4V2h13v2" fill-rule="evenodd"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/attachment-ltr-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/attachment-ltr-invert.svg index 8e7de03e05..2ced027afd 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/attachment-ltr-invert.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/attachment-ltr-invert.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" viewBox="-293 385 24 24"><style>* { fill: #fff }</style> +<svg xmlns="http://www.w3.org/2000/svg" viewBox="-293 385 24 24"><g fill="#fff"> <path d="M-274.3 390.9c-1.6-1.6-4.3-1.5-5.8.1l.2.2c.5.5 1.3.7 2.1.4.8-.3 1.7-.1 2.4.6 1 .9.9 2.4 0 3.4l-7.1 7.1c-.9 1-2.4.9-3.4 0s-.9-2.4 0-3.4l4.4-4.4c.3-.3.9-.5 1.3-.1s.2 1-.1 1.3l-3.4 3.4c-.6.6-.6 1.7.1 2.3l4.3-4.3c.8-.8 1.1-1.8.9-2.7-.2-.9-.9-1.6-1.7-1.9-.9-.2-1.9 0-2.6.7l-4.4 4.4c-1.6 1.6-1.6 4.3.1 5.8 1.5 1.6 4.3 1.5 5.8-.1l7-7c.8-.8 1.2-1.9 1.2-3s-.5-2.1-1.3-2.8c-.7-.7.8.7 0 0-.7-.7.8.7 0 0-.7-.7.8.7 0 0-.7-.7.8.7 0 0-.7-.7.8.7 0 0-.7-.7.8.7 0 0-1.5-1.6.8.7 0 0z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/attachment-ltr-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/attachment-ltr-progressive.svg index c062052420..0f02b30492 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/attachment-ltr-progressive.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/attachment-ltr-progressive.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" viewBox="-293 385 24 24"><style>* { fill: #36c }</style> +<svg xmlns="http://www.w3.org/2000/svg" viewBox="-293 385 24 24"><g fill="#36c"> <path d="M-274.3 390.9c-1.6-1.6-4.3-1.5-5.8.1l.2.2c.5.5 1.3.7 2.1.4.8-.3 1.7-.1 2.4.6 1 .9.9 2.4 0 3.4l-7.1 7.1c-.9 1-2.4.9-3.4 0s-.9-2.4 0-3.4l4.4-4.4c.3-.3.9-.5 1.3-.1s.2 1-.1 1.3l-3.4 3.4c-.6.6-.6 1.7.1 2.3l4.3-4.3c.8-.8 1.1-1.8.9-2.7-.2-.9-.9-1.6-1.7-1.9-.9-.2-1.9 0-2.6.7l-4.4 4.4c-1.6 1.6-1.6 4.3.1 5.8 1.5 1.6 4.3 1.5 5.8-.1l7-7c.8-.8 1.2-1.9 1.2-3s-.5-2.1-1.3-2.8c-.7-.7.8.7 0 0-.7-.7.8.7 0 0-.7-.7.8.7 0 0-.7-.7.8.7 0 0-.7-.7.8.7 0 0-.7-.7.8.7 0 0-1.5-1.6.8.7 0 0z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/attachment-rtl-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/attachment-rtl-invert.svg index 91304a1f37..faa925c28f 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/attachment-rtl-invert.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/attachment-rtl-invert.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" viewBox="-119 70 24 24"><style>* { fill: #fff }</style> +<svg xmlns="http://www.w3.org/2000/svg" viewBox="-119 70 24 24"><g fill="#fff"> <path d="M-113.3 75.6c-.8.7.7-.7 0 0-.8.7.7-.7 0 0-.8.7.7-.7 0 0-.8.7.7-.7 0 0-.8.7.7-.7 0 0-.8.7.7-.7 0 0-.8.7-1.3 1.7-1.3 2.8 0 1.1.4 2.2 1.2 3l7 7c1.5 1.6 4.3 1.7 5.8.1 1.7-1.5 1.7-4.2.1-5.8l-4.4-4.4c-.7-.7-1.7-.9-2.6-.7-.8.3-1.5 1-1.7 1.9-.2.9.1 1.9.9 2.7l4.3 4.3c.7-.6.7-1.7.1-2.3l-3.4-3.4c-.3-.3-.5-.9-.1-1.3s1-.2 1.3.1l4.4 4.4c.9 1 1 2.5 0 3.4s-2.5 1-3.4 0l-7.1-7.1c-.9-1-1-2.5 0-3.4.7-.7 1.6-.9 2.4-.6.8.3 1.6.1 2.1-.4l.2-.2c-1.5-1.6-4.2-1.8-5.8-.1-.8.7 1.5-1.7 0 0z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/attachment-rtl-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/attachment-rtl-progressive.svg index 6185c05c03..5e234a08e9 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/attachment-rtl-progressive.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/attachment-rtl-progressive.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" viewBox="-119 70 24 24"><style>* { fill: #36c }</style> +<svg xmlns="http://www.w3.org/2000/svg" viewBox="-119 70 24 24"><g fill="#36c"> <path d="M-113.3 75.6c-.8.7.7-.7 0 0-.8.7.7-.7 0 0-.8.7.7-.7 0 0-.8.7.7-.7 0 0-.8.7.7-.7 0 0-.8.7.7-.7 0 0-.8.7-1.3 1.7-1.3 2.8 0 1.1.4 2.2 1.2 3l7 7c1.5 1.6 4.3 1.7 5.8.1 1.7-1.5 1.7-4.2.1-5.8l-4.4-4.4c-.7-.7-1.7-.9-2.6-.7-.8.3-1.5 1-1.7 1.9-.2.9.1 1.9.9 2.7l4.3 4.3c.7-.6.7-1.7.1-2.3l-3.4-3.4c-.3-.3-.5-.9-.1-1.3s1-.2 1.3.1l4.4 4.4c.9 1 1 2.5 0 3.4s-2.5 1-3.4 0l-7.1-7.1c-.9-1-1-2.5 0-3.4.7-.7 1.6-.9 2.4-.6.8.3 1.6.1 2.1-.4l.2-.2c-1.5-1.6-4.2-1.8-5.8-.1-.8.7 1.5-1.7 0 0z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bell-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/bell-invert.svg index 3762e499d1..61caba7e61 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bell-invert.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/bell-invert.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #fff }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff"> <path d="M17.5 13V8c0-3-2.3-5-5.5-5S6.5 5 6.5 8v5c0 2 0 3-2 3v1h15v-1c-2 0-2-1-2-3zM12 19H9c0 1 1.6 2 3 2s3-1 3-2h-3z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bell-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/bell-progressive.svg index 7a6b31c88b..157430b92e 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bell-progressive.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/bell-progressive.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #36c }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c"> <path d="M17.5 13V8c0-3-2.3-5-5.5-5S6.5 5 6.5 8v5c0 2 0 3-2 3v1h15v-1c-2 0-2-1-2-3zM12 19H9c0 1 1.6 2 3 2s3-1 3-2h-3z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bellOn-ltr-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/bellOn-ltr-invert.svg index 6f76157960..49416aa0e8 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bellOn-ltr-invert.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/bellOn-ltr-invert.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #fff }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff"> <path d="M17.8 13.7L19.5 9c1-2.8-.5-5.5-3.5-6.6-3-1.1-5.9 0-6.9 2.8L7.4 9.9c-.7 1.9-1 2.8-2.9 2.1l-.3 1 14.1 5.1.3-.9c-1.9-.7-1.5-1.6-.8-3.5zM12 18.8l-2.8-1c-.3.9.8 2.4 2.1 2.9s3.2.1 3.5-.9l-2.8-1z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bellOn-ltr-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/bellOn-ltr-progressive.svg index 0a3d93d2a8..d064356a21 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bellOn-ltr-progressive.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/bellOn-ltr-progressive.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #36c }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c"> <path d="M17.8 13.7L19.5 9c1-2.8-.5-5.5-3.5-6.6-3-1.1-5.9 0-6.9 2.8L7.4 9.9c-.7 1.9-1 2.8-2.9 2.1l-.3 1 14.1 5.1.3-.9c-1.9-.7-1.5-1.6-.8-3.5zM12 18.8l-2.8-1c-.3.9.8 2.4 2.1 2.9s3.2.1 3.5-.9l-2.8-1z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bellOn-rtl-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/bellOn-rtl-invert.svg index 886a34cb9c..b854834fb3 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bellOn-rtl-invert.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/bellOn-rtl-invert.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #fff }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff"> <path d="M6.21 13.7L4.51 9c-1-2.8.5-5.5 3.5-6.6 3-1.1 5.9 0 6.9 2.8l1.7 4.7c.7 1.9 1 2.8 2.9 2.1l.3 1-14.1 5.1-.3-.9c1.9-.7 1.5-1.6.8-3.5zm5.8 5.1l2.8-1c.3.9-.8 2.4-2.1 2.9s-3.2.1-3.5-.9l2.8-1z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bellOn-rtl-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/bellOn-rtl-progressive.svg index 2b0d7df4e7..a9cdb3c62c 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bellOn-rtl-progressive.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/bellOn-rtl-progressive.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #36c }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c"> <path d="M6.21 13.7L4.51 9c-1-2.8.5-5.5 3.5-6.6 3-1.1 5.9 0 6.9 2.8l1.7 4.7c.7 1.9 1 2.8 2.9 2.1l.3 1-14.1 5.1-.3-.9c1.9-.7 1.5-1.6.8-3.5zm5.8 5.1l2.8-1c.3.9-.8 2.4-2.1 2.9s-3.2.1-3.5-.9l2.8-1z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/beta-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/beta-invert.svg index 0f5bf22a5c..eca628f385 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/beta-invert.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/beta-invert.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #fff }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff"> <path d="M12 4c-4.4 0-8 3.6-8 8s3.6 8 8 8 8-3.6 8-8-3.6-8-8-8zm4 12l-3-2-1 4-1-4-3 2 2-3-4-1 4-1-2-3 3 2 1-4 1 4 3-2-2 3 4 1-4 1 2 3z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/beta-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/beta-progressive.svg index 84be0cee60..ba896efb85 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/beta-progressive.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/beta-progressive.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #36c }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c"> <path d="M12 4c-4.4 0-8 3.6-8 8s3.6 8 8 8 8-3.6 8-8-3.6-8-8-8zm4 12l-3-2-1 4-1-4-3 2 2-3-4-1 4-1-2-3 3 2 1-4 1 4 3-2-2 3 4 1-4 1 2 3z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bigger-ltr-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/bigger-ltr-invert.svg index b5ce7e77d8..60d7fd4489 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bigger-ltr-invert.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/bigger-ltr-invert.svg @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #fff }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff"> <path id="big-a" d="M14.334 6h1.372l4.48 12H18.48l-1.493-4h-4l-1.507 4H9.814zm2.28 7l-1.617-4.333L13.363 13h3.25z"/> <path id="small-a" d="M6.172 12h.686l2.24 6h-.853L7.5 16H5.497l-.753 2h-.833zm1.14 3.5l-.81-2.166-.816 2.166h1.625z"/> <path id="arrow" d="M9 9H4l2.5-3z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bigger-ltr-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/bigger-ltr-progressive.svg index e1f33d8f84..863fe9261b 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bigger-ltr-progressive.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/bigger-ltr-progressive.svg @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #36c }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c"> <path id="big-a" d="M14.334 6h1.372l4.48 12H18.48l-1.493-4h-4l-1.507 4H9.814zm2.28 7l-1.617-4.333L13.363 13h3.25z"/> <path id="small-a" d="M6.172 12h.686l2.24 6h-.853L7.5 16H5.497l-.753 2h-.833zm1.14 3.5l-.81-2.166-.816 2.166h1.625z"/> <path id="arrow" d="M9 9H4l2.5-3z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bigger-rtl-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/bigger-rtl-invert.svg index 8ed760bd6c..b2fbe9e5a7 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bigger-rtl-invert.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/bigger-rtl-invert.svg @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #fff }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff"> <path id="big-a" d="M9.666 6H8.294l-4.48 12H5.52l1.493-4h4l1.507 4h1.666zm-2.28 7l1.617-4.333L10.637 13h-3.25z"/> <path id="small-a" d="M17.828 12h-.686l-2.24 6h.853l.747-2h2l.753 2h.833zm-1.14 3.5l.81-2.167.816 2.167H16.69z"/> <path id="arrow" d="M15 9h5l-2.5-3z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bigger-rtl-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/bigger-rtl-progressive.svg index 34ec7c004b..46c5048a12 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bigger-rtl-progressive.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/bigger-rtl-progressive.svg @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #36c }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c"> <path id="big-a" d="M9.666 6H8.294l-4.48 12H5.52l1.493-4h4l1.507 4h1.666zm-2.28 7l1.617-4.333L10.637 13h-3.25z"/> <path id="small-a" d="M17.828 12h-.686l-2.24 6h.853l.747-2h2l.753 2h.833zm-1.14 3.5l.81-2.167.816 2.167H16.69z"/> <path id="arrow" d="M15 9h5l-2.5-3z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/block-destructive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/block-destructive.svg index f01a7790d4..b703094961 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/block-destructive.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/block-destructive.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #d33 }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#d33"> <path d="M12 4c-4.4 0-8 3.6-8 8s3.6 8 8 8 8-3.6 8-8-3.6-8-8-8zm5 9H7v-2h10v2z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/block-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/block-invert.svg index 28071497c9..97f21c3d4a 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/block-invert.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/block-invert.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #fff }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff"> <path d="M12 4c-4.4 0-8 3.6-8 8s3.6 8 8 8 8-3.6 8-8-3.6-8-8-8zm5 9H7v-2h10v2z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/block-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/block-progressive.svg index abcc7e0158..e3648cf38f 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/block-progressive.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/block-progressive.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #36c }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c"> <path d="M12 4c-4.4 0-8 3.6-8 8s3.6 8 8 8 8-3.6 8-8-3.6-8-8-8zm5 9H7v-2h10v2z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-a-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-a-invert.svg index f14a00809a..b02b5c71ba 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-a-invert.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-a-invert.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #fff }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff"> <path d="M16 18h3L14 6h-3L6 18h3l1.25-3h4.5L16 18zm-4.917-5L12.5 9.6l1.417 3.4h-2.834z" id="bold-a"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-a-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-a-progressive.svg index 6bf90f6ab7..4f051bf756 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-a-progressive.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-a-progressive.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #36c }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c"> <path d="M16 18h3L14 6h-3L6 18h3l1.25-3h4.5L16 18zm-4.917-5L12.5 9.6l1.417 3.4h-2.834z" id="bold-a"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-arab-ain-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-arab-ain-invert.svg index ed986c86eb..ab901fb50b 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-arab-ain-invert.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-arab-ain-invert.svg @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #fff }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff"> <g id="bold-arab-ain"> <path id="arab-ain" d="M9.337 13.616c0 1.35 1.386 2.1 4.16 2.258l2.186-.03.318.045c-.03.12-.25.34-.66.65l-.09.06c-1.233.93-2.42 1.394-3.56 1.394-1.14 0-2.043-.33-2.71-.99-.65-.66-.973-1.56-.973-2.7.006-1.353.567-2.572 1.685-3.657v-.044l-.606-.55a.952.952 0 0 1-.222-.63c0-.49.24-1.11.72-1.863.65-1.045 1.302-1.565 1.957-1.56.886.005 1.618.42 2.194 1.246.325.48-.03.55-1.064.22-.843-.33-1.528-.05-2.055.826l.016.074 1.125.866.05.005c1.405-.497 2.42-.74 3.044-.725-.06.116-.14.36-.244.732a27.75 27.75 0 0 1-.304.982l-.125.372-.386.05c-1.743.24-2.992.716-3.745 1.43-.465.463-.7.972-.704 1.524"/> </g> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-arab-ain-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-arab-ain-progressive.svg index 081c571273..d905f22af9 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-arab-ain-progressive.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-arab-ain-progressive.svg @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #36c }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c"> <g id="bold-arab-ain"> <path id="arab-ain" d="M9.337 13.616c0 1.35 1.386 2.1 4.16 2.258l2.186-.03.318.045c-.03.12-.25.34-.66.65l-.09.06c-1.233.93-2.42 1.394-3.56 1.394-1.14 0-2.043-.33-2.71-.99-.65-.66-.973-1.56-.973-2.7.006-1.353.567-2.572 1.685-3.657v-.044l-.606-.55a.952.952 0 0 1-.222-.63c0-.49.24-1.11.72-1.863.65-1.045 1.302-1.565 1.957-1.56.886.005 1.618.42 2.194 1.246.325.48-.03.55-1.064.22-.843-.33-1.528-.05-2.055.826l.016.074 1.125.866.05.005c1.405-.497 2.42-.74 3.044-.725-.06.116-.14.36-.244.732a27.75 27.75 0 0 1-.304.982l-.125.372-.386.05c-1.743.24-2.992.716-3.745 1.43-.465.463-.7.972-.704 1.524"/> </g> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-arab-dad-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-arab-dad-invert.svg index d8ecaa0344..e02613e0e9 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-arab-dad-invert.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-arab-dad-invert.svg @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #fff }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff"> <g id="bold-arab-dad"> <path id="arab-dad" d="M16.41 8.232l-1.675-.665L15.43 6l1.687.64-.707 1.592m.775 3.078c-.51-.286-1-.427-1.476-.423-.478 0-.99.205-1.54.616l-.505.38.006.024c1.085.066 1.935.1 2.55.1h.315c.57-.022.994-.065 1.278-.132-.067-.17-.275-.36-.625-.566h-.006M10.38 14.6c-.016-.905-.33-1.87-.937-2.9l1.294-1.73.118.15c.267.337.504.925.713 1.767l.064.05c.496-.007.942-.17 1.338-.484v-.006l1.732-1.53c.68-.6 1.282-.9 1.807-.9.383.003.85.194 1.394.57.55.378.884.697 1 .96.063.15.094.385.094.71 0 .694-.11 1.227-.33 1.596-.193.31-.474.555-.845.734-.438.208-1.55.312-3.333.312-.8 0-1.794-.02-2.982-.064l-.142.43c-.254.67-.463 1.112-.625 1.323-.724.937-1.785 1.405-3.182 1.405-1.71-.006-2.56-.92-2.56-2.74.003-.94.278-1.814.824-2.618.15-.216.298-.367.444-.454.225-.133.288-.09.188.124-.396.862-.596 1.548-.6 2.058.008 1.177.752 1.768 2.232 1.772 1.038-.004 1.803-.182 2.295-.535"/> </g> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-arab-dad-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-arab-dad-progressive.svg index c3145775ec..bbf7a38cb1 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-arab-dad-progressive.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-arab-dad-progressive.svg @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #36c }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c"> <g id="bold-arab-dad"> <path id="arab-dad" d="M16.41 8.232l-1.675-.665L15.43 6l1.687.64-.707 1.592m.775 3.078c-.51-.286-1-.427-1.476-.423-.478 0-.99.205-1.54.616l-.505.38.006.024c1.085.066 1.935.1 2.55.1h.315c.57-.022.994-.065 1.278-.132-.067-.17-.275-.36-.625-.566h-.006M10.38 14.6c-.016-.905-.33-1.87-.937-2.9l1.294-1.73.118.15c.267.337.504.925.713 1.767l.064.05c.496-.007.942-.17 1.338-.484v-.006l1.732-1.53c.68-.6 1.282-.9 1.807-.9.383.003.85.194 1.394.57.55.378.884.697 1 .96.063.15.094.385.094.71 0 .694-.11 1.227-.33 1.596-.193.31-.474.555-.845.734-.438.208-1.55.312-3.333.312-.8 0-1.794-.02-2.982-.064l-.142.43c-.254.67-.463 1.112-.625 1.323-.724.937-1.785 1.405-3.182 1.405-1.71-.006-2.56-.92-2.56-2.74.003-.94.278-1.814.824-2.618.15-.216.298-.367.444-.454.225-.133.288-.09.188.124-.396.862-.596 1.548-.6 2.058.008 1.177.752 1.768 2.232 1.772 1.038-.004 1.803-.182 2.295-.535"/> </g> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-armn-to-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-armn-to-invert.svg index c8467bb4c9..1d9ea40ae8 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-armn-to-invert.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-armn-to-invert.svg @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #fff }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff"> <g id="bold-armn-to"> <path id="armn-to" d="M13.86 16.257c.124 0 .254-.026.39-.078.135-.06.257-.15.367-.28a1.43 1.43 0 0 0 .273-.517c.073-.214.11-.48.11-.798V13h-1.14c-.14 0-.284.026-.43.078a.905.905 0 0 0-.383.258c-.11.125-.2.294-.274.508-.067.213-.1.487-.1.82 0 .34.035.47.108.695.08.21.18.39.29.53.12.13.25.23.39.29.14.05.276.07.406.07m-2.97-7.84a2.67 2.67 0 0 0-.975.45 2.1 2.1 0 0 0-.672.813c-.16.342-.242.78-.242 1.31V18H6v-7.188c0-.776.15-1.455.453-2.04a4.227 4.227 0 0 1 1.234-1.467c.52-.39 1.13-.685 1.83-.883a8.114 8.114 0 0 1 2.225-.297c.526 0 1.04.044 1.54.133.504.088.98.22 1.43.398.447.172.858.388 1.233.65.375.26.698.564.97.913.275.34.49.73.64 1.17.15.43.226 1.09.226 1.61h1.36v2.04h-1.36v1.6c0 .58-.102 1.09-.31 1.54-.21.44-.49.81-.844 1.11-.35.302-.834.53-1.297.687-.465.15-.954.226-1.47.226-.51 0-.997-.08-1.46-.235a3.46 3.46 0 0 1-1.22-.703 3.452 3.452 0 0 1-.836-1.174c-.203-.472-.304-1.027-.304-1.662s.1-1.18.32-1.64c.21-.46.49-.684.85-.976.35-.297.76-.513 1.22-.648.452-.14.93-.21 1.43-.21h1.13c-.01-.49-.04-1.044-.24-1.36a2.26 2.26 0 0 0-.77-.767 3.234 3.234 0 0 0-.986-.427c-.375-.09-.578-.094-1.1-.094-.52 0-.64.02-1.01.102z"/> </g> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-armn-to-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-armn-to-progressive.svg index 10b5fdc217..4bb91c99f3 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-armn-to-progressive.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-armn-to-progressive.svg @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #36c }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c"> <g id="bold-armn-to"> <path id="armn-to" d="M13.86 16.257c.124 0 .254-.026.39-.078.135-.06.257-.15.367-.28a1.43 1.43 0 0 0 .273-.517c.073-.214.11-.48.11-.798V13h-1.14c-.14 0-.284.026-.43.078a.905.905 0 0 0-.383.258c-.11.125-.2.294-.274.508-.067.213-.1.487-.1.82 0 .34.035.47.108.695.08.21.18.39.29.53.12.13.25.23.39.29.14.05.276.07.406.07m-2.97-7.84a2.67 2.67 0 0 0-.975.45 2.1 2.1 0 0 0-.672.813c-.16.342-.242.78-.242 1.31V18H6v-7.188c0-.776.15-1.455.453-2.04a4.227 4.227 0 0 1 1.234-1.467c.52-.39 1.13-.685 1.83-.883a8.114 8.114 0 0 1 2.225-.297c.526 0 1.04.044 1.54.133.504.088.98.22 1.43.398.447.172.858.388 1.233.65.375.26.698.564.97.913.275.34.49.73.64 1.17.15.43.226 1.09.226 1.61h1.36v2.04h-1.36v1.6c0 .58-.102 1.09-.31 1.54-.21.44-.49.81-.844 1.11-.35.302-.834.53-1.297.687-.465.15-.954.226-1.47.226-.51 0-.997-.08-1.46-.235a3.46 3.46 0 0 1-1.22-.703 3.452 3.452 0 0 1-.836-1.174c-.203-.472-.304-1.027-.304-1.662s.1-1.18.32-1.64c.21-.46.49-.684.85-.976.35-.297.76-.513 1.22-.648.452-.14.93-.21 1.43-.21h1.13c-.01-.49-.04-1.044-.24-1.36a2.26 2.26 0 0 0-.77-.767 3.234 3.234 0 0 0-.986-.427c-.375-.09-.578-.094-1.1-.094-.52 0-.64.02-1.01.102z"/> </g> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-b-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-b-invert.svg index 49236c3a55..0a03c2ed33 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-b-invert.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-b-invert.svg @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #fff }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff"> <g id="bold-b"> <path id="b" d="M7 18h6c2 0 4-1 4-3 0-1.064.01-1.975-1.99-3 2-.975 1.99-1.935 1.99-3 0-2-2-3-4-3H7v12zm7-8c0 1 0 1-2 1h-2V8h2c2 0 2 0 2 1v1zm-2 6h-2v-3h2c2 0 2 0 2 1v1s0 1-2 1z"/> </g> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-b-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-b-progressive.svg index 4980f22030..adf665e428 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-b-progressive.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-b-progressive.svg @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #36c }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c"> <g id="bold-b"> <path id="b" d="M7 18h6c2 0 4-1 4-3 0-1.064.01-1.975-1.99-3 2-.975 1.99-1.935 1.99-3 0-2-2-3-4-3H7v12zm7-8c0 1 0 1-2 1h-2V8h2c2 0 2 0 2 1v1zm-2 6h-2v-3h2c2 0 2 0 2 1v1s0 1-2 1z"/> </g> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-cyrl-be-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-cyrl-be-invert.svg index 8cbe378146..cd67107489 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-cyrl-be-invert.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-cyrl-be-invert.svg @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #fff }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff"> <g id="bold-cyrl-be"> <path id="cyrl-be" d="M7 6h9v2h-6v3h2.65c.892 0 1.632.11 2.22.327.587.218 1.087.622 1.5 1.21.42.59.63 1.188.63 1.98 0 .812-.21 1.397-.63 1.976-.418.578-.897.974-1.436 1.187-.533.213-1.295.32-2.286.32h-5.65m4.768-2c.75 0 1.28-.05 1.584-.12.305-.077.57-.247.792-.51.23-.26.343-.472.343-.854 0-.557-.2-.868-.596-1.12-.4-.255-1.07-.397-2.02-.397H10v3"/> </g> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-cyrl-be-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-cyrl-be-progressive.svg index 9476ae8409..22c3bf585b 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-cyrl-be-progressive.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-cyrl-be-progressive.svg @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #36c }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c"> <g id="bold-cyrl-be"> <path id="cyrl-be" d="M7 6h9v2h-6v3h2.65c.892 0 1.632.11 2.22.327.587.218 1.087.622 1.5 1.21.42.59.63 1.188.63 1.98 0 .812-.21 1.397-.63 1.976-.418.578-.897.974-1.436 1.187-.533.213-1.295.32-2.286.32h-5.65m4.768-2c.75 0 1.28-.05 1.584-.12.305-.077.57-.247.792-.51.23-.26.343-.472.343-.854 0-.557-.2-.868-.596-1.12-.4-.255-1.07-.397-2.02-.397H10v3"/> </g> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-cyrl-te-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-cyrl-te-invert.svg index dc7b0df4e7..42ba1932e5 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-cyrl-te-invert.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-cyrl-te-invert.svg @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #fff }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff"> <g id="bold-cyrl-te"> <path id="te" d="M11 18V8H7V6h11v2h-4v10"/> </g> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-cyrl-te-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-cyrl-te-progressive.svg index 6554299c74..73a76a3ab5 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-cyrl-te-progressive.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-cyrl-te-progressive.svg @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #36c }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c"> <g id="bold-cyrl-te"> <path id="te" d="M11 18V8H7V6h11v2h-4v10"/> </g> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-cyrl-zhe-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-cyrl-zhe-invert.svg index 32980c1380..4643345bfb 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-cyrl-zhe-invert.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-cyrl-zhe-invert.svg @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #fff }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff"> <g id="bold-cyrl-zhe"> <path id="cyrl-zhe" d="M13 6v5.154c.328-.033.537-.18.705-.447.168-.266.4-.873.698-1.82.39-1.242.79-2.034 1.197-2.375.403-.336 1.075-.504 2.014-.504L18 6v1.78l-.386-.008c-.4 0-.69.062-.878.187-.186.112-.337.3-.452.55-.115.25-.286.76-.512 1.533-.12.41-.25.755-.392 1.032-.137.275-.383.536-.738.78.44.156.8.465 1.084.926.288.455.603 1.103.944 1.943L18 18h-2.314l-1.17-3.08-.113-.253-.24-.56c-.247-.57-.45-.933-.61-1.09A.726.726 0 0 0 13 12.78V18h-2v-5.22c-.226 0-.382.077-.546.23-.164.15-.368.517-.612 1.097l-.246.56-.113.253L8.313 18H6l1.33-3.267c.327-.808.635-1.447.923-1.92.293-.476.663-.793 1.11-.95-.355-.244-.603-.5-.745-.772a6.357 6.357 0 0 1-.392-1.04c-.222-.76-.39-1.26-.505-1.52-.11-.25-.26-.44-.45-.57-.18-.12-.49-.18-.912-.18H6V6l.386.008c.953 0 1.63.17 2.034.512.4.347.79 1.136 1.177 2.366.3.954.534 1.564.698 1.83.168.26.377.405.705.438V6.002"/> </g> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-cyrl-zhe-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-cyrl-zhe-progressive.svg index a6694e7a00..3b7fee9f27 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-cyrl-zhe-progressive.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-cyrl-zhe-progressive.svg @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #36c }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c"> <g id="bold-cyrl-zhe"> <path id="cyrl-zhe" d="M13 6v5.154c.328-.033.537-.18.705-.447.168-.266.4-.873.698-1.82.39-1.242.79-2.034 1.197-2.375.403-.336 1.075-.504 2.014-.504L18 6v1.78l-.386-.008c-.4 0-.69.062-.878.187-.186.112-.337.3-.452.55-.115.25-.286.76-.512 1.533-.12.41-.25.755-.392 1.032-.137.275-.383.536-.738.78.44.156.8.465 1.084.926.288.455.603 1.103.944 1.943L18 18h-2.314l-1.17-3.08-.113-.253-.24-.56c-.247-.57-.45-.933-.61-1.09A.726.726 0 0 0 13 12.78V18h-2v-5.22c-.226 0-.382.077-.546.23-.164.15-.368.517-.612 1.097l-.246.56-.113.253L8.313 18H6l1.33-3.267c.327-.808.635-1.447.923-1.92.293-.476.663-.793 1.11-.95-.355-.244-.603-.5-.745-.772a6.357 6.357 0 0 1-.392-1.04c-.222-.76-.39-1.26-.505-1.52-.11-.25-.26-.44-.45-.57-.18-.12-.49-.18-.912-.18H6V6l.386.008c.953 0 1.63.17 2.034.512.4.347.79 1.136 1.177 2.366.3.954.534 1.564.698 1.83.168.26.377.405.705.438V6.002"/> </g> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-f-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-f-invert.svg index a2fbced686..5cf18ffe25 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-f-invert.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-f-invert.svg @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #fff }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff"> <g id="bold-f"> <path id="f" d="M16 8V6H8v12h3v-5h4v-2h-4V8z"/> </g> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-f-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-f-progressive.svg index cbd80ed965..cce2c59b66 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-f-progressive.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-f-progressive.svg @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #36c }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c"> <g id="bold-f"> <path id="f" d="M16 8V6H8v12h3v-5h4v-2h-4V8z"/> </g> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-g-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-g-invert.svg index 5aeb9a4943..2741c4f5eb 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-g-invert.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-g-invert.svg @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #fff }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff"> <g id="bold-g"> <path id="g" d="M12 14v-2h5v4.203c-.497.475-1.22.894-2.166 1.26A7.994 7.994 0 0 1 11.97 18c-1.23 0-2.303-.253-3.217-.76a4.908 4.908 0 0 1-2.062-2.185A7.008 7.008 0 0 1 6 11.96c0-1.208.26-2.282.77-3.222.518-.94 1.27-1.66 2.26-2.16.754-.386 1.693-.58 2.816-.58 1.46 0 2.6.304 3.418.91.825.603 1.354 1.436 1.59 2.502l-2.36.435a2.433 2.433 0 0 0-.94-1.346c-.454-.34-1.022-.5-1.707-.5-1.038 0-1.864.32-2.48.97-.61.65-.914 1.61-.914 2.89 0 1.375.31 2.41.93 3.1.62.687 1.434 1.03 2.44 1.03.497 0 .995-.095 1.49-.285.505-.196 1.334-.57 1.69-.846v-.868"/> </g> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-g-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-g-progressive.svg index 77d543f9c6..9e85e6391b 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-g-progressive.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-g-progressive.svg @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #36c }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c"> <g id="bold-g"> <path id="g" d="M12 14v-2h5v4.203c-.497.475-1.22.894-2.166 1.26A7.994 7.994 0 0 1 11.97 18c-1.23 0-2.303-.253-3.217-.76a4.908 4.908 0 0 1-2.062-2.185A7.008 7.008 0 0 1 6 11.96c0-1.208.26-2.282.77-3.222.518-.94 1.27-1.66 2.26-2.16.754-.386 1.693-.58 2.816-.58 1.46 0 2.6.304 3.418.91.825.603 1.354 1.436 1.59 2.502l-2.36.435a2.433 2.433 0 0 0-.94-1.346c-.454-.34-1.022-.5-1.707-.5-1.038 0-1.864.32-2.48.97-.61.65-.914 1.61-.914 2.89 0 1.375.31 2.41.93 3.1.62.687 1.434 1.03 2.44 1.03.497 0 .995-.095 1.49-.285.505-.196 1.334-.57 1.69-.846v-.868"/> </g> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-geor-man-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-geor-man-invert.svg index b8ba06fbd2..c6eea4991f 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-geor-man-invert.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-geor-man-invert.svg @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #fff }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff"> <g id="bold-geor-man"> <path id="geor-man" d="M13.832 14.06c0-1.714-.394-2.572-1.182-2.572-.868 0-1.302.78-1.302 2.338-.01 1.624.42 2.436 1.295 2.436.793 0 1.19-.734 1.19-2.2m2.167 0C16 16.686 14.884 18 12.65 18 10.218 18 9 16.614 9 13.84c0-2.737 1.217-4.105 3.65-4.105.842 0 1.183.63 1.183.63v-1.58c0-.788-.45-1.183-1.347-1.183-.572 0-.858.374-.858 1.123h-2.34C9.29 6.908 10.35 6 12.462 6 14.83 6 16.01 6.946 16 8.84"/> </g> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-geor-man-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-geor-man-progressive.svg index 04dc619deb..bca4a1a715 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-geor-man-progressive.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-geor-man-progressive.svg @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #36c }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c"> <g id="bold-geor-man"> <path id="geor-man" d="M13.832 14.06c0-1.714-.394-2.572-1.182-2.572-.868 0-1.302.78-1.302 2.338-.01 1.624.42 2.436 1.295 2.436.793 0 1.19-.734 1.19-2.2m2.167 0C16 16.686 14.884 18 12.65 18 10.218 18 9 16.614 9 13.84c0-2.737 1.217-4.105 3.65-4.105.842 0 1.183.63 1.183.63v-1.58c0-.788-.45-1.183-1.347-1.183-.572 0-.858.374-.858 1.123h-2.34C9.29 6.908 10.35 6 12.462 6 14.83 6 16.01 6.946 16 8.84"/> </g> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-l-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-l-invert.svg index 8d92de4679..a5516ed687 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-l-invert.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-l-invert.svg @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #fff }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff"> <g id="bold-l"> <path id="l" d="M8 18V6h3v10h5v2"/> </g> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-l-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-l-progressive.svg index 7aa3a8ee38..44178b7154 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-l-progressive.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-l-progressive.svg @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #36c }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c"> <g id="bold-l"> <path id="l" d="M8 18V6h3v10h5v2"/> </g> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-n-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-n-invert.svg index 023f0adfdb..528efe86db 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-n-invert.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-n-invert.svg @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #fff }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff"> <g id="bold-n"> <path id="n" d="M7 18V6h3l4 8V6h3v12h-3l-4-8v8H7"/> </g> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-n-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-n-progressive.svg index 0ed4acd8c8..d686921074 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-n-progressive.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-n-progressive.svg @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #36c }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c"> <g id="bold-n"> <path id="n" d="M7 18V6h3l4 8V6h3v12h-3l-4-8v8H7"/> </g> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-v-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-v-invert.svg index 2b8c035198..c1549dc95e 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-v-invert.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-v-invert.svg @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #fff }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff"> <g id="bold-v"> <path id="v" d="M10.5 18L6 6h3l3 8 3-8h3l-4.5 12"/> </g> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-v-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-v-progressive.svg index a6d9a25acf..a94a50c8b7 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-v-progressive.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/bold-v-progressive.svg @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #36c }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c"> <g id="bold-v"> <path id="v" d="M10.5 18L6 6h3l3 8 3-8h3l-4.5 12"/> </g> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/book-ltr-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/book-ltr-invert.svg index 061ad41d6e..83265e461c 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/book-ltr-invert.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/book-ltr-invert.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #fff }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff"> <path d="M15 7c-1.7 0-3 1.3-3 3 0-1.7-1.3-3-3-3H3v13h6c1.7 0 3 1 3 2 0-1 1.3-2 3-2h6V7h-6zm5 12h-5c-1.7 0-2 .4-2 .4v-8.9C13 9.1 14.1 8 15.5 8H20v11z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/book-ltr-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/book-ltr-progressive.svg index 626a0204e1..89fff500f3 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/book-ltr-progressive.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/book-ltr-progressive.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #36c }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c"> <path d="M15 7c-1.7 0-3 1.3-3 3 0-1.7-1.3-3-3-3H3v13h6c1.7 0 3 1 3 2 0-1 1.3-2 3-2h6V7h-6zm5 12h-5c-1.7 0-2 .4-2 .4v-8.9C13 9.1 14.1 8 15.5 8H20v11z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/book-rtl-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/book-rtl-invert.svg index f9be70f706..256ee414de 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/book-rtl-invert.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/book-rtl-invert.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #fff }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff"> <path d="M9 7c1.7 0 3 1.3 3 3 0-1.7 1.3-3 3-3h6v13h-6c-1.7 0-3 1-3 2 0-1-1.3-2-3-2H3V7h6zM4 19h5c1.7 0 2 .4 2 .4v-8.9C11 9.1 9.9 8 8.5 8H4v11z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/book-rtl-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/book-rtl-progressive.svg index 948472dbda..150fd95aae 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/book-rtl-progressive.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/book-rtl-progressive.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #36c }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c"> <path d="M9 7c1.7 0 3 1.3 3 3 0-1.7 1.3-3 3-3h6v13h-6c-1.7 0-3 1-3 2 0-1-1.3-2-3-2H3V7h6zM4 19h5c1.7 0 2 .4 2 .4v-8.9C11 9.1 9.9 8 8.5 8H4v11z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bookmark-ltr-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/bookmark-ltr-invert.svg index 44a7710ba3..e511a8add4 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bookmark-ltr-invert.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/bookmark-ltr-invert.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #fff }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff"> <path d="M15 5H8c-1.1 0-2 .9-2 2v3h3v11l4-3 4 3V7c0-1.1-.9-2-2-2zM9 9H7V7c0-.6.4-1 1-1h1v3z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bookmark-ltr-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/bookmark-ltr-progressive.svg index d321cea916..9f1c2b45e5 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bookmark-ltr-progressive.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/bookmark-ltr-progressive.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #36c }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c"> <path d="M15 5H8c-1.1 0-2 .9-2 2v3h3v11l4-3 4 3V7c0-1.1-.9-2-2-2zM9 9H7V7c0-.6.4-1 1-1h1v3z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bookmark-rtl-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/bookmark-rtl-invert.svg index c2cf8c7c1e..f949201008 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bookmark-rtl-invert.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/bookmark-rtl-invert.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #fff }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff"> <path d="M8 5h7c1.1 0 2 .9 2 2v3h-3v11l-4-3-4 3V7c0-1.1.9-2 2-2zm6 4h2V7c0-.6-.4-1-1-1h-1v3z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bookmark-rtl-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/bookmark-rtl-progressive.svg index 9c752a87c8..4967af9747 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bookmark-rtl-progressive.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/bookmark-rtl-progressive.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #36c }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c"> <path d="M8 5h7c1.1 0 2 .9 2 2v3h-3v11l-4-3-4 3V7c0-1.1.9-2 2-2zm6 4h2V7c0-.6-.4-1-1-1h-1v3z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bright-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/bright-invert.svg index 28fac2114d..8f41c1ada7 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bright-invert.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/bright-invert.svg @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #ffffff }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#ffffff"> <path d="M18.1 5.1c0 .3-.1.6-.3.9l-1.4 1.4-.9-.8 2.2-2.2c.3.1.4.4.4.7zm-.5 5.3h3.2c0 .3-.1.6-.4.9-.3.3-.5.4-.8.4h-2v-1.3zm-6.2-5V2.2c.3 0 .6.1.9.4.3.3.4.5.4.8v2h-1.3zm6.4 11.7c-.3 0-.6-.1-.8-.3l-1.4-1.4.8-.8 2.2 2.2c-.2.2-.5.3-.8.3zM6.2 4.9c.3 0 .6.1.8.3l1.4 1.4-.8.9-2.2-2.3c.2-.2.5-.3.8-.3zm5.2 11.7h1.2v3.2c-.3 0-.6-.1-.9-.4-.3-.3-.4-.5-.4-.8l.1-2zm-7-6.2h2v1.2H3.2c0-.3.1-.6.4-.9.3-.3.5-.3.8-.3zM6.2 16l1.4-1.4.8.8-2.2 2.2c-.2-.2-.3-.5-.3-.8 0-.3.1-.6.3-.8zM12 8c1.7 0 3 1.3 3 3s-1.3 3-3 3-3-1.3-3-3 1.3-3 3-3m0-1c-2.2 0-4 1.8-4 4s1.8 4 4 4 4-1.8 4-4-1.8-4-4-4z"/> <path d="M12 8c1.7 0 3 1.3 3 3s-1.3 3-3 3-3-1.3-3-3 1.3-3 3-3m0-1c-2.2 0-4 1.8-4 4s1.8 4 4 4 4-1.8 4-4-1.8-4-4-4z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/browser-ltr-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/browser-ltr-invert.svg index 1f61e46dd6..3ee311a8cf 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/browser-ltr-invert.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/browser-ltr-invert.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #fff }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff"> <path d="M3 6v11c0 1.7 1.3 3 3 3h15V6H3zm2.5 1C6.3 7 7 7.7 7 8.5S6.3 10 5.5 10 4 9.3 4 8.5 4.7 7 5.5 7zM20 19H6c-1.1 0-2-.9-2-2v-6h16v8z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/browser-ltr-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/browser-ltr-progressive.svg index 14a79cb933..d3dd3fe168 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/browser-ltr-progressive.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/browser-ltr-progressive.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #36c }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c"> <path d="M3 6v11c0 1.7 1.3 3 3 3h15V6H3zm2.5 1C6.3 7 7 7.7 7 8.5S6.3 10 5.5 10 4 9.3 4 8.5 4.7 7 5.5 7zM20 19H6c-1.1 0-2-.9-2-2v-6h16v8z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/browser-rtl-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/browser-rtl-invert.svg index 1290997a89..98238cfb1b 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/browser-rtl-invert.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/browser-rtl-invert.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #fff }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff"> <path d="M21 6v11c0 1.7-1.3 3-3 3H3V6h18zm-2.5 1c-.8 0-1.5.7-1.5 1.5s.7 1.5 1.5 1.5S20 9.3 20 8.5 19.3 7 18.5 7zM4 19h14c1.1 0 2-.9 2-2v-6H4v8z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/browser-rtl-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/browser-rtl-progressive.svg index 80839add03..e2ad0abfb8 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/browser-rtl-progressive.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/browser-rtl-progressive.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #36c }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c"> <path d="M21 6v11c0 1.7-1.3 3-3 3H3V6h18zm-2.5 1c-.8 0-1.5.7-1.5 1.5s.7 1.5 1.5 1.5S20 9.3 20 8.5 19.3 7 18.5 7zM4 19h14c1.1 0 2-.9 2-2v-6H4v8z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/calendar-ltr-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/calendar-ltr-invert.svg index d65c8fe659..f933a1e205 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/calendar-ltr-invert.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/calendar-ltr-invert.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #fff }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff"> <path d="M4 5v10c0 1.7 1.3 3 3 3h14V8c0-1.7-1.3-3-3-3H4zm2 1a1 1 0 1 1 0 2 1 1 0 0 1 0-2zm4 0a1 1 0 1 1 0 2 1 1 0 0 1 0-2zm4 0a1 1 0 1 1 0 2 1 1 0 0 1 0-2zm4 0a1 1 0 1 1 0 2 1 1 0 0 1 0-2zM5 9h3v2H5V9zm4 0h3v2H9V9zm4 0h3v2h-3V9zm4 0h3v2h-3V9zM5 12h3v2H5v-2zm4 0h3v2H9v-2zm4 0h3v2h-3v-2zm4 0h3v2h-3v-2zM5 15h3v2H7c-1.195 0-2-.805-2-2zm4 0h3v2H9v-2zm4 0h3v2h-3v-2zm4 0h3v2h-3v-2z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/calendar-ltr-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/calendar-ltr-progressive.svg index f28c0ad8ad..97d6a582dd 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/calendar-ltr-progressive.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/calendar-ltr-progressive.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #36c }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c"> <path d="M4 5v10c0 1.7 1.3 3 3 3h14V8c0-1.7-1.3-3-3-3H4zm2 1a1 1 0 1 1 0 2 1 1 0 0 1 0-2zm4 0a1 1 0 1 1 0 2 1 1 0 0 1 0-2zm4 0a1 1 0 1 1 0 2 1 1 0 0 1 0-2zm4 0a1 1 0 1 1 0 2 1 1 0 0 1 0-2zM5 9h3v2H5V9zm4 0h3v2H9V9zm4 0h3v2h-3V9zm4 0h3v2h-3V9zM5 12h3v2H5v-2zm4 0h3v2H9v-2zm4 0h3v2h-3v-2zm4 0h3v2h-3v-2zM5 15h3v2H7c-1.195 0-2-.805-2-2zm4 0h3v2H9v-2zm4 0h3v2h-3v-2zm4 0h3v2h-3v-2z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/calendar-rtl-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/calendar-rtl-invert.svg index 4d1fd8b902..dccd818afa 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/calendar-rtl-invert.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/calendar-rtl-invert.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #fff }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff"> <path d="M21 5v10c0 1.7-1.3 3-3 3H4V8c0-1.7 1.3-3 3-3h14zm-2 1a1 1 0 1 0 0 2 1 1 0 0 0 0-2zm-4 0a1 1 0 1 0 0 2 1 1 0 0 0 0-2zm-4 0a1 1 0 1 0 0 2 1 1 0 0 0 0-2zM7 6a1 1 0 1 0 0 2 1 1 0 0 0 0-2zm13 3h-3v2h3V9zm-4 0h-3v2h3V9zm-4 0H9v2h3V9zM8 9H5v2h3V9zm12 3h-3v2h3v-2zm-4 0h-3v2h3v-2zm-4 0H9v2h3v-2zm-4 0H5v2h3v-2zm12 3h-3v2h1c1.195 0 2-.805 2-2zm-4 0h-3v2h3v-2zm-4 0H9v2h3v-2zm-4 0H5v2h3v-2z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/calendar-rtl-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/calendar-rtl-progressive.svg index 0e530c09cd..3757322a7f 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/calendar-rtl-progressive.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/calendar-rtl-progressive.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #36c }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c"> <path d="M21 5v10c0 1.7-1.3 3-3 3H4V8c0-1.7 1.3-3 3-3h14zm-2 1a1 1 0 1 0 0 2 1 1 0 0 0 0-2zm-4 0a1 1 0 1 0 0 2 1 1 0 0 0 0-2zm-4 0a1 1 0 1 0 0 2 1 1 0 0 0 0-2zM7 6a1 1 0 1 0 0 2 1 1 0 0 0 0-2zm13 3h-3v2h3V9zm-4 0h-3v2h3V9zm-4 0H9v2h3V9zM8 9H5v2h3V9zm12 3h-3v2h3v-2zm-4 0h-3v2h3v-2zm-4 0H9v2h3v-2zm-4 0H5v2h3v-2zm12 3h-3v2h1c1.195 0 2-.805 2-2zm-4 0h-3v2h3v-2zm-4 0H9v2h3v-2zm-4 0H5v2h3v-2z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/cancel-destructive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/cancel-destructive.svg index 3391d4e8eb..c0f8dc09fb 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/cancel-destructive.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/cancel-destructive.svg @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #d33 }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#d33"> <g id="cancel"> <path id="circle-with-strike" d="M12 5.022a6.98 6.98 0 0 0-.003 13.956 6.98 6.98 0 0 0-.002-13.956zM6.885 12c0-1.092.572-3.25.93-2.93l7.113 7.114c.487.525-1.838.93-2.93.93A5.113 5.113 0 0 1 6.884 12zm9.298 2.93L9.07 7.815c-.445-.483 1.837-.93 2.93-.93a5.112 5.112 0 0 1 5.114 5.113c0 1.092-.364 3.542-.93 2.93z"/> </g> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/cancel-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/cancel-invert.svg index 80de8e086c..893486d3a2 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/cancel-invert.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/cancel-invert.svg @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #fff }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff"> <g id="cancel"> <path id="circle-with-strike" d="M12 5.022a6.98 6.98 0 0 0-.003 13.956 6.98 6.98 0 0 0-.002-13.956zM6.885 12c0-1.092.572-3.25.93-2.93l7.113 7.114c.487.525-1.838.93-2.93.93A5.113 5.113 0 0 1 6.884 12zm9.298 2.93L9.07 7.815c-.445-.483 1.837-.93 2.93-.93a5.112 5.112 0 0 1 5.114 5.113c0 1.092-.364 3.542-.93 2.93z"/> </g> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/cancel-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/cancel-progressive.svg index c36387fdc0..18698eb7d9 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/cancel-progressive.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/cancel-progressive.svg @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #36c }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c"> <g id="cancel"> <path id="circle-with-strike" d="M12 5.022a6.98 6.98 0 0 0-.003 13.956 6.98 6.98 0 0 0-.002-13.956zM6.885 12c0-1.092.572-3.25.93-2.93l7.113 7.114c.487.525-1.838.93-2.93.93A5.113 5.113 0 0 1 6.884 12zm9.298 2.93L9.07 7.815c-.445-.483 1.837-.93 2.93-.93a5.112 5.112 0 0 1 5.114 5.113c0 1.092-.364 3.542-.93 2.93z"/> </g> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/caret-ltr-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/caret-ltr-invert.svg index 228a503af9..f4e15cf69b 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/caret-ltr-invert.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/caret-ltr-invert.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #fff }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff"> <path d="M7 13.1l8.9 8.9c.8-.8.8-2 0-2.8l-6.1-6.1 6-6.1c.8-.8.8-2 0-2.8L7 13.1z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/caret-ltr-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/caret-ltr-progressive.svg index 4b2594bf94..0558da7dc3 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/caret-ltr-progressive.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/caret-ltr-progressive.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #36c }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c"> <path d="M7 13.1l8.9 8.9c.8-.8.8-2 0-2.8l-6.1-6.1 6-6.1c.8-.8.8-2 0-2.8L7 13.1z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/caret-rtl-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/caret-rtl-invert.svg index a24bc6cbf2..6a74d9bebd 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/caret-rtl-invert.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/caret-rtl-invert.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #fff }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff"> <path d="M16.5 13.1L7.6 22c-.8-.8-.8-2 0-2.8l6.1-6.1-6-6.1c-.8-.8-.8-2 0-2.8l8.8 8.9z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/caret-rtl-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/caret-rtl-progressive.svg index 0b5cb95957..3274959a7d 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/caret-rtl-progressive.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/caret-rtl-progressive.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #36c }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c"> <path d="M16.5 13.1L7.6 22c-.8-.8-.8-2 0-2.8l6.1-6.1-6-6.1c-.8-.8-.8-2 0-2.8l8.8 8.9z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/caretDown-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/caretDown-invert.svg index cf819c3752..4d4bf6ecf9 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/caretDown-invert.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/caretDown-invert.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #fff }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff"> <path d="M12 16l8.9-8.9c-.8-.8-2-.8-2.8 0L12 13.2l-6.1-6c-.8-.8-2-.8-2.8 0L12 16z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/caretDown-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/caretDown-progressive.svg index 4239e3ba6d..e6514883aa 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/caretDown-progressive.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/caretDown-progressive.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #36c }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c"> <path d="M12 16l8.9-8.9c-.8-.8-2-.8-2.8 0L12 13.2l-6.1-6c-.8-.8-2-.8-2.8 0L12 16z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/caretUp-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/caretUp-invert.svg index 625df491b6..968671553f 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/caretUp-invert.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/caretUp-invert.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #fff }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff"> <path d="M12 6.5l8.9 8.9c-.8.8-2 .8-2.8 0L12 9.3l-6.1 6c-.8.8-2 .8-2.8 0L12 6.5z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/caretUp-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/caretUp-progressive.svg index d87a183124..6f1b02d58d 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/caretUp-progressive.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/caretUp-progressive.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #36c }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c"> <path d="M12 6.5l8.9 8.9c-.8.8-2 .8-2.8 0L12 9.3l-6.1 6c-.8.8-2 .8-2.8 0L12 6.5z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/case-sensitive-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/case-sensitive-invert.svg index 96c111edf9..e5590a3451 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/case-sensitive-invert.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/case-sensitive-invert.svg @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #fff }</style> - <g id="regular-expression"> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff"> + <g id="case-sensitive"> <path id="upper-case" d="M7.53 7L4 17h2.063l.72-2.406h3.624l.72 2.406h2.062L9.65 7h-2.12zm1.064 1.53L9.938 13H7.25l1.344-4.47z"/> <path id="lower-case" d="M18.55 17l-.184-1.035h-.055c-.35.44-.71.747-1.08.92-.37.167-.85.25-1.44.25-.564 0-.955-.208-1.377-.625-.42-.418-.627-1.012-.627-1.784 0-.808.283-1.403.846-1.784.568-.386 1.193-.607 2.208-.64l1.322-.04v-.335c0-.772-.396-1.158-1.187-1.158-.61 0-1.325.18-2.147.55l-.688-1.4c.877-.46 1.85-.69 2.916-.69 1.024 0 1.59.22 2.134.662.545.445.818 1.12.818 2.03V17h-1.45m-.394-3.527l-.802.027c-.604.018-1.054.127-1.35.327-.294.2-.442.504-.442.912 0 .58.336.87 1.008.87.48 0 .865-.137 1.152-.414.29-.277.436-.645.436-1.103v-.627"/> </g> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/case-sensitive-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/case-sensitive-progressive.svg index a81eb4c712..ff6e102ec3 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/case-sensitive-progressive.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/case-sensitive-progressive.svg @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #36c }</style> - <g id="regular-expression"> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c"> + <g id="case-sensitive"> <path id="upper-case" d="M7.53 7L4 17h2.063l.72-2.406h3.624l.72 2.406h2.062L9.65 7h-2.12zm1.064 1.53L9.938 13H7.25l1.344-4.47z"/> <path id="lower-case" d="M18.55 17l-.184-1.035h-.055c-.35.44-.71.747-1.08.92-.37.167-.85.25-1.44.25-.564 0-.955-.208-1.377-.625-.42-.418-.627-1.012-.627-1.784 0-.808.283-1.403.846-1.784.568-.386 1.193-.607 2.208-.64l1.322-.04v-.335c0-.772-.396-1.158-1.187-1.158-.61 0-1.325.18-2.147.55l-.688-1.4c.877-.46 1.85-.69 2.916-.69 1.024 0 1.59.22 2.134.662.545.445.818 1.12.818 2.03V17h-1.45m-.394-3.527l-.802.027c-.604.018-1.054.127-1.35.327-.294.2-.442.504-.442.912 0 .58.336.87 1.008.87.48 0 .865-.137 1.152-.414.29-.277.436-.645.436-1.103v-.627"/> </g> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/case-sensitive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/case-sensitive.svg index 46cd9b0fc9..749e38ffd5 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/case-sensitive.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/case-sensitive.svg @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"> - <g id="regular-expression"> + <g id="case-sensitive"> <path id="upper-case" d="M7.53 7L4 17h2.063l.72-2.406h3.624l.72 2.406h2.062L9.65 7h-2.12zm1.064 1.53L9.938 13H7.25l1.344-4.47z"/> <path id="lower-case" d="M18.55 17l-.184-1.035h-.055c-.35.44-.71.747-1.08.92-.37.167-.85.25-1.44.25-.564 0-.955-.208-1.377-.625-.42-.418-.627-1.012-.627-1.784 0-.808.283-1.403.846-1.784.568-.386 1.193-.607 2.208-.64l1.322-.04v-.335c0-.772-.396-1.158-1.187-1.158-.61 0-1.325.18-2.147.55l-.688-1.4c.877-.46 1.85-.69 2.916-.69 1.024 0 1.59.22 2.134.662.545.445.818 1.12.818 2.03V17h-1.45m-.394-3.527l-.802.027c-.604.018-1.054.127-1.35.327-.294.2-.442.504-.442.912 0 .58.336.87 1.008.87.48 0 .865-.137 1.152-.414.29-.277.436-.645.436-1.103v-.627"/> </g> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/check-constructive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/check-constructive.svg index 63b425ae60..4cea8a3aab 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/check-constructive.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/check-constructive.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #36c }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c"> <path d="M17 7.5L9.5 15 6 11.5 4.5 13l5 5L20 7.5c-.706-.706-2.294-.706-3 0z" id="check"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/check-destructive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/check-destructive.svg index 059f0bd146..3609a7b4cf 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/check-destructive.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/check-destructive.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #d33 }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#d33"> <path d="M17 7.5L9.5 15 6 11.5 4.5 13l5 5L20 7.5c-.706-.706-2.294-.706-3 0z" id="check"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/check-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/check-invert.svg index b7a1be055a..7f3299a82d 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/check-invert.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/check-invert.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #fff }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff"> <path d="M17 7.5L9.5 15 6 11.5 4.5 13l5 5L20 7.5c-.706-.706-2.294-.706-3 0z" id="check"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/check-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/check-progressive.svg index 63b425ae60..4cea8a3aab 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/check-progressive.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/check-progressive.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #36c }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c"> <path d="M17 7.5L9.5 15 6 11.5 4.5 13l5 5L20 7.5c-.706-.706-2.294-.706-3 0z" id="check"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/circle-constructive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/circle-constructive.svg index 82e64cd0e8..2c20c6ea82 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/circle-constructive.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/circle-constructive.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #36c }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c"> <circle cx="12" cy="12" r="6"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/circle-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/circle-invert.svg index 96d39e8c95..88a64fec7b 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/circle-invert.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/circle-invert.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #fff }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff"> <circle cx="12" cy="12" r="6"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/circle-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/circle-progressive.svg index 82e64cd0e8..2c20c6ea82 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/circle-progressive.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/circle-progressive.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #36c }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c"> <circle cx="12" cy="12" r="6"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/citeArticle-ltr-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/citeArticle-ltr-invert.svg index 4c6db6fdce..9e2795e21f 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/citeArticle-ltr-invert.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/citeArticle-ltr-invert.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #fff }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff"> <path d="M7 12h9v-1H7v1zm0 2h9v-1H7v1zm0 2h9v-1H7v1zm4-9H7v1h4V7zm0 2H7v1h4V9zm0-4H7v1h4V5zm5-2h2v16H8c-1.7 0-3-1.3-3-3V3h8v7l1.5-2 1.5 2V3z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/citeArticle-ltr-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/citeArticle-ltr-progressive.svg index e4b3aafc1b..677ee810c7 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/citeArticle-ltr-progressive.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/citeArticle-ltr-progressive.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #36c }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c"> <path d="M7 12h9v-1H7v1zm0 2h9v-1H7v1zm0 2h9v-1H7v1zm4-9H7v1h4V7zm0 2H7v1h4V9zm0-4H7v1h4V5zm5-2h2v16H8c-1.7 0-3-1.3-3-3V3h8v7l1.5-2 1.5 2V3z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/citeArticle-rtl-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/citeArticle-rtl-invert.svg index 86781cf1ce..131a2711f8 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/citeArticle-rtl-invert.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/citeArticle-rtl-invert.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #fff }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff"> <path d="M16 12H7v-1h9v1zm0 2H7v-1h9v1zm0 2H7v-1h9v1zm-4-9h4v1h-4V7zm0 2h4v1h-4V9zm0-4h4v1h-4V5zM7 3H5v16h10c1.7 0 3-1.3 3-3V3h-8v7L8.5 8 7 10V3z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/citeArticle-rtl-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/citeArticle-rtl-progressive.svg index c51cfc90cd..b19d640016 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/citeArticle-rtl-progressive.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/citeArticle-rtl-progressive.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #36c }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c"> <path d="M16 12H7v-1h9v1zm0 2H7v-1h9v1zm0 2H7v-1h9v1zm-4-9h4v1h-4V7zm0 2h4v1h-4V9zm0-4h4v1h-4V5zM7 3H5v16h10c1.7 0 3-1.3 3-3V3h-8v7L8.5 8 7 10V3z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/clear-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/clear-invert.svg index bbe321ada8..b43d7947c8 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/clear-invert.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/clear-invert.svg @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #fff }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff"> <g id="clear"> <path id="circle-with-cross" d="M12 5c-4.4 0-8 3.6-8 8s3.6 8 8 8 8-3.6 8-8-3.6-8-8-8zm4 11l-1 1-3-3-3 3-1-1 3-3-3-3 1-1 3 3 3-3 1 1-3 3 3 3z"/> </g> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/clear-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/clear-progressive.svg index 1cc7c1dae7..2fa1f2f961 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/clear-progressive.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/clear-progressive.svg @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #36c }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c"> <g id="clear"> <path id="circle-with-cross" d="M12 5c-4.4 0-8 3.6-8 8s3.6 8 8 8 8-3.6 8-8-3.6-8-8-8zm4 11l-1 1-3-3-3 3-1-1 3-3-3-3 1-1 3 3 3-3 1 1-3 3 3 3z"/> </g> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/clock-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/clock-invert.svg index 9ad392628e..83762889b3 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/clock-invert.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/clock-invert.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #fff }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff"> <path d="M12 5c-4.4 0-8 3.6-8 8s3.6 8 8 8 8-3.6 8-8-3.6-8-8-8zm3 12l-4-3V8h2v5l1.7 1.2c1.3.9 1 1.9.3 2.8z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/clock-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/clock-progressive.svg index a1a307bf27..4c8accd6a3 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/clock-progressive.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/clock-progressive.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #36c }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c"> <path d="M12 5c-4.4 0-8 3.6-8 8s3.6 8 8 8 8-3.6 8-8-3.6-8-8-8zm3 12l-4-3V8h2v5l1.7 1.2c1.3.9 1 1.9.3 2.8z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/close-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/close-invert.png new file mode 100644 index 0000000000..92af7b6fa0 Binary files /dev/null and b/resources/lib/oojs-ui/themes/mediawiki/images/icons/close-invert.png differ diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/close-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/close-invert.svg new file mode 100644 index 0000000000..8027fffd5e --- /dev/null +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/close-invert.svg @@ -0,0 +1,4 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff"> + <path d="M18 7.6l-1.4-1.4-4.6 4.6-4.6-4.6L6 7.6l4.6 4.6L6 16.8l1.4 1.4 4.6-4.6 4.6 4.6 1.4-1.4-4.6-4.6z"/> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/close-ltr-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/close-ltr-invert.png deleted file mode 100644 index a35e9d12d2..0000000000 Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/close-ltr-invert.png and /dev/null differ diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/close-ltr-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/close-ltr-invert.svg deleted file mode 100644 index 0ea5a9a63a..0000000000 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/close-ltr-invert.svg +++ /dev/null @@ -1,6 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #fff }</style> - <g id="close"> - <path id="cross" d="M17.4 8.1c.8-.8.8-2 0-2.8L12 10.8 7.4 6.2 6 7.6l4.6 4.6-4 4c-.8.8-.8 2 0 2.8l5.4-5.4 4.6 4.6 1.4-1.4-4.6-4.6z"/> - </g> -</svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/close-ltr-progressive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/close-ltr-progressive.png deleted file mode 100644 index 69f07873e3..0000000000 Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/close-ltr-progressive.png and /dev/null differ diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/close-ltr-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/close-ltr-progressive.svg deleted file mode 100644 index dd053f1fe4..0000000000 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/close-ltr-progressive.svg +++ /dev/null @@ -1,6 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #36c }</style> - <g id="close"> - <path id="cross" d="M17.4 8.1c.8-.8.8-2 0-2.8L12 10.8 7.4 6.2 6 7.6l4.6 4.6-4 4c-.8.8-.8 2 0 2.8l5.4-5.4 4.6 4.6 1.4-1.4-4.6-4.6z"/> - </g> -</svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/close-ltr.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/close-ltr.png deleted file mode 100644 index b6a42b8054..0000000000 Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/close-ltr.png and /dev/null differ diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/close-ltr.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/close-ltr.svg deleted file mode 100644 index c2693163e4..0000000000 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/close-ltr.svg +++ /dev/null @@ -1,6 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"> - <g id="close"> - <path id="cross" d="M17.4 8.1c.8-.8.8-2 0-2.8L12 10.8 7.4 6.2 6 7.6l4.6 4.6-4 4c-.8.8-.8 2 0 2.8l5.4-5.4 4.6 4.6 1.4-1.4-4.6-4.6z"/> - </g> -</svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/close-progressive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/close-progressive.png new file mode 100644 index 0000000000..06fcd5d413 Binary files /dev/null and b/resources/lib/oojs-ui/themes/mediawiki/images/icons/close-progressive.png differ diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/close-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/close-progressive.svg new file mode 100644 index 0000000000..37c960e45c --- /dev/null +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/close-progressive.svg @@ -0,0 +1,4 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c"> + <path d="M18 7.6l-1.4-1.4-4.6 4.6-4.6-4.6L6 7.6l4.6 4.6L6 16.8l1.4 1.4 4.6-4.6 4.6 4.6 1.4-1.4-4.6-4.6z"/> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/close-rtl-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/close-rtl-invert.png deleted file mode 100644 index 16462a2683..0000000000 Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/close-rtl-invert.png and /dev/null differ diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/close-rtl-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/close-rtl-invert.svg deleted file mode 100644 index 848a0e3a53..0000000000 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/close-rtl-invert.svg +++ /dev/null @@ -1,6 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #fff }</style> - <g id="close"> - <path id="cross" d="M6.6 8.1c-.8-.8-.8-2 0-2.8l5.4 5.5 4.6-4.6L18 7.6l-4.6 4.6 4 4c.8.8.8 2 0 2.8L12 13.6l-4.6 4.6L6 16.8l4.6-4.6z"/> - </g> -</svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/close-rtl-progressive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/close-rtl-progressive.png deleted file mode 100644 index 2c88596096..0000000000 Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/close-rtl-progressive.png and /dev/null differ diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/close-rtl-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/close-rtl-progressive.svg deleted file mode 100644 index 6d53d36217..0000000000 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/close-rtl-progressive.svg +++ /dev/null @@ -1,6 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #36c }</style> - <g id="close"> - <path id="cross" d="M6.6 8.1c-.8-.8-.8-2 0-2.8l5.4 5.5 4.6-4.6L18 7.6l-4.6 4.6 4 4c.8.8.8 2 0 2.8L12 13.6l-4.6 4.6L6 16.8l4.6-4.6z"/> - </g> -</svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/close-rtl.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/close-rtl.png deleted file mode 100644 index e3e24176b5..0000000000 Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/close-rtl.png and /dev/null differ diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/close-rtl.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/close-rtl.svg deleted file mode 100644 index 36e58ec2f0..0000000000 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/close-rtl.svg +++ /dev/null @@ -1,6 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"> - <g id="close"> - <path id="cross" d="M6.6 8.1c-.8-.8-.8-2 0-2.8l5.4 5.5 4.6-4.6L18 7.6l-4.6 4.6 4 4c.8.8.8 2 0 2.8L12 13.6l-4.6 4.6L6 16.8l4.6-4.6z"/> - </g> -</svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/close.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/close.png new file mode 100644 index 0000000000..cdb037ad53 Binary files /dev/null and b/resources/lib/oojs-ui/themes/mediawiki/images/icons/close.png differ diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/close.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/close.svg new file mode 100644 index 0000000000..88ffb56d89 --- /dev/null +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/close.svg @@ -0,0 +1,4 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"> + <path d="M18 7.6l-1.4-1.4-4.6 4.6-4.6-4.6L6 7.6l4.6 4.6L6 16.8l1.4 1.4 4.6-4.6 4.6 4.6 1.4-1.4-4.6-4.6z"/> +</svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/code-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/code-invert.svg index 224f1e727a..e9179bf58a 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/code-invert.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/code-invert.svg @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #fff }</style> +<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff"> <g id="code"> <path id="left-bracket" d="M4 12v-1h1c1 0 1 0 1-1V7.614c0-.514.024-.896.073-1.142.054-.252.14-.463.257-.633.204-.28.473-.48.808-.59.335-.11.872-.25 1.835-.25H10v1h-.752c-.457 0-.77.19-.936.406-.167.216-.312.446-.312 1.07v1.856c0 .73-.04 1.18-.244 1.493-.2.307-.562.53-1.09.667.535.155.9.385 1.096.688.2.31.238.76.238 1.49v1.86c0 .62.145.85.312 1.06.166.22.48.41.936.41H10v1H8.973c-.963 0-1.5-.133-1.835-.248a1.578 1.578 0 0 1-.808-.59 1.68 1.68 0 0 1-.257-.626C6.023 16.283 6 15.9 6 15.386V13c0-1 0-1-1-1H4z"/> <use transform="matrix(-1 0 0 1 24 0)" id="right-bracket" width="24" height="24" xlink:href="#left-bracket"/> </g> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/code-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/code-progressive.svg index d4f3de88e3..ce0e4921cd 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/code-progressive.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/code-progressive.svg @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #36c }</style> +<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c"> <g id="code"> <path id="left-bracket" d="M4 12v-1h1c1 0 1 0 1-1V7.614c0-.514.024-.896.073-1.142.054-.252.14-.463.257-.633.204-.28.473-.48.808-.59.335-.11.872-.25 1.835-.25H10v1h-.752c-.457 0-.77.19-.936.406-.167.216-.312.446-.312 1.07v1.856c0 .73-.04 1.18-.244 1.493-.2.307-.562.53-1.09.667.535.155.9.385 1.096.688.2.31.238.76.238 1.49v1.86c0 .62.145.85.312 1.06.166.22.48.41.936.41H10v1H8.973c-.963 0-1.5-.133-1.835-.248a1.578 1.578 0 0 1-.808-.59 1.68 1.68 0 0 1-.257-.626C6.023 16.283 6 15.9 6 15.386V13c0-1 0-1-1-1H4z"/> <use transform="matrix(-1 0 0 1 24 0)" id="right-bracket" width="24" height="24" xlink:href="#left-bracket"/> </g> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/collapse-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/collapse-invert.svg index 9cd2f78b7e..7b7305ab1b 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/collapse-invert.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/collapse-invert.svg @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #fff }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff"> <g id="collapse"> <path id="arrow" d="M6.697 15.714L12 10.412l5.303 5.302 1.414-1.414L12 7.583 5.283 14.3z"/> </g> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/collapse-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/collapse-progressive.svg index b0253f2c9e..29157ae845 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/collapse-progressive.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/collapse-progressive.svg @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #36c }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c"> <g id="collapse"> <path id="arrow" d="M6.697 15.714L12 10.412l5.303 5.302 1.414-1.414L12 7.583 5.283 14.3z"/> </g> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/comment-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/comment-invert.svg index 2ddc29c3c6..e6f6bb107f 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/comment-invert.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/comment-invert.svg @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #fff }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff"> <g id="comment"> <path id="speech-bubble" d="M15 6H9a3 3 0 0 0-3 3v4a3 3 0 0 0 3 3v3l3-3h3a3 3 0 0 0 3-3V9a3 3 0 0 0-3-3z"/> </g> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/comment-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/comment-progressive.svg index 31087f3328..63bdad98c3 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/comment-progressive.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/comment-progressive.svg @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #36c }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c"> <g id="comment"> <path id="speech-bubble" d="M15 6H9a3 3 0 0 0-3 3v4a3 3 0 0 0 3 3v3l3-3h3a3 3 0 0 0 3-3V9a3 3 0 0 0-3-3z"/> </g> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/diacritic-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/diacritic-invert.png new file mode 100644 index 0000000000..7bb19e31b3 Binary files /dev/null and b/resources/lib/oojs-ui/themes/mediawiki/images/icons/diacritic-invert.png differ diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/diacritic-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/diacritic-invert.svg new file mode 100644 index 0000000000..b19dd0dc3f --- /dev/null +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/diacritic-invert.svg @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="utf-8"?> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff"> + <g id="diacritic"> + <path id="letter-a" d="M13.55 17l-.184-1.035h-.055c-.35.44-.71.747-1.08.92-.37.167-.85.25-1.44.25-.563 0-.954-.208-1.376-.625-.42-.418-.627-1.012-.627-1.784 0-.808.283-1.403.846-1.784.568-.386 1.193-.607 2.208-.64l1.323-.04v-.335c0-.772-.396-1.158-1.187-1.158-.61 0-1.325.18-2.147.55l-.69-1.4c.878-.46 1.85-.69 2.917-.69 1.024 0 1.59.22 2.134.66.546.446.82 1.12.82 2.03V17h-1.45m-.395-3.527l-.802.027c-.604.018-1.054.127-1.35.327-.294.2-.442.504-.442.912 0 .58.337.87 1.01.87.48 0 .864-.138 1.15-.415.29-.277.437-.645.437-1.103v-.627"/> + <path id="tilde" d="M12.012 7.527l-.466-.306a.832.832 0 0 1-.085-.048c-.264-.17-.467-.256-.608-.256a.518.518 0 0 0-.466.256c-.107.17-.16.418-.16.743v.066H9.047c0-.748.144-1.326.432-1.733.294-.407.703-.61 1.228-.61.203 0 .406.037.61.114.208.073.43.19.66.357l.517.355c.124.082.237.146.338.19a.77.77 0 0 0 .288.066c.204 0 .362-.088.475-.265.113-.176.17-.42.17-.735v-.066h1.177c0 .75-.147 1.327-.44 1.735-.29.407-.695.61-1.22.61-.203 0-.4-.032-.593-.098a3.107 3.107 0 0 1-.678-.373z"/> + </g> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/diacritic-progressive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/diacritic-progressive.png new file mode 100644 index 0000000000..eb76fd07f5 Binary files /dev/null and b/resources/lib/oojs-ui/themes/mediawiki/images/icons/diacritic-progressive.png differ diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/diacritic-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/diacritic-progressive.svg new file mode 100644 index 0000000000..fed1164a95 --- /dev/null +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/diacritic-progressive.svg @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="utf-8"?> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c"> + <g id="diacritic"> + <path id="letter-a" d="M13.55 17l-.184-1.035h-.055c-.35.44-.71.747-1.08.92-.37.167-.85.25-1.44.25-.563 0-.954-.208-1.376-.625-.42-.418-.627-1.012-.627-1.784 0-.808.283-1.403.846-1.784.568-.386 1.193-.607 2.208-.64l1.323-.04v-.335c0-.772-.396-1.158-1.187-1.158-.61 0-1.325.18-2.147.55l-.69-1.4c.878-.46 1.85-.69 2.917-.69 1.024 0 1.59.22 2.134.66.546.446.82 1.12.82 2.03V17h-1.45m-.395-3.527l-.802.027c-.604.018-1.054.127-1.35.327-.294.2-.442.504-.442.912 0 .58.337.87 1.01.87.48 0 .864-.138 1.15-.415.29-.277.437-.645.437-1.103v-.627"/> + <path id="tilde" d="M12.012 7.527l-.466-.306a.832.832 0 0 1-.085-.048c-.264-.17-.467-.256-.608-.256a.518.518 0 0 0-.466.256c-.107.17-.16.418-.16.743v.066H9.047c0-.748.144-1.326.432-1.733.294-.407.703-.61 1.228-.61.203 0 .406.037.61.114.208.073.43.19.66.357l.517.355c.124.082.237.146.338.19a.77.77 0 0 0 .288.066c.204 0 .362-.088.475-.265.113-.176.17-.42.17-.735v-.066h1.177c0 .75-.147 1.327-.44 1.735-.29.407-.695.61-1.22.61-.203 0-.4-.032-.593-.098a3.107 3.107 0 0 1-.678-.373z"/> + </g> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/diacritic.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/diacritic.png new file mode 100644 index 0000000000..2359b1965a Binary files /dev/null and b/resources/lib/oojs-ui/themes/mediawiki/images/icons/diacritic.png differ diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/diacritic.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/diacritic.svg new file mode 100644 index 0000000000..4565101324 --- /dev/null +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/diacritic.svg @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="utf-8"?> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"> + <g id="diacritic"> + <path id="letter-a" d="M13.55 17l-.184-1.035h-.055c-.35.44-.71.747-1.08.92-.37.167-.85.25-1.44.25-.563 0-.954-.208-1.376-.625-.42-.418-.627-1.012-.627-1.784 0-.808.283-1.403.846-1.784.568-.386 1.193-.607 2.208-.64l1.323-.04v-.335c0-.772-.396-1.158-1.187-1.158-.61 0-1.325.18-2.147.55l-.69-1.4c.878-.46 1.85-.69 2.917-.69 1.024 0 1.59.22 2.134.66.546.446.82 1.12.82 2.03V17h-1.45m-.395-3.527l-.802.027c-.604.018-1.054.127-1.35.327-.294.2-.442.504-.442.912 0 .58.337.87 1.01.87.48 0 .864-.138 1.15-.415.29-.277.437-.645.437-1.103v-.627"/> + <path id="tilde" d="M12.012 7.527l-.466-.306a.832.832 0 0 1-.085-.048c-.264-.17-.467-.256-.608-.256a.518.518 0 0 0-.466.256c-.107.17-.16.418-.16.743v.066H9.047c0-.748.144-1.326.432-1.733.294-.407.703-.61 1.228-.61.203 0 .406.037.61.114.208.073.43.19.66.357l.517.355c.124.082.237.146.338.19a.77.77 0 0 0 .288.066c.204 0 .362-.088.475-.265.113-.176.17-.42.17-.735v-.066h1.177c0 .75-.147 1.327-.44 1.735-.29.407-.695.61-1.22.61-.203 0-.4-.032-.593-.098a3.107 3.107 0 0 1-.678-.373z"/> + </g> +</svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/die-ltr-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/die-ltr-invert.svg index cffcd940a6..a9ef321453 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/die-ltr-invert.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/die-ltr-invert.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #fff }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff"> <path d="M16 5H4v12c0 1.6 1.3 3 3 3h12V8c0-1.7-1.4-3-3-3zM7.5 17c-.8 0-1.5-.7-1.5-1.5S6.7 14 7.5 14s1.5.7 1.5 1.5S8.3 17 7.5 17zm0-6C6.7 11 6 10.3 6 9.5S6.7 8 7.5 8 9 8.7 9 9.5 8.3 11 7.5 11zm4 3c-.8 0-1.5-.7-1.5-1.5s.7-1.5 1.5-1.5 1.5.7 1.5 1.5-.7 1.5-1.5 1.5zm4 3c-.8 0-1.5-.7-1.5-1.5s.7-1.5 1.5-1.5 1.5.7 1.5 1.5-.7 1.5-1.5 1.5zm0-6c-.8 0-1.5-.7-1.5-1.5S14.7 8 15.5 8s1.5.7 1.5 1.5-.7 1.5-1.5 1.5z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/die-ltr-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/die-ltr-progressive.svg index 55ee4a5115..a63bf03738 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/die-ltr-progressive.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/die-ltr-progressive.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #36c }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c"> <path d="M16 5H4v12c0 1.6 1.3 3 3 3h12V8c0-1.7-1.4-3-3-3zM7.5 17c-.8 0-1.5-.7-1.5-1.5S6.7 14 7.5 14s1.5.7 1.5 1.5S8.3 17 7.5 17zm0-6C6.7 11 6 10.3 6 9.5S6.7 8 7.5 8 9 8.7 9 9.5 8.3 11 7.5 11zm4 3c-.8 0-1.5-.7-1.5-1.5s.7-1.5 1.5-1.5 1.5.7 1.5 1.5-.7 1.5-1.5 1.5zm4 3c-.8 0-1.5-.7-1.5-1.5s.7-1.5 1.5-1.5 1.5.7 1.5 1.5-.7 1.5-1.5 1.5zm0-6c-.8 0-1.5-.7-1.5-1.5S14.7 8 15.5 8s1.5.7 1.5 1.5-.7 1.5-1.5 1.5z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/die-rtl-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/die-rtl-invert.svg index ab88fb0b18..344e2fb2a2 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/die-rtl-invert.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/die-rtl-invert.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #fff }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff"> <path d="M7 5h12v12c0 1.6-1.3 3-3 3H4V8c0-1.7 1.4-3 3-3zm8.5 12c.8 0 1.5-.7 1.5-1.5s-.7-1.5-1.5-1.5-1.5.7-1.5 1.5.7 1.5 1.5 1.5zm0-6c.8 0 1.5-.7 1.5-1.5S16.3 8 15.5 8 14 8.7 14 9.5s.7 1.5 1.5 1.5zm-4 3c.8 0 1.5-.7 1.5-1.5s-.7-1.5-1.5-1.5-1.5.7-1.5 1.5.7 1.5 1.5 1.5zm-4 3c.8 0 1.5-.7 1.5-1.5S8.3 14 7.5 14 6 14.7 6 15.5 6.7 17 7.5 17zm0-6c.8 0 1.5-.7 1.5-1.5S8.3 8 7.5 8 6 8.7 6 9.5 6.7 11 7.5 11z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/die-rtl-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/die-rtl-progressive.svg index 9e3a64e03b..fd4f13b2fe 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/die-rtl-progressive.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/die-rtl-progressive.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #36c }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c"> <path d="M7 5h12v12c0 1.6-1.3 3-3 3H4V8c0-1.7 1.4-3 3-3zm8.5 12c.8 0 1.5-.7 1.5-1.5s-.7-1.5-1.5-1.5-1.5.7-1.5 1.5.7 1.5 1.5 1.5zm0-6c.8 0 1.5-.7 1.5-1.5S16.3 8 15.5 8 14 8.7 14 9.5s.7 1.5 1.5 1.5zm-4 3c.8 0 1.5-.7 1.5-1.5s-.7-1.5-1.5-1.5-1.5.7-1.5 1.5.7 1.5 1.5 1.5zm-4 3c.8 0 1.5-.7 1.5-1.5S8.3 14 7.5 14 6 14.7 6 15.5 6.7 17 7.5 17zm0-6c.8 0 1.5-.7 1.5-1.5S8.3 8 7.5 8 6 8.7 6 9.5 6.7 11 7.5 11z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/downTriangle-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/downTriangle-invert.svg index 53fc58192d..9c64f50cdf 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/downTriangle-invert.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/downTriangle-invert.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #fff }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff"> <path d="M12 18l8-10H4z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/downTriangle-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/downTriangle-progressive.svg index 6fe38de971..aaa6ec959c 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/downTriangle-progressive.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/downTriangle-progressive.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #36c }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c"> <path d="M12 18l8-10H4z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/download-ltr-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/download-ltr-invert.svg index 9c7573e66a..312b19efb5 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/download-ltr-invert.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/download-ltr-invert.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #fff }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff"> <path d="M16 11h-3V4c-1.7 0-3 1.3-3 3v4H7l4.5 5 4.5-5zm1 2v5H7c-.6 0-1-.4-1-1v-4H4v4c0 1.9 1.3 3 3 3h12v-7h-2z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/download-ltr-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/download-ltr-progressive.svg index 98a86bb884..8d6942398f 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/download-ltr-progressive.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/download-ltr-progressive.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #36c }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c"> <path d="M16 11h-3V4c-1.7 0-3 1.3-3 3v4H7l4.5 5 4.5-5zm1 2v5H7c-.6 0-1-.4-1-1v-4H4v4c0 1.9 1.3 3 3 3h12v-7h-2z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/download-rtl-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/download-rtl-invert.svg index a89fd52697..141ca5cfa1 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/download-rtl-invert.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/download-rtl-invert.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #fff }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff"> <path d="M7 11h3V4c1.7 0 3 1.3 3 3v4h3l-4.5 5L7 11zm-1 2v5h10c.6 0 1-.4 1-1v-4h2v4c0 1.9-1.3 3-3 3H4v-7h2z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/download-rtl-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/download-rtl-progressive.svg index c5cbee5537..4767dc10c8 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/download-rtl-progressive.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/download-rtl-progressive.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #36c }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c"> <path d="M7 11h3V4c1.7 0 3 1.3 3 3v4h3l-4.5 5L7 11zm-1 2v5h10c.6 0 1-.4 1-1v-4h2v4c0 1.9-1.3 3-3 3H4v-7h2z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/edit-ltr-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/edit-ltr-invert.svg index 1e9b853c9c..138f8e8eee 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/edit-ltr-invert.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/edit-ltr-invert.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #fff }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff"> <path d="M17 2L5 14l-1 5 5-1L21 6c0-2-2-4-4-4zM7.2 15.5c-.3-.3-.7-.6-1-.8C8.5 12.4 17.5 3.3 17.5 3.3c.4.1.7.3 1 .7L7.2 15.5z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/edit-ltr-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/edit-ltr-progressive.svg index c7e6f15d89..40446e9f5e 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/edit-ltr-progressive.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/edit-ltr-progressive.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #36c }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c"> <path d="M17 2L5 14l-1 5 5-1L21 6c0-2-2-4-4-4zM7.2 15.5c-.3-.3-.7-.6-1-.8C8.5 12.4 17.5 3.3 17.5 3.3c.4.1.7.3 1 .7L7.2 15.5z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/edit-rtl-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/edit-rtl-invert.svg index 36f6d48aa3..0b9a4afac2 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/edit-rtl-invert.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/edit-rtl-invert.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #fff }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff"> <path d="M8 2l12 12 1 5-5-1L4 6c0-2 2-4 4-4zm9.8 13.5c.3-.3.7-.6 1-.8C16.5 12.4 7.5 3.3 7.5 3.3c-.4.1-.7.3-1 .7l11.3 11.5z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/edit-rtl-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/edit-rtl-progressive.svg index a77a027646..8c0b879b5d 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/edit-rtl-progressive.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/edit-rtl-progressive.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #36c }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c"> <path d="M8 2l12 12 1 5-5-1L4 6c0-2 2-4 4-4zm9.8 13.5c.3-.3.7-.6 1-.8C16.5 12.4 7.5 3.3 7.5 3.3c-.4.1-.7.3-1 .7l11.3 11.5z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/editLock-ltr-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/editLock-ltr-invert.svg index 00a7670ae0..82b39cd147 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/editLock-ltr-invert.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/editLock-ltr-invert.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #fff }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff"> <path d="M21 4V3s0-3-3-3-3 3-3 3v1h-1v6h8V4zm-1.5 0h-3V3s0-1.5 1.5-1.5c1.48.06 1.5 1.5 1.5 1.5zM13 9.6l-6.8 6.9c-.3-.3-.7-.6-1-.8 1.4-1.4 5-5 7.8-7.9V6l-9 9-1 5 5-1 8-8h-3z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/editLock-ltr-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/editLock-ltr-progressive.svg index 335b9a5102..618debea31 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/editLock-ltr-progressive.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/editLock-ltr-progressive.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #36c }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c"> <path d="M21 4V3s0-3-3-3-3 3-3 3v1h-1v6h8V4zm-1.5 0h-3V3s0-1.5 1.5-1.5c1.48.06 1.5 1.5 1.5 1.5zM13 9.6l-6.8 6.9c-.3-.3-.7-.6-1-.8 1.4-1.4 5-5 7.8-7.9V6l-9 9-1 5 5-1 8-8h-3z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/editLock-rtl-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/editLock-rtl-invert.svg index 3d6c9f1f36..9b9f7656b8 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/editLock-rtl-invert.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/editLock-rtl-invert.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #fff }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff"> <path d="M4 4V3s0-3 3-3 3 3 3 3v1h1v6H3V4zm1.5 0h3V3s0-1.5-1.5-1.5C5.52 1.56 5.5 3 5.5 3zM12 9.6l6.8 6.9c.3-.3.7-.6 1-.8-1.4-1.4-5-5-7.8-7.9V6l9 9 1 5-5-1-8-8h3z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/editLock-rtl-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/editLock-rtl-progressive.svg index 96ad98d7f5..ad87acc703 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/editLock-rtl-progressive.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/editLock-rtl-progressive.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #36c }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c"> <path d="M4 4V3s0-3 3-3 3 3 3 3v1h1v6H3V4zm1.5 0h3V3s0-1.5-1.5-1.5C5.52 1.56 5.5 3 5.5 3zM12 9.6l6.8 6.9c.3-.3.7-.6 1-.8-1.4-1.4-5-5-7.8-7.9V6l9 9 1 5-5-1-8-8h3z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/editUndo-ltr-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/editUndo-ltr-invert.svg index 8b6022d6b2..a34235e248 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/editUndo-ltr-invert.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/editUndo-ltr-invert.svg @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #fff }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff"> <path d="M14.9 2.8c.9 0 1.8.2 2.7.6.9.4 1.6.9 1.9 1.6-2.8.1-5 1.1-6.6 3.1l1.3 2-6.7-.3L8 3l1.7 2c1.8-1.5 3.5-2.2 5.2-2.2z"/> <path d="M15.2 11.1l-2.6-.1-5.4 5.5c-.3-.3-.7-.6-1-.8.9-.9 2.8-2.8 4.7-4.8H9.1L5 15l-1 5 5-1 7.8-7.8-1.6-.1zM20.6 6c-1.7 0-3.2.5-4.4 1.4l-.9.9.8 1.3.9 1.4 4-4c0-.3-.1-.7-.2-1h-.2z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/editUndo-ltr-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/editUndo-ltr-progressive.svg index d231819926..c7d9bbe2cb 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/editUndo-ltr-progressive.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/editUndo-ltr-progressive.svg @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #36c }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c"> <path d="M14.9 2.8c.9 0 1.8.2 2.7.6.9.4 1.6.9 1.9 1.6-2.8.1-5 1.1-6.6 3.1l1.3 2-6.7-.3L8 3l1.7 2c1.8-1.5 3.5-2.2 5.2-2.2z"/> <path d="M15.2 11.1l-2.6-.1-5.4 5.5c-.3-.3-.7-.6-1-.8.9-.9 2.8-2.8 4.7-4.8H9.1L5 15l-1 5 5-1 7.8-7.8-1.6-.1zM20.6 6c-1.7 0-3.2.5-4.4 1.4l-.9.9.8 1.3.9 1.4 4-4c0-.3-.1-.7-.2-1h-.2z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/editUndo-rtl-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/editUndo-rtl-invert.svg index ff45759300..1aea7a823c 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/editUndo-rtl-invert.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/editUndo-rtl-invert.svg @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #fff }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff"> <path d="M10.1 2.8c-.9 0-1.8.2-2.7.6-.9.4-1.6.9-1.9 1.6 2.8.1 5 1.1 6.6 3.1l-1.3 2 6.7-.3L17 3l-1.7 2c-1.8-1.5-3.5-2.2-5.2-2.2z"/> <path d="M9.8 11.1l2.6-.1 5.4 5.5c.3-.3.7-.6 1-.8-.9-.9-2.8-2.8-4.7-4.8h1.8L20 15l1 5-5-1-7.8-7.8 1.6-.1zM4.4 6c1.7 0 3.2.5 4.4 1.4l.9.9-.8 1.3L8 11 4 7c0-.3.1-.7.2-1h.2z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/editUndo-rtl-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/editUndo-rtl-progressive.svg index fbb984baf8..a743341601 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/editUndo-rtl-progressive.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/editUndo-rtl-progressive.svg @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #36c }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c"> <path d="M10.1 2.8c-.9 0-1.8.2-2.7.6-.9.4-1.6.9-1.9 1.6 2.8.1 5 1.1 6.6 3.1l-1.3 2 6.7-.3L17 3l-1.7 2c-1.8-1.5-3.5-2.2-5.2-2.2z"/> <path d="M9.8 11.1l2.6-.1 5.4 5.5c.3-.3.7-.6 1-.8-.9-.9-2.8-2.8-4.7-4.8h1.8L20 15l1 5-5-1-7.8-7.8 1.6-.1zM4.4 6c1.7 0 3.2.5 4.4 1.4l.9.9-.8 1.3L8 11 4 7c0-.3.1-.7.2-1h.2z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/ellipsis-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/ellipsis-invert.svg index a2a651dc95..e5b0d24334 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/ellipsis-invert.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/ellipsis-invert.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #fff }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff"> <path d="M8 13c0 .6-.2 1-.6 1.4-.4.4-.9.6-1.4.6-.6 0-1-.2-1.4-.6-.4-.4-.6-.9-.6-1.4s.2-1 .6-1.4c.4-.4.9-.6 1.4-.6s1 .2 1.4.6c.4.4.6.9.6 1.4zM14 13c0 .6-.2 1-.6 1.4-.4.4-.9.6-1.4.6-.6 0-1-.2-1.4-.6-.4-.4-.6-.9-.6-1.4s.2-1 .6-1.4c.4-.4.9-.6 1.4-.6s1 .2 1.4.6c.4.4.6.9.6 1.4zM20 13c0 .6-.2 1-.6 1.4-.4.4-.9.6-1.4.6-.6 0-1-.2-1.4-.6-.4-.4-.6-.9-.6-1.4s.2-1 .6-1.4c.4-.4.9-.6 1.4-.6s1 .2 1.4.6c.4.4.6.9.6 1.4z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/ellipsis-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/ellipsis-progressive.svg index a56ec14222..0675f6e1ea 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/ellipsis-progressive.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/ellipsis-progressive.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #36c }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c"> <path d="M8 13c0 .6-.2 1-.6 1.4-.4.4-.9.6-1.4.6-.6 0-1-.2-1.4-.6-.4-.4-.6-.9-.6-1.4s.2-1 .6-1.4c.4-.4.9-.6 1.4-.6s1 .2 1.4.6c.4.4.6.9.6 1.4zM14 13c0 .6-.2 1-.6 1.4-.4.4-.9.6-1.4.6-.6 0-1-.2-1.4-.6-.4-.4-.6-.9-.6-1.4s.2-1 .6-1.4c.4-.4.9-.6 1.4-.6s1 .2 1.4.6c.4.4.6.9.6 1.4zM20 13c0 .6-.2 1-.6 1.4-.4.4-.9.6-1.4.6-.6 0-1-.2-1.4-.6-.4-.4-.6-.9-.6-1.4s.2-1 .6-1.4c.4-.4.9-.6 1.4-.6s1 .2 1.4.6c.4.4.6.9.6 1.4z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/expand-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/expand-invert.svg index 7c034f0baf..a8260aeac0 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/expand-invert.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/expand-invert.svg @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #fff }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff"> <g id="expand"> <path id="arrow" d="M17.303 8.283L12 13.586 6.697 8.283 5.283 9.697 12 16.414l6.717-6.717z"/> </g> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/expand-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/expand-progressive.svg index 13d3b243ba..e7f6aa5385 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/expand-progressive.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/expand-progressive.svg @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #36c }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c"> <g id="expand"> <path id="arrow" d="M17.303 8.283L12 13.586 6.697 8.283 5.283 9.697 12 16.414l6.717-6.717z"/> </g> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/external-link-ltr-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/external-link-ltr-invert.svg index af20a073f9..e9ddf2cbb2 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/external-link-ltr-invert.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/external-link-ltr-invert.svg @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #fff }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff"> <g id="external"> <path id="box" d="M4 4h6v2H6v12h12v-4h2v6H4z"/> <path id="arrow" d="M12.42 4H20v7.58l-2.84-2.846L12.892 13 11 11.106l4.264-4.266z"/> </g> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/external-link-ltr-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/external-link-ltr-progressive.svg index 6688713c2d..dcc296203c 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/external-link-ltr-progressive.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/external-link-ltr-progressive.svg @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #36c }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c"> <g id="external"> <path id="box" d="M4 4h6v2H6v12h12v-4h2v6H4z"/> <path id="arrow" d="M12.42 4H20v7.58l-2.84-2.846L12.892 13 11 11.106l4.264-4.266z"/> </g> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/external-link-rtl-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/external-link-rtl-invert.svg index 754374a01f..59cd0aab1f 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/external-link-rtl-invert.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/external-link-rtl-invert.svg @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #fff }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff"> <g id="external"> <path id="box" d="M20 4h-6v2h4v12H6v-4H4v6h16z"/> <path id="arrow" d="M11.58 4H4v7.58l2.84-2.846L11.108 13 13 11.106 8.736 6.84z"/> </g> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/external-link-rtl-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/external-link-rtl-progressive.svg index 440fbd2827..8d0cd2561f 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/external-link-rtl-progressive.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/external-link-rtl-progressive.svg @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #36c }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c"> <g id="external"> <path id="box" d="M20 4h-6v2h4v12H6v-4H4v6h16z"/> <path id="arrow" d="M11.58 4H4v7.58l2.84-2.846L11.108 13 13 11.106 8.736 6.84z"/> </g> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/eye-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/eye-invert.png index b4564780e6..4e11ebcb81 100644 Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/eye-invert.png and b/resources/lib/oojs-ui/themes/mediawiki/images/icons/eye-invert.png differ diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/eye-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/eye-invert.svg index 3a635166f1..158860e2b7 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/eye-invert.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/eye-invert.svg @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #fff }</style> - <path d="M12 8c-5 0-11 6-11 6s6 6 11 6 11-6 11-6-6-6-11-6zm0 10c-2.2 0-4-1.8-4-4s1.8-4 4-4 4 1.8 4 4-1.8 4-4 4z"/> - <circle cx="12" cy="14" r="2"/> -</svg> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff"> + <path id="sclera" d="M12 6C7 6 1 12 1 12s6 6 11 6 11-6 11-6-6-6-11-6zm0 10c-2.2 0-4-1.8-4-4s1.8-4 4-4 4 1.8 4 4-1.8 4-4 4z"/> + <circle id="pupil" r="2" cy="12" cx="12"/> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/eye-progressive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/eye-progressive.png index 383c78e96c..94524c044c 100644 Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/eye-progressive.png and b/resources/lib/oojs-ui/themes/mediawiki/images/icons/eye-progressive.png differ diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/eye-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/eye-progressive.svg index a9b1ddedae..ae456857ec 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/eye-progressive.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/eye-progressive.svg @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #36c }</style> - <path d="M12 8c-5 0-11 6-11 6s6 6 11 6 11-6 11-6-6-6-11-6zm0 10c-2.2 0-4-1.8-4-4s1.8-4 4-4 4 1.8 4 4-1.8 4-4 4z"/> - <circle cx="12" cy="14" r="2"/> -</svg> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c"> + <path id="sclera" d="M12 6C7 6 1 12 1 12s6 6 11 6 11-6 11-6-6-6-11-6zm0 10c-2.2 0-4-1.8-4-4s1.8-4 4-4 4 1.8 4 4-1.8 4-4 4z"/> + <circle id="pupil" r="2" cy="12" cx="12"/> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/eye.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/eye.png index 62c82c0b75..eb5f963534 100644 Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/eye.png and b/resources/lib/oojs-ui/themes/mediawiki/images/icons/eye.png differ diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/eye.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/eye.svg index 343e9cf5e2..cec85d0b83 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/eye.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/eye.svg @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8"?> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"> - <path d="M12 8c-5 0-11 6-11 6s6 6 11 6 11-6 11-6-6-6-11-6zm0 10c-2.2 0-4-1.8-4-4s1.8-4 4-4 4 1.8 4 4-1.8 4-4 4z"/> - <circle cx="12" cy="14" r="2"/> + <path id="sclera" d="M12 6C7 6 1 12 1 12s6 6 11 6 11-6 11-6-6-6-11-6zm0 10c-2.2 0-4-1.8-4-4s1.8-4 4-4 4 1.8 4 4-1.8 4-4 4z"/> + <circle id="pupil" r="2" cy="12" cx="12"/> </svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/eyeClosed-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/eyeClosed-invert.svg index e070981821..7e1567df97 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/eyeClosed-invert.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/eyeClosed-invert.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #fff }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff"> <path d="M19.4 12.7c.7-.8 1.2-1.7 1.4-2.7h-1.6c-.9 2.5-3.9 4.4-7.7 4.6h-.1c-3.7-.2-6.8-2.1-7.7-4.6H2.2c.2 1 .8 1.9 1.4 2.7l-2 2 .7.7 2-2c.8.6 1.7 1.2 2.7 1.7l-1 2.8.9.3 1-2.8c1 .3 2 .6 3.1.6v3h1v-3c1.1-.1 2.2-.3 3.1-.6l1 2.8.9-.3-1-2.8c1-.4 1.9-1 2.6-1.7l2 2 .7-.7-1.9-2z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/eyeClosed-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/eyeClosed-progressive.svg index 4515bdbf1b..5d0d44d56f 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/eyeClosed-progressive.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/eyeClosed-progressive.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #36c }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c"> <path d="M19.4 12.7c.7-.8 1.2-1.7 1.4-2.7h-1.6c-.9 2.5-3.9 4.4-7.7 4.6h-.1c-3.7-.2-6.8-2.1-7.7-4.6H2.2c.2 1 .8 1.9 1.4 2.7l-2 2 .7.7 2-2c.8.6 1.7 1.2 2.7 1.7l-1 2.8.9.3 1-2.8c1 .3 2 .6 3.1.6v3h1v-3c1.1-.1 2.2-.3 3.1-.6l1 2.8.9-.3-1-2.8c1-.4 1.9-1 2.6-1.7l2 2 .7-.7-1.9-2z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/feedback-ltr-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/feedback-ltr-invert.png new file mode 100644 index 0000000000..f49ebeb0a9 Binary files /dev/null and b/resources/lib/oojs-ui/themes/mediawiki/images/icons/feedback-ltr-invert.png differ diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/feedback-ltr-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/feedback-ltr-invert.svg new file mode 100644 index 0000000000..8ed4be98ea --- /dev/null +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/feedback-ltr-invert.svg @@ -0,0 +1,4 @@ +<?xml version="1.0" encoding="utf-8"?> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff"> + <path d="M8.202 15.834l.568 2.101c.198.765 1.06 1.22 1.8 1.016.698-.193 1.125-.983.926-1.747l-.38-1.37H20L17.229 5 4.155 12.652c-.427.762.088 2.748.823 3.182h3.224z"/> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/feedback-ltr-progressive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/feedback-ltr-progressive.png new file mode 100644 index 0000000000..28405a8dab Binary files /dev/null and b/resources/lib/oojs-ui/themes/mediawiki/images/icons/feedback-ltr-progressive.png differ diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/feedback-ltr-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/feedback-ltr-progressive.svg new file mode 100644 index 0000000000..49425d087a --- /dev/null +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/feedback-ltr-progressive.svg @@ -0,0 +1,4 @@ +<?xml version="1.0" encoding="utf-8"?> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c"> + <path d="M8.202 15.834l.568 2.101c.198.765 1.06 1.22 1.8 1.016.698-.193 1.125-.983.926-1.747l-.38-1.37H20L17.229 5 4.155 12.652c-.427.762.088 2.748.823 3.182h3.224z"/> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/feedback-ltr.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/feedback-ltr.png new file mode 100644 index 0000000000..ac5787bdd5 Binary files /dev/null and b/resources/lib/oojs-ui/themes/mediawiki/images/icons/feedback-ltr.png differ diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/feedback-ltr.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/feedback-ltr.svg new file mode 100644 index 0000000000..0fdeed9a8e --- /dev/null +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/feedback-ltr.svg @@ -0,0 +1,4 @@ +<?xml version="1.0" encoding="utf-8"?> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"> + <path d="M8.202 15.834l.568 2.101c.198.765 1.06 1.22 1.8 1.016.698-.193 1.125-.983.926-1.747l-.38-1.37H20L17.229 5 4.155 12.652c-.427.762.088 2.748.823 3.182h3.224z"/> +</svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/feedback-rtl-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/feedback-rtl-invert.png new file mode 100644 index 0000000000..efba220b26 Binary files /dev/null and b/resources/lib/oojs-ui/themes/mediawiki/images/icons/feedback-rtl-invert.png differ diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/feedback-rtl-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/feedback-rtl-invert.svg new file mode 100644 index 0000000000..f4e7932a97 --- /dev/null +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/feedback-rtl-invert.svg @@ -0,0 +1,4 @@ +<?xml version="1.0" encoding="utf-8"?> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff"> + <path d="M15.798 15.834l-.568 2.101c-.198.765-1.06 1.22-1.8 1.016-.698-.193-1.125-.983-.926-1.747l.38-1.37H4L6.771 5l13.074 7.652c.427.762-.088 2.748-.823 3.182h-3.224z"/> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/feedback-rtl-progressive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/feedback-rtl-progressive.png new file mode 100644 index 0000000000..27bcc2d020 Binary files /dev/null and b/resources/lib/oojs-ui/themes/mediawiki/images/icons/feedback-rtl-progressive.png differ diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/feedback-rtl-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/feedback-rtl-progressive.svg new file mode 100644 index 0000000000..413ea34e66 --- /dev/null +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/feedback-rtl-progressive.svg @@ -0,0 +1,4 @@ +<?xml version="1.0" encoding="utf-8"?> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c"> + <path d="M15.798 15.834l-.568 2.101c-.198.765-1.06 1.22-1.8 1.016-.698-.193-1.125-.983-.926-1.747l.38-1.37H4L6.771 5l13.074 7.652c.427.762-.088 2.748-.823 3.182h-3.224z"/> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/feedback-rtl.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/feedback-rtl.png new file mode 100644 index 0000000000..fdbe5e1e78 Binary files /dev/null and b/resources/lib/oojs-ui/themes/mediawiki/images/icons/feedback-rtl.png differ diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/feedback-rtl.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/feedback-rtl.svg new file mode 100644 index 0000000000..022d86d10f --- /dev/null +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/feedback-rtl.svg @@ -0,0 +1,4 @@ +<?xml version="1.0" encoding="utf-8"?> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"> + <path d="M15.798 15.834l-.568 2.101c-.198.765-1.06 1.22-1.8 1.016-.698-.193-1.125-.983-.926-1.747l.38-1.37H4L6.771 5l13.074 7.652c.427.762-.088 2.748-.823 3.182h-3.224z"/> +</svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/find-ltr-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/find-ltr-invert.svg index 5df95e9187..928e9546df 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/find-ltr-invert.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/find-ltr-invert.svg @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #fff }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff"> <g id="find"> <path id="magnifying-glass" d="M13.656 11c-1.92 0-3.5 1.548-3.5 3.47 0 1.92 1.58 3.5 3.5 3.5.75 0 1.432-.253 2-.657l.094.156 2.375 2.37c.19.19.534.15.78-.096s.315-.59.126-.78l-2.37-2.377-.185-.094a3.545 3.545 0 0 0 .655-2.03c0-1.92-1.55-3.47-3.47-3.47zm0 1.656a1.8 1.8 0 0 1 1.813 1.813 1.83 1.83 0 0 1-1.82 1.84c-1.01 0-1.844-.83-1.844-1.847s.832-1.814 1.844-1.814z"/> <path id="text" d="M6 5v2h10V5H6zm0 3v2h11V8H6zm0 3v2h3.53a4.443 4.443 0 0 1 1.44-2H6zm0 3v2h3.53c-.177-.48-.28-.99-.28-1.53 0-.16.046-.315.063-.47H6z"/> </g> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/find-ltr-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/find-ltr-progressive.svg index b13bef89ea..65fc2982e4 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/find-ltr-progressive.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/find-ltr-progressive.svg @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #36c }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c"> <g id="find"> <path id="magnifying-glass" d="M13.656 11c-1.92 0-3.5 1.548-3.5 3.47 0 1.92 1.58 3.5 3.5 3.5.75 0 1.432-.253 2-.657l.094.156 2.375 2.37c.19.19.534.15.78-.096s.315-.59.126-.78l-2.37-2.377-.185-.094a3.545 3.545 0 0 0 .655-2.03c0-1.92-1.55-3.47-3.47-3.47zm0 1.656a1.8 1.8 0 0 1 1.813 1.813 1.83 1.83 0 0 1-1.82 1.84c-1.01 0-1.844-.83-1.844-1.847s.832-1.814 1.844-1.814z"/> <path id="text" d="M6 5v2h10V5H6zm0 3v2h11V8H6zm0 3v2h3.53a4.443 4.443 0 0 1 1.44-2H6zm0 3v2h3.53c-.177-.48-.28-.99-.28-1.53 0-.16.046-.315.063-.47H6z"/> </g> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/find-rtl-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/find-rtl-invert.svg index 62770167ca..612c1dcf27 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/find-rtl-invert.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/find-rtl-invert.svg @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #fff }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff"> <g id="find"> <path id="magnifying-glass" d="M11.344 11c1.92 0 3.5 1.548 3.5 3.47 0 1.92-1.58 3.5-3.5 3.5-.75 0-1.432-.253-2-.657l-.094.156-2.375 2.37c-.19.19-.534.15-.78-.096s-.315-.59-.126-.78l2.37-2.377.185-.094a3.545 3.545 0 0 1-.655-2.03c0-1.92 1.55-3.47 3.47-3.47zm0 1.656A1.8 1.8 0 0 0 9.53 14.47c0 1.01.806 1.84 1.818 1.84 1.01 0 1.844-.83 1.844-1.845s-.832-1.814-1.844-1.814z"/> <path id="text" d="M19 5v2H9V5zm0 3v2H8V8zm0 3v2h-3.53a4.443 4.443 0 0 0-1.44-2zm0 3v2h-3.53c.177-.48.28-.99.28-1.53 0-.16-.046-.315-.063-.47z"/> </g> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/find-rtl-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/find-rtl-progressive.svg index 6e21dcc9ad..f18e0adda5 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/find-rtl-progressive.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/find-rtl-progressive.svg @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #36c }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c"> <g id="find"> <path id="magnifying-glass" d="M11.344 11c1.92 0 3.5 1.548 3.5 3.47 0 1.92-1.58 3.5-3.5 3.5-.75 0-1.432-.253-2-.657l-.094.156-2.375 2.37c-.19.19-.534.15-.78-.096s-.315-.59-.126-.78l2.37-2.377.185-.094a3.545 3.545 0 0 1-.655-2.03c0-1.92 1.55-3.47 3.47-3.47zm0 1.656A1.8 1.8 0 0 0 9.53 14.47c0 1.01.806 1.84 1.818 1.84 1.01 0 1.844-.83 1.844-1.845s-.832-1.814-1.844-1.814z"/> <path id="text" d="M19 5v2H9V5zm0 3v2H8V8zm0 3v2h-3.53a4.443 4.443 0 0 0-1.44-2zm0 3v2h-3.53c.177-.48.28-.99.28-1.53 0-.16-.046-.315-.063-.47z"/> </g> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/flag-ltr-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/flag-ltr-invert.svg index 659d524d8f..f6c22133e5 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/flag-ltr-invert.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/flag-ltr-invert.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #fff }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff"> <path d="M14 6.5V5c-1.4-1.5-5.2-1.2-6 0V4H7v15h1v-7c.8-.8 3.4-.9 5-.5V13c1.2 1.5 4.3 1.2 5 0V6c-.7.7-2.7.9-4 .5z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/flag-ltr-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/flag-ltr-progressive.svg index 0d94ea8c25..c1f681ab4c 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/flag-ltr-progressive.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/flag-ltr-progressive.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #36c }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c"> <path d="M14 6.5V5c-1.4-1.5-5.2-1.2-6 0V4H7v15h1v-7c.8-.8 3.4-.9 5-.5V13c1.2 1.5 4.3 1.2 5 0V6c-.7.7-2.7.9-4 .5z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/flag-rtl-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/flag-rtl-invert.svg index bc0df6ca4d..ce147ec35b 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/flag-rtl-invert.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/flag-rtl-invert.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #fff }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff"> <path d="M10.3 7.5V6c1.4-1.5 5.2-1.2 6 0V5h1v15h-1v-7c-.8-.8-3.4-.9-5-.5V14c-1.2 1.5-4.3 1.2-5 0V7c.7.7 2.7.9 4 .5z"/> -</svg> \ No newline at end of file +</g></svg> \ No newline at end of file diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/flag-rtl-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/flag-rtl-progressive.svg index 1c0e5723e0..661f23424c 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/flag-rtl-progressive.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/flag-rtl-progressive.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #36c }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c"> <path d="M10.3 7.5V6c1.4-1.5 5.2-1.2 6 0V5h1v15h-1v-7c-.8-.8-3.4-.9-5-.5V14c-1.2 1.5-4.3 1.2-5 0V7c.7.7 2.7.9 4 .5z"/> -</svg> \ No newline at end of file +</g></svg> \ No newline at end of file diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/folderPlaceholder-ltr-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/folderPlaceholder-ltr-invert.svg index 641d37b504..4c6d4021e2 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/folderPlaceholder-ltr-invert.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/folderPlaceholder-ltr-invert.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #fff }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff"> <path d="M2 5v15h20V5H2zm15 11H8c-.6 0-1-.4-1-1V9h3l2 1h5v6z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/folderPlaceholder-ltr-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/folderPlaceholder-ltr-progressive.svg index af577c60c8..e1f8be316f 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/folderPlaceholder-ltr-progressive.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/folderPlaceholder-ltr-progressive.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #36c }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c"> <path d="M2 5v15h20V5H2zm15 11H8c-.6 0-1-.4-1-1V9h3l2 1h5v6z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/folderPlaceholder-rtl-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/folderPlaceholder-rtl-invert.svg index 1f27fdb285..d2bfb083da 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/folderPlaceholder-rtl-invert.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/folderPlaceholder-rtl-invert.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #fff }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff"> <path d="M22 5v15H2V5h20zM7 16h9c.6 0 1-.4 1-1V9h-3l-2 1H7v6z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/folderPlaceholder-rtl-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/folderPlaceholder-rtl-progressive.svg index 30e27f9dcb..ba0eb3be04 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/folderPlaceholder-rtl-progressive.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/folderPlaceholder-rtl-progressive.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #36c }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c"> <path d="M22 5v15H2V5h20zM7 16h9c.6 0 1-.4 1-1V9h-3l-2 1H7v6z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/fullScreen-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/fullScreen-invert.svg index 3012dd90f3..588bef07ea 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/fullScreen-invert.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/fullScreen-invert.svg @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #fff }</style> +<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff"> <path id="arrow" d="M6 6v4l1.28-1.28 2 2 1.423-1.44-2-2L10 6z"/> <use transform="rotate(90 12 12)" xlink:href="#arrow"/> <use transform="rotate(180 12 12)" xlink:href="#arrow"/> <use transform="rotate(-90 12 12)" xlink:href="#arrow"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/fullScreen-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/fullScreen-progressive.svg index 53adc94193..a9a0aa04cb 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/fullScreen-progressive.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/fullScreen-progressive.svg @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #36c }</style> +<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c"> <path id="arrow" d="M6 6v4l1.28-1.28 2 2 1.423-1.44-2-2L10 6z"/> <use transform="rotate(90 12 12)" xlink:href="#arrow"/> <use transform="rotate(180 12 12)" xlink:href="#arrow"/> <use transform="rotate(-90 12 12)" xlink:href="#arrow"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/funnel-ltr-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/funnel-ltr-invert.svg index 82156c438b..cffafb73ca 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/funnel-ltr-invert.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/funnel-ltr-invert.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #fff }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff"> <path d="M11 13L5 6h15l-6 7v7c-1.7 0-3-1.3-3-3v-4z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/funnel-ltr-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/funnel-ltr-progressive.svg index 646c6c2884..9ef43f0180 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/funnel-ltr-progressive.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/funnel-ltr-progressive.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #36c }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c"> <path d="M11 13L5 6h15l-6 7v7c-1.7 0-3-1.3-3-3v-4z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/funnel-rtl-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/funnel-rtl-invert.svg index 94f0385c82..64a71fac54 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/funnel-rtl-invert.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/funnel-rtl-invert.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #fff }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff"> <path d="M14 13l6-7H5l6 7v7c1.7 0 3-1.3 3-3v-4z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/funnel-rtl-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/funnel-rtl-progressive.svg index 0e016df936..b44b385dce 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/funnel-rtl-progressive.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/funnel-rtl-progressive.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #36c }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c"> <path d="M14 13l6-7H5l6 7v7c1.7 0 3-1.3 3-3v-4z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/halfBright-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/halfBright-invert.svg index 95b83c2c79..82f466ebe4 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/halfBright-invert.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/halfBright-invert.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #ffffff }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#ffffff"> <path d="M11.4 5.4V2.2c.3 0 .6.1.9.4.3.3.4.5.4.8v2h-1.3zm-5.2-.5c.3 0 .6.1.8.3l1.4 1.4-.8.9-2.2-2.3c.2-.2.5-.3.8-.3zm5.2 11.7h1.2v3.2c-.3 0-.6-.1-.9-.4-.3-.3-.4-.5-.4-.8l.1-2zm-7-6.2h2v1.2H3.2c0-.3.1-.6.4-.9.3-.3.5-.3.8-.3zM6.2 16l1.4-1.4.8.8-2.2 2.2c-.2-.2-.3-.5-.3-.8 0-.3.1-.6.3-.8zM12 7c-2.2 0-4 1.8-4 4s1.8 4 4 4 4-1.8 4-4-1.8-4-4-4zm-3 4c0-1.7 1.3-3 3-3v6c-1.7 0-3-1.3-3-3z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/halfStar-ltr-constructive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/halfStar-ltr-constructive.png new file mode 100644 index 0000000000..57dfe5303f Binary files /dev/null and b/resources/lib/oojs-ui/themes/mediawiki/images/icons/halfStar-ltr-constructive.png differ diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/halfStar-ltr-constructive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/halfStar-ltr-constructive.svg new file mode 100644 index 0000000000..dbdacc6f9b --- /dev/null +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/halfStar-ltr-constructive.svg @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="utf-8"?> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c"> + <path d="M12 7.4l1.7 3.6 4 .5-2.7 2.8.5 3.9-3.5-1.7-3.6 1.7.6-3.9-2.8-2.8 3.9-.5L12 7.4M12 4L9.2 9.6l-6.2.9 4.5 4.4L6.4 21l5.6-3 5.5 3-1-6.2 4.5-4.4-6.3-.9L12 4z"/> + <path d="M10.1 11l-3.9.5L9 14.3l-.6 3.9 3.6-1.7-.1-9z"/> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/halfStar-ltr-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/halfStar-ltr-invert.png new file mode 100644 index 0000000000..f28e35d3b0 Binary files /dev/null and b/resources/lib/oojs-ui/themes/mediawiki/images/icons/halfStar-ltr-invert.png differ diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/halfStar-ltr-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/halfStar-ltr-invert.svg new file mode 100644 index 0000000000..febf50072e --- /dev/null +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/halfStar-ltr-invert.svg @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="utf-8"?> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff"> + <path d="M12 7.4l1.7 3.6 4 .5-2.7 2.8.5 3.9-3.5-1.7-3.6 1.7.6-3.9-2.8-2.8 3.9-.5L12 7.4M12 4L9.2 9.6l-6.2.9 4.5 4.4L6.4 21l5.6-3 5.5 3-1-6.2 4.5-4.4-6.3-.9L12 4z"/> + <path d="M10.1 11l-3.9.5L9 14.3l-.6 3.9 3.6-1.7-.1-9z"/> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/halfStar-ltr-progressive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/halfStar-ltr-progressive.png new file mode 100644 index 0000000000..57dfe5303f Binary files /dev/null and b/resources/lib/oojs-ui/themes/mediawiki/images/icons/halfStar-ltr-progressive.png differ diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/halfStar-ltr-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/halfStar-ltr-progressive.svg new file mode 100644 index 0000000000..dbdacc6f9b --- /dev/null +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/halfStar-ltr-progressive.svg @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="utf-8"?> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c"> + <path d="M12 7.4l1.7 3.6 4 .5-2.7 2.8.5 3.9-3.5-1.7-3.6 1.7.6-3.9-2.8-2.8 3.9-.5L12 7.4M12 4L9.2 9.6l-6.2.9 4.5 4.4L6.4 21l5.6-3 5.5 3-1-6.2 4.5-4.4-6.3-.9L12 4z"/> + <path d="M10.1 11l-3.9.5L9 14.3l-.6 3.9 3.6-1.7-.1-9z"/> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/halfStar-ltr.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/halfStar-ltr.png new file mode 100644 index 0000000000..d52a908076 Binary files /dev/null and b/resources/lib/oojs-ui/themes/mediawiki/images/icons/halfStar-ltr.png differ diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/halfStar-ltr.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/halfStar-ltr.svg new file mode 100644 index 0000000000..cfb17d8c52 --- /dev/null +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/halfStar-ltr.svg @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="utf-8"?> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"> + <path d="M12 7.4l1.7 3.6 4 .5-2.7 2.8.5 3.9-3.5-1.7-3.6 1.7.6-3.9-2.8-2.8 3.9-.5L12 7.4M12 4L9.2 9.6l-6.2.9 4.5 4.4L6.4 21l5.6-3 5.5 3-1-6.2 4.5-4.4-6.3-.9L12 4z"/> + <path d="M10.1 11l-3.9.5L9 14.3l-.6 3.9 3.6-1.7-.1-9z"/> +</svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/halfStar-rtl-constructive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/halfStar-rtl-constructive.png new file mode 100644 index 0000000000..d24672a2dd Binary files /dev/null and b/resources/lib/oojs-ui/themes/mediawiki/images/icons/halfStar-rtl-constructive.png differ diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/halfStar-rtl-constructive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/halfStar-rtl-constructive.svg new file mode 100644 index 0000000000..2f458168cb --- /dev/null +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/halfStar-rtl-constructive.svg @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="utf-8"?> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c"> + <path d="M12 7.4L10.3 11l-4 .5L9 14.3l-.5 3.9 3.5-1.7 3.6 1.7-.6-3.9 2.8-2.8-3.9-.5L12 7.4M12 4l2.8 5.6 6.2.9-4.5 4.4 1.1 6.1-5.6-3-5.5 3 1-6.2L3 10.4l6.3-.9L12 4z"/> + <path d="M12.1 7.5l1.8 3.5 3.9.5-2.8 2.8.6 3.9-3.6-1.7z"/> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/halfStar-rtl-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/halfStar-rtl-invert.png new file mode 100644 index 0000000000..c9429ae31f Binary files /dev/null and b/resources/lib/oojs-ui/themes/mediawiki/images/icons/halfStar-rtl-invert.png differ diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/halfStar-rtl-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/halfStar-rtl-invert.svg new file mode 100644 index 0000000000..11b99dfe2e --- /dev/null +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/halfStar-rtl-invert.svg @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="utf-8"?> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff"> + <path d="M12 7.4L10.3 11l-4 .5L9 14.3l-.5 3.9 3.5-1.7 3.6 1.7-.6-3.9 2.8-2.8-3.9-.5L12 7.4M12 4l2.8 5.6 6.2.9-4.5 4.4 1.1 6.1-5.6-3-5.5 3 1-6.2L3 10.4l6.3-.9L12 4z"/> + <path d="M12.1 7.5l1.8 3.5 3.9.5-2.8 2.8.6 3.9-3.6-1.7z"/> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/halfStar-rtl-progressive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/halfStar-rtl-progressive.png new file mode 100644 index 0000000000..d24672a2dd Binary files /dev/null and b/resources/lib/oojs-ui/themes/mediawiki/images/icons/halfStar-rtl-progressive.png differ diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/halfStar-rtl-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/halfStar-rtl-progressive.svg new file mode 100644 index 0000000000..2f458168cb --- /dev/null +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/halfStar-rtl-progressive.svg @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="utf-8"?> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c"> + <path d="M12 7.4L10.3 11l-4 .5L9 14.3l-.5 3.9 3.5-1.7 3.6 1.7-.6-3.9 2.8-2.8-3.9-.5L12 7.4M12 4l2.8 5.6 6.2.9-4.5 4.4 1.1 6.1-5.6-3-5.5 3 1-6.2L3 10.4l6.3-.9L12 4z"/> + <path d="M12.1 7.5l1.8 3.5 3.9.5-2.8 2.8.6 3.9-3.6-1.7z"/> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/halfStar-rtl.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/halfStar-rtl.png new file mode 100644 index 0000000000..4991b65cfd Binary files /dev/null and b/resources/lib/oojs-ui/themes/mediawiki/images/icons/halfStar-rtl.png differ diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/halfStar-rtl.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/halfStar-rtl.svg new file mode 100644 index 0000000000..c649b50512 --- /dev/null +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/halfStar-rtl.svg @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="utf-8"?> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"> + <path d="M12 7.4L10.3 11l-4 .5L9 14.3l-.5 3.9 3.5-1.7 3.6 1.7-.6-3.9 2.8-2.8-3.9-.5L12 7.4M12 4l2.8 5.6 6.2.9-4.5 4.4 1.1 6.1-5.6-3-5.5 3 1-6.2L3 10.4l6.3-.9L12 4z"/> + <path d="M12.1 7.5l1.8 3.5 3.9.5-2.8 2.8.6 3.9-3.6-1.7z"/> +</svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/heart-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/heart-invert.svg index 817b768e5e..1607febd55 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/heart-invert.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/heart-invert.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #fff }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff"> <path d="M15 7c-2 0-3 2-3 2s-1-2-3-2c-2.5 0-4 2-4 4 0 4 5 5 7 8 2-3 7-4 7-8 0-2-1.5-4-4-4z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/heart-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/heart-progressive.svg index 6fbe26757e..816e672d61 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/heart-progressive.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/heart-progressive.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #36c }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c"> <path d="M15 7c-2 0-3 2-3 2s-1-2-3-2c-2.5 0-4 2-4 4 0 4 5 5 7 8 2-3 7-4 7-8 0-2-1.5-4-4-4z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/help-ltr-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/help-ltr-invert.svg index 385bb7b7bc..7e0a6581fe 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/help-ltr-invert.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/help-ltr-invert.svg @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #fff }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff"> <g id="help"> <path id="circle" d="M12 2.085c-5.477 0-9.915 4.438-9.915 9.916 0 5.48 4.438 9.92 9.916 9.92 5.48 0 9.92-4.44 9.92-9.913 0-5.477-4.44-9.915-9.913-9.915zm.002 18a8.084 8.084 0 1 1 0-16.168 8.084 8.084 0 0 1 0 16.168z"/> <g id="question-mark"> @@ -7,4 +7,4 @@ <path id="bottom" d="M11 16h2v2h-2z"/> </g> </g> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/help-ltr-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/help-ltr-progressive.svg index 863d2021ee..8a2e3caf1a 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/help-ltr-progressive.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/help-ltr-progressive.svg @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #36c }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c"> <g id="help"> <path id="circle" d="M12 2.085c-5.477 0-9.915 4.438-9.915 9.916 0 5.48 4.438 9.92 9.916 9.92 5.48 0 9.92-4.44 9.92-9.913 0-5.477-4.44-9.915-9.913-9.915zm.002 18a8.084 8.084 0 1 1 0-16.168 8.084 8.084 0 0 1 0 16.168z"/> <g id="question-mark"> @@ -7,4 +7,4 @@ <path id="bottom" d="M11 16h2v2h-2z"/> </g> </g> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/help-rtl-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/help-rtl-invert.svg index 9c6c365426..2d78cb84b4 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/help-rtl-invert.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/help-rtl-invert.svg @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #fff }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff"> <g id="help"> <path id="circle" d="M12 2.085c5.477 0 9.915 4.438 9.915 9.916 0 5.48-4.438 9.92-9.916 9.92-5.48 0-9.92-4.44-9.92-9.913 0-5.477 4.44-9.915 9.913-9.915zm-.002 18a8.084 8.084 0 1 0 0-16.168 8.084 8.084 0 0 0 0 16.168z"/> <g id="question-mark"> @@ -7,4 +7,4 @@ <path id="bottom" d="M13 16h-2v2h2z"/> </g> </g> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/help-rtl-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/help-rtl-progressive.svg index 9dd7edfa33..878c72c443 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/help-rtl-progressive.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/help-rtl-progressive.svg @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #36c }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c"> <g id="help"> <path id="circle" d="M12 2.085c5.477 0 9.915 4.438 9.915 9.916 0 5.48-4.438 9.92-9.916 9.92-5.48 0-9.92-4.44-9.92-9.913 0-5.477 4.44-9.915 9.913-9.915zm-.002 18a8.084 8.084 0 1 0 0-16.168 8.084 8.084 0 0 0 0 16.168z"/> <g id="question-mark"> @@ -7,4 +7,4 @@ <path id="bottom" d="M13 16h-2v2h2z"/> </g> </g> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/highlight-ltr-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/highlight-ltr-invert.png new file mode 100644 index 0000000000..314d7acb85 Binary files /dev/null and b/resources/lib/oojs-ui/themes/mediawiki/images/icons/highlight-ltr-invert.png differ diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/highlight-ltr-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/highlight-ltr-invert.svg new file mode 100644 index 0000000000..e301deaf1d --- /dev/null +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/highlight-ltr-invert.svg @@ -0,0 +1,4 @@ +<?xml version="1.0" encoding="utf-8"?> +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" height="24" width="24"><g fill="#fff"> + <path d="M5.066 18.236l.14-.244c.976-1.69 1.341-4.587.815-6.469l-.14-.507.2-.365L11.074 2l9.011 5.203-4.994 8.65-.204.354-.522.134c-1.893.485-4.22 2.252-5.195 3.94l-.14.244-.721-.416-1.041 1.89H3.914l1.893-3.336z" fill-rule="evenodd"/> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/highlight-ltr-progressive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/highlight-ltr-progressive.png new file mode 100644 index 0000000000..14bd7becfc Binary files /dev/null and b/resources/lib/oojs-ui/themes/mediawiki/images/icons/highlight-ltr-progressive.png differ diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/highlight-ltr-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/highlight-ltr-progressive.svg new file mode 100644 index 0000000000..4cc90b523a --- /dev/null +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/highlight-ltr-progressive.svg @@ -0,0 +1,4 @@ +<?xml version="1.0" encoding="utf-8"?> +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" height="24" width="24"><g fill="#36c"> + <path d="M5.066 18.236l.14-.244c.976-1.69 1.341-4.587.815-6.469l-.14-.507.2-.365L11.074 2l9.011 5.203-4.994 8.65-.204.354-.522.134c-1.893.485-4.22 2.252-5.195 3.94l-.14.244-.721-.416-1.041 1.89H3.914l1.893-3.336z" fill-rule="evenodd"/> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/highlight-ltr.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/highlight-ltr.png new file mode 100644 index 0000000000..73dd6b9c91 Binary files /dev/null and b/resources/lib/oojs-ui/themes/mediawiki/images/icons/highlight-ltr.png differ diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/highlight-ltr.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/highlight-ltr.svg new file mode 100644 index 0000000000..eb42923d68 --- /dev/null +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/highlight-ltr.svg @@ -0,0 +1,4 @@ +<?xml version="1.0" encoding="utf-8"?> +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" height="24" width="24"> + <path d="M5.066 18.236l.14-.244c.976-1.69 1.341-4.587.815-6.469l-.14-.507.2-.365L11.074 2l9.011 5.203-4.994 8.65-.204.354-.522.134c-1.893.485-4.22 2.252-5.195 3.94l-.14.244-.721-.416-1.041 1.89H3.914l1.893-3.336z" fill-rule="evenodd"/> +</svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/highlight-rtl-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/highlight-rtl-invert.png new file mode 100644 index 0000000000..024595e2f8 Binary files /dev/null and b/resources/lib/oojs-ui/themes/mediawiki/images/icons/highlight-rtl-invert.png differ diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/highlight-rtl-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/highlight-rtl-invert.svg new file mode 100644 index 0000000000..46d61c2258 --- /dev/null +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/highlight-rtl-invert.svg @@ -0,0 +1,4 @@ +<?xml version="1.0" encoding="utf-8"?> +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" height="24" width="24"><g fill="#fff"> + <path d="M18.934 18.236l-.14-.244c-.976-1.69-1.341-4.587-.815-6.469l.14-.507-.2-.365L12.926 2 3.914 7.203l4.994 8.65.204.354.522.134c1.893.485 4.22 2.252 5.195 3.94l.14.244.721-.416 1.041 1.89h3.355l-1.893-3.336z" fill-rule="evenodd"/> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/highlight-rtl-progressive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/highlight-rtl-progressive.png new file mode 100644 index 0000000000..039ccbe720 Binary files /dev/null and b/resources/lib/oojs-ui/themes/mediawiki/images/icons/highlight-rtl-progressive.png differ diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/highlight-rtl-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/highlight-rtl-progressive.svg new file mode 100644 index 0000000000..4f3997a944 --- /dev/null +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/highlight-rtl-progressive.svg @@ -0,0 +1,4 @@ +<?xml version="1.0" encoding="utf-8"?> +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" height="24" width="24"><g fill="#36c"> + <path d="M18.934 18.236l-.14-.244c-.976-1.69-1.341-4.587-.815-6.469l.14-.507-.2-.365L12.926 2 3.914 7.203l4.994 8.65.204.354.522.134c1.893.485 4.22 2.252 5.195 3.94l.14.244.721-.416 1.041 1.89h3.355l-1.893-3.336z" fill-rule="evenodd"/> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/highlight-rtl.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/highlight-rtl.png new file mode 100644 index 0000000000..2ea298305f Binary files /dev/null and b/resources/lib/oojs-ui/themes/mediawiki/images/icons/highlight-rtl.png differ diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/highlight-rtl.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/highlight-rtl.svg new file mode 100644 index 0000000000..9b1940ebef --- /dev/null +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/highlight-rtl.svg @@ -0,0 +1,4 @@ +<?xml version="1.0" encoding="utf-8"?> +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" height="24" width="24"> + <path d="M18.934 18.236l-.14-.244c-.976-1.69-1.341-4.587-.815-6.469l.14-.507-.2-.365L12.926 2 3.914 7.203l4.994 8.65.204.354.522.134c1.893.485 4.22 2.252 5.195 3.94l.14.244.721-.416 1.041 1.89h3.355l-1.893-3.336z" fill-rule="evenodd"/> +</svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/history-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/history-invert.svg index 900a565752..fa0a150f3b 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/history-invert.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/history-invert.svg @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #fff }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff"> <g id="history"> <path id="clock-hands" d="M17.26 15.076s-2.385-1.935-4.005-3.062c.72-2.397 1.702-6.56 1.702-6.56s-4.35 5.364-4.877 6.7c-.463 1.168 1.46 2.21 2.346 1.678 1.9.55 4.834 1.244 4.834 1.244z"/> <path id="arrow" d="M12.086 2.085C6.608 2.085 2.17 6.523 2.17 12a9.86 9.86 0 0 0 1.3 4.9l-2.22 2.04h5.688v-5.22L4.87 15.616A7.982 7.982 0 0 1 4.004 12a8.084 8.084 0 0 1 16.167.004 8.08 8.08 0 0 1-8.08 8.085 7.975 7.975 0 0 1-3.21-.68L8.05 21.04a9.81 9.81 0 0 0 4.045.874C17.563 21.914 22 17.476 22 12c0-5.477-4.438-9.915-9.914-9.915z"/> </g> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/history-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/history-progressive.svg index 29f0c89666..bd26dfb369 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/history-progressive.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/history-progressive.svg @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #36c }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c"> <g id="history"> <path id="clock-hands" d="M17.26 15.076s-2.385-1.935-4.005-3.062c.72-2.397 1.702-6.56 1.702-6.56s-4.35 5.364-4.877 6.7c-.463 1.168 1.46 2.21 2.346 1.678 1.9.55 4.834 1.244 4.834 1.244z"/> <path id="arrow" d="M12.086 2.085C6.608 2.085 2.17 6.523 2.17 12a9.86 9.86 0 0 0 1.3 4.9l-2.22 2.04h5.688v-5.22L4.87 15.616A7.982 7.982 0 0 1 4.004 12a8.084 8.084 0 0 1 16.167.004 8.08 8.08 0 0 1-8.08 8.085 7.975 7.975 0 0 1-3.21-.68L8.05 21.04a9.81 9.81 0 0 0 4.045.874C17.563 21.914 22 17.476 22 12c0-5.477-4.438-9.915-9.914-9.915z"/> </g> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/image-ltr-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/image-ltr-invert.svg index 784b183b2b..04354ce35c 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/image-ltr-invert.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/image-ltr-invert.svg @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #fff }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff"> <g id="image"> <path id="mountains" d="M18 17l-3-3-2 1-3-3-4 5zm2-11v13H4V6z"/> </g> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/image-ltr-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/image-ltr-progressive.svg index ed5c051d3a..252099f7c1 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/image-ltr-progressive.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/image-ltr-progressive.svg @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #36c }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c"> <g id="image"> <path id="mountains" d="M18 17l-3-3-2 1-3-3-4 5zm2-11v13H4V6z"/> </g> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/image-rtl-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/image-rtl-invert.svg index 226690e310..875fe66c81 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/image-rtl-invert.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/image-rtl-invert.svg @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #fff }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff"> <g id="image"> <path id="mountains" d="M6 17l3-3 2 1 3-3 4 5zM4 6v13h16V6z"/> </g> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/image-rtl-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/image-rtl-progressive.svg index e506ea5338..d015e8b47b 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/image-rtl-progressive.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/image-rtl-progressive.svg @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #36c }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c"> <g id="image"> <path id="mountains" d="M6 17l3-3 2 1 3-3 4 5zM4 6v13h16V6z"/> </g> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/imageAdd-ltr-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/imageAdd-ltr-invert.svg index 3a883bca66..78c40b32a2 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/imageAdd-ltr-invert.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/imageAdd-ltr-invert.svg @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #fff }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff"> <g id="imageAdd"> <path id="mountains" d="M16 17l-3-3-2 1-3-3-4 5zm-1-8v4h3v6H2V6h9v3z"/> <path id="add" d="M22 6h-4V2h-2v4h-4v2h4v4h2V8h4z"/> </g> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/imageAdd-ltr-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/imageAdd-ltr-progressive.svg index 47878dce81..b8989564d8 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/imageAdd-ltr-progressive.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/imageAdd-ltr-progressive.svg @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #36c }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c"> <g id="imageAdd"> <path id="mountains" d="M16 17l-3-3-2 1-3-3-4 5zm-1-8v4h3v6H2V6h9v3z"/> <path id="add" d="M22 6h-4V2h-2v4h-4v2h4v4h2V8h4z"/> </g> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/imageAdd-rtl-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/imageAdd-rtl-invert.svg index e1afd3391a..e76b43fe9f 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/imageAdd-rtl-invert.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/imageAdd-rtl-invert.svg @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #fff }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff"> <g id="imageAdd"> <path id="mountains" d="M8 17l3-3 2 1 3-3 4 5zm1-8v4H6v6h16V6h-9v3z"/> <path id="add" d="M2 6h4V2h2v4h4v2H8v4H6V8H2z"/> </g> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/imageAdd-rtl-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/imageAdd-rtl-progressive.svg index 089da6a52f..61e2ed4aa1 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/imageAdd-rtl-progressive.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/imageAdd-rtl-progressive.svg @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #36c }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c"> <g id="imageAdd"> <path id="mountains" d="M8 17l3-3 2 1 3-3 4 5zm1-8v4H6v6h16V6h-9v3z"/> <path id="add" d="M2 6h4V2h2v4h4v2H8v4H6V8H2z"/> </g> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/imageGallery-ltr-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/imageGallery-ltr-invert.svg index e0022a5ecb..c2d3d8a1f2 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/imageGallery-ltr-invert.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/imageGallery-ltr-invert.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #fff }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff"> <path d="M2 4v14h2V6h15V4H2zm3 3v13h16V7H5zm6 6l3 3 2-1 3 3H7l4-5z" id="imageGallery"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/imageGallery-ltr-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/imageGallery-ltr-progressive.svg index d0bc4adf85..4029c275dc 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/imageGallery-ltr-progressive.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/imageGallery-ltr-progressive.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #36c }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c"> <path d="M2 4v14h2V6h15V4H2zm3 3v13h16V7H5zm6 6l3 3 2-1 3 3H7l4-5z" id="imageGallery"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/imageGallery-rtl-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/imageGallery-rtl-invert.svg index 8769498789..b32a86adfb 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/imageGallery-rtl-invert.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/imageGallery-rtl-invert.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #fff }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff"> <path d="M21 4v14h-2V6H4V4h17zm-3 3v13H2V7h16zm-6 6l-3 3-2-1-3 3h12l-4-5z" id="imageGallery"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/imageGallery-rtl-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/imageGallery-rtl-progressive.svg index ccba6eaaee..21f4a80a88 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/imageGallery-rtl-progressive.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/imageGallery-rtl-progressive.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #36c }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c"> <path d="M21 4v14h-2V6H4V4h17zm-3 3v13H2V7h16zm-6 6l-3 3-2-1-3 3h12l-4-5z" id="imageGallery"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/imageLock-ltr-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/imageLock-ltr-invert.svg index 74f8e584ed..b726d4b202 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/imageLock-ltr-invert.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/imageLock-ltr-invert.svg @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #fff }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff"> <g id="imageAdd"> <path id="mountains" d="M18 17l-3-3-2 1-3-3-4 5zm2-5v7H4V6h8v6z"/> <path id="lock" d="M18.5 5h-3V4s0-1.5 1.5-1.5c1.5.06 1.5 1.5 1.5 1.5zM20 5V4s0-3-3-3-3 3-3 3v1h-1v6h8V5z"/> </g> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/imageLock-ltr-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/imageLock-ltr-progressive.svg index 635dd52fe5..e726c0306f 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/imageLock-ltr-progressive.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/imageLock-ltr-progressive.svg @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #36c }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c"> <g id="imageAdd"> <path id="mountains" d="M18 17l-3-3-2 1-3-3-4 5zm2-5v7H4V6h8v6z"/> <path id="lock" d="M18.5 5h-3V4s0-1.5 1.5-1.5c1.5.06 1.5 1.5 1.5 1.5zM20 5V4s0-3-3-3-3 3-3 3v1h-1v6h8V5z"/> </g> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/imageLock-rtl-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/imageLock-rtl-invert.svg index faf34b9b33..c92cd7fb57 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/imageLock-rtl-invert.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/imageLock-rtl-invert.svg @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #fff }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff"> <g id="imageAdd"> <path id="mountains" d="M7 17l3-3 2 1 3-3 4 5zm-2-5v7h16V6h-8v6z"/> <path id="lock" d="M6.5 5h3V4s0-1.5-1.5-1.5C6.5 2.56 6.5 4 6.5 4zM5 5V4s0-3 3-3 3 3 3 3v1h1v6H4V5z"/> </g> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/imageLock-rtl-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/imageLock-rtl-progressive.svg index dd65b629d0..83814436b4 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/imageLock-rtl-progressive.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/imageLock-rtl-progressive.svg @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #36c }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c"> <g id="imageAdd"> <path id="mountains" d="M7 17l3-3 2 1 3-3 4 5zm-2-5v7h16V6h-8v6z"/> <path id="lock" d="M6.5 5h3V4s0-1.5-1.5-1.5C6.5 2.56 6.5 4 6.5 4zM5 5V4s0-3 3-3 3 3 3 3v1h1v6H4V5z"/> </g> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/indent-ltr-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/indent-ltr-invert.svg index 589187a662..04768db238 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/indent-ltr-invert.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/indent-ltr-invert.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #fff }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff"> <path d="M10 8h9v2h-9V8zm0 3h9v2h-9v-2zm0 3h6v2h-6v-2zm11-8H3V4h18v2zm0 14H3v-2h18v2zM3 8v8l5-4-5-4z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/indent-ltr-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/indent-ltr-progressive.svg index f5e9b0435c..27348796d6 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/indent-ltr-progressive.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/indent-ltr-progressive.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #36c }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c"> <path d="M10 8h9v2h-9V8zm0 3h9v2h-9v-2zm0 3h6v2h-6v-2zm11-8H3V4h18v2zm0 14H3v-2h18v2zM3 8v8l5-4-5-4z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/indent-rtl-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/indent-rtl-invert.svg index 544bbb34e0..c70f991528 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/indent-rtl-invert.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/indent-rtl-invert.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #fff }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff"> <path d="M14 8H5v2h9V8zm0 3H5v2h9v-2zm0 3H8v2h6v-2zM3 6h18V4H3v2zm0 14h18v-2H3v2zM21 8v8l-5-4 5-4z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/indent-rtl-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/indent-rtl-progressive.svg index 1509cd5c8d..992ed8279d 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/indent-rtl-progressive.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/indent-rtl-progressive.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #36c }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c"> <path d="M14 8H5v2h9V8zm0 3H5v2h9v-2zm0 3H8v2h6v-2zM3 6h18V4H3v2zm0 14h18v-2H3v2zM21 8v8l-5-4 5-4z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/info-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/info-invert.svg index c80da91734..f3519f3a27 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/info-invert.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/info-invert.svg @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #fff }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff"> <g id="info"> <path id="circled-i" d="M11.5 17a5.5 5.5 0 1 1 0-11 5.5 5.5 0 0 1 0 11zm0-12a6.5 6.5 0 1 0 0 13 6.5 6.5 0 0 0 0-13zm.5 5v4h1v1h-3v-1h1v-3h-1v-1zm-1-2h1v1h-1z"/> </g> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/info-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/info-progressive.svg index 648386ece7..1e2ecf89ad 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/info-progressive.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/info-progressive.svg @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #36c }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c"> <g id="info"> <path id="circled-i" d="M11.5 17a5.5 5.5 0 1 1 0-11 5.5 5.5 0 0 1 0 11zm0-12a6.5 6.5 0 1 0 0 13 6.5 6.5 0 0 0 0-13zm.5 5v4h1v1h-3v-1h1v-3h-1v-1zm-1-2h1v1h-1z"/> </g> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-a-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-a-invert.svg index f274352228..7a5224212e 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-a-invert.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-a-invert.svg @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #fff }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff"> <g id="italic-a"> <path id="a" d="M14.667 6h-1.372l-7 12H8l2.333-4h4L15 18h1.667l-2-12zm-3.75 7l2.527-4.333.723 4.333h-3.25z"/> </g> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-a-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-a-progressive.svg index 3ac0de67f6..2431aeb488 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-a-progressive.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-a-progressive.svg @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #36c }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c"> <g id="italic-a"> <path id="a" d="M14.667 6h-1.372l-7 12H8l2.333-4h4L15 18h1.667l-2-12zm-3.75 7l2.527-4.333.723 4.333h-3.25z"/> </g> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-arab-keheh-jeem-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-arab-keheh-jeem-invert.svg index 20bca5e2e1..4d68c38592 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-arab-keheh-jeem-invert.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-arab-keheh-jeem-invert.svg @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #fff }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff"> <g id="italic-arab-keheh-jeem"> <path id="arab-keheh-jeem" d="M18.125 5.844c-1.695.555-3.297 1.162-4.594 1.938-.49.3-.77.712-.87 1.125a1.26 1.26 0 0 0 .065.78c.19.406.54.575.844.814l.093-.12.53.627c.14.165.345.514.47.94.138.462.08.724 0 1.124h-3.44c-.34 0-.592.007-.766-.02-.34-.053-.256-.21-.234-.34.33-.127.56-.173.934-.14.29-.495.593-.886.906-1.314-.98.037-1.877.015-2.687-.094-.346-.046-.698-.185-1.094-.155-.36.026-.77.24-1.03.72-.25.447-.436.838-.66 1.28l.75-.47c.23-.14.486-.226.72-.218.158.004.276.053.407.093-.234.204-.51.4-.72.56-.3.26-.704.69-.908 1-.403.617-.694 1.086-.875 1.78-.18.69.003 1.34.468 1.75.426.38.846.52 1.28.566.65.064 1.206.092 2-.19.658-.23 1.022-.552 1.5-.97-.882.11-1.816.09-2.53.033-.87-.07-1.268-.386-1.47-.596-.27-.283-.306-.64-.155-1.22a1.44 1.44 0 0 1 .25-.53c.17-.228.363-.435.593-.656.45-.436 1.01-.737 1.46-.94-.042.207-.104.444-.052.69.05.23.25.38.44.47.26.12.506.152.69.153 1.42.01 2.86 0 4.28 0 .246 0 .45-.163.593-.375.14-.21.25-.48.343-.845.13-.5.094-1.062-.094-1.625a4.812 4.812 0 0 0-.72-1.406c-.336-.444-.675-.83-1-1.22 1.256-.815 2.715-1.24 3.97-1.688.12-.452.222-.926.31-1.313zm-9.47 8.438c-.26.394-.583.69-.874 1 .38.286.75.556 1.1.813.336-.303.627-.674.876-.97-.39-.267-.77-.587-1.093-.843z"/> </g> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-arab-keheh-jeem-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-arab-keheh-jeem-progressive.svg index eb04c40965..8c23b30513 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-arab-keheh-jeem-progressive.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-arab-keheh-jeem-progressive.svg @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #36c }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c"> <g id="italic-arab-keheh-jeem"> <path id="arab-keheh-jeem" d="M18.125 5.844c-1.695.555-3.297 1.162-4.594 1.938-.49.3-.77.712-.87 1.125a1.26 1.26 0 0 0 .065.78c.19.406.54.575.844.814l.093-.12.53.627c.14.165.345.514.47.94.138.462.08.724 0 1.124h-3.44c-.34 0-.592.007-.766-.02-.34-.053-.256-.21-.234-.34.33-.127.56-.173.934-.14.29-.495.593-.886.906-1.314-.98.037-1.877.015-2.687-.094-.346-.046-.698-.185-1.094-.155-.36.026-.77.24-1.03.72-.25.447-.436.838-.66 1.28l.75-.47c.23-.14.486-.226.72-.218.158.004.276.053.407.093-.234.204-.51.4-.72.56-.3.26-.704.69-.908 1-.403.617-.694 1.086-.875 1.78-.18.69.003 1.34.468 1.75.426.38.846.52 1.28.566.65.064 1.206.092 2-.19.658-.23 1.022-.552 1.5-.97-.882.11-1.816.09-2.53.033-.87-.07-1.268-.386-1.47-.596-.27-.283-.306-.64-.155-1.22a1.44 1.44 0 0 1 .25-.53c.17-.228.363-.435.593-.656.45-.436 1.01-.737 1.46-.94-.042.207-.104.444-.052.69.05.23.25.38.44.47.26.12.506.152.69.153 1.42.01 2.86 0 4.28 0 .246 0 .45-.163.593-.375.14-.21.25-.48.343-.845.13-.5.094-1.062-.094-1.625a4.812 4.812 0 0 0-.72-1.406c-.336-.444-.675-.83-1-1.22 1.256-.815 2.715-1.24 3.97-1.688.12-.452.222-.926.31-1.313zm-9.47 8.438c-.26.394-.583.69-.874 1 .38.286.75.556 1.1.813.336-.303.627-.674.876-.97-.39-.267-.77-.587-1.093-.843z"/> </g> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-arab-meem-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-arab-meem-invert.svg index ecc636f6d7..799a7859a0 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-arab-meem-invert.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-arab-meem-invert.svg @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #fff }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff"> <g id="italic-arab-meem"> <path id="arab-meem" d="M16 9.73l-.93 2.19h-4.663c-.48 0-.857.12-1.135.366l-.06.11c-.185 2.016-.503 3.558-.956 4.627a8.31 8.31 0 0 1-1.082 1.833c-.177.226-.22.186-.126-.12l.142-.503.17-.67.234-.87.002-.008.202-1.045.258-1.41.353-1.907c.19-.312.42-.638.692-.98a24.1 24.1 0 0 1 .94-1.09c.13-.092.697-.18 1.705-.266 1.05-.086 1.64-.183 1.765-.293l.065-.128c.01-.11-.01-.24-.052-.394a2.403 2.403 0 0 0-.232-.522c-.22-.428-.438-.64-.654-.64-.294 0-.915.268-1.864.805-.36.208-.378.125-.05-.247 1.555-1.71 2.705-2.566 3.45-2.566.38 0 .67.13.86.394.134.195.25.6.343 1.21l.202 1.2c.105.586.24.895.408.925"/> </g> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-arab-meem-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-arab-meem-progressive.svg index 574223874d..b22bd456ad 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-arab-meem-progressive.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-arab-meem-progressive.svg @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #36c }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c"> <g id="italic-arab-meem"> <path id="arab-meem" d="M16 9.73l-.93 2.19h-4.663c-.48 0-.857.12-1.135.366l-.06.11c-.185 2.016-.503 3.558-.956 4.627a8.31 8.31 0 0 1-1.082 1.833c-.177.226-.22.186-.126-.12l.142-.503.17-.67.234-.87.002-.008.202-1.045.258-1.41.353-1.907c.19-.312.42-.638.692-.98a24.1 24.1 0 0 1 .94-1.09c.13-.092.697-.18 1.705-.266 1.05-.086 1.64-.183 1.765-.293l.065-.128c.01-.11-.01-.24-.052-.394a2.403 2.403 0 0 0-.232-.522c-.22-.428-.438-.64-.654-.64-.294 0-.915.268-1.864.805-.36.208-.378.125-.05-.247 1.555-1.71 2.705-2.566 3.45-2.566.38 0 .67.13.86.394.134.195.25.6.343 1.21l.202 1.2c.105.586.24.895.408.925"/> </g> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-armn-sha-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-armn-sha-invert.svg index 38c45d5301..6b56e3715f 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-armn-sha-invert.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-armn-sha-invert.svg @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #fff }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff"> <g id="italic-armn-sha"> <path id="armn-sha" d="M11.564 7.678a3.073 3.073 0 0 0-.93-.268c-.35-.047-.75-.07-1.197-.07h-1.11L8.587 6h1.723c.558 0 1.042.032 1.45.095.416.063.794.173 1.136.33l4.483 2.033-.33 1.67-2.625-1.165a1.867 1.867 0 0 0-.433-.134 2.45 2.45 0 0 0-.576-.06 4.88 4.88 0 0 0-1.663.28c-.526.19-1 .46-1.427.812-.42.35-.776.78-1.07 1.283a5.48 5.48 0 0 0-.63 1.71c-.24 1.255-.15 2.21.27 2.87.424.65 1.19.976 2.292.976.55 0 1.044-.08 1.48-.236a3.488 3.488 0 0 0 1.135-.66c.325-.29.59-.634.795-1.034.21-.4.363-.84.458-1.322l.11-.56h1.6l-.12.59a5.925 5.925 0 0 1-.676 1.844 5.19 5.19 0 0 1-1.214 1.423c-.488.395-1.053.7-1.694.923a6.573 6.573 0 0 1-2.106.324c-.767 0-1.434-.114-2-.34-.568-.226-1.025-.554-1.372-.985-.347-.437-.573-.97-.678-1.608-.105-.64-.078-1.366.08-2.186.125-.66.346-1.274.66-1.836A6.332 6.332 0 0 1 8.792 9.54a5.955 5.955 0 0 1 1.496-1.072 5.87 5.87 0 0 1 1.732-.57l-.465-.23"/> </g> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-armn-sha-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-armn-sha-progressive.svg index c2d580ec2e..50ee046798 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-armn-sha-progressive.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-armn-sha-progressive.svg @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #36c }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c"> <g id="italic-armn-sha"> <path id="armn-sha" d="M11.564 7.678a3.073 3.073 0 0 0-.93-.268c-.35-.047-.75-.07-1.197-.07h-1.11L8.587 6h1.723c.558 0 1.042.032 1.45.095.416.063.794.173 1.136.33l4.483 2.033-.33 1.67-2.625-1.165a1.867 1.867 0 0 0-.433-.134 2.45 2.45 0 0 0-.576-.06 4.88 4.88 0 0 0-1.663.28c-.526.19-1 .46-1.427.812-.42.35-.776.78-1.07 1.283a5.48 5.48 0 0 0-.63 1.71c-.24 1.255-.15 2.21.27 2.87.424.65 1.19.976 2.292.976.55 0 1.044-.08 1.48-.236a3.488 3.488 0 0 0 1.135-.66c.325-.29.59-.634.795-1.034.21-.4.363-.84.458-1.322l.11-.56h1.6l-.12.59a5.925 5.925 0 0 1-.676 1.844 5.19 5.19 0 0 1-1.214 1.423c-.488.395-1.053.7-1.694.923a6.573 6.573 0 0 1-2.106.324c-.767 0-1.434-.114-2-.34-.568-.226-1.025-.554-1.372-.985-.347-.437-.573-.97-.678-1.608-.105-.64-.078-1.366.08-2.186.125-.66.346-1.274.66-1.836A6.332 6.332 0 0 1 8.792 9.54a5.955 5.955 0 0 1 1.496-1.072 5.87 5.87 0 0 1 1.732-.57l-.465-.23"/> </g> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-c-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-c-invert.svg index 882af048e2..01afe88fa8 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-c-invert.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-c-invert.svg @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #fff }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff"> <g id="italic-c"> <path id="c" d="M15.008 13.718l1.48.214c-.467 1.34-1.15 2.354-2.045 3.04a4.835 4.835 0 0 1-3.015 1.03c-1.36 0-2.438-.43-3.237-1.29C7.4 15.85 7 14.618 7 13.012c0-2.09.606-3.817 1.817-5.184C9.897 6.61 11.237 6 12.84 6c1.186 0 2.145.33 2.878.99.738.66 1.165 1.546 1.282 2.66l-1.397.135c-.148-.84-.453-1.464-.916-1.876-.458-.42-1.05-.63-1.78-.63-1.368 0-2.475.63-3.32 1.89-.733 1.087-1.1 2.377-1.1 3.87 0 1.194.283 2.104.848 2.732.565.628 1.3.942 2.206.942.78 0 1.48-.26 2.1-.785.63-.52 1.08-1.26 1.37-2.216"/> </g> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-c-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-c-progressive.svg index 29da4c6f32..03aa494ac1 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-c-progressive.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-c-progressive.svg @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #36c }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c"> <g id="italic-c"> <path id="c" d="M15.008 13.718l1.48.214c-.467 1.34-1.15 2.354-2.045 3.04a4.835 4.835 0 0 1-3.015 1.03c-1.36 0-2.438-.43-3.237-1.29C7.4 15.85 7 14.618 7 13.012c0-2.09.606-3.817 1.817-5.184C9.897 6.61 11.237 6 12.84 6c1.186 0 2.145.33 2.878.99.738.66 1.165 1.546 1.282 2.66l-1.397.135c-.148-.84-.453-1.464-.916-1.876-.458-.42-1.05-.63-1.78-.63-1.368 0-2.475.63-3.32 1.89-.733 1.087-1.1 2.377-1.1 3.87 0 1.194.283 2.104.848 2.732.565.628 1.3.942 2.206.942.78 0 1.48-.26 2.1-.785.63-.52 1.08-1.26 1.37-2.216"/> </g> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-d-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-d-invert.svg index 1c305e34a3..dcd0d948a8 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-d-invert.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-d-invert.svg @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #fff }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff"> <g id="italic-d"> <path id="d" d="M7 18L9.462 6h3.557c.85 0 1.5.063 1.95.188.642.17 1.192.472 1.65.91.454.43.8.97 1.03 1.62.23.65.344 1.378.344 2.186 0 .966-.146 1.847-.436 2.644-.284.79-.66 1.49-1.127 2.095-.46.6-.946 1.072-1.455 1.416-.504.33-1.1.582-1.794.75-.525.122-1.17.19-1.94.19H7m1.86-1.36h1.866c.842 0 1.59-.08 2.245-.24a3.26 3.26 0 0 0 1.05-.436 4.19 4.19 0 0 0 1.04-.975 6.652 6.652 0 0 0 .975-1.825c.247-.687.37-1.467.37-2.34 0-.97-.166-1.716-.5-2.235-.332-.522-.755-.87-1.27-1.04-.38-.124-.974-.186-1.78-.186H11L9.095 16.64"/> </g> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-d-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-d-progressive.svg index e995e48d16..ff61b371f7 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-d-progressive.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-d-progressive.svg @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #36c }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c"> <g id="italic-d"> <path id="d" d="M7 18L9.462 6h3.557c.85 0 1.5.063 1.95.188.642.17 1.192.472 1.65.91.454.43.8.97 1.03 1.62.23.65.344 1.378.344 2.186 0 .966-.146 1.847-.436 2.644-.284.79-.66 1.49-1.127 2.095-.46.6-.946 1.072-1.455 1.416-.504.33-1.1.582-1.794.75-.525.122-1.17.19-1.94.19H7m1.86-1.36h1.866c.842 0 1.59-.08 2.245-.24a3.26 3.26 0 0 0 1.05-.436 4.19 4.19 0 0 0 1.04-.975 6.652 6.652 0 0 0 .975-1.825c.247-.687.37-1.467.37-2.34 0-.97-.166-1.716-.5-2.235-.332-.522-.755-.87-1.27-1.04-.38-.124-.974-.186-1.78-.186H11L9.095 16.64"/> </g> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-e-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-e-invert.svg index 21d3dc78d1..f91db71a42 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-e-invert.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-e-invert.svg @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #fff }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff"> <g id="italic-e"> <path id="e" d="M7 18L9.474 6H18l-.282 1.367H10.77L10.02 11h6.09l-.28 1.367H9.74l-.88 4.273h7.44L16.018 18H7"/> </g> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-e-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-e-progressive.svg index 351d9687d9..c5ca7b12e7 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-e-progressive.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-e-progressive.svg @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #36c }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c"> <g id="italic-e"> <path id="e" d="M7 18L9.474 6H18l-.282 1.367H10.77L10.02 11h6.09l-.28 1.367H9.74l-.88 4.273h7.44L16.018 18H7"/> </g> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-geor-kan-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-geor-kan-invert.svg index 5b57252c0d..fea68a5e6f 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-geor-kan-invert.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-geor-kan-invert.svg @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #fff }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff"> <g id="italic-geor-kan"> <path id="geor-kan" d="M15.057 14.663C14.617 16.888 13.223 18 10.88 18 8.96 18 8 17.213 8 15.64c0-.298.036-.624.108-.977.083-.43.245-.836.488-1.217l1.24.605-.206.62c-.055.26-.083.497-.083.71 0 .97.52 1.46 1.564 1.46 1.31 0 2.108-.724 2.39-2.17l.058-.33a3.17 3.17 0 0 0 .066-.615c0-.927-.546-1.39-1.64-1.39H10.87l.247-1.26h1.118c1.203-.004 1.91-.55 2.12-1.64.04-.18.057-.355.057-.52 0-1.144-.9-1.715-2.696-1.715L11.94 6C14.646 6 16 6.877 16 8.627c0 .248-.027.516-.082.803-.204 1.092-1.05 1.824-2.54 2.194l-.033.166c1.23.2 1.845.823 1.845 1.872 0 .21-.025.433-.074.67l-.058.332"/> </g> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-geor-kan-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-geor-kan-progressive.svg index a9ee28cc74..bacc38cca5 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-geor-kan-progressive.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-geor-kan-progressive.svg @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #36c }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c"> <g id="italic-geor-kan"> <path id="geor-kan" d="M15.057 14.663C14.617 16.888 13.223 18 10.88 18 8.96 18 8 17.213 8 15.64c0-.298.036-.624.108-.977.083-.43.245-.836.488-1.217l1.24.605-.206.62c-.055.26-.083.497-.083.71 0 .97.52 1.46 1.564 1.46 1.31 0 2.108-.724 2.39-2.17l.058-.33a3.17 3.17 0 0 0 .066-.615c0-.927-.546-1.39-1.64-1.39H10.87l.247-1.26h1.118c1.203-.004 1.91-.55 2.12-1.64.04-.18.057-.355.057-.52 0-1.144-.9-1.715-2.696-1.715L11.94 6C14.646 6 16 6.877 16 8.627c0 .248-.027.516-.082.803-.204 1.092-1.05 1.824-2.54 2.194l-.033.166c1.23.2 1.845.823 1.845 1.872 0 .21-.025.433-.074.67l-.058.332"/> </g> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-i-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-i-invert.svg index ddb927e7f0..3919051e80 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-i-invert.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-i-invert.svg @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #fff }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff"> <g id="italic-i"> <path id="i" d="M12.5 18l.25-.995h-1.5l2.508-10.037h1.5L15.5 6h-5l-.242.968h1.5l-2.51 10.037h-1.5L7.5 18z"/> </g> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-i-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-i-progressive.svg index 0ae89f9d9e..f71f6f7b3a 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-i-progressive.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-i-progressive.svg @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #36c }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c"> <g id="italic-i"> <path id="i" d="M12.5 18l.25-.995h-1.5l2.508-10.037h1.5L15.5 6h-5l-.242.968h1.5l-2.51 10.037h-1.5L7.5 18z"/> </g> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-k-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-k-invert.svg index 2bdddd595d..b6e87b4315 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-k-invert.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-k-invert.svg @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #fff }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff"> <g id="italic-k"> <path id="k" d="M12.018 10.652L17 6h-2l-5.31 5.234L11 6H9.5l-3 12H8l1.173-4.693 1.54-1.438C11 16 14 18 14 18h2s-4-2-3.982-7.348z"/> </g> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-k-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-k-progressive.svg index 778b92c59b..7494e8f865 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-k-progressive.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-k-progressive.svg @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #36c }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c"> <g id="italic-k"> <path id="k" d="M12.018 10.652L17 6h-2l-5.31 5.234L11 6H9.5l-3 12H8l1.173-4.693 1.54-1.438C11 16 14 18 14 18h2s-4-2-3.982-7.348z"/> </g> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-s-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-s-invert.svg index 1d48f72476..ed2fe672d0 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-s-invert.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-s-invert.svg @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #fff }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff"> <g id="italic-s"> <path id="s" d="M16.474 6.59l-.302 1.525a7.36 7.36 0 0 0-1.557-.628 5.432 5.432 0 0 0-1.487-.217c-.935 0-1.68.204-2.23.612-.554.408-.83.95-.83 1.627 0 .37.1.65.302.86.207.19.733.4 1.58.63l.937.23c1.06.274 1.795.622 2.208 1.046.413.42.62 1.007.62 1.766 0 1.167-.46 2.117-1.38 2.85-.913.734-2.12 1.1-3.617 1.1-.615 0-1.232-.06-1.852-.185-.62-.12-1.242-.3-1.867-.55l.31-1.61a7.613 7.613 0 0 0 1.72.805c.58.18 1.155.27 1.73.27.976 0 1.76-.216 2.347-.65.59-.434.883-1 .883-1.697 0-.465-.12-.816-.354-1.054-.233-.242-.737-.46-1.512-.657l-.937-.24c-1.07-.28-1.8-.6-2.19-.964-.39-.368-.584-.88-.584-1.535 0-1.152.442-2.094 1.325-2.828.89-.74 2.043-1.108 3.463-1.108.555 0 1.1.05 1.644.146.542.1 1.085.245 1.627.442"/> </g> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-s-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-s-progressive.svg index 901d0e7b6b..0eeeb50089 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-s-progressive.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/italic-s-progressive.svg @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #36c }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c"> <g id="italic-s"> <path id="s" d="M16.474 6.59l-.302 1.525a7.36 7.36 0 0 0-1.557-.628 5.432 5.432 0 0 0-1.487-.217c-.935 0-1.68.204-2.23.612-.554.408-.83.95-.83 1.627 0 .37.1.65.302.86.207.19.733.4 1.58.63l.937.23c1.06.274 1.795.622 2.208 1.046.413.42.62 1.007.62 1.766 0 1.167-.46 2.117-1.38 2.85-.913.734-2.12 1.1-3.617 1.1-.615 0-1.232-.06-1.852-.185-.62-.12-1.242-.3-1.867-.55l.31-1.61a7.613 7.613 0 0 0 1.72.805c.58.18 1.155.27 1.73.27.976 0 1.76-.216 2.347-.65.59-.434.883-1 .883-1.697 0-.465-.12-.816-.354-1.054-.233-.242-.737-.46-1.512-.657l-.937-.24c-1.07-.28-1.8-.6-2.19-.964-.39-.368-.584-.88-.584-1.535 0-1.152.442-2.094 1.325-2.828.89-.74 2.043-1.108 3.463-1.108.555 0 1.1.05 1.644.146.542.1 1.085.245 1.627.442"/> </g> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/journal-ltr-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/journal-ltr-invert.png index e7dc90ebc5..bc2e9cc6ff 100644 Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/journal-ltr-invert.png and b/resources/lib/oojs-ui/themes/mediawiki/images/icons/journal-ltr-invert.png differ diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/journal-ltr-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/journal-ltr-invert.svg index d9eb01e969..370d0a374b 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/journal-ltr-invert.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/journal-ltr-invert.svg @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #fff }</style> - <path d="M16 9V8h-6v1h6zm-2 2v-1h-4v1h4zM6 5h1v16H6V5zm2 0h10v13c0 1.7-1.3 3-3 3H8V5z"/> -</svg> +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff"> + <path d="M16 8V7h-6v1h6zm-2 2V9h-4v1h4zM6 4h1v16H6V4zm2 0h10v13c0 1.7-1.3 3-3 3H8V4z"/> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/journal-ltr-progressive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/journal-ltr-progressive.png index 444d48b579..19f17bdb9d 100644 Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/journal-ltr-progressive.png and b/resources/lib/oojs-ui/themes/mediawiki/images/icons/journal-ltr-progressive.png differ diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/journal-ltr-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/journal-ltr-progressive.svg index 5375d9289b..baf8a4a626 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/journal-ltr-progressive.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/journal-ltr-progressive.svg @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #36c }</style> - <path d="M16 9V8h-6v1h6zm-2 2v-1h-4v1h4zM6 5h1v16H6V5zm2 0h10v13c0 1.7-1.3 3-3 3H8V5z"/> -</svg> +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c"> + <path d="M16 8V7h-6v1h6zm-2 2V9h-4v1h4zM6 4h1v16H6V4zm2 0h10v13c0 1.7-1.3 3-3 3H8V4z"/> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/journal-ltr.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/journal-ltr.png index f30b5ff3a1..2af4eb0e08 100644 Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/journal-ltr.png and b/resources/lib/oojs-ui/themes/mediawiki/images/icons/journal-ltr.png differ diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/journal-ltr.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/journal-ltr.svg index c9fa5536c8..8a83e4179e 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/journal-ltr.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/journal-ltr.svg @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8"?> +<?xml version="1.0" encoding="UTF-8" standalone="no"?> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"> - <path d="M16 9V8h-6v1h6zm-2 2v-1h-4v1h4zM6 5h1v16H6V5zm2 0h10v13c0 1.7-1.3 3-3 3H8V5z"/> + <path d="M16 8V7h-6v1h6zm-2 2V9h-4v1h4zM6 4h1v16H6V4zm2 0h10v13c0 1.7-1.3 3-3 3H8V4z"/> </svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/journal-rtl-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/journal-rtl-invert.png index deb4f76aca..60b5f473e6 100644 Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/journal-rtl-invert.png and b/resources/lib/oojs-ui/themes/mediawiki/images/icons/journal-rtl-invert.png differ diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/journal-rtl-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/journal-rtl-invert.svg index bd7ba0796f..4660285938 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/journal-rtl-invert.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/journal-rtl-invert.svg @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #fff }</style> - <path d="M8 9V8h6v1H8zm2 2v-1h4v1h-4zm8-6h-1v16h1V5zm-2 0H6v13c0 1.7 1.3 3 3 3h7V5z"/> -</svg> +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff"> + <path d="M8 8V7h6v1H8zm2 2V9h4v1h-4zm8-6h-1v16h1V4zm-2 0H6v13c0 1.7 1.3 3 3 3h7V4z"/> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/journal-rtl-progressive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/journal-rtl-progressive.png index e5a4fa1208..b16badc620 100644 Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/journal-rtl-progressive.png and b/resources/lib/oojs-ui/themes/mediawiki/images/icons/journal-rtl-progressive.png differ diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/journal-rtl-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/journal-rtl-progressive.svg index e93ed43d70..17ccb82c73 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/journal-rtl-progressive.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/journal-rtl-progressive.svg @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #36c }</style> - <path d="M8 9V8h6v1H8zm2 2v-1h4v1h-4zm8-6h-1v16h1V5zm-2 0H6v13c0 1.7 1.3 3 3 3h7V5z"/> -</svg> +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c"> + <path d="M8 8V7h6v1H8zm2 2V9h4v1h-4zm8-6h-1v16h1V4zm-2 0H6v13c0 1.7 1.3 3 3 3h7V4z"/> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/journal-rtl.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/journal-rtl.png index 7826fa80f8..033ede1388 100644 Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/journal-rtl.png and b/resources/lib/oojs-ui/themes/mediawiki/images/icons/journal-rtl.png differ diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/journal-rtl.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/journal-rtl.svg index 84da9fa60f..2a07a44aeb 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/journal-rtl.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/journal-rtl.svg @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8"?> +<?xml version="1.0" encoding="UTF-8" standalone="no"?> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"> - <path d="M8 9V8h6v1H8zm2 2v-1h4v1h-4zm8-6h-1v16h1V5zm-2 0H6v13c0 1.7 1.3 3 3 3h7V5z"/> + <path d="M8 8V7h6v1H8zm2 2V9h4v1h-4zm8-6h-1v16h1V4zm-2 0H6v13c0 1.7 1.3 3 3 3h7V4z"/> </svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/key-ltr-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/key-ltr-invert.svg index fa77f37e97..4b00ee7fd1 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/key-ltr-invert.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/key-ltr-invert.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #fff }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff"> <path d="M14.5 4C11.5 4 9 6.5 9 9.5c0 1 .3 1.9.7 2.8L4 18v2h4v-2h2v-2h2l1.2-1.2c.4.1.9.2 1.3.2 3 0 5.5-2.5 5.5-5.5S17.5 4 14.5 4zM16 9c-.8 0-1.5-.7-1.5-1.5S15.2 6 16 6s1.5.7 1.5 1.5S16.8 9 16 9z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/key-ltr-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/key-ltr-progressive.svg index 7ba0a1a16d..e079ac66f8 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/key-ltr-progressive.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/key-ltr-progressive.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #36c }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c"> <path d="M14.5 4C11.5 4 9 6.5 9 9.5c0 1 .3 1.9.7 2.8L4 18v2h4v-2h2v-2h2l1.2-1.2c.4.1.9.2 1.3.2 3 0 5.5-2.5 5.5-5.5S17.5 4 14.5 4zM16 9c-.8 0-1.5-.7-1.5-1.5S15.2 6 16 6s1.5.7 1.5 1.5S16.8 9 16 9z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/key-rtl-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/key-rtl-invert.svg index 2a03797bf4..1777cec0dc 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/key-rtl-invert.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/key-rtl-invert.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #fff }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff"> <path d="M9.5 4c3 0 5.5 2.5 5.5 5.5 0 1-.3 1.9-.7 2.8L20 18v2h-4v-2h-2v-2h-2l-1.2-1.2c-.4.1-.9.2-1.3.2-3 0-5.5-2.5-5.5-5.5S6.5 4 9.5 4zM8 9c.8 0 1.5-.7 1.5-1.5S8.8 6 8 6s-1.5.7-1.5 1.5S7.2 9 8 9z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/key-rtl-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/key-rtl-progressive.svg index 308c9c0598..d070568e36 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/key-rtl-progressive.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/key-rtl-progressive.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #36c }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c"> <path d="M9.5 4c3 0 5.5 2.5 5.5 5.5 0 1-.3 1.9-.7 2.8L20 18v2h-4v-2h-2v-2h-2l-1.2-1.2c-.4.1-.9.2-1.3.2-3 0-5.5-2.5-5.5-5.5S6.5 4 9.5 4zM8 9c.8 0 1.5-.7 1.5-1.5S8.8 6 8 6s-1.5.7-1.5 1.5S7.2 9 8 9z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/keyboard-ltr-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/keyboard-ltr-invert.svg index b20678777c..2230bf5df2 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/keyboard-ltr-invert.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/keyboard-ltr-invert.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #fff }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff"> <path d="M3 7v9c0 1.7 1.3 3 3 3h15V7H3zm8 2h2v2h-2V9zm0 3h2v2h-2v-2zM8 9h2v2H8V9zm0 3h2v2H8v-2zm-1 5H6c-.6 0-1-.4-1-1v-1h2v2zm0-3H5v-2h2v2zm0-3H5V9h2v2zm9 6H8v-2h8v2zm0-3h-2v-2h2v2zm0-3h-2V9h2v2zm3 6h-2v-2h2v2zm0-3h-2v-2h2v2zm0-3h-2V9h2v2z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/keyboard-ltr-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/keyboard-ltr-progressive.svg index b17e02489c..25f22c70ff 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/keyboard-ltr-progressive.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/keyboard-ltr-progressive.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #36c }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c"> <path d="M3 7v9c0 1.7 1.3 3 3 3h15V7H3zm8 2h2v2h-2V9zm0 3h2v2h-2v-2zM8 9h2v2H8V9zm0 3h2v2H8v-2zm-1 5H6c-.6 0-1-.4-1-1v-1h2v2zm0-3H5v-2h2v2zm0-3H5V9h2v2zm9 6H8v-2h8v2zm0-3h-2v-2h2v2zm0-3h-2V9h2v2zm3 6h-2v-2h2v2zm0-3h-2v-2h2v2zm0-3h-2V9h2v2z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/keyboard-rtl-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/keyboard-rtl-invert.svg index d1799f9553..df9d39d386 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/keyboard-rtl-invert.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/keyboard-rtl-invert.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #fff }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff"> <path d="M21 7v9c0 1.7-1.3 3-3 3H3V7h18zm-8 2h-2v2h2V9zm0 3h-2v2h2v-2zm3-3h-2v2h2V9zm0 3h-2v2h2v-2zm1 5h1c.6 0 1-.4 1-1v-1h-2v2zm0-3h2v-2h-2v2zm0-3h2V9h-2v2zm-9 6h8v-2H8v2zm0-3h2v-2H8v2zm0-3h2V9H8v2zm-3 6h2v-2H5v2zm0-3h2v-2H5v2zm0-3h2V9H5v2z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/keyboard-rtl-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/keyboard-rtl-progressive.svg index 48fb71c1d5..1cff12c3f6 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/keyboard-rtl-progressive.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/keyboard-rtl-progressive.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #36c }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c"> <path d="M21 7v9c0 1.7-1.3 3-3 3H3V7h18zm-8 2h-2v2h2V9zm0 3h-2v2h2v-2zm3-3h-2v2h2V9zm0 3h-2v2h2v-2zm1 5h1c.6 0 1-.4 1-1v-1h-2v2zm0-3h2v-2h-2v2zm0-3h2V9h-2v2zm-9 6h8v-2H8v2zm0-3h2v-2H8v2zm0-3h2V9H8v2zm-3 6h2v-2H5v2zm0-3h2v-2H5v2zm0-3h2V9H5v2z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/language-ltr-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/language-ltr-invert.svg index 4a36a34f86..9b8523f6a1 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/language-ltr-invert.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/language-ltr-invert.svg @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #fff }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff"> <g id="A"> <path d="M18.738 15.673l1.137 3.15h1.575L17.775 7.448h-2.188l-3.85 11.375h1.575l1.05-3.15h4.375zM16.55 8.76l1.837 5.427h-3.675l1.838-5.425z"/> </g> @@ -7,4 +7,4 @@ <path d="M8.325 6.573h.787l-.875-1.75h-1.75l.438.875a1.56 1.56 0 0 0 1.4.875z"/> <path d="m 9.202,12.874 c 0.7,0.525 1.486,0.963 2.45,1.225 l -0.438,1.31 A 9.17,9.17 0 0 1 8.151,13.835 c -1.49,1.137 -3.063,1.837 -4.813,2.363 L 2.9,14.885 C 4.386,14.36 5.874,13.835 7.1,12.872 5.962,11.648 5.174,10.335 4.65,8.758 l -1.663,0 0,-1.31 10.85,0 -0.438,1.312 -1.75,0 c -0.308,1.33 -1.255,2.957 -2.45,4.114 z m 1.05,-4.114 -4.114,0 c 0.35,1.226 1.138,2.363 2.013,3.238 0.926,-1 1.617,-1.957 2.1,-3.237 z"/> </g> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/language-ltr-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/language-ltr-progressive.svg index 4a3893b4bb..1adc6aa105 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/language-ltr-progressive.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/language-ltr-progressive.svg @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #36c }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c"> <g id="A"> <path d="M18.738 15.673l1.137 3.15h1.575L17.775 7.448h-2.188l-3.85 11.375h1.575l1.05-3.15h4.375zM16.55 8.76l1.837 5.427h-3.675l1.838-5.425z"/> </g> @@ -7,4 +7,4 @@ <path d="M8.325 6.573h.787l-.875-1.75h-1.75l.438.875a1.56 1.56 0 0 0 1.4.875z"/> <path d="m 9.202,12.874 c 0.7,0.525 1.486,0.963 2.45,1.225 l -0.438,1.31 A 9.17,9.17 0 0 1 8.151,13.835 c -1.49,1.137 -3.063,1.837 -4.813,2.363 L 2.9,14.885 C 4.386,14.36 5.874,13.835 7.1,12.872 5.962,11.648 5.174,10.335 4.65,8.758 l -1.663,0 0,-1.31 10.85,0 -0.438,1.312 -1.75,0 c -0.308,1.33 -1.255,2.957 -2.45,4.114 z m 1.05,-4.114 -4.114,0 c 0.35,1.226 1.138,2.363 2.013,3.238 0.926,-1 1.617,-1.957 2.1,-3.237 z"/> </g> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/language-rtl-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/language-rtl-invert.svg index 152a2525c0..3ceea081cc 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/language-rtl-invert.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/language-rtl-invert.svg @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #fff }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff"> <g id="A"> <path d="M5.612 15.673l-1.137 3.15H2.9L6.575 7.448h2.188l3.85 11.375h-1.575l-1.05-3.15H5.613zM7.8 8.76l-1.837 5.427h3.675L7.8 8.762z" id="path5"/> </g> @@ -7,4 +7,4 @@ <path d="M16.384 6.573h.787l-.873-1.75h-1.75l.438.875c.26.535.805.874 1.4.875z" id="path7"/> <path d="M15.15 12.874c-.7.525-1.486.963-2.45 1.225l.438 1.31a9.17 9.17 0 0 0 3.063-1.575c1.49 1.137 3.064 1.837 4.814 2.363l.438-1.313c-1.486-.525-2.974-1.05-4.2-2.013 1.138-1.224 1.926-2.537 2.45-4.114h1.663v-1.31h-10.85l.438 1.312h1.75c.308 1.33 1.255 2.957 2.45 4.114zM14.1 8.76h4.114c-.35 1.226-1.138 2.363-2.013 3.238-.925-1-1.616-1.957-2.1-3.237z" id="path11-7"/> </g> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/language-rtl-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/language-rtl-progressive.svg index 3b11ea93f4..050fe1e0b2 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/language-rtl-progressive.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/language-rtl-progressive.svg @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #36c }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c"> <g id="A"> <path d="M5.612 15.673l-1.137 3.15H2.9L6.575 7.448h2.188l3.85 11.375h-1.575l-1.05-3.15H5.613zM7.8 8.76l-1.837 5.427h3.675L7.8 8.762z" id="path5"/> </g> @@ -7,4 +7,4 @@ <path d="M16.384 6.573h.787l-.873-1.75h-1.75l.438.875c.26.535.805.874 1.4.875z" id="path7"/> <path d="M15.15 12.874c-.7.525-1.486.963-2.45 1.225l.438 1.31a9.17 9.17 0 0 0 3.063-1.575c1.49 1.137 3.064 1.837 4.814 2.363l.438-1.313c-1.486-.525-2.974-1.05-4.2-2.013 1.138-1.224 1.926-2.537 2.45-4.114h1.663v-1.31h-10.85l.438 1.312h1.75c.308 1.33 1.255 2.957 2.45 4.114zM14.1 8.76h4.114c-.35 1.226-1.138 2.363-2.013 3.238-.925-1-1.616-1.957-2.1-3.237z" id="path11-7"/> </g> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/largerText-ltr-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/largerText-ltr-invert.svg index f6e3d8ee97..491adb5301 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/largerText-ltr-invert.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/largerText-ltr-invert.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #ffffff }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#ffffff"> <path d="M20.8 20h-8.1v-.8c.4 0 .8-.1 1.3-.2s.8-.2.8-.4v-.2c0-.1 0-.2-.1-.3L13.4 15H8.3c-.1.3-.2.6-.4 1-.1.4-.3.7-.4 1-.1.4-.2.7-.2.8v.4c0 .2.2.4.5.6.3.2.9.3 1.7.3v.9H3.4v-.8c.2 0 .5-.1.8-.1.3-.1.5-.1.7-.2.3-.2.5-.4.7-.6.2-.3.4-.6.5-.9.8-2 1.6-3.9 2.4-5.9.8-2 1.7-4.1 2.7-6.5h2.1c1.4 3.3 2.4 6 3.2 7.9.8 1.9 1.4 3.6 2 4.8l.3.6c.1.2.3.3.6.5.2.1.4.2.7.3.3.1.5.1.7.1v.8zM13 14l-2.1-5.3L8.8 14H13z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/largerText-rtl-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/largerText-rtl-invert.png index 264811bc98..b91b35c81f 100644 Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/largerText-rtl-invert.png and b/resources/lib/oojs-ui/themes/mediawiki/images/icons/largerText-rtl-invert.png differ diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/largerText-rtl-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/largerText-rtl-invert.svg index f6e3d8ee97..4842411aeb 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/largerText-rtl-invert.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/largerText-rtl-invert.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #ffffff }</style> - <path d="M20.8 20h-8.1v-.8c.4 0 .8-.1 1.3-.2s.8-.2.8-.4v-.2c0-.1 0-.2-.1-.3L13.4 15H8.3c-.1.3-.2.6-.4 1-.1.4-.3.7-.4 1-.1.4-.2.7-.2.8v.4c0 .2.2.4.5.6.3.2.9.3 1.7.3v.9H3.4v-.8c.2 0 .5-.1.8-.1.3-.1.5-.1.7-.2.3-.2.5-.4.7-.6.2-.3.4-.6.5-.9.8-2 1.6-3.9 2.4-5.9.8-2 1.7-4.1 2.7-6.5h2.1c1.4 3.3 2.4 6 3.2 7.9.8 1.9 1.4 3.6 2 4.8l.3.6c.1.2.3.3.6.5.2.1.4.2.7.3.3.1.5.1.7.1v.8zM13 14l-2.1-5.3L8.8 14H13z"/> -</svg> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#ffffff"> + <path d="M3.4 20h8.1v-.8c-.4 0-.8-.1-1.3-.2s-.8-.2-.8-.4v-.2c0-.1 0-.2.1-.3l1.3-3.1h5.1c.1.3.2.6.4 1 .1.4.3.7.4 1 .1.4.2.7.2.8v.4c0 .2-.2.4-.5.6-.3.2-.9.3-1.7.3v.9h6.1v-.8c-.2 0-.5-.1-.8-.1-.3-.1-.5-.1-.7-.2-.3-.2-.5-.4-.7-.6-.2-.3-.4-.6-.5-.9-.8-2-1.6-3.9-2.4-5.9-.8-2-1.7-4.1-2.7-6.5h-2.1c-1.4 3.3-2.4 6-3.2 7.9-.8 1.9-1.4 3.6-2 4.8l-.3.6c-.1.2-.3.3-.6.5-.2.1-.4.2-.7.3-.3.1-.5.1-.7.1v.8zm7.8-6l2.1-5.3 2.1 5.3h-4.2z"/> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/largerText-rtl.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/largerText-rtl.png index 4b6d298f9e..77d7796845 100644 Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/largerText-rtl.png and b/resources/lib/oojs-ui/themes/mediawiki/images/icons/largerText-rtl.png differ diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/largerText-rtl.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/largerText-rtl.svg index 4b01d74233..6ac62dc943 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/largerText-rtl.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/largerText-rtl.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"> - <path d="M20.8 20h-8.1v-.8c.4 0 .8-.1 1.3-.2s.8-.2.8-.4v-.2c0-.1 0-.2-.1-.3L13.4 15H8.3c-.1.3-.2.6-.4 1-.1.4-.3.7-.4 1-.1.4-.2.7-.2.8v.4c0 .2.2.4.5.6.3.2.9.3 1.7.3v.9H3.4v-.8c.2 0 .5-.1.8-.1.3-.1.5-.1.7-.2.3-.2.5-.4.7-.6.2-.3.4-.6.5-.9.8-2 1.6-3.9 2.4-5.9.8-2 1.7-4.1 2.7-6.5h2.1c1.4 3.3 2.4 6 3.2 7.9.8 1.9 1.4 3.6 2 4.8l.3.6c.1.2.3.3.6.5.2.1.4.2.7.3.3.1.5.1.7.1v.8zM13 14l-2.1-5.3L8.8 14H13z"/> + <path d="M3.4 20h8.1v-.8c-.4 0-.8-.1-1.3-.2s-.8-.2-.8-.4v-.2c0-.1 0-.2.1-.3l1.3-3.1h5.1c.1.3.2.6.4 1 .1.4.3.7.4 1 .1.4.2.7.2.8v.4c0 .2-.2.4-.5.6-.3.2-.9.3-1.7.3v.9h6.1v-.8c-.2 0-.5-.1-.8-.1-.3-.1-.5-.1-.7-.2-.3-.2-.5-.4-.7-.6-.2-.3-.4-.6-.5-.9-.8-2-1.6-3.9-2.4-5.9-.8-2-1.7-4.1-2.7-6.5h-2.1c-1.4 3.3-2.4 6-3.2 7.9-.8 1.9-1.4 3.6-2 4.8l-.3.6c-.1.2-.3.3-.6.5-.2.1-.4.2-.7.3-.3.1-.5.1-.7.1v.8zm7.8-6l2.1-5.3 2.1 5.3h-4.2z"/> </svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/layout-ltr-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/layout-ltr-invert.svg index c75fed34df..a12fc5ad9c 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/layout-ltr-invert.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/layout-ltr-invert.svg @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #fff }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff"> <g id="layout-ltr"> <path id="text" d="M5 19V5h6v8h8v6H5z"/> <path id="float" d="M13 5v6h6V5h-6zm5 5h-4V6h4v4z"/> </g> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/layout-ltr-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/layout-ltr-progressive.svg index a2bd2eb262..8243e340b5 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/layout-ltr-progressive.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/layout-ltr-progressive.svg @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #36c }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c"> <g id="layout-ltr"> <path id="text" d="M5 19V5h6v8h8v6H5z"/> <path id="float" d="M13 5v6h6V5h-6zm5 5h-4V6h4v4z"/> </g> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/layout-rtl-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/layout-rtl-invert.svg index 92296711ef..165c996095 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/layout-rtl-invert.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/layout-rtl-invert.svg @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #fff }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff"> <g id="layout-rtl"> <path id="text" d="M5 19v-6h8V5h6v14H5z"/> <path id="float" d="M5 5v6h6V5H5zm1 1h4v4H6V6z"/> </g> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/layout-rtl-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/layout-rtl-progressive.svg index eaad0a0b87..db1081c571 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/layout-rtl-progressive.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/layout-rtl-progressive.svg @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #36c }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c"> <g id="layout-rtl"> <path id="text" d="M5 19v-6h8V5h6v14H5z"/> <path id="float" d="M5 5v6h6V5H5zm1 1h4v4H6V6z"/> </g> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/link-ltr-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/link-ltr-invert.svg index d5a69c0c98..7c36535330 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/link-ltr-invert.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/link-ltr-invert.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #fff }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff"> <path d="M15.387 4.33c-2.1 0-3.6 1.9-5.1 3.3.2 0 .5-.1.8-.1.5 0 1 .1 1.5.3.8-.8 1.6-1.7 2.8-1.7.6 0 1.3.3 1.8.7 1 1 1 2.6 0 3.6l-2.6 2.6c-.4.4-1.2.7-1.8.7-1.4 0-2.1-.9-2.6-2l-1.3 1.3c.8 1.5 2 2.6 3.8 2.6 1.2 0 2.3-.5 3-1.3l2.6-2.6c.9-.9 1.5-2 1.5-3.3-.2-2.2-2.2-4.1-4.4-4.1zm-4.3 12.1l-.9.9c-.4.4-1.2.7-1.8.7-.6 0-1.3-.3-1.8-.7-1-1-1-2.7 0-3.6l2.6-2.6c.4-.4 1.2-.7 1.8-.7 1.4 0 2.1 1 2.6 2l1.3-1.3c-.8-1.5-2-2.6-3.8-2.6-1.2 0-2.3.5-3 1.3l-2.6 2.6c-1.7 1.7-1.7 4.4 0 6 1.6 1.6 4.4 1.7 5.9 0l1.9-1.9c-.3.1-.6.1-.9.1-.5 0-.9 0-1.3-.2z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/link-ltr-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/link-ltr-progressive.svg index c62fcca870..22228cd773 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/link-ltr-progressive.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/link-ltr-progressive.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #36c }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c"> <path d="M15.387 4.33c-2.1 0-3.6 1.9-5.1 3.3.2 0 .5-.1.8-.1.5 0 1 .1 1.5.3.8-.8 1.6-1.7 2.8-1.7.6 0 1.3.3 1.8.7 1 1 1 2.6 0 3.6l-2.6 2.6c-.4.4-1.2.7-1.8.7-1.4 0-2.1-.9-2.6-2l-1.3 1.3c.8 1.5 2 2.6 3.8 2.6 1.2 0 2.3-.5 3-1.3l2.6-2.6c.9-.9 1.5-2 1.5-3.3-.2-2.2-2.2-4.1-4.4-4.1zm-4.3 12.1l-.9.9c-.4.4-1.2.7-1.8.7-.6 0-1.3-.3-1.8-.7-1-1-1-2.7 0-3.6l2.6-2.6c.4-.4 1.2-.7 1.8-.7 1.4 0 2.1 1 2.6 2l1.3-1.3c-.8-1.5-2-2.6-3.8-2.6-1.2 0-2.3.5-3 1.3l-2.6 2.6c-1.7 1.7-1.7 4.4 0 6 1.6 1.6 4.4 1.7 5.9 0l1.9-1.9c-.3.1-.6.1-.9.1-.5 0-.9 0-1.3-.2z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/link-rtl-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/link-rtl-invert.svg index 7bb02faca7..1ea19e87dc 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/link-rtl-invert.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/link-rtl-invert.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #fff }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff"> <path d="M9.025 3.6c2.1 0 3.6 1.9 5.1 3.3-.2 0-.5-.1-.8-.1-.5 0-1 .1-1.5.3-.8-.8-1.6-1.7-2.8-1.7-.6 0-1.3.3-1.8.7-1 1-1 2.6 0 3.6l2.6 2.6c.4.4 1.2.7 1.8.7 1.4 0 2.1-.9 2.6-2l1.3 1.3c-.8 1.5-2 2.6-3.8 2.6-1.2 0-2.3-.5-3-1.3l-2.6-2.6c-.9-.9-1.5-2-1.5-3.3.2-2.2 2.2-4.1 4.4-4.1zm4.3 12.1l.9.9c.4.4 1.2.7 1.8.7.6 0 1.3-.3 1.8-.7 1-1 1-2.7 0-3.6l-2.6-2.6c-.4-.4-1.2-.7-1.8-.7-1.4 0-2.1 1-2.6 2l-1.3-1.3c.8-1.5 2-2.6 3.8-2.6 1.2 0 2.3.5 3 1.3l2.6 2.6c1.7 1.7 1.7 4.4 0 6-1.6 1.6-4.4 1.7-5.9 0l-1.9-1.9c.3.1.6.1.9.1.5 0 .9 0 1.3-.2z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/link-rtl-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/link-rtl-progressive.svg index 1d6be90e5d..3af1611900 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/link-rtl-progressive.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/link-rtl-progressive.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #36c }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c"> <path d="M9.025 3.6c2.1 0 3.6 1.9 5.1 3.3-.2 0-.5-.1-.8-.1-.5 0-1 .1-1.5.3-.8-.8-1.6-1.7-2.8-1.7-.6 0-1.3.3-1.8.7-1 1-1 2.6 0 3.6l2.6 2.6c.4.4 1.2.7 1.8.7 1.4 0 2.1-.9 2.6-2l1.3 1.3c-.8 1.5-2 2.6-3.8 2.6-1.2 0-2.3-.5-3-1.3l-2.6-2.6c-.9-.9-1.5-2-1.5-3.3.2-2.2 2.2-4.1 4.4-4.1zm4.3 12.1l.9.9c.4.4 1.2.7 1.8.7.6 0 1.3-.3 1.8-.7 1-1 1-2.7 0-3.6l-2.6-2.6c-.4-.4-1.2-.7-1.8-.7-1.4 0-2.1 1-2.6 2l-1.3-1.3c.8-1.5 2-2.6 3.8-2.6 1.2 0 2.3.5 3 1.3l2.6 2.6c1.7 1.7 1.7 4.4 0 6-1.6 1.6-4.4 1.7-5.9 0l-1.9-1.9c.3.1.6.1.9.1.5 0 .9 0 1.3-.2z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/listBullet-ltr-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/listBullet-ltr-invert.svg index d63a791f4d..cb63d506d9 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/listBullet-ltr-invert.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/listBullet-ltr-invert.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #fff }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff"> <path d="M21 7H9V5h12v2zM7 6c0 1.1-.9 2-2 2s-2-.9-2-2 .9-2 2-2 2 .9 2 2zm14 7H9v-2h12v2zM7 12c0 1.1-.9 2-2 2s-2-.9-2-2 .9-2 2-2 2 .9 2 2zm14 7H9v-2h12v2zM7 18c0 1.1-.9 2-2 2s-2-.9-2-2 .9-2 2-2 2 .9 2 2z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/listBullet-ltr-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/listBullet-ltr-progressive.svg index db97e4b05c..0417a945d8 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/listBullet-ltr-progressive.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/listBullet-ltr-progressive.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #36c }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c"> <path d="M21 7H9V5h12v2zM7 6c0 1.1-.9 2-2 2s-2-.9-2-2 .9-2 2-2 2 .9 2 2zm14 7H9v-2h12v2zM7 12c0 1.1-.9 2-2 2s-2-.9-2-2 .9-2 2-2 2 .9 2 2zm14 7H9v-2h12v2zM7 18c0 1.1-.9 2-2 2s-2-.9-2-2 .9-2 2-2 2 .9 2 2z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/listBullet-rtl-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/listBullet-rtl-invert.svg index 49879fbb98..081fee42f8 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/listBullet-rtl-invert.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/listBullet-rtl-invert.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #fff }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff"> <path d="M3 7h12V5H3v2zm14-1c0 1.1.9 2 2 2s2-.9 2-2-.9-2-2-2-2 .9-2 2zM3 13h12v-2H3v2zm14-1c0 1.1.9 2 2 2s2-.9 2-2-.9-2-2-2-2 .9-2 2zM3 19h12v-2H3v2zm14-1c0 1.1.9 2 2 2s2-.9 2-2-.9-2-2-2-2 .9-2 2z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/listBullet-rtl-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/listBullet-rtl-progressive.svg index 05b4b85ddf..c8610c9ded 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/listBullet-rtl-progressive.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/listBullet-rtl-progressive.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #36c }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c"> <path d="M3 7h12V5H3v2zm14-1c0 1.1.9 2 2 2s2-.9 2-2-.9-2-2-2-2 .9-2 2zM3 13h12v-2H3v2zm14-1c0 1.1.9 2 2 2s2-.9 2-2-.9-2-2-2-2 .9-2 2zM3 19h12v-2H3v2zm14-1c0 1.1.9 2 2 2s2-.9 2-2-.9-2-2-2-2 .9-2 2z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/listNumbered-ltr-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/listNumbered-ltr-invert.svg index 0d37861c60..c752585e14 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/listNumbered-ltr-invert.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/listNumbered-ltr-invert.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #fff }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff"> <path d="M21 7H8V5h13v2zm0 6H8v-2h13v2zm0 6H8v-2h13v2zM4 4h2v4H5V5H4zm-1 6V9h3v3H4v1h2v1H3v-3h2v-1zm3 10H3v-1h2v-1H4v-1h1v-1H3v-1h3z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/listNumbered-ltr-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/listNumbered-ltr-progressive.svg index d3328a135f..150723fdf7 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/listNumbered-ltr-progressive.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/listNumbered-ltr-progressive.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #36c }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c"> <path d="M21 7H8V5h13v2zm0 6H8v-2h13v2zm0 6H8v-2h13v2zM4 4h2v4H5V5H4zm-1 6V9h3v3H4v1h2v1H3v-3h2v-1zm3 10H3v-1h2v-1H4v-1h1v-1H3v-1h3z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/listNumbered-rtl-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/listNumbered-rtl-invert.svg index fff182c0c3..493654d71f 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/listNumbered-rtl-invert.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/listNumbered-rtl-invert.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #fff }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff"> <path d="M3 7h13V5H3zm0 6h13v-2H3zm0 6h13v-2H3zM18 4h2v4h-1V5h-1zm0 6V9h3v3h-2v1h2v1h-3v-3h2v-1zm3 10h-3v-1h2v-1h-1v-1h1v-1h-2v-1h3z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/listNumbered-rtl-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/listNumbered-rtl-progressive.svg index c4c93968bf..469f949bcd 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/listNumbered-rtl-progressive.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/listNumbered-rtl-progressive.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #36c }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c"> <path d="M3 7h13V5H3zm0 6h13v-2H3zm0 6h13v-2H3zM18 4h2v4h-1V5h-1zm0 6V9h3v3h-2v1h2v1h-3v-3h2v-1zm3 10h-3v-1h2v-1h-1v-1h1v-1h-2v-1h3z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/lock-ltr-destructive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/lock-ltr-destructive.svg index 2cfa62e84f..9e4aee09a1 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/lock-ltr-destructive.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/lock-ltr-destructive.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #d33 }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#d33"> <path d="M15 8s0-3-2.5-3S10 8 10 8v1h5zm2 0v1h2v10H9c-1.7 0-3-1.3-3-3V9h2V8s0-5 4.5-5S17 8 17 8z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/lock-ltr-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/lock-ltr-invert.svg index fa72442bc7..7e11b41362 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/lock-ltr-invert.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/lock-ltr-invert.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #fff }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff"> <path d="M15 8s0-3-2.5-3S10 8 10 8v1h5zm2 0v1h2v10H9c-1.7 0-3-1.3-3-3V9h2V8s0-5 4.5-5S17 8 17 8z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/lock-ltr-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/lock-ltr-progressive.svg index e21e75538b..a90a981e27 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/lock-ltr-progressive.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/lock-ltr-progressive.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #36c }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c"> <path d="M15 8s0-3-2.5-3S10 8 10 8v1h5zm2 0v1h2v10H9c-1.7 0-3-1.3-3-3V9h2V8s0-5 4.5-5S17 8 17 8z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/lock-rtl-destructive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/lock-rtl-destructive.svg index 2daea47b1a..1eea0ed909 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/lock-rtl-destructive.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/lock-rtl-destructive.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #d33 }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#d33"> <path d="M10 8s0-3 2.5-3S15 8 15 8v1h-5zM8 8v1H6v10h10c1.7 0 3-1.3 3-3V9h-2V8s0-5-4.5-5S8 8 8 8z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/lock-rtl-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/lock-rtl-invert.svg index cfbad71358..9396317b1b 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/lock-rtl-invert.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/lock-rtl-invert.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #fff }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff"> <path d="M10 8s0-3 2.5-3S15 8 15 8v1h-5zM8 8v1H6v10h10c1.7 0 3-1.3 3-3V9h-2V8s0-5-4.5-5S8 8 8 8z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/lock-rtl-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/lock-rtl-progressive.svg index afd2e074fc..6d2fa9ce0a 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/lock-rtl-progressive.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/lock-rtl-progressive.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #36c }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c"> <path d="M10 8s0-3 2.5-3S15 8 15 8v1h-5zM8 8v1H6v10h10c1.7 0 3-1.3 3-3V9h-2V8s0-5-4.5-5S8 8 8 8z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/logOut-ltr-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/logOut-ltr-invert.svg index 0d5cc21bbf..da6a634f44 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/logOut-ltr-invert.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/logOut-ltr-invert.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #fff }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff"> <path d="M15 14v3l5-4.5L15 8v3H8c0 1.7 1.3 3 3 3h4zm-1-9H4v15h10v-2H6V7h8V5z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/logOut-ltr-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/logOut-ltr-progressive.svg index 9e8d1a6981..bdf23f4dd3 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/logOut-ltr-progressive.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/logOut-ltr-progressive.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #36c }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c"> <path d="M15 14v3l5-4.5L15 8v3H8c0 1.7 1.3 3 3 3h4zm-1-9H4v15h10v-2H6V7h8V5z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/logOut-rtl-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/logOut-rtl-invert.svg index 07ef00fde7..ea358035a8 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/logOut-rtl-invert.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/logOut-rtl-invert.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #fff }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff"> <path d="M9 14v3l-5-4.5L9 8v3h7c0 1.7-1.3 3-3 3H9zm1-9h10v15H10v-2h8V7h-8V5z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/logOut-rtl-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/logOut-rtl-progressive.svg index 5a8617a266..403bfc9058 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/logOut-rtl-progressive.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/logOut-rtl-progressive.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #36c }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c"> <path d="M9 14v3l-5-4.5L9 8v3h7c0 1.7-1.3 3-3 3H9zm1-9h10v15H10v-2h8V7h-8V5z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/logo-cc-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/logo-cc-invert.svg index da611ba6e5..6d95c87358 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/logo-cc-invert.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/logo-cc-invert.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #fff }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff"> <path d="M12 6c-3.9 0-7 3.1-7 7s3.1 7 7 7 7-3.1 7-7-3.1-7-7-7zm0 13c-3.3 0-6-2.7-6-6s2.7-6 6-6 6 2.7 6 6-2.7 6-6 6zm-1.7-4.6c-.7 0-1-.4-1-1.2s.3-1.2 1-1.2c.4 0 .6.2.8.6l.9-.5c-.4-.7-1-1-1.9-1-.6 0-1.1.2-1.5.6s-.6.8-.6 1.5.2 1.2.6 1.6c.4.4.9.6 1.5.6.8 0 1.4-.4 1.9-1.1l-.9-.4c-.2.3-.5.5-.8.5zm4 0c-.7 0-1-.4-1-1.2s.3-1.2 1-1.2c.4 0 .6.2.8.6l.9-.5c-.4-.7-1-1-1.9-1-.6 0-1.1.2-1.5.6s-.6.8-.6 1.5.2 1.2.6 1.6c.4.4.9.6 1.5.6.8 0 1.4-.4 1.9-1.1l-.9-.4c-.2.3-.5.5-.8.5z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/logo-cc-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/logo-cc-progressive.svg index c24cba628f..ee162200d3 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/logo-cc-progressive.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/logo-cc-progressive.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #36c }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c"> <path d="M12 6c-3.9 0-7 3.1-7 7s3.1 7 7 7 7-3.1 7-7-3.1-7-7-7zm0 13c-3.3 0-6-2.7-6-6s2.7-6 6-6 6 2.7 6 6-2.7 6-6 6zm-1.7-4.6c-.7 0-1-.4-1-1.2s.3-1.2 1-1.2c.4 0 .6.2.8.6l.9-.5c-.4-.7-1-1-1.9-1-.6 0-1.1.2-1.5.6s-.6.8-.6 1.5.2 1.2.6 1.6c.4.4.9.6 1.5.6.8 0 1.4-.4 1.9-1.1l-.9-.4c-.2.3-.5.5-.8.5zm4 0c-.7 0-1-.4-1-1.2s.3-1.2 1-1.2c.4 0 .6.2.8.6l.9-.5c-.4-.7-1-1-1.9-1-.6 0-1.1.2-1.5.6s-.6.8-.6 1.5.2 1.2.6 1.6c.4.4.9.6 1.5.6.8 0 1.4-.4 1.9-1.1l-.9-.4c-.2.3-.5.5-.8.5z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/logo-wikimediaCommons-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/logo-wikimediaCommons-invert.svg index 9414378af2..27513cc270 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/logo-wikimediaCommons-invert.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/logo-wikimediaCommons-invert.svg @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #fff }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff"> <path d="M15.4 7.8c-2-.9-2.3-2.5-2.4-2.8.1.1 2 1 2 1l-3-5-3 5 2-1s0 .8.6 2.1c.8 1.5 2.2 2.2 2.2 2.2s1.6.7 2.2 1.3l-.7.7-.5-.5-.4 1.8 1.8-.4-.5-.5.7-.7c.9 1 1.5 2.3 1.6 3.8h-1V14l-1.5 1 1.5 1v-.8h1c-.1 1.5-.6 2.8-1.6 3.8l-.7-.7.5-.5-1.8-.4.4 1.8.5-.5.7.7c-1 .9-2.3 1.5-3.8 1.6v-1h.8l-1-1.5-1 1.5h.8v1c-1.5-.1-2.8-.6-3.8-1.6l.7-.7.5.5.4-1.8-1.8.4.5.5-.7.7c-.9-1-1.5-2.3-1.6-3.8h1v.8l1.5-1L7 14v.8H6c.1-1.5.6-2.8 1.6-3.8l.7.7-.5.5 1.8.4-.4-1.8-.5.5-.7-.7-1.5-1.4A7.99 7.99 0 0 0 4 15c0 4.4 3.6 8 8 8s8-3.6 8-8c0-3.2-1.9-5.9-4.6-7.2z"/> <circle cx="12" cy="15" r="3"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/logo-wikimediaCommons-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/logo-wikimediaCommons-progressive.svg index 5e89b3dfbe..bb82d1f9d2 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/logo-wikimediaCommons-progressive.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/logo-wikimediaCommons-progressive.svg @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #36c }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c"> <path d="M15.4 7.8c-2-.9-2.3-2.5-2.4-2.8.1.1 2 1 2 1l-3-5-3 5 2-1s0 .8.6 2.1c.8 1.5 2.2 2.2 2.2 2.2s1.6.7 2.2 1.3l-.7.7-.5-.5-.4 1.8 1.8-.4-.5-.5.7-.7c.9 1 1.5 2.3 1.6 3.8h-1V14l-1.5 1 1.5 1v-.8h1c-.1 1.5-.6 2.8-1.6 3.8l-.7-.7.5-.5-1.8-.4.4 1.8.5-.5.7.7c-1 .9-2.3 1.5-3.8 1.6v-1h.8l-1-1.5-1 1.5h.8v1c-1.5-.1-2.8-.6-3.8-1.6l.7-.7.5.5.4-1.8-1.8.4.5.5-.7.7c-.9-1-1.5-2.3-1.6-3.8h1v.8l1.5-1L7 14v.8H6c.1-1.5.6-2.8 1.6-3.8l.7.7-.5.5 1.8.4-.4-1.8-.5.5-.7-.7-1.5-1.4A7.99 7.99 0 0 0 4 15c0 4.4 3.6 8 8 8s8-3.6 8-8c0-3.2-1.9-5.9-4.6-7.2z"/> <circle cx="12" cy="15" r="3"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/logo-wikimediaDiscovery-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/logo-wikimediaDiscovery-invert.svg index 21548d9b03..9c4a955074 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/logo-wikimediaDiscovery-invert.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/logo-wikimediaDiscovery-invert.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #fff }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff"> <path d="M15.3 14.7C16.1 10.9 14.7 4 12 4c-2.7 0-4.2 6.7-3.4 10.5L7 18h2.7l.3 1h4c.2-.3.1-.5.3-1H17l-1.7-3.3zM12 10c-.8 0-1.5-.7-1.5-1.5S11.2 7 12 7s1.5.7 1.5 1.5S12.8 10 12 10zm2 10c0 1.1-2 2-2 2s-2-.9-2-2"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/logo-wikimediaDiscovery-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/logo-wikimediaDiscovery-progressive.svg index 359d032580..594cdfbd01 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/logo-wikimediaDiscovery-progressive.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/logo-wikimediaDiscovery-progressive.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #36c }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c"> <path d="M15.3 14.7C16.1 10.9 14.7 4 12 4c-2.7 0-4.2 6.7-3.4 10.5L7 18h2.7l.3 1h4c.2-.3.1-.5.3-1H17l-1.7-3.3zM12 10c-.8 0-1.5-.7-1.5-1.5S11.2 7 12 7s1.5.7 1.5 1.5S12.8 10 12 10zm2 10c0 1.1-2 2-2 2s-2-.9-2-2"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/logo-wikipedia-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/logo-wikipedia-invert.svg index f7293c869c..fb304f6bb3 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/logo-wikipedia-invert.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/logo-wikipedia-invert.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #fff }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff"> <path d="M22.3 6.3c0 .2 0 .3-.1.3-.7.1-1.2.5-1.6 1.1-.1.2-.2.4-.3.7l-4.6 10.1c-.1.2-.2.3-.2.3s-.1.1-.2.1c-.2 0-.4-.1-.5-.4L12.2 13l-2.8 5.5c-.1.3-.3.4-.5.4s-.4-.1-.5-.4L4.1 8.4c-.3-.8-.6-1.2-.8-1.4-.2-.2-.5-.3-1-.4-.1-.1-.1-.2-.1-.3 0-.2 0-.3.1-.3h4.3c.1.1.1.2.1.3 0 .2 0 .3-.1.3-.6.1-1 .2-1.1.4-.1.2 0 .6.3 1.2l3.6 8.2h.1l2.2-4.4L10 8.4c-.3-.7-.6-1.2-.8-1.4s-.5-.3-.9-.4c-.1-.1-.1-.2-.1-.3 0-.2 0-.3.1-.3h3.6c.1.1.1.2.1.3 0 .2 0 .3-.1.3-.4.1-.6.2-.6.4s.1.6.4 1.2l1 1.9 1-1.9c.3-.6.5-.9.5-1.1 0-.2 0-.3-.1-.4-.1-.1-.3-.1-.5-.1l-.1-.3c0-.2 0-.3.1-.3h3c.1.1.1.2.1.3 0 .2 0 .3-.1.3-.5.1-.8.2-1.1.5-.3.3-.6.7-.8 1.3l-1.3 2.8 2.5 5.2h.1l3.7-8.1c.3-.5.3-.9.2-1.2-.1-.3-.5-.4-1.1-.5-.1-.1-.1-.2-.1-.3s0-.3.1-.3h3.7c-.2.1-.2.2-.2.3z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/logo-wikipedia-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/logo-wikipedia-progressive.svg index 64d2e2823d..4c7864bb17 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/logo-wikipedia-progressive.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/logo-wikipedia-progressive.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #36c }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c"> <path d="M22.3 6.3c0 .2 0 .3-.1.3-.7.1-1.2.5-1.6 1.1-.1.2-.2.4-.3.7l-4.6 10.1c-.1.2-.2.3-.2.3s-.1.1-.2.1c-.2 0-.4-.1-.5-.4L12.2 13l-2.8 5.5c-.1.3-.3.4-.5.4s-.4-.1-.5-.4L4.1 8.4c-.3-.8-.6-1.2-.8-1.4-.2-.2-.5-.3-1-.4-.1-.1-.1-.2-.1-.3 0-.2 0-.3.1-.3h4.3c.1.1.1.2.1.3 0 .2 0 .3-.1.3-.6.1-1 .2-1.1.4-.1.2 0 .6.3 1.2l3.6 8.2h.1l2.2-4.4L10 8.4c-.3-.7-.6-1.2-.8-1.4s-.5-.3-.9-.4c-.1-.1-.1-.2-.1-.3 0-.2 0-.3.1-.3h3.6c.1.1.1.2.1.3 0 .2 0 .3-.1.3-.4.1-.6.2-.6.4s.1.6.4 1.2l1 1.9 1-1.9c.3-.6.5-.9.5-1.1 0-.2 0-.3-.1-.4-.1-.1-.3-.1-.5-.1l-.1-.3c0-.2 0-.3.1-.3h3c.1.1.1.2.1.3 0 .2 0 .3-.1.3-.5.1-.8.2-1.1.5-.3.3-.6.7-.8 1.3l-1.3 2.8 2.5 5.2h.1l3.7-8.1c.3-.5.3-.9.2-1.2-.1-.3-.5-.4-1.1-.5-.1-.1-.1-.2-.1-.3s0-.3.1-.3h3.7c-.2.1-.2.2-.2.3z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/map-ltr-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/map-ltr-invert.svg index fb772cfb0a..59bb24ee30 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/map-ltr-invert.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/map-ltr-invert.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #fff }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff"> <path d="M15 6L9 4 3 6v15l6-2 6 2 6-2V4l-6 2zM8.7 18.1L4 19.6V6.7L9 5v12.9l-.3.2zm11.3.2L15 20V7.1l.3-.1L20 5.4v12.9z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/map-ltr-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/map-ltr-progressive.svg index c148e74f00..bebac9cf4d 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/map-ltr-progressive.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/map-ltr-progressive.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #36c }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c"> <path d="M15 6L9 4 3 6v15l6-2 6 2 6-2V4l-6 2zM8.7 18.1L4 19.6V6.7L9 5v12.9l-.3.2zm11.3.2L15 20V7.1l.3-.1L20 5.4v12.9z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/map-rtl-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/map-rtl-invert.svg index bfbfe723f8..06c3d1068e 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/map-rtl-invert.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/map-rtl-invert.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #fff }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff"> <path d="M9 6l6-2 6 2v15l-6-2-6 2-6-2V4l6 2zm6.3 12.1l4.7 1.5V6.7L15 5v12.9l.3.2zM4 18.3L9 20V7.1L8.7 7 4 5.4v12.9z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/map-rtl-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/map-rtl-progressive.svg index e928f61a3b..a969ee6cc5 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/map-rtl-progressive.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/map-rtl-progressive.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #36c }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c"> <path d="M9 6l6-2 6 2v15l-6-2-6 2-6-2V4l6 2zm6.3 12.1l4.7 1.5V6.7L15 5v12.9l.3.2zM4 18.3L9 20V7.1L8.7 7 4 5.4v12.9z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/mapPin-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/mapPin-invert.svg index 548e136734..a8010f95e9 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/mapPin-invert.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/mapPin-invert.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #fff }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff"> <path d="M19 12c0-3.9-3.1-7-7-7s-7 3.1-7 7c0 1.4.4 2.6 1.1 3.7L12 23l5.9-7.3c.7-1.1 1.1-2.3 1.1-3.7zm-7 3c-1.6 0-3-1.4-3-3s1.4-3 3-3 3 1.4 3 3-1.4 3-3 3z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/mapPin-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/mapPin-progressive.svg index daf032a04c..717b91cb51 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/mapPin-progressive.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/mapPin-progressive.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #36c }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c"> <path d="M19 12c0-3.9-3.1-7-7-7s-7 3.1-7 7c0 1.4.4 2.6 1.1 3.7L12 23l5.9-7.3c.7-1.1 1.1-2.3 1.1-3.7zm-7 3c-1.6 0-3-1.4-3-3s1.4-3 3-3 3 1.4 3 3-1.4 3-3 3z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/mapPinAdd-ltr-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/mapPinAdd-ltr-invert.svg index cfa98d8416..eb5e6244de 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/mapPinAdd-ltr-invert.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/mapPinAdd-ltr-invert.svg @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #fff }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff"> <path d="M24 4h-4V0h-2v4h-4v2h4v4h2V6h4V4z"/> <path d="M18.9 11c.1.3.1.7.1 1 0 1.4-.4 2.6-1.1 3.7L12 23l-5.9-7.3C5.4 14.6 5 13.4 5 12c0-3.9 3.1-7 7-7 .3 0 .7 0 1 .1V7h3.9l.1.1V11h1.9zM15 12c0-1.6-1.4-3-3-3s-3 1.4-3 3 1.4 3 3 3 3-1.4 3-3z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/mapPinAdd-ltr-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/mapPinAdd-ltr-progressive.svg index 7cf1509e00..3e0ea6c505 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/mapPinAdd-ltr-progressive.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/mapPinAdd-ltr-progressive.svg @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #36c }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c"> <path d="M24 4h-4V0h-2v4h-4v2h4v4h2V6h4V4z"/> <path d="M18.9 11c.1.3.1.7.1 1 0 1.4-.4 2.6-1.1 3.7L12 23l-5.9-7.3C5.4 14.6 5 13.4 5 12c0-3.9 3.1-7 7-7 .3 0 .7 0 1 .1V7h3.9l.1.1V11h1.9zM15 12c0-1.6-1.4-3-3-3s-3 1.4-3 3 1.4 3 3 3 3-1.4 3-3z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/mapPinAdd-rtl-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/mapPinAdd-rtl-invert.svg index 8b02ddbb71..a7a14e91f8 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/mapPinAdd-rtl-invert.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/mapPinAdd-rtl-invert.svg @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #fff }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff"> <path d="M0 4h4V0h2v4h4v2H6v4H4V6H0"/> <path d="M6 11h1V7.1l.1-.1H11V5.1c.3-.1.7-.1 1-.1 3.9 0 7 3.1 7 7 0 1.4-.4 2.6-1.1 3.7L12 23l-5.9-7.3C5.4 14.6 5 13.4 5 12c0-.3 0-.7.1-1H6zm6 4c1.65 0 3-1.35 3-3s-1.35-3-3-3-3 1.35-3 3 1.35 3 3 3z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/mapPinAdd-rtl-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/mapPinAdd-rtl-progressive.svg index c920c8d5be..9bcc436525 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/mapPinAdd-rtl-progressive.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/mapPinAdd-rtl-progressive.svg @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #36c }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c"> <path d="M0 4h4V0h2v4h4v2H6v4H4V6H0"/> <path d="M6 11h1V7.1l.1-.1H11V5.1c.3-.1.7-.1 1-.1 3.9 0 7 3.1 7 7 0 1.4-.4 2.6-1.1 3.7L12 23l-5.9-7.3C5.4 14.6 5 13.4 5 12c0-.3 0-.7.1-1H6zm6 4c1.65 0 3-1.35 3-3s-1.35-3-3-3-3 1.35-3 3 1.35 3 3 3z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/markup-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/markup-invert.svg index 0fde2c92f3..cb54763a41 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/markup-invert.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/markup-invert.svg @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #fff }</style> +<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff"> <g id="markup"> <path id="left-bracket" d="M9.665 6.32l-4.259 4.274-1.406 1.406 1.406 1.406 4.259 4.274 1.406-1.438-4.259-4.243 4.259-4.243z"/> <use transform="matrix(-1 0 0 1 24 0)" id="right-bracket" xlink:href="#left-bracket"/> </g> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/markup-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/markup-progressive.svg index 891f51daab..af2f0ff1d8 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/markup-progressive.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/markup-progressive.svg @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #36c }</style> +<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c"> <g id="markup"> <path id="left-bracket" d="M9.665 6.32l-4.259 4.274-1.406 1.406 1.406 1.406 4.259 4.274 1.406-1.438-4.259-4.243 4.259-4.243z"/> <use transform="matrix(-1 0 0 1 24 0)" id="right-bracket" xlink:href="#left-bracket"/> </g> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/menu-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/menu-invert.svg index 1c1dc222d1..e87b9bf5ca 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/menu-invert.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/menu-invert.svg @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #fff }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff"> <g id="menu"> <path id="lines" d="M6 15h12a1 1 0 0 1 1 1v1a1 1 0 0 1-1 1H6a1 1 0 0 1-1-1v-1a1 1 0 0 1 1-1zm-1-4v1a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1v-1a1 1 0 0 0-1-1H6a1 1 0 0 0-1 1zm0-5v1a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1V6a1 1 0 0 0-1-1H6a1 1 0 0 0-1 1z"/> </g> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/menu-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/menu-progressive.svg index a94207ab48..6d9edd1703 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/menu-progressive.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/menu-progressive.svg @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #36c }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c"> <g id="menu"> <path id="lines" d="M6 15h12a1 1 0 0 1 1 1v1a1 1 0 0 1-1 1H6a1 1 0 0 1-1-1v-1a1 1 0 0 1 1-1zm-1-4v1a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1v-1a1 1 0 0 0-1-1H6a1 1 0 0 0-1 1zm0-5v1a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1V6a1 1 0 0 0-1-1H6a1 1 0 0 0-1 1z"/> </g> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/message-ltr-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/message-ltr-invert.svg index b7a09c6fe5..a3aae219fe 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/message-ltr-invert.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/message-ltr-invert.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #fff }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff"> <path d="M21 9c0-1.7-1.3-3-3-3H3v3l9 4 9-4zM3 11v6c0 1.7 1.3 3 3 3h15v-9l-9 4-9-4z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/message-ltr-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/message-ltr-progressive.svg index 47e27976a6..36bfd0c014 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/message-ltr-progressive.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/message-ltr-progressive.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #36c }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c"> <path d="M21 9c0-1.7-1.3-3-3-3H3v3l9 4 9-4zM3 11v6c0 1.7 1.3 3 3 3h15v-9l-9 4-9-4z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/message-rtl-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/message-rtl-invert.svg index 63493b71e0..0a52eecbc7 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/message-rtl-invert.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/message-rtl-invert.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #fff }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff"> <path d="M3 9c0-1.7 1.3-3 3-3h15v3l-9 4-9-4zm18 2v6c0 1.7-1.3 3-3 3H3v-9l9 4 9-4z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/message-rtl-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/message-rtl-progressive.svg index c7b2c68240..0beb5ee3e3 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/message-rtl-progressive.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/message-rtl-progressive.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #36c }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c"> <path d="M3 9c0-1.7 1.3-3 3-3h15v3l-9 4-9-4zm18 2v6c0 1.7-1.3 3-3 3H3v-9l9 4 9-4z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/moon-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/moon-invert.svg index 6fce33f9b6..7ecd512b13 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/moon-invert.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/moon-invert.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #ffffff }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#ffffff"> <path d="M19.1 17.5c-3.3 1.4-7.1-.2-8.5-3.5-1.4-3.3.2-7.1 3.5-8.5.2-.1.5-.2.7-.3-1.6-.4-3.2-.3-4.8.4C6 7.3 4 12 5.7 16c1.7 4.1 6.4 6 10.5 4.3 1.7-.7 3-1.9 3.8-3.4-.3.3-.6.4-.9.6z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/move-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/move-invert.svg index 5d9b12a860..2da24a5f7d 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/move-invert.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/move-invert.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #fff }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff"> <path d="M20 11l-4-3v2h-3V7h2l-3-4-3 4h2v3H8V8l-4 3 4 3v-2h3v3H9l3 4 3-4h-2v-3h3v2z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/move-ltr-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/move-ltr-invert.svg index b5b9a8a9f8..468ad1bd87 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/move-ltr-invert.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/move-ltr-invert.svg @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #fff }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff"> <g id="move-ltr"> <path id="arrow" d="M8.935 7.18l5.302 5.303-5.302 5.303L10.35 19.2l6.715-6.717-6.716-6.716z"/> </g> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/move-ltr-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/move-ltr-progressive.svg index 0a9917f6d5..dd47881782 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/move-ltr-progressive.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/move-ltr-progressive.svg @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #36c }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c"> <g id="move-ltr"> <path id="arrow" d="M8.935 7.18l5.302 5.303-5.302 5.303L10.35 19.2l6.715-6.717-6.716-6.716z"/> </g> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/move-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/move-progressive.svg index 00ae97bfde..6274f6f5e3 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/move-progressive.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/move-progressive.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #36c }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c"> <path d="M20 11l-4-3v2h-3V7h2l-3-4-3 4h2v3H8V8l-4 3 4 3v-2h3v3H9l3 4 3-4h-2v-3h3v2z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/move-rtl-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/move-rtl-invert.svg index 6ba135e5c4..264f3b6f81 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/move-rtl-invert.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/move-rtl-invert.svg @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #fff }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff"> <g id="move-rtl"> <path id="arrow" d="M15.065 17.786l-5.302-5.303 5.302-5.302-1.415-1.41-6.714 6.72 6.714 6.71z"/> </g> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/move-rtl-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/move-rtl-progressive.svg index e98ca081b6..32aee25d22 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/move-rtl-progressive.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/move-rtl-progressive.svg @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #36c }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c"> <g id="move-rtl"> <path id="arrow" d="M15.065 17.786l-5.302-5.303 5.302-5.302-1.415-1.41-6.714 6.72 6.714 6.71z"/> </g> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/newWindow-ltr-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/newWindow-ltr-invert.svg index 8b86916d06..bc7fedc09f 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/newWindow-ltr-invert.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/newWindow-ltr-invert.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #fff }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff"> <path d="M12 5l2.5 2.5L11 11c-1.2 1.2-1.2 2.8 0 4l5.5-5.5L19 12V5h-7zm5 12H8c-.6 0-1-.4-1-1V7h3L8 5H5v11c0 1.7 1.3 3 3 3h11v-3l-2-2v3z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/newWindow-ltr-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/newWindow-ltr-progressive.svg index 54e3194868..1ef309ba50 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/newWindow-ltr-progressive.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/newWindow-ltr-progressive.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #36c }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c"> <path d="M12 5l2.5 2.5L11 11c-1.2 1.2-1.2 2.8 0 4l5.5-5.5L19 12V5h-7zm5 12H8c-.6 0-1-.4-1-1V7h3L8 5H5v11c0 1.7 1.3 3 3 3h11v-3l-2-2v3z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/newWindow-rtl-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/newWindow-rtl-invert.svg index a372d8829e..41e0401d66 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/newWindow-rtl-invert.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/newWindow-rtl-invert.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #fff }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff"> <path d="M12 5L9.5 7.5 13 11c1.2 1.2 1.2 2.8 0 4L7.5 9.5 5 12V5h7zM7 17h9c.6 0 1-.4 1-1V7h-3l2-2h3v11c0 1.7-1.3 3-3 3H5v-3l2-2v3z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/newWindow-rtl-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/newWindow-rtl-progressive.svg index 3bcf517d21..a877db8eb9 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/newWindow-rtl-progressive.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/newWindow-rtl-progressive.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #36c }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c"> <path d="M12 5L9.5 7.5 13 11c1.2 1.2 1.2 2.8 0 4L7.5 9.5 5 12V5h7zM7 17h9c.6 0 1-.4 1-1V7h-3l2-2h3v11c0 1.7-1.3 3-3 3H5v-3l2-2v3z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/newline-ltr-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/newline-ltr-invert.svg index 5f531f39d7..6ec8972189 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/newline-ltr-invert.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/newline-ltr-invert.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #fff }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff"> <path d="M17.8 5.7c-.5 0-.9.2-1.2.5s-.5.7-.5 1.2v4.3H11v-4l-6 5.5 6 5.5v-4h8v-9h-1.2z" id="line_return"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/newline-ltr-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/newline-ltr-progressive.svg index bf7a0018b1..b0e6aafe65 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/newline-ltr-progressive.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/newline-ltr-progressive.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #36c }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c"> <path d="M17.8 5.7c-.5 0-.9.2-1.2.5s-.5.7-.5 1.2v4.3H11v-4l-6 5.5 6 5.5v-4h8v-9h-1.2z" id="line_return"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/newline-rtl-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/newline-rtl-invert.svg index 34d15fd9d1..c91960805e 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/newline-rtl-invert.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/newline-rtl-invert.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #fff }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff"> <path d="M6.2 5.7c.5 0 .9.2 1.2.5.3.3.5.7.5 1.2v4.3H13v-4l6 5.5-6 5.5v-4H5v-9h1.2z" id="line_return"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/newline-rtl-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/newline-rtl-progressive.svg index b209825c2c..1547e824fd 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/newline-rtl-progressive.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/newline-rtl-progressive.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #36c }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c"> <path d="M6.2 5.7c.5 0 .9.2 1.2.5.3.3.5.7.5 1.2v4.3H13v-4l6 5.5-6 5.5v-4H5v-9h1.2z" id="line_return"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/newspaper-ltr-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/newspaper-ltr-invert.svg index 903b3a0b10..69b737a7b2 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/newspaper-ltr-invert.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/newspaper-ltr-invert.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #fff }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff"> <path d="M6 7v12c-.6 0-1-.4-1-1V9H4v9c0 1.1.9 2 2 2h15V7H6zm9 11H8v-1h7v1zm0-2H8v-1h7v1zm0-2H8v-1h7v1zm4 4h-3v-5h3v5zm0-7H8V9h11v2z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/newspaper-ltr-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/newspaper-ltr-progressive.svg index f2c23c14e1..df59aaccc5 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/newspaper-ltr-progressive.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/newspaper-ltr-progressive.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #36c }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c"> <path d="M6 7v12c-.6 0-1-.4-1-1V9H4v9c0 1.1.9 2 2 2h15V7H6zm9 11H8v-1h7v1zm0-2H8v-1h7v1zm0-2H8v-1h7v1zm4 4h-3v-5h3v5zm0-7H8V9h11v2z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/newspaper-rtl-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/newspaper-rtl-invert.svg index 86bdeb0ece..74fa337c87 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/newspaper-rtl-invert.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/newspaper-rtl-invert.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #fff }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff"> <path d="M19 7v12c.6 0 1-.4 1-1V9h1v9c0 1.1-.9 2-2 2H4V7h15zm-9 11h7v-1h-7v1zm0-2h7v-1h-7v1zm0-2h7v-1h-7v1zm-4 4h3v-5H6v5zm0-7h11V9H6v2z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/newspaper-rtl-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/newspaper-rtl-progressive.svg index edcab40758..5533c83d51 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/newspaper-rtl-progressive.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/newspaper-rtl-progressive.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #36c }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c"> <path d="M19 7v12c.6 0 1-.4 1-1V9h1v9c0 1.1-.9 2-2 2H4V7h15zm-9 11h7v-1h-7v1zm0-2h7v-1h-7v1zm0-2h7v-1h-7v1zm-4 4h3v-5H6v5zm0-7h11V9H6v2z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/noWikiText-ltr-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/noWikiText-ltr-invert.svg index f89b4158a9..d4cad39330 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/noWikiText-ltr-invert.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/noWikiText-ltr-invert.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #fff }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff"> <path d="M15 13l2 2V5h-3v2h1zM3 3L2 4l1 1v14h3v-2H5V7l2 2v10h3v-2H9v-6l6 6h-1v2h3l3 3 1-1-3-3zm7 4V5H7l2 2zm8-2v2h1v10l2 2V5z" id="noWikiText-rtl"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/noWikiText-ltr-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/noWikiText-ltr-progressive.svg index 898c674afd..3fb2dd9d07 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/noWikiText-ltr-progressive.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/noWikiText-ltr-progressive.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #36c }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c"> <path d="M15 13l2 2V5h-3v2h1zM3 3L2 4l1 1v14h3v-2H5V7l2 2v10h3v-2H9v-6l6 6h-1v2h3l3 3 1-1-3-3zm7 4V5H7l2 2zm8-2v2h1v10l2 2V5z" id="noWikiText-rtl"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/noWikiText-rtl-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/noWikiText-rtl-invert.svg index ddac4c98b0..346c582653 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/noWikiText-rtl-invert.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/noWikiText-rtl-invert.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #fff }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff"> <path d="M9 13l-2 2V5h3v2H9zM21 3l1 1-1 1v14h-3v-2h1V7l-2 2v10h-3v-2h1v-6l-6 6h1v2H7l-3 3-1-1 3-3zm-7 4V5h3l-2 2zM6 5v2H5v10l-2 2V5z" id="noWikiText-rtl"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/noWikiText-rtl-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/noWikiText-rtl-progressive.svg index a81c3a5c04..9915009cf2 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/noWikiText-rtl-progressive.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/noWikiText-rtl-progressive.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #36c }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c"> <path d="M9 13l-2 2V5h3v2H9zM21 3l1 1-1 1v14h-3v-2h1V7l-2 2v10h-3v-2h1v-6l-6 6h1v2H7l-3 3-1-1 3-3zm-7 4V5h3l-2 2zM6 5v2H5v10l-2 2V5z" id="noWikiText-rtl"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/notBright-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/notBright-invert.svg index 94fd0b82dd..ca20b5ada8 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/notBright-invert.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/notBright-invert.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #ffffff }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#ffffff"> <path d="M12 5c-4.4 0-8 3.6-8 8s3.6 8 8 8 8-3.6 8-8-3.6-8-8-8z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/notice-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/notice-invert.svg index c7d59cc148..a0f8ddc472 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/notice-invert.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/notice-invert.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" id="svg3116"><style>* { fill: #fff }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" id="svg3116"><g fill="#fff"> <path d="M12 18a6 6 0 1 1 0-12 6 6 0 0 1 0 12zm-1-5h2V8h-2zm0 3h2v-2h-2z" id="alert"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/notice-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/notice-progressive.svg index fefbc9f321..d82812178d 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/notice-progressive.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/notice-progressive.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" id="svg3116"><style>* { fill: #36c }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" id="svg3116"><g fill="#36c"> <path d="M12 18a6 6 0 1 1 0-12 6 6 0 0 1 0 12zm-1-5h2V8h-2zm0 3h2v-2h-2z" id="alert"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/ongoingConversation-ltr-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/ongoingConversation-ltr-invert.svg index 6e878c3bfc..ffd31b2ff3 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/ongoingConversation-ltr-invert.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/ongoingConversation-ltr-invert.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg width="24" height="24" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><style>* { fill: #fff }</style> +<svg width="24" height="24" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><g fill="#fff"> <path d="M17.8 18.6H2.5l2.7-2.7V6h15.3v9.9c0 1.53-1.17 2.7-2.7 2.7zm-7.542-4.95c0 .405-.135.675-.405.945-.27.27-.607.405-.945.405-.405 0-.675-.135-.945-.405a1.332 1.332 0 0 1-.405-.945c0-.338.135-.675.405-.945.27-.27.608-.405.945-.405.338 0 .675.135.945.405.27.27.405.607.405.945zm4.05 0c0 .405-.135.675-.405.945-.27.27-.607.405-.945.405-.405 0-.675-.135-.945-.405a1.332 1.332 0 0 1-.405-.945c0-.338.135-.675.405-.945.27-.27.608-.405.945-.405.338 0 .675.135.945.405.27.27.405.607.405.945zm4.05 0c0 .405-.135.675-.405.945-.27.27-.607.405-.945.405-.405 0-.675-.135-.945-.405a1.332 1.332 0 0 1-.405-.945c0-.338.135-.675.405-.945.27-.27.608-.405.945-.405.338 0 .675.135.945.405.27.27.405.607.405.945z" id="ongoing-conversation" fill-rule="evenodd"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/ongoingConversation-ltr-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/ongoingConversation-ltr-progressive.svg index 25ca20d317..7178cb42b8 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/ongoingConversation-ltr-progressive.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/ongoingConversation-ltr-progressive.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg width="24" height="24" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><style>* { fill: #36c }</style> +<svg width="24" height="24" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><g fill="#36c"> <path d="M17.8 18.6H2.5l2.7-2.7V6h15.3v9.9c0 1.53-1.17 2.7-2.7 2.7zm-7.542-4.95c0 .405-.135.675-.405.945-.27.27-.607.405-.945.405-.405 0-.675-.135-.945-.405a1.332 1.332 0 0 1-.405-.945c0-.338.135-.675.405-.945.27-.27.608-.405.945-.405.338 0 .675.135.945.405.27.27.405.607.405.945zm4.05 0c0 .405-.135.675-.405.945-.27.27-.607.405-.945.405-.405 0-.675-.135-.945-.405a1.332 1.332 0 0 1-.405-.945c0-.338.135-.675.405-.945.27-.27.608-.405.945-.405.338 0 .675.135.945.405.27.27.405.607.405.945zm4.05 0c0 .405-.135.675-.405.945-.27.27-.607.405-.945.405-.405 0-.675-.135-.945-.405a1.332 1.332 0 0 1-.405-.945c0-.338.135-.675.405-.945.27-.27.608-.405.945-.405.338 0 .675.135.945.405.27.27.405.607.405.945z" id="ongoing-conversation" fill-rule="evenodd"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/ongoingConversation-rtl-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/ongoingConversation-rtl-invert.svg index f483a166ab..61e51cacc5 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/ongoingConversation-rtl-invert.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/ongoingConversation-rtl-invert.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg width="24" height="24" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><style>* { fill: #fff }</style> +<svg width="24" height="24" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><g fill="#fff"> <path d="M5.2 18.6h15.3l-2.7-2.7V6H2.5v9.9c0 1.53 1.17 2.7 2.7 2.7zm7.542-4.95c0 .405.135.675.405.945.27.27.607.405.945.405.405 0 .675-.135.945-.405.27-.27.405-.607.405-.945 0-.337-.135-.675-.405-.945a1.334 1.334 0 0 0-.945-.405c-.338 0-.675.135-.945.405-.27.27-.405.607-.405.945zm-4.05 0c0 .405.135.675.405.945.27.27.608.405.945.405.405 0 .675-.135.945-.405.27-.27.405-.607.405-.945 0-.337-.135-.675-.405-.945a1.334 1.334 0 0 0-.945-.405c-.338 0-.675.135-.945.405-.27.27-.405.608-.405.945zm-4.05 0c0 .405.135.675.405.945.27.27.608.405.945.405.405 0 .675-.135.945-.405.27-.27.405-.607.405-.945 0-.337-.135-.675-.405-.945a1.332 1.332 0 0 0-.945-.405c-.337 0-.675.135-.945.405-.27.27-.405.608-.405.945z" id="ongoing-conversation" fill-rule="evenodd"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/ongoingConversation-rtl-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/ongoingConversation-rtl-progressive.svg index 659dde8031..6320f873a1 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/ongoingConversation-rtl-progressive.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/ongoingConversation-rtl-progressive.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg width="24" height="24" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><style>* { fill: #36c }</style> +<svg width="24" height="24" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><g fill="#36c"> <path d="M5.2 18.6h15.3l-2.7-2.7V6H2.5v9.9c0 1.53 1.17 2.7 2.7 2.7zm7.542-4.95c0 .405.135.675.405.945.27.27.607.405.945.405.405 0 .675-.135.945-.405.27-.27.405-.607.405-.945 0-.337-.135-.675-.405-.945a1.334 1.334 0 0 0-.945-.405c-.338 0-.675.135-.945.405-.27.27-.405.607-.405.945zm-4.05 0c0 .405.135.675.405.945.27.27.608.405.945.405.405 0 .675-.135.945-.405.27-.27.405-.607.405-.945 0-.337-.135-.675-.405-.945a1.334 1.334 0 0 0-.945-.405c-.338 0-.675.135-.945.405-.27.27-.405.608-.405.945zm-4.05 0c0 .405.135.675.405.945.27.27.608.405.945.405.405 0 .675-.135.945-.405.27-.27.405-.607.405-.945 0-.337-.135-.675-.405-.945a1.332 1.332 0 0 0-.945-.405c-.337 0-.675.135-.945.405-.27.27-.405.608-.405.945z" id="ongoing-conversation" fill-rule="evenodd"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/outdent-ltr-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/outdent-ltr-invert.svg index 14cf6d72ae..efdbe9a54c 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/outdent-ltr-invert.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/outdent-ltr-invert.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #fff }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff"> <path d="M10 8h9v2h-9V8zm0 3h9v2h-9v-2zm0 3h6v2h-6v-2zm11-8H3V4h18v2zm0 14H3v-2h18v2zM3 12l5 4V8l-5 4z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/outdent-ltr-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/outdent-ltr-progressive.svg index c5f296f6f7..29e5f42116 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/outdent-ltr-progressive.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/outdent-ltr-progressive.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #36c }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c"> <path d="M10 8h9v2h-9V8zm0 3h9v2h-9v-2zm0 3h6v2h-6v-2zm11-8H3V4h18v2zm0 14H3v-2h18v2zM3 12l5 4V8l-5 4z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/outdent-rtl-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/outdent-rtl-invert.svg index 2d47900ffd..3a9d2b53ea 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/outdent-rtl-invert.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/outdent-rtl-invert.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #fff }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff"> <path d="M14 8H5v2h9V8zm0 3H5v2h9v-2zm0 3H8v2h6v-2zM3 6h18V4H3v2zm0 14h18v-2H3v2zm18-8l-5 4V8l5 4z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/outdent-rtl-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/outdent-rtl-progressive.svg index 16eb16ee99..560abbb9ad 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/outdent-rtl-progressive.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/outdent-rtl-progressive.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #36c }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c"> <path d="M14 8H5v2h9V8zm0 3H5v2h9v-2zm0 3H8v2h6v-2zM3 6h18V4H3v2zm0 14h18v-2H3v2zm18-8l-5 4V8l5 4z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/outline-ltr-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/outline-ltr-invert.svg index 56d505cf19..e9fb8180b0 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/outline-ltr-invert.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/outline-ltr-invert.svg @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #fff }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff"> <g id="outline-ltr"> <path id="text" d="M5 13h14v6H5v-6z"/> <path id="float" d="M5 5v6h6V5H5zm5 5H6V6h4v4z"/> </g> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/outline-ltr-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/outline-ltr-progressive.svg index bed725474e..662409a580 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/outline-ltr-progressive.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/outline-ltr-progressive.svg @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #36c }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c"> <g id="outline-ltr"> <path id="text" d="M5 13h14v6H5v-6z"/> <path id="float" d="M5 5v6h6V5H5zm5 5H6V6h4v4z"/> </g> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/outline-rtl-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/outline-rtl-invert.svg index 49dd03eb86..74689d1625 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/outline-rtl-invert.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/outline-rtl-invert.svg @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #fff }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff"> <g id="outline-rtl"> <path id="text" d="M19 19H5v-6h14v6z"/> <path id="float" d="M13 5v6h6V5h-6zm1 1h4v4h-4V6z"/> </g> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/outline-rtl-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/outline-rtl-progressive.svg index 8c126eb712..b579315dbf 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/outline-rtl-progressive.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/outline-rtl-progressive.svg @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #36c }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c"> <g id="outline-rtl"> <path id="text" d="M19 19H5v-6h14v6z"/> <path id="float" d="M13 5v6h6V5h-6zm1 1h4v4h-4V6z"/> </g> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/play-ltr-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/play-ltr-invert.svg index 2ced125f98..1a0340ca8b 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/play-ltr-invert.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/play-ltr-invert.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #fff }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff"> <path d="M12 5c-4.4 0-8 3.6-8 8s3.6 8 8 8 8-3.6 8-8-3.6-8-8-8zm-2 12V9l6 4-6 4z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/play-ltr-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/play-ltr-progressive.svg index 870350887b..5b62113167 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/play-ltr-progressive.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/play-ltr-progressive.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #36c }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c"> <path d="M12 5c-4.4 0-8 3.6-8 8s3.6 8 8 8 8-3.6 8-8-3.6-8-8-8zm-2 12V9l6 4-6 4z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/play-rtl-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/play-rtl-invert.svg index 4e1287f8fd..b27b913c47 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/play-rtl-invert.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/play-rtl-invert.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #fff }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff"> <path d="M12 5c4.4 0 8 3.6 8 8s-3.6 8-8 8-8-3.6-8-8 3.6-8 8-8zm2 12V9l-6 4 6 4z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/play-rtl-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/play-rtl-progressive.svg index c8529dc935..05b7749804 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/play-rtl-progressive.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/play-rtl-progressive.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #36c }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c"> <path d="M12 5c4.4 0 8 3.6 8 8s-3.6 8-8 8-8-3.6-8-8 3.6-8 8-8zm2 12V9l-6 4 6 4z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/printer-ltr-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/printer-ltr-invert.svg index cc215e729b..ae4352f247 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/printer-ltr-invert.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/printer-ltr-invert.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #fff }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff"> <path d="M18 8h-1V4H7v4H3v6c0 1.7 1.3 3 3 3h1v3h10v-3h4v-6c0-1.7-1.3-3-3-3zM8 5h8v3H8V5zm8 14H8v-6h8v6z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/printer-ltr-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/printer-ltr-progressive.svg index 0d68d7d36d..fb372de65f 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/printer-ltr-progressive.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/printer-ltr-progressive.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #36c }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c"> <path d="M18 8h-1V4H7v4H3v6c0 1.7 1.3 3 3 3h1v3h10v-3h4v-6c0-1.7-1.3-3-3-3zM8 5h8v3H8V5zm8 14H8v-6h8v6z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/printer-rtl-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/printer-rtl-invert.svg index 8b66878800..d045ff95d0 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/printer-rtl-invert.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/printer-rtl-invert.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #fff }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff"> <path d="M6 8h1V4h10v4h4v6c0 1.7-1.3 3-3 3h-1v3H7v-3H3v-6c0-1.7 1.3-3 3-3zm10-3H8v3h8V5zM8 19h8v-6H8v6z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/printer-rtl-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/printer-rtl-progressive.svg index 6f3ccbbe1b..91ccc6faf3 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/printer-rtl-progressive.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/printer-rtl-progressive.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #36c }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c"> <path d="M6 8h1V4h10v4h4v6c0 1.7-1.3 3-3 3h-1v3H7v-3H3v-6c0-1.7 1.3-3 3-3zm10-3H8v3h8V5zM8 19h8v-6H8v6z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/puzzle-ltr-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/puzzle-ltr-invert.svg index f1dba0f399..27c3ab696a 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/puzzle-ltr-invert.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/puzzle-ltr-invert.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #fff }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff"> <path d="M18 9.9c-.7 0-1.4.3-1.8.9V6h-4c.2-.4.4-.8.4-1.2 0-1.2-1-2.2-2.2-2.2-1.3-.1-2.3.9-2.3 2.2 0 .4.2.8.4 1.2H4.1v3.6l.6-.1c1.4 0 2.5 1.1 2.5 2.5s-1.1 2.5-2.5 2.5c-.2 0-.4 0-.6-.1V18H9c-.5.4-.9 1-.9 1.8 0 1.2 1 2.2 2.3 2.2 1.2 0 2.2-1 2.2-2.2 0-.7-.3-1.4-.9-1.8h4.5v-4.5c.4.5 1 .9 1.8.9 1.2 0 2.2-1 2.2-2.2 0-1.3-1-2.3-2.2-2.3z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/puzzle-ltr-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/puzzle-ltr-progressive.svg index c4af15c13e..3406199d5d 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/puzzle-ltr-progressive.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/puzzle-ltr-progressive.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #36c }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c"> <path d="M18 9.9c-.7 0-1.4.3-1.8.9V6h-4c.2-.4.4-.8.4-1.2 0-1.2-1-2.2-2.2-2.2-1.3-.1-2.3.9-2.3 2.2 0 .4.2.8.4 1.2H4.1v3.6l.6-.1c1.4 0 2.5 1.1 2.5 2.5s-1.1 2.5-2.5 2.5c-.2 0-.4 0-.6-.1V18H9c-.5.4-.9 1-.9 1.8 0 1.2 1 2.2 2.3 2.2 1.2 0 2.2-1 2.2-2.2 0-.7-.3-1.4-.9-1.8h4.5v-4.5c.4.5 1 .9 1.8.9 1.2 0 2.2-1 2.2-2.2 0-1.3-1-2.3-2.2-2.3z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/puzzle-rtl-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/puzzle-rtl-invert.svg index 7cce537404..cee2e1adf9 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/puzzle-rtl-invert.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/puzzle-rtl-invert.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #fff }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff"> <path d="M6.3 9.9c.7 0 1.4.3 1.8.9V6h4c-.2-.4-.4-.8-.4-1.2 0-1.2 1-2.2 2.2-2.2 1.3-.1 2.3.9 2.3 2.2 0 .4-.2.8-.4 1.2h4.4v3.6l-.6-.1c-1.4 0-2.5 1.1-2.5 2.5s1.1 2.5 2.5 2.5c.2 0 .4 0 .6-.1V18h-4.9c.5.4.9 1 .9 1.8 0 1.2-1 2.2-2.3 2.2-1.2 0-2.2-1-2.2-2.2 0-.7.3-1.4.9-1.8H8.1v-4.5c-.4.5-1 .9-1.8.9-1.2 0-2.2-1-2.2-2.2 0-1.3 1-2.3 2.2-2.3z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/puzzle-rtl-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/puzzle-rtl-progressive.svg index 3ea0529614..3f6a3a80ac 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/puzzle-rtl-progressive.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/puzzle-rtl-progressive.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #36c }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c"> <path d="M6.3 9.9c.7 0 1.4.3 1.8.9V6h4c-.2-.4-.4-.8-.4-1.2 0-1.2 1-2.2 2.2-2.2 1.3-.1 2.3.9 2.3 2.2 0 .4-.2.8-.4 1.2h4.4v3.6l-.6-.1c-1.4 0-2.5 1.1-2.5 2.5s1.1 2.5 2.5 2.5c.2 0 .4 0 .6-.1V18h-4.9c.5.4.9 1 .9 1.8 0 1.2-1 2.2-2.3 2.2-1.2 0-2.2-1-2.2-2.2 0-.7.3-1.4.9-1.8H8.1v-4.5c-.4.5-1 .9-1.8.9-1.2 0-2.2-1-2.2-2.2 0-1.3 1-2.3 2.2-2.3z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/quotes-ltr-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/quotes-ltr-invert.svg index ca34c66eb9..7c9feea7de 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/quotes-ltr-invert.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/quotes-ltr-invert.svg @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #fff }</style> +<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff"> <g id="quotes"> <path id="quote" d="M6.9 8.4c-.446.55-1.974 2.6-1.9 5.7V17h4.7c.9 0 1.6-.7 1.6-1.6V11H8.2s.05-.74.6-1.4c.453-.543 1-.9 1.6-1.2.2-.1.47-.212.6-.5.127-.282.2-.5.2-.9v-.6c-1 .2-1.744.197-2.6.6-.856.403-1.272.873-1.7 1.4z"/> </g> <use transform="translate(8)" id="quote2" width="24" height="24" xlink:href="#quote"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/quotes-ltr-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/quotes-ltr-progressive.svg index f795285b0e..c64995d7b7 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/quotes-ltr-progressive.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/quotes-ltr-progressive.svg @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #36c }</style> +<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c"> <g id="quotes"> <path id="quote" d="M6.9 8.4c-.446.55-1.974 2.6-1.9 5.7V17h4.7c.9 0 1.6-.7 1.6-1.6V11H8.2s.05-.74.6-1.4c.453-.543 1-.9 1.6-1.2.2-.1.47-.212.6-.5.127-.282.2-.5.2-.9v-.6c-1 .2-1.744.197-2.6.6-.856.403-1.272.873-1.7 1.4z"/> </g> <use transform="translate(8)" id="quote2" width="24" height="24" xlink:href="#quote"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/quotes-rtl-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/quotes-rtl-invert.svg index 38e0cbc4d0..baae1faff6 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/quotes-rtl-invert.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/quotes-rtl-invert.svg @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #fff }</style> +<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff"> <g id="quotes"> <path id="quote" d="M17.1 8.4c.446.55 1.9 2.6 1.9 5.7V17h-4.7c-.9 0-1.6-.7-1.6-1.6V11h3.1s-.05-.74-.6-1.4c-.453-.543-1-.9-1.6-1.2-.2-.1-.47-.212-.6-.5-.127-.282-.2-.5-.2-.9v-.6c1 .2 1.744.197 2.6.6.856.403 1.272.873 1.7 1.4z"/> </g> <use transform="translate(-8)" id="quote2" width="24" height="24" xlink:href="#quote"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/quotes-rtl-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/quotes-rtl-progressive.svg index 097b62a19d..255faad445 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/quotes-rtl-progressive.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/quotes-rtl-progressive.svg @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #36c }</style> +<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c"> <g id="quotes"> <path id="quote" d="M17.1 8.4c.446.55 1.9 2.6 1.9 5.7V17h-4.7c-.9 0-1.6-.7-1.6-1.6V11h3.1s-.05-.74-.6-1.4c-.453-.543-1-.9-1.6-1.2-.2-.1-.47-.212-.6-.5-.127-.282-.2-.5-.2-.9v-.6c1 .2 1.744.197 2.6.6.856.403 1.272.873 1.7 1.4z"/> </g> <use transform="translate(-8)" id="quote2" width="24" height="24" xlink:href="#quote"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/quotesAdd-ltr-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/quotesAdd-ltr-invert.svg index 425815b5c3..0d79616c02 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/quotesAdd-ltr-invert.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/quotesAdd-ltr-invert.svg @@ -1,8 +1,8 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #fff }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff"> <g id="quotes-add"> <path id="quote" d="M5.9 10.4c-.446.55-1.974 2.6-1.9 5.7V19h4.7c.9 0 1.593-.7 1.6-1.6V13H7.2s.05-.74.6-1.4c.453-.543 1-.9 1.6-1.2.2-.1.47-.212.6-.5.127-.282.2-.5.2-.9v-.6c-1 .2-1.744.197-2.6.6-.856.403-1.272.873-1.7 1.4z"/> <path id="quote2" d="M15 9.344c-.476.32-.78.677-1.094 1.062A8.76 8.76 0 0 0 12 16.094V19h4.688a1.6 1.6 0 0 0 1.625-1.594V13H15V9.344z"/> <path id="add" d="M18 6V2h-2v4h-4v2h4v4h2V8h4V6z"/> </g> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/quotesAdd-ltr-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/quotesAdd-ltr-progressive.svg index be029434d6..755708d81e 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/quotesAdd-ltr-progressive.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/quotesAdd-ltr-progressive.svg @@ -1,8 +1,8 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #36c }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c"> <g id="quotes-add"> <path id="quote" d="M5.9 10.4c-.446.55-1.974 2.6-1.9 5.7V19h4.7c.9 0 1.593-.7 1.6-1.6V13H7.2s.05-.74.6-1.4c.453-.543 1-.9 1.6-1.2.2-.1.47-.212.6-.5.127-.282.2-.5.2-.9v-.6c-1 .2-1.744.197-2.6.6-.856.403-1.272.873-1.7 1.4z"/> <path id="quote2" d="M15 9.344c-.476.32-.78.677-1.094 1.062A8.76 8.76 0 0 0 12 16.094V19h4.688a1.6 1.6 0 0 0 1.625-1.594V13H15V9.344z"/> <path id="add" d="M18 6V2h-2v4h-4v2h4v4h2V8h4V6z"/> </g> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/quotesAdd-rtl-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/quotesAdd-rtl-invert.svg index c7aea7ac08..2a839f01c0 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/quotesAdd-rtl-invert.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/quotesAdd-rtl-invert.svg @@ -1,8 +1,8 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #fff }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff"> <g id="quotes-add"> <path id="quote" d="M18.097 10.4c.446.55 1.974 2.6 1.9 5.7V19h-4.7c-.9 0-1.593-.7-1.6-1.6V13h3.1s-.05-.74-.6-1.4c-.453-.543-1-.9-1.6-1.2-.2-.1-.47-.212-.6-.5-.127-.282-.2-.5-.2-.9v-.6c1 .2 1.744.197 2.6.6.856.403 1.272.873 1.7 1.4z"/> <path id="quote2" d="M8.997 9.344c.476.32.782.677 1.094 1.062A8.758 8.758 0 0 1 12 16.094V19H7.31c-.9 0-1.618-.694-1.625-1.594V13h3.312V9.344z"/> <path id="add" d="M5.997 6V2h2v4h4v2h-4v4h-2V8h-4V6z"/> </g> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/quotesAdd-rtl-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/quotesAdd-rtl-progressive.svg index 2758fa61cc..a5c10b4fff 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/quotesAdd-rtl-progressive.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/quotesAdd-rtl-progressive.svg @@ -1,8 +1,8 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #36c }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c"> <g id="quotes-add"> <path id="quote" d="M18.097 10.4c.446.55 1.974 2.6 1.9 5.7V19h-4.7c-.9 0-1.593-.7-1.6-1.6V13h3.1s-.05-.74-.6-1.4c-.453-.543-1-.9-1.6-1.2-.2-.1-.47-.212-.6-.5-.127-.282-.2-.5-.2-.9v-.6c1 .2 1.744.197 2.6.6.856.403 1.272.873 1.7 1.4z"/> <path id="quote2" d="M8.997 9.344c.476.32.782.677 1.094 1.062A8.758 8.758 0 0 1 12 16.094V19H7.31c-.9 0-1.618-.694-1.625-1.594V13h3.312V9.344z"/> <path id="add" d="M5.997 6V2h2v4h4v2h-4v4h-2V8h-4V6z"/> </g> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/regular-expression-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/regular-expression-invert.svg index 76ead20323..0cb419e948 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/regular-expression-invert.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/regular-expression-invert.svg @@ -1,9 +1,9 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #fff }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff"> <g id="regular-expression"> <path id="left-bracket" d="M3 12.045c0-.99.15-1.915.45-2.777A6.886 6.886 0 0 1 4.764 7H6.23a7.923 7.923 0 0 0-1.25 2.374 8.563 8.563 0 0 0 .007 5.314c.29.85.7 1.622 1.23 2.312h-1.45a6.53 6.53 0 0 1-1.314-2.223 8.126 8.126 0 0 1-.45-2.732"/> <path id="dot" d="M10 16a1 1 0 1 1-2 0 1 1 0 0 1 2 0z"/> <path id="star" d="M14.25 7.013l-.24 2.156 2.187-.61.193 1.47-1.992.14 1.307 1.74-1.33.71-.914-1.833-.8 1.822-1.38-.698 1.296-1.74-1.98-.152.23-1.464 2.14.61-.24-2.158h1.534"/> <path id="right-bracket" d="M21 12.045c0 .982-.152 1.896-.457 2.744A6.51 6.51 0 0 1 19.236 17h-1.453a8.017 8.017 0 0 0 1.225-2.31c.29-.855.434-1.74.434-2.66 0-.91-.14-1.797-.422-2.66a7.913 7.913 0 0 0-1.248-2.374h1.465a6.764 6.764 0 0 1 1.313 2.28c.3.86.45 1.782.45 2.764"/> </g> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/regular-expression-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/regular-expression-progressive.svg index 82598da0c1..5e2894b32d 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/regular-expression-progressive.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/regular-expression-progressive.svg @@ -1,9 +1,9 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #36c }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c"> <g id="regular-expression"> <path id="left-bracket" d="M3 12.045c0-.99.15-1.915.45-2.777A6.886 6.886 0 0 1 4.764 7H6.23a7.923 7.923 0 0 0-1.25 2.374 8.563 8.563 0 0 0 .007 5.314c.29.85.7 1.622 1.23 2.312h-1.45a6.53 6.53 0 0 1-1.314-2.223 8.126 8.126 0 0 1-.45-2.732"/> <path id="dot" d="M10 16a1 1 0 1 1-2 0 1 1 0 0 1 2 0z"/> <path id="star" d="M14.25 7.013l-.24 2.156 2.187-.61.193 1.47-1.992.14 1.307 1.74-1.33.71-.914-1.833-.8 1.822-1.38-.698 1.296-1.74-1.98-.152.23-1.464 2.14.61-.24-2.158h1.534"/> <path id="right-bracket" d="M21 12.045c0 .982-.152 1.896-.457 2.744A6.51 6.51 0 0 1 19.236 17h-1.453a8.017 8.017 0 0 0 1.225-2.31c.29-.855.434-1.74.434-2.66 0-.91-.14-1.797-.422-2.66a7.913 7.913 0 0 0-1.248-2.374h1.465a6.764 6.764 0 0 1 1.313 2.28c.3.86.45 1.782.45 2.764"/> </g> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/ribbonPrize-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/ribbonPrize-invert.svg index 64430f9e44..640d263a05 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/ribbonPrize-invert.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/ribbonPrize-invert.svg @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #fff }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff"> <circle cx="11.5" cy="8.5" r="2.5"/> <path d="M16.3 8.7L17 8l-.8-.8.4-.8-1.1-.5.1-.9-1.2-.2-.1-.9-1.2.2-.4-.8-1.1.5L11 3l-.8.8-.9-.4-.5 1.1-.9-.2-.2 1.2-.9.2.2 1.2-.9.4.5 1.1L6 9l.8.8-.4.8 1.1.5-.1.9 1.2.2.1.9 1.2-.2.4.8 1.1-.5.6.8.8-.8.8.4.5-1.1.9.1.2-1.2.9-.1-.2-1.2.8-.4-.4-1zM11.5 12C9.6 12 8 10.4 8 8.5S9.6 5 11.5 5 15 6.6 15 8.5 13.4 12 11.5 12zm.5 3l-.7-.7-1.1.6-.4-.7-.8.3V23l2.5-3 2.5 3v-8.5l-1-.5z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/ribbonPrize-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/ribbonPrize-progressive.svg index cf0888d1bb..c0aa2877e9 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/ribbonPrize-progressive.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/ribbonPrize-progressive.svg @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #36c }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c"> <circle cx="11.5" cy="8.5" r="2.5"/> <path d="M16.3 8.7L17 8l-.8-.8.4-.8-1.1-.5.1-.9-1.2-.2-.1-.9-1.2.2-.4-.8-1.1.5L11 3l-.8.8-.9-.4-.5 1.1-.9-.2-.2 1.2-.9.2.2 1.2-.9.4.5 1.1L6 9l.8.8-.4.8 1.1.5-.1.9 1.2.2.1.9 1.2-.2.4.8 1.1-.5.6.8.8-.8.8.4.5-1.1.9.1.2-1.2.9-.1-.2-1.2.8-.4-.4-1zM11.5 12C9.6 12 8 10.4 8 8.5S9.6 5 11.5 5 15 6.6 15 8.5 13.4 12 11.5 12zm.5 3l-.7-.7-1.1.6-.4-.7-.8.3V23l2.5-3 2.5 3v-8.5l-1-.5z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/search-ltr-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/search-ltr-invert.svg index 5b608cf0c9..3c02eb47f6 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/search-ltr-invert.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/search-ltr-invert.svg @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #fff }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff"> <g id="search"> <path id="magnifying-glass" d="M10.5 4a6.5 6.5 0 1 0 2.844 12.344L16 19c1.4 1.4 2.5 1.5 4 0l-4.438-4.438A6.426 6.426 0 0 0 17 10.5 6.5 6.5 0 0 0 10.5 4zm0 2a4.5 4.5 0 1 1 0 9 4.5 4.5 0 0 1 0-9z"/> </g> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/search-ltr-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/search-ltr-progressive.svg index cb640330d5..efc8223a31 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/search-ltr-progressive.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/search-ltr-progressive.svg @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #36c }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c"> <g id="search"> <path id="magnifying-glass" d="M10.5 4a6.5 6.5 0 1 0 2.844 12.344L16 19c1.4 1.4 2.5 1.5 4 0l-4.438-4.438A6.426 6.426 0 0 0 17 10.5 6.5 6.5 0 0 0 10.5 4zm0 2a4.5 4.5 0 1 1 0 9 4.5 4.5 0 0 1 0-9z"/> </g> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/search-rtl-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/search-rtl-invert.svg index 9969490e2b..8df7b168c7 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/search-rtl-invert.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/search-rtl-invert.svg @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #fff }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff"> <g id="search"> <path id="magnifying-glass" d="M13.5 4a6.5 6.5 0 1 1-2.844 12.344L8 19c-1.4 1.4-2.5 1.5-4 0l4.438-4.438A6.426 6.426 0 0 1 7 10.5 6.5 6.5 0 0 1 13.5 4zm0 2a4.5 4.5 0 1 0 0 9 4.5 4.5 0 0 0 0-9z"/> </g> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/search-rtl-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/search-rtl-progressive.svg index d95aa425b6..07f23a8ca0 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/search-rtl-progressive.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/search-rtl-progressive.svg @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #36c }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c"> <g id="search"> <path id="magnifying-glass" d="M13.5 4a6.5 6.5 0 1 1-2.844 12.344L8 19c-1.4 1.4-2.5 1.5-4 0l4.438-4.438A6.426 6.426 0 0 1 7 10.5 6.5 6.5 0 0 1 13.5 4zm0 2a4.5 4.5 0 1 0 0 9 4.5 4.5 0 0 0 0-9z"/> </g> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/secure-link-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/secure-link-invert.svg index 3fbdebde8b..1b24dbb095 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/secure-link-invert.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/secure-link-invert.svg @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 12 12"><style>* { fill: #fff }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 12 12"><g fill="#fff"> <g id="secure"> <path id="lock" d="M8 5h.02v-.997c0-.057.003-1.41-.833-2.255-.434-.438-.998-.66-1.68-.66s-1.244.222-1.677.66c-.837.846-.833 2.198-.832 2.25V5H3a1 1 0 0 0-1 1v3a1 1 0 0 0 1 1h5a1 1 0 0 0 1-1V6a1 1 0 0 0-1-1zM3.998 5V3.993c0-.01.005-1 .543-1.543.49-.485 1.45-.487 1.94-.002.543.546.545 1.536.545 1.55V5H3.998z"/> </g> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/secure-link-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/secure-link-progressive.svg index 3b755c100e..ee69fc4e52 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/secure-link-progressive.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/secure-link-progressive.svg @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 12 12"><style>* { fill: #36c }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 12 12"><g fill="#36c"> <g id="secure"> <path id="lock" d="M8 5h.02v-.997c0-.057.003-1.41-.833-2.255-.434-.438-.998-.66-1.68-.66s-1.244.222-1.677.66c-.837.846-.833 2.198-.832 2.25V5H3a1 1 0 0 0-1 1v3a1 1 0 0 0 1 1h5a1 1 0 0 0 1-1V6a1 1 0 0 0-1-1zM3.998 5V3.993c0-.01.005-1 .543-1.543.49-.485 1.45-.487 1.94-.002.543.546.545 1.536.545 1.55V5H3.998z"/> </g> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/settings-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/settings-invert.svg index da266da8fc..630835a2a5 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/settings-invert.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/settings-invert.svg @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #fff }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff"> <g id="settings"> <path id="gear" d="M3 4h3v2H3zm9 0h9v2h-9zM8 3h2a1 1 0 0 1 1 1v2a1 1 0 0 1-1 1H8a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1zm-5 8h9v2H3zm15 0h3v2h-3zm-4-1h2a1 1 0 0 1 1 1v2a1 1 0 0 1-1 1h-2a1 1 0 0 1-1-1v-2a1 1 0 0 1 1-1zM3 18h6v2H3zm12 0h6v2h-6zm-4-1h2a1 1 0 0 1 1 1v2a1 1 0 0 1-1 1h-2a1 1 0 0 1-1-1v-2a1 1 0 0 1 1-1z"/> </g> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/settings-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/settings-progressive.svg index 9d28697a38..a93d312589 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/settings-progressive.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/settings-progressive.svg @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #36c }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c"> <g id="settings"> <path id="gear" d="M3 4h3v2H3zm9 0h9v2h-9zM8 3h2a1 1 0 0 1 1 1v2a1 1 0 0 1-1 1H8a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1zm-5 8h9v2H3zm15 0h3v2h-3zm-4-1h2a1 1 0 0 1 1 1v2a1 1 0 0 1-1 1h-2a1 1 0 0 1-1-1v-2a1 1 0 0 1 1-1zM3 18h6v2H3zm12 0h6v2h-6zm-4-1h2a1 1 0 0 1 1 1v2a1 1 0 0 1-1 1h-2a1 1 0 0 1-1-1v-2a1 1 0 0 1 1-1z"/> </g> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/signature-ltr-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/signature-ltr-invert.svg index bde5f71f76..b783779601 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/signature-ltr-invert.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/signature-ltr-invert.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #fff }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff"> <path d="M0 20h24v1H0v-1zm6-8l-1-1-2 2-2-2-1 1 2 2-2 2 1 1 2-2 2 2 1-1-2-2zm15.6 3.7c-.9-.5-1.9-.5-2.7 0-1.5.9-3.1.4-3.1.4-.4-.2-.8-.4-1.1-.6 2.2-.6 4.4-1.8 6-3.9 1.1-1.2 2.5-3.9.4-6-.7-.7-1.6-1.1-2.7-1-1.4.1-2.8.9-3.9 2.1-.9 1.1-3.1 4.5-2.3 7.5 0 .1 0 .2.1.3-2.3.3-4.2.2-4.4.1v1.5c.7.1 2.7.2 5.1-.2.5.7 1.3 1.2 2.3 1.6.1 0 2.4.8 4.5-.6.5-.3.9-.1 1.1 0 .4.2.7.6.7 1H23c0-.8-.6-1.7-1.4-2.2zm-8-1.7c-.5-2.2 1.1-5.1 2-6.2.8-.9 1.8-1.5 2.8-1.6h.1c.6 0 1.1.2 1.5.6 1.6 1.6-.4 3.9-.5 4-1.5 2-3.7 3-5.8 3.5l-.1-.3z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/signature-ltr-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/signature-ltr-progressive.svg index d38c7ec6cf..366aafb925 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/signature-ltr-progressive.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/signature-ltr-progressive.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #36c }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c"> <path d="M0 20h24v1H0v-1zm6-8l-1-1-2 2-2-2-1 1 2 2-2 2 1 1 2-2 2 2 1-1-2-2zm15.6 3.7c-.9-.5-1.9-.5-2.7 0-1.5.9-3.1.4-3.1.4-.4-.2-.8-.4-1.1-.6 2.2-.6 4.4-1.8 6-3.9 1.1-1.2 2.5-3.9.4-6-.7-.7-1.6-1.1-2.7-1-1.4.1-2.8.9-3.9 2.1-.9 1.1-3.1 4.5-2.3 7.5 0 .1 0 .2.1.3-2.3.3-4.2.2-4.4.1v1.5c.7.1 2.7.2 5.1-.2.5.7 1.3 1.2 2.3 1.6.1 0 2.4.8 4.5-.6.5-.3.9-.1 1.1 0 .4.2.7.6.7 1H23c0-.8-.6-1.7-1.4-2.2zm-8-1.7c-.5-2.2 1.1-5.1 2-6.2.8-.9 1.8-1.5 2.8-1.6h.1c.6 0 1.1.2 1.5.6 1.6 1.6-.4 3.9-.5 4-1.5 2-3.7 3-5.8 3.5l-.1-.3z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/signature-rtl-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/signature-rtl-invert.svg index de006d7b53..ffbf18943d 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/signature-rtl-invert.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/signature-rtl-invert.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #fff }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff"> <path d="M24 20H0v1h24v-1zm-6-8l1-1 2 2 2-2 1 1-2 2 2 2-1 1-2-2-2 2-1-1 2-2zM2.4 15.7c.9-.5 1.9-.5 2.7 0 1.5.9 3.1.4 3.1.4.4-.2.8-.4 1.1-.6-2.2-.6-4.4-1.8-6-3.9-1.1-1.2-2.5-3.9-.4-6 .7-.7 1.6-1.1 2.7-1 1.4.1 2.8.9 3.9 2.1.9 1.1 3.1 4.5 2.3 7.5 0 .1 0 .2-.1.3 2.3.3 4.2.2 4.4.1v1.5c-.7.1-2.7.2-5.1-.2-.5.7-1.3 1.2-2.3 1.6-.1 0-2.4.8-4.5-.6-.5-.3-.9-.1-1.1 0-.4.2-.7.6-.7 1H1c0-.8.6-1.7 1.4-2.2zm8-1.7c.5-2.2-1.1-5.1-2-6.2-.8-.9-1.8-1.5-2.8-1.6h-.1c-.6 0-1.1.2-1.5.6-1.6 1.6.4 3.9.5 4 1.5 2 3.7 3 5.8 3.5l.1-.3z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/signature-rtl-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/signature-rtl-progressive.svg index caa28391b0..3131849bfb 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/signature-rtl-progressive.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/signature-rtl-progressive.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #36c }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c"> <path d="M24 20H0v1h24v-1zm-6-8l1-1 2 2 2-2 1 1-2 2 2 2-1 1-2-2-2 2-1-1 2-2zM2.4 15.7c.9-.5 1.9-.5 2.7 0 1.5.9 3.1.4 3.1.4.4-.2.8-.4 1.1-.6-2.2-.6-4.4-1.8-6-3.9-1.1-1.2-2.5-3.9-.4-6 .7-.7 1.6-1.1 2.7-1 1.4.1 2.8.9 3.9 2.1.9 1.1 3.1 4.5 2.3 7.5 0 .1 0 .2-.1.3 2.3.3 4.2.2 4.4.1v1.5c-.7.1-2.7.2-5.1-.2-.5.7-1.3 1.2-2.3 1.6-.1 0-2.4.8-4.5-.6-.5-.3-.9-.1-1.1 0-.4.2-.7.6-.7 1H1c0-.8.6-1.7 1.4-2.2zm8-1.7c.5-2.2-1.1-5.1-2-6.2-.8-.9-1.8-1.5-2.8-1.6h-.1c-.6 0-1.1.2-1.5.6-1.6 1.6.4 3.9.5 4 1.5 2 3.7 3 5.8 3.5l.1-.3z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/smaller-ltr-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/smaller-ltr-invert.svg index b29f71839c..3f82d69e58 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/smaller-ltr-invert.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/smaller-ltr-invert.svg @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #fff }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff"> <path id="big-a" d="M9.666 6H8.294l-4.48 12H5.52l1.493-4h4l1.507 4h1.666zm-2.28 7l1.617-4.333L10.637 13h-3.25z"/> <path id="small-a" d="M17.828 12h-.686l-2.24 6h.853l.747-2h2l.753 2h.833zm-1.14 3.5l.81-2.167.816 2.167H16.69z"/> <path id="arrow" d="M15 6h5l-2.5 3z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/smaller-ltr-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/smaller-ltr-progressive.svg index 9b7962ef1c..67bf3a969e 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/smaller-ltr-progressive.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/smaller-ltr-progressive.svg @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #36c }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c"> <path id="big-a" d="M9.666 6H8.294l-4.48 12H5.52l1.493-4h4l1.507 4h1.666zm-2.28 7l1.617-4.333L10.637 13h-3.25z"/> <path id="small-a" d="M17.828 12h-.686l-2.24 6h.853l.747-2h2l.753 2h.833zm-1.14 3.5l.81-2.167.816 2.167H16.69z"/> <path id="arrow" d="M15 6h5l-2.5 3z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/smaller-rtl-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/smaller-rtl-invert.svg index 171b31dac3..3d99520c31 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/smaller-rtl-invert.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/smaller-rtl-invert.svg @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #fff }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff"> <path id="big-a" d="M14.334 6h1.372l4.48 12H18.48l-1.493-4h-4l-1.507 4H9.814zm2.28 7l-1.617-4.333L13.363 13h3.25z"/> <path id="small-a" d="M6.172 12h.686l2.24 6h-.853L7.5 16H5.497l-.753 2h-.833zm1.14 3.5l-.81-2.166-.816 2.166h1.625z"/> <path id="arrow" d="M9 6H4l2.5 3z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/smaller-rtl-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/smaller-rtl-progressive.svg index 23c0b09a98..2ca52006b3 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/smaller-rtl-progressive.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/smaller-rtl-progressive.svg @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #36c }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c"> <path id="big-a" d="M14.334 6h1.372l4.48 12H18.48l-1.493-4h-4l-1.507 4H9.814zm2.28 7l-1.617-4.333L13.363 13h3.25z"/> <path id="small-a" d="M6.172 12h.686l2.24 6h-.853L7.5 16H5.497l-.753 2h-.833zm1.14 3.5l-.81-2.166-.816 2.166h1.625z"/> <path id="arrow" d="M9 6H4l2.5 3z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/smallerText-ltr-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/smallerText-ltr-invert.svg index 107f5f6356..146a21261a 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/smallerText-ltr-invert.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/smallerText-ltr-invert.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #ffffff }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#ffffff"> <path d="M17.6 20h-5.4v-.5c.2 0 .5-.1.9-.1.3-.1.5-.2.5-.3V19s0-.1-.1-.2l-.8-2H9.3c-.1.2-.2.4-.3.7-.1.3-.2.5-.2.7-.1.3-.1.4-.2.6v.2c0 .1.1.3.3.4.2.1.6.2 1.1.2v.4H6v-.5c.2 0 .3 0 .5-.1.2 0 .3-.1.5-.2s.4-.2.5-.4l.3-.6c.5-1.3 1.1-2.6 1.6-3.9.5-1.3 1.1-2.7 1.8-4.3h1.4c.9 2.2 1.6 4 2.1 5.3.5 1.3 1 2.4 1.3 3.2.1.1.1.3.2.4.1.1.2.2.4.3.1.1.3.1.5.2s.3.1.5.1v.5zm-5.2-4L11 12.4 9.6 16h2.8z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/smallerText-rtl-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/smallerText-rtl-invert.svg index a290c92b8c..960793c535 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/smallerText-rtl-invert.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/smallerText-rtl-invert.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #ffffff }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#ffffff"> <path d="M6 19.5c.1 0 .3 0 .5-.1s.3-.1.5-.2.3-.2.4-.3c.1-.1.2-.2.2-.4.4-.9.8-1.9 1.3-3.2.5-1.3 1.2-3.1 2.1-5.3h1.4c.7 1.6 1.2 3 1.8 4.3.5 1.3 1.1 2.6 1.6 3.9l.3.6c.1.2.3.3.5.4.1.1.3.1.5.2.2 0 .4.1.5.1v.5h-4v-.5c.5 0 .9-.1 1.1-.2.2-.1.3-.2.3-.4v-.2c0-.1-.1-.3-.2-.6-.1-.2-.2-.4-.2-.7-.1-.3-.2-.5-.3-.7h-3.4l-.8 2c0 .1-.1.1-.1.2v.1c0 .1.2.2.5.3.3.1.6.1.9.1v.6H6v-.5zm8-3.5l-1.4-3.6-1.4 3.6H14z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/specialCharacter-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/specialCharacter-invert.svg index 6dd9266e35..b234e63ab9 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/specialCharacter-invert.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/specialCharacter-invert.svg @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #fff }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff"> <g id="special-character"> <path id="omega" d="M12 6.708c-.794 0-1.368.103-1.894.31-.525.207-.944.496-1.255.867-.31.366-.53.808-.66 1.327a7.232 7.232 0 0 0-.19 1.7c0 .512.06 1 .18 1.46.12.46.31.87.567 1.23.63.862 1.156 1.138 2.012 1.362L11 18H6v-3h.604l.53 1.353.395.053.6.044.75.035.455.01H10l-.09-.895c-.63-.094-.812-.268-1.337-.522-.525-.26-.98-.59-1.365-.99a4.428 4.428 0 0 1-.89-1.4 4.78 4.78 0 0 1-.32-1.778c0-.82.13-1.537.394-2.15a3.97 3.97 0 0 1 1.163-1.54c.507-.407 1.133-.71 1.878-.912.745-.206 1.6-.31 2.565-.31.96 0 1.81.103 2.556.31.75.2 1.38.504 1.887.912.51.407.9.92 1.16 1.54.27.614.404 1.33.404 2.15a4.79 4.79 0 0 1-.32 1.78 4.35 4.35 0 0 1-.9 1.397c-.38.4-.83.732-1.355.99-.526.255-.708.43-1.337.523l-.092.894h.66l.448-.01.75-.034.606-.044.4-.053.534-1.354H18v3h-5l.246-3.04c1.066-.11 1.337-.698 2.002-1.365.263-.36.452-.77.568-1.23.122-.46.183-.947.183-1.46 0-.62-.07-1.186-.198-1.7a3.175 3.175 0 0 0-.66-1.326c-.31-.37-.73-.66-1.255-.867-.525-.206-1.1-.31-1.894-.31"/> </g> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/specialCharacter-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/specialCharacter-progressive.svg index 447370413d..091063f2cd 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/specialCharacter-progressive.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/specialCharacter-progressive.svg @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #36c }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c"> <g id="special-character"> <path id="omega" d="M12 6.708c-.794 0-1.368.103-1.894.31-.525.207-.944.496-1.255.867-.31.366-.53.808-.66 1.327a7.232 7.232 0 0 0-.19 1.7c0 .512.06 1 .18 1.46.12.46.31.87.567 1.23.63.862 1.156 1.138 2.012 1.362L11 18H6v-3h.604l.53 1.353.395.053.6.044.75.035.455.01H10l-.09-.895c-.63-.094-.812-.268-1.337-.522-.525-.26-.98-.59-1.365-.99a4.428 4.428 0 0 1-.89-1.4 4.78 4.78 0 0 1-.32-1.778c0-.82.13-1.537.394-2.15a3.97 3.97 0 0 1 1.163-1.54c.507-.407 1.133-.71 1.878-.912.745-.206 1.6-.31 2.565-.31.96 0 1.81.103 2.556.31.75.2 1.38.504 1.887.912.51.407.9.92 1.16 1.54.27.614.404 1.33.404 2.15a4.79 4.79 0 0 1-.32 1.78 4.35 4.35 0 0 1-.9 1.397c-.38.4-.83.732-1.355.99-.526.255-.708.43-1.337.523l-.092.894h.66l.448-.01.75-.034.606-.044.4-.053.534-1.354H18v3h-5l.246-3.04c1.066-.11 1.337-.698 2.002-1.365.263-.36.452-.77.568-1.23.122-.46.183-.947.183-1.46 0-.62-.07-1.186-.198-1.7a3.175 3.175 0 0 0-.66-1.326c-.31-.37-.73-.66-1.255-.867-.525-.206-1.1-.31-1.894-.31"/> </g> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/speechBubble-ltr-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/speechBubble-ltr-invert.svg index a5f137dae2..5fa3f49c93 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/speechBubble-ltr-invert.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/speechBubble-ltr-invert.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #fff }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff"> <path d="M19 20H2l3-3V6h17v11c0 1.7-1.3 3-3 3z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/speechBubble-ltr-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/speechBubble-ltr-progressive.svg index 3cc8dc6bb2..d196d55231 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/speechBubble-ltr-progressive.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/speechBubble-ltr-progressive.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #36c }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c"> <path d="M19 20H2l3-3V6h17v11c0 1.7-1.3 3-3 3z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/speechBubble-rtl-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/speechBubble-rtl-invert.svg index 03d53d2929..2da483c4f3 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/speechBubble-rtl-invert.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/speechBubble-rtl-invert.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #fff }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff"> <path d="M5 20h17l-3-3V6H2v11c0 1.7 1.3 3 3 3z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/speechBubble-rtl-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/speechBubble-rtl-progressive.svg index 2722814fef..43b23644cb 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/speechBubble-rtl-progressive.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/speechBubble-rtl-progressive.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #36c }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c"> <path d="M5 20h17l-3-3V6H2v11c0 1.7 1.3 3 3 3z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/speechBubbleAdd-ltr-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/speechBubbleAdd-ltr-invert.svg index e85c9a6ba5..843469e111 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/speechBubbleAdd-ltr-invert.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/speechBubbleAdd-ltr-invert.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #fff }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff"> <path d="M5 6v11l-3 3h17c1.7 0 3-1.3 3-3V6H5zm8 3h1v3h3v1h-3v3h-1v-3h-3v-1h3V9z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/speechBubbleAdd-ltr-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/speechBubbleAdd-ltr-progressive.svg index 6e28601f25..bd4128b2de 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/speechBubbleAdd-ltr-progressive.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/speechBubbleAdd-ltr-progressive.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #36c }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c"> <path d="M5 6v11l-3 3h17c1.7 0 3-1.3 3-3V6H5zm8 3h1v3h3v1h-3v3h-1v-3h-3v-1h3V9z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/speechBubbleAdd-rtl-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/speechBubbleAdd-rtl-invert.svg index 810766a346..d0e2cc4c39 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/speechBubbleAdd-rtl-invert.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/speechBubbleAdd-rtl-invert.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #fff }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff"> <path d="M2 6v11c0 1.7 1.3 3 3 3h17l-3-3V6H2zm8 3h1v3h3v1h-3v3h-1v-3H7v-1h3V9z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/speechBubbleAdd-rtl-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/speechBubbleAdd-rtl-progressive.svg index 266efc448d..a35ff20be3 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/speechBubbleAdd-rtl-progressive.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/speechBubbleAdd-rtl-progressive.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #36c }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c"> <path d="M2 6v11c0 1.7 1.3 3 3 3h17l-3-3V6H2zm8 3h1v3h3v1h-3v3h-1v-3H7v-1h3V9z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/speechBubbles-ltr-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/speechBubbles-ltr-invert.svg index 1cf7d78578..a9ea6c8207 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/speechBubbles-ltr-invert.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/speechBubbles-ltr-invert.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #fff }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff"> <path d="M20 9v9l2 2H8V9h12zM3 4h12v4H7v7H1l2-2V4z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/speechBubbles-ltr-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/speechBubbles-ltr-progressive.svg index 4a065cd957..1c79ef619d 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/speechBubbles-ltr-progressive.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/speechBubbles-ltr-progressive.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #36c }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c"> <path d="M20 9v9l2 2H8V9h12zM3 4h12v4H7v7H1l2-2V4z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/speechBubbles-rtl-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/speechBubbles-rtl-invert.svg index ed874d1d15..c8b684a627 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/speechBubbles-rtl-invert.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/speechBubbles-rtl-invert.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #fff }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff"> <path d="M3 9v9l-2 2h14V9H3zm17-5H8v4h8v7h6l-2-2V4z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/speechBubbles-rtl-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/speechBubbles-rtl-progressive.svg index eb262e7988..fe65227cca 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/speechBubbles-rtl-progressive.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/speechBubbles-rtl-progressive.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #36c }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c"> <path d="M3 9v9l-2 2h14V9H3zm17-5H8v4h8v7h6l-2-2V4z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/star-constructive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/star-constructive.svg index defc618be1..407d2dabd5 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/star-constructive.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/star-constructive.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #36c }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c"> <path d="M12 7.4l1.7 3.6 4 .5-2.7 2.8.5 3.9-3.5-1.7-3.6 1.7.6-3.9-2.8-2.8 3.9-.5L12 7.4M12 4L9.2 9.6l-6.2.9 4.5 4.4L6.4 21l5.6-3 5.5 3-1-6.2 4.5-4.4-6.3-.9L12 4z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/star-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/star-invert.svg index ba60a4b7df..0cbd1d0d75 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/star-invert.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/star-invert.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #fff }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff"> <path d="M12 7.4l1.7 3.6 4 .5-2.7 2.8.5 3.9-3.5-1.7-3.6 1.7.6-3.9-2.8-2.8 3.9-.5L12 7.4M12 4L9.2 9.6l-6.2.9 4.5 4.4L6.4 21l5.6-3 5.5 3-1-6.2 4.5-4.4-6.3-.9L12 4z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/star-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/star-progressive.svg index defc618be1..407d2dabd5 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/star-progressive.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/star-progressive.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #36c }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c"> <path d="M12 7.4l1.7 3.6 4 .5-2.7 2.8.5 3.9-3.5-1.7-3.6 1.7.6-3.9-2.8-2.8 3.9-.5L12 7.4M12 4L9.2 9.6l-6.2.9 4.5 4.4L6.4 21l5.6-3 5.5 3-1-6.2 4.5-4.4-6.3-.9L12 4z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/stop-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/stop-invert.svg index eed265058b..40f44d7f4e 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/stop-invert.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/stop-invert.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #fff }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff"> <path d="M12 5c-4.4 0-8 3.6-8 8s3.6 8 8 8 8-3.6 8-8-3.6-8-8-8zm3 11.1H9v-6h6v6z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/stop-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/stop-progressive.svg index 1e702f98fd..5b44a8dade 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/stop-progressive.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/stop-progressive.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #36c }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c"> <path d="M12 5c-4.4 0-8 3.6-8 8s3.6 8 8 8 8-3.6 8-8-3.6-8-8-8zm3 11.1H9v-6h6v6z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/strikethrough-a-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/strikethrough-a-invert.svg index 11949f82ff..e277ae3ed8 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/strikethrough-a-invert.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/strikethrough-a-invert.svg @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #fff }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff"> <g id="strikethrough-a"> <path id="strikethrough" d="M6 11h12v1H6v-1z"/> <path id="a" d="M12.666 6h-1.372l-4.48 12H8.52l1.493-4h4l1.507 4h1.666l-4.52-12zm-2.28 7l1.617-4.333L13.637 13h-3.25z"/> </g> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/strikethrough-a-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/strikethrough-a-progressive.svg index f80a2451cd..a957e8089f 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/strikethrough-a-progressive.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/strikethrough-a-progressive.svg @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #36c }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c"> <g id="strikethrough-a"> <path id="strikethrough" d="M6 11h12v1H6v-1z"/> <path id="a" d="M12.666 6h-1.372l-4.48 12H8.52l1.493-4h4l1.507 4h1.666l-4.52-12zm-2.28 7l1.617-4.333L13.637 13h-3.25z"/> </g> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/strikethrough-s-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/strikethrough-s-invert.svg index c570ba999e..a8301f2fd6 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/strikethrough-s-invert.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/strikethrough-s-invert.svg @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #fff }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff"> <g id="strikethrough-s"> <path id="strikethrough" d="M6 12h12v1H6v-1z"/> <path id="s" d="M12.094 6c-1.133 0-2.076.287-2.75.9-.67.613-1 1.49-1 2.52 0 .89.22 1.602.72 2.13.497.528 1.278.91 2.31 1.14l.813.182v-.03c.656.147 1.128.375 1.375.63.252.256.375.607.375 1.11 0 .573-.172.97-.53 1.26-.36.29-.895.45-1.626.45-.47 0-.962-.074-1.462-.24a7.288 7.288 0 0 1-1.562-.75l-.374-.238v2.158l.156.062c.58.237 1.144.417 1.69.54.548.12 1.07.18 1.56.18 1.287 0 2.298-.293 3-.9.71-.605 1.063-1.486 1.063-2.608 0-.943-.256-1.726-.78-2.312-.522-.592-1.306-1-2.345-1.23l-.812-.18c-.714-.148-1.202-.352-1.404-.54-.206-.202-.313-.484-.313-.934 0-.533.162-.9.5-1.17.342-.27.836-.42 1.53-.42.396 0 .82.052 1.25.18.434.128.91.334 1.407.6l.375.18V6.63s-1.19-.383-1.69-.48c-.5-.097-.983-.15-1.467-.15z"/> </g> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/strikethrough-s-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/strikethrough-s-progressive.svg index 6446e8efd5..f6f5331204 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/strikethrough-s-progressive.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/strikethrough-s-progressive.svg @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #36c }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c"> <g id="strikethrough-s"> <path id="strikethrough" d="M6 12h12v1H6v-1z"/> <path id="s" d="M12.094 6c-1.133 0-2.076.287-2.75.9-.67.613-1 1.49-1 2.52 0 .89.22 1.602.72 2.13.497.528 1.278.91 2.31 1.14l.813.182v-.03c.656.147 1.128.375 1.375.63.252.256.375.607.375 1.11 0 .573-.172.97-.53 1.26-.36.29-.895.45-1.626.45-.47 0-.962-.074-1.462-.24a7.288 7.288 0 0 1-1.562-.75l-.374-.238v2.158l.156.062c.58.237 1.144.417 1.69.54.548.12 1.07.18 1.56.18 1.287 0 2.298-.293 3-.9.71-.605 1.063-1.486 1.063-2.608 0-.943-.256-1.726-.78-2.312-.522-.592-1.306-1-2.345-1.23l-.812-.18c-.714-.148-1.202-.352-1.404-.54-.206-.202-.313-.484-.313-.934 0-.533.162-.9.5-1.17.342-.27.836-.42 1.53-.42.396 0 .82.052 1.25.18.434.128.91.334 1.407.6l.375.18V6.63s-1.19-.383-1.69-.48c-.5-.097-.983-.15-1.467-.15z"/> </g> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/strikethrough-y-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/strikethrough-y-invert.svg index bd8084607d..f34be15c2f 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/strikethrough-y-invert.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/strikethrough-y-invert.svg @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #fff }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff"> <g id="strikethrough-y"> <path id="strikethrough" d="M6 11h12v1H6v-1z"/> <path id="a" d="M7 6h1.724l3.288 4.935L15.276 6H17l-4.194 6.285V18h-1.612v-5.715L7 6"/> </g> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/strikethrough-y-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/strikethrough-y-progressive.svg index 95d7218824..778a941ef6 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/strikethrough-y-progressive.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/strikethrough-y-progressive.svg @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #36c }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c"> <g id="strikethrough-y"> <path id="strikethrough" d="M6 11h12v1H6v-1z"/> <path id="a" d="M7 6h1.724l3.288 4.935L15.276 6H17l-4.194 6.285V18h-1.612v-5.715L7 6"/> </g> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/stripeFlow-ltr-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/stripeFlow-ltr-invert.svg index b774dcef52..4b2040c743 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/stripeFlow-ltr-invert.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/stripeFlow-ltr-invert.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #fff }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff"> <path d="M4 9h12v2H4V9zm0 3h8v2H4v-2zm0-7h16v3H4V5zm16 14H4v-3h16v3z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/stripeFlow-ltr-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/stripeFlow-ltr-progressive.svg index c6c541c13e..a7ddaac3a5 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/stripeFlow-ltr-progressive.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/stripeFlow-ltr-progressive.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #36c }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c"> <path d="M4 9h12v2H4V9zm0 3h8v2H4v-2zm0-7h16v3H4V5zm16 14H4v-3h16v3z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/stripeFlow-rtl-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/stripeFlow-rtl-invert.svg index eb52a4df2d..af6e715a17 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/stripeFlow-rtl-invert.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/stripeFlow-rtl-invert.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #fff }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff"> <path d="M20 9H8v2h12V9zm0 3h-8v2h8v-2zm0-7H4v3h16V5zM4 19h16v-3H4v3z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/stripeFlow-rtl-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/stripeFlow-rtl-progressive.svg index a59254c961..e835c21ecb 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/stripeFlow-rtl-progressive.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/stripeFlow-rtl-progressive.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #36c }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c"> <path d="M20 9H8v2h12V9zm0 3h-8v2h8v-2zm0-7H4v3h16V5zM4 19h16v-3H4v3z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/stripeSideMenu-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/stripeSideMenu-invert.svg index 7d8ccdca2c..68085f97e8 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/stripeSideMenu-invert.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/stripeSideMenu-invert.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #fff }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff"> <path d="M20 19H4v-2h16v2zM20 15H4v-2h16v2zM20 11H4V9h16v2z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/stripeSideMenu-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/stripeSideMenu-progressive.svg index 862a2f7a90..7bb2d16f6e 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/stripeSideMenu-progressive.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/stripeSideMenu-progressive.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #36c }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c"> <path d="M20 19H4v-2h16v2zM20 15H4v-2h16v2zM20 11H4V9h16v2z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/stripeSummary-ltr-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/stripeSummary-ltr-invert.svg index 893d5598ae..91fcd8ff6b 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/stripeSummary-ltr-invert.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/stripeSummary-ltr-invert.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #fff }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff"> <path d="M20 11H4V9h16v2zM4 12h8v2H4v-2z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/stripeSummary-ltr-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/stripeSummary-ltr-progressive.svg index 503dc27886..59342a5cfd 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/stripeSummary-ltr-progressive.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/stripeSummary-ltr-progressive.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #36c }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c"> <path d="M20 11H4V9h16v2zM4 12h8v2H4v-2z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/stripeSummary-rtl-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/stripeSummary-rtl-invert.svg index a5f141739f..dae554e71b 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/stripeSummary-rtl-invert.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/stripeSummary-rtl-invert.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #fff }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff"> <path d="M4 11h16V9H4v2zm16 1h-8v2h8v-2z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/stripeSummary-rtl-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/stripeSummary-rtl-progressive.svg index 75b3cb6446..6b94663832 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/stripeSummary-rtl-progressive.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/stripeSummary-rtl-progressive.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #36c }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c"> <path d="M4 11h16V9H4v2zm16 1h-8v2h8v-2z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/stripeToC-ltr-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/stripeToC-ltr-invert.svg index 7424959957..7b2ec1721f 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/stripeToC-ltr-invert.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/stripeToC-ltr-invert.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #fff }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff"> <path d="M17 13H4v-3h13v3zm-5 6H4v-3h8v3zM4 7V4h16v3H4z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/stripeToC-ltr-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/stripeToC-ltr-progressive.svg index 1a597152b0..d02753926d 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/stripeToC-ltr-progressive.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/stripeToC-ltr-progressive.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #36c }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c"> <path d="M17 13H4v-3h13v3zm-5 6H4v-3h8v3zM4 7V4h16v3H4z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/stripeToC-rtl-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/stripeToC-rtl-invert.svg index e1802d1e10..2e75158ba9 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/stripeToC-rtl-invert.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/stripeToC-rtl-invert.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #fff }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff"> <path d="M7 13h13v-3H7v3zm5 6h8v-3h-8v3zm8-12V4H4v3h16z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/stripeToC-rtl-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/stripeToC-rtl-progressive.svg index 15aa549df3..3c27eafa46 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/stripeToC-rtl-progressive.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/stripeToC-rtl-progressive.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #36c }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c"> <path d="M7 13h13v-3H7v3zm5 6h8v-3h-8v3zm8-12V4H4v3h16z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/subscript-ltr-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/subscript-ltr-invert.svg index d168e2ffeb..b6f5d6d76e 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/subscript-ltr-invert.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/subscript-ltr-invert.svg @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #fff }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff"> <path id="x" d="M14 9l-2.354 3.406L14 16h-1.2L11 13.25 9.2 16H8l2.403-3.662L8 9h1.188l1.857 2.494L12.797 9H14z"/> <path d="M18 13l-1 1v3l1 1h-1l-.527-.46L16 18h-1l1-1v-3l-1-1h1l.485.497L17 13z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/subscript-ltr-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/subscript-ltr-progressive.svg index da428f7c00..11dc32f7b1 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/subscript-ltr-progressive.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/subscript-ltr-progressive.svg @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #36c }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c"> <path id="x" d="M14 9l-2.354 3.406L14 16h-1.2L11 13.25 9.2 16H8l2.403-3.662L8 9h1.188l1.857 2.494L12.797 9H14z"/> <path d="M18 13l-1 1v3l1 1h-1l-.527-.46L16 18h-1l1-1v-3l-1-1h1l.485.497L17 13z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/subscript-rtl-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/subscript-rtl-invert.svg index 25fcb14912..b1608f9ba9 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/subscript-rtl-invert.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/subscript-rtl-invert.svg @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #fff }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff"> <path id="x" d="M12 9l2.354 3.406L12 16h1.2l1.8-2.75L16.8 16H18l-2.403-3.662L18 9h-1.188l-1.857 2.494L13.203 9H12z"/> <path d="M8 13l1 1v3l-1 1h1l.527-.46L10 18h1l-1-1v-3l1-1h-1l-.485.497L9 13z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/subscript-rtl-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/subscript-rtl-progressive.svg index e65abbbc1f..f0c5d3139d 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/subscript-rtl-progressive.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/subscript-rtl-progressive.svg @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #36c }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c"> <path id="x" d="M12 9l2.354 3.406L12 16h1.2l1.8-2.75L16.8 16H18l-2.403-3.662L18 9h-1.188l-1.857 2.494L13.203 9H12z"/> <path d="M8 13l1 1v3l-1 1h1l.527-.46L10 18h1l-1-1v-3l1-1h-1l-.485.497L9 13z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/subtract-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/subtract-invert.png new file mode 100644 index 0000000000..4e58b70a24 Binary files /dev/null and b/resources/lib/oojs-ui/themes/mediawiki/images/icons/subtract-invert.png differ diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/subtract-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/subtract-invert.svg new file mode 100644 index 0000000000..d76eb3c768 --- /dev/null +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/subtract-invert.svg @@ -0,0 +1,4 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff"> + <path d="M18 13H6v-2h12"/> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/subtract-progressive.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/subtract-progressive.png new file mode 100644 index 0000000000..173297207c Binary files /dev/null and b/resources/lib/oojs-ui/themes/mediawiki/images/icons/subtract-progressive.png differ diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/subtract-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/subtract-progressive.svg new file mode 100644 index 0000000000..24795ac20d --- /dev/null +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/subtract-progressive.svg @@ -0,0 +1,4 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c"> + <path d="M18 13H6v-2h12"/> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/subtract.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/subtract.png new file mode 100644 index 0000000000..bd719cb675 Binary files /dev/null and b/resources/lib/oojs-ui/themes/mediawiki/images/icons/subtract.png differ diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/subtract.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/subtract.svg new file mode 100644 index 0000000000..a79f0b508e --- /dev/null +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/subtract.svg @@ -0,0 +1,4 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"> + <path d="M18 13H6v-2h12"/> +</svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/sun-ltr-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/sun-ltr-invert.svg index 6abcb57d63..498df822f3 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/sun-ltr-invert.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/sun-ltr-invert.svg @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #fff }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff"> <path d="M18.1 5.1c0 .3-.1.6-.3.9l-1.4 1.4-.9-.8 2.2-2.2c.3.1.4.4.4.7zm-.5 5.3h3.2c0 .3-.1.6-.4.9s-.5.4-.8.4h-2v-1.3zm-6.2-5V2.2c.3 0 .6.1.9.4s.4.5.4.8v2h-1.3zm6.4 11.7c-.3 0-.6-.1-.8-.3l-1.4-1.4.8-.8 2.2 2.2c-.2.2-.5.3-.8.3zM6.2 4.9c.3 0 .6.1.8.3l1.4 1.4-.8.9-2.2-2.3c.2-.2.5-.3.8-.3zm5.2 11.7h1.2v3.2c-.3 0-.6-.1-.9-.4s-.4-.5-.4-.8l.1-2zm-7-6.2h2v1.2H3.2c0-.3.1-.6.4-.9s.5-.3.8-.3zM6.2 16l1.4-1.4.8.8-2.2 2.2c-.2-.2-.3-.5-.3-.8s.1-.6.3-.8z"/> <circle cx="12" cy="11" r="4"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/sun-ltr-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/sun-ltr-progressive.svg index 29f965bfb5..afd390c185 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/sun-ltr-progressive.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/sun-ltr-progressive.svg @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #36c }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c"> <path d="M18.1 5.1c0 .3-.1.6-.3.9l-1.4 1.4-.9-.8 2.2-2.2c.3.1.4.4.4.7zm-.5 5.3h3.2c0 .3-.1.6-.4.9s-.5.4-.8.4h-2v-1.3zm-6.2-5V2.2c.3 0 .6.1.9.4s.4.5.4.8v2h-1.3zm6.4 11.7c-.3 0-.6-.1-.8-.3l-1.4-1.4.8-.8 2.2 2.2c-.2.2-.5.3-.8.3zM6.2 4.9c.3 0 .6.1.8.3l1.4 1.4-.8.9-2.2-2.3c.2-.2.5-.3.8-.3zm5.2 11.7h1.2v3.2c-.3 0-.6-.1-.9-.4s-.4-.5-.4-.8l.1-2zm-7-6.2h2v1.2H3.2c0-.3.1-.6.4-.9s.5-.3.8-.3zM6.2 16l1.4-1.4.8.8-2.2 2.2c-.2-.2-.3-.5-.3-.8s.1-.6.3-.8z"/> <circle cx="12" cy="11" r="4"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/sun-rtl-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/sun-rtl-invert.svg index 92a045d31e..f932701fc4 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/sun-rtl-invert.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/sun-rtl-invert.svg @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #fff }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff"> <path d="M5.9 5.1c0 .3.1.6.3.9l1.4 1.4.9-.8-2.2-2.2c-.3.1-.4.4-.4.7zm.5 5.3H3.2c0 .3.1.6.4.9.3.3.5.4.8.4h2v-1.3zm6.2-5V2.2c-.3 0-.6.1-.9.4-.3.3-.4.5-.4.8v2h1.3zM6.2 17.1c.3 0 .6-.1.8-.3l1.4-1.4-.8-.8-2.2 2.2c.2.2.5.3.8.3zM17.8 4.9c-.3 0-.6.1-.8.3l-1.4 1.4.8.9 2.2-2.3c-.2-.2-.5-.3-.8-.3zm-5.2 11.7h-1.2v3.2c.3 0 .6-.1.9-.4.3-.3.4-.5.4-.8l-.1-2zm7-6.2h-2v1.2h3.2c0-.3-.1-.6-.4-.9-.3-.3-.5-.3-.8-.3zM17.8 16l-1.4-1.4-.8.8 2.2 2.2c.2-.2.3-.5.3-.8 0-.3-.1-.6-.3-.8z"/> <circle cx="12" cy="11" r="4" transform="matrix(-1 0 0 1 24 0)"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/sun-rtl-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/sun-rtl-progressive.svg index 1f784721d0..72754d48c3 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/sun-rtl-progressive.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/sun-rtl-progressive.svg @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #36c }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c"> <path d="M5.9 5.1c0 .3.1.6.3.9l1.4 1.4.9-.8-2.2-2.2c-.3.1-.4.4-.4.7zm.5 5.3H3.2c0 .3.1.6.4.9.3.3.5.4.8.4h2v-1.3zm6.2-5V2.2c-.3 0-.6.1-.9.4-.3.3-.4.5-.4.8v2h1.3zM6.2 17.1c.3 0 .6-.1.8-.3l1.4-1.4-.8-.8-2.2 2.2c.2.2.5.3.8.3zM17.8 4.9c-.3 0-.6.1-.8.3l-1.4 1.4.8.9 2.2-2.3c-.2-.2-.5-.3-.8-.3zm-5.2 11.7h-1.2v3.2c.3 0 .6-.1.9-.4.3-.3.4-.5.4-.8l-.1-2zm7-6.2h-2v1.2h3.2c0-.3-.1-.6-.4-.9-.3-.3-.5-.3-.8-.3zM17.8 16l-1.4-1.4-.8.8 2.2 2.2c.2-.2.3-.5.3-.8 0-.3-.1-.6-.3-.8z"/> <circle cx="12" cy="11" r="4" transform="matrix(-1 0 0 1 24 0)"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/superscript-ltr-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/superscript-ltr-invert.svg index 03636db3b6..430abf0c3f 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/superscript-ltr-invert.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/superscript-ltr-invert.svg @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #fff }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff"> <path id="x" d="M14 9l-2.354 3.406L14 16h-1.2L11 13.25 9.2 16H8l2.403-3.662L8 9h1.188l1.857 2.494L12.797 9H14z"/> <path d="M18 7l-1 1v3l1 1h-1l-.527-.46L16 12h-1l1-1V8l-1-1h1l.485.497L17 7z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/superscript-ltr-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/superscript-ltr-progressive.svg index d926f444da..80495b8cab 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/superscript-ltr-progressive.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/superscript-ltr-progressive.svg @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #36c }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c"> <path id="x" d="M14 9l-2.354 3.406L14 16h-1.2L11 13.25 9.2 16H8l2.403-3.662L8 9h1.188l1.857 2.494L12.797 9H14z"/> <path d="M18 7l-1 1v3l1 1h-1l-.527-.46L16 12h-1l1-1V8l-1-1h1l.485.497L17 7z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/superscript-rtl-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/superscript-rtl-invert.svg index 59418fed37..ea8ea9cfc8 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/superscript-rtl-invert.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/superscript-rtl-invert.svg @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #fff }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff"> <path id="x" d="M12 9l2.354 3.406L12 16h1.2l1.8-2.75L16.8 16H18l-2.403-3.662L18 9h-1.188l-1.857 2.494L13.203 9H12z"/> <path d="M8 7l1 1v3l-1 1h1l.527-.46L10 12h1l-1-1V8l1-1h-1l-.485.497L9 7z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/superscript-rtl-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/superscript-rtl-progressive.svg index 20db11c232..e7429902d3 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/superscript-rtl-progressive.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/superscript-rtl-progressive.svg @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #36c }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c"> <path id="x" d="M12 9l2.354 3.406L12 16h1.2l1.8-2.75L16.8 16H18l-2.403-3.662L18 9h-1.188l-1.857 2.494L13.203 9H12z"/> <path d="M8 7l1 1v3l-1 1h1l.527-.46L10 12h1l-1-1V8l1-1h-1l-.485.497L9 7z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/table-caption-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/table-caption-invert.svg index f62c61cec8..360fbe1ca4 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/table-caption-invert.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/table-caption-invert.svg @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #fff }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff"> <g id="table-caption"> <path id="caption" d="M6 6h12v3H6z"/> <path id="table" d="M4 10v7h16v-7H4zm1 1h4v2H5v-2zm5 0h4v2h-4v-2zm5 0h4v2h-4v-2zM5 14h4v2H5v-2zm5 0h4v2h-4v-2zm5 0h4v2h-4v-2z"/> </g> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/table-caption-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/table-caption-progressive.svg index 9270ddf93b..02faf8578a 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/table-caption-progressive.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/table-caption-progressive.svg @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #36c }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c"> <g id="table-caption"> <path id="caption" d="M6 6h12v3H6z"/> <path id="table" d="M4 10v7h16v-7H4zm1 1h4v2H5v-2zm5 0h4v2h-4v-2zm5 0h4v2h-4v-2zM5 14h4v2H5v-2zm5 0h4v2h-4v-2zm5 0h4v2h-4v-2z"/> </g> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/table-insert-column-ltr-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/table-insert-column-ltr-invert.svg index 2944ec1da6..9a93e24651 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/table-insert-column-ltr-invert.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/table-insert-column-ltr-invert.svg @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #fff }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff"> <g id="table-insert-column-ltr"> <path d="M13 9h-2v2H9v2h2v2h2v-2h2v-2h-2z" id="plus"/> <path d="M5 5h2v14H5z" id="column"/> </g> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/table-insert-column-ltr-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/table-insert-column-ltr-progressive.svg index 9c5550b7ed..1f560bb6cd 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/table-insert-column-ltr-progressive.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/table-insert-column-ltr-progressive.svg @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #36c }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c"> <g id="table-insert-column-ltr"> <path d="M13 9h-2v2H9v2h2v2h2v-2h2v-2h-2z" id="plus"/> <path d="M5 5h2v14H5z" id="column"/> </g> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/table-insert-column-rtl-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/table-insert-column-rtl-invert.svg index 2f4627b99b..7c54e2cfd5 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/table-insert-column-rtl-invert.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/table-insert-column-rtl-invert.svg @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #fff }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff"> <g id="table-insert-column-rtl"> <path d="M13 9h-2v2H9v2h2v2h2v-2h2v-2h-2z" id="plus"/> <path d="M17 5h2v14h-2z" id="column"/> </g> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/table-insert-column-rtl-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/table-insert-column-rtl-progressive.svg index 224cd80ad6..3e178eed01 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/table-insert-column-rtl-progressive.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/table-insert-column-rtl-progressive.svg @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #36c }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c"> <g id="table-insert-column-rtl"> <path d="M13 9h-2v2H9v2h2v2h2v-2h2v-2h-2z" id="plus"/> <path d="M17 5h2v14h-2z" id="column"/> </g> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/table-insert-row-after-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/table-insert-row-after-invert.svg index 8ce9614230..2df3cfc8a4 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/table-insert-row-after-invert.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/table-insert-row-after-invert.svg @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #fff }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff"> <g id="table-insert-row-after"> <path d="M13 9h-2v2H9v2h2v2h2v-2h2v-2h-2z" id="plus"/> <path d="M5 17h14v2H5z" id="row"/> </g> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/table-insert-row-after-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/table-insert-row-after-progressive.svg index 608552510e..f85c5a3716 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/table-insert-row-after-progressive.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/table-insert-row-after-progressive.svg @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #36c }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c"> <g id="table-insert-row-after"> <path d="M13 9h-2v2H9v2h2v2h2v-2h2v-2h-2z" id="plus"/> <path d="M5 17h14v2H5z" id="row"/> </g> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/table-insert-row-before-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/table-insert-row-before-invert.svg index 98a8732b01..5d529f1acc 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/table-insert-row-before-invert.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/table-insert-row-before-invert.svg @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #fff }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff"> <g id="table-insert-row-before"> <path d="M13 9h-2v2H9v2h2v2h2v-2h2v-2h-2z" id="plus"/> <path d="M5 5h14v2H5z" id="row"/> </g> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/table-insert-row-before-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/table-insert-row-before-progressive.svg index b23e4a0aea..f26feefd7b 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/table-insert-row-before-progressive.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/table-insert-row-before-progressive.svg @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #36c }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c"> <g id="table-insert-row-before"> <path d="M13 9h-2v2H9v2h2v2h2v-2h2v-2h-2z" id="plus"/> <path d="M5 5h14v2H5z" id="row"/> </g> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/table-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/table-invert.svg index 171473dc4d..85a3f97352 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/table-invert.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/table-invert.svg @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #fff }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff"> <g id="table-insert"> <path id="table" d="M4 6v11h15V6zm1 3h6v3H5zm7 0h6v3h-6zm-7 4h6v3H5zm7 0h6v3h-6z"/> </g> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/table-merge-cells-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/table-merge-cells-invert.svg index bc8f53762e..102a68695e 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/table-merge-cells-invert.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/table-merge-cells-invert.svg @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #fff }</style> +<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff"> <g id="table-merge-cells"> <g id="merge-cell-left"> <path id="cell-border" d="M4 7v9h7v-3l-1 .834V15H5V8h5v1.167L11 10V7z"/> @@ -7,4 +7,4 @@ </g> <use id="merge-cell-right" xlink:href="#merge-cell-left" transform="matrix(-1 0 0 1 24 0)"/> </g> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/table-merge-cells-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/table-merge-cells-progressive.svg index cb90635dde..c2c5a7e23b 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/table-merge-cells-progressive.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/table-merge-cells-progressive.svg @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #36c }</style> +<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c"> <g id="table-merge-cells"> <g id="merge-cell-left"> <path id="cell-border" d="M4 7v9h7v-3l-1 .834V15H5V8h5v1.167L11 10V7z"/> @@ -7,4 +7,4 @@ </g> <use id="merge-cell-right" xlink:href="#merge-cell-left" transform="matrix(-1 0 0 1 24 0)"/> </g> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/table-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/table-progressive.svg index 5aa79ee341..3441e651a2 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/table-progressive.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/table-progressive.svg @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #36c }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c"> <g id="table-insert"> <path id="table" d="M4 6v11h15V6zm1 3h6v3H5zm7 0h6v3h-6zm-7 4h6v3H5zm7 0h6v3h-6z"/> </g> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/tag-constructive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/tag-constructive.svg index e55880e2bf..ce0468774a 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/tag-constructive.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/tag-constructive.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #36c }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c"> <path d="M18.748 11.717a1 1 0 0 1 0 1.414l-4.95 4.95a1 1 0 0 1-1.413 0l-6.01-6.01c-.39-.382-.707-1.15-.707-1.7V6c0-.55.45-1 1-1h4.363c.55 0 1.32.318 1.71.707l6.01 6.01zM8.104 7.457a1.477 1.477 0 0 0 0 2.092 1.49 1.49 0 0 0 2.094 0 1.49 1.49 0 0 0 0-2.1 1.484 1.484 0 0 0-2.094 0z" id="tag"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/tag-destructive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/tag-destructive.svg index 0732f2ebe6..cb00c1c99a 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/tag-destructive.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/tag-destructive.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #d33 }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#d33"> <path d="M18.748 11.717a1 1 0 0 1 0 1.414l-4.95 4.95a1 1 0 0 1-1.413 0l-6.01-6.01c-.39-.382-.707-1.15-.707-1.7V6c0-.55.45-1 1-1h4.363c.55 0 1.32.318 1.71.707l6.01 6.01zM8.104 7.457a1.477 1.477 0 0 0 0 2.092 1.49 1.49 0 0 0 2.094 0 1.49 1.49 0 0 0 0-2.1 1.484 1.484 0 0 0-2.094 0z" id="tag"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/tag-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/tag-invert.svg index e90541bfd2..a4f38b4584 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/tag-invert.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/tag-invert.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #fff }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff"> <path d="M18.748 11.717a1 1 0 0 1 0 1.414l-4.95 4.95a1 1 0 0 1-1.413 0l-6.01-6.01c-.39-.382-.707-1.15-.707-1.7V6c0-.55.45-1 1-1h4.363c.55 0 1.32.318 1.71.707l6.01 6.01zM8.104 7.457a1.477 1.477 0 0 0 0 2.092 1.49 1.49 0 0 0 2.094 0 1.49 1.49 0 0 0 0-2.1 1.484 1.484 0 0 0-2.094 0z" id="tag"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/tag-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/tag-progressive.svg index e55880e2bf..ce0468774a 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/tag-progressive.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/tag-progressive.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #36c }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c"> <path d="M18.748 11.717a1 1 0 0 1 0 1.414l-4.95 4.95a1 1 0 0 1-1.413 0l-6.01-6.01c-.39-.382-.707-1.15-.707-1.7V6c0-.55.45-1 1-1h4.363c.55 0 1.32.318 1.71.707l6.01 6.01zM8.104 7.457a1.477 1.477 0 0 0 0 2.092 1.49 1.49 0 0 0 2.094 0 1.49 1.49 0 0 0 0-2.1 1.484 1.484 0 0 0-2.094 0z" id="tag"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/tag-warning.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/tag-warning.svg index df57de5415..bf31a97821 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/tag-warning.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/tag-warning.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #ff5d00 }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#ff5d00"> <path d="M18.748 11.717a1 1 0 0 1 0 1.414l-4.95 4.95a1 1 0 0 1-1.413 0l-6.01-6.01c-.39-.382-.707-1.15-.707-1.7V6c0-.55.45-1 1-1h4.363c.55 0 1.32.318 1.71.707l6.01 6.01zM8.104 7.457a1.477 1.477 0 0 0 0 2.092 1.49 1.49 0 0 0 2.094 0 1.49 1.49 0 0 0 0-2.1 1.484 1.484 0 0 0-2.094 0z" id="tag"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/templateAdd-ltr-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/templateAdd-ltr-invert.svg index c427bba138..4d0e4a5b82 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/templateAdd-ltr-invert.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/templateAdd-ltr-invert.svg @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #fff }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff"> <g id="template-add"> <path id="add" d="M23 7h-4V3h-2v4h-4v2h4v4h2V9h4z"/> <path id="template" d="M18 14v4H6c-1.1 0-2-.9-2-2V8h8V7H3v9c0 1.7 1.3 3 3 3h13v-5z"/> </g> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/templateAdd-ltr-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/templateAdd-ltr-progressive.svg index 1800115de7..8b6325e327 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/templateAdd-ltr-progressive.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/templateAdd-ltr-progressive.svg @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #36c }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c"> <g id="template-add"> <path id="add" d="M23 7h-4V3h-2v4h-4v2h4v4h2V9h4z"/> <path id="template" d="M18 14v4H6c-1.1 0-2-.9-2-2V8h8V7H3v9c0 1.7 1.3 3 3 3h13v-5z"/> </g> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/templateAdd-rtl-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/templateAdd-rtl-invert.svg index 014274598f..3277986420 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/templateAdd-rtl-invert.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/templateAdd-rtl-invert.svg @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #fff }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff"> <g id="template-add"> <path id="add" d="M1 7h4V3h2v4h4v2H7v4H5V9H1z"/> <path id="template" d="M6 14v4h12c1.1 0 2-.9 2-2V8h-8V7h9v9c0 1.7-1.3 3-3 3H5v-5z"/> </g> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/templateAdd-rtl-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/templateAdd-rtl-progressive.svg index 134d3042b3..ea7a4cedef 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/templateAdd-rtl-progressive.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/templateAdd-rtl-progressive.svg @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #36c }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c"> <g id="template-add"> <path id="add" d="M1 7h4V3h2v4h4v2H7v4H5V9H1z"/> <path id="template" d="M6 14v4h12c1.1 0 2-.9 2-2V8h-8V7h9v9c0 1.7-1.3 3-3 3H5v-5z"/> </g> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/text-dir-lefttoright-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/text-dir-lefttoright-invert.svg index 00b1928f22..8824e9c1ef 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/text-dir-lefttoright-invert.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/text-dir-lefttoright-invert.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #fff }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff"> <path d="M7 7H5V6h2l.47.5L8 6h2v1H8v10h2v1H8l-.5-.53L7 18H5v-1h2zm6.976 9v-2H11v-4h2.976V8.044L20 12.022z" id="text-dir-ltr"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/text-dir-lefttoright-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/text-dir-lefttoright-progressive.svg index f67802a5a6..968e13b012 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/text-dir-lefttoright-progressive.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/text-dir-lefttoright-progressive.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #36c }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c"> <path d="M7 7H5V6h2l.47.5L8 6h2v1H8v10h2v1H8l-.5-.53L7 18H5v-1h2zm6.976 9v-2H11v-4h2.976V8.044L20 12.022z" id="text-dir-ltr"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/text-dir-righttoleft-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/text-dir-righttoleft-invert.svg index c1dc96e9a1..12544d9c33 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/text-dir-righttoleft-invert.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/text-dir-righttoleft-invert.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #fff }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff"> <path d="M17 17h2v1h-2l-.47-.5-.53.5h-2v-1h2V7h-2V6h2l.5.53L17 6h2v1h-2zm-6.976-9v2H13v4h-2.976v1.956L4 11.978z" id="text-dir-rtl"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/text-dir-righttoleft-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/text-dir-righttoleft-progressive.svg index 52fa585232..73ebe60327 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/text-dir-righttoleft-progressive.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/text-dir-righttoleft-progressive.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #36c }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c"> <path d="M17 17h2v1h-2l-.47-.5-.53.5h-2v-1h2V7h-2V6h2l.5.53L17 6h2v1h-2zm-6.976-9v2H13v4h-2.976v1.956L4 11.978z" id="text-dir-rtl"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/text-style-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/text-style-invert.svg index d26f68fb80..318c168cef 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/text-style-invert.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/text-style-invert.svg @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #fff }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff"> <g id="text-style"> <path id="a" d="M15.296 18h2.79l-1.14-12h-2.79L6 18h2.79l2.038-3h4.183l.29 3zm-3.11-5L14.5 9.6l.323 3.4H12.19z"/> <path id="underline" d="M6 19h12v1H6v-1z"/> </g> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/text-style-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/text-style-progressive.svg index fc538020b1..6f17920193 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/text-style-progressive.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/text-style-progressive.svg @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #36c }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c"> <g id="text-style"> <path id="a" d="M15.296 18h2.79l-1.14-12h-2.79L6 18h2.79l2.038-3h4.183l.29 3zm-3.11-5L14.5 9.6l.323 3.4H12.19z"/> <path id="underline" d="M6 19h12v1H6v-1z"/> </g> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/trash-destructive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/trash-destructive.svg index 59ad3f280b..eb52343c0e 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/trash-destructive.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/trash-destructive.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #d33 }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#d33"> <path d="M6 8c0-1.1.9-2 2-2h2l1-1h2l1 1h2c1.1 0 2 .9 2 2H6zm1 1h10l-1 11H8z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/trash-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/trash-invert.svg index 92c796635e..f84bfe90ba 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/trash-invert.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/trash-invert.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #fff }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff"> <path d="M6 8c0-1.1.9-2 2-2h2l1-1h2l1 1h2c1.1 0 2 .9 2 2H6zm1 1h10l-1 11H8z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/trash-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/trash-progressive.svg index 6a328db52f..1099f6aab0 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/trash-progressive.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/trash-progressive.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #36c }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c"> <path d="M6 8c0-1.1.9-2 2-2h2l1-1h2l1 1h2c1.1 0 2 .9 2 2H6zm1 1h10l-1 11H8z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/tray-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/tray-invert.svg index fe8600a84e..28442a3d96 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/tray-invert.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/tray-invert.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #fff }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff"> <path d="M3 13.35l1.8-7.2c.2-.996.81-1.8 1.8-1.8h10.8c.99 0 1.6.867 1.8 1.8l1.8 7.2v4.5c0 .99-.81 1.8-1.8 1.8H4.8c-.99 0-1.8-.81-1.8-1.8v-4.5zm6.96 1.8h4.08c-.49.557-1.212.9-2.04.9a2.68 2.68 0 0 1-2.04-.9h4.08c.414-.472.66-1.098.66-1.8h4.14l-1.44-7.2H6.6l-1.44 7.2H9.3c0 .702.246 1.328.66 1.8z" id="tray"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/tray-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/tray-progressive.svg index 5544fd3a61..7b079ea8f1 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/tray-progressive.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/tray-progressive.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #36c }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c"> <path d="M3 13.35l1.8-7.2c.2-.996.81-1.8 1.8-1.8h10.8c.99 0 1.6.867 1.8 1.8l1.8 7.2v4.5c0 .99-.81 1.8-1.8 1.8H4.8c-.99 0-1.8-.81-1.8-1.8v-4.5zm6.96 1.8h4.08c-.49.557-1.212.9-2.04.9a2.68 2.68 0 0 1-2.04-.9h4.08c.414-.472.66-1.098.66-1.8h4.14l-1.44-7.2H6.6l-1.44 7.2H9.3c0 .702.246 1.328.66 1.8z" id="tray"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/unBlock-ltr-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/unBlock-ltr-invert.svg index 36fd719996..148da47005 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/unBlock-ltr-invert.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/unBlock-ltr-invert.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #fff }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff"> <path d="M17 11v2h-2l3.6 3.6c.9-1.3 1.4-2.9 1.4-4.6 0-4.4-3.6-8-8-8-1.7 0-3.3.5-4.6 1.4L13 11h4zM4 4L3 5l2.4 2.4C4.5 8.7 4 10.3 4 12c0 4.4 3.6 8 8 8 1.7 0 3.3-.5 4.6-1.4L19 21l1-1L4 4zm3 9v-2h2l2 2H7z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/unBlock-ltr-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/unBlock-ltr-progressive.svg index bc96e99e01..e80e6ae11e 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/unBlock-ltr-progressive.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/unBlock-ltr-progressive.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #36c }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c"> <path d="M17 11v2h-2l3.6 3.6c.9-1.3 1.4-2.9 1.4-4.6 0-4.4-3.6-8-8-8-1.7 0-3.3.5-4.6 1.4L13 11h4zM4 4L3 5l2.4 2.4C4.5 8.7 4 10.3 4 12c0 4.4 3.6 8 8 8 1.7 0 3.3-.5 4.6-1.4L19 21l1-1L4 4zm3 9v-2h2l2 2H7z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/unBlock-rtl-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/unBlock-rtl-invert.svg index b6f1610b6b..8aace964a9 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/unBlock-rtl-invert.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/unBlock-rtl-invert.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #fff }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff"> <path d="M7 11v2h2l-3.6 3.6C4.5 15.3 4 13.7 4 12c0-4.4 3.6-8 8-8 1.7 0 3.3.5 4.6 1.4L11 11H7zm13-7l1 1-2.4 2.4c.9 1.3 1.4 2.9 1.4 4.6 0 4.4-3.6 8-8 8-1.7 0-3.3-.5-4.6-1.4L5 21l-1-1L20 4zm-3 9v-2h-2l-2 2h4z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/unBlock-rtl-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/unBlock-rtl-progressive.svg index dc03220551..1337e16dd7 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/unBlock-rtl-progressive.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/unBlock-rtl-progressive.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #36c }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c"> <path d="M7 11v2h2l-3.6 3.6C4.5 15.3 4 13.7 4 12c0-4.4 3.6-8 8-8 1.7 0 3.3.5 4.6 1.4L11 11H7zm13-7l1 1-2.4 2.4c.9 1.3 1.4 2.9 1.4 4.6 0 4.4-3.6 8-8 8-1.7 0-3.3-.5-4.6-1.4L5 21l-1-1L20 4zm-3 9v-2h-2l-2 2h4z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/unFlag-ltr-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/unFlag-ltr-invert.svg index c73d23fd03..dba18af462 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/unFlag-ltr-invert.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/unFlag-ltr-invert.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #fff }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff"> <path d="M19.9 19.6l-16-16-1.1 1.1L6 7.9V20h1v-7c.6-.6 2-.8 3.4-.7l8.4 8.4 1.1-1.1zM17 14V7c-.7.7-2.7.9-4 .5V6c-1.2-1.3-3.9-1.3-5.4-.5l8.9 9c.3-.2.4-.3.5-.5z"/> -</svg> \ No newline at end of file +</g></svg> \ No newline at end of file diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/unFlag-ltr-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/unFlag-ltr-progressive.svg index 16b6d3a4a7..e84befe55c 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/unFlag-ltr-progressive.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/unFlag-ltr-progressive.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #36c }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c"> <path d="M19.9 19.6l-16-16-1.1 1.1L6 7.9V20h1v-7c.6-.6 2-.8 3.4-.7l8.4 8.4 1.1-1.1zM17 14V7c-.7.7-2.7.9-4 .5V6c-1.2-1.3-3.9-1.3-5.4-.5l8.9 9c.3-.2.4-.3.5-.5z"/> -</svg> \ No newline at end of file +</g></svg> \ No newline at end of file diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/unFlag-rtl-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/unFlag-rtl-invert.svg index 440390e819..88256ec3e3 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/unFlag-rtl-invert.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/unFlag-rtl-invert.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #fff }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff"> <path d="M3.5 19.6l16-16 1.1 1.1-3.2 3.2V20h-1v-7c-.6-.6-2-.8-3.4-.7l-8.4 8.4-1.1-1.1zM6.3 14V7c.7.7 2.7.9 4 .5V6c1.2-1.3 3.9-1.3 5.4-.5l-8.9 9c-.3-.2-.4-.3-.5-.5z"/> -</svg> \ No newline at end of file +</g></svg> \ No newline at end of file diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/unFlag-rtl-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/unFlag-rtl-progressive.svg index 7f45734f60..fcb4d11c0e 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/unFlag-rtl-progressive.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/unFlag-rtl-progressive.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #36c }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c"> <path d="M3.5 19.6l16-16 1.1 1.1-3.2 3.2V20h-1v-7c-.6-.6-2-.8-3.4-.7l-8.4 8.4-1.1-1.1zM6.3 14V7c.7.7 2.7.9 4 .5V6c1.2-1.3 3.9-1.3 5.4-.5l-8.9 9c-.3-.2-.4-.3-.5-.5z"/> -</svg> \ No newline at end of file +</g></svg> \ No newline at end of file diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/unLock-ltr-destructive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/unLock-ltr-destructive.svg index d45ebac277..cf82e1fd8a 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/unLock-ltr-destructive.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/unLock-ltr-destructive.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #d33 }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#d33"> <path d="M12 9V7s0-5-4.5-5S3 7 3 7h2s0-3 2.5-3S10 7 10 7v2H7v7c0 1.7 1.3 3 3 3h10V9z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/unLock-ltr-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/unLock-ltr-invert.svg index bfc7a3f248..3c6f966a4c 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/unLock-ltr-invert.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/unLock-ltr-invert.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #fff }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff"> <path d="M12 9V7s0-5-4.5-5S3 7 3 7h2s0-3 2.5-3S10 7 10 7v2H7v7c0 1.7 1.3 3 3 3h10V9z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/unLock-ltr-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/unLock-ltr-progressive.svg index 86a7bb9ded..55b8cc3cba 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/unLock-ltr-progressive.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/unLock-ltr-progressive.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #36c }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c"> <path d="M12 9V7s0-5-4.5-5S3 7 3 7h2s0-3 2.5-3S10 7 10 7v2H7v7c0 1.7 1.3 3 3 3h10V9z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/unLock-rtl-destructive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/unLock-rtl-destructive.svg index 5e6d2055a2..d70f3a96f8 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/unLock-rtl-destructive.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/unLock-rtl-destructive.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #d33 }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#d33"> <path d="M11 9V7s0-5 4.5-5S20 7 20 7h-2s0-3-2.5-3S13 7 13 7v2h3v7c0 1.7-1.3 3-3 3H3V9z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/unLock-rtl-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/unLock-rtl-invert.svg index 78cd92ba80..bfe53ad210 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/unLock-rtl-invert.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/unLock-rtl-invert.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #fff }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff"> <path d="M11 9V7s0-5 4.5-5S20 7 20 7h-2s0-3-2.5-3S13 7 13 7v2h3v7c0 1.7-1.3 3-3 3H3V9z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/unLock-rtl-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/unLock-rtl-progressive.svg index 272c543ecb..20e4afa014 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/unLock-rtl-progressive.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/unLock-rtl-progressive.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #36c }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c"> <path d="M11 9V7s0-5 4.5-5S20 7 20 7h-2s0-3-2.5-3S13 7 13 7v2h3v7c0 1.7-1.3 3-3 3H3V9z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/unStar-constructive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/unStar-constructive.svg index f9c609a390..7265f4a3f9 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/unStar-constructive.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/unStar-constructive.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #36c }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c"> <path d="M21 11l-6-1-3-6-3 6-6 1 4 4-1 6 6-3 6 3-1-6 4-4z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/unStar-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/unStar-invert.svg index 8105090895..b34f49ba14 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/unStar-invert.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/unStar-invert.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #fff }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff"> <path d="M21 11l-6-1-3-6-3 6-6 1 4 4-1 6 6-3 6 3-1-6 4-4z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/unStar-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/unStar-progressive.svg index f9c609a390..7265f4a3f9 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/unStar-progressive.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/unStar-progressive.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #36c }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c"> <path d="M21 11l-6-1-3-6-3 6-6 1 4 4-1 6 6-3 6 3-1-6 4-4z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/unTrash-ltr-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/unTrash-ltr-invert.svg index 0763ff8bec..efa8e83503 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/unTrash-ltr-invert.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/unTrash-ltr-invert.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #fff }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff"> <path d="M20.5 20.5L5 5 4 6l3 3 1 11h8l.2-1.8 3.3 3.3zM17 9h-6l5.5 5.5zm1-1c0-1.1-.9-2-2-2h-2l-1-1h-2l-1 1H8l2 2h8z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/unTrash-ltr-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/unTrash-ltr-progressive.svg index 6d1fdd94e9..c5bf2ccda5 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/unTrash-ltr-progressive.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/unTrash-ltr-progressive.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #36c }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c"> <path d="M20.5 20.5L5 5 4 6l3 3 1 11h8l.2-1.8 3.3 3.3zM17 9h-6l5.5 5.5zm1-1c0-1.1-.9-2-2-2h-2l-1-1h-2l-1 1H8l2 2h8z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/unTrash-rtl-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/unTrash-rtl-invert.svg index 12e57b2cea..3fb20857d7 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/unTrash-rtl-invert.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/unTrash-rtl-invert.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #fff }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff"> <path d="M4 20.5L19.5 5l1 1-3 3-1 11h-8l-.2-1.8L5 21.5zM7.5 9h6L8 14.5zm-1-1c0-1.1.9-2 2-2h2l1-1h2l1 1h2l-2 2h-8z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/unTrash-rtl-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/unTrash-rtl-progressive.svg index 6395968474..0a67774b23 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/unTrash-rtl-progressive.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/unTrash-rtl-progressive.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #36c }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c"> <path d="M4 20.5L19.5 5l1 1-3 3-1 11h-8l-.2-1.8L5 21.5zM7.5 9h6L8 14.5zm-1-1c0-1.1.9-2 2-2h2l1-1h2l1 1h2l-2 2h-8z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/underline-a-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/underline-a-invert.svg index 1fb4ca9f25..3078617dca 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/underline-a-invert.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/underline-a-invert.svg @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #fff }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff"> <g id="underline-a"> <path id="a" d="M14.424 16H16.5L13.037 6H10.96L7.5 16h2.077l.627-2h3.604l.616 2zm-3.92-3.623L12 7.997l1.51 4.38h-3z"/> <path id="underline" d="M7 17h10v1H7v-1z"/> </g> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/underline-a-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/underline-a-progressive.svg index ec858c9719..99d9dadc98 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/underline-a-progressive.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/underline-a-progressive.svg @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #36c }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c"> <g id="underline-a"> <path id="a" d="M14.424 16H16.5L13.037 6H10.96L7.5 16h2.077l.627-2h3.604l.616 2zm-3.92-3.623L12 7.997l1.51 4.38h-3z"/> <path id="underline" d="M7 17h10v1H7v-1z"/> </g> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/underline-u-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/underline-u-invert.svg index 0c73875c4d..8136276de7 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/underline-u-invert.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/underline-u-invert.svg @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #fff }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff"> <g id="underline-u"> <path id="u" d="M8 6h2v5.96c-.104 1.706.695 2 2 2.04 1.777.062 2.002-.88 2-2.04V6h2v6.123c0 1.28-.338 2.245-1.016 2.898-.672.658-1.666.98-2.98.98-1.32 0-2.32-.32-2.996-.98C8.336 14.37 8 13.41 8 12.13V6"/> <path id="underline" d="M7 17h10v1H7v-1z"/> </g> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/underline-u-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/underline-u-progressive.svg index 691846b57a..29532130a3 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/underline-u-progressive.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/underline-u-progressive.svg @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #36c }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c"> <g id="underline-u"> <path id="u" d="M8 6h2v5.96c-.104 1.706.695 2 2 2.04 1.777.062 2.002-.88 2-2.04V6h2v6.123c0 1.28-.338 2.245-1.016 2.898-.672.658-1.666.98-2.98.98-1.32 0-2.32-.32-2.996-.98C8.336 14.37 8 13.41 8 12.13V6"/> <path id="underline" d="M7 17h10v1H7v-1z"/> </g> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/upTriangle-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/upTriangle-invert.svg index 7d9132665b..e5c84a9f2d 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/upTriangle-invert.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/upTriangle-invert.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #fff }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff"> <path d="M12 8l8 10H4z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/upTriangle-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/upTriangle-progressive.svg index 1757188340..b6bbc972de 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/upTriangle-progressive.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/upTriangle-progressive.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #36c }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c"> <path d="M12 8l8 10H4z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/upload-ltr-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/upload-ltr-invert.svg index 818178ea2e..4a7cf26acf 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/upload-ltr-invert.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/upload-ltr-invert.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #fff }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff"> <path d="M10 13c0 1.7 1.3 3 3 3V9h3l-4.5-5L7 9h3v4zm7 0v5H7c-.6 0-1-.4-1-1v-4H4v4c0 1.9 1.3 3 3 3h12v-7h-2z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/upload-ltr-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/upload-ltr-progressive.svg index edeb4487d4..85bb62f4f8 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/upload-ltr-progressive.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/upload-ltr-progressive.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #36c }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c"> <path d="M10 13c0 1.7 1.3 3 3 3V9h3l-4.5-5L7 9h3v4zm7 0v5H7c-.6 0-1-.4-1-1v-4H4v4c0 1.9 1.3 3 3 3h12v-7h-2z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/upload-rtl-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/upload-rtl-invert.svg index 9abf396e24..d347e6ac70 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/upload-rtl-invert.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/upload-rtl-invert.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #fff }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff"> <path d="M13 13c0 1.7-1.3 3-3 3V9H7l4.5-5L16 9h-3v4zm-7 0v5h10c.6 0 1-.4 1-1v-4h2v4c0 1.9-1.3 3-3 3H4v-7h2z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/upload-rtl-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/upload-rtl-progressive.svg index 29e8f160da..d367074a98 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/upload-rtl-progressive.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/upload-rtl-progressive.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #36c }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c"> <path d="M13 13c0 1.7-1.3 3-3 3V9H7l4.5-5L16 9h-3v4zm-7 0v5h10c.6 0 1-.4 1-1v-4h2v4c0 1.9-1.3 3-3 3H4v-7h2z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/userActive-ltr-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/userActive-ltr-invert.svg index 93b7c5e370..beefd8d7a8 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/userActive-ltr-invert.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/userActive-ltr-invert.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #fff }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff"> <path d="M16 5H4v12c0 1.7 1.3 3 3 3h12V8c0-1.7-1.3-3-3-3zm-2 4c.7 0 1.2.6 1.2 1.2s-.6 1.2-1.2 1.2-1.2-.6-1.2-1.2S13.3 9 14 9zM9 9c.7 0 1.2.6 1.2 1.2s-.5 1.3-1.2 1.3-1.2-.6-1.2-1.2S8.3 9 9 9zm7 5.4c0 .2-.1.3-.3.5-.7.6-1.6 1-2.6 1.3s-2.1.2-3.1 0-2-.9-2.7-1.5c-.1-.1-.2-.3-.2-.4s.1-.3.2-.4c.1-.1.3-.2.4-.2.2 0 .3.1.4.2.5.5 1.2.9 2.1 1.1s1.7.2 2.6 0 1.6-.5 2.1-1c.1-.1.3-.2.4-.2s.3.1.5.2.2.2.2.4z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/userActive-ltr-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/userActive-ltr-progressive.svg index b1147fc9eb..3232e97a6b 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/userActive-ltr-progressive.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/userActive-ltr-progressive.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #36c }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c"> <path d="M16 5H4v12c0 1.7 1.3 3 3 3h12V8c0-1.7-1.3-3-3-3zm-2 4c.7 0 1.2.6 1.2 1.2s-.6 1.2-1.2 1.2-1.2-.6-1.2-1.2S13.3 9 14 9zM9 9c.7 0 1.2.6 1.2 1.2s-.5 1.3-1.2 1.3-1.2-.6-1.2-1.2S8.3 9 9 9zm7 5.4c0 .2-.1.3-.3.5-.7.6-1.6 1-2.6 1.3s-2.1.2-3.1 0-2-.9-2.7-1.5c-.1-.1-.2-.3-.2-.4s.1-.3.2-.4c.1-.1.3-.2.4-.2.2 0 .3.1.4.2.5.5 1.2.9 2.1 1.1s1.7.2 2.6 0 1.6-.5 2.1-1c.1-.1.3-.2.4-.2s.3.1.5.2.2.2.2.4z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/userActive-rtl-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/userActive-rtl-invert.svg index ad40b9e9a0..08a382a630 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/userActive-rtl-invert.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/userActive-rtl-invert.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #fff }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff"> <path d="M7 5h12v12c0 1.7-1.3 3-3 3H4V8c0-1.7 1.3-3 3-3zm2 4c-.7 0-1.2.6-1.2 1.2s.6 1.2 1.2 1.2 1.2-.6 1.2-1.2S9.7 9 9 9zm5 0c-.7 0-1.2.6-1.2 1.2s.5 1.3 1.2 1.3 1.2-.6 1.2-1.2S14.7 9 14 9zm-7 5.4c0 .2.1.3.3.5.7.6 1.6 1 2.6 1.3 1 .3 2.1.2 3.1 0s2-.9 2.7-1.5c.1-.1.2-.3.2-.4 0-.1-.1-.3-.2-.4-.1-.1-.3-.2-.4-.2-.2 0-.3.1-.4.2-.5.5-1.2.9-2.1 1.1-.9.2-1.7.2-2.6 0-.9-.2-1.6-.5-2.1-1-.1-.1-.3-.2-.4-.2-.1 0-.3.1-.5.2s-.2.2-.2.4z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/userActive-rtl-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/userActive-rtl-progressive.svg index 958e4807d3..c38292ec69 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/userActive-rtl-progressive.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/userActive-rtl-progressive.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #36c }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c"> <path d="M7 5h12v12c0 1.7-1.3 3-3 3H4V8c0-1.7 1.3-3 3-3zm2 4c-.7 0-1.2.6-1.2 1.2s.6 1.2 1.2 1.2 1.2-.6 1.2-1.2S9.7 9 9 9zm5 0c-.7 0-1.2.6-1.2 1.2s.5 1.3 1.2 1.3 1.2-.6 1.2-1.2S14.7 9 14 9zm-7 5.4c0 .2.1.3.3.5.7.6 1.6 1 2.6 1.3 1 .3 2.1.2 3.1 0s2-.9 2.7-1.5c.1-.1.2-.3.2-.4 0-.1-.1-.3-.2-.4-.1-.1-.3-.2-.4-.2-.2 0-.3.1-.4.2-.5.5-1.2.9-2.1 1.1-.9.2-1.7.2-2.6 0-.9-.2-1.6-.5-2.1-1-.1-.1-.3-.2-.4-.2-.1 0-.3.1-.5.2s-.2.2-.2.4z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/userAvatar-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/userAvatar-invert.svg index a2e039ba83..5f4e1369b1 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/userAvatar-invert.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/userAvatar-invert.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #fff }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff"> <path d="M18.75 17.4c-1.08-.36-3.6-1.35-3.6-1.35-.81-.27-.81-.99-.9-1.8v-.09c1.26-1.08 2.25-2.88 2.25-4.86 0-4.23-1.8-5.85-4.5-5.85-1.89 0-4.5 1.08-4.5 5.85 0 1.89.99 3.69 2.25 4.86v.09c0 .81-.09 1.53-.9 1.8 0 0-2.61.99-3.6 1.35-1.17.36-2.25.9-2.25 2.25v.9h18v-.9c0-1.08-.72-1.8-2.25-2.25z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/userAvatar-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/userAvatar-progressive.svg index 257f593d6c..26ae8b64fe 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/userAvatar-progressive.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/userAvatar-progressive.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #36c }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c"> <path d="M18.75 17.4c-1.08-.36-3.6-1.35-3.6-1.35-.81-.27-.81-.99-.9-1.8v-.09c1.26-1.08 2.25-2.88 2.25-4.86 0-4.23-1.8-5.85-4.5-5.85-1.89 0-4.5 1.08-4.5 5.85 0 1.89.99 3.69 2.25 4.86v.09c0 .81-.09 1.53-.9 1.8 0 0-2.61.99-3.6 1.35-1.17.36-2.25.9-2.25 2.25v.9h18v-.9c0-1.08-.72-1.8-2.25-2.25z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/userInactive-ltr-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/userInactive-ltr-invert.svg index c4049a532a..075ea5c301 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/userInactive-ltr-invert.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/userInactive-ltr-invert.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #fff }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff"> <path d="M16 5H4v12c0 1.7 1.3 3 3 3h12V8c0-1.7-1.3-3-3-3zm-9.3 5.4C6.2 10 6 9.6 6 9c.6.6 1.5.9 2.5.9s1.9-.3 2.5-.9c0 .6-.2 1-.7 1.4-.5.4-1.1.6-1.8.6s-1.3-.2-1.8-.6zm8.4 4.3c0 .2-.1.3-.3.4-1 .6-2.2.9-3.5.9-1.2 0-2.3-.3-3.3-1-.2-.1-.2-.2-.3-.4s0-.3.1-.5.2-.2.4-.3.3 0 .5.1c.8.5 1.7.8 2.8.8s2-.2 2.8-.7c.1-.1.3-.1.5-.1s.3.1.4.3l-.1.5zm1.2-4.3c-.5.4-1.1.6-1.8.6s-1.3-.2-1.8-.6S12 9.6 12 9c.6.6 1.5.9 2.5.9s1.9-.3 2.5-.9c0 .6-.2 1-.7 1.4z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/userInactive-ltr-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/userInactive-ltr-progressive.svg index 60165e766e..f48929d17d 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/userInactive-ltr-progressive.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/userInactive-ltr-progressive.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #36c }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c"> <path d="M16 5H4v12c0 1.7 1.3 3 3 3h12V8c0-1.7-1.3-3-3-3zm-9.3 5.4C6.2 10 6 9.6 6 9c.6.6 1.5.9 2.5.9s1.9-.3 2.5-.9c0 .6-.2 1-.7 1.4-.5.4-1.1.6-1.8.6s-1.3-.2-1.8-.6zm8.4 4.3c0 .2-.1.3-.3.4-1 .6-2.2.9-3.5.9-1.2 0-2.3-.3-3.3-1-.2-.1-.2-.2-.3-.4s0-.3.1-.5.2-.2.4-.3.3 0 .5.1c.8.5 1.7.8 2.8.8s2-.2 2.8-.7c.1-.1.3-.1.5-.1s.3.1.4.3l-.1.5zm1.2-4.3c-.5.4-1.1.6-1.8.6s-1.3-.2-1.8-.6S12 9.6 12 9c.6.6 1.5.9 2.5.9s1.9-.3 2.5-.9c0 .6-.2 1-.7 1.4z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/userInactive-rtl-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/userInactive-rtl-invert.svg index 275992631d..0b3aa4d56f 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/userInactive-rtl-invert.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/userInactive-rtl-invert.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #fff }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff"> <path d="M7 5h12v12c0 1.7-1.3 3-3 3H4V8c0-1.7 1.3-3 3-3zm9.3 5.4c.5-.4.7-.8.7-1.4-.6.6-1.5.9-2.5.9S12.6 9.6 12 9c0 .6.2 1 .7 1.4.5.4 1.1.6 1.8.6s1.3-.2 1.8-.6zm-8.4 4.3c0 .2.1.3.3.4 1 .6 2.2.9 3.5.9 1.2 0 2.3-.3 3.3-1 .2-.1.2-.2.3-.4.1-.2 0-.3-.1-.5s-.2-.2-.4-.3c-.2-.1-.3 0-.5.1-.8.5-1.7.8-2.8.8-1.1 0-2-.2-2.8-.7-.1-.1-.3-.1-.5-.1s-.3.1-.4.3l.1.5zm-1.2-4.3c.5.4 1.1.6 1.8.6s1.3-.2 1.8-.6c.5-.4.7-.8.7-1.4-.6.6-1.5.9-2.5.9S6.6 9.6 6 9c0 .6.2 1 .7 1.4z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/userInactive-rtl-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/userInactive-rtl-progressive.svg index 9ec8f4f731..76d950c26e 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/userInactive-rtl-progressive.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/userInactive-rtl-progressive.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #36c }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c"> <path d="M7 5h12v12c0 1.7-1.3 3-3 3H4V8c0-1.7 1.3-3 3-3zm9.3 5.4c.5-.4.7-.8.7-1.4-.6.6-1.5.9-2.5.9S12.6 9.6 12 9c0 .6.2 1 .7 1.4.5.4 1.1.6 1.8.6s1.3-.2 1.8-.6zm-8.4 4.3c0 .2.1.3.3.4 1 .6 2.2.9 3.5.9 1.2 0 2.3-.3 3.3-1 .2-.1.2-.2.3-.4.1-.2 0-.3-.1-.5s-.2-.2-.4-.3c-.2-.1-.3 0-.5.1-.8.5-1.7.8-2.8.8-1.1 0-2-.2-2.8-.7-.1-.1-.3-.1-.5-.1s-.3.1-.4.3l.1.5zm-1.2-4.3c.5.4 1.1.6 1.8.6s1.3-.2 1.8-.6c.5-.4.7-.8.7-1.4-.6.6-1.5.9-2.5.9S6.6 9.6 6 9c0 .6.2 1 .7 1.4z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/userTalk-ltr-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/userTalk-ltr-invert.svg index c781931867..934128fd5a 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/userTalk-ltr-invert.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/userTalk-ltr-invert.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #fff }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff"> <path d="M5 6v11l-3 3h17c1.7 0 3-1.3 3-3V6H5zm11.2 2.5c.7 0 1.2.6 1.2 1.2s-.5 1.3-1.2 1.3-1.2-.6-1.2-1.2.6-1.3 1.2-1.3zm-5.4 0c.7 0 1.2.6 1.2 1.2s-.6 1.3-1.2 1.3-1.2-.6-1.2-1.2.5-1.3 1.2-1.3zm2.7 8.5c-5.1 0-6-5-6-5s2 1 6 1l6-1s-1 5-6 5z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/userTalk-ltr-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/userTalk-ltr-progressive.svg index 539f6f4f54..232a04a37b 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/userTalk-ltr-progressive.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/userTalk-ltr-progressive.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #36c }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c"> <path d="M5 6v11l-3 3h17c1.7 0 3-1.3 3-3V6H5zm11.2 2.5c.7 0 1.2.6 1.2 1.2s-.5 1.3-1.2 1.3-1.2-.6-1.2-1.2.6-1.3 1.2-1.3zm-5.4 0c.7 0 1.2.6 1.2 1.2s-.6 1.3-1.2 1.3-1.2-.6-1.2-1.2.5-1.3 1.2-1.3zm2.7 8.5c-5.1 0-6-5-6-5s2 1 6 1l6-1s-1 5-6 5z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/userTalk-rtl-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/userTalk-rtl-invert.svg index dd8588a471..5c48db2e1c 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/userTalk-rtl-invert.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/userTalk-rtl-invert.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #fff }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff"> <path d="M19 6v11l3 3H5c-1.7 0-3-1.3-3-3V6h17zM7.8 8.5c-.7 0-1.2.6-1.2 1.2S7.1 11 7.8 11 9 10.4 9 9.8s-.6-1.3-1.2-1.3zm5.4 0c-.7 0-1.2.6-1.2 1.2s.6 1.3 1.2 1.3 1.2-.6 1.2-1.2-.5-1.3-1.2-1.3zM10.5 17c5.1 0 6-5 6-5s-2 1-6 1l-6-1s1 5 6 5z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/userTalk-rtl-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/userTalk-rtl-progressive.svg index 32cad9166c..2a2b17b848 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/userTalk-rtl-progressive.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/userTalk-rtl-progressive.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #36c }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c"> <path d="M19 6v11l3 3H5c-1.7 0-3-1.3-3-3V6h17zM7.8 8.5c-.7 0-1.2.6-1.2 1.2S7.1 11 7.8 11 9 10.4 9 9.8s-.6-1.3-1.2-1.3zm5.4 0c-.7 0-1.2.6-1.2 1.2s.6 1.3 1.2 1.3 1.2-.6 1.2-1.2-.5-1.3-1.2-1.3zM10.5 17c5.1 0 6-5 6-5s-2 1-6 1l-6-1s1 5 6 5z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/viewCompact-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/viewCompact-invert.svg index f33f917b88..b70f4f9097 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/viewCompact-invert.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/viewCompact-invert.svg @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #fff }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff"> <g id="viewCompact"> <circle cx="6" cy="6" r="2"/> <circle cx="12" cy="6" r="2"/> @@ -11,4 +11,4 @@ <circle cx="12" cy="18" r="2"/> <circle cx="18" cy="18" r="2"/> </g> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/viewCompact-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/viewCompact-progressive.svg index 7f66bc7a7f..a7edfc5507 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/viewCompact-progressive.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/viewCompact-progressive.svg @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #36c }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c"> <g id="viewCompact"> <circle cx="6" cy="6" r="2"/> <circle cx="12" cy="6" r="2"/> @@ -11,4 +11,4 @@ <circle cx="12" cy="18" r="2"/> <circle cx="18" cy="18" r="2"/> </g> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/viewDetails-ltr-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/viewDetails-ltr-invert.svg index cea83f92ab..1e349b3f68 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/viewDetails-ltr-invert.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/viewDetails-ltr-invert.svg @@ -1,9 +1,9 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #fff }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff"> <g id="viewDetails"> <circle cx="5.5" cy="8.5" r="2.5"/> <path d="M10 6h12v1H10zm0 2h9v1h-9zm0 2h4v1h-4z"/> <circle cx="5.5" cy="16.5" r="2.5"/> <path d="M10 14h12v1H10zm0 2h9v1h-9zm0 2h4v1h-4z"/> </g> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/viewDetails-ltr-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/viewDetails-ltr-progressive.svg index 1e1d76b475..c6588c2f7e 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/viewDetails-ltr-progressive.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/viewDetails-ltr-progressive.svg @@ -1,9 +1,9 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #36c }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c"> <g id="viewDetails"> <circle cx="5.5" cy="8.5" r="2.5"/> <path d="M10 6h12v1H10zm0 2h9v1h-9zm0 2h4v1h-4z"/> <circle cx="5.5" cy="16.5" r="2.5"/> <path d="M10 14h12v1H10zm0 2h9v1h-9zm0 2h4v1h-4z"/> </g> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/viewDetails-rtl-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/viewDetails-rtl-invert.svg index 34ee977e1a..f2d6a87466 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/viewDetails-rtl-invert.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/viewDetails-rtl-invert.svg @@ -1,9 +1,9 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #fff }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff"> <g id="viewDetails"> <circle cx="18.5" cy="8.5" r="2.5"/> <path d="M14 6H2v1h12zm0 2H5v1h9zm0 2h-4v1h4z"/> <circle cx="18.5" cy="16.5" r="2.5"/> <path d="M14 14H2v1h12zm0 2H5v1h9zm0 2h-4v1h4z"/> </g> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/viewDetails-rtl-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/viewDetails-rtl-progressive.svg index d253a884c3..9b7b78dcda 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/viewDetails-rtl-progressive.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/viewDetails-rtl-progressive.svg @@ -1,9 +1,9 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #36c }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c"> <g id="viewDetails"> <circle cx="18.5" cy="8.5" r="2.5"/> <path d="M14 6H2v1h12zm0 2H5v1h9zm0 2h-4v1h4z"/> <circle cx="18.5" cy="16.5" r="2.5"/> <path d="M14 14H2v1h12zm0 2H5v1h9zm0 2h-4v1h4z"/> </g> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/visionSimulator-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/visionSimulator-invert.svg index 0e7728f57e..10edb0f6b9 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/visionSimulator-invert.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/visionSimulator-invert.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #ffffff }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#ffffff"> <path d="M0 10v8h2.3c.3.6 1 1 1.7 1h4c1.5 0 2.7-.8 3-2h2c.3 1.2 1.5 2 3 2h4c.7 0 1.4 0 1.7-1H24v-8zm10 6c0 1-.4 2-2 2H4c-.6 0-1-.4-1-1v-3c0-.6.4-1 1-1h5c.6 0 1 .4 1 1zm11 1c0 .6-.4 1-1 1h-4c-1.6 0-2-1-2-2v-2c0-.6.4-1 1-1h5c.6 0 1 .4 1 1z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/watchlist-ltr-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/watchlist-ltr-invert.svg index 5600602412..ff99d08e7b 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/watchlist-ltr-invert.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/watchlist-ltr-invert.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #fff }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff"> <path d="M13 14h5v1h-5v-1zm0 3h5v-1h-5v1zm0 1h5v1h-5v-1zm-1-5v3l-5 3 1-6-4-3 6-1 2-5s1.9 5 2 5l6 1-4 3h-4z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/watchlist-ltr-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/watchlist-ltr-progressive.svg index 212193feea..6d06edeaca 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/watchlist-ltr-progressive.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/watchlist-ltr-progressive.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #36c }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c"> <path d="M13 14h5v1h-5v-1zm0 3h5v-1h-5v1zm0 1h5v1h-5v-1zm-1-5v3l-5 3 1-6-4-3 6-1 2-5s1.9 5 2 5l6 1-4 3h-4z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/watchlist-rtl-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/watchlist-rtl-invert.svg index 08986e5d45..50224d0e10 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/watchlist-rtl-invert.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/watchlist-rtl-invert.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #fff }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff"> <path d="M11 14H6v1h5v-1zm0 3H6v-1h5v1zm0 1H6v1h5v-1zm1-5v3l5 3-1-6 4-3-6-1-2-5s-1.9 5-2 5l-6 1 4 3h4z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/watchlist-rtl-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/watchlist-rtl-progressive.svg index e529a6756b..a2589bd112 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/watchlist-rtl-progressive.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/watchlist-rtl-progressive.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #36c }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c"> <path d="M11 14H6v1h5v-1zm0 3H6v-1h5v1zm0 1H6v1h5v-1zm1-5v3l5 3-1-6 4-3-6-1-2-5s-1.9 5-2 5l-6 1 4 3h4z"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/wikiText-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/wikiText-invert.svg index 12e246ca05..72601da40b 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/wikiText-invert.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/wikiText-invert.svg @@ -1,9 +1,9 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #fff }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff"> <g id="wikiText"> <path id="opening-bracket-inner" d="M7 19h3v-2H9V7h1V5H7z"/> <path id="closing-bracket-inner" d="M17 19h-3v-2h1V7h-1V5h3z"/> <path id="closing-bracket-outer" d="M21 19h-3v-2h1V7h-1V5h3z"/> <path id="opening-bracket-outer" d="M3 19h3v-2H5V7h1V5H3z"/> </g> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/wikiText-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/wikiText-progressive.svg index 4afd5e0c22..f7ba89d68d 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/wikiText-progressive.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/wikiText-progressive.svg @@ -1,9 +1,9 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #36c }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c"> <g id="wikiText"> <path id="opening-bracket-inner" d="M7 19h3v-2H9V7h1V5H7z"/> <path id="closing-bracket-inner" d="M17 19h-3v-2h1V7h-1V5h3z"/> <path id="closing-bracket-outer" d="M21 19h-3v-2h1V7h-1V5h3z"/> <path id="opening-bracket-outer" d="M3 19h3v-2H5V7h1V5H3z"/> </g> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/wikitrail-ltr-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/wikitrail-ltr-invert.svg index d373c0d0f4..17d3645b0e 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/wikitrail-ltr-invert.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/wikitrail-ltr-invert.svg @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #fff }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff"> <path d="M15 9l.7-1.8c.9.4 1.8.7 2.4.9l-.6 1.7v.2L15 9zm-4.3-1.9l.8-1.8c1.2.5 2.6 1.1 3 1.4l-.8 1.8-3-1.4zm-5.9-1c-.8 0-1.4.2-2 .6L1.7 5c.9-.6 1.9-.9 3.1-.9v2zm-4.3.7l1.8.8c-.3.7-.3 1.3-.1 1.8l-1.9.7C0 8.9 0 7.8.5 6.8zm4.2 5.4l-1.3 1.5c-1-1-1.7-1.6-2-2l1.5-1.3c.7.8 1.3 1.4 1.8 1.8zm7.3 4.3c0 1.9-1.6 3.5-3.5 3.5S5 18.4 5 16.5 6.6 13 8.5 13s3.5 1.6 3.5 3.5zM24 8l-1-1-1.5 1.5L20 7l-1 1 1.5 1.5L19 11l1 1 1.5-1.5L23 12l1-1-1.5-1.5z"/> <circle cx="8" cy="5" r="2"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/wikitrail-ltr-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/wikitrail-ltr-progressive.svg index 7a49393020..2b49b99073 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/wikitrail-ltr-progressive.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/wikitrail-ltr-progressive.svg @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #36c }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c"> <path d="M15 9l.7-1.8c.9.4 1.8.7 2.4.9l-.6 1.7v.2L15 9zm-4.3-1.9l.8-1.8c1.2.5 2.6 1.1 3 1.4l-.8 1.8-3-1.4zm-5.9-1c-.8 0-1.4.2-2 .6L1.7 5c.9-.6 1.9-.9 3.1-.9v2zm-4.3.7l1.8.8c-.3.7-.3 1.3-.1 1.8l-1.9.7C0 8.9 0 7.8.5 6.8zm4.2 5.4l-1.3 1.5c-1-1-1.7-1.6-2-2l1.5-1.3c.7.8 1.3 1.4 1.8 1.8zm7.3 4.3c0 1.9-1.6 3.5-3.5 3.5S5 18.4 5 16.5 6.6 13 8.5 13s3.5 1.6 3.5 3.5zM24 8l-1-1-1.5 1.5L20 7l-1 1 1.5 1.5L19 11l1 1 1.5-1.5L23 12l1-1-1.5-1.5z"/> <circle cx="8" cy="5" r="2"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/wikitrail-rtl-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/wikitrail-rtl-invert.svg index 4021b30666..fbb9cabdb8 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/wikitrail-rtl-invert.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/wikitrail-rtl-invert.svg @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #fff }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff"> <path d="M9.095 9l-.7-1.8c-.9.4-1.8.7-2.4.9l.6 1.7v.2l2.5-1zm4.3-1.9l-.8-1.8c-1.2.5-2.6 1.1-3 1.4l.8 1.8 3-1.4zm5.9-1c.8 0 1.4.2 2 .6l1.1-1.7c-.9-.6-1.9-.9-3.1-.9v2zm4.3.7l-1.8.8c.3.7.3 1.3.1 1.8l1.9.7c.3-1.2.3-2.3-.2-3.3zm-4.2 5.4l1.3 1.5c1-1 1.7-1.6 2-2l-1.5-1.3c-.7.8-1.3 1.4-1.8 1.8zm-7.3 4.3c0 1.9 1.6 3.5 3.5 3.5s3.5-1.6 3.5-3.5-1.6-3.5-3.5-3.5-3.5 1.6-3.5 3.5zM.095 8l1-1 1.5 1.5 1.5-1.5 1 1-1.5 1.5 1.5 1.5-1 1-1.5-1.5-1.5 1.5-1-1 1.5-1.5z"/> <circle cx="8" cy="5" r="2" transform="matrix(-1 0 0 1 24.095 0)"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/wikitrail-rtl-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/wikitrail-rtl-progressive.svg index a937688f3c..a2f62ff07d 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/wikitrail-rtl-progressive.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/wikitrail-rtl-progressive.svg @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #36c }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c"> <path d="M9.095 9l-.7-1.8c-.9.4-1.8.7-2.4.9l.6 1.7v.2l2.5-1zm4.3-1.9l-.8-1.8c-1.2.5-2.6 1.1-3 1.4l.8 1.8 3-1.4zm5.9-1c.8 0 1.4.2 2 .6l1.1-1.7c-.9-.6-1.9-.9-3.1-.9v2zm4.3.7l-1.8.8c.3.7.3 1.3.1 1.8l1.9.7c.3-1.2.3-2.3-.2-3.3zm-4.2 5.4l1.3 1.5c1-1 1.7-1.6 2-2l-1.5-1.3c-.7.8-1.3 1.4-1.8 1.8zm-7.3 4.3c0 1.9 1.6 3.5 3.5 3.5s3.5-1.6 3.5-3.5-1.6-3.5-3.5-3.5-3.5 1.6-3.5 3.5zM.095 8l1-1 1.5 1.5 1.5-1.5 1 1-1.5 1.5 1.5 1.5-1 1-1.5-1.5-1.5 1.5-1-1 1.5-1.5z"/> <circle cx="8" cy="5" r="2" transform="matrix(-1 0 0 1 24.095 0)"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/window-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/window-invert.svg index eaaca5482f..bebd3a83fe 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/window-invert.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/window-invert.svg @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #fff }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#fff"> <g id="window"> <path id="title" d="M7 10h10v1H7z"/> <path id="frame" d="M16 19H8c-2.206 0-4-1.794-4-4V9c0-2.206 1.794-4 4-4h8c2.206 0 4 1.794 4 4v6c0 2.206-1.794 4-4 4zM8 7c-1.103 0-2 .897-2 2v6c0 1.103.897 2 2 2h8c1.103 0 2-.897 2-2V9c0-1.103-.897-2-2-2H8z"/> </g> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/window-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/window-progressive.svg index cb2de067ce..9204afe7b4 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/icons/window-progressive.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/icons/window-progressive.svg @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #36c }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="#36c"> <g id="window"> <path id="title" d="M7 10h10v1H7z"/> <path id="frame" d="M16 19H8c-2.206 0-4-1.794-4-4V9c0-2.206 1.794-4 4-4h8c2.206 0 4 1.794 4 4v6c0 2.206-1.794 4-4 4zM8 7c-1.103 0-2 .897-2 2v6c0 1.103.897 2 2 2h8c1.103 0 2-.897 2-2V9c0-1.103-.897-2-2-2H8z"/> </g> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/indicators/alert-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/indicators/alert-invert.svg index bb38ce58f8..a52017519a 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/indicators/alert-invert.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/indicators/alert-invert.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 12 12"><style>* { fill: #fff }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 12 12"><g fill="#fff"> <path d="M6 12A6 6 0 1 1 6 0a6 6 0 0 1 0 12zM5 7h2V2H5zm0 3h2V8H5z" id="alert"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/indicators/alert-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/indicators/alert-progressive.svg index 8bff5c9f87..900e477dc5 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/indicators/alert-progressive.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/indicators/alert-progressive.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 12 12"><style>* { fill: #36c }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 12 12"><g fill="#36c"> <path d="M6 12A6 6 0 1 1 6 0a6 6 0 0 1 0 12zM5 7h2V2H5zm0 3h2V8H5z" id="alert"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/indicators/arrow-down-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/indicators/arrow-down-invert.svg index a02090b562..e194d0daea 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/indicators/arrow-down-invert.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/indicators/arrow-down-invert.svg @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 12 12"><style>* { fill: #fff }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 12 12"><g fill="#fff"> <g id="down"> <path id="arrow" d="M1 4h10L6 9 1 4"/> </g> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/indicators/arrow-down-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/indicators/arrow-down-progressive.svg index 422d51a896..511359a5bf 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/indicators/arrow-down-progressive.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/indicators/arrow-down-progressive.svg @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 12 12"><style>* { fill: #36c }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 12 12"><g fill="#36c"> <g id="down"> <path id="arrow" d="M1 4h10L6 9 1 4"/> </g> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/indicators/arrow-ltr-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/indicators/arrow-ltr-invert.svg index d0c754b238..9e0e569b5d 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/indicators/arrow-ltr-invert.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/indicators/arrow-ltr-invert.svg @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 12 12"><style>* { fill: #fff }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 12 12"><g fill="#fff"> <g id="ltr"> <path id="arrow" d="M4 1v10l5-5-5-5"/> </g> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/indicators/arrow-ltr-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/indicators/arrow-ltr-progressive.svg index b866ef9946..fc6cb9a23e 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/indicators/arrow-ltr-progressive.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/indicators/arrow-ltr-progressive.svg @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 12 12"><style>* { fill: #36c }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 12 12"><g fill="#36c"> <g id="ltr"> <path id="arrow" d="M4 1v10l5-5-5-5"/> </g> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/indicators/arrow-rtl-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/indicators/arrow-rtl-invert.svg index 157f000e21..d032b05569 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/indicators/arrow-rtl-invert.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/indicators/arrow-rtl-invert.svg @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 12 12"><style>* { fill: #fff }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 12 12"><g fill="#fff"> <g id="rtl"> <path id="arrow" d="M8 11V1L3 6l5 5"/> </g> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/indicators/arrow-rtl-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/indicators/arrow-rtl-progressive.svg index 06237425ba..8f1a25433a 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/indicators/arrow-rtl-progressive.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/indicators/arrow-rtl-progressive.svg @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 12 12"><style>* { fill: #36c }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 12 12"><g fill="#36c"> <g id="rtl"> <path id="arrow" d="M8 11V1L3 6l5 5"/> </g> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/indicators/arrow-up-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/indicators/arrow-up-invert.svg index 14bc04c931..3b79abbea0 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/indicators/arrow-up-invert.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/indicators/arrow-up-invert.svg @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 12 12"><style>* { fill: #fff }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 12 12"><g fill="#fff"> <g id="up"> <path id="arrow" d="M1 8h10L6 3 1 8"/> </g> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/indicators/arrow-up-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/indicators/arrow-up-progressive.svg index ef8398276d..4e9221ac03 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/indicators/arrow-up-progressive.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/indicators/arrow-up-progressive.svg @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 12 12"><style>* { fill: #36c }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 12 12"><g fill="#36c"> <g id="up"> <path id="arrow" d="M1 8h10L6 3 1 8"/> </g> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/indicators/clear-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/indicators/clear-invert.svg index e3fd49c04a..eb45dfc906 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/indicators/clear-invert.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/indicators/clear-invert.svg @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 12 12"><style>* { fill: #fff }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 12 12"><g fill="#fff"> <g id="clear"> <path id="circle-with-cross" d="M6 0C2.7 0 0 2.7 0 6s2.7 6 6 6 6-2.7 6-6-2.7-6-6-6zM3.5 2.5L6 5l2.5-2.5 1 1L7 6l2.5 2.5-1 1L6 7 3.5 9.5l-1-1L5 6 2.5 3.5z"/> </g> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/indicators/clear-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/indicators/clear-progressive.svg index ff05cfaf92..4ea101318f 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/indicators/clear-progressive.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/indicators/clear-progressive.svg @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 12 12"><style>* { fill: #36c }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 12 12"><g fill="#36c"> <g id="clear"> <path id="circle-with-cross" d="M6 0C2.7 0 0 2.7 0 6s2.7 6 6 6 6-2.7 6-6-2.7-6-6-6zM3.5 2.5L6 5l2.5-2.5 1 1L7 6l2.5 2.5-1 1L6 7 3.5 9.5l-1-1L5 6 2.5 3.5z"/> </g> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/indicators/required-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/indicators/required-invert.svg index 632eb89bd6..efd08400e0 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/indicators/required-invert.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/indicators/required-invert.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 12 12"><style>* { fill: #fff }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 12 12"><g fill="#fff"> <path d="M5 1h2v10H5zm4.83 1.634l1 1.732-8.66 5-1-1.732zM1.17 4.366l1-1.732 8.66 5-1 1.732z" id="required"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/indicators/required-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/indicators/required-progressive.svg index 26e4913306..ab95a3d2f3 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/indicators/required-progressive.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/indicators/required-progressive.svg @@ -1,4 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 12 12"><style>* { fill: #36c }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 12 12"><g fill="#36c"> <path d="M5 1h2v10H5zm4.83 1.634l1 1.732-8.66 5-1-1.732zM1.17 4.366l1-1.732 8.66 5-1 1.732z" id="required"/> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/indicators/search-ltr-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/indicators/search-ltr-invert.svg index 036697ed96..cc383ee53f 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/indicators/search-ltr-invert.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/indicators/search-ltr-invert.svg @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 12 12"><style>* { fill: #fff }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 12 12"><g fill="#fff"> <g id="search"> <path id="magnifying-glass" d="M10.37 9.474L7.994 7.1l-.17-.1a3.45 3.45 0 0 0 .644-2.01A3.478 3.478 0 1 0 4.99 8.47c.75 0 1.442-.24 2.01-.648l.098.17 2.375 2.373c.19.188.543.142.79-.105s.293-.6.104-.79zm-5.38-2.27a2.21 2.21 0 1 1 2.21-2.21A2.21 2.21 0 0 1 4.99 7.21z"/> </g> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/indicators/search-ltr-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/indicators/search-ltr-progressive.svg index 51ff91db94..5e8e39535b 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/indicators/search-ltr-progressive.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/indicators/search-ltr-progressive.svg @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 12 12"><style>* { fill: #36c }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 12 12"><g fill="#36c"> <g id="search"> <path id="magnifying-glass" d="M10.37 9.474L7.994 7.1l-.17-.1a3.45 3.45 0 0 0 .644-2.01A3.478 3.478 0 1 0 4.99 8.47c.75 0 1.442-.24 2.01-.648l.098.17 2.375 2.373c.19.188.543.142.79-.105s.293-.6.104-.79zm-5.38-2.27a2.21 2.21 0 1 1 2.21-2.21A2.21 2.21 0 0 1 4.99 7.21z"/> </g> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/indicators/search-rtl-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/indicators/search-rtl-invert.svg index 3b2e1b6b2e..19114d8b9f 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/indicators/search-rtl-invert.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/indicators/search-rtl-invert.svg @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 12 12"><style>* { fill: #fff }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 12 12"><g fill="#fff"> <g id="search"> <path id="magnifying-glass" d="M1.63 9.474L4.006 7.1l.17-.1a3.45 3.45 0 0 1-.644-2.01A3.478 3.478 0 1 1 7.01 8.47 3.43 3.43 0 0 1 5 7.822l-.098.17-2.375 2.373c-.19.188-.543.142-.79-.105s-.293-.6-.104-.79zm5.378-2.27A2.21 2.21 0 1 0 4.8 4.994 2.21 2.21 0 0 0 7.01 7.21z"/> </g> -</svg> +</g></svg> diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/indicators/search-rtl-progressive.svg b/resources/lib/oojs-ui/themes/mediawiki/images/indicators/search-rtl-progressive.svg index 2cd760a977..015d02edc7 100644 --- a/resources/lib/oojs-ui/themes/mediawiki/images/indicators/search-rtl-progressive.svg +++ b/resources/lib/oojs-ui/themes/mediawiki/images/indicators/search-rtl-progressive.svg @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> -<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 12 12"><style>* { fill: #36c }</style> +<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 12 12"><g fill="#36c"> <g id="search"> <path id="magnifying-glass" d="M1.63 9.474L4.006 7.1l.17-.1a3.45 3.45 0 0 1-.644-2.01A3.478 3.478 0 1 1 7.01 8.47 3.43 3.43 0 0 1 5 7.822l-.098.17-2.375 2.373c-.19.188-.543.142-.79-.105s-.293-.6-.104-.79zm5.378-2.27A2.21 2.21 0 1 0 4.8 4.994 2.21 2.21 0 0 0 7.01 7.21z"/> </g> -</svg> +</g></svg> diff --git a/resources/src/dom-level2-skip.js b/resources/src/dom-level2-skip.js deleted file mode 100644 index 484c295ebe..0000000000 --- a/resources/src/dom-level2-skip.js +++ /dev/null @@ -1,6 +0,0 @@ -/*! - * Skip function for dom-level2-shim module. - * - * Tests for window.Node because that's the only thing that this shim is adding. - */ -return !!window.Node; diff --git a/resources/src/jquery/jquery.arrowSteps.css b/resources/src/jquery/jquery.arrowSteps.css index d24fcc950e..92c6c43c97 100644 --- a/resources/src/jquery/jquery.arrowSteps.css +++ b/resources/src/jquery/jquery.arrowSteps.css @@ -7,9 +7,9 @@ .arrowSteps li { float: left; - padding: 0px; - margin: 0px; - border: 0 none; + padding: 0; + margin: 0; + border: 0; } .arrowSteps li div { diff --git a/resources/src/jquery/jquery.badge.css b/resources/src/jquery/jquery.badge.css index 8b4bd7b3eb..8e0e512bab 100644 --- a/resources/src/jquery/jquery.badge.css +++ b/resources/src/jquery/jquery.badge.css @@ -19,9 +19,9 @@ .mw-badge-inline { margin-left: 3px; display: inline-block; - /* Hack for IE6 and IE7 (bug 47926) */ + /* Hack for IE6 and IE7 (T49926) */ zoom: 1; - *display: inline; + *display: inline; /* stylelint-disable-line declaration-block-no-duplicate-properties */ } .mw-badge-overlay { diff --git a/resources/src/jquery/jquery.byteLimit.js b/resources/src/jquery/jquery.byteLimit.js index 567bec8ad6..c75246c0f6 100644 --- a/resources/src/jquery/jquery.byteLimit.js +++ b/resources/src/jquery/jquery.byteLimit.js @@ -87,7 +87,7 @@ // Chop off characters from the end of the "inserted content" string // until the limit is statisfied. if ( fn ) { - // stop, when there is nothing to slice - bug 41450 + // stop, when there is nothing to slice - T43450 while ( $.byteLength( fn( inpParts.join( '' ) ) ) > byteLimit && inpParts[ 1 ].length > 0 ) { inpParts[ 1 ] = inpParts[ 1 ].slice( 0, -1 ); } @@ -225,7 +225,7 @@ } // Always adjust prevSafeVal to reflect the input value. Not doing this could cause // trimByteLength to compare the new value to an empty string instead of the - // old value, resulting in trimming always from the end (bug 40850). + // old value, resulting in trimming always from the end (T42850). prevSafeVal = res.newVal; } ); } ); diff --git a/resources/src/jquery/jquery.farbtastic.css b/resources/src/jquery/jquery.farbtastic.css index b7e0af531b..0cba34f496 100644 --- a/resources/src/jquery/jquery.farbtastic.css +++ b/resources/src/jquery/jquery.farbtastic.css @@ -23,11 +23,13 @@ position: absolute; cursor: crosshair; } -.farbtastic, .farbtastic .wheel { +.farbtastic, +.farbtastic .wheel { width: 195px; height: 195px; } -.farbtastic .color, .farbtastic .overlay { +.farbtastic .color, +.farbtastic .overlay { top: 47px; left: 47px; width: 101px; diff --git a/resources/src/jquery/jquery.highlightText.js b/resources/src/jquery/jquery.highlightText.js index 3feca81cc1..a14e3ebd38 100644 --- a/resources/src/jquery/jquery.highlightText.js +++ b/resources/src/jquery/jquery.highlightText.js @@ -8,18 +8,28 @@ $.highlightText = { // Split our pattern string at spaces and run our highlight function on the results - splitAndHighlight: function ( node, pat ) { + splitAndHighlight: function ( node, text ) { var i, - patArray = pat.split( ' ' ); - for ( i = 0; i < patArray.length; i++ ) { - if ( patArray[ i ].length === 0 ) { + words = text.split( ' ' ); + for ( i = 0; i < words.length; i++ ) { + if ( words[ i ].length === 0 ) { continue; } - $.highlightText.innerHighlight( node, patArray[ i ] ); + $.highlightText.innerHighlight( + node, + new RegExp( '(^|\\s)' + mw.RegExp.escape( words[ i ] ), 'i' ) + ); } return node; }, + prefixHighlight: function ( node, prefix ) { + $.highlightText.innerHighlight( + node, + new RegExp( '(^)' + mw.RegExp.escape( prefix ), 'i' ) + ); + }, + // scans a node looking for the pattern and wraps a span around each match innerHighlight: function ( node, pat ) { var i, match, pos, spannode, middlebit, middleclone; @@ -28,7 +38,7 @@ // non latin characters can make regex think a new word has begun: do not use \b // http://stackoverflow.com/questions/3787072/regex-wordwrap-with-utf8-characters-in-js // look for an occurrence of our pattern and store the starting position - match = node.data.match( new RegExp( '(^|\\s)' + mw.RegExp.escape( pat ), 'i' ) ); + match = node.data.match( pat ); if ( match ) { pos = match.index + match[ 1 ].length; // include length of any matched spaces // create the span wrapper for the matched text @@ -37,7 +47,7 @@ // shave off the characters preceding the matched text middlebit = node.splitText( pos ); // shave off any unmatched text off the end - middlebit.splitText( pat.length ); + middlebit.splitText( match[ 0 ].length - match[ 1 ].length ); // clone for appending to our span middleclone = middlebit.cloneNode( true ); // append the matched text node to the span @@ -63,11 +73,24 @@ } }; - $.fn.highlightText = function ( matchString ) { + /** + * Highlight certain text in current nodes (by wrapping it in `<span class="highlight">...</span>`). + * + * @param {string} matchString String to match + * @param {Object} [options] + * @param {string} [options.method='splitAndHighlight'] Method of matching to use, one of: + * - 'splitAndHighlight': Split `matchString` on spaces, then match each word separately. + * - 'prefixHighlight': Match `matchString` at the beginning of text only. + * @return {jQuery} + * @chainable + */ + $.fn.highlightText = function ( matchString, options ) { + options = options || {}; + options.method = options.method || 'splitAndHighlight'; return this.each( function () { var $el = $( this ); $el.data( 'highlightText', { originalText: $el.text() } ); - $.highlightText.splitAndHighlight( this, matchString ); + $.highlightText[ options.method ]( this, matchString ); } ); }; diff --git a/resources/src/jquery/jquery.qunit.completenessTest.js b/resources/src/jquery/jquery.qunit.completenessTest.js index 4353dd7d1d..0aaa4ff39d 100644 --- a/resources/src/jquery/jquery.qunit.completenessTest.js +++ b/resources/src/jquery/jquery.qunit.completenessTest.js @@ -12,6 +12,7 @@ * * @author Timo Tijhof, 2011-2012 */ +/* eslint-env qunit */ ( function ( mw, $ ) { 'use strict'; diff --git a/resources/src/jquery/jquery.spinner.css b/resources/src/jquery/jquery.spinner.css index 76b48456bc..6c7bd0e660 100644 --- a/resources/src/jquery/jquery.spinner.css +++ b/resources/src/jquery/jquery.spinner.css @@ -36,5 +36,5 @@ /* IE < 8 */ zoom: 1; - *display: inline; + *display: inline; /* stylelint-disable-line declaration-block-no-duplicate-properties */ } diff --git a/resources/src/jquery/jquery.suggestions.css b/resources/src/jquery/jquery.suggestions.css index f6b4fd188c..2cc0cc90ac 100644 --- a/resources/src/jquery/jquery.suggestions.css +++ b/resources/src/jquery/jquery.suggestions.css @@ -6,7 +6,7 @@ top: 0; left: 0; width: 0; - border: none; + border: 0; z-index: 1099; padding: 0; margin: -1px 0 0 0; @@ -17,7 +17,6 @@ background-color: #fff; cursor: pointer; border: solid 1px #aaa; - padding: 0; margin: 0; margin-top: -2px; display: none; diff --git a/resources/src/jquery/jquery.suggestions.js b/resources/src/jquery/jquery.suggestions.js index f3e4e09313..fdc8a266ad 100644 --- a/resources/src/jquery/jquery.suggestions.js +++ b/resources/src/jquery/jquery.suggestions.js @@ -375,7 +375,7 @@ } if ( context.config.highlightInput ) { - $result.highlightText( context.data.prevText ); + $result.highlightText( context.data.prevText, { method: 'prefixHighlight' } ); } // Widen results box if needed (new width is only calculated here, applied later). @@ -681,7 +681,7 @@ // Don't interfere with special clicks (e.g. to open in new tab) if ( !( e.which !== 1 || e.altKey || e.ctrlKey || e.shiftKey || e.metaKey ) ) { // This will hide the link we're just clicking on, which causes problems - // when done synchronously in at least Firefox 3.6 (bug 62858). + // when done synchronously in at least Firefox 3.6 (T64858). setTimeout( function () { $.suggestions.hide( context ); }, 0 ); @@ -713,7 +713,7 @@ // Don't interfere with special clicks (e.g. to open in new tab) if ( !( e.which !== 1 || e.altKey || e.ctrlKey || e.shiftKey || e.metaKey ) ) { // This will hide the link we're just clicking on, which causes problems - // when done synchronously in at least Firefox 3.6 (bug 62858). + // when done synchronously in at least Firefox 3.6 (T64858). setTimeout( function () { $.suggestions.hide( context ); }, 0 ); diff --git a/resources/src/jquery/jquery.tablesorter.js b/resources/src/jquery/jquery.tablesorter.js index 1b64237d07..f84c091dba 100644 --- a/resources/src/jquery/jquery.tablesorter.js +++ b/resources/src/jquery/jquery.tablesorter.js @@ -63,7 +63,7 @@ var $node = $( node ), // Use data-sort-value attribute. // Use data() instead of attr() so that live value changes - // are processed as well (bug 38152). + // are processed as well (T40152). data = $node.data( 'sortValue' ); if ( data !== null && data !== undefined ) { diff --git a/resources/src/jquery/jquery.tablesorter.less b/resources/src/jquery/jquery.tablesorter.less index f4ef540954..11f472ec01 100644 --- a/resources/src/jquery/jquery.tablesorter.less +++ b/resources/src/jquery/jquery.tablesorter.less @@ -1,4 +1,4 @@ -@import "mediawiki.mixins"; +@import 'mediawiki.mixins'; /* Table Sorting */ diff --git a/resources/src/jquery/jquery.textSelection.js b/resources/src/jquery/jquery.textSelection.js index c897302c6c..c6ad945a1a 100644 --- a/resources/src/jquery/jquery.textSelection.js +++ b/resources/src/jquery/jquery.textSelection.js @@ -4,7 +4,7 @@ ( function ( $ ) { if ( document.selection && document.selection.createRange ) { // On IE, patch the focus() method to restore the windows' scroll position - // (bug 32241) + // (T34241) $.fn.extend( { focus: ( function ( jqFocus ) { return function () { @@ -56,7 +56,7 @@ */ function activateElementOnIE( element ) { if ( element.setActive ) { - element.setActive(); // bug 32241: doesn't scroll + element.setActive(); // T34241: doesn't scroll } else { $( element ).focus(); // may scroll (but we patched it above) } @@ -172,7 +172,7 @@ // IE // Note that IE9 will trigger the next section unless we check this first. - // See bug 35201. + // See bug T37201. activateElementOnIE( this ); if ( context ) { @@ -312,7 +312,7 @@ // IE doesn't properly report non-selected caret position through // the selection ranges when textarea isn't focused. This can // lead to saving a bogus empty selection, which then screws up - // whatever we do later (bug 31847). + // whatever we do later (T33847). activateElementOnIE( e ); preFinished = false; diff --git a/resources/src/mediawiki.action/mediawiki.action.edit.collapsibleFooter.js b/resources/src/mediawiki.action/mediawiki.action.edit.collapsibleFooter.js index 011f9c55ef..938962f37d 100644 --- a/resources/src/mediawiki.action/mediawiki.action.edit.collapsibleFooter.js +++ b/resources/src/mediawiki.action/mediawiki.action.edit.collapsibleFooter.js @@ -2,27 +2,31 @@ var collapsibleLists, handleOne; // Collapsible lists of categories and templates + // If changing or removing a storeKey, ensure there is a strategy for old keys. + // E.g. detect existence via requestIdleCallback and remove. (T121646) collapsibleLists = [ { listSel: '.templatesUsed ul', togglerSel: '.mw-templatesUsedExplanation', - cookieName: 'templates-used-list' + storeKey: 'mwedit-state-templatesUsed' }, { listSel: '.hiddencats ul', togglerSel: '.mw-hiddenCategoriesExplanation', - cookieName: 'hidden-categories-list' + storeKey: 'mwedit-state-hiddenCategories' }, { listSel: '.preview-limit-report-wrapper', togglerSel: '.mw-limitReportExplanation', - cookieName: 'preview-limit-report' + storeKey: 'mwedit-state-limitReport' } ]; - handleOne = function ( $list, $toggler, cookieName ) { - // Collapsed by default - var isCollapsed = mw.cookie.get( cookieName ) !== 'expanded'; + handleOne = function ( $list, $toggler, storeKey ) { + var collapsedVal = '0', + expandedVal = '1', + // Default to collapsed if not set + isCollapsed = mw.storage.get( storeKey ) !== expandedVal; // Style the toggler with an arrow icon and add a tabIndex and a role for accessibility $toggler.addClass( 'mw-editfooter-toggler' ).prop( 'tabIndex', 0 ).attr( 'role', 'button' ); @@ -39,12 +43,12 @@ $list.on( 'beforeExpand.mw-collapsible', function () { $toggler.removeClass( 'mw-icon-arrow-collapsed' ).addClass( 'mw-icon-arrow-expanded' ); - mw.cookie.set( cookieName, 'expanded' ); + mw.storage.set( storeKey, expandedVal ); } ); $list.on( 'beforeCollapse.mw-collapsible', function () { $toggler.removeClass( 'mw-icon-arrow-expanded' ).addClass( 'mw-icon-arrow-collapsed' ); - mw.cookie.set( cookieName, 'collapsed' ); + mw.storage.set( storeKey, collapsedVal ); } ); }; @@ -55,7 +59,7 @@ handleOne( $editForm.find( collapsibleLists[ i ].listSel ), $editForm.find( collapsibleLists[ i ].togglerSel ), - collapsibleLists[ i ].cookieName + collapsibleLists[ i ].storeKey ); } } ); diff --git a/resources/src/mediawiki.action/mediawiki.action.edit.css b/resources/src/mediawiki.action/mediawiki.action.edit.css index 9b0c430c68..f68dbfafef 100644 --- a/resources/src/mediawiki.action/mediawiki.action.edit.css +++ b/resources/src/mediawiki.action/mediawiki.action.edit.css @@ -11,5 +11,5 @@ display: inline-block; /* IE7 */ zoom: 1; - *display: inline; + *display: inline; /* stylelint-disable declaration-block-no-duplicate-properties */ } diff --git a/resources/src/mediawiki.action/mediawiki.action.edit.preview.js b/resources/src/mediawiki.action/mediawiki.action.edit.preview.js index f26c336da1..15d0a39584 100644 --- a/resources/src/mediawiki.action/mediawiki.action.edit.preview.js +++ b/resources/src/mediawiki.action/mediawiki.action.edit.preview.js @@ -323,7 +323,7 @@ // This should be moved down to '#editform', but is kept on the body for now // because the LiquidThreads extension is re-using this module with only half - // the EditPage (doesn't include #editform presumably, bug 55463). + // the EditPage (doesn't include #editform presumably, T57463). $( document.body ).on( 'click', '#wpPreview, #wpDiff', doLivePreview ); } ); diff --git a/resources/src/mediawiki.action/mediawiki.action.edit.stash.js b/resources/src/mediawiki.action/mediawiki.action.edit.stash.js index 7e966eabe1..31c22af244 100644 --- a/resources/src/mediawiki.action/mediawiki.action.edit.stash.js +++ b/resources/src/mediawiki.action/mediawiki.action.edit.stash.js @@ -59,6 +59,7 @@ } params = { + formatversion: 2, action: 'stashedit', title: mw.config.get( 'wgPageName' ), section: section, diff --git a/resources/src/mediawiki.action/mediawiki.action.edit.styles.css b/resources/src/mediawiki.action/mediawiki.action.edit.styles.css index 0ee40582cb..d22823609b 100644 --- a/resources/src/mediawiki.action/mediawiki.action.edit.styles.css +++ b/resources/src/mediawiki.action/mediawiki.action.edit.styles.css @@ -6,6 +6,10 @@ #wpTextbox1 { margin: 0; display: block; + /* Ensure the textarea is not higher than browser's viewport on small screens */ + max-height: 100vh; + /* But don't let it collapse into nothingness on really tiny screens */ + min-height: 5em; } /* Adjustments to edit form elements */ @@ -25,14 +29,33 @@ font-size: 0.9em; } -#wpSummary { +input#wpSummary { display: block; + background-color: #fff; + color: #000; + width: 80%; margin-top: 0; - margin-bottom: 0.5em; + margin-bottom: 1em; + padding: 0.625em 0.546875em 0.546875em; + border: 1px solid #a2a9b1; + border-radius: 2px; + box-shadow: inset 0 0 0 1px #fff; + font-family: inherit; + font-size: inherit; + -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 ); +} + +input#wpSummary:focus, +input#wpSummary:active { + outline: 0; + border-color: #36c; + box-shadow: inset 0 0 0 1px #36c; } .editButtons input:first-child { - margin-left: .1em; + margin-left: 0.1em; } /* diff --git a/resources/src/mediawiki.action/mediawiki.action.history.css b/resources/src/mediawiki.action/mediawiki.action.history.css index fd5dbc97d6..f3ea1639eb 100644 --- a/resources/src/mediawiki.action/mediawiki.action.history.css +++ b/resources/src/mediawiki.action/mediawiki.action.history.css @@ -1,6 +1,6 @@ /* Styles for the JavaScript enhancements of the history page */ -#pagehistory li.before input[name="oldid"], -#pagehistory li.after input[name="diff"] { +#pagehistory li.before input[name='oldid'], +#pagehistory li.after input[name='diff'] { visibility: hidden; } diff --git a/resources/src/mediawiki.action/mediawiki.action.view.categoryPage.less b/resources/src/mediawiki.action/mediawiki.action.view.categoryPage.less index ff2591347e..83cc207b47 100644 --- a/resources/src/mediawiki.action/mediawiki.action.view.categoryPage.less +++ b/resources/src/mediawiki.action/mediawiki.action.view.categoryPage.less @@ -1,4 +1,4 @@ -@import "mediawiki.mixins"; +@import 'mediawiki.mixins'; .mw-category { .column-count(3); diff --git a/resources/src/mediawiki.action/mediawiki.action.view.dblClickEdit.js b/resources/src/mediawiki.action/mediawiki.action.view.dblClickEdit.js index 7439754668..d89cd4a2d0 100644 --- a/resources/src/mediawiki.action/mediawiki.action.view.dblClickEdit.js +++ b/resources/src/mediawiki.action/mediawiki.action.view.dblClickEdit.js @@ -8,9 +8,9 @@ // Recheck preference so extensions can do a hack to disable this code. if ( parseInt( mw.user.options.get( 'editondblclick' ), 10 ) ) { e.preventDefault(); - // Trigger native HTMLElement click instead of opening URL (bug 43052) + // Trigger native HTMLElement click instead of opening URL (T45052) $a = $( '#ca-edit a' ); - // Not every page has an edit link (bug 57713) + // Not every page has an edit link (T59713) if ( $a.length ) { $a.get( 0 ).click(); } diff --git a/resources/src/mediawiki.action/mediawiki.action.view.filepage.css b/resources/src/mediawiki.action/mediawiki.action.view.filepage.css index 1f0365eced..d4662161fc 100644 --- a/resources/src/mediawiki.action/mediawiki.action.view.filepage.css +++ b/resources/src/mediawiki.action/mediawiki.action.view.filepage.css @@ -33,7 +33,7 @@ /* * Add a checkered background image on hover for file - * description pages. (bug 26470) + * description pages. (T28470) */ .filehistory a img, #file img:hover { @@ -76,6 +76,8 @@ font-size: 0.8em; margin-left: 0.5em; margin-bottom: 0.5em; + border: 0; + border-collapse: collapse; width: 400px; } @@ -83,20 +85,6 @@ font-weight: bold; } -.mw_metadata th { - font-weight: normal; - text-align: center; -} - -.mw_metadata td { - padding: 0.1em; -} - -.mw_metadata { - border: none; - border-collapse: collapse; -} - .mw_metadata td, .mw_metadata th { border: 1px solid #a2a9b1; @@ -106,10 +94,14 @@ .mw_metadata th { background-color: #f8f9fa; + font-weight: normal; + text-align: center; } .mw_metadata td { background-color: #fcfcfc; + padding-top: 0.1em; + padding-bottom: 0.1em; } .mw_metadata ul.metadata-langlist { diff --git a/resources/src/mediawiki.action/mediawiki.action.view.postEdit.css b/resources/src/mediawiki.action/mediawiki.action.view.postEdit.css index 9a8edef645..a5ca65eebe 100644 --- a/resources/src/mediawiki.action/mediawiki.action.view.postEdit.css +++ b/resources/src/mediawiki.action/mediawiki.action.view.postEdit.css @@ -16,7 +16,7 @@ position: relative; top: 0.6em; left: -50%; - padding: .6em 3.6em .6em 1.1em; + padding: 0.6em 3.6em 0.6em 1.1em; line-height: 1.5625em; color: #626465; background-color: #f4f4f4; @@ -32,7 +32,7 @@ } .skin-monobook .postedit { - top: 6em !important; + top: 6em !important; /* stylelint-disable-line declaration-no-important */ } .postedit-faded { @@ -55,7 +55,7 @@ .postedit-close { position: absolute; - padding: 0 .8em; + padding: 0 0.8em; right: 0; top: 0; font-size: 1.25em; diff --git a/resources/src/mediawiki.action/mediawiki.action.view.redirectPage.css b/resources/src/mediawiki.action/mediawiki.action.view.redirectPage.css index b791db80a8..dccbaccef4 100644 --- a/resources/src/mediawiki.action/mediawiki.action.view.redirectPage.css +++ b/resources/src/mediawiki.action/mediawiki.action.view.redirectPage.css @@ -13,9 +13,11 @@ list-style: none none; display: inline; /* shared.css has some very weird directionality-specific rules for 'ul' we need to override, - search for "Correct directionality when page dir is different from site/user dir" */ + * search for "Correct directionality when page dir is different from site/user dir" */ + /* stylelint-disable declaration-no-important */ margin: 0 !important; padding: 0 !important; + /* stylelint-enable declaration-no-important */ } /* @noflip */ diff --git a/resources/src/mediawiki.action/mediawiki.action.view.rightClickEdit.js b/resources/src/mediawiki.action/mediawiki.action.view.rightClickEdit.js index ada101eb16..ebd1ebccdf 100644 --- a/resources/src/mediawiki.action/mediawiki.action.view.rightClickEdit.js +++ b/resources/src/mediawiki.action/mediawiki.action.view.rightClickEdit.js @@ -18,7 +18,7 @@ jQuery( function ( $ ) { // inside the heading (e.g. to do things like copy URL, open in new tab, ..). // e.target can be the heading, but it can also be anything inside the heading. if ( e.target.nodeName.toLowerCase() !== 'a' ) { - // Trigger native HTMLElement click instead of opening URL (bug 43052) + // Trigger native HTMLElement click instead of opening URL (T45052) e.preventDefault(); $edit.get( 0 ).click(); } diff --git a/resources/src/mediawiki.legacy/commonPrint.css b/resources/src/mediawiki.legacy/commonPrint.css index ec94df34e4..e3e80d858c 100644 --- a/resources/src/mediawiki.legacy/commonPrint.css +++ b/resources/src/mediawiki.legacy/commonPrint.css @@ -99,26 +99,26 @@ img { * MediaWiki-specific elements */ #globalWrapper { - width: 100% !important; - min-width: 0 !important; + width: 100% !important; /* stylelint-disable-line declaration-no-important */ + min-width: 0 !important; /* stylelint-disable-line declaration-no-important */ } .mw-body { background: #fff; color: #000; - border: 0 !important; - padding: 0 !important; - margin: 0 !important; + border: 0 !important; /* stylelint-disable-line declaration-no-important */ + padding: 0 !important; /* stylelint-disable-line declaration-no-important */ + margin: 0 !important; /* stylelint-disable-line declaration-no-important */ direction: ltr; } #column-content { - margin: 0 !important; + margin: 0 !important; /* stylelint-disable-line declaration-no-important */ } #column-content .mw-body { padding: 1em; - margin: 0 !important; + margin: 0 !important; /* stylelint-disable-line declaration-no-important */ } #toc { @@ -164,40 +164,34 @@ img { * Links */ a { - background: none !important; - padding: 0 !important; + background: none !important; /* stylelint-disable-line declaration-no-important */ + padding: 0 !important; /* stylelint-disable-line declaration-no-important */ } /* Expand URLs for printing */ -.mw-body a.external.text:after, -.mw-body a.external.autonumber:after { - content: " (" attr( href ) ")"; +.mw-body-content a.external.text:after, +.mw-body-content a.external.autonumber:after { + content: ' (' attr( href ) ')'; word-break: break-all; word-wrap: break-word; } /* Expand protocol-relative URLs for printing */ -.mw-body a.external.text[href^='//']:after, -.mw-body a.external.autonumber[href^='//']:after { - content: " (https:" attr( href ) ")"; +.mw-body-content a.external.text[href^='//']:after, +.mw-body-content a.external.autonumber[href^='//']:after { + content: ' (https:' attr( href ) ')'; } -/* MSIE/Win doesn't understand 'inherit' */ a, a.external, a.new, a.stub { - color: #000 !important; - text-decoration: none !important; -} - -/* Continue ... */ -a, -a.external, -a.new, -a.stub { - color: inherit !important; - text-decoration: inherit !important; + /* IE 6 & 7 don't understand `inherit` */ + color: #000 !important; /* stylelint-disable-line declaration-no-important */ + text-decoration: none !important; /* stylelint-disable-line declaration-no-important */ + /* Modern browser will apply this, IE 6 & 7 ignore the unknown */ + color: inherit !important; /* stylelint-disable-line declaration-block-no-duplicate-properties, declaration-no-important */ + text-decoration: inherit !important; /* stylelint-disable-line declaration-block-no-duplicate-properties, declaration-no-important */ } /** @@ -258,7 +252,7 @@ html .thumbimage { } html .thumbcaption { - border: none; + border: 0; text-align: left; line-height: 1.4em; padding: 3px; @@ -336,13 +330,13 @@ table.listing td { .catlinks li { display: inline-block; line-height: 1.15em; - padding: 0 .4em; + padding: 0 0.4em; border-left: 1pt solid #aaa; margin: 0.1em 0; } .catlinks li:first-child { - padding-left: .2em; + padding-left: 0.2em; border-left: 0; } diff --git a/resources/src/mediawiki.legacy/oldshared.css b/resources/src/mediawiki.legacy/oldshared.css index 4daf77f262..7c4dbb1ce7 100644 --- a/resources/src/mediawiki.legacy/oldshared.css +++ b/resources/src/mediawiki.legacy/oldshared.css @@ -32,7 +32,12 @@ h6 { font-size: 1em; } -h1, h2, h3, h4, h5, h6 { +h1, +h2, +h3, +h4, +h5, +h6 { font-weight: bolder; } @@ -78,7 +83,7 @@ table.rimage { /* thumbnails */ div.thumb { - margin-bottom: .5em; + margin-bottom: 0.5em; border-style: solid; border-color: #fff; width: auto; @@ -100,7 +105,7 @@ html .thumbimage { } html .thumbcaption { - border: none; + border: 0; line-height: 1.4em; padding: 3px; font-size: 94%; @@ -136,15 +141,15 @@ div.magnify a { div.tright { clear: right; float: right; - border-width: .5em 0 .8em 1.4em; + border-width: 0.5em 0 0.8em 1.4em; } /* @noflip */ div.tleft { float: left; clear: left; - margin-right: .5em; - border-width: .5em 1.4em .8em 0; + margin-right: 0.5em; + border-width: 0.5em 1.4em 0.8em 0; } img.thumbborder { @@ -158,14 +163,14 @@ img.thumbborder { } img { - border: none; + border: 0; } #toc, .toc { border: 1px solid #bba; background-color: #f7f8ff; - padding: 5px; + padding: 7px; font-size: 95%; text-align: center; display: inline-block; @@ -173,9 +178,7 @@ img { /* IE7 and earlier */ zoom: 1; - *display: inline; - - padding: 7px; + *display: inline; /* stylelint-disable-line declaration-block-no-duplicate-properties */ } /* CSS for backwards-compatibility with cached page renders and creative uses in wikitext */ @@ -193,7 +196,7 @@ table.toc td { #toc h2, .toc h2 { display: inline; - border: none; + border: 0; padding: 0; font-size: 100%; font-weight: bold; @@ -308,9 +311,7 @@ span.comment { } .editExternally { - border-style: solid; - border-width: 1px; - border-color: #808080; + border: 1px solid #808080; background: #fff; padding: 3px; margin-top: 0.5em; @@ -333,25 +334,14 @@ li span.deleted { /* Classes for Exif data display */ table.mw_metadata { margin-left: 0.5em; + border: 0; + border-collapse: collapse; } table.mw_metadata caption { font-weight: bold; } -table.mw_metadata th { - font-weight: normal; -} - -table.mw_metadata td { - padding: 0.1em; -} - -table.mw_metadata { - border: none; - border-collapse: collapse; -} - table.mw_metadata td, table.mw_metadata th { border: 1px solid #aaa; @@ -361,16 +351,18 @@ table.mw_metadata th { table.mw_metadata th { background-color: #f9f9f9; + font-weight: normal; } table.mw_metadata td { background-color: #fcfcfc; + padding-top: 0.1em; + padding-bottom: 0.1em; } table.mw_metadata td.spacer { background: inherit; - border-top: none; - border-bottom: none; + border-width: 0 1px; } .visualClear { @@ -399,14 +391,14 @@ table.mw_metadata td.spacer { } div.multipageimagenavbox { - border: solid 1px #c0c0c0; + border: 1px solid #c0c0c0; padding: 4px; margin: 1em; background: #f0f0f0; } div.multipageimagenavbox div.thumb { - border: none; + border: 0; margin-left: 2em; margin-right: 2em; } diff --git a/resources/src/mediawiki.legacy/shared.css b/resources/src/mediawiki.legacy/shared.css index befe957984..ff0c0e3625 100644 --- a/resources/src/mediawiki.legacy/shared.css +++ b/resources/src/mediawiki.legacy/shared.css @@ -56,22 +56,22 @@ wbr { /* Input types that should follow user direction, like buttons */ /* TODO: What about buttons in wikipage content ? */ -input[type="submit"], -input[type="button"], -input[type="reset"], -input[type="file"] { +input[type='submit'], +input[type='button'], +input[type='reset'], +input[type='file'] { direction: ltr; } /* Override default values */ -textarea[dir="ltr"], -input[dir="ltr"] { +textarea[dir='ltr'], +input[dir='ltr'] { /* @noflip */ direction: ltr; } -textarea[dir="rtl"], -input[dir="rtl"] { +textarea[dir='rtl'], +input[dir='rtl'] { /* @noflip */ direction: rtl; } @@ -83,10 +83,10 @@ abbr[title], cursor: help; } -@supports (text-decoration: underline dotted) { +@supports ( text-decoration: underline dotted ) { abbr[title], .explain[title] { - border-bottom: none; + border-bottom: 0; text-decoration: underline dotted; } } @@ -166,6 +166,7 @@ div.patrollink { */ td.mw-label { text-align: right; + vertical-align: middle; } td.mw-input { @@ -174,21 +175,9 @@ td.mw-input { td.mw-submit { text-align: left; -} - -td.mw-label { - vertical-align: middle; -} - -td.mw-submit { white-space: nowrap; } -input#wpSummary { - width: 80%; - margin-bottom: 1em; -} - .mw-input-with-label { white-space: nowrap; display: inline-block; @@ -226,7 +215,7 @@ input#wpSummary { #catlinks { /** * Overrides text justification (user preference) - * See bug 31990 + * See T33990 */ text-align: left; } @@ -248,15 +237,15 @@ input#wpSummary { margin: 0.125em 0; padding: 0 0.5em; zoom: 1; - display: inline !ie; + display: inline !ie; /* stylelint-disable-line declaration-block-no-duplicate-properties */ } .catlinks li:first-child { padding-left: 0.25em; - border-left: none; + border-left: 0; } -/* (bug 5346) make category redirects italic */ +/* (T7346) make category redirects italic */ .catlinks li a.mw-redirect { font-style: italic; } @@ -328,7 +317,7 @@ th.mw-revdel-checkbox { text-align: center; } -/* red links; see bug 36276 */ +/* red links; see T38276 */ a.new { color: #ba0000; } @@ -336,11 +325,11 @@ a.new { /* Plainlinks - this can be used to switch * off special external link styling */ .plainlinks a.external { - background: none !important; - padding: 0 !important; + background: none !important; /* stylelint-disable-line declaration-no-important */ + padding: 0 !important; /* stylelint-disable-line declaration-no-important */ } -/* External URLs should always be treated as LTR (bug 4330) */ +/* External URLs should always be treated as LTR (T6330) */ /* @noflip */ .rtl a.external.free, .rtl a.external.autonumber { direction: ltr; @@ -400,11 +389,11 @@ table.wikitable > caption { .warningbox, .successbox { border: 1px solid; - padding: .5em 1em; + padding: 0.5em 1em; margin-bottom: 1em; display: inline-block; zoom: 1; - *display: inline; + *display: inline; /* stylelint-disable-line declaration-block-no-duplicate-properties */ } .errorbox h2, @@ -414,8 +403,8 @@ table.wikitable > caption { color: inherit; font-weight: bold; display: inline; - margin: 0 .5em 0 0; - border: none; + margin: 0 0.5em 0 0; + border: 0; } .errorbox { @@ -551,103 +540,106 @@ table.wikitable > caption { } .mw-small-spinner { - padding: 10px !important; + padding: 10px !important; /* stylelint-disable-line declaration-no-important */ margin-right: 0.6em; background-image: url( images/spinner.gif ); background-position: center center; background-repeat: no-repeat; } -/* Language specific height correction for titles. Ref Bug 29405 and Bug 30809 */ +/* Language specific height correction for titles. Ref T31405 and T32809 */ /* Languages like hi or ml require slightly more vertical space to show diacritics properly */ -h1:lang(anp), -h1:lang(as), -h1:lang(bh), /* Macrolanguage, used on bh.wikipedia.org, should be removed one day */ -h1:lang(bho), -h1:lang(bn), -h1:lang(gu), -h1:lang(hi), -h1:lang(kn), -h1:lang(ks), -h1:lang(ml), -h1:lang(mr), -h1:lang(my), -h1:lang(mai), -h1:lang(ne), -h1:lang(new), -h1:lang(or), -h1:lang(pa), -h1:lang(pi), -h1:lang(sa), -h1:lang(ta), -h1:lang(te) { - line-height: 1.6em !important; -} - -h2:lang(anp), h3:lang(anp), h4:lang(anp), h5:lang(anp), h6:lang(anp), -h2:lang(as), h3:lang(as), h4:lang(as), h5:lang(as), h6:lang(as), -h2:lang(bho), h3:lang(bho), h4:lang(bho), h5:lang(bho), h6:lang(bho), -h2:lang(bh), h3:lang(bh), h4:lang(bh), h5:lang(bh), h6:lang(bh), -h2:lang(bn), h3:lang(bn), h4:lang(bn), h5:lang(bn), h6:lang(bn), -h2:lang(gu), h3:lang(gu), h4:lang(gu), h5:lang(gu), h6:lang(gu), -h2:lang(hi), h3:lang(hi), h4:lang(hi), h5:lang(hi), h6:lang(hi), -h2:lang(kn), h3:lang(kn), h4:lang(kn), h5:lang(kn), h6:lang(kn), -h2:lang(ks), h3:lang(ks), h4:lang(ks), h5:lang(ks), h6:lang(ks), -h2:lang(ml), h3:lang(ml), h4:lang(ml), h5:lang(ml), h6:lang(ml), -h2:lang(mr), h3:lang(mr), h4:lang(mr), h5:lang(mr), h6:lang(mr), -h2:lang(my), h3:lang(my), h4:lang(my), h5:lang(my), h6:lang(my), -h2:lang(mai), h3:lang(mai), h4:lang(mai), h5:lang(mai), h6:lang(mai), -h2:lang(ne), h3:lang(ne), h4:lang(ne), h5:lang(ne), h6:lang(ne), -h2:lang(new), h3:lang(new), h4:lang(new), h5:lang(new), h6:lang(new), -h2:lang(or), h3:lang(or), h4:lang(or), h5:lang(or), h6:lang(or), -h2:lang(pa), h3:lang(pa), h4:lang(pa), h5:lang(pa), h6:lang(pa), -h2:lang(pi), h3:lang(pi), h4:lang(pi), h5:lang(pi), h6:lang(pi), -h2:lang(sa), h3:lang(sa), h4:lang(sa), h5:lang(sa), h6:lang(sa), -h2:lang(ta), h3:lang(ta), h4:lang(ta), h5:lang(ta), h6:lang(ta), -h2:lang(te), h3:lang(te), h4:lang(te), h5:lang(te), h6:lang(te) { +h1:lang( anp ), +h1:lang( as ), +h1:lang( bh ), /* Macrolanguage, used on bh.wikipedia.org, should be removed one day */ +h1:lang( bho ), +h1:lang( bn ), +h1:lang( gu ), +h1:lang( hi ), +h1:lang( kn ), +h1:lang( ks ), +h1:lang( ml ), +h1:lang( mr ), +h1:lang( my ), +h1:lang( mai ), +h1:lang( ne ), +h1:lang( new ), +h1:lang( or ), +h1:lang( pa ), +h1:lang( pi ), +h1:lang( sa ), +h1:lang( ta ), +h1:lang( te ) { + line-height: 1.6em !important; /* stylelint-disable-line declaration-no-important */ +} + +/* stylelint-disable selector-list-comma-newline-after */ +h2:lang( anp ), h3:lang( anp ), h4:lang( anp ), h5:lang( anp ), h6:lang( anp ), +h2:lang( as ), h3:lang( as ), h4:lang( as ), h5:lang( as ), h6:lang( as ), +h2:lang( bho ), h3:lang( bho ), h4:lang( bho ), h5:lang( bho ), h6:lang( bho ), +h2:lang( bh ), h3:lang( bh ), h4:lang( bh ), h5:lang( bh ), h6:lang( bh ), +h2:lang( bn ), h3:lang( bn ), h4:lang( bn ), h5:lang( bn ), h6:lang( bn ), +h2:lang( gu ), h3:lang( gu ), h4:lang( gu ), h5:lang( gu ), h6:lang( gu ), +h2:lang( hi ), h3:lang( hi ), h4:lang( hi ), h5:lang( hi ), h6:lang( hi ), +h2:lang( kn ), h3:lang( kn ), h4:lang( kn ), h5:lang( kn ), h6:lang( kn ), +h2:lang( ks ), h3:lang( ks ), h4:lang( ks ), h5:lang( ks ), h6:lang( ks ), +h2:lang( ml ), h3:lang( ml ), h4:lang( ml ), h5:lang( ml ), h6:lang( ml ), +h2:lang( mr ), h3:lang( mr ), h4:lang( mr ), h5:lang( mr ), h6:lang( mr ), +h2:lang( my ), h3:lang( my ), h4:lang( my ), h5:lang( my ), h6:lang( my ), +h2:lang( mai ), h3:lang( mai ), h4:lang( mai ), h5:lang( mai ), h6:lang( mai ), +h2:lang( ne ), h3:lang( ne ), h4:lang( ne ), h5:lang( ne ), h6:lang( ne ), +h2:lang( new ), h3:lang( new ), h4:lang( new ), h5:lang( new ), h6:lang( new ), +h2:lang( or ), h3:lang( or ), h4:lang( or ), h5:lang( or ), h6:lang( or ), +h2:lang( pa ), h3:lang( pa ), h4:lang( pa ), h5:lang( pa ), h6:lang( pa ), +h2:lang( pi ), h3:lang( pi ), h4:lang( pi ), h5:lang( pi ), h6:lang( pi ), +h2:lang( sa ), h3:lang( sa ), h4:lang( sa ), h5:lang( sa ), h6:lang( sa ), +h2:lang( ta ), h3:lang( ta ), h4:lang( ta ), h5:lang( ta ), h6:lang( ta ), +h2:lang( te ), h3:lang( te ), h4:lang( te ), h5:lang( te ), h6:lang( te ) { line-height: 1.2em; } +/* stylelint-enable selector-list-comma-newline-after */ /* Localised ordered list numbering for some languages */ -ol:lang(azb) li, -ol:lang(bcc) li, -ol:lang(bgn) li, -ol:lang(bqi) li, -ol:lang(fa) li, -ol:lang(glk) li, -ol:lang(kk-arab) li, -ol:lang(lrc) li, -ol:lang(luz) li, -ol:lang(mzn) li { +ol:lang( azb ) li, +ol:lang( bcc ) li, +ol:lang( bgn ) li, +ol:lang( bqi ) li, +ol:lang( fa ) li, +ol:lang( glk ) li, +ol:lang( kk-arab ) li, +ol:lang( lrc ) li, +ol:lang( luz ) li, +ol:lang( mzn ) li { list-style-type: -moz-persian; list-style-type: persian; } -ol:lang(ckb) li, -ol:lang(sdh) li { +ol:lang( ckb ) li, +ol:lang( sdh ) li { list-style-type: -moz-arabic-indic; list-style-type: arabic-indic; } -ol:lang(hi) li, -ol:lang(mr) li { +ol:lang( hi ) li, +ol:lang( mr ) li { list-style-type: -moz-devanagari; list-style-type: devanagari; } -ol:lang(as) li, -ol:lang(bn) li { +ol:lang( as ) li, +ol:lang( bn ) li { list-style-type: -moz-bengali; list-style-type: bengali; } -ol:lang(or) li { +ol:lang( or ) li { list-style-type: -moz-oriya; list-style-type: oriya; } -#toc ul, .toc ul { - margin: .3em 0; +#toc ul, +.toc ul { + margin: 0.3em 0; } /* Correct directionality when page dir is different from site/user dir */ @@ -724,7 +716,7 @@ table.floatleft { position: relative; } -/* bug 12205 */ +/* T14205 */ #mw-credits a { unicode-bidi: embed; } diff --git a/resources/src/mediawiki.less/mediawiki.mixins.animation.less b/resources/src/mediawiki.less/mediawiki.mixins.animation.less index fd615b7a6b..651a018cd6 100644 --- a/resources/src/mediawiki.less/mediawiki.mixins.animation.less +++ b/resources/src/mediawiki.less/mediawiki.mixins.animation.less @@ -9,4 +9,4 @@ -webkit-transform: rotate( @deg ); -moz-transform: rotate( @deg ); transform: rotate( @deg ); -} \ No newline at end of file +} diff --git a/resources/src/mediawiki.less/mediawiki.mixins.less b/resources/src/mediawiki.less/mediawiki.mixins.less index 3535be8b8c..1e952b0c87 100644 --- a/resources/src/mediawiki.less/mediawiki.mixins.less +++ b/resources/src/mediawiki.less/mediawiki.mixins.less @@ -1,7 +1,7 @@ // Common Less mixin library for MediaWiki // // By default the folder containing this file is included in $wgResourceLoaderLESSImportPaths, -// which makes this file importable by all less files via '@import "mediawiki.mixins";'. +// which makes this file importable by all less files via `@import 'mediawiki.mixins';`. // // The mixins included below are considered a public interface for MediaWiki extensions. // The signatures of parametrized mixins should be kept as stable as possible. @@ -88,12 +88,19 @@ } .flex-display( @display: flex ) { - display: ~"-webkit-@{display}"; // iOS 6-, Safari 3.1-6 - display: ~"-moz-@{display}"; // Firefox 21- - display: ~"-ms-@{display}box"; // IE 10 + display: ~'-webkit-@{display}'; // iOS 6-, Safari 3.1-6 + display: ~'-moz-@{display}'; // Firefox 21- + display: ~'-ms-@{display}box'; // IE 10 display: @display; } +.flex-wrap( @wrap: wrap ) { + -webkit-flex-wrap: @wrap; // iOS 6-, Safari 3.1-6 + -moz-flex-wrap: @wrap; // Firefox 21- + -ms-flex-wrap: @wrap; // IE 10 + flex-wrap: @wrap; +} + .flex( @grow: 1, @shrink: 1, @width: auto, @order: 1 ) { // For 2009/2012 spec alignment consistency with current default -webkit-box-pack: justify; // iOS 6-, Safari 3.1-6 @@ -116,11 +123,39 @@ order: @order; } +/* stylelint-disable selector-no-vendor-prefix, at-rule-no-unknown */ +.mixin-placeholder( @rules ) { + // WebKit, Blink, Edge + &::-webkit-input-placeholder { + @rules(); + } + // Internet Explorer 10-11 + &:-ms-input-placeholder { + @rules(); + } + // Firefox 19- + &::-moz-placeholder { + @rules(); + } + // Firefox 4-18 + &:-moz-placeholder { + @rules(); + } + // W3C Standard Selectors Level 4 + &::placeholder { + @rules(); + } + // For inputs that use jquery.placeholder.js e.g. IE9 + &.placeholder { + @rules(); + } +} +/* stylelint-enable selector-no-vendor-prefix, at-rule-no-unknown */ // Screen Reader Helper Mixin .mixin-screen-reader-text() { display: block; - position: absolute !important; + position: absolute !important; /* stylelint-disable-line declaration-no-important */ clip: rect( 1px, 1px, 1px, 1px ); width: 1px; height: 1px; diff --git a/resources/src/mediawiki.less/mediawiki.mixins.rotation.less b/resources/src/mediawiki.less/mediawiki.mixins.rotation.less index a40428680b..64d6b3d680 100644 --- a/resources/src/mediawiki.less/mediawiki.mixins.rotation.less +++ b/resources/src/mediawiki.less/mediawiki.mixins.rotation.less @@ -1,7 +1,7 @@ // This is a separate file because importing the mixin causes // the keyframes blocks to be included in the output, regardless // of whether .rotation is used. -@import "mediawiki.mixins.animation"; +@import 'mediawiki.mixins.animation'; .rotate-frames() { from { diff --git a/resources/src/mediawiki.less/mediawiki.ui/mixins.less b/resources/src/mediawiki.less/mediawiki.ui/mixins.less index 1bfa3a3582..a0ff76791c 100644 --- a/resources/src/mediawiki.less/mediawiki.ui/mixins.less +++ b/resources/src/mediawiki.less/mediawiki.ui/mixins.less @@ -17,8 +17,8 @@ line-height: normal; font-weight: normal; - & > input[type="checkbox"], - & > input[type="radio"] { + & > input[type='checkbox'], + & > input[type='radio'] { width: auto; height: auto; margin: 0 0.1em 0 0; diff --git a/resources/src/mediawiki.less/mediawiki.ui/variables.less b/resources/src/mediawiki.less/mediawiki.ui/variables.less index 9688f1f8fc..d4937c67ce 100644 --- a/resources/src/mediawiki.less/mediawiki.ui/variables.less +++ b/resources/src/mediawiki.less/mediawiki.ui/variables.less @@ -65,16 +65,3 @@ // Form input sizes @checkboxSize: 2em; @radioSize: 2em; - -// The following rules are deprecated -@colorWhite: #fff; -@colorOffWhite: #fafafa; -@colorGrayDark: #898989; -@colorGrayLight: #ccc; -@colorGrayLighter: #ddd; -@colorGrayLightest: #eee; -// Green; for contextual use of a positive finalizing action -@colorConstructive: #00af89; -@colorConstructiveHighlight: #1c6665; -@colorConstructiveActive: #134645; - diff --git a/resources/src/mediawiki.rcfilters/dm/mw.rcfilters.dm.ChangesListViewModel.js b/resources/src/mediawiki.rcfilters/dm/mw.rcfilters.dm.ChangesListViewModel.js new file mode 100644 index 0000000000..d6ce734caf --- /dev/null +++ b/resources/src/mediawiki.rcfilters/dm/mw.rcfilters.dm.ChangesListViewModel.js @@ -0,0 +1,60 @@ +( function ( mw ) { + /** + * View model for the changes list + * + * @mixins OO.EventEmitter + * + * @constructor + */ + mw.rcfilters.dm.ChangesListViewModel = function MwRcfiltersDmChangesListViewModel() { + // Mixin constructor + OO.EventEmitter.call( this ); + + this.valid = true; + }; + + /* Initialization */ + OO.initClass( mw.rcfilters.dm.ChangesListViewModel ); + OO.mixinClass( mw.rcfilters.dm.ChangesListViewModel, OO.EventEmitter ); + + /* Events */ + + /** + * @event invalidate + * + * The list of changes is now invalid (out of date) + */ + + /** + * @event update + * @param {jQuery|string} changesListContent + * + * The list of change is now up to date + */ + + /* Methods */ + + /** + * Invalidate the list of changes + * + * @fires invalidate + */ + mw.rcfilters.dm.ChangesListViewModel.prototype.invalidate = function () { + if ( this.valid ) { + this.valid = false; + this.emit( 'invalidate' ); + } + }; + + /** + * Update the model with an updated list of changes + * + * @param {jQuery|string} changesListContent + * @param {jQuery} $fieldset + */ + mw.rcfilters.dm.ChangesListViewModel.prototype.update = function ( changesListContent, $fieldset ) { + this.valid = true; + this.emit( 'update', changesListContent, $fieldset ); + }; + +}( mediaWiki ) ); diff --git a/resources/src/mediawiki.rcfilters/dm/mw.rcfilters.dm.FilterGroup.js b/resources/src/mediawiki.rcfilters/dm/mw.rcfilters.dm.FilterGroup.js new file mode 100644 index 0000000000..14a610b71e --- /dev/null +++ b/resources/src/mediawiki.rcfilters/dm/mw.rcfilters.dm.FilterGroup.js @@ -0,0 +1,183 @@ +( function ( mw ) { + /** + * View model for a filter group + * + * @mixins OO.EventEmitter + * @mixins OO.EmitterList + * + * @constructor + * @param {string} name Group name + * @param {Object} [config] Configuration options + * @cfg {string} [type='send_unselected_if_any'] Group type + * @cfg {string} [title] Group title + * @cfg {string} [separator='|'] Value separator for 'string_options' groups + * @cfg {boolean} [active] Group is active + * @cfg {boolean} [fullCoverage] This filters in this group collectively cover all results + */ + mw.rcfilters.dm.FilterGroup = function MwRcfiltersDmFilterGroup( name, config ) { + config = config || {}; + + // Mixin constructor + OO.EventEmitter.call( this ); + OO.EmitterList.call( this ); + + this.name = name; + this.type = config.type || 'send_unselected_if_any'; + this.title = config.title; + this.separator = config.separator || '|'; + + this.active = !!config.active; + this.fullCoverage = !!config.fullCoverage; + + this.aggregate( { update: 'filterItemUpdate' } ); + this.connect( this, { filterItemUpdate: 'onFilterItemUpdate' } ); + }; + + /* Initialization */ + OO.initClass( mw.rcfilters.dm.FilterGroup ); + OO.mixinClass( mw.rcfilters.dm.FilterGroup, OO.EventEmitter ); + OO.mixinClass( mw.rcfilters.dm.FilterGroup, OO.EmitterList ); + + /* Events */ + + /** + * @event update + * + * Group state has been updated + */ + + /* Methods */ + + /** + * Respond to filterItem update event + * + * @fires update + */ + mw.rcfilters.dm.FilterGroup.prototype.onFilterItemUpdate = function () { + // Update state + var active = this.areAnySelected(); + + if ( this.active !== active ) { + this.active = active; + this.emit( 'update' ); + } + }; + + /** + * Get group active state + * + * @return {boolean} Active state + */ + mw.rcfilters.dm.FilterGroup.prototype.isActive = function () { + return this.active; + }; + + /** + * Get group name + * + * @return {string} Group name + */ + mw.rcfilters.dm.FilterGroup.prototype.getName = function () { + return this.name; + }; + + /** + * Check whether there are any items selected + * + * @return {boolean} Any items in the group are selected + */ + mw.rcfilters.dm.FilterGroup.prototype.areAnySelected = function () { + return this.getItems().some( function ( filterItem ) { + return filterItem.isSelected(); + } ); + }; + + /** + * Check whether all items selected + * + * @return {boolean} All items are selected + */ + mw.rcfilters.dm.FilterGroup.prototype.areAllSelected = function () { + return this.getItems().every( function ( filterItem ) { + return filterItem.isSelected(); + } ); + }; + + /** + * Get all selected items in this group + * + * @param {mw.rcfilters.dm.FilterItem} [excludeItem] Item to exclude from the list + * @return {mw.rcfilters.dm.FilterItem[]} Selected items + */ + mw.rcfilters.dm.FilterGroup.prototype.getSelectedItems = function ( excludeItem ) { + var excludeName = ( excludeItem && excludeItem.getName() ) || ''; + + return this.getItems().filter( function ( item ) { + return item.getName() !== excludeName && item.isSelected(); + } ); + }; + + /** + * Check whether all selected items are in conflict with the given item + * + * @param {mw.rcfilters.dm.FilterItem} filterItem Filter item to test + * @return {boolean} All selected items are in conflict with this item + */ + mw.rcfilters.dm.FilterGroup.prototype.areAllSelectedInConflictWith = function ( filterItem ) { + var selectedItems = this.getSelectedItems( filterItem ); + + return selectedItems.length > 0 && selectedItems.every( function ( selectedFilter ) { + return selectedFilter.existsInConflicts( filterItem ); + } ); + }; + + /** + * Check whether any of the selected items are in conflict with the given item + * + * @param {mw.rcfilters.dm.FilterItem} filterItem Filter item to test + * @return {boolean} Any of the selected items are in conflict with this item + */ + mw.rcfilters.dm.FilterGroup.prototype.areAnySelectedInConflictWith = function ( filterItem ) { + var selectedItems = this.getSelectedItems( filterItem ); + + return selectedItems.length > 0 && selectedItems.some( function ( selectedFilter ) { + return selectedFilter.existsInConflicts( filterItem ); + } ); + }; + + /** + * Get group type + * + * @return {string} Group type + */ + mw.rcfilters.dm.FilterGroup.prototype.getType = function () { + return this.type; + }; + + /** + * Get group's title + * + * @return {string} Title + */ + mw.rcfilters.dm.FilterGroup.prototype.getTitle = function () { + return this.title; + }; + + /** + * Get group's values separator + * + * @return {string} Values separator + */ + mw.rcfilters.dm.FilterGroup.prototype.getSeparator = function () { + return this.separator; + }; + + /** + * Check whether the group is defined as full coverage + * + * @return {boolean} Group is full coverage + */ + mw.rcfilters.dm.FilterGroup.prototype.isFullCoverage = function () { + return this.fullCoverage; + }; +}( mediaWiki ) ); diff --git a/resources/src/mediawiki.rcfilters/dm/mw.rcfilters.dm.FilterItem.js b/resources/src/mediawiki.rcfilters/dm/mw.rcfilters.dm.FilterItem.js index 63db0ea68d..0df34f8f16 100644 --- a/resources/src/mediawiki.rcfilters/dm/mw.rcfilters.dm.FilterItem.js +++ b/resources/src/mediawiki.rcfilters/dm/mw.rcfilters.dm.FilterItem.js @@ -6,24 +6,46 @@ * * @constructor * @param {string} name Filter name + * @param {mw.rcfilters.dm.FilterGroup} groupModel Filter group model * @param {Object} config Configuration object * @cfg {string} [group] The group this item belongs to * @cfg {string} [label] The label for the filter * @cfg {string} [description] The description of the filter - * @cfg {boolean} [selected] Filter is selected + * @cfg {boolean} [active=true] The filter is active and affecting the result + * @cfg {string[]} [excludes=[]] A list of filter names this filter, if + * selected, makes inactive. + * @cfg {boolean} [selected] The item is selected + * @cfg {string[]} [subset] Defining the names of filters that are a subset of this filter + * @cfg {string[]} [conflictsWith] Defining the names of filters that conflict with this item + * @cfg {string} [cssClass] The class identifying the results that match this filter */ - mw.rcfilters.dm.FilterItem = function MwRcfiltersDmFilterItem( name, config ) { + mw.rcfilters.dm.FilterItem = function MwRcfiltersDmFilterItem( name, groupModel, config ) { config = config || {}; // Mixin constructor OO.EventEmitter.call( this ); this.name = name; - this.group = config.group || ''; + this.groupModel = groupModel; + this.label = config.label || this.name; this.description = config.description; - this.selected = !!config.selected; + + // Interaction definitions + this.subset = config.subset || []; + this.conflicts = config.conflicts || []; + this.superset = []; + + // Interaction states + this.included = false; + this.conflicted = false; + this.fullyCovered = false; + + // Highlight + this.cssClass = config.cssClass; + this.highlightColor = null; + this.highlightEnabled = false; }; /* Initialization */ @@ -41,6 +63,20 @@ /* Methods */ + /** + * Return the representation of the state of this item. + * + * @return {Object} State of the object + */ + mw.rcfilters.dm.FilterItem.prototype.getState = function () { + return { + selected: this.isSelected(), + included: this.isIncluded(), + conflicted: this.isConflicted(), + fullyCovered: this.isFullyCovered() + }; + }; + /** * Get the name of this filter * @@ -50,13 +86,22 @@ return this.name; }; + /** + * Get the model of the group this filter belongs to + * + * @return {mw.rcfilters.dm.FilterGroup} Filter group model + */ + mw.rcfilters.dm.FilterItem.prototype.getGroupModel = function () { + return this.groupModel; + }; + /** * Get the group name this filter belongs to * * @return {string} Filter group name */ - mw.rcfilters.dm.FilterItem.prototype.getGroup = function () { - return this.group; + mw.rcfilters.dm.FilterItem.prototype.getGroupName = function () { + return this.groupModel.getName(); }; /** @@ -77,6 +122,37 @@ return this.description; }; + /** + * Get the default value of this filter + * + * @return {boolean} Filter default + */ + mw.rcfilters.dm.FilterItem.prototype.getDefault = function () { + return this.default; + }; + + /** + * Get filter subset + * This is a list of filter names that are defined to be included + * when this filter is selected. + * + * @return {string[]} Filter subset + */ + mw.rcfilters.dm.FilterItem.prototype.getSubset = function () { + return this.subset; + }; + + /** + * Get filter superset + * This is a generated list of filters that define this filter + * to be included when either of them is selected. + * + * @return {string[]} Filter superset + */ + mw.rcfilters.dm.FilterItem.prototype.getSuperset = function () { + return this.superset; + }; + /** * Get the selected state of this filter * @@ -86,6 +162,116 @@ return this.selected; }; + /** + * Check whether the filter is currently in a conflict state + * + * @return {boolean} Filter is in conflict state + */ + mw.rcfilters.dm.FilterItem.prototype.isConflicted = function () { + return this.conflicted; + }; + + /** + * Check whether the filter is currently in an already included subset + * + * @return {boolean} Filter is in an already-included subset + */ + mw.rcfilters.dm.FilterItem.prototype.isIncluded = function () { + return this.included; + }; + + /** + * Check whether the filter is currently fully covered + * + * @return {boolean} Filter is in fully-covered state + */ + mw.rcfilters.dm.FilterItem.prototype.isFullyCovered = function () { + return this.fullyCovered; + }; + + /** + * Get filter conflicts + * + * @return {string[]} Filter conflicts + */ + mw.rcfilters.dm.FilterItem.prototype.getConflicts = function () { + return this.conflicts; + }; + + /** + * Set filter conflicts + * + * @param {string[]} conflicts Filter conflicts + */ + mw.rcfilters.dm.FilterItem.prototype.setConflicts = function ( conflicts ) { + this.conflicts = conflicts || []; + }; + + /** + * Set filter superset + * + * @param {string[]} superset Filter superset + */ + mw.rcfilters.dm.FilterItem.prototype.setSuperset = function ( superset ) { + this.superset = superset || []; + }; + + /** + * Check whether a filter exists in the subset list for this filter + * + * @param {string} filterName Filter name + * @return {boolean} Filter name is in the subset list + */ + mw.rcfilters.dm.FilterItem.prototype.existsInSubset = function ( filterName ) { + return this.subset.indexOf( filterName ) > -1; + }; + + /** + * Check whether this item has a potential conflict with the given item + * + * This checks whether the given item is in the list of conflicts of + * the current item, but makes no judgment about whether the conflict + * is currently at play (either one of the items may not be selected) + * + * @param {mw.rcfilters.dm.FilterItem} filterItem Filter item + * @return {boolean} This item has a conflict with the given item + */ + mw.rcfilters.dm.FilterItem.prototype.existsInConflicts = function ( filterItem ) { + return this.conflicts.indexOf( filterItem.getName() ) > -1; + }; + + /** + * Set the state of this filter as being conflicted + * (This means any filters in its conflicts are selected) + * + * @param {boolean} [conflicted] Filter is in conflict state + * @fires update + */ + mw.rcfilters.dm.FilterItem.prototype.toggleConflicted = function ( conflicted ) { + conflicted = conflicted === undefined ? !this.conflicted : conflicted; + + if ( this.conflicted !== conflicted ) { + this.conflicted = conflicted; + this.emit( 'update' ); + } + }; + + /** + * Set the state of this filter as being already included + * (This means any filters in its superset are selected) + * + * @param {boolean} [included] Filter is included as part of a subset + * @fires update + */ + mw.rcfilters.dm.FilterItem.prototype.toggleIncluded = function ( included ) { + included = included === undefined ? !this.included : included; + + if ( this.included !== included ) { + this.included = included; + this.emit( 'update' ); + } + }; + /** * Toggle the selected state of the item * @@ -100,4 +286,105 @@ this.emit( 'update' ); } }; + + /** + * Toggle the fully covered state of the item + * + * @param {boolean} [isFullyCovered] Filter is fully covered + * @fires update + */ + mw.rcfilters.dm.FilterItem.prototype.toggleFullyCovered = function ( isFullyCovered ) { + isFullyCovered = isFullyCovered === undefined ? !this.fullycovered : isFullyCovered; + + if ( this.fullyCovered !== isFullyCovered ) { + this.fullyCovered = isFullyCovered; + this.emit( 'update' ); + } + }; + + /** + * Set the highlight color + * + * @param {string|null} highlightColor + */ + mw.rcfilters.dm.FilterItem.prototype.setHighlightColor = function ( highlightColor ) { + if ( this.highlightColor !== highlightColor ) { + this.highlightColor = highlightColor; + this.emit( 'update' ); + } + }; + + /** + * Clear the highlight color + */ + mw.rcfilters.dm.FilterItem.prototype.clearHighlightColor = function () { + this.setHighlightColor( null ); + }; + + /** + * Get the highlight color, or null if none is configured + * + * @return {string|null} + */ + mw.rcfilters.dm.FilterItem.prototype.getHighlightColor = function () { + return this.highlightColor; + }; + + /** + * Get the CSS class that matches changes that fit this filter + * or null if none is configured + * + * @return {string|null} + */ + mw.rcfilters.dm.FilterItem.prototype.getCssClass = function () { + return this.cssClass; + }; + + /** + * Toggle the highlight feature on and off for this filter. + * It only works if highlight is supported for this filter. + * + * @param {boolean} enable Highlight should be enabled + */ + mw.rcfilters.dm.FilterItem.prototype.toggleHighlight = function ( enable ) { + enable = enable === undefined ? !this.highlightEnabled : enable; + + if ( !this.isHighlightSupported() ) { + return; + } + + if ( enable === this.highlightEnabled ) { + return; + } + + this.highlightEnabled = enable; + this.emit( 'update' ); + }; + + /** + * Check if the highlight feature is currently enabled for this filter + * + * @return {boolean} + */ + mw.rcfilters.dm.FilterItem.prototype.isHighlightEnabled = function () { + return !!this.highlightEnabled; + }; + + /** + * Check if the highlight feature is supported for this filter + * + * @return {boolean} + */ + mw.rcfilters.dm.FilterItem.prototype.isHighlightSupported = function () { + return !!this.getCssClass(); + }; + + /** + * Check if the filter is currently highlighted + * + * @return {boolean} + */ + mw.rcfilters.dm.FilterItem.prototype.isHighlighted = function () { + return this.isHighlightEnabled() && !!this.getHighlightColor(); + }; }( mediaWiki ) ); diff --git a/resources/src/mediawiki.rcfilters/dm/mw.rcfilters.dm.FiltersViewModel.js b/resources/src/mediawiki.rcfilters/dm/mw.rcfilters.dm.FiltersViewModel.js index 3217d0d7d4..3bb7716107 100644 --- a/resources/src/mediawiki.rcfilters/dm/mw.rcfilters.dm.FiltersViewModel.js +++ b/resources/src/mediawiki.rcfilters/dm/mw.rcfilters.dm.FiltersViewModel.js @@ -13,9 +13,13 @@ OO.EmitterList.call( this ); this.groups = {}; + this.defaultParams = {}; + this.defaultFiltersEmpty = null; + this.highlightEnabled = false; // Events - this.aggregate( { update: 'itemUpdate' } ); + this.aggregate( { update: 'filterItemUpdate' } ); + this.connect( this, { filterItemUpdate: [ 'emit', 'itemUpdate' ] } ); }; /* Initialization */ @@ -38,45 +42,246 @@ * Filter item has changed */ + /** + * @event highlightChange + * @param {boolean} Highlight feature is enabled + * + * Highlight feature has been toggled enabled or disabled + */ + /* Methods */ + /** + * Re-assess the states of filter items based on the interactions between them + * + * @param {mw.rcfilters.dm.FilterItem} [item] Changed item. If not given, the + * method will go over the state of all items + */ + mw.rcfilters.dm.FiltersViewModel.prototype.reassessFilterInteractions = function ( item ) { + var allSelected, + model = this, + iterationItems = item !== undefined ? [ item ] : this.getItems(); + + iterationItems.forEach( function ( checkedItem ) { + var allCheckedItems = checkedItem.getSubset().concat( [ checkedItem.getName() ] ), + groupModel = checkedItem.getGroupModel(); + + // Check for subsets (included filters) plus the item itself: + allCheckedItems.forEach( function ( filterItemName ) { + var itemInSubset = model.getItemByName( filterItemName ); + + itemInSubset.toggleIncluded( + // If any of itemInSubset's supersets are selected, this item + // is included + itemInSubset.getSuperset().some( function ( supersetName ) { + return ( model.getItemByName( supersetName ).isSelected() ); + } ) + ); + } ); + + // Update coverage for the changed group + if ( groupModel.isFullCoverage() ) { + allSelected = groupModel.areAllSelected(); + groupModel.getItems().forEach( function ( filterItem ) { + filterItem.toggleFullyCovered( allSelected ); + } ); + } + } ); + + // Check for conflicts + // In this case, we must go over all items, since + // conflicts are bidirectional and depend not only on + // individual items, but also on the selected states of + // the groups they're in. + this.getItems().forEach( function ( filterItem ) { + var inConflict = false, + filterItemGroup = filterItem.getGroupModel(); + + // For each item, see if that item is still conflicting + $.each( model.groups, function ( groupName, groupModel ) { + if ( filterItem.getGroupName() === groupName ) { + // Check inside the group + inConflict = groupModel.areAnySelectedInConflictWith( filterItem ); + } else { + // According to the spec, if two items conflict from two different + // groups, the conflict only lasts if the groups **only have selected + // items that are conflicting**. If a group has selected items that + // are conflicting and non-conflicting, the scope of the result has + // expanded enough to completely remove the conflict. + + // For example, see two groups with conflicts: + // userExpLevel: [ + // { + // name: 'experienced', + // conflicts: [ 'unregistered' ] + // } + // ], + // registration: [ + // { + // name: 'registered', + // }, + // { + // name: 'unregistered', + // } + // ] + // If we select 'experienced', then 'unregistered' is in conflict (and vice versa), + // because, inherently, 'experienced' filter only includes registered users, and so + // both filters are in conflict with one another. + // However, the minute we select 'registered', the scope of our results + // has expanded to no longer have a conflict with 'experienced' filter, and + // so the conflict is removed. + + // In our case, we need to check if the entire group conflicts with + // the entire item's group, so we follow the above spec + inConflict = ( + // The foreign group is in conflict with this item + groupModel.areAllSelectedInConflictWith( filterItem ) && + // Every selected member of the item's own group is also + // in conflict with the other group + filterItemGroup.getSelectedItems().every( function ( otherGroupItem ) { + return groupModel.areAllSelectedInConflictWith( otherGroupItem ); + } ) + ); + } + + // If we're in conflict, this will return 'false' which + // will break the loop. Otherwise, we're not in conflict + // and the loop continues + return !inConflict; + } ); + + // Toggle the item state + filterItem.toggleConflicted( inConflict ); + } ); + }; + /** * Set filters and preserve a group relationship based on * the definition given by an object * - * @param {Object} filters Filter group definition + * @param {Array} filters Filter group definition */ mw.rcfilters.dm.FiltersViewModel.prototype.initializeFilters = function ( filters ) { - var i, filterItem, + var i, filterItem, selectedFilterNames, model = this, - items = []; + items = [], + addArrayElementsUnique = function ( arr, elements ) { + elements = Array.isArray( elements ) ? elements : [ elements ]; + + elements.forEach( function ( element ) { + if ( arr.indexOf( element ) === -1 ) { + arr.push( element ); + } + } ); + + return arr; + }, + conflictMap = {}, + supersetMap = {}; // Reset this.clearItems(); this.groups = {}; - $.each( filters, function ( group, data ) { - model.groups[ group ] = model.groups[ group ] || {}; - model.groups[ group ].filters = model.groups[ group ].filters || []; + filters.forEach( function ( data ) { + var group = data.name; - model.groups[ group ].title = data.title; - model.groups[ group ].type = data.type; - model.groups[ group ].separator = data.separator || '|'; + if ( !model.groups[ group ] ) { + model.groups[ group ] = new mw.rcfilters.dm.FilterGroup( group, { + type: data.type, + title: mw.msg( data.title ), + separator: data.separator, + fullCoverage: !!data.fullCoverage + } ); + } + selectedFilterNames = []; for ( i = 0; i < data.filters.length; i++ ) { - filterItem = new mw.rcfilters.dm.FilterItem( data.filters[ i ].name, { + data.filters[ i ].subset = data.filters[ i ].subset || []; + data.filters[ i ].subset = data.filters[ i ].subset.map( function ( el ) { + return el.filter; + } ); + + filterItem = new mw.rcfilters.dm.FilterItem( data.filters[ i ].name, model.groups[ group ], { group: group, - label: data.filters[ i ].label, - description: data.filters[ i ].description, - selected: data.filters[ i ].selected + label: mw.msg( data.filters[ i ].label ), + description: mw.msg( data.filters[ i ].description ), + subset: data.filters[ i ].subset, + cssClass: data.filters[ i ].cssClass } ); - model.groups[ group ].filters.push( filterItem ); + // For convenience, we should store each filter's "supersets" -- these are + // the filters that have that item in their subset list. This will just + // make it easier to go through whether the item has any other items + // that affect it (and are selected) at any given time + if ( data.filters[ i ].subset ) { + data.filters[ i ].subset.forEach( function ( subsetFilterName ) { // eslint-disable-line no-loop-func + supersetMap[ subsetFilterName ] = supersetMap[ subsetFilterName ] || []; + addArrayElementsUnique( + supersetMap[ subsetFilterName ], + filterItem.getName() + ); + } ); + } + + // Conflicts are bi-directional, which means FilterA can define having + // a conflict with FilterB, and this conflict should appear in **both** + // filter definitions. + // We need to remap all the 'conflicts' so they reflect the entire state + // in either direction regardless of which filter defined the other as conflicting. + if ( data.filters[ i ].conflicts ) { + conflictMap[ filterItem.getName() ] = conflictMap[ filterItem.getName() ] || []; + addArrayElementsUnique( + conflictMap[ filterItem.getName() ], + data.filters[ i ].conflicts + ); + + data.filters[ i ].conflicts.forEach( function ( conflictingFilterName ) { // eslint-disable-line no-loop-func + // Add this filter to the conflicts of each of the filters in its list + conflictMap[ conflictingFilterName ] = conflictMap[ conflictingFilterName ] || []; + addArrayElementsUnique( + conflictMap[ conflictingFilterName ], + filterItem.getName() + ); + } ); + } + + if ( data.type === 'send_unselected_if_any' ) { + // Store the default parameter state + // For this group type, parameter values are direct + model.defaultParams[ data.filters[ i ].name ] = Number( !!data.filters[ i ].default ); + } else if ( + data.type === 'string_options' && + data.filters[ i ].default + ) { + selectedFilterNames.push( data.filters[ i ].name ); + } + + model.groups[ group ].addItems( filterItem ); items.push( filterItem ); } + + if ( data.type === 'string_options' ) { + // Store the default parameter group state + // For this group, the parameter is group name and value is the names + // of selected items + model.defaultParams[ group ] = model.sanitizeStringOptionGroup( group, selectedFilterNames ).join( model.groups[ group ].getSeparator() ); + } } ); + items.forEach( function ( filterItem ) { + // Apply conflict map to the items + // Now that we mapped all items and conflicts bi-directionally + // we need to apply the definition to each filter again + filterItem.setConflicts( conflictMap[ filterItem.getName() ] ); + + // Apply the superset map + filterItem.setSuperset( supersetMap[ filterItem.getName() ] ); + } ); + + // Add items to the model this.addItems( items ); + this.emit( 'initialize' ); }; @@ -90,15 +295,7 @@ }; /** - * Get the object that defines groups and their filter items. - * The structure of this response: - * { - * groupName: { - * title: {string} Group title - * type: {string} Group type - * filters: {string[]} Filters in the group - * } - * } + * Get the object that defines groups by their name. * * @return {Object} Filter groups */ @@ -107,11 +304,21 @@ }; /** - * Get the current state of the filters + * Get the value of a specific parameter + * + * @param {string} name Parameter name + * @return {number|string} Parameter value + */ + mw.rcfilters.dm.FiltersViewModel.prototype.getParamValue = function ( name ) { + return this.parameters[ name ]; + }; + + /** + * Get the current selected state of the filters * - * @return {Object} Filters current state + * @return {Object} Filters selected state */ - mw.rcfilters.dm.FiltersViewModel.prototype.getState = function () { + mw.rcfilters.dm.FiltersViewModel.prototype.getSelectedState = function () { var i, items = this.getItems(), result = {}; @@ -123,21 +330,63 @@ return result; }; + /** + * Get the current full state of the filters + * + * @return {Object} Filters full state + */ + mw.rcfilters.dm.FiltersViewModel.prototype.getFullState = function () { + var i, + items = this.getItems(), + result = {}; + + for ( i = 0; i < items.length; i++ ) { + result[ items[ i ].getName() ] = { + selected: items[ i ].isSelected(), + conflicted: items[ i ].isConflicted(), + included: items[ i ].isIncluded() + }; + } + + return result; + }; + + /** + * Get the default parameters object + * + * @return {Object} Default parameter values + */ + mw.rcfilters.dm.FiltersViewModel.prototype.getDefaultParams = function () { + return this.defaultParams; + }; + + /** + * Set all filter states to default values + */ + mw.rcfilters.dm.FiltersViewModel.prototype.setFiltersToDefaults = function () { + var defaultFilterStates = this.getFiltersFromParameters( this.getDefaultParams() ); + + this.toggleFiltersSelected( defaultFilterStates ); + }; + /** * Analyze the groups and their filters and output an object representing * the state of the parameters they represent. * + * @param {Object} [filterGroups] An object defining the filter groups to + * translate to parameters. Its structure must follow that of this.groups + * see #getFilterGroups * @return {Object} Parameter state object */ - mw.rcfilters.dm.FiltersViewModel.prototype.getParametersFromFilters = function () { + mw.rcfilters.dm.FiltersViewModel.prototype.getParametersFromFilters = function ( filterGroups ) { var i, filterItems, anySelected, values, result = {}, - groupItems = this.getFilterGroups(); + groupItems = filterGroups || this.getFilterGroups(); - $.each( groupItems, function ( group, data ) { - filterItems = data.filters; + $.each( groupItems, function ( group, model ) { + filterItems = model.getItems(); - if ( data.type === 'send_unselected_if_any' ) { + if ( model.getType() === 'send_unselected_if_any' ) { // First, check if any of the items are selected at all. // If none is selected, we're treating it as if they are // all false @@ -150,7 +399,7 @@ result[ filterItems[ i ].getName() ] = anySelected ? Number( !filterItems[ i ].isSelected() ) : 0; } - } else if ( data.type === 'string_options' ) { + } else if ( model.getType() === 'string_options' ) { values = []; for ( i = 0; i < filterItems.length; i++ ) { if ( filterItems[ i ].isSelected() ) { @@ -158,10 +407,10 @@ } } - if ( values.length === 0 || values.length === filterItems.length ) { + if ( values.length === filterItems.length ) { result[ group ] = 'all'; } else { - result[ group ] = values.join( data.separator ); + result[ group ] = values.join( model.getSeparator() ); } } } ); @@ -169,18 +418,34 @@ return result; }; + /** + * Get the highlight parameters based on current filter configuration + * + * @return {object} Object where keys are "<filter name>_color" and values + * are the selected highlight colors. + */ + mw.rcfilters.dm.FiltersViewModel.prototype.getHighlightParameters = function () { + var result = { highlight: Number( this.isHighlightEnabled() ) }; + + this.getItems().forEach( function ( filterItem ) { + result[ filterItem.getName() + '_color' ] = filterItem.getHighlightColor(); + } ); + return result; + }; + /** * Sanitize value group of a string_option groups type * Remove duplicates and make sure to only use valid * values. * + * @private * @param {string} groupName Group name * @param {string[]} valueArray Array of values * @return {string[]} Array of valid values */ mw.rcfilters.dm.FiltersViewModel.prototype.sanitizeStringOptionGroup = function( groupName, valueArray ) { var result = [], - validNames = this.groups[ groupName ].filters.map( function ( filterItem ) { + validNames = this.getGroupFilters( groupName ).map( function ( filterItem ) { return filterItem.getName(); } ); @@ -208,9 +473,42 @@ return result; }; + /** + * Check whether the current filter state is set to all false. + * + * @return {boolean} Current filters are all empty + */ + mw.rcfilters.dm.FiltersViewModel.prototype.areCurrentFiltersEmpty = function () { + // Check if there are either any selected items or any items + // that have highlight enabled + return !this.getItems().some( function ( filterItem ) { + return filterItem.isSelected() || filterItem.isHighlighted(); + } ); + }; + + /** + * Check whether the default values of the filters are all false. + * + * @return {boolean} Default filters are all false + */ + mw.rcfilters.dm.FiltersViewModel.prototype.areDefaultFiltersEmpty = function () { + var defaultFilters; + + if ( this.defaultFiltersEmpty !== null ) { + // We only need to do this test once, + // because defaults are set once per session + defaultFilters = this.getFiltersFromParameters(); + this.defaultFiltersEmpty = Object.keys( defaultFilters ).every( function ( filterName ) { + return !defaultFilters[ filterName ]; + } ); + } + + return this.defaultFiltersEmpty; + }; + /** * This is the opposite of the #getParametersFromFilters method; this goes over - * the parameters and translates into a selected/unselected value in the filters. + * the given parameters and translates into a selected/unselected value in the filters. * * @param {Object} params Parameters query object * @return {Object} Filter state object @@ -219,9 +517,8 @@ var i, filterItem, groupMap = {}, model = this, - base = this.getParametersFromFilters(), - // Start with current state - result = this.getState(); + base = this.getDefaultParams(), + result = {}; params = $.extend( {}, base, params ); @@ -230,21 +527,21 @@ filterItem = model.getItemByName( paramName ); // Ignore if no filter item exists if ( filterItem ) { - groupMap[ filterItem.getGroup() ] = groupMap[ filterItem.getGroup() ] || {}; + groupMap[ filterItem.getGroupName() ] = groupMap[ filterItem.getGroupName() ] || {}; // Mark the group if it has any items that are selected - groupMap[ filterItem.getGroup() ].hasSelected = ( - groupMap[ filterItem.getGroup() ].hasSelected || + groupMap[ filterItem.getGroupName() ].hasSelected = ( + groupMap[ filterItem.getGroupName() ].hasSelected || !!Number( paramValue ) ); // Add the relevant filter into the group map - groupMap[ filterItem.getGroup() ].filters = groupMap[ filterItem.getGroup() ].filters || []; - groupMap[ filterItem.getGroup() ].filters.push( filterItem ); + groupMap[ filterItem.getGroupName() ].filters = groupMap[ filterItem.getGroupName() ].filters || []; + groupMap[ filterItem.getGroupName() ].filters.push( filterItem ); } else if ( model.groups.hasOwnProperty( paramName ) ) { // This parameter represents a group (values are the filters) // this is equivalent to checking if the group is 'string_options' - groupMap[ paramName ] = { filters: model.groups[ paramName ].filters }; + groupMap[ paramName ] = { filters: model.groups[ paramName ].getItems() }; } } ); @@ -254,7 +551,7 @@ var paramValues, filterItem, allItemsInGroup = data.filters; - if ( model.groups[ group ].type === 'send_unselected_if_any' ) { + if ( model.groups[ group ].getType() === 'send_unselected_if_any' ) { for ( i = 0; i < allItemsInGroup.length; i++ ) { filterItem = allItemsInGroup[ i ]; @@ -267,8 +564,8 @@ // group, which means the state is false false; } - } else if ( model.groups[ group ].type === 'string_options' ) { - paramValues = model.sanitizeStringOptionGroup( group, params[ group ].split( model.groups[ group ].separator ) ); + } else if ( model.groups[ group ].getType() === 'string_options' ) { + paramValues = model.sanitizeStringOptionGroup( group, params[ group ].split( model.groups[ group ].getSeparator() ) ); for ( i = 0; i < allItemsInGroup.length; i++ ) { filterItem = allItemsInGroup[ i ]; @@ -277,7 +574,7 @@ // If it is the word 'all' paramValues.length === 1 && paramValues[ 0 ] === 'all' || // All values are written - paramValues.length === model.groups[ group ].filters.length + paramValues.length === model.groups[ group ].getItemCount() ) ? // All true (either because all values are written or the term 'all' is written) // is the same as all filters set to false @@ -302,41 +599,165 @@ } )[ 0 ]; }; + /** + * Set all filters to false or empty/all + * This is equivalent to display all. + */ + mw.rcfilters.dm.FiltersViewModel.prototype.emptyAllFilters = function () { + this.getItems().forEach( function ( filterItem ) { + this.toggleFilterSelected( filterItem.getName(), false ); + }.bind( this ) ); + }; + + /** + * Toggle selected state of one item + * + * @param {string} name Name of the filter item + * @param {boolean} [isSelected] Filter selected state + */ + mw.rcfilters.dm.FiltersViewModel.prototype.toggleFilterSelected = function ( name, isSelected ) { + this.getItemByName( name ).toggleSelected( isSelected ); + }; + /** * Toggle selected state of items by their names * * @param {Object} filterDef Filter definitions */ - mw.rcfilters.dm.FiltersViewModel.prototype.updateFilters = function ( filterDef ) { - var name, filterItem; + mw.rcfilters.dm.FiltersViewModel.prototype.toggleFiltersSelected = function ( filterDef ) { + Object.keys( filterDef ).forEach( function ( name ) { + this.toggleFilterSelected( name, filterDef[ name ] ); + }.bind( this ) ); + }; - for ( name in filterDef ) { - filterItem = this.getItemByName( name ); - filterItem.toggleSelected( filterDef[ name ] ); - } + /** + * Get a group model from its name + * + * @param {string} groupName Group name + * @return {mw.rcfilters.dm.FilterGroup} Group model + */ + mw.rcfilters.dm.FiltersViewModel.prototype.getGroup = function ( groupName ) { + return this.groups[ groupName ]; + }; + + /** + * Get all filters within a specified group by its name + * + * @param {string} groupName Group name + * @return {mw.rcfilters.dm.FilterItem[]} Filters belonging to this group + */ + mw.rcfilters.dm.FiltersViewModel.prototype.getGroupFilters = function ( groupName ) { + return ( this.getGroup( groupName ) && this.getGroup( groupName ).getItems() ) || []; }; /** * Find items whose labels match the given string * - * @param {string} str Search string + * @param {string} query Search string * @return {Object} An object of items to show * arranged by their group names */ - mw.rcfilters.dm.FiltersViewModel.prototype.findMatches = function ( str ) { + mw.rcfilters.dm.FiltersViewModel.prototype.findMatches = function ( query ) { var i, + groupTitle, result = {}, items = this.getItems(); // Normalize so we can search strings regardless of case - str = str.toLowerCase(); + query = query.toLowerCase(); + + // item label starting with the query string for ( i = 0; i < items.length; i++ ) { - if ( items[ i ].getLabel().toLowerCase().indexOf( str ) > -1 ) { - result[ items[ i ].getGroup() ] = result[ items[ i ].getGroup() ] || []; - result[ items[ i ].getGroup() ].push( items[ i ] ); + if ( items[ i ].getLabel().toLowerCase().indexOf( query ) === 0 ) { + result[ items[ i ].getGroupName() ] = result[ items[ i ].getGroupName() ] || []; + result[ items[ i ].getGroupName() ].push( items[ i ] ); } } + + if ( $.isEmptyObject( result ) ) { + // item containing the query string in their label, description, or group title + for ( i = 0; i < items.length; i++ ) { + groupTitle = items[ i ].getGroupModel().getTitle(); + if ( + items[ i ].getLabel().toLowerCase().indexOf( query ) > -1 || + items[ i ].getDescription().toLowerCase().indexOf( query ) > -1 || + groupTitle.toLowerCase().indexOf( query ) > -1 + ) { + result[ items[ i ].getGroupName() ] = result[ items[ i ].getGroupName() ] || []; + result[ items[ i ].getGroupName() ].push( items[ i ] ); + } + } + } + return result; }; + /** + * Get items that are highlighted + * + * @return {mw.rcfilters.dm.FilterItem[]} Highlighted items + */ + mw.rcfilters.dm.FiltersViewModel.prototype.getHighlightedItems = function () { + return this.getItems().filter( function ( filterItem ) { + return filterItem.isHighlightSupported() && + filterItem.getHighlightColor(); + } ); + }; + + /** + * Toggle the highlight feature on and off. + * Propagate the change to filter items. + * + * @param {boolean} enable Highlight should be enabled + * @fires highlightChange + */ + mw.rcfilters.dm.FiltersViewModel.prototype.toggleHighlight = function ( enable ) { + enable = enable === undefined ? !this.highlightEnabled : enable; + + if ( this.highlightEnabled !== enable ) { + this.highlightEnabled = enable; + + this.getItems().forEach( function ( filterItem ) { + filterItem.toggleHighlight( this.highlightEnabled ); + }.bind( this ) ); + + this.emit( 'highlightChange', this.highlightEnabled ); + } + }; + + /** + * Check if the highlight feature is enabled + * @return {boolean} + */ + mw.rcfilters.dm.FiltersViewModel.prototype.isHighlightEnabled = function () { + return !!this.highlightEnabled; + }; + + /** + * Set highlight color for a specific filter item + * + * @param {string} filterName Name of the filter item + * @param {string} color Selected color + */ + mw.rcfilters.dm.FiltersViewModel.prototype.setHighlightColor = function ( filterName, color ) { + this.getItemByName( filterName ).setHighlightColor( color ); + }; + + /** + * Clear highlight for a specific filter item + * + * @param {string} filterName Name of the filter item + */ + mw.rcfilters.dm.FiltersViewModel.prototype.clearHighlightColor = function ( filterName ) { + this.getItemByName( filterName ).clearHighlightColor(); + }; + + /** + * Clear highlight for all filter items + */ + mw.rcfilters.dm.FiltersViewModel.prototype.clearAllHighlightColors = function () { + this.getItems().forEach( function ( filterItem ) { + filterItem.clearHighlightColor(); + } ); + }; }( mediaWiki, jQuery ) ); diff --git a/resources/src/mediawiki.rcfilters/images/pending.gif b/resources/src/mediawiki.rcfilters/images/pending.gif new file mode 100644 index 0000000000..1194eed293 Binary files /dev/null and b/resources/src/mediawiki.rcfilters/images/pending.gif differ diff --git a/resources/src/mediawiki.rcfilters/mw.rcfilters.Controller.js b/resources/src/mediawiki.rcfilters/mw.rcfilters.Controller.js index ea44b8b962..f8008b67d8 100644 --- a/resources/src/mediawiki.rcfilters/mw.rcfilters.Controller.js +++ b/resources/src/mediawiki.rcfilters/mw.rcfilters.Controller.js @@ -1,14 +1,14 @@ -( function ( mw ) { +( function ( mw, $ ) { /** * Controller for the filters in Recent Changes * - * @param {mw.rcfilters.dm.FiltersViewModel} model View model + * @param {mw.rcfilters.dm.FiltersViewModel} filtersModel Filters view model + * @param {mw.rcfilters.dm.ChangesListViewModel} changesListModel Changes list view model */ - mw.rcfilters.Controller = function MwRcfiltersController( model ) { - this.model = model; - - // TODO: When we are ready, update the URL when a filter is updated - // this.model.connect( this, { itemUpdate: 'updateURL' } ); + mw.rcfilters.Controller = function MwRcfiltersController( filtersModel, changesListModel ) { + this.filtersModel = filtersModel; + this.changesListModel = changesListModel; + this.requestCounter = 0; }; /* Initialization */ @@ -16,42 +16,277 @@ /** * Initialize the filter and parameter states + * + * @param {Array} filterStructure Filter definition and structure for the model + */ + mw.rcfilters.Controller.prototype.initialize = function ( filterStructure ) { + // Initialize the model + this.filtersModel.initializeFilters( filterStructure ); + this.updateStateBasedOnUrl(); + }; + + /** + * Update filter state (selection and highlighting) based + * on current URL and default values. */ - mw.rcfilters.Controller.prototype.initialize = function () { + mw.rcfilters.Controller.prototype.updateStateBasedOnUrl = function () { var uri = new mw.Uri(); - this.model.updateFilters( - // Translate the url params to filter select states - this.model.getFiltersFromParameters( uri.query ) + // Set filter states based on defaults and URL params + this.filtersModel.toggleFiltersSelected( + this.filtersModel.getFiltersFromParameters( + // Merge defaults with URL params for initialization + $.extend( + true, + {}, + this.filtersModel.getDefaultParams(), + // URI query overrides defaults + uri.query + ) + ) ); + + // Initialize highlights + this.filtersModel.toggleHighlight( !!uri.query.highlight ); + this.filtersModel.getItems().forEach( function ( filterItem ) { + var color = uri.query[ filterItem.getName() + '_color' ]; + if ( color ) { + filterItem.setHighlightColor( color ); + } else { + filterItem.clearHighlightColor(); + } + } ); + + // Check all filter interactions + this.filtersModel.reassessFilterInteractions(); }; /** - * Update the state of a filter + * Reset to default filters + */ + mw.rcfilters.Controller.prototype.resetToDefaults = function () { + this.filtersModel.setFiltersToDefaults(); + this.filtersModel.clearAllHighlightColors(); + // Check all filter interactions + this.filtersModel.reassessFilterInteractions(); + + this.updateChangesList(); + }; + + /** + * Empty all selected filters + */ + mw.rcfilters.Controller.prototype.emptyFilters = function () { + this.filtersModel.emptyAllFilters(); + this.filtersModel.clearAllHighlightColors(); + // Check all filter interactions + this.filtersModel.reassessFilterInteractions(); + + this.updateChangesList(); + }; + + /** + * Update the selected state of a filter * * @param {string} filterName Filter name - * @param {boolean} isSelected Filter selected state + * @param {boolean} [isSelected] Filter selected state */ - mw.rcfilters.Controller.prototype.updateFilter = function ( filterName, isSelected ) { - var obj = {}; + mw.rcfilters.Controller.prototype.toggleFilterSelect = function ( filterName, isSelected ) { + var filterItem = this.filtersModel.getItemByName( filterName ); + + isSelected = isSelected === undefined ? !filterItem.isSelected() : isSelected; - obj[ filterName ] = isSelected; - this.model.updateFilters( obj ); + if ( filterItem.isSelected() !== isSelected ) { + this.filtersModel.toggleFilterSelected( filterName, isSelected ); + + this.updateChangesList(); + + // Check filter interactions + this.filtersModel.reassessFilterInteractions( filterItem ); + } }; /** * Update the URL of the page to reflect current filters + * + * This should not be called directly from outside the controller. + * If an action requires changing the URL, it should either use the + * highlighting actions below, or call #updateChangesList which does + * the uri corrections already. + * + * @private + * @param {Object} [params] Extra parameters to add to the API call */ - mw.rcfilters.Controller.prototype.updateURL = function () { - var uri = new mw.Uri(); + mw.rcfilters.Controller.prototype.updateURL = function ( params ) { + var updatedUri, + notEquivalent = function ( obj1, obj2 ) { + var keys = Object.keys( obj1 ).concat( Object.keys( obj2 ) ); + return keys.some( function ( key ) { + return obj1[ key ] != obj2[ key ]; // eslint-disable-line eqeqeq + } ); + }; + + params = params || {}; + + updatedUri = this.getUpdatedUri(); + updatedUri.extend( params ); + + if ( notEquivalent( updatedUri.query, new mw.Uri().query ) ) { + window.history.pushState( { tag: 'rcfilters' }, document.title, updatedUri.toString() ); + } + }; + + /** + * Get an updated mw.Uri object based on the model state + * + * @return {mw.Uri} Updated Uri + */ + mw.rcfilters.Controller.prototype.getUpdatedUri = function () { + var uri = new mw.Uri(), + highlightParams = this.filtersModel.getHighlightParameters(); // Add to existing queries in URL // TODO: Clean up the list of filters; perhaps 'falsy' filters // shouldn't appear at all? Or compare to existing query string // and see if current state of a specific filter is needed? - uri.extend( this.model.getParametersFromFilters() ); + uri.extend( this.filtersModel.getParametersFromFilters() ); + + // highlight params + Object.keys( highlightParams ).forEach( function ( paramName ) { + if ( highlightParams[ paramName ] ) { + uri.query[ paramName ] = highlightParams[ paramName ]; + } else { + delete uri.query[ paramName ]; + } + } ); + + return uri; + }; + + /** + * Fetch the list of changes from the server for the current filters + * + * @return {jQuery.Promise} Promise object that will resolve with the changes list + * or with a string denoting no results. + */ + mw.rcfilters.Controller.prototype.fetchChangesList = function () { + var uri = this.getUpdatedUri(), + requestId = ++this.requestCounter, + latestRequest = function () { + return requestId === this.requestCounter; + }.bind( this ); + + return $.ajax( uri.toString(), { contentType: 'html' } ) + .then( + // Success + function ( html ) { + var $parsed; + if ( !latestRequest() ) { + return $.Deferred().reject(); + } + + $parsed = $( $.parseHTML( html ) ); + + return { + // Changes list + changes: $parsed.find( '.mw-changeslist' ).first().contents(), + // Fieldset + fieldset: $parsed.find( 'fieldset.rcoptions' ).first() + }; + }, + // Failure + function ( responseObj ) { + var $parsed; - // Update the URL itself - window.history.pushState( { tag: 'rcfilters' }, document.title, uri.toString() ); + if ( !latestRequest() ) { + return $.Deferred().reject(); + } + + $parsed = $( $.parseHTML( responseObj.responseText ) ); + + // Force a resolve state to this promise + return $.Deferred().resolve( { + changes: 'NO_RESULTS', + fieldset: $parsed.find( 'fieldset.rcoptions' ).first() + } ).promise(); + } + ); + }; + + /** + * Update the list of changes and notify the model + * + * @param {Object} [params] Extra parameters to add to the API call + */ + mw.rcfilters.Controller.prototype.updateChangesList = function ( params ) { + this.updateURL( params ); + this.changesListModel.invalidate(); + this.fetchChangesList() + .then( + // Success + function ( pieces ) { + var $changesListContent = pieces.changes, + $fieldset = pieces.fieldset; + this.changesListModel.update( $changesListContent, $fieldset ); + }.bind( this ) + // Do nothing for failure + ); + }; + + /** + * Toggle the highlight feature on and off + */ + mw.rcfilters.Controller.prototype.toggleHighlight = function () { + this.filtersModel.toggleHighlight(); + this.updateURL(); + }; + + /** + * Set the highlight color for a filter item + * + * @param {string} filterName Name of the filter item + * @param {string} color Selected color + */ + mw.rcfilters.Controller.prototype.setHighlightColor = function ( filterName, color ) { + this.filtersModel.setHighlightColor( filterName, color ); + this.updateURL(); + }; + + /** + * Clear highlight for a filter item + * + * @param {string} filterName Name of the filter item + */ + mw.rcfilters.Controller.prototype.clearHighlightColor = function ( filterName ) { + this.filtersModel.clearHighlightColor( filterName ); + this.updateURL(); + }; + + /** + * Clear both highlight and selection of a filter + * + * @param {string} filterName Name of the filter item + */ + mw.rcfilters.Controller.prototype.clearFilter = function ( filterName ) { + var filterItem = this.filtersModel.getItemByName( filterName ); + + if ( filterItem.isSelected() || filterItem.isHighlighted() ) { + this.filtersModel.clearHighlightColor( filterName ); + this.filtersModel.toggleFilterSelected( filterName, false ); + this.updateChangesList(); + this.filtersModel.reassessFilterInteractions( filterItem ); + } + }; + + /** + * Synchronize the URL with the current state of the filters + * without adding an history entry. + */ + mw.rcfilters.Controller.prototype.replaceUrl = function () { + window.history.replaceState( + { tag: 'rcfilters' }, + document.title, + this.getUpdatedUri().toString() + ); }; -}( mediaWiki ) ); +}( mediaWiki, jQuery ) ); diff --git a/resources/src/mediawiki.rcfilters/mw.rcfilters.HighlightColors.js b/resources/src/mediawiki.rcfilters/mw.rcfilters.HighlightColors.js new file mode 100644 index 0000000000..ebeaad6ed5 --- /dev/null +++ b/resources/src/mediawiki.rcfilters/mw.rcfilters.HighlightColors.js @@ -0,0 +1,9 @@ +( function ( mw ) { + /** + * Supported highlight colors. + * Warning: These are also hardcoded in "styles/mw.rcfilters.variables.less" + * + * @type {string[]} + */ + mw.rcfilters.HighlightColors = [ 'c1', 'c2', 'c3', 'c4', 'c5' ]; +}( mediaWiki ) ); diff --git a/resources/src/mediawiki.rcfilters/mw.rcfilters.init.js b/resources/src/mediawiki.rcfilters/mw.rcfilters.init.js index 679215bc71..4a586e484d 100644 --- a/resources/src/mediawiki.rcfilters/mw.rcfilters.init.js +++ b/resources/src/mediawiki.rcfilters/mw.rcfilters.init.js @@ -9,95 +9,43 @@ var rcfilters = { /** */ init: function () { - var model = new mw.rcfilters.dm.FiltersViewModel(), - controller = new mw.rcfilters.Controller( model ), - widget = new mw.rcfilters.ui.FilterWrapperWidget( controller, model ); - - model.initializeFilters( { - authorship: { - title: mw.msg( 'rcfilters-filtergroup-authorship' ), - // Type 'send_unselected_if_any' means that the controller will go over - // all unselected filters in the group and use their parameters - // as truthy in the query string. - // This is to handle the "negative" filters. We are showing users - // a positive message ("Show xxx") but the filters themselves are - // based on "hide YYY". The purpose of this is to correctly map - // the functionality to the UI, whether we are dealing with 2 - // parameters in the group or more. - type: 'send_unselected_if_any', - filters: [ - { - name: 'hidemyself', - label: mw.msg( 'rcfilters-filter-editsbyself-label' ), - description: mw.msg( 'rcfilters-filter-editsbyself-description' ) - }, - { - name: 'hidebyothers', - label: mw.msg( 'rcfilters-filter-editsbyother-label' ), - description: mw.msg( 'rcfilters-filter-editsbyother-description' ) - } - ] - }, - userExpLevel: { - title: mw.msg( 'rcfilters-filtergroup-userExpLevel' ), - // Type 'string_options' means that the group is evaluated by - // string values separated by comma; for example, param=opt1,opt2 - // If all options are selected they are replaced by the term "all". - // The filters are the values for the parameter defined by the group. - // ** In this case, the parameter name is the group name. ** - type: 'string_options', - separator: ',', - filters: [ - { - name: 'newcomer', - label: mw.msg( 'rcfilters-filter-userExpLevel-newcomer-label' ), - description: mw.msg( 'rcfilters-filter-userExpLevel-newcomer-description' ) - }, - { - name: 'learner', - label: mw.msg( 'rcfilters-filter-userExpLevel-learner-label' ), - description: mw.msg( 'rcfilters-filter-userExpLevel-learner-description' ) - }, - { - name: 'experienced', - label: mw.msg( 'rcfilters-filter-userExpLevel-experienced-label' ), - description: mw.msg( 'rcfilters-filter-userExpLevel-experienced-description' ) - } - ] - } + var filtersModel = new mw.rcfilters.dm.FiltersViewModel(), + changesListModel = new mw.rcfilters.dm.ChangesListViewModel(), + controller = new mw.rcfilters.Controller( filtersModel, changesListModel ), + $overlay = $( '<div>' ) + .addClass( 'mw-rcfilters-ui-overlay' ), + filtersWidget = new mw.rcfilters.ui.FilterWrapperWidget( + controller, filtersModel, { $overlay: $overlay } ); + + // TODO: The changesListWrapperWidget should be able to initialize + // after the model is ready. + // eslint-disable-next-line no-new + new mw.rcfilters.ui.ChangesListWrapperWidget( + filtersModel, changesListModel, $( '.mw-changeslist, .mw-changeslist-empty' ) ); + + controller.initialize( mw.config.get( 'wgStructuredChangeFilters' ) ); + + // eslint-disable-next-line no-new + new mw.rcfilters.ui.FormWrapperWidget( + filtersModel, changesListModel, controller, $( 'fieldset.rcoptions' ) ); + + $( '.rcfilters-container' ).append( filtersWidget.$element ); + $( 'body' ).append( $overlay ); + + // Set as ready + $( '.rcfilters-head' ).addClass( 'mw-rcfilters-ui-ready' ); + + window.addEventListener( 'popstate', function () { + controller.updateStateBasedOnUrl(); + controller.updateChangesList(); } ); - $( '.rcoptions' ).before( widget.$element ); - - // Initialize values - controller.initialize(); - - $( '.rcoptions form' ).submit( function () { - var $form = $( this ); + $( 'a.mw-helplink' ).attr( + 'href', + 'https://www.mediawiki.org/wiki/Special:MyLanguage/Help:New_filters_for_edit_review' + ); - // Get current filter values - $.each( model.getParametersFromFilters(), function ( paramName, paramValue ) { - var $existingInput = $form.find( 'input[name=' + paramName + ']' ); - // Check if the hidden input already exists - // This happens if the parameter was already given - // on load - if ( $existingInput.length ) { - // Update the value - $existingInput.val( paramValue ); - } else { - // Append hidden fields with filter values - $form.append( - $( '<input>' ) - .attr( 'type', 'hidden' ) - .attr( 'name', paramName ) - .val( paramValue ) - ); - } - } ); - - // Continue the submission process - return true; - } ); + controller.replaceUrl(); } }; diff --git a/resources/src/mediawiki.rcfilters/styles/mw.rcfilters.less b/resources/src/mediawiki.rcfilters/styles/mw.rcfilters.less index 7f71c0cb31..d47346c14d 100644 --- a/resources/src/mediawiki.rcfilters/styles/mw.rcfilters.less +++ b/resources/src/mediawiki.rcfilters/styles/mw.rcfilters.less @@ -1,5 +1,33 @@ -.rcshowhidemine { - // HACK: Hide this filter since it already appears in - // the new filter drop-down. - display: none; +// Corrections for the standard special page +.client-js{ + .rcoptions { + border: 0; + border-bottom: 1px solid #a2a9b1; + + legend { + display: none; + } + } + + .rcfilters-head { + min-height: 270px; + &:not( .mw-rcfilters-ui-ready ) { + /* @embed */ + background-image: url( ../images/pending.gif ); + margin: 0; + + * { + visibility: hidden; + } + } + } + + .rcfilters-container { + min-height: 100px; + margin: 0; + } +} + +.mw-rcfilters-staticfilters-selected { + font-weight: bold; } diff --git a/resources/src/mediawiki.rcfilters/styles/mw.rcfilters.mixins.less b/resources/src/mediawiki.rcfilters/styles/mw.rcfilters.mixins.less new file mode 100644 index 0000000000..2ce2c7f884 --- /dev/null +++ b/resources/src/mediawiki.rcfilters/styles/mw.rcfilters.mixins.less @@ -0,0 +1,63 @@ +@import 'mediawiki.mixins'; +@import 'mw.rcfilters.variables'; + +// This is a general mixin for a color circle +.mw-rcfilters-mixin-circle( @color: white, @diameter: 2em, @padding: 0.5em, @border: false ) { + border-radius: 50%; + min-width: @diameter; + width: @diameter; + min-height: @diameter; + height: @diameter; + margin: @padding; + .box-sizing( border-box ); + + background-color: @color; + + & when (@border = true) { + border: 1px solid #565656; + } +} + +// This is the circle that appears next to the results +// Its visibility is directly dependent on whether there is +// a color class on its parent element +.result-circle( @colorName: 'none' ) { + &-@{colorName} { + .mw-rcfilters-mixin-circle( ~'@{highlight-@{colorName}}', @result-circle-diameter, 0 ); + display: none; + + .mw-rcfilters-highlight-color-@{colorName} & { + display: inline-block; + } + } +} + +// This mixin produces color mixes for two, three and four colors +.highlight-color-mix( @color1, @color2, @color3: false, @color4: false ) { + @highlight-color-class-var: ~'.mw-rcfilters-highlight-color-@{color1}.mw-rcfilters-highlight-color-@{color2}'; + + // The nature of these variables and them being inside + // a 'tint' and 'average' LESS functions is such where + // the parsing is failing if it is done inside those functions. + // Instead, we first construct their LESS variable names, + // and then we call them inside those functions by calling @@var + @c1var: ~'highlight-@{color1}'; + @c2var: ~'highlight-@{color2}'; + + // Two colors + @{highlight-color-class-var} when ( @color3 = false ) and ( @color4 = false ) and not ( @color1 = false ), ( @color2 = false ) { + background-color: tint( average( @@c1var, @@c2var ), 50% ); + } + // Three colors + @{highlight-color-class-var}.mw-rcfilters-highlight-color-@{color3} when ( @color4 = false ) and not ( @color3 = false ) { + @c3var: ~'highlight-@{color3}'; + background-color: tint( mix( @@c1var, average( @@c2var, @@c3var ), 33% ), 30% ); + } + + // Four colors + @{highlight-color-class-var}.mw-rcfilters-highlight-color-@{color3}.mw-rcfilters-highlight-color-@{color4} when not ( @color4 = false ) { + @c3var: ~'highlight-@{color3}'; + @c4var: ~'highlight-@{color4}'; + background-color: tint( mix( @@c1var, mix( @@c2var, average( @@c3var, @@c4var ), 25% ), 25% ), 25% ); + } +} diff --git a/resources/src/mediawiki.rcfilters/styles/mw.rcfilters.ui.CapsuleItemWidget.less b/resources/src/mediawiki.rcfilters/styles/mw.rcfilters.ui.CapsuleItemWidget.less new file mode 100644 index 0000000000..b16e84c61c --- /dev/null +++ b/resources/src/mediawiki.rcfilters/styles/mw.rcfilters.ui.CapsuleItemWidget.less @@ -0,0 +1,75 @@ +@import 'mw.rcfilters.mixins'; + +.mw-rcfilters-ui-capsuleItemWidget { + background-color: #fff; + border-color: #979797; + color: #222; + + // Background and color of the capsule widget need a bit + // more specificity to override ooui internals + &-muted.oo-ui-capsuleItemWidget.oo-ui-widget-enabled { + // Muted state + background-color: #eaecf0; + border-color: #c8ccd1; + + .oo-ui-labelElement-label { + color: #72777d; + } + .oo-ui-buttonWidget { + opacity: @muted-opacity; + } + } + + &-conflicted.oo-ui-capsuleItemWidget.oo-ui-widget-enabled { + background-color: #fee7e6; // Red90 AAA + border-color: #b32424; // Red30 AAA + + .oo-ui-labelElement-label { + color: #b32424; + } + .oo-ui-buttonWidget { + opacity: @muted-opacity; + } + } + + &-selected.oo-ui-capsuleItemWidget.oo-ui-widget-enabled { + background-color: #eaf3ff; + border-color: #36c; + } + + &-popup-content { + padding: 0.5em; + color: #54595d; + } + + &.oo-ui-labelElement .oo-ui-labelElement-label { + vertical-align: middle; + cursor: pointer; + } + + &-highlight { + display: none; + padding-right: 0.5em; + + &-highlighted { + display: inline-block; + + } + + &[data-color='c1'] { + .mw-rcfilters-mixin-circle( @highlight-c1, 10px, ~'0 0.5em 0 0' ); + } + &[data-color='c2'] { + .mw-rcfilters-mixin-circle( @highlight-c2, 10px, ~'0 0.5em 0 0' ); + } + &[data-color='c3'] { + .mw-rcfilters-mixin-circle( @highlight-c3, 10px, ~'0 0.5em 0 0' ); + } + &[data-color='c4'] { + .mw-rcfilters-mixin-circle( @highlight-c4, 10px, ~'0 0.5em 0 0' ); + } + &[data-color='c5'] { + .mw-rcfilters-mixin-circle( @highlight-c5, 10px, ~'0 0.5em 0 0' ); + } + } +} diff --git a/resources/src/mediawiki.rcfilters/styles/mw.rcfilters.ui.ChangesListWrapperWidget.less b/resources/src/mediawiki.rcfilters/styles/mw.rcfilters.ui.ChangesListWrapperWidget.less new file mode 100644 index 0000000000..c18fe5e082 --- /dev/null +++ b/resources/src/mediawiki.rcfilters/styles/mw.rcfilters.ui.ChangesListWrapperWidget.less @@ -0,0 +1,129 @@ +@import 'mw.rcfilters.mixins'; + +.mw-rcfilters-ui-changesListWrapperWidget { + &-highlighted { + ul { + list-style: none; + // Each li's margin-left should be the width of the highlights + // element + the margin + margin-left: ~'calc( ( @{result-circle-diameter} + @{result-circle-margin} ) * 5 + @{result-circle-general-margin} )'; + + li { + list-style: none; + } + } + } + + // Correction for Enhanced RC + // This is outside the scope of the 'highlights' wrapper + table.mw-enhanced-rc { + margin-left: ~'calc( ( @{result-circle-diameter} + @{result-circle-margin} ) * 5 + @{result-circle-general-margin} )'; + + td:last-child { + width: 100%; + } + } + + &-highlights { + display: none; + padding: 0 @result-circle-general-margin 0 0; + text-align: right; + // The width is 5 circles times their diameter + individual margin + // and then plus the general margin + width: ~'calc( ( @{result-circle-diameter} + @{result-circle-margin} ) * 5 )'; + // And we want to shift the entire block to the left of the li + position: absolute; + left: 0; + + .mw-rcfilters-ui-changesListWrapperWidget-highlighted & { + display: inline-block; + } + + div { + .box-sizing( border-box ); + margin-right: @result-circle-margin; + vertical-align: middle; + // This is to make the dots appear at the center of the + // text itself; it's a horrendous hack and blame JamesF for it. + margin-top: -2px; + } + + &-color { + + &-none { + .mw-rcfilters-mixin-circle( @highlight-none, @result-circle-diameter, 0, true ); + display: inline-block; + + .mw-rcfilters-highlight-color-c1 &, + .mw-rcfilters-highlight-color-c2 &, + .mw-rcfilters-highlight-color-c3 &, + .mw-rcfilters-highlight-color-c4 &, + .mw-rcfilters-highlight-color-c5 & { + display: none; + } + } + .result-circle( c1 ); + .result-circle( c2 ); + .result-circle( c3 ); + .result-circle( c4 ); + .result-circle( c5 ); + } + } + + // One color + .mw-rcfilters-highlight-color-c1 { + background-color: tint( @highlight-c1, 70% ); + } + + .mw-rcfilters-highlight-color-c2 { + background-color: tint( @highlight-c2, 70% ); + } + + .mw-rcfilters-highlight-color-c3 { + background-color: tint( @highlight-c3, 70% ); + } + + .mw-rcfilters-highlight-color-c4 { + background-color: tint( @highlight-c4, 70% ); + } + + .mw-rcfilters-highlight-color-c5 { + background-color: tint( @highlight-c5, 70% ); + } + + // Two colors + .highlight-color-mix( c1, c2 ); + .highlight-color-mix( c1, c3 ); + .highlight-color-mix( c1, c4 ); + .highlight-color-mix( c1, c5 ); + .highlight-color-mix( c2, c3 ); + .highlight-color-mix( c2, c4 ); + .highlight-color-mix( c2, c5 ); + .highlight-color-mix( c3, c4 ); + .highlight-color-mix( c3, c5 ); + .highlight-color-mix( c4, c5 ); + + // Three colors + .highlight-color-mix( c1, c2, c3 ); + .highlight-color-mix( c1, c2, c5 ); + .highlight-color-mix( c1, c2, c4 ); + .highlight-color-mix( c1, c3, c4 ); + .highlight-color-mix( c1, c3, c5 ); + .highlight-color-mix( c1, c4, c5 ); + .highlight-color-mix( c2, c3, c4 ); + .highlight-color-mix( c2, c3, c5 ); + .highlight-color-mix( c2, c4, c5 ); + .highlight-color-mix( c3, c4, c5 ); + + // Four colors + .highlight-color-mix( c1, c2, c3, c4 ); + .highlight-color-mix( c1, c2, c3, c5 ); + .highlight-color-mix( c1, c2, c4, c5 ); + .highlight-color-mix( c1, c3, c4, c5 ); + .highlight-color-mix( c2, c3, c4, c5 ); + + // Five colors: + .mw-rcfilters-highlight-color-c1.mw-rcfilters-highlight-color-c2.mw-rcfilters-highlight-color-c3.mw-rcfilters-highlight-color-c4.mw-rcfilters-highlight-color-c5 { + background-color: tint( mix( @highlight-c1, mix( @highlight-c2, mix( @highlight-c3, average( @highlight-c4, @highlight-c5 ), 20% ), 20% ), 20% ), 15% ); + } +} diff --git a/resources/src/mediawiki.rcfilters/styles/mw.rcfilters.ui.FilterCapsuleMultiselectWidget.less b/resources/src/mediawiki.rcfilters/styles/mw.rcfilters.ui.FilterCapsuleMultiselectWidget.less index 4e55add938..a0ef293f12 100644 --- a/resources/src/mediawiki.rcfilters/styles/mw.rcfilters.ui.FilterCapsuleMultiselectWidget.less +++ b/resources/src/mediawiki.rcfilters/styles/mw.rcfilters.ui.FilterCapsuleMultiselectWidget.less @@ -1,11 +1,28 @@ .mw-rcfilters-ui-filterCapsuleMultiselectWidget { + max-width: none; + + &.oo-ui-widget-enabled .oo-ui-capsuleMultiselectWidget-handle { + background-color: #f8f9fa; + border: 1px solid #a2a9b1; + min-height: 5.5em; + padding: 0.75em; + + } + &-content-title { font-weight: bold; color: #54595d; } - .oo-ui-capsuleItemWidget { - color: #222; - background-color: #fff; + &-emptyFilters { + color: #72777d; + } + + &-cell-filters { + width: 100%; + } + &-cell-reset { + text-align: right; + padding-left: 0.5em; } } diff --git a/resources/src/mediawiki.rcfilters/styles/mw.rcfilters.ui.FilterGroupWidget.less b/resources/src/mediawiki.rcfilters/styles/mw.rcfilters.ui.FilterGroupWidget.less index 70982d446e..83491ac82e 100644 --- a/resources/src/mediawiki.rcfilters/styles/mw.rcfilters.ui.FilterGroupWidget.less +++ b/resources/src/mediawiki.rcfilters/styles/mw.rcfilters.ui.FilterGroupWidget.less @@ -1,3 +1,5 @@ +@import 'mediawiki.mixins'; + .mw-rcfilters-ui-filterGroupWidget { padding-bottom: 0.5em; @@ -6,15 +8,12 @@ background: #eaecf0; padding: 0.5em 0.75em; color: #555a5d; + .box-sizing( border-box ); } - &-invalid-notice { - padding: 0.5em; - font-style: italic; - display: none; - - .mw-rcfilters-ui-filterGroupWidget-invalid & { - display: block; + &-active { + .mw-rcfilters-ui-filterGroupWidget-title { + font-weight: bold; } } } diff --git a/resources/src/mediawiki.rcfilters/styles/mw.rcfilters.ui.FilterItemHighlightButton.less b/resources/src/mediawiki.rcfilters/styles/mw.rcfilters.ui.FilterItemHighlightButton.less new file mode 100644 index 0000000000..198f599715 --- /dev/null +++ b/resources/src/mediawiki.rcfilters/styles/mw.rcfilters.ui.FilterItemHighlightButton.less @@ -0,0 +1,30 @@ +@import 'mw.rcfilters.mixins'; + +.mw-rcfilters-ui-filterItemHighlightButton { + .oo-ui-buttonWidget.oo-ui-popupButtonWidget .oo-ui-buttonElement-button > &-circle { + display: inline-block; + vertical-align: middle; + background-image: none; + margin-right: 0.2em; + + &-color { + &-c1 { + // These values duplicate the sizing of the icon + // width/height 1.875em + .mw-rcfilters-mixin-circle( @highlight-c1, 1.875em, 0.2em 0 ); + } + &-c2 { + .mw-rcfilters-mixin-circle( @highlight-c2, 1.875em, 0.2em 0 ); + } + &-c3 { + .mw-rcfilters-mixin-circle( @highlight-c3, 1.875em, 0.2em 0 ); + } + &-c4 { + .mw-rcfilters-mixin-circle( @highlight-c4, 1.875em, 0.2em 0 ); + } + &-c5 { + .mw-rcfilters-mixin-circle( @highlight-c5, 1.875em, 0.2em 0 ); + } + } + } +} diff --git a/resources/src/mediawiki.rcfilters/styles/mw.rcfilters.ui.FilterItemWidget.less b/resources/src/mediawiki.rcfilters/styles/mw.rcfilters.ui.FilterItemWidget.less index ad0b816008..0e38942a75 100644 --- a/resources/src/mediawiki.rcfilters/styles/mw.rcfilters.ui.FilterItemWidget.less +++ b/resources/src/mediawiki.rcfilters/styles/mw.rcfilters.ui.FilterItemWidget.less @@ -1,10 +1,37 @@ +@import 'mediawiki.mixins'; + .mw-rcfilters-ui-filterItemWidget { - padding-left: 0.5em; + padding: 0 0.5em; + .box-sizing( border-box ); + + &:not( :last-child ) { + border-bottom: solid 1px #eaecf0; // Base 80 AAA + } + + &:hover { + background-color: #fbfbfb; + } + + .mw-rcfilters-ui-table { + padding-top: 0.5em; + } + + &-muted { + background-color: #f8f9fa; // Base90 AAA + .mw-rcfilters-ui-filterItemWidget-label-title, + .mw-rcfilters-ui-filterItemWidget-label-desc { + color: #54595d; // Base20 AAA + } + } + + &-selected { + background-color: #eaf3ff; // Accent90 AAA + } &-label { &-title { font-weight: bold; - font-size: 1.2em; + font-size: 1.15em; color: #222; } &-desc { @@ -12,7 +39,15 @@ } } - .oo-ui-fieldLayout.oo-ui-fieldLayout-align-inline { - margin-bottom: 0 !important; + &-filterCheckbox { + .oo-ui-fieldLayout.oo-ui-fieldLayout-align-inline { + // Override margin-top and -bottom rules from FieldLayout + margin: 0 !important; /* stylelint-disable-line declaration-no-important */ + } + } + + &-highlightButton { + width: 4em; + padding-left: 1em; } } diff --git a/resources/src/mediawiki.rcfilters/styles/mw.rcfilters.ui.FilterWrapperWidget.less b/resources/src/mediawiki.rcfilters/styles/mw.rcfilters.ui.FilterWrapperWidget.less index a610e8f956..970d140efb 100644 --- a/resources/src/mediawiki.rcfilters/styles/mw.rcfilters.ui.FilterWrapperWidget.less +++ b/resources/src/mediawiki.rcfilters/styles/mw.rcfilters.ui.FilterWrapperWidget.less @@ -1,33 +1,34 @@ .mw-rcfilters-ui-filterWrapperWidget { width: 100%; - - .oo-ui-capsuleMultiselectWidget { - max-width: none; - - &.oo-ui-widget-enabled .oo-ui-capsuleMultiselectWidget-handle { - // TODO: Unify colors with official design palette - background-color: #f8f9fa; - border: 1px solid #a2a9b1; - min-height: 5.5em; - padding: 0.75em; - - } - } + // Make sure this uses the interface direction, not the content direction + direction: ltr; &-popup { // We have to override OOUI's definition, which is set // on the inline style of the popup - margin-top: 2em !important; + margin-top: 2.4em !important; /* stylelint-disable-line declaration-no-important */ max-width: 650px; + + .oo-ui-popupWidget-body { + max-height: 70vh; + } + + .oo-ui-popupWidget-footer { + background-color: #f8f9fa; + text-align: right; + padding: 0.5em; + } } &-search { max-width: none; margin-top: -0.5em; - } - &-capsule-invalid-filter { - // TODO: Unify colors with official design palette - background: red; + input { + // We need to reiterate the directionality + // for the input as well to literally override + // a MediaWiki CSS rule that turns it 'ltr' + direction: ltr; + } } } diff --git a/resources/src/mediawiki.rcfilters/styles/mw.rcfilters.ui.FiltersListWidget.less b/resources/src/mediawiki.rcfilters/styles/mw.rcfilters.ui.FiltersListWidget.less index b874e0f9c1..3334d84b46 100644 --- a/resources/src/mediawiki.rcfilters/styles/mw.rcfilters.ui.FiltersListWidget.less +++ b/resources/src/mediawiki.rcfilters/styles/mw.rcfilters.ui.FiltersListWidget.less @@ -4,8 +4,22 @@ padding: 0.75em; // TODO: Unify colors with official design palette color: #54595d; + } + + &-header { border-bottom: 1px solid #c8ccd1; background: #f8f9fa; + overflow: hidden; + + &-highlight { + width: 1em; + vertical-align: middle; + } + + &-title { + width: 100%; + vertical-align: middle; + } } &-noresults { diff --git a/resources/src/mediawiki.rcfilters/styles/mw.rcfilters.ui.HighlightColorPickerWidget.less b/resources/src/mediawiki.rcfilters/styles/mw.rcfilters.ui.HighlightColorPickerWidget.less new file mode 100644 index 0000000000..88f1195086 --- /dev/null +++ b/resources/src/mediawiki.rcfilters/styles/mw.rcfilters.ui.HighlightColorPickerWidget.less @@ -0,0 +1,75 @@ +@import 'mw.rcfilters.mixins'; + +.mw-rcfilters-ui-highlightColorPickerWidget { + &-label { + display: block; + font-weight: bold; + font-size: 1.2em; + } + + &-buttonSelect { + &-color { + .oo-ui-iconElement-icon { + width: 2em; + height: 2em; + } + + &-none { + .mw-rcfilters-mixin-circle( @highlight-none, 2em, 0.5em, true ); + // Override border to dashed + border: 1px dashed #565656; + + &.oo-ui-buttonOptionWidget.oo-ui-buttonElement-active, + &.oo-ui-buttonOptionWidget.oo-ui-optionWidget-pressed, + &.oo-ui-buttonOptionWidget.oo-ui-optionWidget-selected { + background-color: @highlight-none; + } + } + &-c1 { + .mw-rcfilters-mixin-circle( @highlight-c1 ); + + &.oo-ui-buttonOptionWidget.oo-ui-buttonElement-active, + &.oo-ui-buttonOptionWidget.oo-ui-optionWidget-pressed, + &.oo-ui-buttonOptionWidget.oo-ui-optionWidget-selected { + background-color: @highlight-c1; + } + } + &-c2 { + .mw-rcfilters-mixin-circle( @highlight-c2 ); + + &.oo-ui-buttonOptionWidget.oo-ui-buttonElement-active, + &.oo-ui-buttonOptionWidget.oo-ui-optionWidget-pressed, + &.oo-ui-buttonOptionWidget.oo-ui-optionWidget-selected { + background-color: @highlight-c2; + } + } + &-c3 { + .mw-rcfilters-mixin-circle( @highlight-c3 ); + + &.oo-ui-buttonOptionWidget.oo-ui-buttonElement-active, + &.oo-ui-buttonOptionWidget.oo-ui-optionWidget-pressed, + &.oo-ui-buttonOptionWidget.oo-ui-optionWidget-selected { + background-color: @highlight-c3; + } + } + &-c4 { + .mw-rcfilters-mixin-circle( @highlight-c4 ); + + &.oo-ui-buttonOptionWidget.oo-ui-buttonElement-active, + &.oo-ui-buttonOptionWidget.oo-ui-optionWidget-pressed, + &.oo-ui-buttonOptionWidget.oo-ui-optionWidget-selected { + background-color: @highlight-c4; + } + } + &-c5 { + .mw-rcfilters-mixin-circle( @highlight-c5 ); + + &.oo-ui-buttonOptionWidget.oo-ui-buttonElement-active, + &.oo-ui-buttonOptionWidget.oo-ui-optionWidget-pressed, + &.oo-ui-buttonOptionWidget.oo-ui-optionWidget-selected { + background-color: @highlight-c5; + } + } + } + } +} diff --git a/resources/src/mediawiki.rcfilters/styles/mw.rcfilters.ui.Overlay.less b/resources/src/mediawiki.rcfilters/styles/mw.rcfilters.ui.Overlay.less new file mode 100644 index 0000000000..06840da79b --- /dev/null +++ b/resources/src/mediawiki.rcfilters/styles/mw.rcfilters.ui.Overlay.less @@ -0,0 +1,8 @@ +.mw-rcfilters-ui-overlay { + font-size: 0.875em; + position: absolute; + top: 0; + right: 0; + left: 0; + z-index: 1; +} diff --git a/resources/src/mediawiki.rcfilters/styles/mw.rcfilters.ui.less b/resources/src/mediawiki.rcfilters/styles/mw.rcfilters.ui.less new file mode 100644 index 0000000000..957e9e9009 --- /dev/null +++ b/resources/src/mediawiki.rcfilters/styles/mw.rcfilters.ui.less @@ -0,0 +1,16 @@ +.mw-rcfilters-ui { + &-table { + display: table; + width: 100%; + } + + &-row { + display: table-row; + } + + &-cell { + display: table-cell; + vertical-align: top; + } +} + diff --git a/resources/src/mediawiki.rcfilters/styles/mw.rcfilters.variables.less b/resources/src/mediawiki.rcfilters/styles/mw.rcfilters.variables.less new file mode 100644 index 0000000000..1ef49e2102 --- /dev/null +++ b/resources/src/mediawiki.rcfilters/styles/mw.rcfilters.variables.less @@ -0,0 +1,19 @@ +// Highlight color definitions +@highlight-none: #fff; +@highlight-c1: #36c; +@highlight-c2: #00af89; +@highlight-c3: #fc3; +@highlight-c4: #ff6d22; +@highlight-c5: #d33; + +// Muted state +@muted-opacity: 0.5; + +// Result list circle indicators +// Defined and used in mw.rcfilters.ui.ChangesListWrapperWidget.less +@result-circle-margin: 0.1em; +@result-circle-general-margin: 0.5em; +// In these small sizes, 'em' appears +// squished and inconsistent. +// Pixels are better for this use case: +@result-circle-diameter: 5px; diff --git a/resources/src/mediawiki.rcfilters/ui/mw.rcfilters.ui.CapsuleItemWidget.js b/resources/src/mediawiki.rcfilters/ui/mw.rcfilters.ui.CapsuleItemWidget.js new file mode 100644 index 0000000000..f28523a765 --- /dev/null +++ b/resources/src/mediawiki.rcfilters/ui/mw.rcfilters.ui.CapsuleItemWidget.js @@ -0,0 +1,207 @@ +( function ( mw, $ ) { + /** + * Extend OOUI's CapsuleItemWidget to also display a popup on hover. + * + * @class + * @extends OO.ui.CapsuleItemWidget + * @mixins OO.ui.mixin.PopupElement + * + * @constructor + * @param {mw.rcfilters.Controller} controller + * @param {mw.rcfilters.dm.FilterItem} model Item model + * @param {Object} config Configuration object + * @cfg {jQuery} [$overlay] A jQuery object serving as overlay for popups + */ + mw.rcfilters.ui.CapsuleItemWidget = function MwRcfiltersUiCapsuleItemWidget( controller, model, config ) { + var $popupContent = $( '<div>' ) + .addClass( 'mw-rcfilters-ui-capsuleItemWidget-popup-content' ), + descLabelWidget = new OO.ui.LabelWidget(); + + // Configuration initialization + config = config || {}; + + this.controller = controller; + this.model = model; + this.$overlay = config.$overlay || this.$element; + this.positioned = false; + this.popupTimeoutShow = null; + this.popupTimeoutHide = null; + + // Parent constructor + mw.rcfilters.ui.CapsuleItemWidget.parent.call( this, $.extend( { + data: this.model.getName(), + label: this.model.getLabel() + }, config ) ); + + // Mixin constructors + OO.ui.mixin.PopupElement.call( this, $.extend( { + popup: { + padded: false, + align: 'center', + position: 'above', + $content: $popupContent + .append( descLabelWidget.$element ), + $floatableContainer: this.$element, + classes: [ 'mw-rcfilters-ui-capsuleItemWidget-popup' ] + } + }, config ) ); + + // Set initial text for the popup - the description + descLabelWidget.setLabel( this.model.getDescription() ); + + this.$highlight = $( '<div>' ) + .addClass( 'mw-rcfilters-ui-capsuleItemWidget-highlight' ); + + // Events + this.model.connect( this, { update: 'onModelUpdate' } ); + + this.closeButton.$element.on( 'mousedown', this.onCloseButtonMouseDown.bind( this ) ); + + // Initialization + this.$overlay.append( this.popup.$element ); + this.$element + .prepend( this.$highlight ) + .attr( 'aria-haspopup', 'true' ) + .addClass( 'mw-rcfilters-ui-capsuleItemWidget' ) + .on( 'mouseenter', this.onMouseEnter.bind( this ) ) + .on( 'mouseleave', this.onMouseLeave.bind( this ) ); + + this.setCurrentMuteState(); + this.setHighlightColor(); + }; + + OO.inheritClass( mw.rcfilters.ui.CapsuleItemWidget, OO.ui.CapsuleItemWidget ); + OO.mixinClass( mw.rcfilters.ui.CapsuleItemWidget, OO.ui.mixin.PopupElement ); + + /** + * Respond to model update event + */ + mw.rcfilters.ui.CapsuleItemWidget.prototype.onModelUpdate = function () { + this.setCurrentMuteState(); + + this.setHighlightColor(); + }; + + /** + * Override mousedown event to prevent its propagation to the parent, + * since the parent (the multiselect widget) focuses the popup when its + * mousedown event is fired. + * + * @param {jQuery.Event} e Event + */ + mw.rcfilters.ui.CapsuleItemWidget.prototype.onCloseButtonMouseDown = function ( e ) { + e.stopPropagation(); + }; + + /** + * Emit a click event when the capsule is clicked so we can aggregate this + * in the parent (the capsule) + */ + mw.rcfilters.ui.CapsuleItemWidget.prototype.onClick = function () { + this.emit( 'click' ); + }; + + /** + * Override the event listening to the item close button click + */ + mw.rcfilters.ui.CapsuleItemWidget.prototype.onCloseClick = function () { + var element = this.getElementGroup(); + + if ( element && $.isFunction( element.removeItems ) ) { + element.removeItems( [ this ] ); + } + + // Respond to user removing the filter + this.controller.clearFilter( this.model.getName() ); + }; + + mw.rcfilters.ui.CapsuleItemWidget.prototype.setHighlightColor = function () { + var selectedColor = this.model.isHighlightEnabled() ? this.model.getHighlightColor() : null; + + this.$highlight + .attr( 'data-color', selectedColor ) + .toggleClass( + 'mw-rcfilters-ui-capsuleItemWidget-highlight-highlighted', + !!selectedColor + ); + }; + + /** + * Set the current mute state for this item + */ + mw.rcfilters.ui.CapsuleItemWidget.prototype.setCurrentMuteState = function () { + this.$element + .toggleClass( + 'mw-rcfilters-ui-capsuleItemWidget-muted', + !this.model.isSelected() || + this.model.isIncluded() || + this.model.isFullyCovered() + ) + .toggleClass( + 'mw-rcfilters-ui-capsuleItemWidget-conflicted', + this.model.isConflicted() + ); + }; + + /** + * Respond to mouse enter event + */ + mw.rcfilters.ui.CapsuleItemWidget.prototype.onMouseEnter = function () { + if ( this.model.getDescription() ) { + if ( !this.positioned ) { + // Recalculate anchor position to be center of the capsule item + this.popup.$anchor.css( 'margin-left', ( this.$element.width() / 2 ) ); + this.positioned = true; + } + + // Set timeout for the popup to show + this.popupTimeoutShow = setTimeout( function () { + this.popup.toggle( true ); + }.bind( this ), 500 ); + + // Cancel the hide timeout + clearTimeout( this.popupTimeoutHide ); + this.popupTimeoutHide = null; + } + }; + + /** + * Respond to mouse leave event + */ + mw.rcfilters.ui.CapsuleItemWidget.prototype.onMouseLeave = function () { + this.popupTimeoutHide = setTimeout( function () { + this.popup.toggle( false ); + }.bind( this ), 250 ); + + // Clear the show timeout + clearTimeout( this.popupTimeoutShow ); + this.popupTimeoutShow = null; + }; + + /** + * Set selected state on this widget + * + * @param {boolean} [isSelected] Widget is selected + */ + mw.rcfilters.ui.CapsuleItemWidget.prototype.toggleSelected = function ( isSelected ) { + isSelected = isSelected !== undefined ? isSelected : !this.selected; + + if ( this.selected !== isSelected ) { + this.selected = isSelected; + + this.$element.toggleClass( 'mw-rcfilters-ui-capsuleItemWidget-selected', this.selected ); + } + }; + + /** + * Remove and destroy external elements of this widget + */ + mw.rcfilters.ui.CapsuleItemWidget.prototype.destroy = function () { + // Destroy the popup + this.popup.$element.detach(); + + // Disconnect events + this.model.disconnect( this ); + this.closeButton.disconnect( this ); + }; +}( mediaWiki, jQuery ) ); diff --git a/resources/src/mediawiki.rcfilters/ui/mw.rcfilters.ui.ChangesListWrapperWidget.js b/resources/src/mediawiki.rcfilters/ui/mw.rcfilters.ui.ChangesListWrapperWidget.js new file mode 100644 index 0000000000..84248e1c85 --- /dev/null +++ b/resources/src/mediawiki.rcfilters/ui/mw.rcfilters.ui.ChangesListWrapperWidget.js @@ -0,0 +1,180 @@ +( function ( mw ) { + /** + * List of changes + * + * @extends OO.ui.Widget + * @mixins OO.ui.mixin.PendingElement + * + * @constructor + * @param {mw.rcfilters.dm.FiltersViewModel} filtersViewModel View model + * @param {mw.rcfilters.dm.ChangesListViewModel} changesListViewModel View model + * @param {jQuery} $changesListRoot Root element of the changes list to attach to + * @param {Object} config Configuration object + */ + mw.rcfilters.ui.ChangesListWrapperWidget = function MwRcfiltersUiChangesListWrapperWidget( + filtersViewModel, + changesListViewModel, + $changesListRoot, + config + ) { + config = $.extend( {}, config, { + $element: $changesListRoot + } ); + + // Parent + mw.rcfilters.ui.ChangesListWrapperWidget.parent.call( this, config ); + // Mixin constructors + OO.ui.mixin.PendingElement.call( this, config ); + + this.filtersViewModel = filtersViewModel; + this.changesListViewModel = changesListViewModel; + + // Events + this.filtersViewModel.connect( this, { + itemUpdate: 'onItemUpdate', + highlightChange: 'onHighlightChange' + } ); + this.changesListViewModel.connect( this, { + invalidate: 'onModelInvalidate', + update: 'onModelUpdate' + } ); + + this.$element.addClass( 'mw-rcfilters-ui-changesListWrapperWidget' ); + + // Set up highlight containers + this.setupHighlightContainers( this.$element ); + }; + + /* Initialization */ + + OO.inheritClass( mw.rcfilters.ui.ChangesListWrapperWidget, OO.ui.Widget ); + OO.mixinClass( mw.rcfilters.ui.ChangesListWrapperWidget, OO.ui.mixin.PendingElement ); + + /** + * Respond to the highlight feature being toggled on and off + * + * @param {boolean} highlightEnabled + */ + mw.rcfilters.ui.ChangesListWrapperWidget.prototype.onHighlightChange = function ( highlightEnabled ) { + if ( highlightEnabled ) { + this.applyHighlight(); + } else { + this.clearHighlight(); + } + }; + + /** + * Respond to a filter item model update + */ + mw.rcfilters.ui.ChangesListWrapperWidget.prototype.onItemUpdate = function () { + if ( this.filtersViewModel.isHighlightEnabled() ) { + this.clearHighlight(); + this.applyHighlight(); + } + }; + + /** + * Respond to changes list model invalidate + */ + mw.rcfilters.ui.ChangesListWrapperWidget.prototype.onModelInvalidate = function () { + this.pushPending(); + }; + + /** + * Respond to changes list model update + * + * @param {jQuery|string} $changesListContent The content of the updated changes list + */ + mw.rcfilters.ui.ChangesListWrapperWidget.prototype.onModelUpdate = function ( $changesListContent ) { + var isEmpty = $changesListContent === 'NO_RESULTS'; + + this.$element.toggleClass( 'mw-changeslist', !isEmpty ); + this.$element.toggleClass( 'mw-changeslist-empty', isEmpty ); + if ( isEmpty ) { + this.$changesListContent = null; + this.$element.empty().append( + document.createTextNode( mw.message( 'recentchanges-noresult' ).text() ) + ); + } else { + this.$changesListContent = $changesListContent; + this.$element.empty().append( this.$changesListContent ); + // Set up highlight containers + this.setupHighlightContainers( this.$element ); + + // Apply highlight + this.applyHighlight(); + + // Make sure enhanced RC re-initializes correctly + mw.hook( 'wikipage.content' ).fire( this.$element ); + } + this.popPending(); + }; + + /** + * Set up the highlight containers with all color circle indicators. + * + * @param {jQuery|string} $content The content of the updated changes list + */ + mw.rcfilters.ui.ChangesListWrapperWidget.prototype.setupHighlightContainers = function ( $content ) { + var $highlights = $( '<div>' ) + .addClass( 'mw-rcfilters-ui-changesListWrapperWidget-highlights' ) + .append( + $( '<div>' ) + .addClass( 'mw-rcfilters-ui-changesListWrapperWidget-highlights-color-none' ) + .prop( 'data-color', 'none' ) + ); + + mw.rcfilters.HighlightColors.forEach( function ( color ) { + $highlights.append( + $( '<div>' ) + .addClass( 'mw-rcfilters-ui-changesListWrapperWidget-highlights-color-' + color ) + .prop( 'data-color', color ) + ); + } ); + + if ( Number( mw.user.options.get( 'usenewrc' ) ) ) { + // Enhanced RC + $content.find( 'td.mw-enhanced-rc' ) + .parent() + .prepend( + $( '<td>' ) + .append( $highlights.clone() ) + ); + } else { + // Regular RC + $content.find( 'ul.special li' ) + .prepend( $highlights.clone() ); + } + }; + + /** + * Apply color classes based on filters highlight configuration + */ + mw.rcfilters.ui.ChangesListWrapperWidget.prototype.applyHighlight = function () { + if ( !this.filtersViewModel.isHighlightEnabled() ) { + return; + } + + this.filtersViewModel.getHighlightedItems().forEach( function ( filterItem ) { + // Add highlight class to all highlighted list items + this.$element.find( '.' + filterItem.getCssClass() ) + .addClass( 'mw-rcfilters-highlight-color-' + filterItem.getHighlightColor() ); + }.bind( this ) ); + + // Turn on highlights + this.$element.addClass( 'mw-rcfilters-ui-changesListWrapperWidget-highlighted' ); + }; + + /** + * Remove all color classes + */ + mw.rcfilters.ui.ChangesListWrapperWidget.prototype.clearHighlight = function () { + // Remove highlight classes + mw.rcfilters.HighlightColors.forEach( function ( color ) { + this.$element.find( '.mw-rcfilters-highlight-color-' + color ).removeClass( 'mw-rcfilters-highlight-color-' + color ); + }.bind( this ) ); + + // Turn off highlights + this.$element.removeClass( 'mw-rcfilters-ui-changesListWrapperWidget-highlighted' ); + }; +}( mediaWiki ) ); diff --git a/resources/src/mediawiki.rcfilters/ui/mw.rcfilters.ui.CheckboxInputWidget.js b/resources/src/mediawiki.rcfilters/ui/mw.rcfilters.ui.CheckboxInputWidget.js new file mode 100644 index 0000000000..86b3b11f24 --- /dev/null +++ b/resources/src/mediawiki.rcfilters/ui/mw.rcfilters.ui.CheckboxInputWidget.js @@ -0,0 +1,41 @@ +( function ( mw ) { + /** + * A widget representing a single toggle filter + * + * @extends OO.ui.CheckboxInputWidget + * + * @constructor + * @param {Object} config Configuration object + */ + mw.rcfilters.ui.CheckboxInputWidget = function MwRcfiltersUiCheckboxInputWidget( config ) { + config = config || {}; + + // Parent + mw.rcfilters.ui.CheckboxInputWidget.parent.call( this, config ); + + // Event + this.$input.on( 'change', this.onUserChange.bind( this ) ); + }; + + /* Initialization */ + + OO.inheritClass( mw.rcfilters.ui.CheckboxInputWidget, OO.ui.CheckboxInputWidget ); + + /* Events */ + + /** + * @event userChange + * @param {boolean} Current state of the checkbox + * + * The user has checked or unchecked this checkbox + */ + + /* Methods */ + + /** + * Respond to checkbox change by a user and emit 'userChange'. + */ + mw.rcfilters.ui.CheckboxInputWidget.prototype.onUserChange = function () { + this.emit( 'userChange', this.$input.prop( 'checked' ) ); + }; +}( mediaWiki ) ); diff --git a/resources/src/mediawiki.rcfilters/ui/mw.rcfilters.ui.FilterCapsuleMultiselectWidget.js b/resources/src/mediawiki.rcfilters/ui/mw.rcfilters.ui.FilterCapsuleMultiselectWidget.js index df6cf8b7d5..a06b103bf5 100644 --- a/resources/src/mediawiki.rcfilters/ui/mw.rcfilters.ui.FilterCapsuleMultiselectWidget.js +++ b/resources/src/mediawiki.rcfilters/ui/mw.rcfilters.ui.FilterCapsuleMultiselectWidget.js @@ -2,33 +2,93 @@ /** * Filter-specific CapsuleMultiselectWidget * + * @class * @extends OO.ui.CapsuleMultiselectWidget * * @constructor + * @param {mw.rcfilters.Controller} controller RCFilters controller + * @param {mw.rcfilters.dm.FiltersViewModel} model RCFilters view model * @param {OO.ui.InputWidget} filterInput A filter input that focuses the capsule widget * @param {Object} config Configuration object + * @cfg {jQuery} [$overlay] A jQuery object serving as overlay for popups */ - mw.rcfilters.ui.FilterCapsuleMultiselectWidget = function MwRcfiltersUiFilterCapsuleMultiselectWidget( filterInput, config ) { + mw.rcfilters.ui.FilterCapsuleMultiselectWidget = function MwRcfiltersUiFilterCapsuleMultiselectWidget( controller, model, filterInput, config ) { + var title = new OO.ui.LabelWidget( { + label: mw.msg( 'rcfilters-activefilters' ), + classes: [ 'mw-rcfilters-ui-filterCapsuleMultiselectWidget-wrapper-content-title' ] + } ), + $contentWrapper = $( '<div>' ) + .addClass( 'mw-rcfilters-ui-filterCapsuleMultiselectWidget-wrapper' ); + + this.$overlay = config.$overlay || this.$element; + // Parent - mw.rcfilters.ui.FilterCapsuleMultiselectWidget.parent.call( this, $.extend( { - $autoCloseIgnore: filterInput.$element + mw.rcfilters.ui.FilterCapsuleMultiselectWidget.parent.call( this, $.extend( true, { + popup: { $autoCloseIgnore: filterInput.$element.add( this.$overlay ) } }, config ) ); + this.controller = controller; + this.model = model; this.filterInput = filterInput; + this.isSelecting = false; + this.selected = null; - this.$content.prepend( - $( '<div>' ) - .addClass( 'mw-rcfilters-ui-filterCapsuleMultiselectWidget-content-title' ) - .text( mw.msg( 'rcfilters-activefilters' ) ) - ); + this.resetButton = new OO.ui.ButtonWidget( { + icon: 'trash', + framed: false, + title: mw.msg( 'rcfilters-clear-all-filters' ), + classes: [ 'mw-rcfilters-ui-filterCapsuleMultiselectWidget-resetButton' ] + } ); + + this.emptyFilterMessage = new OO.ui.LabelWidget( { + label: mw.msg( 'rcfilters-empty-filter' ), + classes: [ 'mw-rcfilters-ui-filterCapsuleMultiselectWidget-emptyFilters' ] + } ); + this.$content.append( this.emptyFilterMessage.$element ); // Events + this.resetButton.connect( this, { click: 'onResetButtonClick' } ); + this.model.connect( this, { + itemUpdate: 'onModelItemUpdate', + highlightChange: 'onModelHighlightChange' + } ); + this.aggregate( { click: 'capsuleItemClick' } ); + // Add the filterInput as trigger this.filterInput.$input - .on( 'focus', this.onFocusForPopup.bind( this ) ); + .on( 'focus', this.focus.bind( this ) ); + + // Build the content + $contentWrapper.append( + title.$element, + $( '<div>' ) + .addClass( 'mw-rcfilters-ui-table' ) + .append( + // The filter list and button should appear side by side regardless of how + // wide the button is; the button also changes its width depending + // on language and its state, so the safest way to present both side + // by side is with a table layout + $( '<div>' ) + .addClass( 'mw-rcfilters-ui-row' ) + .append( + this.$content + .addClass( 'mw-rcfilters-ui-cell' ) + .addClass( 'mw-rcfilters-ui-filterCapsuleMultiselectWidget-cell-filters' ), + $( '<div>' ) + .addClass( 'mw-rcfilters-ui-cell' ) + .addClass( 'mw-rcfilters-ui-filterCapsuleMultiselectWidget-cell-reset' ) + .append( this.resetButton.$element ) + ) + ) + ); + + // Initialize + this.$handle.append( $contentWrapper ); this.$element .addClass( 'mw-rcfilters-ui-filterCapsuleMultiselectWidget' ); + + this.reevaluateResetRestoreState(); }; /* Initialization */ @@ -46,25 +106,180 @@ /* Methods */ + /** + * Respond to model itemUpdate event + * + * @param {mw.rcfilters.dm.FilterItem} item Filter item model + */ + mw.rcfilters.ui.FilterCapsuleMultiselectWidget.prototype.onModelItemUpdate = function ( item ) { + if ( + item.isSelected() || + ( + this.model.isHighlightEnabled() && + item.isHighlightSupported() && + item.getHighlightColor() + ) + ) { + this.addItemByName( item.getName() ); + } else { + this.removeItemByName( item.getName() ); + } + + // Re-evaluate reset state + this.reevaluateResetRestoreState(); + }; + + /** + * Respond to highlightChange event + * + * @param {boolean} isHighlightEnabled Highlight is enabled + */ + mw.rcfilters.ui.FilterCapsuleMultiselectWidget.prototype.onModelHighlightChange = function ( isHighlightEnabled ) { + var highlightedItems = this.model.getHighlightedItems(); + + if ( isHighlightEnabled ) { + // Add capsule widgets + highlightedItems.forEach( function ( filterItem ) { + this.addItemByName( filterItem.getName() ); + }.bind( this ) ); + } else { + // Remove capsule widgets if they're not selected + highlightedItems.forEach( function ( filterItem ) { + if ( !filterItem.isSelected() ) { + this.removeItemByName( filterItem.getName() ); + } + }.bind( this ) ); + } + }; + + /** + * Respond to click event on the reset button + */ + mw.rcfilters.ui.FilterCapsuleMultiselectWidget.prototype.onResetButtonClick = function () { + if ( this.model.areCurrentFiltersEmpty() ) { + // Reset to default filters + this.controller.resetToDefaults(); + } else { + // Reset to have no filters + this.controller.emptyFilters(); + } + }; + + /** + * Reevaluate the restore state for the widget between setting to defaults and clearing all filters + */ + mw.rcfilters.ui.FilterCapsuleMultiselectWidget.prototype.reevaluateResetRestoreState = function () { + var defaultsAreEmpty = this.model.areDefaultFiltersEmpty(), + currFiltersAreEmpty = this.model.areCurrentFiltersEmpty(), + hideResetButton = currFiltersAreEmpty && defaultsAreEmpty; + + this.resetButton.setIcon( + currFiltersAreEmpty ? 'history' : 'trash' + ); + + this.resetButton.setLabel( + currFiltersAreEmpty ? mw.msg( 'rcfilters-restore-default-filters' ) : '' + ); + + this.resetButton.toggle( !hideResetButton ); + this.emptyFilterMessage.toggle( currFiltersAreEmpty ); + }; + + /** + * Mark an item widget as selected + * + * @param {mw.rcfilters.ui.CapsuleItemWidget} item Capsule widget + */ + mw.rcfilters.ui.FilterCapsuleMultiselectWidget.prototype.select = function ( item ) { + if ( this.selected !== item ) { + // Unselect previous + if ( this.selected ) { + this.selected.toggleSelected( false ); + } + + // Select new one + this.selected = item; + if ( this.selected ) { + item.toggleSelected( true ); + } + } + }; + + /** + * Reset selection and remove selected states from all items + */ + mw.rcfilters.ui.FilterCapsuleMultiselectWidget.prototype.resetSelection = function () { + if ( this.selected !== null ) { + this.selected = null; + this.getItems().forEach( function ( capsuleWidget ) { + capsuleWidget.toggleSelected( false ); + } ); + } + }; + /** * @inheritdoc */ - mw.rcfilters.ui.FilterCapsuleMultiselectWidget.prototype.onFocusForPopup = function () { + mw.rcfilters.ui.FilterCapsuleMultiselectWidget.prototype.createItemWidget = function ( data ) { + var item = this.model.getItemByName( data ); + + if ( !item ) { + return; + } + + return new mw.rcfilters.ui.CapsuleItemWidget( + this.controller, + item, + { $overlay: this.$overlay } + ); + }; + + /** + * Add items by their filter name + * + * @param {string} name Filter name + */ + mw.rcfilters.ui.FilterCapsuleMultiselectWidget.prototype.addItemByName = function ( name ) { + var item = this.model.getItemByName( name ); + + if ( !item ) { + return; + } + + // Check that the item isn't already added + if ( !this.getItemFromData( name ) ) { + this.addItems( [ this.createItemWidget( name ) ] ); + } + }; + + /** + * Remove items by their filter name + * + * @param {string} name Filter name + */ + mw.rcfilters.ui.FilterCapsuleMultiselectWidget.prototype.removeItemByName = function ( name ) { + this.removeItemsFromData( [ name ] ); + }; + + /** + * @inheritdoc + */ + mw.rcfilters.ui.FilterCapsuleMultiselectWidget.prototype.focus = function () { // Override this method; we don't want to focus on the popup, and we // don't want to bind the size to the handle. if ( !this.isDisabled() ) { this.popup.toggle( true ); + this.filterInput.$input.get( 0 ).focus(); } + return this; }; /** * @inheritdoc */ - mw.rcfilters.ui.FilterCapsuleMultiselectWidget.prototype.removeItems = function ( items ) { - // Parent - mw.rcfilters.ui.FilterCapsuleMultiselectWidget.parent.prototype.removeItems.call( this, items ); - - this.emit( 'remove', items.map( function ( item ) { return item.getData(); } ) ); + mw.rcfilters.ui.FilterCapsuleMultiselectWidget.prototype.onFocusForPopup = function () { + // HACK can be removed once I21b8cff4048 is merged in oojs-ui + this.focus(); }; /** @@ -88,4 +303,26 @@ this.menu.selectItem(); this.menu.highlightItem(); }; + + /** + * @inheritdoc + */ + mw.rcfilters.ui.FilterCapsuleMultiselectWidget.prototype.removeItems = function ( items ) { + // Parent call + mw.rcfilters.ui.FilterCapsuleMultiselectWidget.parent.prototype.removeItems.call( this, items ); + + // Destroy the item widget when it is removed + // This is done because we re-add items by recreating them, rather than hiding them + // and items include popups, that will just continue to be created and appended + // unnecessarily. + items.forEach( function ( widget ) { + widget.destroy(); + } ); + }; + + /** + * Override 'editItem' since it tries to use $input which does + * not exist when a popup is available. + */ + mw.rcfilters.ui.FilterCapsuleMultiselectWidget.prototype.editItem = function () {}; }( mediaWiki, jQuery ) ); diff --git a/resources/src/mediawiki.rcfilters/ui/mw.rcfilters.ui.FilterGroupWidget.js b/resources/src/mediawiki.rcfilters/ui/mw.rcfilters.ui.FilterGroupWidget.js index 92ae4d194f..a750c44f8c 100644 --- a/resources/src/mediawiki.rcfilters/ui/mw.rcfilters.ui.FilterGroupWidget.js +++ b/resources/src/mediawiki.rcfilters/ui/mw.rcfilters.ui.FilterGroupWidget.js @@ -7,25 +7,37 @@ * @mixins OO.ui.mixin.LabelElement * * @constructor - * @param {string} name Group name + * @param {mw.rcfilters.Controller} controller Controller + * @param {mw.rcfilters.dm.FilterGroup} model Filter group model * @param {Object} config Configuration object */ - mw.rcfilters.ui.FilterGroupWidget = function MwRcfiltersUiFilterGroupWidget( name, config ) { + mw.rcfilters.ui.FilterGroupWidget = function MwRcfiltersUiFilterGroupWidget( controller, model, config ) { config = config || {}; // Parent mw.rcfilters.ui.FilterGroupWidget.parent.call( this, config ); + + this.controller = controller; + this.model = model; + this.filters = {}; + // Mixin constructors OO.ui.mixin.GroupWidget.call( this, config ); OO.ui.mixin.LabelElement.call( this, $.extend( {}, config, { + label: this.model.getTitle(), $label: $( '<div>' ) .addClass( 'mw-rcfilters-ui-filterGroupWidget-title' ) } ) ); + this.$overlay = config.$overlay || this.$element; + + // Populate + this.populateFromModel(); - this.name = name; + this.model.connect( this, { update: 'onModelUpdate' } ); this.$element .addClass( 'mw-rcfilters-ui-filterGroupWidget' ) + .addClass( 'mw-rcfilters-ui-filterGroupWidget-name-' + this.model.getName() ) .append( this.$label, this.$group @@ -39,13 +51,60 @@ OO.mixinClass( mw.rcfilters.ui.FilterGroupWidget, OO.ui.mixin.GroupWidget ); OO.mixinClass( mw.rcfilters.ui.FilterGroupWidget, OO.ui.mixin.LabelElement ); + /** + * Respond to model update event + */ + mw.rcfilters.ui.FilterGroupWidget.prototype.onModelUpdate = function () { + this.$element.toggleClass( + 'mw-rcfilters-ui-filterGroupWidget-active', + this.model.isActive() + ); + }; + + /** + * Get an item widget from its filter name + * + * @param {string} filterName Filter name + * @return {mw.rcfilters.ui.FilterItemWidget} Item widget + */ + mw.rcfilters.ui.FilterGroupWidget.prototype.getItemWidget = function ( filterName ) { + return this.filters[ filterName ]; + }; + + /** + * Populate data from the model + */ + mw.rcfilters.ui.FilterGroupWidget.prototype.populateFromModel = function () { + var widget = this; + + this.clearItems(); + this.filters = {}; + + this.addItems( + this.model.getItems().map( function ( filterItem ) { + var groupWidget = new mw.rcfilters.ui.FilterItemWidget( + widget.controller, + filterItem, + { + label: filterItem.getLabel(), + description: filterItem.getDescription(), + $overlay: widget.$overlay + } + ); + + widget.filters[ filterItem.getName() ] = groupWidget; + + return groupWidget; + } ) + ); + }; + /** * Get the group name * * @return {string} Group name */ mw.rcfilters.ui.FilterGroupWidget.prototype.getName = function () { - return this.name; + return this.model.getName(); }; - }( mediaWiki, jQuery ) ); diff --git a/resources/src/mediawiki.rcfilters/ui/mw.rcfilters.ui.FilterItemHighlightButton.js b/resources/src/mediawiki.rcfilters/ui/mw.rcfilters.ui.FilterItemHighlightButton.js new file mode 100644 index 0000000000..889ba08cf4 --- /dev/null +++ b/resources/src/mediawiki.rcfilters/ui/mw.rcfilters.ui.FilterItemHighlightButton.js @@ -0,0 +1,77 @@ +( function ( mw, $ ) { + /** + * A button to configure highlight for a filter item + * + * @extends OO.ui.PopupButtonWidget + * + * @constructor + * @param {mw.rcfilters.Controller} controller RCFilters controller + * @param {mw.rcfilters.dm.FilterItem} model Filter item model + * @param {Object} [config] Configuration object + */ + mw.rcfilters.ui.FilterItemHighlightButton = function MwRcfiltersUiFilterItemHighlightButton( controller, model, config ) { + config = config || {}; + + this.colorPickerWidget = new mw.rcfilters.ui.HighlightColorPickerWidget( controller, model ); + + // Parent + mw.rcfilters.ui.FilterItemHighlightButton.parent.call( this, $.extend( {}, config, { + icon: 'highlight', + indicator: 'down', + popup: { + // TODO: There is a bug in non-anchored popups in + // OOUI, so we set this popup to "anchored" until + // the bug is fixed. + // See: https://phabricator.wikimedia.org/T159906 + anchor: true, + padded: true, + align: 'backwards', + horizontalPosition: 'end', + $floatableContainer: this.$element, + width: 290, + $content: this.colorPickerWidget.$element + } + } ) ); + + this.controller = controller; + this.model = model; + + // Event + this.model.connect( this, { update: 'onModelUpdate' } ); + this.colorPickerWidget.connect( this, { chooseColor: 'onChooseColor' } ); + + this.$element + .addClass( 'mw-rcfilters-ui-filterItemHighlightButton' ); + }; + + /* Initialization */ + + OO.inheritClass( mw.rcfilters.ui.FilterItemHighlightButton, OO.ui.PopupButtonWidget ); + + /* Methods */ + + /** + * Respond to item model update event + */ + mw.rcfilters.ui.FilterItemHighlightButton.prototype.onModelUpdate = function () { + var currentColor = this.model.getHighlightColor(), + widget = this; + + this.$icon.toggleClass( + 'mw-rcfilters-ui-filterItemHighlightButton-circle', + currentColor !== null + ); + + mw.rcfilters.HighlightColors.forEach( function ( c ) { + widget.$icon + .toggleClass( + 'mw-rcfilters-ui-filterItemHighlightButton-circle-color-' + c, + c === currentColor + ); + } ); + }; + + mw.rcfilters.ui.FilterItemHighlightButton.prototype.onChooseColor = function () { + this.popup.toggle( false ); + }; +}( mediaWiki, jQuery ) ); diff --git a/resources/src/mediawiki.rcfilters/ui/mw.rcfilters.ui.FilterItemWidget.js b/resources/src/mediawiki.rcfilters/ui/mw.rcfilters.ui.FilterItemWidget.js index b77df3ba74..4ea284b232 100644 --- a/resources/src/mediawiki.rcfilters/ui/mw.rcfilters.ui.FilterItemWidget.js +++ b/resources/src/mediawiki.rcfilters/ui/mw.rcfilters.ui.FilterItemWidget.js @@ -21,8 +21,9 @@ this.controller = controller; this.model = model; + this.selected = false; - this.checkboxWidget = new OO.ui.CheckboxInputWidget( { + this.checkboxWidget = new mw.rcfilters.ui.CheckboxInputWidget( { value: this.model.getName(), selected: this.model.isSelected() } ); @@ -40,19 +41,43 @@ ); } + this.highlightButton = new mw.rcfilters.ui.FilterItemHighlightButton( + this.controller, + this.model, + { + $overlay: config.$overlay || this.$element, + title: mw.msg( 'rcfilters-highlightmenu-help' ) + } + ); + this.highlightButton.toggle( this.model.isHighlightEnabled() ); + layout = new OO.ui.FieldLayout( this.checkboxWidget, { label: $label, align: 'inline' } ); // Event - this.checkboxWidget.connect( this, { change: 'onCheckboxChange' } ); + this.checkboxWidget.connect( this, { userChange: 'onCheckboxChange' } ); this.model.connect( this, { update: 'onModelUpdate' } ); + this.model.getGroupModel().connect( this, { update: 'onGroupModelUpdate' } ); this.$element .addClass( 'mw-rcfilters-ui-filterItemWidget' ) .append( - layout.$element + $( '<div>' ) + .addClass( 'mw-rcfilters-ui-table' ) + .append( + $( '<div>' ) + .addClass( 'mw-rcfilters-ui-row' ) + .append( + $( '<div>' ) + .addClass( 'mw-rcfilters-ui-cell mw-rcfilters-ui-filterItemWidget-filterCheckbox' ) + .append( layout.$element ), + $( '<div>' ) + .addClass( 'mw-rcfilters-ui-cell mw-rcfilters-ui-filterItemWidget-highlightButton' ) + .append( this.highlightButton.$element ) + ) + ) ); }; @@ -70,7 +95,7 @@ * @param {boolean} isSelected The checkbox is selected */ mw.rcfilters.ui.FilterItemWidget.prototype.onCheckboxChange = function ( isSelected ) { - this.controller.updateFilter( this.model.getName(), isSelected ); + this.controller.toggleFilterSelect( this.model.getName(), isSelected ); }; /** @@ -78,6 +103,49 @@ */ mw.rcfilters.ui.FilterItemWidget.prototype.onModelUpdate = function () { this.checkboxWidget.setSelected( this.model.isSelected() ); + + this.setCurrentMuteState(); + }; + + /** + * Respond to item group model update event + */ + mw.rcfilters.ui.FilterItemWidget.prototype.onGroupModelUpdate = function () { + this.setCurrentMuteState(); + }; + + /** + * Set selected state on this widget + * + * @param {boolean} [isSelected] Widget is selected + */ + mw.rcfilters.ui.FilterItemWidget.prototype.toggleSelected = function ( isSelected ) { + isSelected = isSelected !== undefined ? isSelected : !this.selected; + + if ( this.selected !== isSelected ) { + this.selected = isSelected; + + this.$element.toggleClass( 'mw-rcfilters-ui-filterItemWidget-selected', this.selected ); + } + }; + + /** + * Set the current mute state for this item + */ + mw.rcfilters.ui.FilterItemWidget.prototype.setCurrentMuteState = function () { + this.$element.toggleClass( + 'mw-rcfilters-ui-filterItemWidget-muted', + this.model.isConflicted() || + this.model.isIncluded() || + ( + // Item is also muted when any of the items in its group is active + this.model.getGroupModel().isActive() && + // But it isn't selected + !this.model.isSelected() + ) + ); + + this.highlightButton.toggle( this.model.isHighlightEnabled() ); }; /** @@ -88,5 +156,4 @@ mw.rcfilters.ui.FilterItemWidget.prototype.getName = function () { return this.model.getName(); }; - }( mediaWiki, jQuery ) ); diff --git a/resources/src/mediawiki.rcfilters/ui/mw.rcfilters.ui.FilterWrapperWidget.js b/resources/src/mediawiki.rcfilters/ui/mw.rcfilters.ui.FilterWrapperWidget.js index 3fcfc47c59..e64a4c055b 100644 --- a/resources/src/mediawiki.rcfilters/ui/mw.rcfilters.ui.FilterWrapperWidget.js +++ b/resources/src/mediawiki.rcfilters/ui/mw.rcfilters.ui.FilterWrapperWidget.js @@ -8,10 +8,12 @@ * @constructor * @param {mw.rcfilters.Controller} controller Controller * @param {mw.rcfilters.dm.FiltersViewModel} model View model - * @param {Object} config Configuration object + * @param {Object} [config] Configuration object * @cfg {Object} [filters] A definition of the filter groups in this list + * @cfg {jQuery} [$overlay] A jQuery object serving as overlay for popups */ mw.rcfilters.ui.FilterWrapperWidget = function MwRcfiltersUiFilterWrapperWidget( controller, model, config ) { + var $footer = $( '<div>' ); config = config || {}; // Parent @@ -21,26 +23,41 @@ this.controller = controller; this.model = model; - this.filtersInCapsule = []; + this.$overlay = config.$overlay || this.$element; this.filterPopup = new mw.rcfilters.ui.FiltersListWidget( this.controller, this.model, { - label: mw.msg( 'rcfilters-filterlist-title' ) + label: mw.msg( 'rcfilters-filterlist-title' ), + $overlay: this.$overlay } ); + $footer.append( + new OO.ui.ButtonWidget( { + framed: false, + icon: 'feedback', + flags: [ 'progressive' ], + label: mw.msg( 'rcfilters-filterlist-feedbacklink' ), + href: 'https://www.mediawiki.org/wiki/Help_talk:New_filters_for_edit_review' + } ).$element + ); + this.textInput = new OO.ui.TextInputWidget( { classes: [ 'mw-rcfilters-ui-filterWrapperWidget-search' ], icon: 'search', placeholder: mw.msg( 'rcfilters-search-placeholder' ) } ); - this.capsule = new mw.rcfilters.ui.FilterCapsuleMultiselectWidget( this.textInput, { + this.capsule = new mw.rcfilters.ui.FilterCapsuleMultiselectWidget( controller, this.model, this.textInput, { + $overlay: this.$overlay, popup: { $content: this.filterPopup.$element, - classes: [ 'mw-rcfilters-ui-filterWrapperWidget-popup' ] + $footer: $footer, + classes: [ 'mw-rcfilters-ui-filterWrapperWidget-popup' ], + width: 650, + hideWhenOutOfView: false } } ); @@ -50,12 +67,13 @@ itemUpdate: 'onModelItemUpdate' } ); this.textInput.connect( this, { - change: 'onTextInputChange' - } ); - this.capsule.connect( this, { - remove: 'onCapsuleRemoveItem' + change: 'onTextInputChange', + enter: 'onTextInputEnter' } ); + this.capsule.connect( this, { capsuleItemClick: 'onCapsuleItemClick' } ); + this.capsule.popup.connect( this, { toggle: 'onCapsulePopupToggle' } ); + // Initialize this.$element .addClass( 'mw-rcfilters-ui-filterWrapperWidget' ) .append( this.capsule.$element, this.textInput.$element ); @@ -66,6 +84,40 @@ OO.inheritClass( mw.rcfilters.ui.FilterWrapperWidget, OO.ui.Widget ); OO.mixinClass( mw.rcfilters.ui.FilterWrapperWidget, OO.ui.mixin.PendingElement ); + /** + * Respond to capsule item click and make the popup scroll down to the requested item + * + * @param {mw.rcfilters.ui.CapsuleItemWidget} item Clicked item + */ + mw.rcfilters.ui.FilterWrapperWidget.prototype.onCapsuleItemClick = function ( item ) { + var filterName = item.getData(), + // Find the item in the popup + filterWidget = this.filterPopup.getItemWidget( filterName ); + + // Highlight item + this.filterPopup.select( filterName ); + this.capsule.select( item ); + + this.scrollToTop( filterWidget.$element ); + }; + + /** + * Respond to popup toggle event. Reset selection in the list when the popup is closed. + * + * @param {boolean} isVisible Popup is visible + */ + mw.rcfilters.ui.FilterWrapperWidget.prototype.onCapsulePopupToggle = function ( isVisible ) { + if ( !isVisible ) { + if ( !this.textInput.getValue() ) { + // Only reset selection if we are not filtering + this.filterPopup.resetSelection(); + this.capsule.resetSelection(); + } + } else { + this.scrollToTop( this.capsule.$element, 10 ); + } + }; + /** * Respond to text input change * @@ -74,23 +126,26 @@ mw.rcfilters.ui.FilterWrapperWidget.prototype.onTextInputChange = function ( newValue ) { // Filter the results this.filterPopup.filter( this.model.findMatches( newValue ) ); + + if ( !newValue ) { + // If the value is empty, we didn't actually + // filter anything. the filter method will run + // and show all, but then will select the + // top item - but in this case, no selection + // should be made. + this.filterPopup.resetSelection(); + } + this.capsule.popup.clip(); }; /** - * Respond to an event where an item is removed from the capsule. - * This is the case where a user actively removes a filter box from the capsule widget. - * - * @param {string[]} filterNames An array of filter names that were removed + * Respond to text input enter event */ - mw.rcfilters.ui.FilterWrapperWidget.prototype.onCapsuleRemoveItem = function ( filterNames ) { - var filterItem, - widget = this; - - filterNames.forEach( function ( filterName ) { - // Go over filters - filterItem = widget.model.getItemByName( filterName ); - filterItem.toggleSelected( false ); - } ); + mw.rcfilters.ui.FilterWrapperWidget.prototype.onTextInputEnter = function () { + var filter = this.filterPopup.getSelectedFilter(); + + // Toggle the filter + this.controller.toggleFilterSelect( filter ); }; /** @@ -98,33 +153,45 @@ * from. */ mw.rcfilters.ui.FilterWrapperWidget.prototype.onModelInitialize = function () { - var items, - filters = this.model.getItems(); - - // Reset - this.capsule.getMenu().clearItems(); - - // Insert hidden options for the capsule to get its item data from - items = filters.map( function ( filterItem ) { - return new OO.ui.MenuOptionWidget( { - data: filterItem.getName(), - label: filterItem.getLabel() - } ); + var wrapper = this; + + // Add defaults to capsule. We have to do this + // after we added to the capsule menu, since that's + // how the capsule multiselect widget knows which + // object to add + this.model.getItems().forEach( function ( filterItem ) { + if ( filterItem.isSelected() ) { + wrapper.capsule.addItemByName( filterItem.getName() ); + } } ); + }; - this.capsule.getMenu().addItems( items ); + /** + * Respond to item update and reset the selection. This will make it so that + * any actual interaction with the system resets the selection state of any item. + */ + mw.rcfilters.ui.FilterWrapperWidget.prototype.onModelItemUpdate = function () { + if ( !this.textInput.getValue() ) { + this.filterPopup.resetSelection(); + } }; /** - * Respond to model item update + * Scroll the element to top within its container * - * @param {mw.rcfilters.dm.FilterItem} item Filter item that was updated + * @private + * @param {jQuery} $element Element to position + * @param {number} [marginFromTop] When scrolling the entire widget to the top, leave this + * much space (in pixels) above the widget. */ - mw.rcfilters.ui.FilterWrapperWidget.prototype.onModelItemUpdate = function ( item ) { - if ( item.isSelected() ) { - this.capsule.addItemsFromData( [ item.getName() ] ); - } else { - this.capsule.removeItemsFromData( [ item.getName() ] ); - } + mw.rcfilters.ui.FilterWrapperWidget.prototype.scrollToTop = function ( $element, marginFromTop ) { + var container = OO.ui.Element.static.getClosestScrollableContainer( $element[ 0 ], 'y' ), + pos = OO.ui.Element.static.getRelativePosition( $element, $( container ) ), + containerScrollTop = $( container ).is( 'body, html' ) ? 0 : $( container ).scrollTop(); + + // Scroll to item + $( container ).animate( { + scrollTop: containerScrollTop + pos.top - ( marginFromTop || 0 ) + } ); }; }( mediaWiki ) ); diff --git a/resources/src/mediawiki.rcfilters/ui/mw.rcfilters.ui.FiltersListWidget.js b/resources/src/mediawiki.rcfilters/ui/mw.rcfilters.ui.FiltersListWidget.js index f5ec1fca6b..4011e6d5d2 100644 --- a/resources/src/mediawiki.rcfilters/ui/mw.rcfilters.ui.FiltersListWidget.js +++ b/resources/src/mediawiki.rcfilters/ui/mw.rcfilters.ui.FiltersListWidget.js @@ -25,6 +25,15 @@ this.controller = controller; this.model = model; + this.$overlay = config.$overlay || this.$element; + this.groups = {}; + this.selected = null; + + this.highlightButton = new OO.ui.ToggleButtonWidget( { + icon: 'highlight', + label: mw.message( 'rcfilters-highlightbutton-title' ).text(), + classes: [ 'mw-rcfilters-ui-filtersListWidget-hightlightButton' ] + } ); this.noResultsLabel = new OO.ui.LabelWidget( { label: mw.msg( 'rcfilters-filterlist-noresults' ), @@ -32,8 +41,10 @@ } ); // Events + this.highlightButton.connect( this, { click: 'onHighlightButtonClick' } ); this.model.connect( this, { - initialize: 'onModelInitialize' + initialize: 'onModelInitialize', + highlightChange: 'onModelHighlightChange' } ); // Initialize @@ -41,7 +52,24 @@ this.$element .addClass( 'mw-rcfilters-ui-filtersListWidget' ) .append( - this.$label, + $( '<div>' ) + .addClass( 'mw-rcfilters-ui-table' ) + .addClass( 'mw-rcfilters-ui-filtersListWidget-header' ) + .append( + $( '<div>' ) + .addClass( 'mw-rcfilters-ui-row' ) + .append( + $( '<div>' ) + .addClass( 'mw-rcfilters-ui-cell' ) + .addClass( 'mw-rcfilters-ui-filtersListWidget-header-title' ) + .append( this.$label ), + $( '<div>' ) + .addClass( 'mw-rcfilters-ui-cell' ) + .addClass( 'mw-rcfilters-ui-filtersListWidget-header-highlight' ) + .append( this.highlightButton.$element ) + ) + ), + // this.$label, this.$group .addClass( 'mw-rcfilters-ui-filtersListWidget-group' ), this.noResultsLabel.$element @@ -60,40 +88,104 @@ * Respond to initialize event from the model */ mw.rcfilters.ui.FiltersListWidget.prototype.onModelInitialize = function () { - var i, group, groupWidget, - itemWidgets = [], - groupWidgets = [], - groups = this.model.getFilterGroups(); + var widget = this; // Reset this.clearItems(); + this.groups = {}; - for ( group in groups ) { - groupWidget = new mw.rcfilters.ui.FilterGroupWidget( group, { - label: groups[ group ].title - } ); - groupWidgets.push( groupWidget ); - - itemWidgets = []; - if ( groups[ group ].filters ) { - for ( i = 0; i < groups[ group ].filters.length; i++ ) { - itemWidgets.push( - new mw.rcfilters.ui.FilterItemWidget( - this.controller, - groups[ group ].filters[ i ], - { - label: groups[ group ].filters[ i ].getLabel(), - description: groups[ group ].filters[ i ].getDescription() - } - ) - ); - } + this.addItems( + Object.keys( this.model.getFilterGroups() ).map( function ( groupName ) { + var groupWidget = new mw.rcfilters.ui.FilterGroupWidget( + widget.controller, + widget.model.getGroup( groupName ), + { + $overlay: widget.$overlay + } + ); + + widget.groups[ groupName ] = groupWidget; + return groupWidget; + } ) + ); + }; + + /** + * Respond to model highlight change event + * + * @param {boolean} highlightEnabled Highlight is enabled + */ + mw.rcfilters.ui.FiltersListWidget.prototype.onModelHighlightChange = function ( highlightEnabled ) { + this.highlightButton.setActive( highlightEnabled ); + }; + + /** + * Respond to highlight button click + */ + mw.rcfilters.ui.FiltersListWidget.prototype.onHighlightButtonClick = function () { + this.controller.toggleHighlight(); + }; + + /** + * Find the filter item widget that corresponds to the item name + * + * @param {string} itemName Filter name + * @return {mw.rcfilters.ui.FilterItemWidget} Filter widget + */ + mw.rcfilters.ui.FiltersListWidget.prototype.getItemWidget = function ( itemName ) { + var filterItem = this.model.getItemByName( itemName ), + // Find the group + groupWidget = this.groups[ filterItem.getGroupName() ]; + + // Find the item inside the group + return groupWidget.getItemWidget( itemName ); + }; - groupWidget.addItems( itemWidgets ); + /** + * Get the current selection + * + * @return {string|null} Selected filter. Null if none is selected. + */ + mw.rcfilters.ui.FiltersListWidget.prototype.getSelectedFilter = function () { + return this.selected; + }; + + /** + * Mark an item widget as selected + * + * @param {string} itemName Filter name + */ + mw.rcfilters.ui.FiltersListWidget.prototype.select = function ( itemName ) { + var filterWidget; + + if ( this.selected !== itemName ) { + // Unselect previous + if ( this.selected ) { + filterWidget = this.getItemWidget( this.selected ); + filterWidget.toggleSelected( false ); + } + + // Select new one + this.selected = itemName; + if ( this.selected ) { + filterWidget = this.getItemWidget( this.selected ); + filterWidget.toggleSelected( true ); } } + }; - this.addItems( groupWidgets ); + /** + * Reset selection and remove selected states from all items + */ + mw.rcfilters.ui.FiltersListWidget.prototype.resetSelection = function () { + if ( this.selected !== null ) { + this.selected = null; + this.getItems().forEach( function ( groupWidget ) { + groupWidget.getItems().forEach( function ( filterItemWidget ) { + filterItemWidget.toggleSelected( false ); + } ); + } ); + } }; /** @@ -113,7 +205,7 @@ * arranged by their group names */ mw.rcfilters.ui.FiltersListWidget.prototype.filter = function ( groupItems ) { - var i, j, groupName, itemWidgets, + var i, j, groupName, itemWidgets, topItem, isVisible, groupWidgets = this.getItems(), hasItemWithName = function ( itemArr, name ) { return !!itemArr.filter( function ( item ) { @@ -121,6 +213,8 @@ } ).length; }; + this.resetSelection(); + if ( $.isEmptyObject( groupItems ) ) { // No results. Hide everything, show only 'no results' // message @@ -144,11 +238,19 @@ // We have items to show itemWidgets = groupWidgets[ i ].getItems(); for ( j = 0; j < itemWidgets.length; j++ ) { + isVisible = hasItemWithName( groupItems[ groupName ], itemWidgets[ j ].getName() ); // Only show items that are in the filtered list - itemWidgets[ j ].toggle( - hasItemWithName( groupItems[ groupName ], itemWidgets[ j ].getName() ) - ); + itemWidgets[ j ].toggle( isVisible ); + + if ( !topItem && isVisible ) { + topItem = itemWidgets[ j ]; + } } } + + // Select the first item + if ( topItem ) { + this.select( topItem.getName() ); + } }; }( mediaWiki, jQuery ) ); diff --git a/resources/src/mediawiki.rcfilters/ui/mw.rcfilters.ui.FormWrapperWidget.js b/resources/src/mediawiki.rcfilters/ui/mw.rcfilters.ui.FormWrapperWidget.js new file mode 100644 index 0000000000..e914bbe7d9 --- /dev/null +++ b/resources/src/mediawiki.rcfilters/ui/mw.rcfilters.ui.FormWrapperWidget.js @@ -0,0 +1,155 @@ +( function ( mw ) { + /** + * Wrapper for the RC form with hide/show links + * Must be constructed after the model is initialized. + * + * @extends OO.ui.Widget + * + * @constructor + * @param {mw.rcfilters.dm.FiltersViewModel} filtersModel Changes list view model + * @param {mw.rcfilters.dm.ChangesListViewModel} changeListModel Changes list view model + * @param {mw.rcfilters.Controller} controller RCfilters controller + * @param {jQuery} $formRoot Root element of the form to attach to + * @param {Object} config Configuration object + */ + mw.rcfilters.ui.FormWrapperWidget = function MwRcfiltersUiFormWrapperWidget( filtersModel, changeListModel, controller, $formRoot, config ) { + config = config || {}; + + // Parent + mw.rcfilters.ui.FormWrapperWidget.parent.call( this, $.extend( {}, config, { + $element: $formRoot + } ) ); + // Mixin constructors + OO.ui.mixin.PendingElement.call( this, config ); + + this.changeListModel = changeListModel; + this.filtersModel = filtersModel; + this.controller = controller; + this.$submitButton = this.$element.find( 'form input[type=submit]' ); + + this.$element + .on( 'click', 'a[data-params]', this.onLinkClick.bind( this ) ); + + this.$element + .on( 'submit', 'form', this.onFormSubmit.bind( this ) ); + + // Events + this.changeListModel.connect( this, { + invalidate: 'onChangesModelInvalidate', + update: 'onChangesModelUpdate' + } ); + + // Initialize + this.cleanUpFieldset(); + this.$element + .addClass( 'mw-rcfilters-ui-FormWrapperWidget' ); + }; + + /* Initialization */ + + OO.inheritClass( mw.rcfilters.ui.FormWrapperWidget, OO.ui.Widget ); + OO.mixinClass( mw.rcfilters.ui.FormWrapperWidget, OO.ui.mixin.PendingElement ); + + /** + * Respond to link click + * + * @param {jQuery.Event} e Event + * @return {boolean} false + */ + mw.rcfilters.ui.FormWrapperWidget.prototype.onLinkClick = function ( e ) { + this.controller.updateChangesList( $( e.target ).data( 'params' ) ); + return false; + }; + + /** + * Respond to form submit event + * + * @param {jQuery.Event} e Event + * @return {boolean} false + */ + mw.rcfilters.ui.FormWrapperWidget.prototype.onFormSubmit = function ( e ) { + var data = {}; + + // Collect all data from form + $( e.target ).find( 'input:not([type="hidden"],[type="submit"]), select' ).each( function () { + if ( !$( this ).is( ':checkbox' ) || $( this ).is( ':checked' ) ) { + data[ $( this ).prop( 'name' ) ] = $( this ).val(); + } + } ); + + this.controller.updateChangesList( data ); + return false; + }; + + /** + * Respond to model invalidate + */ + mw.rcfilters.ui.FormWrapperWidget.prototype.onChangesModelInvalidate = function () { + this.pushPending(); + this.$submitButton.prop( 'disabled', true ); + }; + + /** + * Respond to model update, replace the show/hide links with the ones from the + * server so they feature the correct state. + * + * @param {jQuery|string} $changesList Updated changes list + * @param {jQuery} $fieldset Updated fieldset + */ + mw.rcfilters.ui.FormWrapperWidget.prototype.onChangesModelUpdate = function ( $changesList, $fieldset ) { + this.$submitButton.prop( 'disabled', false ); + + // Replace the entire fieldset + this.$element.empty().append( $fieldset.contents() ); + + this.cleanUpFieldset(); + + this.popPending(); + }; + + /** + * Clean up the old-style show/hide that we have implemented in the filter list + */ + mw.rcfilters.ui.FormWrapperWidget.prototype.cleanUpFieldset = function () { + var widget = this; + + // HACK: Remove old-style filter links for filters handled by the widget + // Ideally the widget would handle all filters and we'd just remove .rcshowhide entirely + this.$element.find( '.rcshowhide' ).children().each( function () { + // HACK: Interpret the class name to get the filter name + // This should really be set as a data attribute + var i, + name = null, + // Some of the older browsers we support don't have .classList, + // so we have to interpret the class attribute manually. + classes = this.getAttribute( 'class' ).split( ' ' ); + for ( i = 0; i < classes.length; i++ ) { + if ( classes[ i ].substr( 0, 'rcshow'.length ) === 'rcshow' ) { + name = classes[ i ].substr( 'rcshow'.length ); + break; + } + } + if ( name === null ) { + return; + } + if ( name === 'hidemine' ) { + // HACK: the span for hidemyself is called hidemine + name = 'hidemyself'; + } + + // This span corresponds to a filter that's in our model, so remove it + if ( widget.filtersModel.getItemByName( name ) ) { + // HACK: Remove the text node after the span. + // If there isn't one, we're at the end, so remove the text node before the span. + // This would be unnecessary if we added separators with CSS. + if ( this.nextSibling && this.nextSibling.nodeType === Node.TEXT_NODE ) { + this.parentNode.removeChild( this.nextSibling ); + } else if ( this.previousSibling && this.previousSibling.nodeType === Node.TEXT_NODE ) { + this.parentNode.removeChild( this.previousSibling ); + } + // Remove the span itself + this.parentNode.removeChild( this ); + } + } ); + }; +}( mediaWiki ) ); diff --git a/resources/src/mediawiki.rcfilters/ui/mw.rcfilters.ui.HighlightColorPickerWidget.js b/resources/src/mediawiki.rcfilters/ui/mw.rcfilters.ui.HighlightColorPickerWidget.js new file mode 100644 index 0000000000..570647e68a --- /dev/null +++ b/resources/src/mediawiki.rcfilters/ui/mw.rcfilters.ui.HighlightColorPickerWidget.js @@ -0,0 +1,112 @@ +( function ( mw, $ ) { + /** + * A widget representing a filter item highlight color picker + * + * @extends OO.ui.Widget + * @mixins OO.ui.mixin.LabelElement + * + * @constructor + * @param {mw.rcfilters.Controller} controller RCFilters controller + * @param {mw.rcfilters.dm.FilterItem} model Filter item model + * @param {Object} [config] Configuration object + */ + mw.rcfilters.ui.HighlightColorPickerWidget = function MwRcfiltersUiHighlightColorPickerWidget( controller, model, config ) { + var colors = [ 'none' ].concat( mw.rcfilters.HighlightColors ); + config = config || {}; + + // Parent + mw.rcfilters.ui.HighlightColorPickerWidget.parent.call( this, config ); + // Mixin constructors + OO.ui.mixin.LabelElement.call( this, $.extend( {}, config, { + label: mw.message( 'rcfilters-highlightmenu-title' ).text() + } ) ); + + this.controller = controller; + this.model = model; + + this.currentSelection = ''; + this.buttonSelect = new OO.ui.ButtonSelectWidget( { + items: colors.map( function ( color ) { + return new OO.ui.ButtonOptionWidget( { + icon: color === 'none' ? 'check' : null, + data: color, + classes: [ + 'mw-rcfilters-ui-highlightColorPickerWidget-buttonSelect-color', + 'mw-rcfilters-ui-highlightColorPickerWidget-buttonSelect-color-' + color + ], + framed: false + } ); + } ), + classes: 'mw-rcfilters-ui-highlightColorPickerWidget-buttonSelect' + } ); + this.selectColor( 'none' ); + + // Event + this.model.connect( this, { update: 'onModelUpdate' } ); + this.buttonSelect.connect( this, { choose: 'onChooseColor' } ); + + this.$element + .addClass( 'mw-rcfilters-ui-highlightColorPickerWidget' ) + .append( + this.$label + .addClass( 'mw-rcfilters-ui-highlightColorPickerWidget-label' ), + this.buttonSelect.$element + ); + }; + + /* Initialization */ + + OO.inheritClass( mw.rcfilters.ui.HighlightColorPickerWidget, OO.ui.Widget ); + OO.mixinClass( mw.rcfilters.ui.HighlightColorPickerWidget, OO.ui.mixin.LabelElement ); + + /* Events */ + + /** + * @event chooseColor + * @param {string} The chosen color + * + * A color has been chosen + */ + + /* Methods */ + + /** + * Respond to item model update event + */ + mw.rcfilters.ui.HighlightColorPickerWidget.prototype.onModelUpdate = function () { + this.selectColor( this.model.getHighlightColor() || 'none' ); + }; + + /** + * Select the color for this widget + * + * @param {string} color Selected color + */ + mw.rcfilters.ui.HighlightColorPickerWidget.prototype.selectColor = function ( color ) { + var previousItem = this.buttonSelect.getItemFromData( this.currentSelection ), + selectedItem = this.buttonSelect.getItemFromData( color ); + + if ( this.currentSelection !== color ) { + this.currentSelection = color; + + this.buttonSelect.selectItem( selectedItem ); + if ( previousItem ) { + previousItem.setIcon( null ); + } + + if ( selectedItem ) { + selectedItem.setIcon( 'check' ); + } + } + }; + + mw.rcfilters.ui.HighlightColorPickerWidget.prototype.onChooseColor = function ( button ) { + var color = button.data; + if ( color === 'none' ) { + this.controller.clearHighlightColor( this.model.getName() ); + } else { + this.controller.setHighlightColor( this.model.getName(), color ); + } + this.emit( 'chooseColor', color ); + }; +}( mediaWiki, jQuery ) ); diff --git a/resources/src/mediawiki.skinning/content.css b/resources/src/mediawiki.skinning/content.css index a62ef2e457..5ded184f1f 100644 --- a/resources/src/mediawiki.skinning/content.css +++ b/resources/src/mediawiki.skinning/content.css @@ -35,7 +35,7 @@ /* IE7 and earlier */ zoom: 1; - *display: inline; + *display: inline; /* stylelint-disable declaration-block-no-duplicate-properties */ padding: 7px; } @@ -55,7 +55,7 @@ table.toc td { #toc h2, .toc h2 { display: inline; - border: none; + border: 0; padding: 0; font-size: 100%; font-weight: bold; @@ -121,18 +121,20 @@ table.toc td { } /* Images */ -/* @noflip */div.floatright, table.floatright { - margin: 0 0 .5em .5em; - border: 0; +/* @noflip */ +div.floatright, +table.floatright { + margin: 0 0 0.5em 0.5em; } div.floatright p { font-style: italic; } -/* @noflip */div.floatleft, table.floatleft { - margin: 0 .5em .5em 0; - border: 0; +/* @noflip */ +div.floatleft, +table.floatleft { + margin: 0 0.5em 0.5em 0; } div.floatleft p { @@ -141,7 +143,7 @@ div.floatleft p { /* Thumbnails */ div.thumb { - margin-bottom: .5em; + margin-bottom: 0.5em; width: auto; background-color: transparent; } @@ -163,7 +165,7 @@ html .thumbimage { } html .thumbcaption { - border: none; + border: 0; line-height: 1.4em; padding: 3px; font-size: 94%; @@ -247,12 +249,12 @@ img.thumbborder { /* @noflip */ div.tright { - margin: .5em 0 1.3em 1.4em; + margin: 0.5em 0 1.3em 1.4em; } /* @noflip */ div.tleft { - margin: .5em 1.4em 1.3em 0; + margin: 0.5em 1.4em 1.3em 0; } /* Hide elements that are marked as "empty" according to legacy Tidy rules, diff --git a/resources/src/mediawiki.skinning/content.externallinks.css b/resources/src/mediawiki.skinning/content.externallinks.css index b7cc6ed399..cd674ef92e 100644 --- a/resources/src/mediawiki.skinning/content.externallinks.css +++ b/resources/src/mediawiki.skinning/content.externallinks.css @@ -2,14 +2,14 @@ * Icons and colors for external links. */ -/* Bug 66091 is blocking is from converting this file to LESS +/* T68091 is blocking is from converting this file to LESS * and using the .background-image-svg mixin. */ /* SVG support using a transparent gradient to guarantee cross-browser * compatibility ( browsers able to understand gradient syntax support also SVG ). * http://pauginer.tumblr.com/post/36614680636/invisible-gradient-technique */ -.mw-body a.external, +.mw-body-content a.external, .link-https { background: url( images/external-ltr.png ) center right no-repeat; /* @embed */ @@ -19,7 +19,7 @@ padding-right: 15px; } -.mw-body a.external[href^="mailto:"], +.mw-body-content a.external[href^='mailto:'], .link-mailto { background: url( images/mail.png ) center right no-repeat; /* @embed */ @@ -27,7 +27,7 @@ padding-right: 15px; } -.mw-body a.external[href^="ftp://"], +.mw-body-content a.external[href^='ftp://'], .link-ftp { background: url( images/ftp-ltr.png ) center right no-repeat; /* @embed */ @@ -35,8 +35,8 @@ padding-right: 15px; } -.mw-body a.external[href^="irc://"], -.mw-body a.external[href^="ircs://"], +.mw-body-content a.external[href^='irc://'], +.mw-body-content a.external[href^='ircs://'], .link-irc { background: url( images/chat-ltr.png ) center right no-repeat; /* @embed */ @@ -44,12 +44,18 @@ padding-right: 15px; } -.mw-body a.external[href$=".ogg"], .mw-body a.external[href$=".OGG"], -.mw-body a.external[href$=".mid"], .mw-body a.external[href$=".MID"], -.mw-body a.external[href$=".midi"], .mw-body a.external[href$=".MIDI"], -.mw-body a.external[href$=".mp3"], .mw-body a.external[href$=".MP3"], -.mw-body a.external[href$=".wav"], .mw-body a.external[href$=".WAV"], -.mw-body a.external[href$=".wma"], .mw-body a.external[href$=".WMA"], +.mw-body-content a.external[href$='.ogg'], +.mw-body-content a.external[href$='.OGG'], +.mw-body-content a.external[href$='.mid'], +.mw-body-content a.external[href$='.MID'], +.mw-body-content a.external[href$='.midi'], +.mw-body-content a.external[href$='.MIDI'], +.mw-body-content a.external[href$='.mp3'], +.mw-body-content a.external[href$='.MP3'], +.mw-body-content a.external[href$='.wav'], +.mw-body-content a.external[href$='.WAV'], +.mw-body-content a.external[href$='.wma'], +.mw-body-content a.external[href$='.WMA'], .link-audio { background: url( images/audio-ltr.png ) center right no-repeat; /* @embed */ @@ -57,10 +63,14 @@ padding-right: 15px; } -.mw-body a.external[href$=".ogm"], .mw-body a.external[href$=".OGM"], -.mw-body a.external[href$=".avi"], .mw-body a.external[href$=".AVI"], -.mw-body a.external[href$=".mpeg"], .mw-body a.external[href$=".MPEG"], -.mw-body a.external[href$=".mpg"], .mw-body a.external[href$=".MPG"], +.mw-body-content a.external[href$='.ogm'], +.mw-body-content a.external[href$='.OGM'], +.mw-body-content a.external[href$='.avi'], +.mw-body-content a.external[href$='.AVI'], +.mw-body-content a.external[href$='.mpeg'], +.mw-body-content a.external[href$='.MPEG'], +.mw-body-content a.external[href$='.mpg'], +.mw-body-content a.external[href$='.MPG'], .link-video { background: url( images/video.png ) center right no-repeat; /* @embed */ @@ -68,9 +78,12 @@ padding-right: 15px; } -.mw-body a.external[href$=".pdf"], .mw-body a.external[href$=".PDF"], -.mw-body a.external[href*=".pdf#"], .mw-body a.external[href*=".PDF#"], -.mw-body a.external[href*=".pdf?"], .mw-body a.external[href*=".PDF?"], +.mw-body-content a.external[href$='.pdf'], +.mw-body-content a.external[href$='.PDF'], +.mw-body-content a.external[href*='.pdf#'], +.mw-body-content a.external[href*='.PDF#'], +.mw-body-content a.external[href*='.pdf?'], +.mw-body-content a.external[href*='.PDF?'], .link-document { background: url( images/document-ltr.png ) center right no-repeat; /* @embed */ @@ -79,12 +92,12 @@ } /* Interwiki styling */ -.mw-body a.extiw, -.mw-body a.extiw:active { +.mw-body-content a.extiw, +.mw-body-content a.extiw:active { color: #36b; } /* External link color */ -.mw-body a.external { +.mw-body-content a.external { color: #36b; } diff --git a/resources/src/mediawiki.skinning/content.parsoid.less b/resources/src/mediawiki.skinning/content.parsoid.less index 346771f3f5..b3d161356f 100644 --- a/resources/src/mediawiki.skinning/content.parsoid.less +++ b/resources/src/mediawiki.skinning/content.parsoid.less @@ -11,12 +11,12 @@ * automatically when content is modified. */ .mw-body-content { - counter-reset: mw-NumberedExtLink; + counter-reset: mw-numbered-ext-link; } -.mw-body-content a[rel~="mw:ExtLink"]:empty:after { - content: "[" counter( mw-NumberedExtLink ) "]"; - counter-increment: mw-NumberedExtLink; +.mw-body-content a[rel~='mw:ExtLink']:empty:after { + content: '[' counter( mw-numbered-ext-link ) ']'; + counter-increment: mw-numbered-ext-link; } /** @@ -38,7 +38,8 @@ span.reference { unicode-bidi: isolate; } -sup, sub { +sup, +sub { line-height: 1; } @@ -54,7 +55,7 @@ figure[typeof*='mw:Image'] { &.mw-halign-right { /* @noflip */ - margin: .5em 0 1.3em 1.4em; + margin: 0.5em 0 1.3em 1.4em; /* @noflip */ clear: right; /* @noflip */ @@ -63,7 +64,7 @@ figure[typeof*='mw:Image'] { &.mw-halign-left { /* @noflip */ - margin: .5em 1.4em 1.3em 0; + margin: 0.5em 1.4em 1.3em 0; /* @noflip */ clear: left; /* @noflip */ @@ -77,7 +78,7 @@ figure[typeof*='mw:Image'] { } &.mw-halign-center { - margin: 0 auto .5em auto; + margin: 0 auto 0.5em auto; display: table; clear: none; float: none; @@ -87,8 +88,8 @@ figure[typeof*='mw:Image'] { display: table-caption; caption-side: bottom; /* In mw-core the font-size is duplicated, 94% in thumbiner - and again 94% in thumbcaption. 88% for font size of the - caption results in the same behavior. */ + * and again 94% in thumbcaption. 88% for font size of the + * caption results in the same behavior. */ font-size: 88%; line-height: 1.4em; text-align: left; @@ -118,7 +119,7 @@ figure[typeof~='mw:Image/Frame'] { background-color: #f9f9f9; // Default to right alignment. This is needed since Parsoid only specifies the // alignment class when the alignment is explicitly set. - margin: .5em 0 1.3em 1.4em; + margin: 0.5em 0 1.3em 1.4em; clear: right; float: right; } @@ -128,8 +129,11 @@ figure[typeof~='mw:Image/Frame'] > *:first-child > img, .mw-image-border > *:first-child > img { border: 1px solid #ccc; margin: 3px; + background: #fff; } /* Hide the caption for frameless and plain floated images */ -figure[typeof~="mw:Image/Frameless"] > figcaption, -figure[typeof~="mw:Image"] > figcaption { display: none } +figure[typeof~='mw:Image/Frameless'] > figcaption, +figure[typeof~='mw:Image'] > figcaption { + display: none; +} diff --git a/resources/src/mediawiki.skinning/elements.css b/resources/src/mediawiki.skinning/elements.css index 7d096f96ff..d204d5d5ac 100644 --- a/resources/src/mediawiki.skinning/elements.css +++ b/resources/src/mediawiki.skinning/elements.css @@ -25,15 +25,16 @@ a:active { color: #faa700; } -a:hover, a:focus { +a:hover, +a:focus { text-decoration: underline; } -a:lang(ar), -a:lang(kk-arab), -a:lang(mzn), -a:lang(ps), -a:lang(ur) { +a:lang( ar ), +a:lang( kk-arab ), +a:lang( mzn ), +a:lang( ps ), +a:lang( ur ) { text-decoration: none; } @@ -41,48 +42,50 @@ a.stub { color: #723; } -a.new, #p-personal a.new { +a.new, +#p-personal a.new { color: #ba0000; } -a.new:visited, #p-personal a.new:visited { +a.new:visited, +#p-personal a.new:visited { color: #a55858; } /* Interwiki Styling */ -.mw-body a.extiw, -.mw-body a.extiw:active { +.mw-body-content a.extiw, +.mw-body-content a.extiw:active { color: #36b; } -.mw-body a.extiw:visited { +.mw-body-content a.extiw:visited { color: #636; } -.mw-body a.extiw:active { +.mw-body-content a.extiw:active { color: #b63; } /* External links */ -.mw-body a.external { +.mw-body-content a.external { color: #36b; } -.mw-body a.external:visited { - color: #636; /* bug 3112 */ +.mw-body-content a.external:visited { + color: #636; /* T5112 */ } -.mw-body a.external:active { +.mw-body-content a.external:active { color: #b63; } -.mw-body a.external.free { +.mw-body-content a.external.free { word-wrap: break-word; } /* Inline Elements */ img { - border: none; + border: 0; vertical-align: middle; } @@ -91,7 +94,7 @@ hr { color: #a2a9b1; background-color: #a2a9b1; border: 0; - margin: .2em 0; + margin: 0.2em 0; } /* Structural Elements */ @@ -106,8 +109,8 @@ h6 { font-weight: normal; margin: 0; overflow: hidden; - padding-top: .5em; - padding-bottom: .17em; + padding-top: 0.5em; + padding-bottom: 0.17em; border-bottom: 1px solid #a2a9b1; } @@ -123,7 +126,7 @@ h3, h4, h5, h6 { - border-bottom: none; + border-bottom: 0; font-weight: bold; } @@ -146,17 +149,17 @@ h6 { /* Some space under the headers in the content area */ h1, h2 { - margin-bottom: .6em; + margin-bottom: 0.6em; } h3, h4, h5 { - margin-bottom: .3em; + margin-bottom: 0.3em; } p { - margin: .4em 0 .5em 0; + margin: 0.4em 0 0.5em 0; } p img { @@ -165,36 +168,41 @@ p img { ul { list-style-type: square; - margin: .3em 0 0 1.6em; + margin: 0.3em 0 0 1.6em; padding: 0; } ol { - margin: .3em 0 0 3.2em; + margin: 0.3em 0 0 3.2em; padding: 0; list-style-image: none; } li { - margin-bottom: .1em; + margin-bottom: 0.1em; } dt { font-weight: bold; - margin-bottom: .1em; + margin-bottom: 0.1em; } dl { - margin-top: .2em; - margin-bottom: .5em; + margin-top: 0.2em; + margin-bottom: 0.5em; } dd { margin-left: 1.6em; - margin-bottom: .1em; + margin-bottom: 0.1em; } -pre, code, tt, kbd, samp, .mw-code { +pre, +code, +tt, +kbd, +samp, +.mw-code { /* * Some browsers will render the monospace text too small, namely Firefox, Chrome and Safari. * Specifying any valid, second value will trigger correct behavior without forcing a different font. @@ -238,18 +246,18 @@ fieldset.nested { } legend { - padding: .5em; + padding: 0.5em; font-size: 95%; } form { - border: none; + border: 0; margin: 0; } textarea { width: 100%; - padding: .1em; + padding: 0.1em; display: block; -moz-box-sizing: border-box; -webkit-box-sizing: border-box; diff --git a/resources/src/mediawiki.skinning/interface.css b/resources/src/mediawiki.skinning/interface.css index 7dbcd4dc28..2be3bb2ac8 100644 --- a/resources/src/mediawiki.skinning/interface.css +++ b/resources/src/mediawiki.skinning/interface.css @@ -17,13 +17,13 @@ textarea { /* Support Firefox: Border rule required to override system appearance on Linux */ - border: 1px solid #c0c0c0; + border: 1px solid #a2a9b1; } .editOptions { - background-color: #f0f0f0; - border: 1px solid #c0c0c0; - border-top: none; + background-color: #f8f9fa; + border: 1px solid #c8ccd1; + border-top: 0; padding: 1em 1em 1.5em 1em; margin-bottom: 2em; } @@ -34,7 +34,7 @@ textarea { color: #000; font-weight: bold; margin: 2em 0 1em; - padding: .5em 1em; + padding: 0.5em 1em; vertical-align: middle; } @@ -49,9 +49,9 @@ textarea { } .firstHeading { - margin-bottom: .1em; - /* These two rules hack around bug 2013 (fix for more limited bug 11325). - * When bug 2013 is fixed properly, they should be removed. */ + margin-bottom: 0.1em; + /* These two rules hack around T4013 (fix for more limited T13325). + * When T4013 is fixed properly, they should be removed. */ line-height: 1.2em; padding-bottom: 0; } diff --git a/resources/src/mediawiki.special/images/special.search/book-icon.png b/resources/src/mediawiki.special/images/special.search/book-icon.png new file mode 100644 index 0000000000..07e3ec746e Binary files /dev/null and b/resources/src/mediawiki.special/images/special.search/book-icon.png differ diff --git a/resources/src/mediawiki.special/images/special.search/book-icon.svg b/resources/src/mediawiki.special/images/special.search/book-icon.svg new file mode 100644 index 0000000000..6c3fa5f2aa --- /dev/null +++ b/resources/src/mediawiki.special/images/special.search/book-icon.svg @@ -0,0 +1,36 @@ +<?xml version="1.0" encoding="UTF-8"?> +<svg width="60px" height="60px" viewBox="0 0 60 60" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> + <!-- Generator: Sketch 41.2 (35397) - http://www.bohemiancoding.com/sketch --> + <title>wikisource-icon + Created with Sketch. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/resources/src/mediawiki.special/images/special.search/course-icon.png b/resources/src/mediawiki.special/images/special.search/course-icon.png new file mode 100644 index 0000000000..9aad230aac Binary files /dev/null and b/resources/src/mediawiki.special/images/special.search/course-icon.png differ diff --git a/resources/src/mediawiki.special/images/special.search/course-icon.svg b/resources/src/mediawiki.special/images/special.search/course-icon.svg new file mode 100644 index 0000000000..4fab1f3d4a --- /dev/null +++ b/resources/src/mediawiki.special/images/special.search/course-icon.svg @@ -0,0 +1,35 @@ + + + + wikiversity-icon + Created with Sketch. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/resources/src/mediawiki.special/images/special.search/definition-icon.png b/resources/src/mediawiki.special/images/special.search/definition-icon.png new file mode 100644 index 0000000000..b279f4ed04 Binary files /dev/null and b/resources/src/mediawiki.special/images/special.search/definition-icon.png differ diff --git a/resources/src/mediawiki.special/images/special.search/definition-icon.svg b/resources/src/mediawiki.special/images/special.search/definition-icon.svg new file mode 100644 index 0000000000..1d58906244 --- /dev/null +++ b/resources/src/mediawiki.special/images/special.search/definition-icon.svg @@ -0,0 +1,22 @@ + + + + wiktionary-icon + Created with Sketch. + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/resources/src/mediawiki.special/images/special.search/dna-icon.png b/resources/src/mediawiki.special/images/special.search/dna-icon.png new file mode 100644 index 0000000000..76ae7b97c3 Binary files /dev/null and b/resources/src/mediawiki.special/images/special.search/dna-icon.png differ diff --git a/resources/src/mediawiki.special/images/special.search/dna-icon.svg b/resources/src/mediawiki.special/images/special.search/dna-icon.svg new file mode 100644 index 0000000000..b6472d2975 --- /dev/null +++ b/resources/src/mediawiki.special/images/special.search/dna-icon.svg @@ -0,0 +1,34 @@ + + + + wikispecies-icon + Created with Sketch. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/resources/src/mediawiki.special/images/special.search/image-icon.png b/resources/src/mediawiki.special/images/special.search/image-icon.png new file mode 100644 index 0000000000..1ebbc7414e Binary files /dev/null and b/resources/src/mediawiki.special/images/special.search/image-icon.png differ diff --git a/resources/src/mediawiki.special/images/special.search/image-icon.svg b/resources/src/mediawiki.special/images/special.search/image-icon.svg new file mode 100644 index 0000000000..b68762e09c --- /dev/null +++ b/resources/src/mediawiki.special/images/special.search/image-icon.svg @@ -0,0 +1,16 @@ + + + + commons-icon + Created with Sketch. + + + + + + + + + + + \ No newline at end of file diff --git a/resources/src/mediawiki.special/images/special.search/news-icon.png b/resources/src/mediawiki.special/images/special.search/news-icon.png new file mode 100644 index 0000000000..6b79590dd3 Binary files /dev/null and b/resources/src/mediawiki.special/images/special.search/news-icon.png differ diff --git a/resources/src/mediawiki.special/images/special.search/news-icon.svg b/resources/src/mediawiki.special/images/special.search/news-icon.svg new file mode 100644 index 0000000000..996bc84b10 --- /dev/null +++ b/resources/src/mediawiki.special/images/special.search/news-icon.svg @@ -0,0 +1,31 @@ + + + + wikinews-icon + Created with Sketch. + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/resources/src/mediawiki.special/images/special.search/quotation-icon.png b/resources/src/mediawiki.special/images/special.search/quotation-icon.png new file mode 100644 index 0000000000..9d3ade30b8 Binary files /dev/null and b/resources/src/mediawiki.special/images/special.search/quotation-icon.png differ diff --git a/resources/src/mediawiki.special/images/special.search/quotation-icon.svg b/resources/src/mediawiki.special/images/special.search/quotation-icon.svg new file mode 100644 index 0000000000..0a24b3ef82 --- /dev/null +++ b/resources/src/mediawiki.special/images/special.search/quotation-icon.svg @@ -0,0 +1,12 @@ + + + + wikiquote-icon + Created with Sketch. + + + + + + + \ No newline at end of file diff --git a/resources/src/mediawiki.special/images/special.search/textbook-icon.png b/resources/src/mediawiki.special/images/special.search/textbook-icon.png new file mode 100644 index 0000000000..0de2821fad Binary files /dev/null and b/resources/src/mediawiki.special/images/special.search/textbook-icon.png differ diff --git a/resources/src/mediawiki.special/images/special.search/textbook-icon.svg b/resources/src/mediawiki.special/images/special.search/textbook-icon.svg new file mode 100644 index 0000000000..52446b88b1 --- /dev/null +++ b/resources/src/mediawiki.special/images/special.search/textbook-icon.svg @@ -0,0 +1,28 @@ + + + + wikibooks-icon + Created with Sketch. + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/resources/src/mediawiki.special/images/special.search/travel-icon.png b/resources/src/mediawiki.special/images/special.search/travel-icon.png new file mode 100644 index 0000000000..9540e5b568 Binary files /dev/null and b/resources/src/mediawiki.special/images/special.search/travel-icon.png differ diff --git a/resources/src/mediawiki.special/images/special.search/travel-icon.svg b/resources/src/mediawiki.special/images/special.search/travel-icon.svg new file mode 100644 index 0000000000..c61da34f03 --- /dev/null +++ b/resources/src/mediawiki.special/images/special.search/travel-icon.svg @@ -0,0 +1,15 @@ + + + + wikivoyage-icon + Created with Sketch. + + + + + + + + + + \ No newline at end of file diff --git a/resources/src/mediawiki.special/mediawiki.special.apisandbox.css b/resources/src/mediawiki.special/mediawiki.special.apisandbox.css index 707a579932..c3205bd084 100644 --- a/resources/src/mediawiki.special/mediawiki.special.apisandbox.css +++ b/resources/src/mediawiki.special/mediawiki.special.apisandbox.css @@ -43,7 +43,7 @@ } .mw-apisandbox-help-field:last-child { - border-bottom: none; + border-bottom: 0; } .mw-apisandbox-optionalWidget { @@ -87,9 +87,14 @@ } .mw-apisandbox-textInputCode .oo-ui-inputWidget-input { - font-family: monospace, 'Courier'; + font-family: monospace, monospace; font-size: 0.8125em; -moz-tab-size: 4; -o-tab-size: 4; tab-size: 4; } + +.mw-apisandbox-widget-field .oo-ui-textInputWidget { + /* Leave at least enough space for icon, indicator, and a sliver of text */ + min-width: 6em; +} diff --git a/resources/src/mediawiki.special/mediawiki.special.apisandbox.js b/resources/src/mediawiki.special/mediawiki.special.apisandbox.js index fdb54cbc4a..97659edca3 100644 --- a/resources/src/mediawiki.special/mediawiki.special.apisandbox.js +++ b/resources/src/mediawiki.special/mediawiki.special.apisandbox.js @@ -3,6 +3,7 @@ 'use strict'; var ApiSandbox, Util, WidgetMethods, Validators, $content, panel, booklet, oldhash, windowManager, fullscreenButton, + formatDropdown, api = new mw.Api(), bookletPages = [], availableFormats = {}, @@ -626,6 +627,70 @@ .filter( '[href]:not([target])' ) .attr( 'target', '_blank' ); return $html; + }, + + /** + * Format a request and return a bunch of menu option widgets + * + * @param {Object} displayParams Query parameters, sanitized for display. + * @param {Object} rawParams Query parameters. You should probably use displayParams instead. + * @return {OO.ui.MenuOptionWidget[]} Each item's data should be an OO.ui.FieldLayout + */ + formatRequest: function ( displayParams, rawParams ) { + var jsonInput, + items = [ + new OO.ui.MenuOptionWidget( { + label: Util.parseMsg( 'apisandbox-request-format-url-label' ), + data: new OO.ui.FieldLayout( + new OO.ui.TextInputWidget( { + readOnly: true, + value: mw.util.wikiScript( 'api' ) + '?' + $.param( displayParams ) + } ), { + label: Util.parseMsg( 'apisandbox-request-url-label' ) + } + ) + } ), + new OO.ui.MenuOptionWidget( { + label: Util.parseMsg( 'apisandbox-request-format-json-label' ), + data: new OO.ui.FieldLayout( + jsonInput = new OO.ui.TextInputWidget( { + classes: [ 'mw-apisandbox-textInputCode' ], + readOnly: true, + multiline: true, + autosize: true, + maxRows: 6, + value: JSON.stringify( displayParams, null, '\t' ) + } ), { + label: Util.parseMsg( 'apisandbox-request-json-label' ) + } + ).on( 'toggle', function ( visible ) { + if ( visible ) { + // Call updatePosition instead of adjustSize + // because the latter has weird caching + // behavior and the former bypasses it. + jsonInput.updatePosition(); + } + } ) + } ) + ]; + + mw.hook( 'apisandbox.formatRequest' ).fire( items, displayParams, rawParams ); + + return items; + }, + + /** + * Event handler for when formatDropdown's selection changes + */ + onFormatDropdownChange: function () { + var i, + menu = formatDropdown.getMenu(), + items = menu.getItems(), + selectedField = menu.getSelectedItem() ? menu.getSelectedItem().getData() : null; + + for ( i = 0; i < items.length; i++ ) { + items[ i ].getData().toggle( items[ i ].getData() === selectedField ); + } } }; @@ -918,7 +983,7 @@ } $.when.apply( $, deferreds ).done( function () { - var jsonInput; + var formatItems, menu, selectedLabel; if ( $.inArray( false, arguments ) !== -1 ) { windowManager.openWindow( 'errorAlert', { @@ -937,6 +1002,8 @@ query = $.param( displayParams ); + formatItems = Util.formatRequest( displayParams, params ); + // Force a 'fm' format with wrappedhtml=1, if available if ( params.format !== undefined ) { if ( availableFormats.hasOwnProperty( params.format + 'fm' ) ) { @@ -961,36 +1028,40 @@ page.setupOutlineItem = function () { this.outlineItem.setLabel( mw.message( 'apisandbox-results' ).text() ); }; + + if ( !formatDropdown ) { + formatDropdown = new OO.ui.DropdownWidget( { + menu: { items: [] } + } ); + formatDropdown.getMenu().on( 'choose', Util.onFormatDropdownChange ); + } + + menu = formatDropdown.getMenu(); + selectedLabel = menu.getSelectedItem() ? menu.getSelectedItem().getLabel() : ''; + if ( typeof selectedLabel !== 'string' ) { + selectedLabel = selectedLabel.text(); + } + menu.clearItems().addItems( formatItems ); + menu.chooseItem( menu.getItemFromLabel( selectedLabel ) || menu.getFirstSelectableItem() ); + + // Fire the event to update field visibilities + Util.onFormatDropdownChange(); + page.$element.empty() .append( new OO.ui.FieldLayout( - new OO.ui.TextInputWidget( { - readOnly: true, - value: mw.util.wikiScript( 'api' ) + '?' + query - } ), { - label: Util.parseMsg( 'apisandbox-request-url-label' ) - } - ).$element, - new OO.ui.FieldLayout( - jsonInput = new OO.ui.TextInputWidget( { - classes: [ 'mw-apisandbox-textInputCode' ], - readOnly: true, - multiline: true, - autosize: true, - maxRows: 6, - value: JSON.stringify( displayParams, null, '\t' ) - } ), { - label: Util.parseMsg( 'apisandbox-request-params-json' ) + formatDropdown, { + label: Util.parseMsg( 'apisandbox-request-selectformat-label' ) } ).$element, + $.map( formatItems, function ( item ) { + return item.getData().$element; + } ), $result ); ApiSandbox.updateUI(); booklet.setPage( '|results|' ); - // Resize the multiline input once visible - jsonInput.adjustSize(); - location.href = oldhash = '#' + query; api.post( params, { @@ -1085,6 +1156,7 @@ booklet.setPage( '|results|' ); } ).setDisabled( !paramsAreForced ) ).$element, new OO.ui.PopupButtonWidget( { + $overlay: $( '#mw-apisandbox-ui' ), framed: false, icon: 'info', popup: { @@ -1146,7 +1218,8 @@ if ( page.tokenWidget ) { k = page.apiModule + page.tokenWidget.paramInfo.name; - tokenWait[ k ] = page.tokenWidget.fetchToken() + tokenWait[ k ] = page.tokenWidget.fetchToken(); + tokenWait[ k ] .done( success.bind( page.tokenWidget, k ) ) .fail( failure.bind( page.tokenWidget, k ) ); } @@ -1284,7 +1357,7 @@ Util.fetchModuleInfo( this.apiModule ) .done( function ( pi ) { - var prefix, i, j, dl, widget, $widgetLabel, widgetField, helpField, tmp, flag, count, + var prefix, i, j, descriptionContainer, widget, $widgetLabel, widgetField, helpField, tmp, flag, count, items = [], deprecatedItems = [], buttons = [], @@ -1343,6 +1416,7 @@ if ( pi.helpurls.length ) { buttons.push( new OO.ui.PopupButtonWidget( { + $overlay: $( '#mw-apisandbox-ui' ), label: mw.message( 'apisandbox-helpurls' ).text(), icon: 'help', popup: { @@ -1359,6 +1433,7 @@ if ( pi.examples.length ) { buttons.push( new OO.ui.PopupButtonWidget( { + $overlay: $( '#mw-apisandbox-ui' ), label: mw.message( 'apisandbox-examples' ).text(), icon: 'code', popup: { @@ -1391,14 +1466,14 @@ that.tokenWidget = widget; } - dl = $( '
' ); - dl.append( $( '
', { + descriptionContainer = $( '
' ); + descriptionContainer.append( $( '
', { addClass: 'description', append: Util.parseHTML( pi.parameters[ i ].description ) } ) ); if ( pi.parameters[ i ].info && pi.parameters[ i ].info.length ) { for ( j = 0; j < pi.parameters[ i ].info.length; j++ ) { - dl.append( $( '
', { + descriptionContainer.append( $( '
', { addClass: 'info', append: Util.parseHTML( pi.parameters[ i ].info[ j ] ) } ) ); @@ -1414,7 +1489,7 @@ case 'limit': if ( pi.parameters[ i ].highmax !== undefined ) { - dl.append( $( '
', { + descriptionContainer.append( $( '
', { addClass: 'info', append: [ Util.parseMsg( @@ -1425,7 +1500,7 @@ ] } ) ); } else { - dl.append( $( '
', { + descriptionContainer.append( $( '
', { addClass: 'info', append: [ Util.parseMsg( 'api-help-param-limit', pi.parameters[ i ].max ), @@ -1445,7 +1520,7 @@ tmp += 'max'; } if ( tmp !== '' ) { - dl.append( $( '
', { + descriptionContainer.append( $( '
', { addClass: 'info', append: Util.parseMsg( 'api-help-param-integer-' + tmp, @@ -1481,7 +1556,7 @@ ); } if ( tmp.length ) { - dl.append( $( '
', { + descriptionContainer.append( $( '
', { addClass: 'info', append: Util.parseHTML( tmp.join( ' ' ) ) } ) ); @@ -1494,7 +1569,7 @@ } ), { align: 'inline', classes: [ 'mw-apisandbox-help-field' ], - label: dl + label: descriptionContainer } ); diff --git a/resources/src/mediawiki.special/mediawiki.special.block.css b/resources/src/mediawiki.special/mediawiki.special.block.css index a30a15df2d..ae557b4027 100644 --- a/resources/src/mediawiki.special/mediawiki.special.block.css +++ b/resources/src/mediawiki.special/mediawiki.special.block.css @@ -2,7 +2,7 @@ * Styling for Special:Block */ -label[for="mw-input-wpConfirm"] { +label[for='mw-input-wpConfirm'] { font-weight: bold; } diff --git a/resources/src/mediawiki.special/mediawiki.special.comparepages.styles.less b/resources/src/mediawiki.special/mediawiki.special.comparepages.styles.less index 45d0485bcf..c951169d31 100644 --- a/resources/src/mediawiki.special/mediawiki.special.comparepages.styles.less +++ b/resources/src/mediawiki.special/mediawiki.special.comparepages.styles.less @@ -1,4 +1,4 @@ -@import "mediawiki.mixins"; +@import 'mediawiki.mixins'; .mw-special-ComparePages .mw-htmlform-ooui-wrapper { width: 100%; diff --git a/resources/src/mediawiki.special/mediawiki.special.css b/resources/src/mediawiki.special/mediawiki.special.css index 4b8eced6fd..3ad8005458 100644 --- a/resources/src/mediawiki.special/mediawiki.special.css +++ b/resources/src/mediawiki.special/mediawiki.special.css @@ -16,7 +16,8 @@ } /* Common for Special:Allpages and Special:PrefixIndex */ -.mw-allpages-body, .mw-prefixindex-body { +.mw-allpages-body, +.mw-prefixindex-body { columns: 22em 3; -moz-columns: 22em 3; -webkit-columns: 22em 3; diff --git a/resources/src/mediawiki.special/mediawiki.special.preferences.js b/resources/src/mediawiki.special/mediawiki.special.preferences.js index 163e85d335..0fa661041c 100644 --- a/resources/src/mediawiki.special/mediawiki.special.preferences.js +++ b/resources/src/mediawiki.special/mediawiki.special.preferences.js @@ -3,7 +3,7 @@ */ ( function ( mw, $ ) { $( function () { - var $preftoc, $preferences, $fieldsets, labelFunc, + var $preftoc, $preferences, $fieldsets, labelFunc, previousTab, $tzSelect, $tzTextbox, $localtimeHolder, servertime, allowCloseWindow, convertmessagebox = require( 'mediawiki.notification.convertmessagebox' ); @@ -235,22 +235,19 @@ updateTimezoneSelection(); } - // Preserve the tab after saving the preferences - // Not using cookies, because their deletion results are inconsistent. - // Not using jStorage due to its enormous size (for this feature) - if ( window.sessionStorage ) { - if ( sessionStorage.getItem( 'mediawikiPreferencesTab' ) !== null ) { - switchPrefTab( sessionStorage.getItem( 'mediawikiPreferencesTab' ), 'noHash' ); - } + // Restore the active tab after saving the preferences + previousTab = mw.storage.session.get( 'mwpreferences-prevTab' ); + if ( previousTab ) { + switchPrefTab( previousTab, 'noHash' ); // Deleting the key, the tab states should be reset until we press Save - sessionStorage.removeItem( 'mediawikiPreferencesTab' ); - - $( '#mw-prefs-form' ).submit( function () { - var storageData = $( $preftoc ).find( 'li.selected a' ).attr( 'id' ).replace( 'preftab-', '' ); - sessionStorage.setItem( 'mediawikiPreferencesTab', storageData ); - } ); + mw.storage.session.remove( previousTab ); } + $( '#mw-prefs-form' ).on( 'submit', function () { + var value = $( $preftoc ).find( 'li.selected a' ).attr( 'id' ).replace( 'preftab-', '' ); + mw.storage.session.set( 'mwpreferences-prevTab', value ); + } ); + // Check if all of the form values are unchanged function isPrefsChanged() { var inputs = $( '#mw-prefs-form :input[name]' ), diff --git a/resources/src/mediawiki.special/mediawiki.special.search.commonsInterwikiWidget.js b/resources/src/mediawiki.special/mediawiki.special.search.commonsInterwikiWidget.js new file mode 100644 index 0000000000..3810ac1b0a --- /dev/null +++ b/resources/src/mediawiki.special/mediawiki.special.search.commonsInterwikiWidget.js @@ -0,0 +1,80 @@ +( function ( mw, $ ) { + + var api = new mw.Api(), + pageUrl = new mw.Uri(), + imagesText = new mw.Message( mw.messages, 'searchprofile-images' ), + moreResultsText = new mw.Message( mw.messages, 'search-interwiki-more' ); + + function itemTemplate( results ) { + + var resultOutput = '', i, result, imageCaption, imageThumbnailSrc; + + for ( i = 0; i < results.length; i++ ) { + result = results[ i ], + imageCaption = mw.html.element( 'span', { 'class': 'iw-result__mini-gallery__caption' }, result.title ); + imageThumbnailSrc = ( result.thumbnail ) ? result.thumbnail.source : ''; + resultOutput += ''; + } + + return resultOutput; + } + + function itemWrapperTemplate( pageQuery, itemTemplateOutput ) { + + return '
  • ' + + '
    ' + + '' + + '' + imagesText.escaped() + '' + + '
    ' + + '
    ' + + /* template output has been sanitized by mw.html.element */ + itemTemplateOutput + + '
    ' + + '' + + '
  • '; + + } + + api.get( { + action: 'query', + generator: 'search', + gsrsearch: pageUrl.query.search, + gsrnamespace: mw.config.get( 'wgNamespaceIds' ).file, + gsrlimit: 3, + prop: 'pageimages', + pilimit: 3, + piprop: 'thumbnail', + pithumbsize: 300, + formatversion: 2 + } ) + .done( function ( resp ) { + var results = ( resp.query && resp.query.pages ) ? resp.query.pages : false, + multimediaWidgetTemplate; + + if ( !results ) { + return; + } + + results.sort( function( a, b ) { + return b.index - a.index; + } ); + + multimediaWidgetTemplate = itemWrapperTemplate( pageUrl.query.search, itemTemplate( results ) ); + /* we really only need to wait for document ready for DOM manipulation */ + $( function () { + $( '.iw-results' ).prepend( multimediaWidgetTemplate ); + } ); + } ); + +}( mediaWiki, jQuery ) ); diff --git a/resources/src/mediawiki.special/mediawiki.special.search.interwikiwidget.styles.less b/resources/src/mediawiki.special/mediawiki.special.search.interwikiwidget.styles.less new file mode 100644 index 0000000000..5504883478 --- /dev/null +++ b/resources/src/mediawiki.special/mediawiki.special.search.interwikiwidget.styles.less @@ -0,0 +1,226 @@ +/* interwiki search results */ +/*==========================*/ + +#mw-interwiki-results { + float: right; + width: 30%; +} + +.iw-headline { + font-weight: bold; + font-size: 1rem; + font-size: 16px; + opacity: 0.7; +} + +.iw-results { + list-style: none; + margin: 0; +} + +.iw-resultset { + margin-bottom: 1.2em; + background-color: #f2f4f7; + vertical-align: top; + width: 100%; + float: left; + list-style-type: none; +} + +/* clearfix */ +.iw-result:after { + visibility: hidden; + display: block; + font-size: 0; + content: ' '; + clear: both; + height: 0; +} + +* html .interwiki-result { /* IE6 */ + zoom: 1; +} +*:first-child + html .iw-resultset { /* IE7 */ + zoom: 1; +} + +/* padding each .iw-resultset section seperately. +This allows us greater flexibility in the design. +For example changing the background color on the +header and footer. */ +.iw-result__header, +.iw-result__title, +.iw-result__content, +.iw-result__footer { + padding: 0.25em 0.85em; +} + +/* definition titles appear inline, +to resemble a traditional dictionary definition */ +.iw-resultset--definition .iw-result__title { + display: inline; + padding: 0; +} + +.iw-resultset > div:first-child { + padding-top: 0.85em; +} + +.iw-resultset > div:last-child { + padding-bottom: 0.85em; +} + +.iw-result__title { + font-size: 16px; /* rem fallback */ + font-size: 1rem; +} + +.iw-result__title a.extiw { + color: #252525; + font-weight: bold; +} + +.iw-result__content:after { /* clearfix */ + visibility: hidden; + display: block; + font-size: 0; + content: ' '; + clear: both; + height: 0; +} + +.iw-result__footer { + float: right; +} + +.iw-result__icon { + display: inline-block; + width: 24px; + height: 24px; + vertical-align: middle; + margin-right: 0.25em; + background: url( images/special.search/definition-icon.svg ) no-repeat 0 0; + background-size: 100% 100%; +} + +@interwikiContentTypes: definition, travel, quotation, book, course, news, textbook, image; + +.generate-iwIcons(); + +.generate-iwIcons( @i:1 ) when ( @i =< length( @interwikiContentTypes ) ) { + @iwIcon: extract( @interwikiContentTypes, @i ); + + .iw-result__icon--@{iwIcon} { + /* stylelint-disable-next-line function-url-quotes */ + background-image: url( 'images/special.search/@{iwIcon}-icon.png' ); + /* stylelint-disable-next-line function-url-quotes */ + background-image: url( 'images/special.search/@{iwIcon}-icon.svg' ); + } + + .generate-iwIcons( @i + 1 ); +} + +/* image search result */ +.iw-result__mini-gallery { + position: relative; + float: left; + width: 60%; + height: 200px; + box-sizing: border-box; + padding: 0.25rem; +} + +/* second and third images are small */ +.iw-result__mini-gallery:nth-child( 2 ), +.iw-result__mini-gallery:nth-child( 3 ) { /* stylelint-disable-line indentation */ + width: 40%; + height: 100px; +} + +.iw-result__mini-gallery__image { + display: block; + position: relative; + width: 100%; + height: 100%; + background-size: cover; + background-repeat: no-repeat; + background-position: center center; +} + +.iw-result__mini-gallery__image > .iw-result__mini-gallery__caption { /* image gallery text */ + visibility: hidden; + position: absolute; + bottom: 0; + left: 0; + text-align: center; + color: #fff; + text-shadow: 0 0 10px rgba( 0, 0, 0, 0.4 ); /* improves legibility on white background*/ + font-size: 0.8em; + padding: 5px; + background-color: rgba( 0, 0, 0, 0.5 ); +} + +.iw-result__mini-gallery__image:hover > .iw-result__mini-gallery__caption { + visibility: visible; +} + +/* different types of interwiki result boxes */ +/* quotation box */ +.iw-resultset--quotation .iw-result__content { + border-left: 4px solid #afb1b5; + margin-left: 1em; + padding-top: 0; + margin-top: 0.25em; +} +.iw-resultset--quotation .iw-result__title { + margin-left: 1em; +} +.iw-result--quotation .iw-result__title:before { + content: ' — '; + display: inline-block; +} +.iw-result--quotation .iw-result__footer { + text-align: right; +} + +/* no results +span the interwiki results across the bottom of the page. +*/ + +.mw-search-nonefound ~ #mw-search-interwiki { + width: 100%; +} + +.mw-search-nonefound ~ #mw-search-interwiki .iw-resultset { + width: 30%; + max-width: 300px; + margin-left: 0.5em; + margin-right: 0.5em; +} + +/* mobile */ +/* stylelint-disable declaration-no-important */ +@media only screen and ( max-width: 768px ) { + #mw-interwiki-results { + width: 100%; + } + .mw-search-results { + max-width: none !important; + } + .iw-resultset { + width: 45% !important; + margin-left: 0.5em !important; + margin-right: 0.5em !important; + } + +} + +@media only screen and ( max-width: 600px ) { + .iw-resultset { + width: 100% !important; + margin-left: 0 !important; + margin-right: 0 !important; + max-width: none !important; + } +} +/* stylelint-enable declaration-no-important */ diff --git a/resources/src/mediawiki.special/mediawiki.special.search.styles.css b/resources/src/mediawiki.special/mediawiki.special.search.styles.css index ebe9ed94ce..89f51326d0 100644 --- a/resources/src/mediawiki.special/mediawiki.special.search.styles.css +++ b/resources/src/mediawiki.special/mediawiki.special.search.styles.css @@ -15,7 +15,7 @@ display: inline !ie; } .searchresults { - margin: 1em 0 1em .4em; + margin: 1em 0 1em 0.4em; } /* needs extra specificity to override `.mw-body p` selector */ .mw-body .mw-search-nonefound { @@ -29,13 +29,11 @@ .mw-search-nonefound + .mw-search-interwiki-header { margin-top: 0; } -.searchresult { - font-size: 95%; - max-width: 38em; -} + .mw-search-results { - margin-left: 0; + margin: 0; float: left; + max-width: 60%; } .mw-search-visualclear { clear: both; @@ -93,6 +91,10 @@ float: left; width: 100%; } + +/* Advanced options menu */ +/*==========================*/ + #mw-searchoptions { margin: 0; padding: 0.5em 0.75em 0.75em 0.75em; @@ -127,12 +129,14 @@ padding-left: 6em; font-size: 85%; } + #mw-search-interwiki { float: right; width: 18em; border: 1px solid #a2a9b1; margin-top: 2ex; } + .searchalttitle, #mw-search-interwiki li { font-size: 95%; @@ -153,6 +157,7 @@ background-color: #eaecf0; border-top: 1px solid #c8ccd1; } + .searchdidyoumean { font-size: 127%; margin-top: 0.8em; diff --git a/resources/src/mediawiki.special/mediawiki.special.upload.js b/resources/src/mediawiki.special/mediawiki.special.upload.js index f818096377..0ddf7fe3f1 100644 --- a/resources/src/mediawiki.special/mediawiki.special.upload.js +++ b/resources/src/mediawiki.special/mediawiki.special.upload.js @@ -252,7 +252,7 @@ // Output result if ( $( '#wpDestFile' ).length ) { // Call decodeURIComponent function to remove possible URL-encoded characters - // from the file name (bug 30390). Especially likely with upload-form-url. + // from the file name (T32390). Especially likely with upload-form-url. // decodeURIComponent can throw an exception if input is invalid utf-8 try { $( '#wpDestFile' ).val( decodeURIComponent( fname ) ); diff --git a/resources/src/mediawiki.special/mediawiki.special.upload.styles.css b/resources/src/mediawiki.special/mediawiki.special.upload.styles.css index 283df85ae9..626a7e8b58 100644 --- a/resources/src/mediawiki.special/mediawiki.special.upload.styles.css +++ b/resources/src/mediawiki.special/mediawiki.special.upload.styles.css @@ -3,7 +3,7 @@ */ .mw-destfile-warning { border: 1px solid #fde29b; - padding: .5em 1em; + padding: 0.5em 1em; margin-bottom: 1em; color: #705000; background-color: #fdf1d1; diff --git a/resources/src/mediawiki.special/mediawiki.special.userrights.css b/resources/src/mediawiki.special/mediawiki.special.userrights.css new file mode 100644 index 0000000000..a4b4087d8e --- /dev/null +++ b/resources/src/mediawiki.special/mediawiki.special.userrights.css @@ -0,0 +1,12 @@ +/*! + * Styling for Special:UserRights + */ +.mw-userrights-nested { + margin-left: 1.2em; +} + +.mw-userrights-nested span { + margin-left: 0.3em; + display: inline-block; + vertical-align: middle; +} diff --git a/resources/src/mediawiki.special/mediawiki.special.userrights.js b/resources/src/mediawiki.special/mediawiki.special.userrights.js index 064398851b..3f864dd53d 100644 --- a/resources/src/mediawiki.special/mediawiki.special.userrights.js +++ b/resources/src/mediawiki.special/mediawiki.special.userrights.js @@ -1,8 +1,18 @@ /*! * JavaScript for Special:UserRights */ -( function () { +( function ( $ ) { var convertmessagebox = require( 'mediawiki.notification.convertmessagebox' ); // Replace successbox with notifications convertmessagebox(); -}() ); + + // Dynamically show/hide the expiry selection underneath each checkbox + $( '#mw-userrights-form2 input[type=checkbox]' ).on( 'change', function ( e ) { + $( '#mw-userrights-nested-' + e.target.id ).toggle( e.target.checked ); + } ).trigger( 'change' ); + + // Also dynamically show/hide the "other time" input under each dropdown + $( '.mw-userrights-nested select' ).on( 'change', function ( e ) { + $( e.target.parentNode ).find( 'input' ).toggle( $( e.target ).val() === 'other' ); + } ).trigger( 'change' ); +}( jQuery ) ); diff --git a/resources/src/mediawiki.toolbar/toolbar.less b/resources/src/mediawiki.toolbar/toolbar.less index d65b284217..93ea294b0e 100644 --- a/resources/src/mediawiki.toolbar/toolbar.less +++ b/resources/src/mediawiki.toolbar/toolbar.less @@ -1,42 +1,42 @@ -@import "mediawiki.mixins"; +@import 'mediawiki.mixins'; #mw-editbutton-bold { - .background-image("images/@{button-bold}"); + .background-image('images/@{button-bold}'); } #mw-editbutton-italic { - .background-image("images/@{button-italic}"); + .background-image('images/@{button-italic}'); } #mw-editbutton-link { - .background-image("images/@{button-link}"); + .background-image('images/@{button-link}'); } #mw-editbutton-extlink { - .background-image("images/@{button-extlink}"); + .background-image('images/@{button-extlink}'); } #mw-editbutton-headline { - .background-image("images/@{button-headline}"); + .background-image('images/@{button-headline}'); } #mw-editbutton-image { - .background-image("images/@{button-image}"); + .background-image('images/@{button-image}'); } #mw-editbutton-media { - .background-image("images/@{button-media}"); + .background-image('images/@{button-media}'); } #mw-editbutton-nowiki { - .background-image("images/@{button-nowiki}"); + .background-image('images/@{button-nowiki}'); } // Who decided to make only this single one different than the name of the data item? #mw-editbutton-signature { - .background-image("images/@{button-sig}"); + .background-image('images/@{button-sig}'); } #mw-editbutton-hr { - .background-image("images/@{button-hr}"); + .background-image('images/@{button-hr}'); } diff --git a/resources/src/mediawiki.ui/components/anchors.less b/resources/src/mediawiki.ui/components/anchors.less index 4c4e129834..8e97c3edbe 100644 --- a/resources/src/mediawiki.ui/components/anchors.less +++ b/resources/src/mediawiki.ui/components/anchors.less @@ -1,6 +1,6 @@ -@import "mediawiki.mixins"; -@import "mediawiki.ui/variables"; -@import "mediawiki.ui/mixins"; +@import 'mediawiki.mixins'; +@import 'mediawiki.ui/variables'; +@import 'mediawiki.ui/mixins'; // Helpers .mixin-mw-ui-anchor-styles( @mainColor ) { @@ -29,7 +29,6 @@ The anchor base type can be applied to `a` elements when a basic context styling having to assign it as a button type. `.mw-ui-anchor` only changes the text color, and should not be used in combination with other base classes, such as `.mw-ui-button`. - Markup: Progressive Destructive @@ -48,22 +47,16 @@ Styleguide 6.2. &.mw-ui-destructive { .mixin-mw-ui-anchor-styles( @colorDestructive ); } - - //`.mw-ui-constructive` is deprecated; consolidated with `progressive`, see T110555 - &.mw-ui-constructive { - .mixin-mw-ui-anchor-styles( @colorConstructive ); - } } /* Quiet anchors -Use quiet anchors when they are less important and alongside other progressive/destructive/progressive +Use quiet anchors when they are less important and alongside other progressive/destructive anchors. Use of quiet anchors is not recommended on mobile/tablet due to lack of hover state. Markup: Progressive -Constructive Destructive Styleguide 6.2.1. diff --git a/resources/src/mediawiki.ui/components/buttons.less b/resources/src/mediawiki.ui/components/buttons.less index 85795f44db..abe7c4670e 100644 --- a/resources/src/mediawiki.ui/components/buttons.less +++ b/resources/src/mediawiki.ui/components/buttons.less @@ -1,6 +1,6 @@ -@import "mediawiki.mixins"; -@import "mediawiki.ui/variables"; -@import "mediawiki.ui/mixins"; +@import 'mediawiki.mixins'; +@import 'mediawiki.ui/variables'; +@import 'mediawiki.ui/mixins'; // Buttons // @@ -26,14 +26,15 @@ // // Styleguide 2.1. .mw-ui-button { - // Inherit the font rather than apply user agent stylesheet (bug 70072) + // Inherit the font rather than apply user agent stylesheet (T72072) font-family: inherit; font-size: 1em; // Container layout display: inline-block; min-width: 4em; max-width: 28.75em; // equivalent to 460px, @see T95367 - padding: .5em 1em; + padding: 0.546875em 1em; + line-height: 1.286; margin: 0; border-radius: @borderRadius; .box-sizing( border-box ); @@ -43,7 +44,7 @@ // IE 6 & 7 hack // https://stackoverflow.com/a/5838575/365238 - *display: inline; + *display: inline; /* stylelint-disable-line declaration-block-no-duplicate-properties */ zoom: 1; // Ensure that buttons and inputs are nicely aligned when they have differing heights @@ -210,6 +211,15 @@ } } +input.mw-ui-button, +button.mw-ui-button { + // Buttons in Firefox have extra height + &::-moz-focus-inner { + margin-top: -1px; + margin-bottom: -1px; + } +} + a.mw-ui-button { text-decoration: none; @@ -219,12 +229,6 @@ a.mw-ui-button { &:focus { text-decoration: none; } - - // a-tags behave different to inputs if the line-height attribute is inherited - // from another element (e.g. mw-body-content). They appear bigger as input - // tags. See Bug T116427. To fix that, apply the correct line-height (used - // for inputs) to a-tags, too. - line-height: normal; } // Button groups diff --git a/resources/src/mediawiki.ui/components/checkbox.less b/resources/src/mediawiki.ui/components/checkbox.less index b0fbf515e6..2ca20a5b5e 100644 --- a/resources/src/mediawiki.ui/components/checkbox.less +++ b/resources/src/mediawiki.ui/components/checkbox.less @@ -1,5 +1,5 @@ -@import "mediawiki.mixins"; -@import "mediawiki.ui/variables"; +@import 'mediawiki.mixins'; +@import 'mediawiki.ui/variables'; // Checkbox // @@ -43,22 +43,22 @@ display: table; * { - // reset font sizes (see bug 72727) + // reset font sizes (see T74727) font: inherit; vertical-align: middle; } - input[type="checkbox"] { + input[type='checkbox'] { // we hide the input element as instead we will style the label that follows // we use opacity so that VoiceOver software can still identify it opacity: 0; - // Render "on top of" the label, so that it's still clickable (T98905) + // Render *on top of* the label, so that it's still clickable (T98905) z-index: 1; position: relative; // ensure the invisible checkbox takes up the required width width: @checkboxSize; height: @checkboxSize; - // This is needed for Firefox mobile (See bug 71750 to workaround default Firefox stylesheet) + // This is needed for Firefox mobile (See T73750 to workaround default Firefox stylesheet) max-width: none; margin: 0 0.4em 0 0; display: table-cell; @@ -68,7 +68,7 @@ } // the pseudo before element of the label after the checkbox now looks like a checkbox - & + label::before { + & + label:before { content: ''; background-color: #fff; .background-image-svg( 'images/checked.svg', 'images/checked.png' ); @@ -91,33 +91,33 @@ } // when the input is checked, style the label pseudo before element that followed as a checked checkbox - &:checked + label::before { + &:checked + label:before { .background-size( 100%, 100% ); } - &:active + label::before { + &:active + label:before { background-color: @colorGray13; border-color: @colorGray13; } - &:focus + label::before { + &:focus + label:before { border-width: 2px; } - &:focus:hover + label::before, - &:hover + label::before { + &:focus:hover + label:before, + &:hover + label:before { border-bottom-width: 3px; } // disabled checkboxes have a gray background - &:disabled + label::before { + &:disabled + label:before { cursor: default; background-color: @colorGray14; border-color: @colorGray14; } // disabled and checked checkboxes have a white circle - &:disabled:checked + label::before { + &:disabled:checked + label:before { .background-image-svg( 'images/checked_disabled.svg', 'images/checked_disabled.png' ); } } diff --git a/resources/src/mediawiki.ui/components/forms.less b/resources/src/mediawiki.ui/components/forms.less index 2327efc73b..d3c76d09d0 100644 --- a/resources/src/mediawiki.ui/components/forms.less +++ b/resources/src/mediawiki.ui/components/forms.less @@ -1,8 +1,8 @@ // Form elements and layouts -@import "mediawiki.mixins"; -@import "mediawiki.ui/variables"; -@import "mediawiki.ui/mixins"; +@import 'mediawiki.mixins'; +@import 'mediawiki.ui/variables'; +@import 'mediawiki.ui/mixins'; // -------------------------------------------------------------------------- // Layouts @@ -66,7 +66,7 @@ } // Override input styling just for checkboxes and radio inputs. - input[type="radio"] { + input[type='radio'] { display: inline; .box-sizing( content-box ); width: auto; diff --git a/resources/src/mediawiki.ui/components/icons.less b/resources/src/mediawiki.ui/components/icons.less index 0035601697..f169d1b603 100644 --- a/resources/src/mediawiki.ui/components/icons.less +++ b/resources/src/mediawiki.ui/components/icons.less @@ -1,5 +1,5 @@ -@import "mediawiki.mixins"; -@import "mediawiki.ui/variables"; +@import 'mediawiki.mixins'; +@import 'mediawiki.ui/variables'; // Mixins .mixin-mw-ui-icon-bgimage( @iconSvg, @iconPng ) { @@ -90,4 +90,4 @@ &.mw-ui-icon-small:before { background-size: 66.67% auto; // 66.67% of 24px equals 16px } -} \ No newline at end of file +} diff --git a/resources/src/mediawiki.ui/components/inputs.less b/resources/src/mediawiki.ui/components/inputs.less index 87ce7bebe1..cc9c65a13b 100644 --- a/resources/src/mediawiki.ui/components/inputs.less +++ b/resources/src/mediawiki.ui/components/inputs.less @@ -1,8 +1,8 @@ // Inputs -@import "mediawiki.mixins"; -@import "mediawiki.ui/variables"; -@import "mediawiki.ui/mixins"; +@import 'mediawiki.mixins'; +@import 'mediawiki.ui/variables'; +@import 'mediawiki.ui/mixins'; // Text inputs // @@ -29,45 +29,21 @@ width: 100%; border: 1px solid @colorFieldBorder; border-radius: @borderRadius; - padding: 0.3em 0.3em 0.3em 0.6em; + padding: 0.625em 0.546875em 0.546875em; // necessary for smooth transition box-shadow: inset 0 0 0 0.1em #fff; font-family: inherit; font-size: inherit; - line-height: inherit; + line-height: 1.172em; vertical-align: middle; // Normalize & style placeholder text, see T139034 - // Placeholder styles can't be grouped, otherwise they're ignored as invalid. - - // Placeholder mixin - .mixin-placeholder() { + /* stylelint-disable indentation */ + .mixin-placeholder( { color: @colorGray7; - font-style: italic; - } - // Firefox 4-18 - &:-moz-placeholder { // stylelint-disable-line selector-no-vendor-prefix - .mixin-placeholder; - opacity: 1; - } - // Firefox 19- - &::-moz-placeholder { // stylelint-disable-line selector-no-vendor-prefix - .mixin-placeholder; opacity: 1; - } - // Internet Explorer 10-11 - &:-ms-input-placeholder { // stylelint-disable-line selector-no-vendor-prefix - .mixin-placeholder; - } - // WebKit, Blink, Edge - // Don't set `opacity < 1`, see https://developer.microsoft.com/en-us/microsoft-edge/platform/issues/3901363/ - &::-webkit-input-placeholder { // stylelint-disable-line selector-no-vendor-prefix - .mixin-placeholder; - } - // W3C Standard Selectors Level 4 - &:placeholder-shown { - .mixin-placeholder; - } + } ); + /* stylelint-enable indentation */ // Firefox: Remove red outline when `required` attribute set and invalid content. // See https://developer.mozilla.org/en-US/docs/Web/CSS/:invalid @@ -97,7 +73,7 @@ } // Normalize styling for `` - &[type="search"] { + &[type='search'] { // Correct the odd appearance in Chrome and Safari 5 -webkit-appearance: textfield; @@ -109,7 +85,7 @@ // Remove the inner padding and cancel buttons in Chrome on OS X and Safari on OS X &::-webkit-search-cancel-button, &::-webkit-search-decoration { - -webkit-appearance: none; + -webkit-appearance: none; } } } @@ -127,7 +103,7 @@ textarea.mw-ui-input { // // // Styleguide 1.2. -input[type="number"], +input[type='number'], .mw-ui-input-inline { display: inline-block; width: auto; @@ -167,4 +143,5 @@ input.mw-ui-input-large { font-size: 1.75em; font-weight: bold; line-height: 1.25em; + padding: 0.3673em 0.3265em 0.3265em; } diff --git a/resources/src/mediawiki.ui/components/radio.less b/resources/src/mediawiki.ui/components/radio.less index 53c22b4463..7cb2849798 100644 --- a/resources/src/mediawiki.ui/components/radio.less +++ b/resources/src/mediawiki.ui/components/radio.less @@ -1,5 +1,5 @@ -@import "mediawiki.mixins"; -@import "mediawiki.ui/variables"; +@import 'mediawiki.mixins'; +@import 'mediawiki.ui/variables'; // Radio // @@ -43,24 +43,24 @@ line-height: @radioSize; * { - // reset font sizes (see bug 72727) + // reset font sizes (see T74727) font: inherit; vertical-align: middle; } - input[type="radio"] { + input[type='radio'] { // we hide the input element as instead we will style the label that follows // we use opacity so that VoiceOver software can still identify it opacity: 0; // ensure the invisible radio takes up the required width width: @radioSize; height: @radioSize; - // This is needed for Firefox mobile (See bug 71750 to workaround default Firefox stylesheet) + // This is needed for Firefox mobile (See T73750 to workaround default Firefox stylesheet) max-width: none; margin-right: 0.4em; // the pseudo before element of the label after the radio now looks like a radio - & + label::before { + & + label:before { content: ''; background-color: #fff; .background-image-svg( 'images/radio_checked.svg', 'images/radio_checked.png' ); @@ -79,33 +79,33 @@ } // when the input is checked, style the label pseudo before element that followed as a checked radio - &:checked + label::before { + &:checked + label:before { .background-size( 100%, 100% ); } - &:active + label::before { + &:active + label:before { background-color: @colorGray13; border-color: @colorGray13; } - &:focus + label::before { + &:focus + label:before { border-width: 2px; } - &:focus:hover + label::before, - &:hover + label::before { + &:focus:hover + label:before, + &:hover + label:before { border-bottom-width: 3px; } // disabled radios have a gray background - &:disabled + label::before { + &:disabled + label:before { background-color: @colorGray14; border-color: @colorGray14; cursor: default; } // disabled and checked radios have a white circle - &:disabled:checked + label::before { + &:disabled:checked + label:before { .background-image-svg( 'images/radio_disabled.svg', 'images/radio_disabled.png' ); } } diff --git a/resources/src/mediawiki.ui/components/text.less b/resources/src/mediawiki.ui/components/text.less index 555174559f..a07aa684ce 100644 --- a/resources/src/mediawiki.ui/components/text.less +++ b/resources/src/mediawiki.ui/components/text.less @@ -1,6 +1,6 @@ -@import "mediawiki.mixins"; -@import "mediawiki.ui/variables"; -@import "mediawiki.ui/mixins"; +@import 'mediawiki.mixins'; +@import 'mediawiki.ui/variables'; +@import 'mediawiki.ui/mixins'; /* Text & Anchors @@ -16,7 +16,6 @@ Text Context classes may be used on elements with only plain-text content with the mw-ui-text base. When the context classes are used on interactive and block-level elements, the appropriate alternative base type classes should also be used. For example, mw-ui-anchor with A, or mw-ui-button with buttons. -'Constructive' is deprecated and merged with 'Progressive'. Markup: Progressive @@ -28,11 +27,10 @@ Styleguide 6.1. .mw-ui-text { // The selector order is like this on purpose; IE 6 ignores the second selector, // so we don't want to accidentally apply this color on all mw-ui-CONTEXT classes - .mw-ui-progressive&, - .mw-ui-constructive& { + &.mw-ui-progressive { color: @colorProgressive; } - .mw-ui-destructive& { + &.mw-ui-destructive { color: @colorDestructive; } -} \ No newline at end of file +} diff --git a/resources/src/mediawiki.ui/default.less b/resources/src/mediawiki.ui/default.less index c9d6208707..0589d39be9 100644 --- a/resources/src/mediawiki.ui/default.less +++ b/resources/src/mediawiki.ui/default.less @@ -1,5 +1,5 @@ /** * Provide Agora appearance for mw-ui-* classes. */ -@import "components/forms"; -@import "components/utilities"; +@import 'components/forms'; +@import 'components/utilities'; diff --git a/resources/src/mediawiki.widgets.datetime/CalendarWidget.less b/resources/src/mediawiki.widgets.datetime/CalendarWidget.less index 77f87f7d80..093c58b28a 100644 --- a/resources/src/mediawiki.widgets.datetime/CalendarWidget.less +++ b/resources/src/mediawiki.widgets.datetime/CalendarWidget.less @@ -1,10 +1,11 @@ -@import "mediawiki.widgets.datetime.definitions"; +/* stylelint-disable no-duplicate-selectors */ +@import 'mediawiki.widgets.datetime.definitions'; .mw-widgets-datetime-calendarWidget { display: inline-block; position: relative; vertical-align: middle; - padding: .5em; + padding: 0.5em; &.mw-widgets-datetime-calendarWidget-dependent { display: block; @@ -51,7 +52,7 @@ .oo-ui-buttonElement-button { width: 100%; - border: 1px dotted rgba( 255, 255, 255, 0.0 ); + border: 1px dotted rgba( 255, 255, 255, 0 ); .oo-ui-box-sizing( border-box ); } diff --git a/resources/src/mediawiki.widgets.datetime/DateTimeInputWidget.less b/resources/src/mediawiki.widgets.datetime/DateTimeInputWidget.less index 84788d2a2f..f205da3bc0 100644 --- a/resources/src/mediawiki.widgets.datetime/DateTimeInputWidget.less +++ b/resources/src/mediawiki.widgets.datetime/DateTimeInputWidget.less @@ -1,4 +1,5 @@ -@import "mediawiki.widgets.datetime.definitions"; +/* stylelint-disable no-duplicate-selectors */ +@import 'mediawiki.widgets.datetime.definitions'; .mw-widgets-datetime-dateTimeInputWidget { display: inline-block; @@ -52,7 +53,6 @@ margin: 0; background-color: #fff; color: #000; - border: solid 1px #ccc; box-shadow: inset 0 0 0 0 @progressive; border-radius: 0.1em; .oo-ui-transition(box-shadow @quick-ease); @@ -92,7 +92,7 @@ font-family: inherit; background-color: transparent; color: inherit; - border: none; + border: 0; box-shadow: none; text-align: center; vertical-align: middle; diff --git a/resources/src/mediawiki.widgets.datetime/mediawiki.widgets.datetime.definitions.less b/resources/src/mediawiki.widgets.datetime/mediawiki.widgets.datetime.definitions.less index bdade364e7..fa45d5ac2d 100644 --- a/resources/src/mediawiki.widgets.datetime/mediawiki.widgets.datetime.definitions.less +++ b/resources/src/mediawiki.widgets.datetime/mediawiki.widgets.datetime.definitions.less @@ -25,7 +25,7 @@ } .oo-ui-transition( @value1, @value2: X, ... ) { - @value: ~`"@{arguments}".replace(/[\[\]]|\,\sX/g, '')`; // stylelint-disable-line function-comma-space-after, function-parentheses-space-inside, function-whitespace-after + @value: ~`'@{arguments}'.replace(/[\[\]]|\,\sX/g, '')`; // stylelint-disable-line function-comma-space-after, function-parentheses-space-inside, function-whitespace-after, value-keyword-case -webkit-transition: @value; -moz-transition: @value; transition: @value; diff --git a/resources/src/mediawiki.widgets/mw.widgets.CalendarWidget.less b/resources/src/mediawiki.widgets/mw.widgets.CalendarWidget.less index 2fe5d3d2db..395f80bce2 100644 --- a/resources/src/mediawiki.widgets/mw.widgets.CalendarWidget.less +++ b/resources/src/mediawiki.widgets/mw.widgets.CalendarWidget.less @@ -5,6 +5,7 @@ * @license The MIT License (MIT); see LICENSE.txt */ +/* stylelint-disable no-duplicate-selectors */ @import 'mediawiki.mixins'; @calendarWidth: 21em; @@ -26,10 +27,10 @@ .mw-widget-calendarWidget-header .mw-widget-calendarWidget-labelButton { margin: 0 auto; display: block; - width: @calendarWidth - 2*3em; + width: @calendarWidth - 2 * 3em; .oo-ui-buttonElement-button { - width: @calendarWidth - 2*3em; + width: @calendarWidth - 2 * 3em; text-align: center; } } @@ -67,8 +68,8 @@ } .mw-widget-calendarWidget-body:not( .mw-widget-calendarWidget-old-body ):first-child { - margin-top: -@calendarHeight; - margin-left: -@calendarWidth; + margin-top: -@calendarHeight; /* stylelint-disable-line value-keyword-case */ + margin-left: -@calendarWidth; /* stylelint-disable-line value-keyword-case */ } .mw-widget-calendarWidget-body:not( .mw-widget-calendarWidget-old-body ):last-child { @@ -82,8 +83,8 @@ height: @calendarHeight; .mw-widget-calendarWidget-body:first-child { - margin-top: 0 !important; - margin-left: 0 !important; + margin-top: 0 !important; /* stylelint-disable-line declaration-no-important */ + margin-left: 0 !important; /* stylelint-disable-line declaration-no-important */ .transition( margin-left 500ms ); } } @@ -93,8 +94,8 @@ height: @calendarHeight; .mw-widget-calendarWidget-body:first-child { - margin-left: -@calendarWidth !important; - margin-top: 0 !important; + margin-left: -@calendarWidth !important; /* stylelint-disable-line value-keyword-case, declaration-no-important */ + margin-top: 0 !important; /* stylelint-disable-line declaration-no-important */ .transition( margin-left 500ms ); } } @@ -108,8 +109,8 @@ } .mw-widget-calendarWidget-body:first-child { - margin-left: 0 !important; - margin-top: 0 !important; + margin-left: 0 !important; /* stylelint-disable-line declaration-no-important */ + margin-top: 0 !important; /* stylelint-disable-line declaration-no-important */ .transition( margin-top 500ms ); } } @@ -123,8 +124,8 @@ } .mw-widget-calendarWidget-body:first-child { - margin-left: 0 !important; - margin-top: -@calendarHeight !important; + margin-left: 0 !important; /* stylelint-disable-line declaration-no-important */ + margin-top: -@calendarHeight !important; /* stylelint-disable-line value-keyword-case, declaration-no-important */ .transition( margin-top 500ms ); } } diff --git a/resources/src/mediawiki.widgets/mw.widgets.DateInputWidget.js b/resources/src/mediawiki.widgets/mw.widgets.DateInputWidget.js index 7f5e608f91..0ec6a4c518 100644 --- a/resources/src/mediawiki.widgets/mw.widgets.DateInputWidget.js +++ b/resources/src/mediawiki.widgets/mw.widgets.DateInputWidget.js @@ -72,6 +72,8 @@ * while the widget is inactive. Should be as unambiguous as possible (for example, prefer to * spell out the month, rather than rely on the order), even if that makes it longer. When not * given, the default is language-specific. + * @cfg {boolean} [longDisplayFormat=false] If a custom displayFormat is not specified, use + * unabbreviated day of the week and month names in the default language-specific displayFormat. * @cfg {string} [placeholderLabel=No date selected] Placeholder text shown when the widget is not * selected. Default text taken from message `mw-widgets-dateinput-no-date`. * @cfg {string} [placeholderDateFormat] User-visible date format string displayed in the textual input @@ -92,6 +94,7 @@ // Config initialization config = $.extend( { precision: 'day', + longDisplayFormat: false, required: false, placeholderLabel: mw.msg( 'mw-widgets-dateinput-no-date' ) }, config ); @@ -129,6 +132,7 @@ this.inTextInput = 0; this.inputFormat = config.inputFormat; this.displayFormat = config.displayFormat; + this.longDisplayFormat = config.longDisplayFormat; this.required = config.required; this.placeholderLabel = config.placeholderLabel; @@ -439,6 +443,10 @@ ll = localeData.longDateFormat( 'll' ); format = llll.replace( lll.replace( ll, '' ), '' ); + if ( this.longDisplayFormat ) { + format = format.replace( 'MMM', 'MMMM' ).replace( 'ddd', 'dddd' ); + } + return format; } }; diff --git a/resources/src/mediawiki.widgets/mw.widgets.StashedFileWidget.less b/resources/src/mediawiki.widgets/mw.widgets.StashedFileWidget.less index ecfc880e56..4a59dae2b4 100644 --- a/resources/src/mediawiki.widgets/mw.widgets.StashedFileWidget.less +++ b/resources/src/mediawiki.widgets/mw.widgets.StashedFileWidget.less @@ -1,3 +1,5 @@ +@import 'mediawiki.mixins'; + .mw-widgets-stashedFileWidget { display: inline-block; vertical-align: middle; @@ -28,18 +30,14 @@ vertical-align: middle; position: relative; overflow: hidden; - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; + .box-sizing( border-box ); > .mw-widgets-stashedFileWidget-label { line-height: 2.3em; margin: 0; overflow: hidden; white-space: nowrap; - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; + .box-sizing( border-box ); text-overflow: ellipsis; left: 0.5em; right: 2.375em; @@ -124,7 +122,7 @@ } .mw-widgets-stashedFileWidget-info { - border: none; + border: 0; background: none; display: block; height: 100%; @@ -147,7 +145,6 @@ } } - .mw-widgets-stashedFileWidget-empty { .mw-widgets-stashedFileWidget-thumbnail-container { text-align: center; diff --git a/resources/src/mediawiki.widgets/mw.widgets.TitleWidget.js b/resources/src/mediawiki.widgets/mw.widgets.TitleWidget.js index 3a4581d5dc..9703eeac73 100644 --- a/resources/src/mediawiki.widgets/mw.widgets.TitleWidget.js +++ b/resources/src/mediawiki.widgets/mw.widgets.TitleWidget.js @@ -255,7 +255,7 @@ } ); // If not found, run value through mw.Title to avoid treating a match as a - // mismatch where normalisation would make them matching (bug 48476) + // mismatch where normalisation would make them matching (T50476) pageExistsExact = ( Object.prototype.hasOwnProperty.call( pageData, this.getQueryValue() ) && diff --git a/resources/src/mediawiki.widgets/mw.widgets.TitleWidget.less b/resources/src/mediawiki.widgets/mw.widgets.TitleWidget.less index 86d4cfea1a..bbffe28920 100644 --- a/resources/src/mediawiki.widgets/mw.widgets.TitleWidget.less +++ b/resources/src/mediawiki.widgets/mw.widgets.TitleWidget.less @@ -48,7 +48,8 @@ } } - &.oo-ui-optionWidget-highlighted, &.oo-ui-optionWidget-selected { + &.oo-ui-optionWidget-highlighted, + &.oo-ui-optionWidget-selected { &.oo-ui-iconElement > .mw-widget-titleOptionWidget-hasImage { opacity: 1; } @@ -71,7 +72,7 @@ } } - &:not(&-withDescriptions) { + &:not( &-withDescriptions ) { .mw-widget-titleOptionWidget-description { display: none; } diff --git a/resources/src/mediawiki.widgets/mw.widgets.UsersMultiselectWidget.js b/resources/src/mediawiki.widgets/mw.widgets.UsersMultiselectWidget.js new file mode 100644 index 0000000000..70d7cb50f2 --- /dev/null +++ b/resources/src/mediawiki.widgets/mw.widgets.UsersMultiselectWidget.js @@ -0,0 +1,163 @@ +/*! + * MediaWiki Widgets - UsersMultiselectWidget class. + * + * @copyright 2017 MediaWiki Widgets Team and others; see AUTHORS.txt + * @license The MIT License (MIT); see LICENSE.txt + */ +( function ( $, mw ) { + + /** + * UsersMultiselectWidget can be used to input list of users in a single + * line. + * + * If used inside HTML form the results will be sent as the list of + * newline-separated usernames. + * + * @class + * @extends OO.ui.CapsuleMultiselectWidget + * + * @constructor + * @param {Object} [config] Configuration options + * @cfg {mw.Api} [api] Instance of mw.Api (or subclass thereof) to use for queries + * @cfg {number} [limit=10] Number of results to show in autocomplete menu + * @cfg {string} [name] Name of input to submit results (when used in HTML forms) + */ + mw.widgets.UsersMultiselectWidget = function MwWidgetsUsersMultiselectWidget( config ) { + // Config initialization + config = $.extend( { + limit: 10 + }, config, { + // Because of using autocomplete (constantly changing menu), we need to + // allow adding usernames, which do not present in the menu. + allowArbitrary: true + } ); + + // Parent constructor + mw.widgets.UsersMultiselectWidget.parent.call( this, $.extend( {}, config, {} ) ); + + // Mixin constructors + OO.ui.mixin.PendingElement.call( this, $.extend( {}, config, { $pending: this.$handle } ) ); + + // Properties + this.limit = config.limit; + + if ( 'name' in config ) { + // If used inside HTML form, then create hidden input, which will store + // the results. + this.hiddenInput = $( '' ) + .attr( 'type', 'hidden' ) + .attr( 'name', config.name ) + .appendTo( this.$element ); + + // Update with preset values + this.updateHiddenInput(); + } + + this.menu = this.getMenu(); + + // Events + // Update contents of autocomplete menu as user types letters + this.$input.on( { + keyup: this.updateMenuItems.bind( this ) + } ); + // When option is selected from autocomplete menu, update the menu + this.menu.connect( this, { + select: 'updateMenuItems' + } ); + // When list of selected usernames changes, update hidden input + this.connect( this, { + change: 'updateHiddenInput' + } ); + + // API init + this.api = config.api || new mw.Api(); + }; + + /* Setup */ + + OO.inheritClass( mw.widgets.UsersMultiselectWidget, OO.ui.CapsuleMultiselectWidget ); + OO.mixinClass( mw.widgets.UsersMultiselectWidget, OO.ui.mixin.PendingElement ); + + /* Methods */ + + /** + * Get currently selected usernames + * + * @return {Array} usernames + */ + mw.widgets.UsersMultiselectWidget.prototype.getSelectedUsernames = function() { + return this.getItemsData(); + }; + + /** + * Update autocomplete menu with items + * + * @private + */ + mw.widgets.UsersMultiselectWidget.prototype.updateMenuItems = function() { + var inputValue = this.$input.val(); + + if ( inputValue === this.inputValue ) { + // Do not restart api query if nothing has changed in the input + return; + } else { + this.inputValue = inputValue; + } + + this.api.abort(); // Abort all unfinished api requests + + if ( inputValue.length > 0 ) { + this.pushPending(); + + this.api.get( { + action: 'query', + list: 'allusers', + // Prefix of list=allusers is case sensitive. Normalise first + // character to uppercase so that "fo" may yield "Foo". + auprefix: inputValue[ 0 ].toUpperCase() + inputValue.slice( 1 ), + aulimit: this.limit + } ).done( function( response ) { + var suggestions = response.query.allusers, + selected = this.getSelectedUsernames(); + + // Remove usernames, which are already selected from suggestions + suggestions = suggestions.map( function ( user ) { + if ( selected.indexOf( user.name ) === -1 ) { + return new OO.ui.MenuOptionWidget( { + data: user.name, + label: user.name + } ); + } + } ).filter( function( item ) { + return item !== undefined; + } ); + + // Remove all items from menu add fill it with new + this.menu.clearItems(); + + // Additional check to prevent bug of autoinserting first suggestion + // while removing user from the list + if ( inputValue.length > 1 || suggestions.length > 1 ) { + this.menu.addItems( suggestions ); + } + + this.popPending(); + }.bind( this ) ).fail( this.popPending.bind( this ) ); + } else { + this.menu.clearItems(); + } + }; + + /** + * If used inside HTML form, then update hiddenInput with list o + * newline-separated usernames. + * + * @private + */ + mw.widgets.UsersMultiselectWidget.prototype.updateHiddenInput = function() { + if ( 'hiddenInput' in this ) { + this.hiddenInput.val( this.getSelectedUsernames().join( '\n' ) ); + } + }; + +}( jQuery, mediaWiki ) ); diff --git a/resources/src/mediawiki/api.js b/resources/src/mediawiki/api.js index d5032da8f4..37c0c9b6dc 100644 --- a/resources/src/mediawiki/api.js +++ b/resources/src/mediawiki/api.js @@ -51,7 +51,7 @@ } // Pre-populate with fake ajax promises to save http requests for tokens - // we already have on the page via the user.tokens module (bug 34733). + // we already have on the page via the user.tokens module (T36733). promises[ defaultOptions.ajax.url ] = {}; $.each( mw.user.tokens.get(), function ( key, value ) { // This requires #getToken to use the same key as user.tokens. @@ -150,6 +150,9 @@ /** * Massage parameters from the nice format we accept into a format suitable for the API. * + * NOTE: A value of undefined/null in an array will be represented by Array#join() + * as the empty string. Should we filter silently? Warn? Leave as-is? + * * @private * @param {Object} parameters (modified in-place) * @param {boolean} useUS Whether to use U+001F when joining multi-valued parameters. @@ -486,7 +489,7 @@ 'stashwrongowner', 'stashnosuchfilekey' ]; - mw.log.deprecate( mw.Api, 'errors', mw.Api.errors ); + mw.log.deprecate( mw.Api, 'errors', mw.Api.errors, null, 'mw.Api.errors' ); /** * @static @@ -498,6 +501,6 @@ 'duplicate', 'exists' ]; - mw.log.deprecate( mw.Api, 'warnings', mw.Api.warnings ); + mw.log.deprecate( mw.Api, 'warnings', mw.Api.warnings, null, 'mw.Api.warnings' ); }( mediaWiki, jQuery ) ); diff --git a/resources/src/mediawiki/api/options.js b/resources/src/mediawiki/api/options.js index 069fbbfcda..4930c4fccc 100644 --- a/resources/src/mediawiki/api/options.js +++ b/resources/src/mediawiki/api/options.js @@ -26,7 +26,7 @@ * Any warnings returned by the API, including warnings about invalid option names or values, * are ignored. However, do not rely on this behavior. * - * If necessary, the options will be saved using several parallel API requests. Only one promise + * If necessary, the options will be saved using several sequential API requests. Only one promise * is always returned that will be resolved when all requests complete. * * @param {Object} options Options as a `{ name: value, … }` object @@ -35,7 +35,7 @@ saveOptions: function ( options ) { var name, value, bundleable, grouped = [], - deferreds = []; + promise = $.Deferred().resolve(); for ( name in options ) { value = options[ name ] === null ? null : String( options[ name ] ); @@ -58,32 +58,38 @@ } } else { if ( value !== null ) { - deferreds.push( this.postWithToken( 'csrf', { - formatversion: 2, - action: 'options', - optionname: name, - optionvalue: value - } ) ); + promise = promise.then( function ( name, value ) { + return this.postWithToken( 'csrf', { + formatversion: 2, + action: 'options', + optionname: name, + optionvalue: value + } ); + }.bind( this, name, value ) ); } else { // Omitting value resets the option - deferreds.push( this.postWithToken( 'csrf', { - formatversion: 2, - action: 'options', - optionname: name - } ) ); + promise = promise.then( function ( name ) { + return this.postWithToken( 'csrf', { + formatversion: 2, + action: 'options', + optionname: name + } ); + }.bind( this, name ) ); } } } if ( grouped.length ) { - deferreds.push( this.postWithToken( 'csrf', { - formatversion: 2, - action: 'options', - change: grouped - } ) ); + promise = promise.then( function () { + return this.postWithToken( 'csrf', { + formatversion: 2, + action: 'options', + change: grouped + } ); + }.bind( this ) ); } - return $.when.apply( $, deferreds ); + return promise; } } ); diff --git a/resources/src/mediawiki/htmlform/hide-if.js b/resources/src/mediawiki/htmlform/hide-if.js index f9cb5de685..157ac06211 100644 --- a/resources/src/mediawiki/htmlform/hide-if.js +++ b/resources/src/mediawiki/htmlform/hide-if.js @@ -277,7 +277,7 @@ if ( self.wasDisabled === undefined ) { self.wasDisabled = self.fieldWidget.isDisabled(); } - self.fieldWidget.setDisabled( false ); + self.fieldWidget.setDisabled( true ); } else if ( self.wasDisabled !== undefined ) { self.fieldWidget.setDisabled( self.wasDisabled ); } diff --git a/resources/src/mediawiki/htmlform/ooui.styles.css b/resources/src/mediawiki/htmlform/ooui.styles.css index 40f4f5242e..dbf2b6b461 100644 --- a/resources/src/mediawiki/htmlform/ooui.styles.css +++ b/resources/src/mediawiki/htmlform/ooui.styles.css @@ -1,16 +1,33 @@ /* OOUIHTMLForm styles */ -.mw-htmlform-ooui .mw-htmlform-submit-buttons { - margin-top: 1em; +.mw-htmlform-ooui .mw-htmlform-field-HTMLCheckMatrix { + width: 100%; } -.mw-htmlform-ooui .mw-htmlform-field-HTMLCheckMatrix, -.mw-htmlform-ooui .mw-htmlform-matrix, -.mw-htmlform-ooui .mw-htmlform-matrix tr { - width: 100%; +.mw-htmlform-ooui .mw-htmlform-matrix { + border-spacing: 0; +} + +.mw-htmlform-ooui .mw-htmlform-matrix td { + padding: 0.35em 0.7em; + -webkit-transition: background-color 250ms; + -moz-transition: background-color 250ms; + transition: background-color 250ms; +} + +.mw-htmlform-ooui .mw-htmlform-matrix tbody tr:nth-child( even ) td { + background-color: #f8f9fa; } -.mw-htmlform-ooui .mw-htmlform-matrix tr td.first { +.mw-htmlform-ooui .mw-htmlform-matrix tbody tr:not( :first-child ):hover td { + background-color: #eaecf0; +} + +.mw-htmlform-ooui .mw-htmlform-matrix tbody tr:first-child td { + background-color: #fff; +} + +.mw-htmlform-ooui .mw-htmlform-matrix td.first { margin-right: 5%; width: 39%; } @@ -23,3 +40,8 @@ display: inline-block; margin-right: 1em; } + +.mw-htmlform-ooui .htmlform-tip, +.mw-htmlform-ooui .mw-htmlform-submit-buttons { + margin-top: 1em; +} diff --git a/resources/src/mediawiki/htmlform/styles.css b/resources/src/mediawiki/htmlform/styles.css index 1b9d2fb12a..a36b379875 100644 --- a/resources/src/mediawiki/htmlform/styles.css +++ b/resources/src/mediawiki/htmlform/styles.css @@ -26,7 +26,7 @@ table.mw-htmlform-nolabel td.mw-label { } tr.mw-htmlform-vertical-label td.mw-label { - text-align: left !important; + text-align: left !important; /* stylelint-disable-line declaration-no-important */ } .mw-icon-question { @@ -44,9 +44,10 @@ tr.mw-htmlform-vertical-label td.mw-label { margin-left: 4px; } -.mw-icon-question:lang(ar), -.mw-icon-question:lang(fa), -.mw-icon-question:lang(ur) { +/* stylelint-disable indentation */ +.mw-icon-question:lang( ar ), +.mw-icon-question:lang( fa ), +.mw-icon-question:lang( ur ) { -webkit-transform: scaleX( -1 ); -ms-transform: scaleX( -1 ); transform: scaleX( -1 ); diff --git a/resources/src/mediawiki/mediawiki.ForeignStructuredUpload.BookletLayout.js b/resources/src/mediawiki/mediawiki.ForeignStructuredUpload.BookletLayout.js index 543ece881d..f2b6f5f9c3 100644 --- a/resources/src/mediawiki/mediawiki.ForeignStructuredUpload.BookletLayout.js +++ b/resources/src/mediawiki/mediawiki.ForeignStructuredUpload.BookletLayout.js @@ -128,7 +128,14 @@ * @return {mw.Upload} */ mw.ForeignStructuredUpload.BookletLayout.prototype.createUpload = function () { - return new mw.ForeignStructuredUpload( this.target ); + return new mw.ForeignStructuredUpload( this.target, { + parameters: { + errorformat: 'html', + errorlang: mw.config.get( 'wgUserLanguage' ), + errorsuselocal: 1, + formatversion: 2 + } + } ); }; /* Form renderers */ diff --git a/resources/src/mediawiki/mediawiki.ForeignStructuredUpload.BookletLayout.less b/resources/src/mediawiki/mediawiki.ForeignStructuredUpload.BookletLayout.less index 0021caf7c4..877c99b1e0 100644 --- a/resources/src/mediawiki/mediawiki.ForeignStructuredUpload.BookletLayout.less +++ b/resources/src/mediawiki/mediawiki.ForeignStructuredUpload.BookletLayout.less @@ -16,4 +16,4 @@ color: #555; } } -} \ No newline at end of file +} diff --git a/resources/src/mediawiki/mediawiki.Upload.BookletLayout.css b/resources/src/mediawiki/mediawiki.Upload.BookletLayout.css index 03df0864d6..72ce9f0b32 100644 --- a/resources/src/mediawiki/mediawiki.Upload.BookletLayout.css +++ b/resources/src/mediawiki/mediawiki.Upload.BookletLayout.css @@ -1,7 +1,7 @@ .mw-upload-bookletLayout-filePreview { width: 100%; height: 1em; - background-color: #eee; + background-color: #eaecf0; background-size: cover; background-position: center center; padding: 1.5em; @@ -20,7 +20,7 @@ } .mw-upload-bookletLayout-filePreview .oo-ui-progressBarWidget { - border: none; + border: 0; border-radius: 0; background-color: transparent; position: absolute; @@ -30,6 +30,5 @@ } .mw-upload-bookletLayout-filePreview .oo-ui-progressBarWidget-bar { - background-color: #36c; height: 0.5em; -} \ No newline at end of file +} diff --git a/resources/src/mediawiki/mediawiki.Upload.BookletLayout.js b/resources/src/mediawiki/mediawiki.Upload.BookletLayout.js index f736036ecf..172cac2379 100644 --- a/resources/src/mediawiki/mediawiki.Upload.BookletLayout.js +++ b/resources/src/mediawiki/mediawiki.Upload.BookletLayout.js @@ -181,9 +181,9 @@ function ( userInfo ) { if ( userInfo.rights.indexOf( 'upload' ) === -1 ) { if ( mw.user.isAnon() ) { - booklet.getPage( 'upload' ).$element.msg( 'api-error-mustbeloggedin' ); + booklet.getPage( 'upload' ).$element.msg( 'apierror-mustbeloggedin', mw.msg( 'action-upload' ) ); } else { - booklet.getPage( 'upload' ).$element.msg( 'api-error-badaccess-groups' ); + booklet.getPage( 'upload' ).$element.msg( 'apierror-permissiondenied', mw.msg( 'action-upload' ) ); } } return $.Deferred().resolve(); @@ -206,7 +206,14 @@ * @return {mw.Upload} Upload model */ mw.Upload.BookletLayout.prototype.createUpload = function () { - return new mw.Upload(); + return new mw.Upload( { + parameters: { + errorformat: 'html', + errorlang: mw.config.get( 'wgUserLanguage' ), + errorsuselocal: 1, + formatversion: 2 + } + } ); }; /* Uploading */ @@ -319,58 +326,23 @@ * @return {jQuery.Promise} A Promise that will be resolved with an OO.ui.Error. */ mw.Upload.BookletLayout.prototype.getErrorMessageForStateDetails = function () { - var message, - state = this.upload.getState(), + var state = this.upload.getState(), stateDetails = this.upload.getStateDetails(), - error = stateDetails.error, - warnings = stateDetails.upload && stateDetails.upload.warnings; + error = stateDetails.errors ? stateDetails.errors[ 0 ] : false, + warnings = stateDetails.upload && stateDetails.upload.warnings, + $ul = $( '
    @@ -3274,6 +3271,17 @@ array ( a
    
     !! end
     
    +!! test
    +5. Indent-Pre and html pre
    +!! wikitext
    + 
    hi
    +!! html/php +
    hi
    + +!! html/parsoid +
    hi
    +!! end + !!test Render paragraphs when indent-pre is suppressed in blocklevels !! wikitext @@ -3463,18 +3471,17 @@ foo foo !! html/parsoid -
    foo
    +
    foo
    -
    -foo
    +
    foo
     
    -
    +
     
     foo
     
    -
    +
     
     
     foo
    @@ -3518,7 +3525,7 @@ haha
     
     
    !! html/parsoid -
    +
     
     
     
    @@ -3569,7 +3576,7 @@ HTML-pre: 3: other wikitext
     
    !! html/parsoid -
    * foo
    +
    * foo
     # bar
     = no-h =
     '' no-italic ''
    @@ -3691,7 +3698,33 @@ Definition lists: self-closed tag
     !! end
     
     !! test
    -Bug 11748: Literal closing tags
    +Definition lists: ignore colons inside tags
    +!! wikitext
    +;one two : tag fun::: def
    +!! html
    +
    one two : tag fun::
    +
    def
    + +!! end + +!! test +Definition lists: excess closed tags +!! wikitext +;onetwo : bad tag fun +!! html/php+tidy +
    +
    onetwo 
    +
    bad tag fun
    +
    +!! html/parsoid +
    +
    onetwo
    +
    bad tag fun
    +
    +!! end + +!! test +T13748: Literal closing tags !! wikitext
    test 1
    @@ -3818,7 +3851,7 @@ should be left alone !! end !! test -Definition Lists: Hacky use to indent tables, with comments (bug 63979) +Definition Lists: Hacky use to indent tables, with comments (T65979) !! wikitext ::{| @@ -4524,7 +4557,7 @@ Non-bracketed: http://example.com

    !! end -# parsoid doesn't explicitly mark autonumbered links, see bug 53505 +# parsoid doesn't explicitly mark autonumbered links, see T55505 !! test External links: numbered !! wikitext @@ -4569,7 +4602,7 @@ http://example.com/1$2345

    !! end -# parsoid doesn't explicitly mark autonumbered links, see bug 53505 +# parsoid doesn't explicitly mark autonumbered links, see T55505 !! test External links: dollar sign in URL (autonumber) !! wikitext @@ -4582,7 +4615,7 @@ External links: dollar sign in URL (autonumber) !!end !! test -External links: open square bracket forbidden in URL (bug 4377) +External links: open square bracket forbidden in URL (T6377) !! options parsoid=wt2html,wt2wt,html2html !! wikitext @@ -4595,7 +4628,7 @@ http://example.com/1[2345 !! end !! test -External links: open square bracket forbidden in URL (named) (bug 4377) +External links: open square bracket forbidden in URL (named) (T6377) !! options parsoid=wt2html,html2html !! wikitext @@ -4609,7 +4642,7 @@ parsoid=wt2html,html2html # parsoid adds a space before the link name !! test -External links: open square bracket forbidden in URL (named) (bug 4377) +External links: open square bracket forbidden in URL (named) (T6377) Parsoid variant. !! wikitext [http://example.com/1 [2345] @@ -4619,7 +4652,7 @@ Parsoid variant. !!end !! test -External links: nowiki in URL link text (bug 6230) +External links: nowiki in URL link text (T8230) !! wikitext [http://example.com/ ''example site''] !! html @@ -4628,7 +4661,7 @@ External links: nowiki in URL link text (bug 6230) !! end !! test -External links: newline forbidden in text (bug 6230 regression check) +External links: newline forbidden in text (T8230 regression check) !! wikitext [http://example.com/ first second] @@ -4656,7 +4689,7 @@ External links: protocol-relative URL in brackets

    !! end -# parsoid doesn't explicitly mark autonumbered links, see bug 53505 +# parsoid doesn't explicitly mark autonumbered links, see T55505 !! test External links: protocol-relative URL in brackets without text !! wikitext @@ -4678,7 +4711,7 @@ External links: protocol-relative URL in free text is left alone !!end !! test -External links: protocol-relative URL in the middle of a word is left alone (bug 30269) +External links: protocol-relative URL in the middle of a word is left alone (T32269) !! wikitext foo//example.com/Foo !! html @@ -4798,6 +4831,17 @@ news:'a'b''c''d e

    news:'a'bcd e

    !! end +!! test +External links: with entity +!! wikitext +[http:// www.librarieswithoutborders.org Libraries without borders] +!! html/php +

    Libraries without borders +

    +!! html/parsoid +

    Libraries without borders

    +!! end + !! test External links: Lone protocols are never linked (T105697) !! wikitext @@ -4818,7 +4862,7 @@ bitcoin:; !! end !! test -External links: No preceding word characters allowed (bug 65278) +External links: No preceding word characters allowed (T67278) !! wikitext NOPEhttp://example.com N0http://example.com @@ -4963,7 +5007,7 @@ Old & use: http://x&y !! end !! test -External links: encoded equals (bug 6102) +External links: encoded equals (T8102) !! wikitext http://example.com/?foo=bar !! html/php @@ -4975,7 +5019,7 @@ http://example.com/?foo=bar ## ## Note that parsoid doesn't explicit mark autonumbered links, nor -## does it number them. As discussed in bug 53505, we can identify +## does it number them. As discussed in T55505, we can identify ## autonumbered links via CSS. ## @@ -5019,7 +5063,7 @@ External links: [raw equals] # note that parsoid html is identical to [raw equals] case; so html2wt # mode will return the [raw equals] wikitext !! test -External links: [encoded equals] (bug 6102) +External links: [encoded equals] (T8102) !! options parsoid=wt2html,wt2wt,html2html !! wikitext @@ -5079,7 +5123,7 @@ http://e‌xample.com/ !! end !! test -External links: www.jpeg.org (bug 554) +External links: www.jpeg.org (T2554) !! wikitext http://www.jpeg.org !! html @@ -5087,9 +5131,9 @@ http://www.jpeg.org

    !! end -# parsoid doesn't explicitly mark autonumbered links, see bug 53505 +# parsoid doesn't explicitly mark autonumbered links, see T55505 !! test -External links: URL within URL (original bug 2) +External links: URL within URL (T2002) !! wikitext [http://www.unausa.org/newindex.asp?place=http://www.unausa.org/programs/mun.asp] !! html/php @@ -5100,7 +5144,7 @@ External links: URL within URL (original bug 2) !! end !! test -BUG 361: URL inside bracketed URL +T2361: URL inside bracketed URL !! wikitext [http://www.example.com/foo http://www.example.com/bar] !! html @@ -5109,7 +5153,7 @@ BUG 361: URL inside bracketed URL !! end !! test -BUG 361: URL within URL, not bracketed +T2361: URL within URL, not bracketed !! wikitext http://www.example.com/foo?=http://www.example.com/bar !! html @@ -5118,7 +5162,7 @@ http://www.example.com/foo?=http://www.example.com/bar !! end !! test -BUG 289: ">"-token in URL-tail +T2289: ">"-token in URL-tail !! wikitext http://www.example.com/ !! html @@ -5127,7 +5171,7 @@ http://www.example.com/ !!end !! test -BUG 289: literal ">"-token in URL-tail +T2289: literal ">"-token in URL-tail !! wikitext http://www.example.com/html !! html/php @@ -5138,7 +5182,7 @@ http://www.example.com/html !! end !! test -BUG 289: ">"-token in bracketed URL +T2289: ">"-token in bracketed URL !! wikitext [http://www.example.com/ stuff] !! html @@ -5147,7 +5191,7 @@ BUG 289: ">"-token in bracketed URL !!end !! test -BUG 289: literal ">"-token in bracketed URL +T2289: literal ">"-token in bracketed URL !! wikitext [http://www.example.com/html stuff] !! html @@ -5156,7 +5200,7 @@ BUG 289: literal ">"-token in bracketed URL !!end !! test -BUG 289: literal double quote at end of URL +T2289: literal double quote at end of URL !! wikitext http://www.example.com/"hello" !! html @@ -5165,7 +5209,7 @@ http://www.example.com/"hello" !!end !! test -BUG 289: literal double quote in bracketed URL +T2289: literal double quote in bracketed URL !! wikitext [http://www.example.com/"hello" stuff] !! html @@ -5174,7 +5218,7 @@ BUG 289: literal double quote in bracketed URL !!end !! test -External links: multiple legal whitespace is fine, Magnus. Don't break it please. (bug 5081) +External links: multiple legal whitespace is fine, Magnus. Don't break it please. (T7081) !! wikitext [http://www.example.com test] !! html @@ -5194,7 +5238,7 @@ External links: link text with spaces !! end !! test -External links: wiki links within external link (Bug 3695) +External links: wiki links within external link (T5695) !! options parsoid=wt2html,html2html !! wikitext @@ -5207,7 +5251,7 @@ parsoid=wt2html,html2html !! end !! test -BUG 787: Links with one slash after the url protocol are invalid +T2787: Links with one slash after the url protocol are invalid !! wikitext http:/example.com @@ -5228,7 +5272,7 @@ Bracketed external links with template-generated invalid target !! end !! test -Bug 2702: Mismatched , and tags are invalid +T4702: Mismatched , and tags are invalid !! wikitext ''[http://example.com text''] [http://example.com '''text]''' @@ -5246,7 +5290,7 @@ Bug 2702: Mismatched , and tags are invalid !! test -Bug 4781: %26 in URL +T6781: %26 in URL !! wikitext http://www.example.com/?title=AT%26T !! html/php @@ -5259,7 +5303,7 @@ http://www.example.com/?title=AT%26T # According to https://www.w3.org/TR/2011/WD-html5-20110525/Overview.html#parsing-urls a plain # % is actually legal in HTML5. Any change in output would need testing though. !! test -Bug 4781, 5267: %25 in URL +T6781, T7267: %25 in URL !! wikitext http://www.example.com/?title=100%25_Bran !! html/php @@ -5270,7 +5314,7 @@ http://www.example.com/?title=100%25_Bran !! end !! test -Bug 4781, 5267: %28, %29 in URL +T6781, T7267: %28, %29 in URL !! wikitext http://www.example.com/?title=Ben-Hur_%281959_film%29 !! html/php @@ -5282,7 +5326,7 @@ http://www.example.com/?title=Ben-Hur_%281959_film%29 !! test -Bug 4781: %26 in autonumber URL +T6781: %26 in autonumber URL !! wikitext [http://www.example.com/?title=AT%26T] !! html/php @@ -5293,7 +5337,7 @@ Bug 4781: %26 in autonumber URL !! end !! test -Bug 4781, 5267: %26 in autonumber URL +T6781, T7267: %26 in autonumber URL !! wikitext [http://www.example.com/?title=100%25_Bran] !! html/php @@ -5304,7 +5348,7 @@ Bug 4781, 5267: %26 in autonumber URL !! end !! test -Bug 4781, 5267: %28, %29 in autonumber URL +T6781, T7267: %28, %29 in autonumber URL !! wikitext [http://www.example.com/?title=Ben-Hur_%281959_film%29] !! html/php @@ -5316,7 +5360,7 @@ Bug 4781, 5267: %28, %29 in autonumber URL !! test -Bug 4781: %26 in bracketed URL +T6781: %26 in bracketed URL !! wikitext [http://www.example.com/?title=AT%26T link] !! html/php @@ -5327,7 +5371,7 @@ Bug 4781: %26 in bracketed URL !! end !! test -Bug 4781, 5267: %25 in bracketed URL +T6781, T7267: %25 in bracketed URL !! wikitext [http://www.example.com/?title=100%25_Bran link] !! html @@ -5336,7 +5380,7 @@ Bug 4781, 5267: %25 in bracketed URL !! end !! test -Bug 4781, 5267: %28, %29 in bracketed URL +T6781, T7267: %28, %29 in bracketed URL !! wikitext [http://www.example.com/?title=Ben-Hur_%281959_film%29 link] !! html/php @@ -5347,7 +5391,7 @@ Bug 4781, 5267: %28, %29 in bracketed URL !! end !! test -External link containing a period in the anchor. (bug 63947) +External link containing a period in the anchor. (T65947) !! wikitext [//foo.org/bar#baz. bang] @@ -5362,7 +5406,7 @@ External link containing a period in the anchor. (bug 63947) !! end !! test -External link containing a single quote. (bug 63947) +External link containing a single quote. (T65947) !! wikitext [//foo.org/bar'baz] @@ -5377,7 +5421,7 @@ External link containing a single quote. (bug 63947) !! end !! test -External link containing double-single-quotes in text '' (bug 4598 sanity check) +External link containing double-single-quotes in text '' (T6598 sanity check) !! wikitext Some [http://example.com/ pretty ''italics'' and stuff]! !! html @@ -5386,7 +5430,7 @@ Some [http://example.com/ pretty ''italics'' and stuff]! !! end !! test -External link containing double-single-quotes in text embedded in italics (bug 4598 sanity check) +External link containing double-single-quotes in text embedded in italics (T6598 sanity check) !! wikitext ''Some [http://example.com/ pretty ''italics'' and stuff]!'' !! html @@ -5460,7 +5504,7 @@ http://example.com/index.php?foozoid[]=bar !! html/parsoid

    http://example.com/index.php?foozoid%5B%5D=bar

    -

    http://example.com/index.php?foozoid[]=bar

    +

    http://example.com/index.php?foozoid%5B%5D=bar

    !! end !! test @@ -6346,7 +6390,7 @@ Nested table !! end !! test -Invalid attributes in table cell (bug 1830) +Invalid attributes in table cell (T3830) !! wikitext {| |Cell:|broken @@ -6407,7 +6451,7 @@ parsoid=wt2html,html2html !! html/parsoid
    -
    " onmouseover="alert(document.cookie)">test
    +[ftp://%7Cx]" onmouseover="alert(document.cookie)">test !! end !! test @@ -6940,12 +6984,6 @@ Wikitext table with html-syntax row foo !! end -## Note that Parsoid output differs from PHP and PHP+tidy here. -## The lack of tags in the PHP output is arguably a bug in the -## PHP parser, which tidy then compounds by fostering the content -## entirely out of the table. Parsoid recognizes the table context -## and generates and wrappers as needed. Hopefully nobody -## depends on PHP's treatment of broken table markup! !! test Implicit after a |- !! options @@ -6964,56 +7002,12 @@ a !! html/php+tidy

    a

    !! html/parsoid - - -
    a
    -!! end - -# Again, Parsoid adds implicit s here, PHP and Tidy strip the b out. -!! test -
     tags should be recognized in an explicit  context, but not in an implicit  context
    -!! options
    -parsoid=wt2html,html2html
    -!! wikitext
    -{|
    -|-
    -|
    - a
    -|-
    - b
    -|}
    -!! html/php
    -
    -
    -
    -
    - b
    -
    -
    a
    -
    -
    +

    a

    + -!! html/php+tidy -

    b

    -
    - - - -
    -
    -a
    -
    -!! html/parsoid - - - - - -
    a
    b
    + !! end -# PHP + Tidy strips the list out of the table; Parsoid wraps it. -# Parsoid generates the missing , so wt2wt won't succeed. !! test Lists should be recognized in an implicit context !! options @@ -7034,13 +7028,10 @@ parsoid=wt2html,html2html
  • a
  • !! html/parsoid - - - - -
      -
    • a
    • -
    +
    • a
    + + +
    !! end !! test @@ -7061,12 +7052,11 @@ Table cells not properly parsed in an implicit-td context !! html/parsoid - -
    a b
    + a b !! end !! test -Parsoid: Round-trip tables directly followed by content (bug 51219) +Parsoid: Round-trip tables directly followed by content (T53219) !! options parsoid=wt2html,wt2wt !! wikitext @@ -7093,7 +7083,7 @@ parsoid=wt2html,wt2wt !! end !! test -Parsoid: Default to a newline after tables in new content (bug 51219) +Parsoid: Default to a newline after tables in new content (T53219) !! options parsoid=html2wt !! html/parsoid @@ -7485,7 +7475,7 @@ Piped link with multiple pipe characters in link text

    |The|Main|Page|

    !! html/parsoid -

    |The|Main|Page|

    +

    |The|Main|Page|

    !! end !! test @@ -7502,7 +7492,7 @@ Piped link with no link text !! test Piped link with empty link text !! wikitext -[[Main Page|]] - empty nowiki +[[Main Page|]] - empty nowiki [[Main Page| ]] - empty space [[Main Page| ]] - empty non breaking space !! html/php @@ -7511,7 +7501,7 @@ Piped link with empty link text   - empty non breaking space

    !! html/parsoid -

    - empty nowiki +

    - empty nowiki - empty space   - empty non breaking space

    !! end @@ -7577,7 +7567,7 @@ Some text !! endarticle !! test -Bug 43661: Piped links with identical prefixes +T45661: Piped links with identical prefixes !! wikitext [[prefixed article|prefixed articles with spaces]] @@ -7656,7 +7646,7 @@ Link with multiple pipes !! end !! test -Anchor containing a #. (bug 63430) +Anchor containing a #. (T65430) !! wikitext [[Main Page#And#Link]] !! html/php @@ -7692,7 +7682,7 @@ This is an article in the MemoryAlpha namespace !! endarticle !! test -Namespace takes precedence over interwiki link (bug 51680) +Namespace takes precedence over interwiki link (T53680) !! wikitext [[MemoryAlpha:AlphaTest]] !! html @@ -7831,7 +7821,7 @@ Link containing a tilde !! end !! test -Link containing double-single-quotes '' (bug 4598) +Link containing double-single-quotes '' (T6598) !! wikitext [[Lista d''e paise d''o munno]] !! html/php @@ -7842,18 +7832,45 @@ Link containing double-single-quotes '' (bug 4598) !! end !! test -Link containing double-single-quotes '' in text (bug 4598 sanity check) +Link containing double quotes and spaces +!! wikitext +[[Cool "Gator"]] +!! html/php +

    Cool "Gator" +

    +!! html/parsoid +

    Cool "Gator"

    +!! end + +!! test +File containing double quotes and spaces +!! wikitext +[[File:Cool "Gator".png]] +!! html/parsoid +

    +!! end + +!! test +Redirect containing double quotes and spaces +!! wikitext +#REDIRECT [[Cool "Gator"]] +!! html/parsoid + +!! end + +!! test +Link containing double-single-quotes '' in text (T6598 sanity check) !! wikitext Some [[Link|pretty ''italics'' and stuff]]! !! html/php

    Some pretty italics and stuff!

    !! html/parsoid -

    Some pretty italics and stuff!

    +

    Some pretty italics and stuff!

    !! end !! test -Link containing double-single-quotes '' in text embedded in italics (bug 4598 sanity check) +Link containing double-single-quotes '' in text embedded in italics (T6598 sanity check) !! wikitext ''Some [[Link|pretty ''italics'' and stuff]]!'' !! html @@ -7879,13 +7896,13 @@ Link with double quotes in title part (literal) and alternate part (interpreted)

    !! html/parsoid

    -

    ''Pentecoste''

    -

    Pentecoste

    -

    Pentecoste

    +

    ''Pentecoste''

    +

    Pentecoste

    +

    Pentecoste

    !! end !! test -Broken image links with HTML captions (bug 39700) +Broken image links with HTML captions (T41700) !! wikitext [[File:Nonexistent|]] [[File:Nonexistent|100x100px|]] @@ -7976,11 +7993,11 @@ Piped link to URL: [[http://www.example.com|an example URL]]

    Piped link to URL: [example URL]

    !! html/parsoid -

    Piped link to URL: [example URL]

    +

    Piped link to URL: [example URL]

    !! end !! test -BUG 2: [[page|http://url/]] should link to page, not http://url/ +T2002: [[page|http://url/]] should link to page, not http://url/ !! wikitext [[Main Page|http://url/]] !! html/php @@ -7992,7 +8009,7 @@ BUG 2: [[page|http://url/]] should link to page, not http://url/ # Parsoid does not mark self-links, by design. !! test -BUG 337: Escaped self-links should be bold +T2337: Escaped self-links should be bold !! options title=[[Bug462]] !! wikitext @@ -8064,7 +8081,7 @@ Non-breaking spaces in title !!end !! test -Internal link with ca linktrail, surrounded by bold apostrophes (bug 27473 primary issue) +Internal link with ca linktrail, surrounded by bold apostrophes (T29473 primary issue) !! options language=ca !! wikitext @@ -8075,7 +8092,7 @@ language=ca !! end !! test -Internal link with ca linktrail, surrounded by italic apostrophes (bug 27473 primary issue) +Internal link with ca linktrail, surrounded by italic apostrophes (T29473 primary issue) !! options language=ca !! wikitext @@ -8086,7 +8103,7 @@ language=ca !! end !! test -Internal link with en linktrail: no apostrophes (bug 27473) +Internal link with en linktrail: no apostrophes (T29473) !! options language=en !! wikitext @@ -8097,7 +8114,7 @@ language=en !! end !! test -Internal link with ca linktrail with apostrophes (bug 27473) +Internal link with ca linktrail with apostrophes (T29473) !! options language=ca !! wikitext @@ -8108,7 +8125,7 @@ language=ca !! end !! test -Internal link with kaa linktrail with apostrophes (bug 27473) +Internal link with kaa linktrail with apostrophes (T29473) !! options language=kaa !! wikitext @@ -8119,7 +8136,7 @@ language=kaa !! end !! test -Link with multiple ":" in a subpage-supporting namespace (bug 63636) +Link with multiple ":" in a subpage-supporting namespace (T65636) !! wikitext [[User:Foo/Test/63636:Bar|Test]] !! html/php @@ -8134,19 +8151,32 @@ Link with multiple ":" in a subpage-supporting namespace (bug 63636) Handle title parsing for subpages !! options title=[[/123123]] +subpage !! wikitext 123 +!! html/php +

    123 +

    !! html/parsoid

    123

    !! end -## FIXME: Add a working php section here +!! article +User:Test/123 +!! text +test 123 +!! endarticle + !! test Link to a subpage from a namespace other than main !! options -title=[[User:test]] +title=[[User:Test]] +subpage !! wikitext [[/123]] +!! html/php +

    /123 +

    !! html/parsoid

    /123

    !! end @@ -8168,7 +8198,8 @@ parsoid=wt2html !! test Purely hash wikilink !! options -title=[[User:test/123]] +title=[[User:Test/123]] +subpage !! wikitext [[#a|b]] !! html/php @@ -8180,12 +8211,10 @@ title=[[User:test/123]] !! test 1. Interaction of linktrail and template encapsulation -!! options -parsoid !! wikitext {{echo|[[Foo]]}}l -!! html -

    Fool

    +!! html/parsoid +

    Fool

    !! end !! test @@ -8255,7 +8284,7 @@ Parsoid link trail escaping !! options parsoid=html2wt,html2html !! html/parsoid -

    apples

    +

    apples

    !! wikitext [[apple]]s !! end @@ -8266,7 +8295,7 @@ Parsoid link prefix escaping language=is parsoid=html2wt,html2html !! html/parsoid -

    Aðrir mótmælendasöfnuður

    +

    Aðrir mótmælendasöfnuður

    !! wikitext Aðrir mótmælenda[[söfnuður]] !! end @@ -8291,12 +8320,10 @@ Parsoid-centric test: Whitespace in ext- and wiki-links should be preserved !! test Parsoid: Scoped parsing should handle mixed transclusions and plain text -!! options -parsoid !! wikitext [[Foo|{{echo|a}} b {{echo|c}}]] -!! html -

    a b c

    +!! html/parsoid +

    a b c

    !! end !! test @@ -8328,7 +8355,7 @@ parsoid=wt2html,wt2wt,html2html !! end !! test -Inline interwiki link with empty title (bug 2372) +Inline interwiki link with empty title (T4372) !! options parsoid=wt2html,wt2wt,html2html !! wikitext @@ -8341,7 +8368,7 @@ parsoid=wt2html,wt2wt,html2html !! end !! test -Interwiki link encoding conversion (bug 1636) +Interwiki link encoding conversion (T3636) !! wikitext *[[Wikipedia:ro:Olteniţa]] *[[Wikipedia:ro:Olteniţa]] @@ -8357,7 +8384,7 @@ Interwiki link encoding conversion (bug 1636) !! end !! test -Interwiki link with fragment (bug 2130) +Interwiki link with fragment (T4130) !! wikitext [[MeatBall:SoftSecurity#foo]] !! html @@ -8483,7 +8510,7 @@ parsoid=wt2html,wt2wt,html2html !! end !! test -Local interwiki link: prefix only (bug 64167) +Local interwiki link: prefix only (T66167) !! options parsoid=wt2html,wt2wt,html2html !! wikitext @@ -8496,7 +8523,7 @@ parsoid=wt2html,wt2wt,html2html !! end !! test -Local interwiki link: with additional interwiki prefix (bug 61357) +Local interwiki link: with additional interwiki prefix (T63357) !! options parsoid=wt2html,wt2wt,html2html !! wikitext @@ -8590,6 +8617,23 @@ Blah blah blah !! end +!! test +Escaping of interlanguage links (T129218, T156308) +!! wikitext +Blah blah blah +[[:es:Spanish]] +[[ : zh : Chinese ]] +!! html/php +

    Blah blah blah +es:Spanish + zh : Chinese +

    +!! html/parsoid +

    Blah blah blah +es:Spanish + zh : Chinese

    +!! end + ## parsoid html2wt will normalize the space to _ !! test Space and question mark encoding in interlanguage links (T95473) @@ -8622,7 +8666,7 @@ Blah blah blah !! end !! test -Double interlanguage link, with prefix links (bug 8897) +Double interlanguage link, with prefix links (T10897) !! options language=ln !! wikitext @@ -8639,7 +8683,7 @@ Blah blah blah !! end !! test -"Extra" interlanguage links (bug 32189 / gerrit 111390) +"Extra" interlanguage links (T34189 / gerrit 111390) !! wikitext Blah blah blah [[mul:Article]] @@ -8691,12 +8735,12 @@ language=ln !! end !! test -Parsoid bug 53221: Wikilinks should be properly entity-escaped +Parsoid T55221: Wikilinks should be properly entity-escaped !! options parsoid={ "modes": ["html2wt"], "suppressErrors": true } !! html/parsoid -

    He&nbsp;llo He&nbsp;llo

    -

    He&nbsp;llo He&nbsp;llo

    +

    He&nbsp;llo He&nbsp;llo

    +

    He&nbsp;llo He&nbsp;llo

    !! wikitext He&nbsp;llo [[Foo|He&nbsp;llo]] @@ -8768,7 +8812,7 @@ parsoid=wt2html,wt2wt,html2html !! end !! test -Handle interwiki links pointing to the current wiki as plain wiki links (bug 45209) +Handle interwiki links pointing to the current wiki as plain wiki links (T47209) !! wikitext [[mi:Foo]] !! html/php @@ -8779,7 +8823,7 @@ Handle interwiki links pointing to the current wiki as plain wiki links (bug 452 !! end !! test -Interlanguage link with preceding local interwiki link (bug 68085) +Interlanguage link with preceding local interwiki link (T70085) !! options parsoid=wt2html,wt2wt,html2html !! wikitext @@ -9026,7 +9070,7 @@ Broken br tag sanitization

    !! end -# TODO: Fix html2html mode (bug 51055)! +# TODO: Fix html2html mode (T53055)! !! test Parsoid: Broken br tag recognition !! options @@ -9410,7 +9454,7 @@ parsoid !! end !! test -List items are not parsed correctly following a
     block (bug 785)
    +List items are not parsed correctly following a 
     block (T2785)
     !! wikitext
     * 
    foo
    *
    bar
    @@ -9421,8 +9465,8 @@ List items are not parsed correctly following a
     block (bug 785)
     
  • zar
  • !! html/parsoid -
    • foo
    • -
    • bar
    • +
      • foo
      • +
      • bar
      • zar
      !! end @@ -9619,7 +9663,7 @@ Unbalanced closing block tags break a list !! end # Parsoid fails this test, but it might be tricky to support properly. -# See bug 68395. +# See T70395. !! test Unbalanced closing non-block tags don't break a list (php parser relies on Tidy to fix up) @@ -9661,7 +9705,7 @@ parsoid=wt2html,wt2wt,html2html
    • b
    • !! end -# See bug 68395. +# See T70395. !!test 1. List embedded in a formatting tag !! wikitext @@ -9853,7 +9897,7 @@ Magic Word: {{CURRENTHOUR}} !! end !! test -Magic Word: {{CURRENTWEEK}} (@bug 4594) +Magic Word: {{CURRENTWEEK}} (T6594) !! wikitext {{CURRENTWEEK}} !! html @@ -10200,7 +10244,7 @@ title=[['foo & bar = baz']] !! end !! test -Magic Word: {{PAGENAME}} with metacharacters (bug 26781) +Magic Word: {{PAGENAME}} with metacharacters (T28781) !! options title=[[*RFC 1234 http://example.com/]] !! wikitext @@ -10224,7 +10268,7 @@ title=[[User:Ævar Arnfjörð Bjarmason]] !! end !! test -Magic Word: {{PAGENAMEE}} with metacharacters (bug 26781) +Magic Word: {{PAGENAMEE}} with metacharacters (T28781) !! options title=[[*RFC 1234 http://example.com/]] !! wikitext @@ -10345,7 +10389,7 @@ Parsoid: Page property magic word with magic word contents !! wikitext {{DISPLAYTITLE:''{{PAGENAME}}''}} !! html/parsoid - + !! end !! test @@ -10375,7 +10419,7 @@ Namespace 1 {{ns:01}} !! end !! test -Namespace 0 {{ns:0}} (bug 4783) +Namespace 0 {{ns:0}} (T6783) !! wikitext {{ns:0}} !! html @@ -10383,7 +10427,7 @@ Namespace 0 {{ns:0}} (bug 4783) !! end !! test -Namespace 0 {{ns:00}} (bug 4783) +Namespace 0 {{ns:00}} (T6783) !! wikitext {{ns:00}} !! html @@ -10527,7 +10571,7 @@ __proto__ ### Magic links ### !! test -Magic links: internal link to RFC (bug 479) +Magic links: internal link to RFC (T2479) !! wikitext [[RFC 123]] !! html/php @@ -10538,7 +10582,7 @@ Magic links: internal link to RFC (bug 479) !! end !! test -Magic links: RFC (bug 479) +Magic links: RFC (T2479) !! wikitext RFC 822 !! html/php @@ -10549,7 +10593,7 @@ RFC 822 !! end !! test -Magic links: RFC (bug 65278) +Magic links: RFC (T67278) !! wikitext This is RFC 822 but thisRFC 822 is not RFC 822linked. !! html/php @@ -10560,7 +10604,7 @@ This is RFC 822 but thisRFC 822 is not RFC 822linked. !! end !! test -Magic links: RFC (w/ non-newline whitespace, bug 28950/29025) +Magic links: RFC (w/ non-newline whitespace, T30950/T31025) !! wikitext RFC       822 RFC @@ -10577,7 +10621,7 @@ RFC !! end !! test -Magic links: ISBN (bug 1937) +Magic links: ISBN (T3937) !! wikitext ISBN 0-306-40615-2 !! html/php @@ -10588,7 +10632,7 @@ ISBN 0-306-40615-2 !! end !! test -Magic links: ISBN (bug 65278) +Magic links: ISBN (T67278) !! wikitext This is ISBN 978-0-316-09811-3 but thisISBN 978-0-316-09811-3 is not ISBN 978-0-316-09811-3linked. !! html/php @@ -10599,7 +10643,7 @@ This is ISBN 978-0-316-09811-3 but thisISBN 978-0-316-09811-3 is not ISBN 978-0- !! end !! test -Magic links: ISBN (w/ non-newline whitespace, bug 28950/29025) +Magic links: ISBN (w/ non-newline whitespace, T30950/T31025) !! wikitext ISBN       978 0 316 09811 3 ISBN @@ -10633,7 +10677,7 @@ PMID 1234 !! end !! test -Magic links: PMID (bug 65278) +Magic links: PMID (T67278) !! wikitext This is PMID 1234 but thisPMID 1234 is not PMID 1234linked. !! html/php @@ -10644,7 +10688,7 @@ This is PMID 1234 but thisPMID 1234 is not PMID 1234linked. !! end !! test -Magic links: PMID (w/ non-newline whitespace, bug 28950/29025) +Magic links: PMID (w/ non-newline whitespace, T30950/T31025) !! wikitext PMID       1234 PMID @@ -10735,7 +10779,7 @@ Template with invalid target containing wikilink !! end !! test -Template with just whitespace in it, bug #68421 +Template with just whitespace in it, T70421 !! wikitext {{echo|{{ }}}} !! html/parsoid @@ -10953,7 +10997,7 @@ Template with complex arguments !! end !! test -BUG 553: link with two variables in a piped link +T2553: link with two variables in a piped link !! wikitext {| |[[{{{1}}}|{{{2}}}]] @@ -11114,7 +11158,7 @@ Template:table !! endarticle !! test -BUG 529: Template with table, not included at beginning of line +T2529: Template with table, not included at beginning of line !! wikitext foo {{table}} !! html @@ -11133,7 +11177,7 @@ foo {{table}} !! end !! test -BUG 523: Template shouldn't eat newline (or add an extra one before table) +T2523: Template shouldn't eat newline (or add an extra one before table) !! wikitext foo {{table}} @@ -11153,7 +11197,7 @@ foo !! end !! test -BUG 41: Template parameters shown as broken links +T2041: Template parameters shown as broken links !! wikitext {{{parameter}}} !! html @@ -11401,7 +11445,7 @@ Template:Includeonly section !!endarticle !! test -Bug 6563: Edit link generation for section shown by +T8563: Edit link generation for section shown by !! wikitext {{includeonly section}} !! html @@ -11412,7 +11456,7 @@ Bug 6563: Edit link generation for section shown by # Uses same input as the contents of [[Template:Includeonly section]] !! test -Bug 6563: Section extraction for section shown by +T8563: Section extraction for section shown by !! options section=T-2 !! wikitext @@ -11425,7 +11469,7 @@ section=T-2 !! end !! test -Bug 6563: Edit link generation for section suppressed by +T8563: Edit link generation for section suppressed by !! wikitext ==Includeonly section== @@ -11437,7 +11481,7 @@ Bug 6563: Edit link generation for section suppressed by !! end !! test -Bug 6563: Section extraction for section suppressed by +T8563: Section extraction for section suppressed by !! options section=1 !! wikitext @@ -12200,11 +12244,11 @@ Templates: HTML Tables: 5. Proper fostering of categories from inside parsoid=wt2html,wt2wt !! wikitext [[Category:foo1]]
      foo
      - + [[Category:bar1]][[Category:bar2]]
      foo
      !! html
      foo
      - +
      foo
      !!end @@ -12516,7 +12560,7 @@ Templates: Ugly templates: 4. newline-only template parameter inconsistency

      !! end -# Bug 64017 -- ugly wikitext with fostered content generates two template ranges that +# T66017 -- ugly wikitext with fostered content generates two template ranges that # have a true overlap (T1-start - T2-start - T1-end - T2-end). !! test Templates: Ugly templates: 5. Template encapsulation test: Non-trivial overlap of template ranges is properly handled @@ -12530,7 +12574,7 @@ Templates: Ugly templates: 5. Template encapsulation test: Non-trivial overlap o !! end -# Bug 64017 -- ugly wikitext with fostered content generates two template ranges +# T66017 -- ugly wikitext with fostered content generates two template ranges # that are "identical" and generate nesting cycles in the algorithm !! test Templates: Ugly templates: 6. Template encapsulation test: Cyclical nesting of template ranges is properly handled @@ -12621,7 +12665,7 @@ pst MediaWiki !! end -# This is bug 89, which I fixed. -- wtm +# This is T2089, which I fixed. -- wtm !! test pre-save transform: subst: templates with parameters !! options @@ -12639,7 +12683,7 @@ Template:nowikitest !! endarticle !! test -pre-save transform: nowiki in subst (bug 1188) +pre-save transform: nowiki in subst (T3188) !! options pst !! wikitext @@ -12655,7 +12699,7 @@ This template has in it. !! endarticle !! test -pre-save transform: comment in subst (bug 1936) +pre-save transform: comment in subst (T3936) !! options pst !! wikitext @@ -12704,7 +12748,7 @@ Template:dangerous !!endarticle !!test -(confirming safety of fix for subst bug 1936) +(confirming safety of fix for subst T3936) !! wikitext {{Template:dangerous}} !! html @@ -12713,7 +12757,7 @@ Template:dangerous !! end !! test -pre-save transform: comment containing gallery (bug 5024) +pre-save transform: comment containing gallery (T7024) !! options pst !! wikitext @@ -12743,7 +12787,7 @@ pst !!end !! test -pre-save transform: in subst (bug 3298) +pre-save transform: in subst (T5298) !! options pst !! wikitext @@ -12753,7 +12797,7 @@ Foobar !! end !! test -pre-save transform: in subst (bug 3298) +pre-save transform: in subst (T5298) !! options pst !! wikitext @@ -12775,7 +12819,7 @@ Template:SafeSubstTest !! endarticle !! test -bug 22297: safesubst: works during PST +T24297: safesubst: works during PST !! options pst !! wikitext @@ -12785,7 +12829,7 @@ FoobarFoobar !! end !! test -bug 22297: safesubst: works during normal parse +T24297: safesubst: works during normal parse !! wikitext {{SafeSubstTest}} !! html @@ -12943,7 +12987,7 @@ pst title=[[Ns:Somearticle (IGNORED), Context]] !! end !! test -pre-save transform: context links ("pipe trick") with full-width parens and no space (Japanese and Chinese style, bug 30149) +pre-save transform: context links ("pipe trick") with full-width parens and no space (Japanese and Chinese style, T32149) !! options pst !! wikitext @@ -12963,7 +13007,7 @@ pst !! end !! test -pre-save transform: context links ("pipe trick") with full-width parens and space (Japanese and Chinese style, bug 30149) +pre-save transform: context links ("pipe trick") with full-width parens and space (Japanese and Chinese style, T32149) !! options pst !! wikitext @@ -12983,7 +13027,7 @@ pst !! end !! test -pre-save transform: context links ("pipe trick") with parens and no space (Korean style, bug 30149) +pre-save transform: context links ("pipe trick") with parens and no space (Korean style, T32149) !! options pst !! wikitext @@ -13003,7 +13047,7 @@ pst !! end !! test -pre-save transform: context links ("pipe trick") with commas (bug 21660) +pre-save transform: context links ("pipe trick") with commas (T23660) !! options pst !! wikitext @@ -13054,7 +13098,7 @@ pst !! test -pre-save transform: Signature expansion in nowiki tags (bug 93) +pre-save transform: Signature expansion in nowiki tags (T2093) !! options pst disabled !! wikitext @@ -13177,7 +13221,7 @@ msg !! end !! test -message transform: in transcluded template (bug 4926) +message transform: in transcluded template (T6926) !! options msg !! wikitext @@ -13187,7 +13231,7 @@ Foobar !! end !! test -message transform: in transcluded template (bug 4926) +message transform: in transcluded template (T6926) !! options msg !! wikitext @@ -13309,7 +13353,7 @@ Image with caption !! end !! test -Image with caption, bug 53312 #1 +Image with caption, T55312 #1 !! wikitext [[File:Foobar.jpg|right|Caption page stuff]] !! html/php @@ -13320,7 +13364,7 @@ Image with caption, bug 53312 #1 !! end !! test -Image with caption, bug 53312 #2 +Image with caption, T55312 #2 !! wikitext [[File:Foobar.jpg|right|Caption page=]] !! html/php @@ -13331,7 +13375,7 @@ Image with caption, bug 53312 #2 !! end !! test -Image with caption, bug 53312 #3 +Image with caption, T55312 #3 !! wikitext [[File:Foobar.jpg|right|Caption page=stuff]] !! html/php @@ -13342,7 +13386,7 @@ Image with caption, bug 53312 #3 !! end !! test -Allow empty links in image captions (Bug 60753) +Allow empty links in image captions (T62753) !! options thumbsize=220 !! wikitext @@ -13504,7 +13548,7 @@ Image with multiple widths -- use last !! end !! test -Image with multiple alignments -- use first (bug 48664) +Image with multiple alignments -- use first (T50664) !! options thumbsize=220 !! wikitext @@ -13539,7 +13583,7 @@ Image with width attribute at different positions # a sad bit of backward-compatibility !! test -Image with size specified with pxpx (bug 13500, 51628) +Image with size specified with pxpx (T15500, T53628) !! options parsoid=wt2html,wt2wt,html2html !! wikitext @@ -13561,10 +13605,10 @@ Image with link parameter, wiki target

      Foobar.jpg

      !! html/parsoid -

      +

      !! end -# parsoid bug 49293 (part 1) +# parsoid T51293 (part 1) !! test Image with link parameter, URL target !! wikitext @@ -13576,7 +13620,7 @@ Image with link parameter, URL target

      !! end -# parsoid bug 49293 (part 2) +# parsoid T51293 (part 2) !! test Image with link parameter, protocol-less URL target !! wikitext @@ -13668,7 +13712,7 @@ Image with link parameter (wiki target) and unnamed parameter

      Title

      !! html/parsoid -

      +

      !! end !! test @@ -13720,7 +13764,7 @@ parsoid=wt2html,wt2wt,html2html
      Title
      !! html/parsoid -
      Title
      +
      Title
      !! end !! test @@ -13762,7 +13806,7 @@ parsoid=wt2html,wt2wt,html2html
      alttext
      Title
      !! html/parsoid -
      alttext
      Title
      +
      alttext
      Title
      !! end !! test @@ -13775,7 +13819,7 @@ parsoid=wt2html,wt2wt,html2html
      This is a test image Main Page
      !! html/parsoid -
      This is a test image Main Page
      +
      This is a test image Main Page
      !! end !! test @@ -13788,7 +13832,7 @@ parsoid=wt2html,wt2wt,html2html
      Altitude
      This is a test image Main Page
      !! html/parsoid -
      Altitude
      This is a test image Main Page
      +
      Altitude
      This is a test image Main Page
      !! end !! test @@ -14026,7 +14070,7 @@ Add test with existing image page !! end !! test -bug 18784 Link to non-existent image page with caption should use caption as link text +T20784 Link to non-existent image page with caption should use caption as link text !! wikitext [[:Image:test|caption]] !! html @@ -14111,7 +14155,7 @@ parsoid=wt2html,wt2wt,html2html !! end !! test -BUG 1887: A ISBN with a thumbnail +T3887: A ISBN with a thumbnail !! wikitext [[File:Foobar.jpg|thumb|ISBN 1235467890]] !! html/php @@ -14122,7 +14166,7 @@ BUG 1887: A ISBN with a thumbnail !! end !! test -BUG 1887: A RFC with a thumbnail +T3887: A RFC with a thumbnail !! wikitext [[File:Foobar.jpg|thumb|This is RFC 12354]] !! html/php @@ -14133,7 +14177,7 @@ BUG 1887: A RFC with a thumbnail !! end !! test -BUG 1887: A mailto link with a thumbnail +T3887: A mailto link with a thumbnail !! wikitext [[File:Foobar.jpg|thumb|Please mailto:nobody@example.com]] !! html/php @@ -14143,9 +14187,9 @@ BUG 1887: A mailto link with a thumbnail
      Please mailto:nobody@example.com
      !! end -# Pending resolution to bug 368 +# Pending resolution to T2368 !! test -BUG 648: Frameless image caption with a link +T2648: Frameless image caption with a link !! wikitext [[File:Foobar.jpg|text with a [[link]] in it]] !! html/php @@ -14156,7 +14200,7 @@ BUG 648: Frameless image caption with a link !! end !! test -BUG 648: Frameless image caption with a link (suffix) +T2648: Frameless image caption with a link (suffix) !! wikitext [[File:Foobar.jpg|text with a [[link]]foo in it]] !! html/php @@ -14167,7 +14211,7 @@ BUG 648: Frameless image caption with a link (suffix) !! end !! test -BUG 648: Frameless image caption with an interwiki link +T2648: Frameless image caption with an interwiki link !! wikitext [[File:Foobar.jpg|text with a [[MeatBall:Link]] in it]] !! html/php @@ -14178,7 +14222,7 @@ BUG 648: Frameless image caption with an interwiki link !! end !! test -BUG 648: Frameless image caption with a piped interwiki link +T2648: Frameless image caption with a piped interwiki link !! wikitext [[File:Foobar.jpg|text with a [[MeatBall:Link|link]] in it]] !! html/php @@ -14232,7 +14276,7 @@ Entities in file name and attributes !! end !! test -BUG 499: Alt text should have Ӓ, not &1234; +T2499: Alt text should have Ӓ, not &1234; !! wikitext [[File:Foobar.jpg|♀]] !! html/php @@ -14252,7 +14296,7 @@ parsoid=wt2html,wt2wt,html2html

      [[Image:Foobar.jpg|thumb|This is a broken caption. But this is just an ordinary link.

      !! html/parsoid -

      [[Image:Foobar.jpg|thumb|This is a broken caption. But this is just an ordinary link.

      +

      [[Image:Foobar.jpg|thumb|This is a broken caption. But this is just an ordinary link.

      !! end !! test @@ -14316,7 +14360,7 @@ and some more text.]] !! end !! test -Bug 3090: External links other than http: in image captions +T5090: External links other than http: in image captions !! wikitext [[File:Foobar.jpg|thumb|200x200px|This caption has [irc://example.net irc] and [https://example.com Secure] ext links in it.]] !! html/php @@ -14365,7 +14409,7 @@ language=es
      caption
      !! html/parsoid -
      caption
      +
      caption
      !! end !! test @@ -14395,7 +14439,7 @@ parsoid=wt2html,wt2wt,html2html # Note that 'right' is the default alignment, despite the misspelled 'righ' below !! test -Invalid image attributes (bug 62500) +Invalid image attributes (T64500) !! options thumbsize=220 parsoid=wt2html,wt2wt,html2html @@ -14739,8 +14783,8 @@ subpage title=[[Subpage test/1/2/3/4]]

      Subpage test/1/2/subpage

      !! html/parsoid -

      subpage

      -

      Subpage_test/1/2/subpage

      +

      subpage

      +

      Subpage_test/1/2/subpage

      !! end !! test @@ -14764,7 +14808,7 @@ Parsoid: dot-slash prefixed wikilinks !! end !! test -Render invalid page names as plain text (bug 51090) +Render invalid page names as plain text (T53090) !! wikitext [[./../foo|bar]] [[foo�|bar]] @@ -14846,7 +14890,7 @@ Disabled subpages !! end !! test -BUG 561: {{/Subpage}} +T2561: {{/Subpage}} !! options subpage title=[[Page]] !! wikitext @@ -15030,12 +15074,12 @@ Bar Bar

      !! html/parsoid -

      Foo Bar

      -

      Foo Bar

      -

      Foo Bar

      -

      Foo Bar

      -

      Foo Bar

      - +

      Foo Bar

      +

      Foo Bar

      +

      Foo Bar

      +

      Foo Bar

      +

      Foo Bar

      + !! end ## We used to, but no longer wt2wt this test since the default serializer @@ -15045,7 +15089,7 @@ Bar ## ## The whitespace on the empty line is part of the test. Please do not delete !! test -1. Categories and newlines: All preceding newlines should be suppressed (courtesy bug 87) +1. Categories and newlines: All preceding newlines should be suppressed (courtesy T2087) !! options parsoid=wt2html !! wikitext @@ -15074,7 +15118,7 @@ This ## ## The whitespace on the empty line is part of the test. Please do not delete !! test -2. Categories and newlines: All preceding newlines should be suppressed (courtesy bug 87) +2. Categories and newlines: All preceding newlines should be suppressed (courtesy T2087) !! options parsoid=wt2html !! wikitext @@ -15270,7 +15314,7 @@ parsoid !! end !! test -Normalize hrefs properly before testing for invalid link targets (bug 70894) +Normalize hrefs properly before testing for invalid link targets (T72894) !! options parsoid=html2wt !! html/parsoid @@ -15315,7 +15359,7 @@ es:Alimento fr:Nourriture zh:食品 !! end !! test -Duplicate interlanguage links (bug 24502) +Duplicate interlanguage links (T26502) !! options ill !! wikitext @@ -15542,7 +15586,7 @@ __FORCETOC__ !! end !! test -TOC with wgMaxTocLevel=3 (bug 6204) +TOC with wgMaxTocLevel=3 (T8204) !! options wgMaxTocLevel=3 !! wikitext @@ -15579,7 +15623,7 @@ wgMaxTocLevel=3 !! end !! test -TOC with wgMaxTocLevel=3 and two level four headings (bug 6204) +TOC with wgMaxTocLevel=3 and two level four headings (T8204) !! options wgMaxTocLevel=3 !! wikitext @@ -15621,7 +15665,7 @@ Resolving duplicate section names !! end !! test -Resolving duplicate section names with differing case (bug 10721) +Resolving duplicate section names with differing case (T12721) !! wikitext == Foo bar == == Foo Bar == @@ -15700,7 +15744,7 @@ __TOC__ !! end !! test -BUG 1219 URL next to image (good) +T3219 URL next to image (good) !! wikitext http://example.com [[File:Foobar.jpg]] !! html/php @@ -15711,7 +15755,7 @@ http://example.com [[File:Foobar.jpg]] !!end !! test -Short headings with trailing space should match behavior of Parser::doHeadings (bug 19910) +Short headings with trailing space should match behavior of Parser::doHeadings (T21910) !! wikitext === The line above must have a trailing space! @@ -15728,7 +15772,7 @@ But just in case it doesn't... !! end !! test -Header with special characters (bug 25462) +Header with special characters (T27462) !! wikitext The tooltips shall not show entities to the user (ie. be double escaped) @@ -15871,7 +15915,7 @@ Headers with excess '=' characters !! end !! test -HTML headers vs TOC (bug 23393) +HTML headers vs TOC (T25393) (__NOEDITSECTION__ for clearer output, doesn't matter here) !! wikitext

      Header 1

      @@ -15928,7 +15972,7 @@ c3--> !! end !! test -BUG 1219 URL next to image (broken) +T3219 URL next to image (broken) !! wikitext http://example.com[[File:Foobar.jpg]] !! html/php @@ -15939,7 +15983,7 @@ http://example.com[[File:Foobar.jpg]] !!end !! test -Bug 1186 news: in the middle of text +T3186 news: in the middle of text !! wikitext http://en.wikinews.org/wiki/Wikinews:Workplace !! html @@ -16067,7 +16111,7 @@ div with braces in attribute value !! wikitext
      Foo
      !! html/php -
      Foo
      +
      Foo
      !! html/parsoid
      Foo
      @@ -16197,22 +16241,22 @@ HTML tag with leading space is parsed as text !! end ### -### Nesting tests (see bug 41545, 50604, 51081) +### Nesting tests (see T43545, T52604, T53081) ### -# This test case is fixed in Parsoid by domino 1.0.12. (bug 50604) +# This test case is fixed in Parsoid by domino 1.0.12. (T52604) # Note that html2wt is considerably more difficult if we use in -# the test case, instead of +# the test case, instead of !! test Ensure that HTML adoption agency algorithm is properly implemented. !! wikitext -XYZ +XYZ !! html -

      XYZ +

      XYZ

      !! end -# This was bug 41545 in the PHP parser. +# This was T43545 in the PHP parser. # Note that tidy doesn't handle this correctly. !! test Nesting of @@ -16223,9 +16267,9 @@ Nesting of

      !! end -# The following cases were bug 51081 in the PHP parser. +# The following cases were T53081 in the PHP parser. # Note that there are some other nestable tags (b, i, etc) which are -# not covered; see bug 51081 for discussion. +# not covered; see T53081 for discussion. # Note that tidy doesn't handle this correctly. !! test @@ -16313,7 +16357,7 @@ Media link with nasty text !! end !! test -Media link to nonexistent file (bug 1702) +Media link to nonexistent file (T3702) !! wikitext [[Media:No such.jpg]] !! html @@ -16322,7 +16366,7 @@ Media link to nonexistent file (bug 1702) !! end !! test -Image link to nonexistent file (bug 1850 - good) +Image link to nonexistent file (T3850 - good) !! wikitext [[File:No_such.jpg]] !! html/php @@ -16333,7 +16377,7 @@ Image link to nonexistent file (bug 1850 - good) !! end !! test -:Image link to nonexistent file (bug 1850 - bad) +:Image link to nonexistent file (T3850 - bad) !! wikitext [[:Image:No such.jpg]] !! html/php @@ -16346,7 +16390,7 @@ Image link to nonexistent file (bug 1850 - good) !! test -Character reference normalization in link text (bug 1938) +Character reference normalization in link text (T3938) !! wikitext [[Main Page|this&that]] !! html @@ -16363,7 +16407,7 @@ The page's name is U+05d0 U+05b7, with non-canonical form U+FB2E !! endarticle !! test -(bug 19451) Links should refer to the normalized form. +(T21451) Links should refer to the normalized form. !! wikitext [[אַ]] [[אַ]] @@ -16380,7 +16424,7 @@ The page's name is U+05d0 U+05b7, with non-canonical form U+FB2E !! end !! test -Empty attribute crash test (bug 2067) +Empty attribute crash test (T4067) !! wikitext foo !! html @@ -16389,7 +16433,7 @@ Empty attribute crash test (bug 2067) !! end !! test -Empty attribute crash test single-quotes (bug 2067) +Empty attribute crash test single-quotes (T4067) !! wikitext foo !! html @@ -16448,7 +16492,7 @@ parsoid=wt2html,html2html !! end !! test -Bug 2095: link with three closing brackets +T4095: link with three closing brackets !! wikitext [[Main Page]]] !! html/php @@ -16459,7 +16503,7 @@ Bug 2095: link with three closing brackets !! end !! test -Bug 2095: link with pipe and three closing brackets +T4095: link with pipe and three closing brackets !! wikitext [[Main Page|link]]] !! html/php @@ -16470,7 +16514,7 @@ Bug 2095: link with pipe and three closing brackets !! end !! test -Bug 2095: link with pipe and three closing brackets, version 2 +T4095: link with pipe and three closing brackets, version 2 !! wikitext [[Main Page|[http://example.com/]]] !! html/php @@ -16504,17 +16548,19 @@ Template:Div style !! endarticle !! test -Bug 2304: HTML attribute safety (safe template; regression bug 2309) +T4304: HTML attribute safety (safe template; regression T4309) !! wikitext
      -!! html +!! html/php
      +!! html/parsoid +
      !! end # Parsoid has enough context to handle this case !! test -Bug 2304: HTML attribute safety (dangerous template; 2309) +T4304: HTML attribute safety (dangerous template; 2309) !! wikitext
      !! html/php @@ -16525,34 +16571,41 @@ Bug 2304: HTML attribute safety (dangerous template; 2309) !! end !! test -Bug 2304: HTML attribute safety (dangerous style template; 2309) +T4304: HTML attribute safety (dangerous style template; 2309) !! wikitext
      -!! html +!! html/php
      +!! html/parsoid +
      !! end !! test -Bug 2304: HTML attribute safety (safe parameter; 2309) +T4304: HTML attribute safety (safe parameter; 2309) !! wikitext {{div style|width: 200px}} -!! html +!! html/php
      Magic div
      +!! html/parsoid +
      Magic div
      !! end !! test -Bug 2304: HTML attribute safety (unsafe parameter; 2309) +T4304: HTML attribute safety (unsafe parameter; 2309) !! wikitext {{div style|width: expression(alert(document.cookie))}} -!! html +!! html/php
      Magic div
      +!! html/parsoid +
      Magic div
      !! end +## Parsoid output here differs; needs investigation. !! test -Bug 2304: HTML attribute safety (unsafe breakout parameter; 2309) +T4304: HTML attribute safety (unsafe breakout parameter; 2309) !! wikitext {{div style|">}} !! html @@ -16560,8 +16613,9 @@ Bug 2304: HTML attribute safety (unsafe breakout parameter; 2309) !! end +## Parsoid output here differs; needs investigation. !! test -Bug 2304: HTML attribute safety (unsafe breakout parameter 2; 2309) +T4304: HTML attribute safety (unsafe breakout parameter 2; 2309) !! wikitext {{div style|" >}} !! html @@ -16570,7 +16624,7 @@ Bug 2304: HTML attribute safety (unsafe breakout parameter 2; 2309) !! end !! test -Bug 2304: HTML attribute safety (link) +T4304: HTML attribute safety (link) !! wikitext
      !! html @@ -16579,7 +16633,7 @@ Bug 2304: HTML attribute safety (link) !! end !! test -Bug 2304: HTML attribute safety (italics) +T4304: HTML attribute safety (italics) !! wikitext
      !! html @@ -16588,7 +16642,7 @@ Bug 2304: HTML attribute safety (italics) !! end !! test -Bug 2304: HTML attribute safety (bold) +T4304: HTML attribute safety (bold) !! wikitext
      !! html @@ -16596,9 +16650,8 @@ Bug 2304: HTML attribute safety (bold) !! end - !! test -Bug 2304: HTML attribute safety (ISBN) +T4304: HTML attribute safety (ISBN) !! wikitext
      !! html @@ -16607,7 +16660,7 @@ Bug 2304: HTML attribute safety (ISBN) !! end !! test -Bug 2304: HTML attribute safety (RFC) +T4304: HTML attribute safety (RFC) !! wikitext
      !! html @@ -16616,7 +16669,7 @@ Bug 2304: HTML attribute safety (RFC) !! end !! test -Bug 2304: HTML attribute safety (PMID) +T4304: HTML attribute safety (PMID) !! wikitext
      !! html @@ -16625,7 +16678,7 @@ Bug 2304: HTML attribute safety (PMID) !! end !! test -Bug 2304: HTML attribute safety (web link) +T4304: HTML attribute safety (web link) !! wikitext
      !! html @@ -16634,7 +16687,7 @@ Bug 2304: HTML attribute safety (web link) !! end !! test -Bug 2304: HTML attribute safety (named web link) +T4304: HTML attribute safety (named web link) !! wikitext
      !! html @@ -16643,21 +16696,25 @@ Bug 2304: HTML attribute safety (named web link) !! end !! test -Bug 3244: HTML attribute safety (extension; safe) +T5244: HTML attribute safety (extension; safe) !! wikitext
      -!! html +!! html/php
      +!! html/parsoid +
      !! end !! test -Bug 3244: HTML attribute safety (extension; unsafe) +T5244: HTML attribute safety (extension; unsafe) !! wikitext
      -!! html +!! html/php
      +!! html/parsoid +
      !! end # More MSIE fun discovered by Tom Gilder @@ -16666,96 +16723,119 @@ Bug 3244: HTML attribute safety (extension; unsafe) MSIE CSS safety test: spurious slash !! wikitext
      evil
      -!! html +!! html/php
      evil
      +!! html/parsoid +
      evil
      !! end !! test MSIE CSS safety test: hex code !! wikitext
      evil
      -!! html +!! html/php
      evil
      +!! html/parsoid +
      evil
      !! end !! test MSIE CSS safety test: comment in url !! wikitext
      evil
      -!! html +!! html/php
      evil
      +!! html/parsoid +
      evil
      !! end !! test MSIE CSS safety test: comment in expression !! wikitext
      evil4
      -!! html +!! html/php
      evil4
      +!! html/parsoid +
      evil4
      !! end !! test -CSS safety test (all browsers): vertical tab (bug 55332 / CVE-2013-4567) +CSS safety test (all browsers): vertical tab (T57332 / CVE-2013-4567) !! wikitext

      A

      -!! html +!! html/php

      A

      +!! html/parsoid +

      A

      !! end !! test -MSIE 6 CSS safety test: Fullwidth (bug 55332) +MSIE 6 CSS safety test: Fullwidth (T57332) !! wikitext

      A

      B
      -!! html +!! html/php

      A

      B
      +!! html/parsoid +

      A

      +
      B
      !! end !! test -MSIE 6 CSS safety test: IPA extensions (bug 55332) +MSIE 6 CSS safety test: IPA extensions (T57332) !! wikitext
      A

      B

      -!! html +!! html/php
      A

      B

      +!! html/parsoid +
      A
      +

      B

      !! end !! test -MSIE 6 CSS safety test: sup/sub script (bug 55332) +MSIE 6 CSS safety test: sup/sub script (T57332) !! wikitext
      A
      B

      C

      -!! html +!! html/php
      A
      B

      C

      +!! html/parsoid +
      A
      +
      B
      +

      C

      !! end -# FIXME: Parsoid fails to sanitize this! See T58846. !! test Opera -o-link CSS +!! options +parsoid=wt2html,html2html !! wikitext
      X
      -!! html +!! html/php
      X
      +!! html/parsoid +
      X
      !! end !! test -MSIE 6 CSS safety test: Repetition markers (bug 55332) +MSIE 6 CSS safety test: Repetition markers (T57332) !! wikitext

      A

      B

      @@ -16764,7 +16844,7 @@ MSIE 6 CSS safety test: Repetition markers (bug 55332)

      E

      F

      G

      -!! html +!! html/php

      A

      B

      C

      @@ -16773,6 +16853,14 @@ MSIE 6 CSS safety test: Repetition markers (bug 55332)

      F

      G

      +!! html/parsoid +

      A

      +

      B

      +

      C

      +

      D

      +

      E

      +

      F

      +

      G

      !! end !! test @@ -16828,7 +16916,7 @@ Template:Identity !! endarticle !! test -Expansion of multi-line templates in attribute values (bug 6255) +Expansion of multi-line templates in attribute values (T8255) !! wikitext
      -
      !! html @@ -16836,22 +16924,21 @@ Expansion of multi-line templates in attribute values (bug 6255) !! end - !! test -Expansion of multi-line templates in attribute values (bug 6255 sanity check) +Expansion of multi-line templates in attribute values (T8255 sanity check) !! wikitext -
      -
      !! html/php
      -
      !! html/parsoid -
      -
      !! end !! test -Expansion of multi-line templates in attribute values (bug 6255 sanity check 2) +Expansion of multi-line templates in attribute values (T8255 sanity check 2) !! wikitext
      -
      !! html @@ -16870,6 +16957,7 @@ Tags which are hidden from Tidy cannot pass through the Sanitizer ### ### Parser hooks (see tests/parser/parserTestsParserHook.php for the extension) ### + !! test Parser hook: empty input !! wikitext @@ -17026,7 +17114,7 @@ array ( !! end !! test -Parser hook: argument containing a forward slash (bug 5344) +Parser hook: argument containing a forward slash (T7344) !! wikitext !! html/php @@ -17043,7 +17131,7 @@ array ( ## Don't expect parsoid to rt this form. !! test -Parser hook: empty input using terminated empty elements (bug 2374) +Parser hook: empty input using terminated empty elements (T4374) !! options parsoid=wt2html,html2html !! wikitext @@ -17063,7 +17151,7 @@ array ( ## should be output literally since there is no matching tag that begins it ## Don't expect parsoid to rt this form. !! test -Parser hook: basic arguments using terminated empty elements (bug 2374) +Parser hook: basic arguments using terminated empty elements (T4374) !! options parsoid=wt2html !! wikitext @@ -17227,7 +17315,7 @@ Sanitizer: Escaping of spaces, multibyte characters, colons & other stuff in id= # In HTML5, the restrictions are that id must contain at least one character, # and must not contain any space characters. !! test -Sanitizer: Validating the contents of the id attribute (bug 4515) +Sanitizer: Validating the contents of the id attribute (T6515) !! options disabled !! wikitext @@ -17238,7 +17326,7 @@ Something ... # In HTML5, id must be unique amongst all the ids in the element's home subtree. !! test -Sanitizer: Validating id attribute uniqueness (bug 4515, bug 6301) +Sanitizer: Validating id attribute uniqueness (T6515, T8301) !! options disabled !! wikitext @@ -17272,7 +17360,7 @@ Sanitizer: Validating that and work, but only for Microdata !! end !! test -Language converter: output gets cut off unexpectedly (bug 5757) +Language converter: output gets cut off unexpectedly (T7757) !! options language=zh !! wikitext @@ -17292,7 +17380,7 @@ all additional text is vanished !! end !! test -Self closed html pairs (bug 5487) +Self closed html pairs (T7487) !! options !! wikitext
      Centered text
      @@ -17317,7 +17405,7 @@ C'est grave ! !! end !! test -Punctuation: CSS !important (bug 11874) +Punctuation: CSS !important (T13874) !! wikitext
      important
      !! html @@ -17326,7 +17414,7 @@ Punctuation: CSS !important (bug 11874) !!end !! test -Punctuation: CSS ! important (bug 11874; with space after) +Punctuation: CSS ! important (T13874; with space after) !! wikitext
      important
      !! html @@ -17335,7 +17423,7 @@ Punctuation: CSS ! important (bug 11874; with space after) !!end !! test -HTML bullet list, closed tags (bug 5497) +HTML bullet list, closed tags (T7497) !! wikitext
      • One
      • @@ -17356,7 +17444,7 @@ HTML bullet list, closed tags (bug 5497) !! end !! test -HTML bullet list, unclosed tags (bug 5497) +HTML bullet list, unclosed tags (T7497) !! wikitext
        • One @@ -17376,7 +17464,7 @@ HTML bullet list, unclosed tags (bug 5497) !! end !! test -HTML ordered list, closed tags (bug 5497) +HTML ordered list, closed tags (T7497) !! wikitext
          1. One
          2. @@ -17397,7 +17485,7 @@ HTML ordered list, closed tags (bug 5497) !! end !! test -HTML ordered list, unclosed tags (bug 5497) +HTML ordered list, unclosed tags (T7497) !! options !! wikitext
              @@ -17418,7 +17506,7 @@ HTML ordered list, unclosed tags (bug 5497) !! end !! test -HTML nested bullet list, closed tags (bug 5497) +HTML nested bullet list, closed tags (T7497) !! wikitext
              • One
              • @@ -17453,7 +17541,7 @@ HTML nested bullet list, closed tags (bug 5497) !! end !! test -HTML nested bullet list, open tags (bug 5497) +HTML nested bullet list, open tags (T7497) !! wikitext
                • One @@ -17490,7 +17578,7 @@ HTML nested bullet list, open tags (bug 5497) !! end !! test -HTML nested ordered list, closed tags (bug 5497) +HTML nested ordered list, closed tags (T7497) !! wikitext
                  1. One
                  2. @@ -17515,7 +17603,7 @@ HTML nested ordered list, closed tags (bug 5497) !! end !! test -HTML nested ordered list, open tags (bug 5497) +HTML nested ordered list, open tags (T7497) !! wikitext
                    1. One @@ -17562,9 +17650,9 @@ HTML ordered list item with parameters oddity !! end -# parsoid doesn't explicitly mark autonumbered links, see bug 53505 +# parsoid doesn't explicitly mark autonumbered links, see T55505 !!test -bug 5918: autonumbering +T7918: autonumbering !! wikitext [http://first/] [http://second] [ftp://ftp] @@ -17771,7 +17859,7 @@ MOVE YOUR MOUSE CURSOR OVER THIS TEXT #
                    2. # }}}blah" onmouseover="alert('hello world');" align="left"MOVE MOUSE CURSOR OVER HERE !!test -Fuzz testing: Parser25 (bug 6055) +Fuzz testing: Parser25 (T8055) !! wikitext {{{ | @@ -17808,7 +17896,7 @@ http://example.comjunk

                      http://example.comjunk

                      !! end -!!test +!! test Fuzz testing: URL adjacent extension (no space, dirty; pre) !! wikitext http://example.com
                      junk
                      @@ -17821,10 +17909,10 @@ http://example.com
                      junk
                      junk
    !! html/parsoid -

    http://example.com

    junk
    -!!end +

    http://example.com

    junk
    +!! end -!!test +!! test Fuzz testing: image with bogus manual thumbnail !! wikitext [[Image:foobar.jpg|thumbnail= ]] @@ -17833,19 +17921,21 @@ Fuzz testing: image with bogus manual thumbnail !! html/parsoid
    -!!end +!! end !! test -Fuzz testing: encoded newline in generated HTML replacements (bug 6577) +Fuzz testing: encoded newline in generated HTML replacements (T8577) !! wikitext
    
    -!! html
    +!! html/php
     
    
     
    +!! html/parsoid
    +
    
     !! end
     
     !! test
    -Parsing optional HTML elements (Bug 6171)
    +Parsing optional HTML elements (T8171)
     !! options
     !! wikitext
     
    @@ -17867,7 +17957,7 @@ Parsing optional HTML elements (Bug 6171)
     !! end
     
     !! test
    -Correct handling of  (Bug 6171)
    +Correct handling of  (T8171)
     !! options
     !! wikitext
     
    ,
    ,
    @@ -17963,7 +18053,7 @@ Special page transclusion !! end !! test -Special page transclusion twice (bug 5021) +Special page transclusion twice (T7021) !! options !! wikitext {{Special:Prefixindex/Xyzzyx}} @@ -18344,7 +18434,7 @@ section=2 ==b== !! end -# Formerly testing for bug 2587, now resolved by the use of unmarked sections +# Formerly testing for T4587, now resolved by the use of unmarked sections # instead of respecting commented sections !! test Section extraction prefixed by comment (section 1) @@ -18368,7 +18458,7 @@ section=2 !!end -# Formerly testing for bug 2607, now resolved by the use of unmarked sections +# Formerly testing for T4607, now resolved by the use of unmarked sections # instead of respecting HTML-style headings !! test Section extraction, mixed wiki and html (section 1) @@ -18403,7 +18493,7 @@ two !! end -# Formerly testing for bug 3342 +# Formerly testing for T5342 !! test Section extraction, heading surrounded by !! options @@ -18415,7 +18505,7 @@ section=1 ==marked== !!end -# Test behavior of bug 19910 +# Test behavior of T21910 !! test Sectiion with all-equals !! options @@ -18763,7 +18853,7 @@ xxx !! end !! test -Section replacement test with initial whitespace (bug 13728) +Section replacement test with initial whitespace (T15728) !! options replace=2,"xxx" !! wikitext @@ -18778,7 +18868,7 @@ xxx !! test -Section extraction, heading followed by pre with 20 spaces (bug 6398) +Section extraction, heading followed by pre with 20 spaces (T8398) !! options section=1 !! wikitext @@ -18790,7 +18880,7 @@ section=1 !! end !! test -Section extraction, heading followed by pre with 19 spaces (bug 6398 sanity check) +Section extraction, heading followed by pre with 19 spaces (T8398 sanity check) !! options section=1 !! wikitext @@ -18803,7 +18893,7 @@ section=1 !! test -Section extraction,
     around bogus header (bug 10309)
    +Section extraction, 
     around bogus header (T12309)
     !! options
     section=2
     !! wikitext
    @@ -18820,7 +18910,7 @@ stuff
     !! end
     
     !! test
    -Section replacement, 
     around bogus header (bug 10309)
    +Section replacement, 
     around bogus header (T12309)
     !! options
     replace=2,"xxx"
     !! wikitext
    @@ -18840,7 +18930,6 @@ stuff
     xxx
     !! end
     
    -
     !! test
     Handling of 
     in URLs
     !! wikitext
    @@ -18849,9 +18938,7 @@ Handling of 
     in URLs
     
     
     !! html/parsoid
    -
    +
     !! end
     
     !! test
    @@ -18865,7 +18952,6 @@ Handling of %0A in URLs
     
     !! end
     
    -
     # The PHP parser strips the empty tags out for giggles; parsoid doesn't.
     !! test
     5 quotes, code coverage +1 line
    @@ -19437,28 +19523,49 @@ File:Foobar.jpg|alt=galleryalt|link=http://www.example.org
     !! end
     
     !! test
    -Gallery override link with malicious javascript (T36852)
    +Gallery override link with absolute external link with LanguageConverter
     !! options
    -parsoid={
    -  "modes": ["wt2html", "html2html"],
    -  "nativeGallery": true
    -}
    -!! wikitext
    +language=zh
    +!! input
     
    -File:Foobar.jpg|alt=galleryalt|link=" onclick="alert('malicious javascript code!');
    +File:foobar.jpg|caption|alt=galleryalt|link=http://www.example.org
     
    -!! html/php
    +!! result
     
     
    -!! html/parsoid
    -
     !! end
     
    +!! test
    +Serialize gallery without attrs in data-mw
    +!! options
    +parsoid={
    +  "modes": ["html2wt"],
    +  "nativeGallery": true
    +}
    +!! html/parsoid
    +
    +!! wikitext
    +
    +File:Test.png
    +
    +!! end
    +
     !! test
     HTML Hex character encoding (spells the word "JavaScript")
     !! options
    @@ -19504,7 +19629,7 @@ parsoid=wt2html,wt2wt,html2html
     !! end
     
     !! test
    -HTML Hex character encoding bogus encoding (bug 26437 regression check)
    +HTML Hex character encoding bogus encoding (T28437 regression check)
     !! wikitext
     &#xsee;&#XSEE;
     !! html/php
    @@ -19643,7 +19768,7 @@ ISBN 1234567890
     !! end
     
     !! test
    -Bug 22905:  followed by ISBN followed by 
    +T24905:  followed by ISBN followed by 
     !! wikitext
     (fr) ISBN 2753300917 [http://www.example.com example.com]
     !! html/php
    @@ -19771,7 +19896,6 @@ dt/dd/dl test
     
     !!end
     
    -
     # Images with the "|" character in external URLs in comment tags; Eats half the comment, leaves unmatched "" tag.
     !! test
     Images with the "|" character in the comment
    @@ -19781,7 +19905,7 @@ Images with the "|" character in the comment
     
    An external URL
    !! html/parsoid -
    An external URL
    +
    An external URL
    !! end !! test @@ -20079,7 +20203,7 @@ ISBN 12345678901 !! test -ISBN with trailing year (bug 8110) +ISBN with trailing year (T9110) !! wikitext ISBN 1-234-56789-0 - 2006 @@ -20128,7 +20252,7 @@ anchorencode deals with templates !! end !! test -anchorencode encodes like the TOC generator: (bug 18431) +anchorencode encodes like the TOC generator: (T20431) !! wikitext === _ +:.3A%3A&&]] === {{anchorencode: _ +:.3A%3A&&]] }} @@ -20140,7 +20264,7 @@ __NOEDITSECTION__ !! end !! test -Bug 6200: blockquotes and paragraph formatting +T8200: blockquotes and paragraph formatting !! wikitext
    foo @@ -20161,7 +20285,7 @@ bar !! end !! test -Bug 8293: Use of center tag ruins paragraph formatting +T10293: Use of center tag ruins paragraph formatting !! wikitext
    foo @@ -20323,7 +20447,7 @@ blah ## This wikitext usage is going to be fairly uncommon in production and ## selser will take care of preserving formatting in those scenarios. !! test -Don't convert blue categorylinks to another variant (bug 33210) +Don't convert blue categorylinks to another variant (T35210) !! options cat language=zh @@ -20333,8 +20457,8 @@ parsoid=wt2html !! html/php cat=分类 sort= !! html/parsoid -

    A

    - +

    A

    + !! end !! test @@ -20492,7 +20616,7 @@ Should be stripped! !! end !! test -Bug 24072: more test on conversion rule for title +T26072: more test on conversion rule for title !! options language=zh variant=zh-tw showtitle !! wikitext @@ -20606,6 +20730,28 @@ Nested: -{zh-hans:Hi -{zh-cn:China;zh-sg:Singapore;}-;zh-hant:Hello -{zh-tw:Taiw

    !! end +!! test +HTML markups with conversion syntax in attribs, nested in other conversion blocks +!! options +language=zh variant=zh-cn +!! wikitext +-{zh;zh-hans;zh-hant|A}- +!! html +

    A +

    +!! end + +!! test +HTML markups with conversion syntax in attribs, nested in other conversion blocks (not working yet) +!! options +language=zh variant=zh-cn disabled +!! wikitext +-{A}- +!! html +

    A +

    +!! end + # Since Parsoid is starting to emit canonical wikitext for links, # [http://example.com http://example.com] will not RT back to that # form anymore. @@ -20753,19 +20899,61 @@ File:foobar.jpg|{{Test|unamedParam|alt=-{R|param}-}}|alt=galleryalt !! end -# FIXME: This test is currently broken in the PHP parser (bug 52661) !! test -Don't break list handling if language converter markup is in the item. +T153135: Don't break list handling if language converter markup is in the item. !! options language=zh variant=zh-cn !! wikitext ;-{zh-cn:AAA;zh-tw:BBB}- +;-{R|foo:bar}- +!! html/php +
    AAA
    +
    foo:bar
    + +!! html/parsoid +
    +
    +
    +
    +!! end + +// Note that parsoid does not protect colons unless language converter +// markup is properly nested, because it is a backtracking parser. +!! test +T153135: Unclosed markup in definition list (code coverage) +!! options +language=zh variant=zh-cn +!! wikitext +;foo:bar +;-{zh-cn:AAA !! html/php -
    在手动语言转换规则中检测到错误
    +
    foo:bar
    +
    -{zh-cn:AAA
    !! html/parsoid -
    AAA -
    +
    +
    foo:bar
    + +
    -{zh-cn
    +
    AAA
    +
    +!! end + +!! test +T153135: Nested language converter markup in definition list (code coverage) +!! options +language=zh variant=zh-cn +!! wikitext +;-{zh-cn:AAA -{zh-hans|foo:bar}- -{R|bat:baz}-}-:def +!! html/php +
    AAA foo:bar bat:baz
    +
    def
    + +!! html/parsoid +
    +
    +
    def
    +
    !! end !! test @@ -20794,7 +20982,7 @@ language=sr variant=sr-ec !! end !! test -Bug 529: Uncovered bullet +T2529: Uncovered bullet !! wikitext * Foo {{bullet}} !! html @@ -20810,7 +20998,7 @@ Bug 529: Uncovered bullet # To test realistic parsing behavior, apply a tidy-like transformation to both # the expected output and your parser's output. !! test -Bug 529: Uncovered bullet leaving empty list, normally removed by tidy +T2529: Uncovered bullet leaving empty list, normally removed by tidy !! wikitext ******* Foo {{bullet}} !! html @@ -20820,7 +21008,7 @@ Bug 529: Uncovered bullet leaving empty list, normally removed by tidy !! end !! test -Bug 529: Uncovered table already at line-start +T2529: Uncovered table already at line-start !! wikitext x @@ -20843,7 +21031,7 @@ y !! end !! test -Bug 529: Uncovered bullet in parser function result +T2529: Uncovered bullet in parser function result !! wikitext * Foo {{lc:{{bullet}} }} !! html @@ -20853,7 +21041,7 @@ Bug 529: Uncovered bullet in parser function result !! end !! test -Bug 5678: Double-parsed template argument +T7678: Double-parsed template argument !! wikitext {{lc:{{{1}}}|hello}} !! html @@ -20862,7 +21050,7 @@ Bug 5678: Double-parsed template argument !! end !! test -Bug 5678: Double-parsed template invocation +T7678: Double-parsed template invocation !! wikitext {{lc:{{paramtest {{!}} param = hello }} }} !! html @@ -20871,7 +21059,7 @@ Bug 5678: Double-parsed template invocation !! end !! test -Case insensitivity of parser functions for non-ASCII characters (bug 8143) +Case insensitivity of parser functions for non-ASCII characters (T10143) !! options language=cs title=[[Main Page]] @@ -21016,9 +21204,9 @@ B

    !! end -# Bug 6200:
    should behave like
    with respect to line breaks +# T8200:
    should behave like
    with respect to line breaks !! test -Bug 6200: paragraphs inside blockquotes (no extra line breaks) +T8200: paragraphs inside blockquotes (no extra line breaks) !! wikitext
    Line one @@ -21034,7 +21222,7 @@ Line two
    !! end !! test -Bug 6200: paragraphs inside blockquotes (extra line break on open) +T8200: paragraphs inside blockquotes (extra line break on open) !! wikitext
    Line one @@ -21053,7 +21241,7 @@ Line two
    !! end !! test -Bug 6200: paragraphs inside blockquotes (extra line break on close) +T8200: paragraphs inside blockquotes (extra line break on close) !! wikitext
    Line one @@ -21073,7 +21261,7 @@ Line two !! end !! test -Bug 6200: paragraphs inside blockquotes (extra line break on open and close) +T8200: paragraphs inside blockquotes (extra line break on open and close) !! wikitext
    Line one @@ -21178,7 +21366,7 @@ Free external link invading image caption !! end !! test -Bug 15196: localised external link numbers +T17196: localised external link numbers !! options language=fa !! wikitext @@ -21315,7 +21503,7 @@ comment local title=[[Main Page]] !!end !! test -Edit comment with subpage link (bug 14080) +Edit comment with subpage link (T16080) !! options comment subpage @@ -21327,7 +21515,7 @@ Poked at a /su !!end !! test -Edit comment with subpage link and link text (bug 14080) +Edit comment with subpage link and link text (T16080) !! options comment subpage @@ -21339,7 +21527,7 @@ Poked at a nea !!end !! test -Edit comment with bogus subpage link in non-subpage NS (bug 14080) +Edit comment with bogus subpage link in non-subpage NS (T16080) !! options comment title=[[Subpage test]] @@ -21415,7 +21603,7 @@ Created page with "<noinclude>ABC3D% ++ +%20 !! end -# Parsoid doesn't support this yet: see bug 73581 +# Parsoid doesn't support this yet: see T75581 # but it *should* omit the 'src' attribute if the image is bad. # PHP side of tests was disabled in # mediawiki/core:6bd31e7d95161a6e88fa86df60871051da997c3c @@ -21451,7 +21639,7 @@ Bad images - basic functionality !! end !! test -Bad images - bug 16039: text after bad image disappears +Bad images - T18039: text after bad image disappears !! wikitext Foo bar [[File:Bad.jpg]] @@ -21467,7 +21655,7 @@ Bar foo

    !! end !! test -Verify that displaytitle works (bug #22501) no displaytitle +Verify that displaytitle works (T24501) no displaytitle !! options showtitle !! config @@ -21482,7 +21670,7 @@ Parser test !! end !! test -Verify that displaytitle works (bug #22501) RestrictDisplayTitle=false +Verify that displaytitle works (T24501) RestrictDisplayTitle=false !! options showtitle title=[[Screen]] @@ -21499,7 +21687,7 @@ whatever !! end !! test -Verify that displaytitle works (bug #22501) RestrictDisplayTitle=true mismatch +Verify that displaytitle works (T24501) RestrictDisplayTitle=true mismatch !! options showtitle title=[[Screen]] @@ -21516,7 +21704,7 @@ Screen !! end !! test -Verify that displaytitle works (bug #22501) RestrictDisplayTitle=true matching +Verify that displaytitle works (T24501) RestrictDisplayTitle=true matching !! options showtitle title=[[Screen]] @@ -21533,7 +21721,7 @@ screen !! end !! test -Verify that displaytitle works (bug #22501) AllowDisplayTitle=false +Verify that displaytitle works (T24501) AllowDisplayTitle=false !! options showtitle title=[[Screen]] @@ -21550,7 +21738,7 @@ Screen !! end !! test -Verify that displaytitle works (bug #22501) AllowDisplayTitle=false no DISPLAYTITLE +Verify that displaytitle works (T24501) AllowDisplayTitle=false no DISPLAYTITLE !! options showtitle title=[[Screen]] @@ -21565,7 +21753,7 @@ Screen !! end !! test -Verify that displaytitle handles inline CSS styles (bug 26547) - rejected value +Verify that displaytitle handles inline CSS styles (T28547) - rejected value !! options showtitle title=[[Screen]] @@ -21582,7 +21770,7 @@ this is not the the title !! end !! test -Verify that displaytitle handles inline CSS styles (bug 26547) - accepted value +Verify that displaytitle handles inline CSS styles (T28547) - accepted value !! options showtitle title=[[Screen]] @@ -21715,7 +21903,7 @@ preload !! end !! test -Play a bit with r67090 and bug 3158 +Play a bit with r67090 and T5158 !! wikitext
     
     
    @@ -21762,7 +21950,7 @@ Strip reserved data attributes !! end !! test -percent-encoding and + signs in internal links (Bug 26410) +percent-encoding and + signs in internal links (T28410) !! wikitext [[User:+%]] [[Page+title%]] [[%+]] [[%+|%20]] [[%+ ]] [[%+r]] @@ -21782,7 +21970,7 @@ percent-encoding and + signs in internal links (Bug 26410) !! end !! test -Special characters in embedded file links (bug 27679) +Special characters in embedded file links (T29679) !! wikitext [[File:Contains & ampersand.jpg]] [[File:Does not exist.jpg|Title with & ampersand]] @@ -21805,7 +21993,7 @@ Text's been normalized? !! end !! test -Bug 19052 U+3000 IDEOGRAPHIC SPACE should terminate free external links +T21052 U+3000 IDEOGRAPHIC SPACE should terminate free external links !! wikitext http://www.example.org/ <-- U+3000 (vim: ^Vu3000) !! html @@ -21814,7 +22002,7 @@ http://www.example.org/ <-- U+3000 (vim: ^Vu3000) !! end !! test -Bug 19052 U+3000 IDEOGRAPHIC SPACE should terminate bracketed external links +T21052 U+3000 IDEOGRAPHIC SPACE should terminate bracketed external links !! wikitext [http://www.example.org/ ideograms] !! html @@ -21823,7 +22011,7 @@ Bug 19052 U+3000 IDEOGRAPHIC SPACE should terminate bracketed external links !! end !! test -Bug 19052 U+3000 IDEOGRAPHIC SPACE should terminate external images links +T21052 U+3000 IDEOGRAPHIC SPACE should terminate external images links !! wikitext http://www.example.org/pic.png <-- U+3000 (vim: ^Vu3000) !! html @@ -21851,7 +22039,7 @@ Template:Identical !! endarticle !! test -Bug 31098 Template which includes system messages which includes the template +T33098 Template which includes system messages which includes the template !! wikitext {{Identical}} !! html @@ -21861,7 +22049,7 @@ Bug 31098 Template which includes system messages which includes the template !! end !! test -Bug31490 Turkish: ucfirst 'blah' +T33490 Turkish: ucfirst 'blah' !! options language=tr !! wikitext @@ -21872,7 +22060,7 @@ language=tr !! end !! test -Bug31490 Turkish: ucfirst 'ix' +T33490 Turkish: ucfirst 'ix' !! options language=tr !! wikitext @@ -21883,7 +22071,7 @@ language=tr !! end !! test -Bug31490 Turkish: lcfirst 'BLAH' +T33490 Turkish: lcfirst 'BLAH' !! options language=tr !! wikitext @@ -21894,7 +22082,7 @@ language=tr !! end !! test -Bug31490 Turkish: ucfırst (with a dotless i) +T33490 Turkish: ucfırst (with a dotless i) !! options language=tr !! wikitext @@ -21905,7 +22093,7 @@ language=tr !! end !! test -Bug31490 ucfırst (with a dotless i) with English language +T33490 ucfırst (with a dotless i) with English language !! options language=en !! wikitext @@ -21916,7 +22104,7 @@ language=en !! end !! test -Bug 26375: TOC with italics +T28375: TOC with italics !! options title=[[Main Page]] !! wikitext @@ -21934,7 +22122,7 @@ __TOC__ !! end !! test -Bug 26375: TOC with bold +T28375: TOC with bold !! options title=[[Main Page]] !! wikitext @@ -21952,7 +22140,7 @@ __TOC__ !! end !! test -Bug 33845: Headings become cursive in TOC when they contain an image +T35845: Headings become cursive in TOC when they contain an image !! options title=[[Main Page]] !! wikitext @@ -21970,7 +22158,7 @@ __TOC__ !! end !! test -Bug 33845 (2): Headings become bold in TOC when they contain a blockquote +T35845 (2): Headings become bold in TOC when they contain a blockquote !! options title=[[Main Page]] !! wikitext @@ -22125,7 +22313,7 @@ __TOC__ !! end !! test -Bug 72884: bdi element in ToC +T74884: bdi element in ToC !! wikitext __TOC__ == test == @@ -22188,17 +22376,17 @@ __TOC__ !! end !! article -MediaWiki:Bug32057 +MediaWiki:T34057 !! text == {{int:headline_sample}} == !! endarticle !! test -Bug 32057: Title needed when expanding nodes. +T34057: Title needed when expanding nodes. !! options title=[[Main Page]] !! wikitext -{{int:Bug32057}} +{{int:T34057}} !! html

    Headline text[edit]

    @@ -22262,7 +22450,7 @@ language=be-tarask !! end !! test -Wrong option for formatNum (bug 56199) +Wrong option for formatNum (T58199) !! wikitext {{formatnum:1,234.56|Random}} {{formatnum:1,234.56|EVERYTHING}} @@ -22313,7 +22501,7 @@ Strip marker in anchorencode !! end !! test -nowiki inside link inside heading (bug 18295) +nowiki inside link inside heading (T20295) !! wikitext ==[[foo|xyz]]== !! html @@ -22322,7 +22510,7 @@ nowiki inside link inside heading (bug 18295) !! end !! test -new support for bdi element (bug 31817) +new support for bdi element (T33817) !! wikitext

    ולדימיר לנין (ברוסית: Владимир Ленин, 24 באפריל 1870–22 בינואר 1924) הוא מנהיג פוליטי קומוניסטי רוסי.

    !! html @@ -22349,101 +22537,6 @@ Ignore pipe between table row attributes !! end -!!test -Gallery override link with WikiLink (bug 34852) -!! wikitext - -File:foobar.jpg|caption|alt=galleryalt|link=InterWikiLink - -!! html - - -!! end - -!!test -Gallery override link with absolute external link (bug 34852) -!! wikitext - -File:foobar.jpg|caption|alt=galleryalt|link=http://www.example.org - -!! html - - -!! end - -!! test -Gallery override link with absolute external link with LanguageConverter -!! options -language=zh -!! input - -File:foobar.jpg|caption|alt=galleryalt|link=http://www.example.org - -!! result - - -!! end - -!!test -Gallery override link with malicious javascript (bug 34852) -!! wikitext - -File:foobar.jpg|caption|alt=galleryalt|link=" onclick="alert('malicious javascript code!'); - -!! html - - -!! end - -!!test -Gallery with invalid title as link (bug 43964) -!! wikitext - -File:foobar.jpg|link=< - -!! html - - -!! end - !!test Language parser function !! wikitext @@ -22478,7 +22571,7 @@ Special:Foobar !! end !!test -Bug 34939 - Case insensitive link parsing ([HttP://]) +T36939 - Case insensitive link parsing ([HttP://]) !! wikitext [HttP://MediaWiki.Org/] !! html/php @@ -22489,7 +22582,7 @@ Bug 34939 - Case insensitive link parsing ([HttP://]) !! end !!test -Bug 34939 - Case insensitive link parsing ([HttP:// title]) +T36939 - Case insensitive link parsing ([HttP:// title]) !! wikitext [HttP://MediaWiki.Org/ MediaWiki] !! html @@ -22498,7 +22591,7 @@ Bug 34939 - Case insensitive link parsing ([HttP:// title]) !! end !!test -Bug 34939 - Case insensitive link parsing (HttP://) +T36939 - Case insensitive link parsing (HttP://) !! wikitext HttP://MediaWiki.Org/ !! html/php @@ -22560,7 +22653,7 @@ parsoid=wt2html,wt2wt #### Parsoid-specific functionality tests #### ----------------------------------------------------------------- -# Bug 63642/66749: Formatting elt fixup around images is cleaned up. +# T65642/T68749: Formatting elt fixup around images is cleaned up. # We know wt2wt will fail, but we expect selser to pass. # Due to the nature of our testing, wt2wt and selser tests will enter the # blacklist and we'll catch selser regressions based on changes to the @@ -22626,573 +22719,6 @@ parsoid=wt2html,wt2wt

    !! end -#### ---------------------------------------------------------------- -#### Parsoid-only testing of Parsoid's impl of and -#### tags. Parsoid's output for these tags differs from that of the -#### PHP parser. -#### ---------------------------------------------------------------- - -!!test -Ref: 1. ref-location should be replaced with an index span -!! wikitext -A foo -B foo -C - -!! html/parsoid -

    A [1] -B [2] -C [3]

    -
      -
    1. ↑ foo
    2. -
    3. ↑ foo
    4. -
    5. ↑
    6. -
    -!!end - -!!test -Ref: 2. ref-tags with identical names should all get the same index -!! wikitext -A foo -B - -!! html/parsoid -

    A [1] -B [1]

    -
      -
    1. 1 2 foo
    2. -
    -!!end - -!!test -Ref: 3. spaces in ref-names should be ignored -!! wikitext -A foo -B -C - -!! html/parsoid -

    A [1] -B [1] -C [1]

    -
      -
    1. 1 2 3 foo
    2. -
    -!!end - -# NOTE: constructor is a predefined property in JS and constructor as a ref-name can clash with it if not handled properly) -!!test -Ref: 4. 'constructor' should be accepted as a valid ref-name -!! wikitext -A foo - -!! html/parsoid -

    A [1]

    -
      -
    1. ↑ foo
    2. -
    -!!end - -!!test -Ref: 5. body should accept generic wikitext -!! wikitext -A - This is a '''[[bolded link]]''' and this is a {{echo|transclusion}} - - - -!! html/parsoid -

    A [1]

    - -
      -
    1. ↑ This is a bolded link and this is a transclusion -
    2. -
    -!!end - -!!test -Ref: 6. indent-pres should not be output in ref-body -!! wikitext -A - foo - bar - baz - - - -!! html/parsoid -

    A [1]

    - -
      -
    1. ↑ foo - bar - baz -
    2. -
    -!!end - -!!test -Ref: 7. No p-wrapping in ref-body -!! wikitext -A -foo - -bar - - -baz - - - -booz - - - -!! html/parsoid -

    A [1]

    - -
      -
    1. ↑ foo - -bar - - -baz - - - -booz -
    2. -
    -!!end - -!!test -Ref: 8. transclusion wikitext has lower precedence -!! wikitext -A foo {{echo| B C}} - - -!! html/parsoid -

    A [1] B C}}

    -
      -
    1. ↑ foo {{echo|
    2. -
    -!!end - -!!test -Ref: 9. unclosed comments should not leak out of ref-body -!! wikitext -A foo - -!!end - -!!test -Ref: 10. Unclosed HTML tags should not leak out of ref-body -!! wikitext -A foo B C - - -!! html/parsoid -

    A [1] B C

    - - -
      -
    1. ↑ foo
    2. -
    -!!end - -!!test -Ref: 11. ref-tags acts like an inline element wrt P-wrapping -!! wikitext -A foo B -C bar D - -!! html/parsoid -

    A [1] B -C [2] D

    -
      -
    1. ↑ foo
    2. -
    3. ↑ bar
    4. -
    -!!end - -!!test -Ref: 12. ref-tags act as trailing newline migration barrier -!! wikitext -a - -b - - -c - -!! html/parsoid -

    a

    - - -

    b [1] -[2]

    - -

    c

    -
      -
    1. ↑
    2. -
    3. ↑
    -!!end - -!!test -Ref: 13. ref-tags are not SOL-transparent and block indent-pres -!! wikitext -foo A -bar - B - -!! html/parsoid -

    [1] A -[2] B

    -
      -
    1. ↑ foo
    2. -
    3. ↑ bar -
    4. -
    -!!end - -## Roundtripping fails because of nowiki'ing -!! test -Ref: 14. A nested ref-tag should be emitted as plain text -!! options -parsoid=wt2html -!! wikitext -foo bar baz - - -!! html/parsoid -

    [1] baz</ref>

    - -
    1. ↑ foo <ref>bar
    -!! end - -!!test -Ref: 15. ref-tags with identical names should get identical indexes -!! wikitext -A1 foo A2 -B1 B2 bar - - -!! html/parsoid -

    A1 [1] A2 [1] -B1 [2] B2 [2]

    - -
    1. 1 2 foo
    2. 1 2 bar
    3. -
    -!!end - -## We don't bother wt2wt-ing non-standard whitespace -!!test -Ref: 16. Tokenizer should accept non-standard whitespace in and tags -!!options -parsoid=wt2html -!! wikitext -A foo - - -!! html/parsoid -

    A [1]

    -
      -
    1. ↑ foo
    -!!end - -!!test -Ref: 17. Generate valid HTML5 id/about attributes -!!wikitext -foo -ve-created name - - -!!html/parsoid -

    [1] -[2] - -

    1. ↑ foo
    2. ↑ ve-created name
    - -!!end - -!!test -Ref: 18. T58916: Extension attributes should be parsed as plain text -!!wikitext -foo - - -!!html/parsoid -

    [1] -

    - -
      -
    1. ↑ foo
    2. -
    -!!end - -!!test -Ref: 19. ref-tags with identical name encodings should get identical indexes -!! wikitext -1 foo 2 - - -!! html/parsoid -

    1 [1] 2 [1] -

    -
      -
    1. 1 2 foo
    2. -
    -!!end - -!!test -Ref: 20. ref-tags with identical names but different content should keep it -!! wikitext -A Foo one -B Foo two -C - - -!! html/parsoid -

    A [1] -B [1] -C [1]

    - -
    1. 1 2 3 Foo one
    2. -
    -!!end - -!!test -References: 1. references tag without any refs should be handled properly -!! wikitext - -!! html/parsoid -
      -!!end - -!!test -References: 2. references tag with group only outputs references from that group -!! wikitext -A foo -B bar -C baz - - - - -!! html/parsoid -

      A [a 1] -B [b 1] -C [1]

      - -
        -
      1. ↑ foo
      2. -
      -
        -
      1. ↑ baz
      2. -
      -
        -
      1. ↑ bar
      2. -
      -!!end - -!!test -References: 3. ref list should be cleared after processing references -!! wikitext -A foo - - - -B bar - - -!! html/parsoid -

      A [1]

      - -
      1. ↑ foo
      2. -
      - -

      B [1]

      - -
        -
      1. ↑ bar
      2. -
      -!!end - -!!test -References: 4. only referenced group should be cleared after processing references -!! wikitext -A afoo -B bfoo - - - -C cfoo - - -!! html/parsoid -

      A [a 1] -B [1]

      - -
      1. ↑ afoo
      2. -
      - -

      C [2]

      - -
      1. ↑ bfoo
      2. ↑ cfoo
      3. -
      -!!end - -## Don't expect this to rt since we're dropping content -!! test -References: 5. ref tags in references should be processed while ignoring all other content -!! options -parsoid=wt2html,html2html -!! wikitext -A -B bar - - -foo -This should just get lost. - -!! html/parsoid -

      A [1] -B [2]

      - - -
      1. ↑ foo
      2. ↑ bar
      3. -
      -!! end - -!! test -References: 6. from a transclusion -!! wikitext -Foo {{echo|}} -!! html/parsoid -

      [1]

      1. ↑ Foo
      2. -
      -!! end - -!! test -References: 7. Multiple references tags (one without and one with nested refs) should be correctly handled -!! wikitext -A foo bar for a -B - - - - -foo - -!! html/parsoid -

      A [1] -B [X 1] -

      - -
        -
      1. ↑ foo bar for a
      2. -
      - -
        -
      1. ↑ foo
      2. -
      -!! end - -!! test -References: 8. T88019: Remove s from templates inside that's itself inside a template -!! wikitext -X{{echo|foo {{echo|bar}} and {{echo|baz}} boo}} - -!! html/parsoid -

      X[1]

      -
      1. ↑ foo bar and baz boo
      2. -
      -!!end - -# This test only works in wt2html now as the are always generated -# unless selser is active. Once T72722 is fixed, we should add a changes test -# here to ensure that unrelated changes don't add the new -# when selser is active. -!! test -References: 9. Generate missing references list at the end -!! wikitext -A foo -B bar -!! html/parsoid -

      A [1] B [inexistent 1]

      -
        -
      1. ↑ foo
      2. -
      -
        -
      1. ↑ bar
      2. -
      -!! end - -!! test -References: 10. New shouldn't be added for unrelated edits. -!! options -parsoid={ - "modes": ["selser"], - "changes": [["#x", "remove"]], - "selser": "noauto" -} -!! wikitext -Unrelated text that's going to disappear. -A foo -!! wikitext/edited -Unrelated text. -A foo -!!end - -!! test -Entities in ref name -!! wikitext -hi - -!! html/parsoid -

      [1]

      -
        -
      1. ↑ hi
      2. -
      -!! end - -## The output here may look funny, but it's what the php parser will do. The -## unclosed references tag becomes escaped text, and then a new references -## tag is auto-generated. The test is wt2html only because it roundtrips with -## nowiki tags, and the auto-generated references tag is only dropped in -## rtTestMode. -!! test -Generate references for unclosed references tag -!! options -parsoid=wt2html -!! wikitext -afoo - - -!! html/parsoid -

      a[1]

      - -

      <references>

      -
      1. ↑ foo
      -!! end - -!! test -New reference serializes on its own line -!! options -parsoid=wt2wt,html2wt -!! wikitext -foo - -!! html/parsoid -foo
        -!! end - #### ---------------------------------------------------------------- #### Parsoid-only testing of Parsoid's impl of LST #### Not implemented yet, see @@ -24298,7 +23824,7 @@ parsoid=html2wt !! end !! test -Links 6. Add s between text-nodes and url-links when required (bug 64300) +Links 6. Add s between text-nodes and url-links when required (T66300) !! options parsoid=html2wt !! html/parsoid @@ -24333,7 +23859,7 @@ http://example.com(x) !! end !! test -Links 7a. Don't add spurious s between text-nodes and url-links (bug 64300) +Links 7a. Don't add spurious s between text-nodes and url-links (T66300) !! options parsoid=html2wt !! html/parsoid @@ -24368,7 +23894,7 @@ y !! end !! test -Links 7b. Don't add spurious s between text-nodes and url-links (bug 64300) +Links 7b. Don't add spurious s between text-nodes and url-links (T66300) !! options parsoid=html2wt !! html/parsoid @@ -24384,7 +23910,7 @@ http://example.com.,;:!?\ !! end !! test -Links 8. Add s between text-nodes and RFC-links when required (bug 64300) +Links 8. Add s between text-nodes and RFC-links when required (T66300) !! options parsoid=html2wt !! html/parsoid @@ -24398,7 +23924,7 @@ XRFC 123y !! end !! test -Links 9. Don't add spurious s between text-nodes and RFC-links (bug 64300) +Links 9. Don't add spurious s between text-nodes and RFC-links (T66300) !! options parsoid=html2wt !! html/parsoid @@ -24418,7 +23944,7 @@ RFC 123&foo !! end !! test -Links 10. Add s between text-nodes and PMID-links when required (bug 64300) +Links 10. Add s between text-nodes and PMID-links when required (T66300) !! options parsoid=html2wt !! html/parsoid @@ -24432,7 +23958,7 @@ XPMID 123y !! end !! test -Links 11. Don't add spurious s between text-nodes and PMID-links (bug 64300) +Links 11. Don't add spurious s between text-nodes and PMID-links (T66300) !! options parsoid=html2wt !! html/parsoid @@ -24452,7 +23978,7 @@ PMID 123&foo !! end !! test -Links 12. Add s between text-nodes and ISBN-links when required (bug 64300) +Links 12. Add s between text-nodes and ISBN-links when required (T66300) !! options parsoid=html2wt !! html/parsoid @@ -24467,7 +23993,7 @@ aISBN 1234567890b !! end !! test -Links 13. Don't add spurious s between text-nodes and ISBN-links (bug 64300) +Links 13. Don't add spurious s between text-nodes and ISBN-links (T66300) !! options parsoid=html2wt !! html/parsoid @@ -24913,7 +24439,7 @@ parsoid=html2wt ## The quote-char in the input is necessary for triggering the bug !! test -(Bug 52035) Nowiki-escaping should not get tripped by " :" in text +(T54035) Nowiki-escaping should not get tripped by " :" in text !! options parsoid=html2wt !! html/parsoid @@ -25600,7 +25126,7 @@ parsoid=wt2html
        !!end -# Parsoid only for bug 64747 +# Parsoid only for T66747 !! test Properly encapsulate empty-content transclusions in fosterable positions !! wikitext @@ -25696,7 +25222,7 @@ http://en.wikipedia.org/wiki/Foobar # 'mi' is a localinterwiki prefix as well as a language !! test -Serialize interwiki links pointing to the current wiki as plain wiki links (bug 65869) +Serialize interwiki links pointing to the current wiki as plain wiki links (T67869) !! options parsoid=html2wt !! html/parsoid @@ -25848,7 +25374,7 @@ parsoid={ !!end !! test -Image: Modifying alignment of an image (bug 48665) +Image: Modifying alignment of an image (T50665) !! options parsoid={ "modes": ["wt2wt"], @@ -25864,7 +25390,7 @@ parsoid={ !! end !! test -Image: Modifying mw-default-size of an frameless image (bug 62805) +Image: Modifying mw-default-size of an frameless image (T64805) !! options parsoid={ "modes": ["wt2wt"], @@ -25879,7 +25405,7 @@ parsoid={ !! end !! test -Image: Modifying valign of an image (bug 49221) +Image: Modifying valign of an image (T51221) !! options parsoid={ "modes": ["wt2wt"], @@ -25895,7 +25421,7 @@ parsoid={ !! end !! test -Image: Modifying alt attribute of an image (bug 56400) +Image: Modifying alt attribute of an image (T58400) !! options parsoid={ "modes": ["wt2wt"], @@ -25925,7 +25451,7 @@ parsoid={ !!end !! test -Image: empty alt attribute (bug 48924) +Image: empty alt attribute (T50924) !! options parsoid !! wikitext @@ -25935,7 +25461,7 @@ parsoid !! end !! test -Image: new attributes should be serialized in wiki's language for RTL languages (bug 51852) +Image: new attributes should be serialized in wiki's language for RTL languages (T53852) !! options parsoid=html2wt language=ar @@ -26540,7 +26066,7 @@ parsoid={ #------------------------------ !!test -Bug 54262: New entities +T56262: New entities !! options parsoid=html2wt !! html/parsoid @@ -26682,7 +26208,7 @@ WTS of autolinks with escapes (editing) parsoid={ "modes": ["wt2wt"], "changes": [ - [ "meta", "remove" ] + [ "span", "remove" ] ] } !! wikitext diff --git a/tests/parser/preprocess/All_system_messages.expected b/tests/parser/preprocess/All_system_messages.expected index 57223da6b0..286a1a4fad 100644 --- a/tests/parser/preprocess/All_system_messages.expected +++ b/tests/parser/preprocess/All_system_messages.expected @@ -1,4 +1,4 @@ - + <table border=1 width=100%><tr><td> '''Name''' @@ -7,351 +7,351 @@ </td><td> '''Current text''' </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:1movedto2&action=edit 1movedto2]<br> -[[MediaWiki_talk:1movedto2|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:f9cca05b&action=edit f9cca05b]<br> +[[MediaWiki_talk:f9cca05b|Talk]] </td><td> $1 moved to $2 </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Monobook.css&action=edit Monobook.css]<br> -[[MediaWiki_talk:Monobook.css|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:ed065216&action=edit ed065216]<br> +[[MediaWiki_talk:ed065216|Talk]] </td><td> /* edit this file to customize the monobook skin for the entire site */ </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:About&action=edit about]<br> -[[MediaWiki_talk:About|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:6b21fb79&action=edit 5780daf6]<br> +[[MediaWiki_talk:6b21fb79|Talk]] </td><td> About </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Aboutpage&action=edit aboutpage]<br> -[[MediaWiki_talk:Aboutpage|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:54f19e13&action=edit 4bd9b804]<br> +[[MediaWiki_talk:54f19e13|Talk]] </td><td> Wiktionary:About </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Aboutwikipedia&action=edit aboutwikipedia]<br> -[[MediaWiki_talk:Aboutwikipedia|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:8e17cc1b&action=edit 7be96c69]<br> +[[MediaWiki_talk:8e17cc1b|Talk]] </td><td> About Wiktionary </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Accesskey-addsection&action=edit accesskey-addsection]<br> -[[MediaWiki_talk:Accesskey-addsection|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:4b7f0428&action=edit 69f5ae1e]<br> +[[MediaWiki_talk:4b7f0428|Talk]] </td><td> + </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Accesskey-anontalk&action=edit accesskey-anontalk]<br> -[[MediaWiki_talk:Accesskey-anontalk|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:b18a7fba&action=edit ba8c9426]<br> +[[MediaWiki_talk:b18a7fba|Talk]] </td><td> n </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Accesskey-anonuserpage&action=edit accesskey-anonuserpage]<br> -[[MediaWiki_talk:Accesskey-anonuserpage|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:3cfd08b4&action=edit 098256f5]<br> +[[MediaWiki_talk:3cfd08b4|Talk]] </td><td> . </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Accesskey-article&action=edit accesskey-article]<br> -[[MediaWiki_talk:Accesskey-article|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:d00706c5&action=edit 7638fc38]<br> +[[MediaWiki_talk:d00706c5|Talk]] </td><td> a </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Accesskey-compareselectedversions&action=edit accesskey-compareselectedversions]<br> -[[MediaWiki_talk:Accesskey-compareselectedversions|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:7bbcdfc9&action=edit 840afed8]<br> +[[MediaWiki_talk:7bbcdfc9|Talk]] </td><td> v </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Accesskey-contributions&action=edit accesskey-contributions]<br> -[[MediaWiki_talk:Accesskey-contributions|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:0750ed4b&action=edit 9703e6d9]<br> +[[MediaWiki_talk:0750ed4b|Talk]] </td><td> &amp;lt;accesskey-contributions&amp;gt; </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Accesskey-currentevents&action=edit accesskey-currentevents]<br> -[[MediaWiki_talk:Accesskey-currentevents|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:602dda6f&action=edit 7e13f963]<br> +[[MediaWiki_talk:602dda6f|Talk]] </td><td> &amp;lt;accesskey-currentevents&amp;gt; </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Accesskey-delete&action=edit accesskey-delete]<br> -[[MediaWiki_talk:Accesskey-delete|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:a395260e&action=edit be42f966]<br> +[[MediaWiki_talk:a395260e|Talk]] </td><td> d </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Accesskey-edit&action=edit accesskey-edit]<br> -[[MediaWiki_talk:Accesskey-edit|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:f89faca3&action=edit 89888a71]<br> +[[MediaWiki_talk:f89faca3|Talk]] </td><td> e </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Accesskey-emailuser&action=edit accesskey-emailuser]<br> -[[MediaWiki_talk:Accesskey-emailuser|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:bc7a3e78&action=edit 7b2ee991]<br> +[[MediaWiki_talk:bc7a3e78|Talk]] </td><td> &amp;lt;accesskey-emailuser&amp;gt; </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Accesskey-help&action=edit accesskey-help]<br> -[[MediaWiki_talk:Accesskey-help|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:9e9d3613&action=edit fe788279]<br> +[[MediaWiki_talk:9e9d3613|Talk]] </td><td> &amp;lt;accesskey-help&amp;gt; </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Accesskey-history&action=edit accesskey-history]<br> -[[MediaWiki_talk:Accesskey-history|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:7ea0e322&action=edit 4bb7a2e4]<br> +[[MediaWiki_talk:7ea0e322|Talk]] </td><td> h </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Accesskey-login&action=edit accesskey-login]<br> -[[MediaWiki_talk:Accesskey-login|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:4204d3db&action=edit 725cb6bf]<br> +[[MediaWiki_talk:4204d3db|Talk]] </td><td> o </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Accesskey-logout&action=edit accesskey-logout]<br> -[[MediaWiki_talk:Accesskey-logout|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:2a92e37a&action=edit a1de2049]<br> +[[MediaWiki_talk:2a92e37a|Talk]] </td><td> o </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Accesskey-mainpage&action=edit accesskey-mainpage]<br> -[[MediaWiki_talk:Accesskey-mainpage|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:68d388ec&action=edit 0542623d]<br> +[[MediaWiki_talk:68d388ec|Talk]] </td><td> z </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Accesskey-minoredit&action=edit accesskey-minoredit]<br> -[[MediaWiki_talk:Accesskey-minoredit|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:18fe1121&action=edit e3f25b72]<br> +[[MediaWiki_talk:18fe1121|Talk]] </td><td> i </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Accesskey-move&action=edit accesskey-move]<br> -[[MediaWiki_talk:Accesskey-move|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:6d15983f&action=edit c9d212d3]<br> +[[MediaWiki_talk:6d15983f|Talk]] </td><td> m </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Accesskey-mycontris&action=edit accesskey-mycontris]<br> -[[MediaWiki_talk:Accesskey-mycontris|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:ecaba7f4&action=edit ac57178f]<br> +[[MediaWiki_talk:ecaba7f4|Talk]] </td><td> y </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Accesskey-mytalk&action=edit accesskey-mytalk]<br> -[[MediaWiki_talk:Accesskey-mytalk|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:711aec5d&action=edit 6d3ae9a7]<br> +[[MediaWiki_talk:711aec5d|Talk]] </td><td> n </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Accesskey-portal&action=edit accesskey-portal]<br> -[[MediaWiki_talk:Accesskey-portal|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:9905f56f&action=edit 0a376cab]<br> +[[MediaWiki_talk:9905f56f|Talk]] </td><td> &amp;lt;accesskey-portal&amp;gt; </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Accesskey-preferences&action=edit accesskey-preferences]<br> -[[MediaWiki_talk:Accesskey-preferences|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:9305eef3&action=edit e72912be]<br> +[[MediaWiki_talk:9305eef3|Talk]] </td><td> &amp;lt;accesskey-preferences&amp;gt; </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Accesskey-preview&action=edit accesskey-preview]<br> -[[MediaWiki_talk:Accesskey-preview|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:186ee8a4&action=edit cef51de6]<br> +[[MediaWiki_talk:186ee8a4|Talk]] </td><td> p </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Accesskey-protect&action=edit accesskey-protect]<br> -[[MediaWiki_talk:Accesskey-protect|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:676f28e9&action=edit 0f10afb5]<br> +[[MediaWiki_talk:676f28e9|Talk]] </td><td> = </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Accesskey-randompage&action=edit accesskey-randompage]<br> -[[MediaWiki_talk:Accesskey-randompage|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:1a09f43e&action=edit 46a4e82c]<br> +[[MediaWiki_talk:1a09f43e|Talk]] </td><td> x </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Accesskey-recentchanges&action=edit accesskey-recentchanges]<br> -[[MediaWiki_talk:Accesskey-recentchanges|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:1306607d&action=edit 025b667f]<br> +[[MediaWiki_talk:1306607d|Talk]] </td><td> r </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Accesskey-recentchangeslinked&action=edit accesskey-recentchangeslinked]<br> -[[MediaWiki_talk:Accesskey-recentchangeslinked|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:e14390c4&action=edit 600e8a44]<br> +[[MediaWiki_talk:e14390c4|Talk]] </td><td> c </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Accesskey-save&action=edit accesskey-save]<br> -[[MediaWiki_talk:Accesskey-save|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:59b75a10&action=edit 0fde75cd]<br> +[[MediaWiki_talk:59b75a10|Talk]] </td><td> s </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Accesskey-search&action=edit accesskey-search]<br> -[[MediaWiki_talk:Accesskey-search|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:0b6fd89e&action=edit 5163ba5b]<br> +[[MediaWiki_talk:0b6fd89e|Talk]] </td><td> f </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Accesskey-sitesupport&action=edit accesskey-sitesupport]<br> -[[MediaWiki_talk:Accesskey-sitesupport|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:ba9e0fc4&action=edit f70dbcff]<br> +[[MediaWiki_talk:ba9e0fc4|Talk]] </td><td> &amp;lt;accesskey-sitesupport&amp;gt; </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Accesskey-specialpage&action=edit accesskey-specialpage]<br> -[[MediaWiki_talk:Accesskey-specialpage|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:b932fee9&action=edit 8949be8d]<br> +[[MediaWiki_talk:b932fee9|Talk]] </td><td> &amp;lt;accesskey-specialpage&amp;gt; </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Accesskey-specialpages&action=edit accesskey-specialpages]<br> -[[MediaWiki_talk:Accesskey-specialpages|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:1ac10275&action=edit 59a5e487]<br> +[[MediaWiki_talk:1ac10275|Talk]] </td><td> q </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Accesskey-talk&action=edit accesskey-talk]<br> -[[MediaWiki_talk:Accesskey-talk|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:116fd1b0&action=edit a83f2193]<br> +[[MediaWiki_talk:116fd1b0|Talk]] </td><td> t </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Accesskey-undelete&action=edit accesskey-undelete]<br> -[[MediaWiki_talk:Accesskey-undelete|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:ec06f1a7&action=edit 5894e42e]<br> +[[MediaWiki_talk:ec06f1a7|Talk]] </td><td> d </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Accesskey-unwatch&action=edit accesskey-unwatch]<br> -[[MediaWiki_talk:Accesskey-unwatch|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:7f99a8c2&action=edit 2a2a9d13]<br> +[[MediaWiki_talk:7f99a8c2|Talk]] </td><td> w </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Accesskey-upload&action=edit accesskey-upload]<br> -[[MediaWiki_talk:Accesskey-upload|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:903549e8&action=edit 3a1dcde8]<br> +[[MediaWiki_talk:903549e8|Talk]] </td><td> u </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Accesskey-userpage&action=edit accesskey-userpage]<br> -[[MediaWiki_talk:Accesskey-userpage|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:8f696cc0&action=edit be76a8c2]<br> +[[MediaWiki_talk:8f696cc0|Talk]] </td><td> . </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Accesskey-viewsource&action=edit accesskey-viewsource]<br> -[[MediaWiki_talk:Accesskey-viewsource|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:613ebbad&action=edit e467bdec]<br> +[[MediaWiki_talk:613ebbad|Talk]] </td><td> e </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Accesskey-watch&action=edit accesskey-watch]<br> -[[MediaWiki_talk:Accesskey-watch|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:f598b5d6&action=edit 8bbdd8ad]<br> +[[MediaWiki_talk:f598b5d6|Talk]] </td><td> w </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Accesskey-watchlist&action=edit accesskey-watchlist]<br> -[[MediaWiki_talk:Accesskey-watchlist|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:59863979&action=edit f8563593]<br> +[[MediaWiki_talk:59863979|Talk]] </td><td> l </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Accesskey-whatlinkshere&action=edit accesskey-whatlinkshere]<br> -[[MediaWiki_talk:Accesskey-whatlinkshere|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:00143391&action=edit 016415ff]<br> +[[MediaWiki_talk:00143391|Talk]] </td><td> b </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Accmailtext&action=edit accmailtext]<br> -[[MediaWiki_talk:Accmailtext|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:d4dce921&action=edit c90b0565]<br> +[[MediaWiki_talk:d4dce921|Talk]] </td><td> The Password for &#39;$1&#39; has been sent to $2. </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Accmailtitle&action=edit accmailtitle]<br> -[[MediaWiki_talk:Accmailtitle|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:9e6cd678&action=edit 05cb31f3]<br> +[[MediaWiki_talk:9e6cd678|Talk]] </td><td> Password sent. </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Actioncomplete&action=edit actioncomplete]<br> -[[MediaWiki_talk:Actioncomplete|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:37186ec6&action=edit 6703566b]<br> +[[MediaWiki_talk:37186ec6|Talk]] </td><td> Action complete </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Addedwatch&action=edit addedwatch]<br> -[[MediaWiki_talk:Addedwatch|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:2bacba53&action=edit 9a954e94]<br> +[[MediaWiki_talk:2bacba53|Talk]] </td><td> Added to watchlist </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Addedwatchtext&action=edit addedwatchtext]<br> -[[MediaWiki_talk:Addedwatchtext|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:b28893b8&action=edit cb101aa3]<br> +[[MediaWiki_talk:b28893b8|Talk]] </td><td> The page &quot;$1&quot; has been added to your &#91;&#91;Special:Watchlist&#124;watchlist]]. Future changes to this page and its associated Talk page will be listed there, @@ -360,150 +360,150 @@ make it easier to pick out. &lt;p&gt;If you want to remove the page from your watchlist later, click &quot;Stop watching&quot; in the sidebar. </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Addsection&action=edit addsection]<br> -[[MediaWiki_talk:Addsection|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:291bfe3c&action=edit 788205f7]<br> +[[MediaWiki_talk:291bfe3c|Talk]] </td><td> + </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Administrators&action=edit administrators]<br> -[[MediaWiki_talk:Administrators|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:0d4d418a&action=edit 69189a95]<br> +[[MediaWiki_talk:0d4d418a|Talk]] </td><td> Wiktionary:Administrators </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Affirmation&action=edit affirmation]<br> -[[MediaWiki_talk:Affirmation|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:1b4ceeda&action=edit f61e4837]<br> +[[MediaWiki_talk:1b4ceeda|Talk]] </td><td> I affirm that the copyright holder of this file agrees to license it under the terms of the $1. </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:All&action=edit all]<br> -[[MediaWiki_talk:All|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:6a720856&action=edit d87c4480]<br> +[[MediaWiki_talk:6a720856|Talk]] </td><td> all </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Allmessages&action=edit allmessages]<br> -[[MediaWiki_talk:Allmessages|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:f2fab435&action=edit a6623c77]<br> +[[MediaWiki_talk:f2fab435|Talk]] </td><td> All system messages </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Allmessagestext&action=edit allmessagestext]<br> -[[MediaWiki_talk:Allmessagestext|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:e57c77b8&action=edit 57dbe26a]<br> +[[MediaWiki_talk:e57c77b8|Talk]] </td><td> This is a list of all system messages available in the MediaWiki: namespace. </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Allpages&action=edit allpages]<br> -[[MediaWiki_talk:Allpages|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:ff8db74d&action=edit bf1dccf6]<br> +[[MediaWiki_talk:ff8db74d|Talk]] </td><td> All pages </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Alphaindexline&action=edit alphaindexline]<br> -[[MediaWiki_talk:Alphaindexline|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:89c23e53&action=edit 1ee05de8]<br> +[[MediaWiki_talk:89c23e53|Talk]] </td><td> $1 to $2 </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Alreadyloggedin&action=edit alreadyloggedin]<br> -[[MediaWiki_talk:Alreadyloggedin|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:8550125b&action=edit 0dc174ae]<br> +[[MediaWiki_talk:8550125b|Talk]] </td><td> &lt;font color=red&gt;&lt;b&gt;User $1, you are already logged in!&lt;/b&gt;&lt;/font&gt;&lt;br /&gt; </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Alreadyrolled&action=edit alreadyrolled]<br> -[[MediaWiki_talk:Alreadyrolled|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:3f7be8a8&action=edit 3f1bd6a1]<br> +[[MediaWiki_talk:3f7be8a8|Talk]] </td><td> Cannot rollback last edit of &#91;&#91;$1]] by &#91;&#91;User:$2&#124;$2]] (&#91;&#91;User talk:$2&#124;Talk]]); someone else has edited or rolled back the page already. Last edit was by &#91;&#91;User:$3&#124;$3]] (&#91;&#91;User talk:$3&#124;Talk]]). </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Ancientpages&action=edit ancientpages]<br> -[[MediaWiki_talk:Ancientpages|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:49a4df39&action=edit 4f70712f]<br> +[[MediaWiki_talk:49a4df39|Talk]] </td><td> Oldest pages </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:And&action=edit and]<br> -[[MediaWiki_talk:And|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:a01e33f4&action=edit cffa50a3]<br> +[[MediaWiki_talk:a01e33f4|Talk]] </td><td> and </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Anontalk&action=edit anontalk]<br> -[[MediaWiki_talk:Anontalk|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:20cb482e&action=edit 801db13e]<br> +[[MediaWiki_talk:20cb482e|Talk]] </td><td> Talk for this IP </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Anontalkpagetext&action=edit anontalkpagetext]<br> -[[MediaWiki_talk:Anontalkpagetext|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:5bbc19f4&action=edit 07575f81]<br> +[[MediaWiki_talk:5bbc19f4|Talk]] </td><td> ----&#39;&#39;This is the discussion page for an anonymous user who has not created an account yet or who does not use it. We therefore have to use the numerical &#91;&#91;IP address]] to identify him/her. Such an IP address can be shared by several users. If you are an anonymous user and feel that irrelevant comments have been directed at you, please &#91;&#91;Special:Userlogin&#124;create an account or log in]] to avoid future confusion with other anonymous users.&#39;&#39; </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Anonymous&action=edit anonymous]<br> -[[MediaWiki_talk:Anonymous|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:9bed5104&action=edit 0a92fab3]<br> +[[MediaWiki_talk:9bed5104|Talk]] </td><td> Anonymous user(s) of Wiktionary </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Article&action=edit article]<br> -[[MediaWiki_talk:Article|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:4360c2dc&action=edit 565cecd7]<br> +[[MediaWiki_talk:4360c2dc|Talk]] </td><td> Content page </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Articleexists&action=edit articleexists]<br> -[[MediaWiki_talk:Articleexists|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:d3ee4a57&action=edit ac8af25b]<br> +[[MediaWiki_talk:d3ee4a57|Talk]] </td><td> A page of that name already exists, or the name you have chosen is not valid. Please choose another name. </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Articlepage&action=edit articlepage]<br> -[[MediaWiki_talk:Articlepage|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:494f1af2&action=edit 01d643b6]<br> +[[MediaWiki_talk:494f1af2|Talk]] </td><td> View content page </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Asksql&action=edit asksql]<br> -[[MediaWiki_talk:Asksql|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:dc93382e&action=edit 4e529571]<br> +[[MediaWiki_talk:dc93382e|Talk]] </td><td> SQL query </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Asksqltext&action=edit asksqltext]<br> -[[MediaWiki_talk:Asksqltext|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:d12f6023&action=edit 47551563]<br> +[[MediaWiki_talk:d12f6023|Talk]] </td><td> Use the form below to make a direct query of the database. @@ -511,52 +511,52 @@ Use single quotes (&#39;like this&#39;) to delimit string literals. This can often add considerable load to the server, so please use this function sparingly. </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Autoblocker&action=edit autoblocker]<br> -[[MediaWiki_talk:Autoblocker|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:f36efd21&action=edit d8f0b5e0]<br> +[[MediaWiki_talk:f36efd21|Talk]] </td><td> Autoblocked because you share an IP address with &quot;$1&quot;. Reason &quot;$2&quot;. </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Badarticleerror&action=edit badarticleerror]<br> -[[MediaWiki_talk:Badarticleerror|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:9503e2b1&action=edit 100ce8a2]<br> +[[MediaWiki_talk:9503e2b1|Talk]] </td><td> This action cannot be performed on this page. </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Badfilename&action=edit badfilename]<br> -[[MediaWiki_talk:Badfilename|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:f146770f&action=edit 5c50b102]<br> +[[MediaWiki_talk:f146770f|Talk]] </td><td> Image name has been changed to &quot;$1&quot;. </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Badfiletype&action=edit badfiletype]<br> -[[MediaWiki_talk:Badfiletype|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:a87ee981&action=edit fe89c3de]<br> +[[MediaWiki_talk:a87ee981|Talk]] </td><td> &quot;.$1&quot; is not a recommended image file format. </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Badipaddress&action=edit badipaddress]<br> -[[MediaWiki_talk:Badipaddress|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:0222775a&action=edit c7623eeb]<br> +[[MediaWiki_talk:0222775a|Talk]] </td><td> Invalid IP address </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Badquery&action=edit badquery]<br> -[[MediaWiki_talk:Badquery|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:feabd786&action=edit 798bc46a]<br> +[[MediaWiki_talk:feabd786|Talk]] </td><td> Badly formed search query </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Badquerytext&action=edit badquerytext]<br> -[[MediaWiki_talk:Badquerytext|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:7e82f04b&action=edit e5493056]<br> +[[MediaWiki_talk:7e82f04b|Talk]] </td><td> We could not process your query. This is probably because you have attempted to search for a @@ -565,39 +565,39 @@ It could also be that you have mistyped the expression, for example &quot;fish and and scales&quot;. Please try another query. </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Badretype&action=edit badretype]<br> -[[MediaWiki_talk:Badretype|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:36ad01d4&action=edit c36e32c1]<br> +[[MediaWiki_talk:36ad01d4|Talk]] </td><td> The passwords you entered do not match. </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Badtitle&action=edit badtitle]<br> -[[MediaWiki_talk:Badtitle|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:ab570b90&action=edit 5c0f9f2b]<br> +[[MediaWiki_talk:ab570b90|Talk]] </td><td> Bad title </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Badtitletext&action=edit badtitletext]<br> -[[MediaWiki_talk:Badtitletext|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:73766845&action=edit e9ac7510]<br> +[[MediaWiki_talk:73766845|Talk]] </td><td> The requested page title was invalid, empty, or an incorrectly linked inter-language or inter-wiki title. </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Blanknamespace&action=edit blanknamespace]<br> -[[MediaWiki_talk:Blanknamespace|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:ef0a17b1&action=edit ec00742f]<br> +[[MediaWiki_talk:ef0a17b1|Talk]] </td><td> (Main) </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Blockedtext&action=edit blockedtext]<br> -[[MediaWiki_talk:Blockedtext|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:2fe89b37&action=edit 0756a2f3]<br> +[[MediaWiki_talk:2fe89b37|Talk]] </td><td> Your user name or IP address has been blocked by $1. The reason given is this:&lt;br /&gt;&#39;&#39;$2&#39;&#39;&lt;p&gt;You may contact $1 or one of the other @@ -608,39 +608,39 @@ Note that you may not use the &quot;email this user&quot; feature unless Your IP address is $3. Please include this address in any queries you make. </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Blockedtitle&action=edit blockedtitle]<br> -[[MediaWiki_talk:Blockedtitle|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:4153985a&action=edit ee09eebe]<br> +[[MediaWiki_talk:4153985a|Talk]] </td><td> User is blocked </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Blockip&action=edit blockip]<br> -[[MediaWiki_talk:Blockip|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:f8225753&action=edit 387c304e]<br> +[[MediaWiki_talk:f8225753|Talk]] </td><td> Block user </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Blockipsuccesssub&action=edit blockipsuccesssub]<br> -[[MediaWiki_talk:Blockipsuccesssub|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:178b4021&action=edit d19404ef]<br> +[[MediaWiki_talk:178b4021|Talk]] </td><td> Block succeeded </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Blockipsuccesstext&action=edit blockipsuccesstext]<br> -[[MediaWiki_talk:Blockipsuccesstext|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:c9aa5295&action=edit 8c464806]<br> +[[MediaWiki_talk:c9aa5295|Talk]] </td><td> &quot;$1&quot; has been blocked. &lt;br /&gt;See &#91;&#91;Special:Ipblocklist&#124;IP block list]] to review blocks. </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Blockiptext&action=edit blockiptext]<br> -[[MediaWiki_talk:Blockiptext|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:d79d9fe6&action=edit ec372bf2]<br> +[[MediaWiki_talk:d79d9fe6|Talk]] </td><td> Use the form below to block write access from a specific IP address or username. @@ -649,261 +649,261 @@ accordance with &#91;&#91;Wiktionary:Policy&#124;policy]]. Fill in a specific reason below (for example, citing particular pages that were vandalized). </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Blocklink&action=edit blocklink]<br> -[[MediaWiki_talk:Blocklink|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:9a96cfdc&action=edit 1c6c7aa2]<br> +[[MediaWiki_talk:9a96cfdc|Talk]] </td><td> block </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Blocklistline&action=edit blocklistline]<br> -[[MediaWiki_talk:Blocklistline|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:b81f5cad&action=edit b821b758]<br> +[[MediaWiki_talk:b81f5cad|Talk]] </td><td> $1, $2 blocked $3 (expires $4) </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Blocklogentry&action=edit blocklogentry]<br> -[[MediaWiki_talk:Blocklogentry|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:0871a19a&action=edit 9be87d66]<br> +[[MediaWiki_talk:0871a19a|Talk]] </td><td> blocked &quot;$1&quot; with an expiry time of $2 </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Blocklogpage&action=edit blocklogpage]<br> -[[MediaWiki_talk:Blocklogpage|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:31534d45&action=edit 4bcce96c]<br> +[[MediaWiki_talk:31534d45|Talk]] </td><td> Block_log </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Blocklogtext&action=edit blocklogtext]<br> -[[MediaWiki_talk:Blocklogtext|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:f4872c71&action=edit b9902a3c]<br> +[[MediaWiki_talk:f4872c71|Talk]] </td><td> This is a log of user blocking and unblocking actions. Automatically blocked IP addresses are not be listed. See the &#91;&#91;Special:Ipblocklist&#124;IP block list]] for the list of currently operational bans and blocks. </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Bold_sample&action=edit bold_sample]<br> -[[MediaWiki_talk:Bold_sample|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:d8ae34f5&action=edit e9a0daa2]<br> +[[MediaWiki_talk:d8ae34f5|Talk]] </td><td> Bold text </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Bold_tip&action=edit bold_tip]<br> -[[MediaWiki_talk:Bold_tip|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:58086558&action=edit 02320399]<br> +[[MediaWiki_talk:58086558|Talk]] </td><td> Bold text </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Booksources&action=edit booksources]<br> -[[MediaWiki_talk:Booksources|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:1d546a7c&action=edit 9bd576b3]<br> +[[MediaWiki_talk:1d546a7c|Talk]] </td><td> Book sources </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Booksourcetext&action=edit booksourcetext]<br> -[[MediaWiki_talk:Booksourcetext|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:809e6557&action=edit 72f7a5ba]<br> +[[MediaWiki_talk:809e6557|Talk]] </td><td> Below is a list of links to other sites that sell new and used books, and may also have further information about books you are looking for.Wiktionary is not affiliated with any of these businesses, and this list should not be construed as an endorsement. </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Brokenredirects&action=edit brokenredirects]<br> -[[MediaWiki_talk:Brokenredirects|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:40925079&action=edit fe673f57]<br> +[[MediaWiki_talk:40925079|Talk]] </td><td> Broken Redirects </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Brokenredirectstext&action=edit brokenredirectstext]<br> -[[MediaWiki_talk:Brokenredirectstext|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:3953d564&action=edit 283e89cc]<br> +[[MediaWiki_talk:3953d564|Talk]] </td><td> The following redirects link to a non-existing pages. </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Bugreports&action=edit bugreports]<br> -[[MediaWiki_talk:Bugreports|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:f12ee4ee&action=edit 741bd9a7]<br> +[[MediaWiki_talk:f12ee4ee|Talk]] </td><td> Bug reports </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Bugreportspage&action=edit bugreportspage]<br> -[[MediaWiki_talk:Bugreportspage|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:1e9054cf&action=edit 7cc56699]<br> +[[MediaWiki_talk:1e9054cf|Talk]] </td><td> Wiktionary:Bug_reports </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Bureaucratlog&action=edit bureaucratlog]<br> -[[MediaWiki_talk:Bureaucratlog|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:cfea7660&action=edit eaac0dcf]<br> +[[MediaWiki_talk:cfea7660|Talk]] </td><td> Bureaucrat_log </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Bureaucratlogentry&action=edit bureaucratlogentry]<br> -[[MediaWiki_talk:Bureaucratlogentry|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:04cf1ba3&action=edit cc1544ab]<br> +[[MediaWiki_talk:04cf1ba3|Talk]] </td><td> Rights for user &quot;$1&quot; set &quot;$2&quot; </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Bureaucrattext&action=edit bureaucrattext]<br> -[[MediaWiki_talk:Bureaucrattext|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:a0750047&action=edit 5eb1e911]<br> +[[MediaWiki_talk:a0750047|Talk]] </td><td> The action you have requested can only be performed by sysops with &quot;bureaucrat&quot; status. </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Bureaucrattitle&action=edit bureaucrattitle]<br> -[[MediaWiki_talk:Bureaucrattitle|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:4837977b&action=edit f523b504]<br> +[[MediaWiki_talk:4837977b|Talk]] </td><td> Bureaucrat access required </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Bydate&action=edit bydate]<br> -[[MediaWiki_talk:Bydate|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:590988e2&action=edit f06de085]<br> +[[MediaWiki_talk:590988e2|Talk]] </td><td> by date </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Byname&action=edit byname]<br> -[[MediaWiki_talk:Byname|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:c08c3f0d&action=edit e51a8413]<br> +[[MediaWiki_talk:c08c3f0d|Talk]] </td><td> by name </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Bysize&action=edit bysize]<br> -[[MediaWiki_talk:Bysize|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:ede279e9&action=edit 43ba766a]<br> +[[MediaWiki_talk:ede279e9|Talk]] </td><td> by size </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Cachederror&action=edit cachederror]<br> -[[MediaWiki_talk:Cachederror|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:e1ad9b35&action=edit 075fc8df]<br> +[[MediaWiki_talk:e1ad9b35|Talk]] </td><td> The following is a cached copy of the requested page, and may not be up to date. </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Cancel&action=edit cancel]<br> -[[MediaWiki_talk:Cancel|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:77dfd213&action=edit 4fd0653c]<br> +[[MediaWiki_talk:77dfd213|Talk]] </td><td> Cancel </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Cannotdelete&action=edit cannotdelete]<br> -[[MediaWiki_talk:Cannotdelete|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:03442eec&action=edit ee57c22e]<br> +[[MediaWiki_talk:03442eec|Talk]] </td><td> Could not delete the page or image specified. (It may have already been deleted by someone else.) </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Cantrollback&action=edit cantrollback]<br> -[[MediaWiki_talk:Cantrollback|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:27b55ed3&action=edit 4b739ac2]<br> +[[MediaWiki_talk:27b55ed3|Talk]] </td><td> Cannot revert edit; last contributor is only author of this page. </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Categories&action=edit categories]<br> -[[MediaWiki_talk:Categories|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:6ccb6007&action=edit 50b9e781]<br> +[[MediaWiki_talk:6ccb6007|Talk]] </td><td> Categories </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Category&action=edit category]<br> -[[MediaWiki_talk:Category|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:a3c686e7&action=edit 5ccbf9c9]<br> +[[MediaWiki_talk:a3c686e7|Talk]] </td><td> category </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Category_header&action=edit category_header]<br> -[[MediaWiki_talk:Category_header|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:f2ff5f46&action=edit 7245f61e]<br> +[[MediaWiki_talk:f2ff5f46|Talk]] </td><td> Articles in category &quot;$1&quot; </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Changepassword&action=edit changepassword]<br> -[[MediaWiki_talk:Changepassword|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:cc60b2e2&action=edit 3dfd4581]<br> +[[MediaWiki_talk:cc60b2e2|Talk]] </td><td> Change password </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Changes&action=edit changes]<br> -[[MediaWiki_talk:Changes|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:8aa57de6&action=edit 49a04ba4]<br> +[[MediaWiki_talk:8aa57de6|Talk]] </td><td> changes </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Columns&action=edit columns]<br> -[[MediaWiki_talk:Columns|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:cf723c59&action=edit 4f1b1dbe]<br> +[[MediaWiki_talk:cf723c59|Talk]] </td><td> Columns </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Commentedit&action=edit commentedit]<br> -[[MediaWiki_talk:Commentedit|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:2a4f8ff8&action=edit 99be507a]<br> +[[MediaWiki_talk:2a4f8ff8|Talk]] </td><td> (comment) </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Compareselectedversions&action=edit compareselectedversions]<br> -[[MediaWiki_talk:Compareselectedversions|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:9833df65&action=edit 978cce5f]<br> +[[MediaWiki_talk:9833df65|Talk]] </td><td> Compare selected versions </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Confirm&action=edit confirm]<br> -[[MediaWiki_talk:Confirm|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:04a21221&action=edit d0c4047c]<br> +[[MediaWiki_talk:04a21221|Talk]] </td><td> Confirm </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Confirmcheck&action=edit confirmcheck]<br> -[[MediaWiki_talk:Confirmcheck|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:b8e469fe&action=edit bb4bf8de]<br> +[[MediaWiki_talk:b8e469fe|Talk]] </td><td> Yes, I really want to delete this. </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Confirmdelete&action=edit confirmdelete]<br> -[[MediaWiki_talk:Confirmdelete|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:7773ad82&action=edit 16805d57]<br> +[[MediaWiki_talk:7773ad82|Talk]] </td><td> Confirm delete </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Confirmdeletetext&action=edit confirmdeletetext]<br> -[[MediaWiki_talk:Confirmdeletetext|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:87358bf0&action=edit 872e01c0]<br> +[[MediaWiki_talk:87358bf0|Talk]] </td><td> You are about to permanently delete a page or image along with all of its history from the database. @@ -911,94 +911,94 @@ Please confirm that you intend to do this, that you understand the consequences, and that you are doing this in accordance with &#91;&#91;Wiktionary:Policy]]. </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Confirmprotect&action=edit confirmprotect]<br> -[[MediaWiki_talk:Confirmprotect|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:b46f1463&action=edit 96a48c11]<br> +[[MediaWiki_talk:b46f1463|Talk]] </td><td> Confirm protection </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Confirmprotecttext&action=edit confirmprotecttext]<br> -[[MediaWiki_talk:Confirmprotecttext|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:e382b883&action=edit e76ab37d]<br> +[[MediaWiki_talk:e382b883|Talk]] </td><td> Do you really want to protect this page? </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Confirmunprotect&action=edit confirmunprotect]<br> -[[MediaWiki_talk:Confirmunprotect|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:33be1711&action=edit 306661e6]<br> +[[MediaWiki_talk:33be1711|Talk]] </td><td> Confirm unprotection </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Confirmunprotecttext&action=edit confirmunprotecttext]<br> -[[MediaWiki_talk:Confirmunprotecttext|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:2d82e05f&action=edit 4df1abe3]<br> +[[MediaWiki_talk:2d82e05f|Talk]] </td><td> Do you really want to unprotect this page? </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Contextchars&action=edit contextchars]<br> -[[MediaWiki_talk:Contextchars|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:7f051e88&action=edit 0858695c]<br> +[[MediaWiki_talk:7f051e88|Talk]] </td><td> Characters of context per line </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Contextlines&action=edit contextlines]<br> -[[MediaWiki_talk:Contextlines|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:7127b581&action=edit e9d81e50]<br> +[[MediaWiki_talk:7127b581|Talk]] </td><td> Lines to show per hit </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Contribslink&action=edit contribslink]<br> -[[MediaWiki_talk:Contribslink|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:9850ceab&action=edit df5b918c]<br> +[[MediaWiki_talk:9850ceab|Talk]] </td><td> contribs </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Contribsub&action=edit contribsub]<br> -[[MediaWiki_talk:Contribsub|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:b688a4d7&action=edit ab48ec14]<br> +[[MediaWiki_talk:b688a4d7|Talk]] </td><td> For $1 </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Contributions&action=edit contributions]<br> -[[MediaWiki_talk:Contributions|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:aa11023f&action=edit 9d5b6e5e]<br> +[[MediaWiki_talk:aa11023f|Talk]] </td><td> User contributions </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Copyright&action=edit copyright]<br> -[[MediaWiki_talk:Copyright|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:a420abf6&action=edit 521307dd]<br> +[[MediaWiki_talk:a420abf6|Talk]] </td><td> Content is available under $1. </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Copyrightpage&action=edit copyrightpage]<br> -[[MediaWiki_talk:Copyrightpage|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:fc8c1b42&action=edit 5327fdcf]<br> +[[MediaWiki_talk:fc8c1b42|Talk]] </td><td> Wiktionary:Copyrights </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Copyrightpagename&action=edit copyrightpagename]<br> -[[MediaWiki_talk:Copyrightpagename|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:52a98e51&action=edit f6652583]<br> +[[MediaWiki_talk:52a98e51|Talk]] </td><td> Wiktionary copyright </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Copyrightwarning&action=edit copyrightwarning]<br> -[[MediaWiki_talk:Copyrightwarning|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:25a1afd7&action=edit 731cc8a6]<br> +[[MediaWiki_talk:25a1afd7|Talk]] </td><td> Please note that all contributions to Wiktionary are considered to be released under the GNU Free Documentation License @@ -1009,66 +1009,66 @@ You are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource. &lt;strong&gt;DO NOT SUBMIT COPYRIGHTED WORK WITHOUT PERMISSION!&lt;/strong&gt; </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Couldntremove&action=edit couldntremove]<br> -[[MediaWiki_talk:Couldntremove|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:465ca4b8&action=edit e04b3a96]<br> +[[MediaWiki_talk:465ca4b8|Talk]] </td><td> Couldn&#39;t remove item &#39;$1&#39;... </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Createaccount&action=edit createaccount]<br> -[[MediaWiki_talk:Createaccount|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:3724dfa6&action=edit 19fd5658]<br> +[[MediaWiki_talk:3724dfa6|Talk]] </td><td> Create new account </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Createaccountmail&action=edit createaccountmail]<br> -[[MediaWiki_talk:Createaccountmail|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:a4a1f0cb&action=edit b10d6306]<br> +[[MediaWiki_talk:a4a1f0cb|Talk]] </td><td> by email </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Cur&action=edit cur]<br> -[[MediaWiki_talk:Cur|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:07f81f3c&action=edit dce81611]<br> +[[MediaWiki_talk:07f81f3c|Talk]] </td><td> cur </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Currentevents&action=edit currentevents]<br> -[[MediaWiki_talk:Currentevents|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:42b921f8&action=edit 81c8f458]<br> +[[MediaWiki_talk:42b921f8|Talk]] </td><td> Current events </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Currentrev&action=edit currentrev]<br> -[[MediaWiki_talk:Currentrev|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:78892831&action=edit 23418566]<br> +[[MediaWiki_talk:78892831|Talk]] </td><td> Current revision </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Databaseerror&action=edit databaseerror]<br> -[[MediaWiki_talk:Databaseerror|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:e4838ed0&action=edit 66409316]<br> +[[MediaWiki_talk:e4838ed0|Talk]] </td><td> Database error </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Dateformat&action=edit dateformat]<br> -[[MediaWiki_talk:Dateformat|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:507be676&action=edit 3b538bdf]<br> +[[MediaWiki_talk:507be676|Talk]] </td><td> Date format </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Dberrortext&action=edit dberrortext]<br> -[[MediaWiki_talk:Dberrortext|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:0bfa85bb&action=edit 34c01d3c]<br> +[[MediaWiki_talk:0bfa85bb|Talk]] </td><td> A database query syntax error has occurred. This could be because of an illegal search query (see $5), @@ -1078,10 +1078,10 @@ The last attempted database query was: from within function &quot;&lt;tt&gt;$2&lt;/tt&gt;&quot;. MySQL returned error &quot;&lt;tt&gt;$3: $4&lt;/tt&gt;&quot;. </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Dberrortextcl&action=edit dberrortextcl]<br> -[[MediaWiki_talk:Dberrortextcl|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:39d82941&action=edit f6e1bcbd]<br> +[[MediaWiki_talk:39d82941|Talk]] </td><td> A database query syntax error has occurred. The last attempted database query was: @@ -1090,109 +1090,109 @@ from within function &quot;$2&quot;. MySQL returned error &quot;$3: $4&quot;. </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Deadendpages&action=edit deadendpages]<br> -[[MediaWiki_talk:Deadendpages|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:ae14da43&action=edit d4234aad]<br> +[[MediaWiki_talk:ae14da43|Talk]] </td><td> Dead-end pages </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Debug&action=edit debug]<br> -[[MediaWiki_talk:Debug|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:bd604d99&action=edit 32faaeca]<br> +[[MediaWiki_talk:bd604d99|Talk]] </td><td> Debug </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Defaultns&action=edit defaultns]<br> -[[MediaWiki_talk:Defaultns|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:6f349a89&action=edit f674a4a1]<br> +[[MediaWiki_talk:6f349a89|Talk]] </td><td> Search in these namespaces by default: </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Defemailsubject&action=edit defemailsubject]<br> -[[MediaWiki_talk:Defemailsubject|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:801b725b&action=edit 93c2c32b]<br> +[[MediaWiki_talk:801b725b|Talk]] </td><td> Wiktionary e-mail </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Delete&action=edit delete]<br> -[[MediaWiki_talk:Delete|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:f6fdbe48&action=edit 9485989f]<br> +[[MediaWiki_talk:f6fdbe48|Talk]] </td><td> Delete </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Deletecomment&action=edit deletecomment]<br> -[[MediaWiki_talk:Deletecomment|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:728e102f&action=edit 070ad01c]<br> +[[MediaWiki_talk:728e102f|Talk]] </td><td> Reason for deletion </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Deletedarticle&action=edit deletedarticle]<br> -[[MediaWiki_talk:Deletedarticle|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:784f094b&action=edit abb03e0b]<br> +[[MediaWiki_talk:784f094b|Talk]] </td><td> deleted &quot;$1&quot; </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Deletedtext&action=edit deletedtext]<br> -[[MediaWiki_talk:Deletedtext|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:b40dc398&action=edit 81545b85]<br> +[[MediaWiki_talk:b40dc398|Talk]] </td><td> &quot;$1&quot; has been deleted. See $2 for a record of recent deletions. </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Deleteimg&action=edit deleteimg]<br> -[[MediaWiki_talk:Deleteimg|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:64a8bf46&action=edit 6f4d03ee]<br> +[[MediaWiki_talk:64a8bf46|Talk]] </td><td> del </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Deletepage&action=edit deletepage]<br> -[[MediaWiki_talk:Deletepage|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:3316ac85&action=edit c423c282]<br> +[[MediaWiki_talk:3316ac85|Talk]] </td><td> Delete page </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Deletesub&action=edit deletesub]<br> -[[MediaWiki_talk:Deletesub|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:a2496a13&action=edit a3173eab]<br> +[[MediaWiki_talk:a2496a13|Talk]] </td><td> (Deleting &quot;$1&quot;) </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Deletethispage&action=edit deletethispage]<br> -[[MediaWiki_talk:Deletethispage|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:9d817726&action=edit b93901eb]<br> +[[MediaWiki_talk:9d817726|Talk]] </td><td> Delete this page </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Deletionlog&action=edit deletionlog]<br> -[[MediaWiki_talk:Deletionlog|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:49653e1b&action=edit 58f0b919]<br> +[[MediaWiki_talk:49653e1b|Talk]] </td><td> deletion log </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Dellogpage&action=edit dellogpage]<br> -[[MediaWiki_talk:Dellogpage|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:d73442e4&action=edit c5ee36a7]<br> +[[MediaWiki_talk:d73442e4|Talk]] </td><td> Deletion_log </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Dellogpagetext&action=edit dellogpagetext]<br> -[[MediaWiki_talk:Dellogpagetext|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:2349bb58&action=edit 6526e633]<br> +[[MediaWiki_talk:2349bb58|Talk]] </td><td> Below is a list of the most recent deletions. All times shown are server time (UTC). @@ -1200,185 +1200,185 @@ All times shown are server time (UTC). &lt;/ul&gt; </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Developerspheading&action=edit developerspheading]<br> -[[MediaWiki_talk:Developerspheading|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:381bedfc&action=edit 015693e1]<br> +[[MediaWiki_talk:381bedfc|Talk]] </td><td> For developer use only </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Developertext&action=edit developertext]<br> -[[MediaWiki_talk:Developertext|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:52713d3d&action=edit 9c6f4cd5]<br> +[[MediaWiki_talk:52713d3d|Talk]] </td><td> The action you have requested can only be performed by users with &quot;developer&quot; status. See $1. </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Developertitle&action=edit developertitle]<br> -[[MediaWiki_talk:Developertitle|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:6cca6111&action=edit 59afe6b0]<br> +[[MediaWiki_talk:6cca6111|Talk]] </td><td> Developer access required </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Diff&action=edit diff]<br> -[[MediaWiki_talk:Diff|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:d23a1c9f&action=edit 75a0ee1b]<br> +[[MediaWiki_talk:d23a1c9f|Talk]] </td><td> diff </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Difference&action=edit difference]<br> -[[MediaWiki_talk:Difference|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:b16f1f66&action=edit 48d53c6e]<br> +[[MediaWiki_talk:b16f1f66|Talk]] </td><td> (Difference between revisions) </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Disclaimerpage&action=edit disclaimerpage]<br> -[[MediaWiki_talk:Disclaimerpage|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:3c1c1596&action=edit 657b3530]<br> +[[MediaWiki_talk:3c1c1596|Talk]] </td><td> Wiktionary:General_disclaimer </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Disclaimers&action=edit disclaimers]<br> -[[MediaWiki_talk:Disclaimers|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:2cbbc29e&action=edit 774706d2]<br> +[[MediaWiki_talk:2cbbc29e|Talk]] </td><td> Disclaimers </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Doubleredirects&action=edit doubleredirects]<br> -[[MediaWiki_talk:Doubleredirects|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:ac57c500&action=edit c06b805b]<br> +[[MediaWiki_talk:ac57c500|Talk]] </td><td> Double Redirects </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Doubleredirectstext&action=edit doubleredirectstext]<br> -[[MediaWiki_talk:Doubleredirectstext|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:ba6ba737&action=edit 49eadc1d]<br> +[[MediaWiki_talk:ba6ba737|Talk]] </td><td> &lt;b&gt;Attention:&lt;/b&gt; This list may contain false positives. That usually means there is additional text with links below the first #REDIRECT.&lt;br /&gt; Each row contains links to the first and second redirect, as well as the first line of the second redirect text, usually giving the &quot;real&quot; target page, which the first redirect should point to. </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Edit&action=edit edit]<br> -[[MediaWiki_talk:Edit|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:5301648d&action=edit 9ead47a8]<br> +[[MediaWiki_talk:5301648d|Talk]] </td><td> Edit </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Editcomment&action=edit editcomment]<br> -[[MediaWiki_talk:Editcomment|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:299ca80d&action=edit 74940f72]<br> +[[MediaWiki_talk:299ca80d|Talk]] </td><td> The edit comment was: &quot;&lt;i&gt;$1&lt;/i&gt;&quot;. </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Editconflict&action=edit editconflict]<br> -[[MediaWiki_talk:Editconflict|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:1af657fb&action=edit 3b56e95b]<br> +[[MediaWiki_talk:1af657fb|Talk]] </td><td> Edit conflict: $1 </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Editcurrent&action=edit editcurrent]<br> -[[MediaWiki_talk:Editcurrent|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:8b46c7e0&action=edit 10d395b9]<br> +[[MediaWiki_talk:8b46c7e0|Talk]] </td><td> Edit the current version of this page </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Edithelp&action=edit edithelp]<br> -[[MediaWiki_talk:Edithelp|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:47f4389a&action=edit a1524e37]<br> +[[MediaWiki_talk:47f4389a|Talk]] </td><td> Editing help </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Edithelppage&action=edit edithelppage]<br> -[[MediaWiki_talk:Edithelppage|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:56815513&action=edit 7072deb5]<br> +[[MediaWiki_talk:56815513|Talk]] </td><td> Help:Editing </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Editing&action=edit editing]<br> -[[MediaWiki_talk:Editing|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:3b9ba1a2&action=edit f34946be]<br> +[[MediaWiki_talk:3b9ba1a2|Talk]] </td><td> Editing $1 </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Editingold&action=edit editingold]<br> -[[MediaWiki_talk:Editingold|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:5e6bd9f3&action=edit bd55ff2e]<br> +[[MediaWiki_talk:5e6bd9f3|Talk]] </td><td> &lt;strong&gt;WARNING: You are editing an out-of-date revision of this page. If you save it, any changes made since this revision will be lost.&lt;/strong&gt; </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Editsection&action=edit editsection]<br> -[[MediaWiki_talk:Editsection|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:51905619&action=edit 965b4116]<br> +[[MediaWiki_talk:51905619|Talk]] </td><td> edit </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Editthispage&action=edit editthispage]<br> -[[MediaWiki_talk:Editthispage|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:2138f524&action=edit 8bc15909]<br> +[[MediaWiki_talk:2138f524|Talk]] </td><td> Edit this page </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Emailflag&action=edit emailflag]<br> -[[MediaWiki_talk:Emailflag|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:96c0b2c5&action=edit 4a27c333]<br> +[[MediaWiki_talk:96c0b2c5|Talk]] </td><td> Disable e-mail from other users </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Emailforlost&action=edit emailforlost]<br> -[[MediaWiki_talk:Emailforlost|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:8a275a27&action=edit e4573eb4]<br> +[[MediaWiki_talk:8a275a27|Talk]] </td><td> Fields marked with a star (*) are optional. Storing an email address enables people to contact you through the website without you having to reveal your email address to them, and it can be used to send you a new password if you forget it.&lt;br /&gt;&lt;br /&gt;Your real name, if you choose to provide it, will be used for giving you attribution for your work. </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Emailfrom&action=edit emailfrom]<br> -[[MediaWiki_talk:Emailfrom|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:34a573ac&action=edit b29c18eb]<br> +[[MediaWiki_talk:34a573ac|Talk]] </td><td> From </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Emailmessage&action=edit emailmessage]<br> -[[MediaWiki_talk:Emailmessage|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:1653aeb3&action=edit 8d8c0edf]<br> +[[MediaWiki_talk:1653aeb3|Talk]] </td><td> Message </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Emailuser&action=edit emailuser]<br> -[[MediaWiki_talk:Emailuser|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:ac5cfb8e&action=edit a9b033ab]<br> +[[MediaWiki_talk:ac5cfb8e|Talk]] </td><td> E-mail user </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Emailpagetext&action=edit emailpagetext]<br> -[[MediaWiki_talk:Emailpagetext|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:e3fc4fe2&action=edit eb6bf1bb]<br> +[[MediaWiki_talk:e3fc4fe2|Talk]] </td><td> If this user has entered a valid e-mail address in his or her user preferences, the form below will send a single message. @@ -1386,95 +1386,95 @@ The e-mail address you entered in your user preferences will appear as the &quot;From&quot; address of the mail, so the recipient will be able to reply. </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Emailsend&action=edit emailsend]<br> -[[MediaWiki_talk:Emailsend|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:145da553&action=edit 05072b51]<br> +[[MediaWiki_talk:145da553|Talk]] </td><td> Send </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Emailsent&action=edit emailsent]<br> -[[MediaWiki_talk:Emailsent|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:833a22dc&action=edit b1d3f3e4]<br> +[[MediaWiki_talk:833a22dc|Talk]] </td><td> E-mail sent </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Emailsenttext&action=edit emailsenttext]<br> -[[MediaWiki_talk:Emailsenttext|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:e3935836&action=edit 2effa7aa]<br> +[[MediaWiki_talk:e3935836|Talk]] </td><td> Your e-mail message has been sent. </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Emailsubject&action=edit emailsubject]<br> -[[MediaWiki_talk:Emailsubject|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:c8dba338&action=edit 275a0d68]<br> +[[MediaWiki_talk:c8dba338|Talk]] </td><td> Subject </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Emailto&action=edit emailto]<br> -[[MediaWiki_talk:Emailto|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:c35740f4&action=edit 88b0fd50]<br> +[[MediaWiki_talk:c35740f4|Talk]] </td><td> To </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Emailuser&action=edit emailuser]<br> -[[MediaWiki_talk:Emailuser|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:ac5cfb8e&action=edit a9b033ab]<br> +[[MediaWiki_talk:ac5cfb8e|Talk]] </td><td> E-mail this user </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Enterlockreason&action=edit enterlockreason]<br> -[[MediaWiki_talk:Enterlockreason|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:6b0a234b&action=edit 698a308a]<br> +[[MediaWiki_talk:6b0a234b|Talk]] </td><td> Enter a reason for the lock, including an estimate of when the lock will be released </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Error&action=edit error]<br> -[[MediaWiki_talk:Error|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:7f2f6a15&action=edit 11f9578d]<br> +[[MediaWiki_talk:7f2f6a15|Talk]] </td><td> Error </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Errorpagetitle&action=edit errorpagetitle]<br> -[[MediaWiki_talk:Errorpagetitle|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:53ee1378&action=edit aa2d1eba]<br> +[[MediaWiki_talk:53ee1378|Talk]] </td><td> Error </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Exbeforeblank&action=edit exbeforeblank]<br> -[[MediaWiki_talk:Exbeforeblank|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:8aedeece&action=edit a1c634a7]<br> +[[MediaWiki_talk:8aedeece|Talk]] </td><td> content before blanking was: </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Exblank&action=edit exblank]<br> -[[MediaWiki_talk:Exblank|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:42abde88&action=edit eba6d64f]<br> +[[MediaWiki_talk:42abde88|Talk]] </td><td> page was empty </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Excontent&action=edit excontent]<br> -[[MediaWiki_talk:Excontent|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:dd028a5c&action=edit fe80d230]<br> +[[MediaWiki_talk:dd028a5c|Talk]] </td><td> content was: </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Explainconflict&action=edit explainconflict]<br> -[[MediaWiki_talk:Explainconflict|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:b7845dfb&action=edit 1a7999fa]<br> +[[MediaWiki_talk:b7845dfb|Talk]] </td><td> Someone else has changed this page since you started editing it. @@ -1485,163 +1485,163 @@ You will have to merge your changes into the existing text. press &quot;Save page&quot;. &lt;p&gt; </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Export&action=edit export]<br> -[[MediaWiki_talk:Export|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:f3e4fadb&action=edit 51713409]<br> +[[MediaWiki_talk:f3e4fadb|Talk]] </td><td> Export pages </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Exportcuronly&action=edit exportcuronly]<br> -[[MediaWiki_talk:Exportcuronly|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:b68aeee1&action=edit bf364325]<br> +[[MediaWiki_talk:b68aeee1|Talk]] </td><td> Include only the current revision, not the full history </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Exporttext&action=edit exporttext]<br> -[[MediaWiki_talk:Exporttext|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:7e884d79&action=edit eddfb839]<br> +[[MediaWiki_talk:7e884d79|Talk]] </td><td> You can export the text and editing history of a particular page or set of pages wrapped in some XML; this can then be imported into another wiki running MediaWiki software, transformed, or just kept for your private amusement. </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Extlink_sample&action=edit extlink_sample]<br> -[[MediaWiki_talk:Extlink_sample|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:a34d80e8&action=edit 8f95a409]<br> +[[MediaWiki_talk:a34d80e8|Talk]] </td><td> http&#58;//www.example.com link title </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Extlink_tip&action=edit extlink_tip]<br> -[[MediaWiki_talk:Extlink_tip|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:117651f0&action=edit 481904c0]<br> +[[MediaWiki_talk:117651f0|Talk]] </td><td> External link (remember http&#58;// prefix) </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Faq&action=edit faq]<br> -[[MediaWiki_talk:Faq|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:f11042a4&action=edit e75bc045]<br> +[[MediaWiki_talk:f11042a4|Talk]] </td><td> FAQ </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Faqpage&action=edit faqpage]<br> -[[MediaWiki_talk:Faqpage|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:2e891e10&action=edit 5b772c96]<br> +[[MediaWiki_talk:2e891e10|Talk]] </td><td> Wiktionary:FAQ </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Feedlinks&action=edit feedlinks]<br> -[[MediaWiki_talk:Feedlinks|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:86edbc13&action=edit 62f8af98]<br> +[[MediaWiki_talk:86edbc13|Talk]] </td><td> Feed: </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Filecopyerror&action=edit filecopyerror]<br> -[[MediaWiki_talk:Filecopyerror|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:2727dd90&action=edit 6c916412]<br> +[[MediaWiki_talk:2727dd90|Talk]] </td><td> Could not copy file &quot;$1&quot; to &quot;$2&quot;. </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Filedeleteerror&action=edit filedeleteerror]<br> -[[MediaWiki_talk:Filedeleteerror|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:e60a2c42&action=edit d393dbbc]<br> +[[MediaWiki_talk:e60a2c42|Talk]] </td><td> Could not delete file &quot;$1&quot;. </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Filedesc&action=edit filedesc]<br> -[[MediaWiki_talk:Filedesc|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:d7b25eeb&action=edit 6dace2d5]<br> +[[MediaWiki_talk:d7b25eeb|Talk]] </td><td> Summary </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Filename&action=edit filename]<br> -[[MediaWiki_talk:Filename|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:a3cbb98d&action=edit 08deae8d]<br> +[[MediaWiki_talk:a3cbb98d|Talk]] </td><td> Filename </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Filenotfound&action=edit filenotfound]<br> -[[MediaWiki_talk:Filenotfound|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:c8f6c94d&action=edit 35c4ded6]<br> +[[MediaWiki_talk:c8f6c94d|Talk]] </td><td> Could not find file &quot;$1&quot;. </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Filerenameerror&action=edit filerenameerror]<br> -[[MediaWiki_talk:Filerenameerror|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:b9b56972&action=edit 6d195b75]<br> +[[MediaWiki_talk:b9b56972|Talk]] </td><td> Could not rename file &quot;$1&quot; to &quot;$2&quot;. </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Filesource&action=edit filesource]<br> -[[MediaWiki_talk:Filesource|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:0a6a1eb6&action=edit 1ffce53a]<br> +[[MediaWiki_talk:0a6a1eb6|Talk]] </td><td> Source </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Filestatus&action=edit filestatus]<br> -[[MediaWiki_talk:Filestatus|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:0f0e70a0&action=edit 040e2ba8]<br> +[[MediaWiki_talk:0f0e70a0|Talk]] </td><td> Copyright status </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Fileuploaded&action=edit fileuploaded]<br> -[[MediaWiki_talk:Fileuploaded|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:45eaa53f&action=edit 79423d38]<br> +[[MediaWiki_talk:45eaa53f|Talk]] </td><td> File &quot;$1&quot; uploaded successfully. Please follow this link: $2 to the description page and fill in information about the file, such as where it came from, when it was created and by whom, and anything else you may know about it. </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Formerror&action=edit formerror]<br> -[[MediaWiki_talk:Formerror|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:a303ff06&action=edit 416cf9e4]<br> +[[MediaWiki_talk:a303ff06|Talk]] </td><td> Error: could not submit form </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Fromwikipedia&action=edit fromwikipedia]<br> -[[MediaWiki_talk:Fromwikipedia|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:dc08787f&action=edit ada66d8e]<br> +[[MediaWiki_talk:dc08787f|Talk]] </td><td> From Wiktionary </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Getimagelist&action=edit getimagelist]<br> -[[MediaWiki_talk:Getimagelist|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:c4c83db8&action=edit f8d783cd]<br> +[[MediaWiki_talk:c4c83db8|Talk]] </td><td> fetching image list </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Go&action=edit go]<br> -[[MediaWiki_talk:Go|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:2e0b45f2&action=edit 1ec558a6]<br> +[[MediaWiki_talk:2e0b45f2|Talk]] </td><td> Go </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Googlesearch&action=edit googlesearch]<br> -[[MediaWiki_talk:Googlesearch|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:749351b4&action=edit 49a50bdf]<br> +[[MediaWiki_talk:749351b4|Talk]] </td><td> &lt;!-- SiteSearch Google --&gt; @@ -1663,527 +1663,527 @@ border=&quot;0&quot; ALT=&quot;Google&quot;&gt;&lt;/A&am &lt;/FORM&gt; &lt;!-- SiteSearch Google --&gt; </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Guesstimezone&action=edit guesstimezone]<br> -[[MediaWiki_talk:Guesstimezone|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:489b474b&action=edit 8da95a41]<br> +[[MediaWiki_talk:489b474b|Talk]] </td><td> Fill in from browser </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Headline_sample&action=edit headline_sample]<br> -[[MediaWiki_talk:Headline_sample|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:237cf168&action=edit 7f401fbb]<br> +[[MediaWiki_talk:237cf168|Talk]] </td><td> Headline text </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Headline_tip&action=edit headline_tip]<br> -[[MediaWiki_talk:Headline_tip|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:91b3bc72&action=edit c4eef2f5]<br> +[[MediaWiki_talk:91b3bc72|Talk]] </td><td> Level 2 headline </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Help&action=edit help]<br> -[[MediaWiki_talk:Help|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:c47ae153&action=edit 92005ecf]<br> +[[MediaWiki_talk:c47ae153|Talk]] </td><td> Help </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Helppage&action=edit helppage]<br> -[[MediaWiki_talk:Helppage|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:56203224&action=edit 9ca36083]<br> +[[MediaWiki_talk:56203224|Talk]] </td><td> Help:Contents </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Hide&action=edit hide]<br> -[[MediaWiki_talk:Hide|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:34d8b60f&action=edit 93c8c96b]<br> +[[MediaWiki_talk:34d8b60f|Talk]] </td><td> hide </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Hidetoc&action=edit hidetoc]<br> -[[MediaWiki_talk:Hidetoc|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:9aa39fe3&action=edit 1cc77a14]<br> +[[MediaWiki_talk:9aa39fe3|Talk]] </td><td> hide </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Hist&action=edit hist]<br> -[[MediaWiki_talk:Hist|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:4d9810c0&action=edit 56714843]<br> +[[MediaWiki_talk:4d9810c0|Talk]] </td><td> hist </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Histlegend&action=edit histlegend]<br> -[[MediaWiki_talk:Histlegend|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:f37ab91a&action=edit 4e7121e9]<br> +[[MediaWiki_talk:f37ab91a|Talk]] </td><td> Diff selection: mark the radio boxes of the versions to compare and hit enter or the button at the bottom.&lt;br/&gt; Legend: (cur) = difference with current version, (last) = difference with preceding version, M = minor edit. </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:History&action=edit history]<br> -[[MediaWiki_talk:History|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:90ccd649&action=edit 66f79d8a]<br> +[[MediaWiki_talk:90ccd649|Talk]] </td><td> Page history </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:History_short&action=edit history_short]<br> -[[MediaWiki_talk:History_short|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:15a13ace&action=edit a937e036]<br> +[[MediaWiki_talk:15a13ace|Talk]] </td><td> History </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Historywarning&action=edit historywarning]<br> -[[MediaWiki_talk:Historywarning|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:e02c3587&action=edit 6079f80a]<br> +[[MediaWiki_talk:e02c3587|Talk]] </td><td> Warning: The page you are about to delete has a history: </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Hr_tip&action=edit hr_tip]<br> -[[MediaWiki_talk:Hr_tip|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:5741ad8f&action=edit 48849a80]<br> +[[MediaWiki_talk:5741ad8f|Talk]] </td><td> Horizontal line (use sparingly) </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Ignorewarning&action=edit ignorewarning]<br> -[[MediaWiki_talk:Ignorewarning|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:7e18602a&action=edit d874ec59]<br> +[[MediaWiki_talk:7e18602a|Talk]] </td><td> Ignore warning and save file anyway. </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Ilshowmatch&action=edit ilshowmatch]<br> -[[MediaWiki_talk:Ilshowmatch|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:5bf1efaa&action=edit a98182df]<br> +[[MediaWiki_talk:5bf1efaa|Talk]] </td><td> Show all images with names matching </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Ilsubmit&action=edit ilsubmit]<br> -[[MediaWiki_talk:Ilsubmit|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:8e7a51d5&action=edit f8288ad8]<br> +[[MediaWiki_talk:8e7a51d5|Talk]] </td><td> Search </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Image_sample&action=edit image_sample]<br> -[[MediaWiki_talk:Image_sample|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:133971b3&action=edit be19a728]<br> +[[MediaWiki_talk:133971b3|Talk]] </td><td> Example.jpg </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Image_tip&action=edit image_tip]<br> -[[MediaWiki_talk:Image_tip|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:2a73e0c3&action=edit d103e97d]<br> +[[MediaWiki_talk:2a73e0c3|Talk]] </td><td> Embedded image </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Imagelinks&action=edit imagelinks]<br> -[[MediaWiki_talk:Imagelinks|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:353c260c&action=edit 3414ac48]<br> +[[MediaWiki_talk:353c260c|Talk]] </td><td> Image links </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Imagelist&action=edit imagelist]<br> -[[MediaWiki_talk:Imagelist|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:affc6aca&action=edit 4c06ba77]<br> +[[MediaWiki_talk:affc6aca|Talk]] </td><td> Image list </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Imagelisttext&action=edit imagelisttext]<br> -[[MediaWiki_talk:Imagelisttext|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:ade85019&action=edit 2e8294bd]<br> +[[MediaWiki_talk:ade85019|Talk]] </td><td> Below is a list of $1 images sorted $2. </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Imagepage&action=edit imagepage]<br> -[[MediaWiki_talk:Imagepage|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:7277ee94&action=edit a152014b]<br> +[[MediaWiki_talk:7277ee94|Talk]] </td><td> View image page </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Imagereverted&action=edit imagereverted]<br> -[[MediaWiki_talk:Imagereverted|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:c783375c&action=edit b1d4cc4c]<br> +[[MediaWiki_talk:c783375c|Talk]] </td><td> Revert to earlier version was successful. </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Imgdelete&action=edit imgdelete]<br> -[[MediaWiki_talk:Imgdelete|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:c6f52751&action=edit 6656e4f4]<br> +[[MediaWiki_talk:c6f52751|Talk]] </td><td> del </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Imgdesc&action=edit imgdesc]<br> -[[MediaWiki_talk:Imgdesc|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:3c281ed6&action=edit a1adca28]<br> +[[MediaWiki_talk:3c281ed6|Talk]] </td><td> desc </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Imghistlegend&action=edit imghistlegend]<br> -[[MediaWiki_talk:Imghistlegend|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:186e5ca1&action=edit de786597]<br> +[[MediaWiki_talk:186e5ca1|Talk]] </td><td> Legend: (cur) = this is the current image, (del) = delete this old version, (rev) = revert to this old version. &lt;br /&gt;&lt;i&gt;Click on date to see image uploaded on that date&lt;/i&gt;. </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Imghistory&action=edit imghistory]<br> -[[MediaWiki_talk:Imghistory|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:8d78c0d7&action=edit d9305ede]<br> +[[MediaWiki_talk:8d78c0d7|Talk]] </td><td> Image history </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Imglegend&action=edit imglegend]<br> -[[MediaWiki_talk:Imglegend|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:86260b9f&action=edit a46e05c1]<br> +[[MediaWiki_talk:86260b9f|Talk]] </td><td> Legend: (desc) = show/edit image description. </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Import&action=edit import]<br> -[[MediaWiki_talk:Import|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:d6fbc9d2&action=edit 62fdfbd5]<br> +[[MediaWiki_talk:d6fbc9d2|Talk]] </td><td> Import pages </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Importfailed&action=edit importfailed]<br> -[[MediaWiki_talk:Importfailed|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:bac6ed75&action=edit 85d2877a]<br> +[[MediaWiki_talk:bac6ed75|Talk]] </td><td> Import failed: $1 </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Importhistoryconflict&action=edit importhistoryconflict]<br> -[[MediaWiki_talk:Importhistoryconflict|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:f4dee51e&action=edit f74f664b]<br> +[[MediaWiki_talk:f4dee51e|Talk]] </td><td> Conflicting history revision exists (may have imported this page before) </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Importnotext&action=edit importnotext]<br> -[[MediaWiki_talk:Importnotext|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:1d461354&action=edit ff881471]<br> +[[MediaWiki_talk:1d461354|Talk]] </td><td> Empty or no text </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Importsuccess&action=edit importsuccess]<br> -[[MediaWiki_talk:Importsuccess|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:5b910f21&action=edit e2781bd1]<br> +[[MediaWiki_talk:5b910f21|Talk]] </td><td> Import succeeded! </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Importtext&action=edit importtext]<br> -[[MediaWiki_talk:Importtext|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:3d58d609&action=edit 965243c5]<br> +[[MediaWiki_talk:3d58d609|Talk]] </td><td> Please export the file from the source wiki using the Special:Export utility, save it to your disk and upload it here. </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Infobox&action=edit infobox]<br> -[[MediaWiki_talk:Infobox|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:31be67da&action=edit 176bd169]<br> +[[MediaWiki_talk:31be67da|Talk]] </td><td> Click a button to get an example text </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Infobox_alert&action=edit infobox_alert]<br> -[[MediaWiki_talk:Infobox_alert|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:2854823a&action=edit 6de0a6d1]<br> +[[MediaWiki_talk:2854823a|Talk]] </td><td> Please enter the text you want to be formatted.\n It will be shown in the infobox for copy and pasting.\nExample:\n$1\nwill become:\n$2 </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Internalerror&action=edit internalerror]<br> -[[MediaWiki_talk:Internalerror|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:103c360a&action=edit e90e9e1c]<br> +[[MediaWiki_talk:103c360a|Talk]] </td><td> Internal error </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Intl&action=edit intl]<br> -[[MediaWiki_talk:Intl|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:148008a6&action=edit 919b03e5]<br> +[[MediaWiki_talk:148008a6|Talk]] </td><td> Interlanguage links </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Ip_range_invalid&action=edit ip_range_invalid]<br> -[[MediaWiki_talk:Ip_range_invalid|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:07586557&action=edit 5c2ff182]<br> +[[MediaWiki_talk:07586557|Talk]] </td><td> Invalid IP range. </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Ipaddress&action=edit ipaddress]<br> -[[MediaWiki_talk:Ipaddress|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:22f9ff50&action=edit 1f99aaad]<br> +[[MediaWiki_talk:22f9ff50|Talk]] </td><td> IP Address/username </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Ipb_expiry_invalid&action=edit ipb_expiry_invalid]<br> -[[MediaWiki_talk:Ipb_expiry_invalid|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:f8994552&action=edit 91b35c2d]<br> +[[MediaWiki_talk:f8994552|Talk]] </td><td> Expiry time invalid. </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Ipbexpiry&action=edit ipbexpiry]<br> -[[MediaWiki_talk:Ipbexpiry|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:2147c662&action=edit 524cfd7e]<br> +[[MediaWiki_talk:2147c662|Talk]] </td><td> Expiry </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Ipblocklist&action=edit ipblocklist]<br> -[[MediaWiki_talk:Ipblocklist|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:9cb7e6ee&action=edit 503153e9]<br> +[[MediaWiki_talk:9cb7e6ee|Talk]] </td><td> List of blocked IP addresses and usernames </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Ipbreason&action=edit ipbreason]<br> -[[MediaWiki_talk:Ipbreason|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:6774dfa8&action=edit 1ecdad25]<br> +[[MediaWiki_talk:6774dfa8|Talk]] </td><td> Reason </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Ipbsubmit&action=edit ipbsubmit]<br> -[[MediaWiki_talk:Ipbsubmit|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:62218118&action=edit e29a20a2]<br> +[[MediaWiki_talk:62218118|Talk]] </td><td> Block this user </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Ipusubmit&action=edit ipusubmit]<br> -[[MediaWiki_talk:Ipusubmit|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:7863d305&action=edit 73ecf10c]<br> +[[MediaWiki_talk:7863d305|Talk]] </td><td> Unblock this address </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Ipusuccess&action=edit ipusuccess]<br> -[[MediaWiki_talk:Ipusuccess|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:ba95215c&action=edit 5fc7f411]<br> +[[MediaWiki_talk:ba95215c|Talk]] </td><td> &quot;$1&quot; unblocked </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Isbn&action=edit isbn]<br> -[[MediaWiki_talk:Isbn|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:8e89a827&action=edit 9aa403ad]<br> +[[MediaWiki_talk:8e89a827|Talk]] </td><td> ISBN </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Isredirect&action=edit isredirect]<br> -[[MediaWiki_talk:Isredirect|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:5b017ff1&action=edit abdf987b]<br> +[[MediaWiki_talk:5b017ff1|Talk]] </td><td> redirect page </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Italic_sample&action=edit italic_sample]<br> -[[MediaWiki_talk:Italic_sample|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:208e76ed&action=edit 95f02073]<br> +[[MediaWiki_talk:208e76ed|Talk]] </td><td> Italic text </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Italic_tip&action=edit italic_tip]<br> -[[MediaWiki_talk:Italic_tip|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:7e5211e9&action=edit 3f1c7185]<br> +[[MediaWiki_talk:7e5211e9|Talk]] </td><td> Italic text </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Iteminvalidname&action=edit iteminvalidname]<br> -[[MediaWiki_talk:Iteminvalidname|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:bcce0a8a&action=edit 0e29818a]<br> +[[MediaWiki_talk:bcce0a8a|Talk]] </td><td> Problem with item &#39;$1&#39;, invalid name... </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Largefile&action=edit largefile]<br> -[[MediaWiki_talk:Largefile|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:996c231b&action=edit 5dd7fd8c]<br> +[[MediaWiki_talk:996c231b|Talk]] </td><td> It is recommended that images not exceed 100k in size. </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Last&action=edit last]<br> -[[MediaWiki_talk:Last|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:d1c69a85&action=edit 213ed3ea]<br> +[[MediaWiki_talk:d1c69a85|Talk]] </td><td> last </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Lastmodified&action=edit lastmodified]<br> -[[MediaWiki_talk:Lastmodified|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:26d03483&action=edit 1d0be5cf]<br> +[[MediaWiki_talk:26d03483|Talk]] </td><td> This page was last modified $1. </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Lastmodifiedby&action=edit lastmodifiedby]<br> -[[MediaWiki_talk:Lastmodifiedby|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:d8b6a1ce&action=edit b4c7424e]<br> +[[MediaWiki_talk:d8b6a1ce|Talk]] </td><td> This page was last modified $1 by $2. </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Lineno&action=edit lineno]<br> -[[MediaWiki_talk:Lineno|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:b5fb75c3&action=edit 7aab91e5]<br> +[[MediaWiki_talk:b5fb75c3|Talk]] </td><td> Line $1: </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Link_sample&action=edit link_sample]<br> -[[MediaWiki_talk:Link_sample|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:a1a27fd2&action=edit 4c4ec68a]<br> +[[MediaWiki_talk:a1a27fd2|Talk]] </td><td> Link title </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Link_tip&action=edit link_tip]<br> -[[MediaWiki_talk:Link_tip|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:28f8c928&action=edit e0ee37d8]<br> +[[MediaWiki_talk:28f8c928|Talk]] </td><td> Internal link </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Linklistsub&action=edit linklistsub]<br> -[[MediaWiki_talk:Linklistsub|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:003058f7&action=edit c692b683]<br> +[[MediaWiki_talk:003058f7|Talk]] </td><td> (List of links) </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Linkshere&action=edit linkshere]<br> -[[MediaWiki_talk:Linkshere|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:6508e12f&action=edit ce30384f]<br> +[[MediaWiki_talk:6508e12f|Talk]] </td><td> The following pages link to here: </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Linkstoimage&action=edit linkstoimage]<br> -[[MediaWiki_talk:Linkstoimage|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:f6dbd59d&action=edit 50b839a3]<br> +[[MediaWiki_talk:f6dbd59d|Talk]] </td><td> The following pages link to this image: </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Linktrail&action=edit linktrail]<br> -[[MediaWiki_talk:Linktrail|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:eb68781a&action=edit 743236e7]<br> +[[MediaWiki_talk:eb68781a|Talk]] </td><td> /^(&#91;a-z]+)(.*)$/sD </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Listform&action=edit listform]<br> -[[MediaWiki_talk:Listform|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:a8ca6811&action=edit 069b38c0]<br> +[[MediaWiki_talk:a8ca6811|Talk]] </td><td> list </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Listusers&action=edit listusers]<br> -[[MediaWiki_talk:Listusers|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:9bf82beb&action=edit aabbb062]<br> +[[MediaWiki_talk:9bf82beb|Talk]] </td><td> User list </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Loadhist&action=edit loadhist]<br> -[[MediaWiki_talk:Loadhist|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:61a6ed55&action=edit 1b4ae4f9]<br> +[[MediaWiki_talk:61a6ed55|Talk]] </td><td> Loading page history </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Loadingrev&action=edit loadingrev]<br> -[[MediaWiki_talk:Loadingrev|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:bf19b1de&action=edit b6bb9fa5]<br> +[[MediaWiki_talk:bf19b1de|Talk]] </td><td> loading revision for diff </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Localtime&action=edit localtime]<br> -[[MediaWiki_talk:Localtime|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:43678846&action=edit f25bccd7]<br> +[[MediaWiki_talk:43678846|Talk]] </td><td> Local time display </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Lockbtn&action=edit lockbtn]<br> -[[MediaWiki_talk:Lockbtn|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:31dcaa22&action=edit 62c50181]<br> +[[MediaWiki_talk:31dcaa22|Talk]] </td><td> Lock database </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Lockconfirm&action=edit lockconfirm]<br> -[[MediaWiki_talk:Lockconfirm|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:9dc82fa2&action=edit 5199ac8e]<br> +[[MediaWiki_talk:9dc82fa2|Talk]] </td><td> Yes, I really want to lock the database. </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Lockdb&action=edit lockdb]<br> -[[MediaWiki_talk:Lockdb|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:fef93b9b&action=edit 4f29ae0a]<br> +[[MediaWiki_talk:fef93b9b|Talk]] </td><td> Lock database </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Lockdbsuccesssub&action=edit lockdbsuccesssub]<br> -[[MediaWiki_talk:Lockdbsuccesssub|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:b4abc4bb&action=edit e73c06d7]<br> +[[MediaWiki_talk:b4abc4bb|Talk]] </td><td> Database lock succeeded </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Lockdbsuccesstext&action=edit lockdbsuccesstext]<br> -[[MediaWiki_talk:Lockdbsuccesstext|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:b6fcfec5&action=edit 88c6fb22]<br> +[[MediaWiki_talk:b6fcfec5|Talk]] </td><td> The database has been locked. &lt;br /&gt;Remember to remove the lock after your maintenance is complete. </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Lockdbtext&action=edit lockdbtext]<br> -[[MediaWiki_talk:Lockdbtext|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:459bf648&action=edit 070ff9ae]<br> +[[MediaWiki_talk:459bf648|Talk]] </td><td> Locking the database will suspend the ability of all users to edit pages, change their preferences, edit their watchlists, and @@ -2191,87 +2191,87 @@ other things requiring changes in the database. Please confirm that this is what you intend to do, and that you will unlock the database when your maintenance is done. </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Locknoconfirm&action=edit locknoconfirm]<br> -[[MediaWiki_talk:Locknoconfirm|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:2727a733&action=edit 8a890d0a]<br> +[[MediaWiki_talk:2727a733|Talk]] </td><td> You did not check the confirmation box. </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Login&action=edit login]<br> -[[MediaWiki_talk:Login|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:4e5a2893&action=edit 2736fab2]<br> +[[MediaWiki_talk:4e5a2893|Talk]] </td><td> Log in </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Loginerror&action=edit loginerror]<br> -[[MediaWiki_talk:Loginerror|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:fcfc7549&action=edit e6f9a4e2]<br> +[[MediaWiki_talk:fcfc7549|Talk]] </td><td> Login error </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Loginpagetitle&action=edit loginpagetitle]<br> -[[MediaWiki_talk:Loginpagetitle|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:4113f724&action=edit 36f843a7]<br> +[[MediaWiki_talk:4113f724|Talk]] </td><td> User login </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Loginproblem&action=edit loginproblem]<br> -[[MediaWiki_talk:Loginproblem|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:7a6963a6&action=edit d23ee6a8]<br> +[[MediaWiki_talk:7a6963a6|Talk]] </td><td> &lt;b&gt;There has been a problem with your login.&lt;/b&gt;&lt;br /&gt;Try again! </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Loginprompt&action=edit loginprompt]<br> -[[MediaWiki_talk:Loginprompt|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:bbf56890&action=edit 221d44a4]<br> +[[MediaWiki_talk:bbf56890|Talk]] </td><td> You must have cookies enabled to log in to Wiktionary. </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Loginreqtext&action=edit loginreqtext]<br> -[[MediaWiki_talk:Loginreqtext|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:75749962&action=edit ee8446ea]<br> +[[MediaWiki_talk:75749962|Talk]] </td><td> You must &#91;&#91;special:Userlogin&#124;login]] to view other pages. </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Loginreqtitle&action=edit loginreqtitle]<br> -[[MediaWiki_talk:Loginreqtitle|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:c779400b&action=edit a90049e8]<br> +[[MediaWiki_talk:c779400b|Talk]] </td><td> Login Required </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Loginsuccess&action=edit loginsuccess]<br> -[[MediaWiki_talk:Loginsuccess|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:753694e0&action=edit a5607b10]<br> +[[MediaWiki_talk:753694e0|Talk]] </td><td> You are now logged in to Wiktionary as &quot;$1&quot;. </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Loginsuccesstitle&action=edit loginsuccesstitle]<br> -[[MediaWiki_talk:Loginsuccesstitle|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:73eb6767&action=edit 5c2a05be]<br> +[[MediaWiki_talk:73eb6767|Talk]] </td><td> Login successful </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Logout&action=edit logout]<br> -[[MediaWiki_talk:Logout|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:e43d612e&action=edit 55525e1b]<br> +[[MediaWiki_talk:e43d612e|Talk]] </td><td> Log out </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Logouttext&action=edit logouttext]<br> -[[MediaWiki_talk:Logouttext|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:a8455b1c&action=edit 50310460]<br> +[[MediaWiki_talk:a8455b1c|Talk]] </td><td> You are now logged out. You can continue to use Wiktionary anonymously, or you can log in @@ -2280,311 +2280,311 @@ continue to be displayed as if you were still logged in, until you clear your browser cache </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Logouttitle&action=edit logouttitle]<br> -[[MediaWiki_talk:Logouttitle|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:cd48f4e7&action=edit 8f9db4e5]<br> +[[MediaWiki_talk:cd48f4e7|Talk]] </td><td> User logout </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Lonelypages&action=edit lonelypages]<br> -[[MediaWiki_talk:Lonelypages|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:916f5569&action=edit 92ab2259]<br> +[[MediaWiki_talk:916f5569|Talk]] </td><td> Orphaned pages </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Longpages&action=edit longpages]<br> -[[MediaWiki_talk:Longpages|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:9cdfa115&action=edit 38996948]<br> +[[MediaWiki_talk:9cdfa115|Talk]] </td><td> Long pages </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Longpagewarning&action=edit longpagewarning]<br> -[[MediaWiki_talk:Longpagewarning|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:b91ee293&action=edit 09b5b0a2]<br> +[[MediaWiki_talk:b91ee293|Talk]] </td><td> WARNING: This page is $1 kilobytes long; some browsers may have problems editing pages approaching or longer than 32kb. Please consider breaking the page into smaller sections. </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Mailerror&action=edit mailerror]<br> -[[MediaWiki_talk:Mailerror|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:1ca3c8a2&action=edit 2b82fce3]<br> +[[MediaWiki_talk:1ca3c8a2|Talk]] </td><td> Error sending mail: $1 </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Mailmypassword&action=edit mailmypassword]<br> -[[MediaWiki_talk:Mailmypassword|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:97681e3e&action=edit 669d145f]<br> +[[MediaWiki_talk:97681e3e|Talk]] </td><td> Mail me a new password </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Mailnologin&action=edit mailnologin]<br> -[[MediaWiki_talk:Mailnologin|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:8646515d&action=edit 874a6660]<br> +[[MediaWiki_talk:8646515d|Talk]] </td><td> No send address </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Mailnologintext&action=edit mailnologintext]<br> -[[MediaWiki_talk:Mailnologintext|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:f8116e36&action=edit ce0442ed]<br> +[[MediaWiki_talk:f8116e36|Talk]] </td><td> You must be &lt;a href=&quot;{{localurl:Special:Userlogin&quot;&gt;logged in&lt;/a&gt; and have a valid e-mail address in your &lt;a href=&quot;/wiki/Special:Preferences&quot;&gt;preferences&lt;/a&gt; to send e-mail to other users. </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Mainpage&action=edit mainpage]<br> -[[MediaWiki_talk:Mainpage|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:95989ab3&action=edit 6ad3db9a]<br> +[[MediaWiki_talk:95989ab3|Talk]] </td><td> Main Page </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Mainpagedocfooter&action=edit mainpagedocfooter]<br> -[[MediaWiki_talk:Mainpagedocfooter|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:216e0fe3&action=edit 19d499cf]<br> +[[MediaWiki_talk:216e0fe3|Talk]] </td><td> Please see &#91;http&#58;//meta.wikipedia.org/wiki/MediaWiki_i18n documentation on customizing the interface] and the &#91;http&#58;//meta.wikipedia.org/wiki/MediaWiki_User%27s_Guide User&#39;s Guide] for usage and configuration help. </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Mainpagetext&action=edit mainpagetext]<br> -[[MediaWiki_talk:Mainpagetext|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:29c07aac&action=edit 30186460]<br> +[[MediaWiki_talk:29c07aac|Talk]] </td><td> Wiki software successfully installed. </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Maintenance&action=edit maintenance]<br> -[[MediaWiki_talk:Maintenance|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:94de303b&action=edit 5b30e2c5]<br> +[[MediaWiki_talk:94de303b|Talk]] </td><td> Maintenance page </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Maintenancebacklink&action=edit maintenancebacklink]<br> -[[MediaWiki_talk:Maintenancebacklink|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:b98df751&action=edit aa734abd]<br> +[[MediaWiki_talk:b98df751|Talk]] </td><td> Back to Maintenance Page </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Maintnancepagetext&action=edit maintnancepagetext]<br> -[[MediaWiki_talk:Maintnancepagetext|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:5e830e7c&action=edit ff589b21]<br> +[[MediaWiki_talk:5e830e7c|Talk]] </td><td> This page includes several handy tools for everyday maintenance. Some of these functions tend to stress the database, so please do not hit reload after every item you fixed ;-) </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Makesysop&action=edit makesysop]<br> -[[MediaWiki_talk:Makesysop|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:147d840b&action=edit 192a7baa]<br> +[[MediaWiki_talk:147d840b|Talk]] </td><td> Make a user into a sysop </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Makesysopfail&action=edit makesysopfail]<br> -[[MediaWiki_talk:Makesysopfail|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:3e1272dd&action=edit c857a847]<br> +[[MediaWiki_talk:3e1272dd|Talk]] </td><td> &lt;b&gt;User &quot;$1&quot; could not be made into a sysop. (Did you enter the name correctly?)&lt;/b&gt; </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Makesysopname&action=edit makesysopname]<br> -[[MediaWiki_talk:Makesysopname|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:f942827d&action=edit 4ae2de91]<br> +[[MediaWiki_talk:f942827d|Talk]] </td><td> Name of the user: </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Makesysopok&action=edit makesysopok]<br> -[[MediaWiki_talk:Makesysopok|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:8933e97e&action=edit 1138d88d]<br> +[[MediaWiki_talk:8933e97e|Talk]] </td><td> &lt;b&gt;User &quot;$1&quot; is now a sysop&lt;/b&gt; </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Makesysopsubmit&action=edit makesysopsubmit]<br> -[[MediaWiki_talk:Makesysopsubmit|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:ffde53f7&action=edit 51a3d81a]<br> +[[MediaWiki_talk:ffde53f7|Talk]] </td><td> Make this user into a sysop </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Makesysoptext&action=edit makesysoptext]<br> -[[MediaWiki_talk:Makesysoptext|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:6135d20c&action=edit 9014f0fd]<br> +[[MediaWiki_talk:6135d20c|Talk]] </td><td> This form is used by bureaucrats to turn ordinary users into administrators. Type the name of the user in the box and press the button to make the user an administrator </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Makesysoptitle&action=edit makesysoptitle]<br> -[[MediaWiki_talk:Makesysoptitle|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:40537c23&action=edit 9d7a92cc]<br> +[[MediaWiki_talk:40537c23|Talk]] </td><td> Make a user into a sysop </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Matchtotals&action=edit matchtotals]<br> -[[MediaWiki_talk:Matchtotals|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:b00f5f1f&action=edit f2f4e13e]<br> +[[MediaWiki_talk:b00f5f1f|Talk]] </td><td> The query &quot;$1&quot; matched $2 page titles and the text of $3 pages. </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Math&action=edit math]<br> -[[MediaWiki_talk:Math|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:3edf0df4&action=edit 7a488390]<br> +[[MediaWiki_talk:3edf0df4|Talk]] </td><td> Rendering math </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Math_bad_output&action=edit math_bad_output]<br> -[[MediaWiki_talk:Math_bad_output|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:78c6cb06&action=edit d9b8688c]<br> +[[MediaWiki_talk:78c6cb06|Talk]] </td><td> Can&#39;t write to or create math output directory </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Math_bad_tmpdir&action=edit math_bad_tmpdir]<br> -[[MediaWiki_talk:Math_bad_tmpdir|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:f83fe947&action=edit be21263f]<br> +[[MediaWiki_talk:f83fe947|Talk]] </td><td> Can&#39;t write to or create math temp directory </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Math_failure&action=edit math_failure]<br> -[[MediaWiki_talk:Math_failure|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:f8cf40ba&action=edit 53e1c013]<br> +[[MediaWiki_talk:f8cf40ba|Talk]] </td><td> Failed to parse </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Math_image_error&action=edit math_image_error]<br> -[[MediaWiki_talk:Math_image_error|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:7b3e958f&action=edit 7082c48f]<br> +[[MediaWiki_talk:7b3e958f|Talk]] </td><td> PNG conversion failed; check for correct installation of latex, dvips, gs, and convert </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Math_lexing_error&action=edit math_lexing_error]<br> -[[MediaWiki_talk:Math_lexing_error|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:d6a158de&action=edit 41e6fe2b]<br> +[[MediaWiki_talk:d6a158de|Talk]] </td><td> lexing error </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Math_notexvc&action=edit math_notexvc]<br> -[[MediaWiki_talk:Math_notexvc|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:8109168a&action=edit 20ec4685]<br> +[[MediaWiki_talk:8109168a|Talk]] </td><td> Missing texvc executable; please see math/README to configure. </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Math_sample&action=edit math_sample]<br> -[[MediaWiki_talk:Math_sample|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:41b65279&action=edit 3e8b5972]<br> +[[MediaWiki_talk:41b65279|Talk]] </td><td> Insert formula here </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Math_syntax_error&action=edit math_syntax_error]<br> -[[MediaWiki_talk:Math_syntax_error|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:5cbab860&action=edit d5667f6b]<br> +[[MediaWiki_talk:5cbab860|Talk]] </td><td> syntax error </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Math_tip&action=edit math_tip]<br> -[[MediaWiki_talk:Math_tip|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:7e756feb&action=edit 0baadf18]<br> +[[MediaWiki_talk:7e756feb|Talk]] </td><td> Mathematical formula (LaTeX) </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Math_unknown_error&action=edit math_unknown_error]<br> -[[MediaWiki_talk:Math_unknown_error|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:fb4d261d&action=edit 5e0c970a]<br> +[[MediaWiki_talk:fb4d261d|Talk]] </td><td> unknown error </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Math_unknown_function&action=edit math_unknown_function]<br> -[[MediaWiki_talk:Math_unknown_function|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:26558f91&action=edit a0577d1d]<br> +[[MediaWiki_talk:26558f91|Talk]] </td><td> unknown function </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Media_sample&action=edit media_sample]<br> -[[MediaWiki_talk:Media_sample|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:63e94059&action=edit 704093ed]<br> +[[MediaWiki_talk:63e94059|Talk]] </td><td> Example.mp3 </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Media_tip&action=edit media_tip]<br> -[[MediaWiki_talk:Media_tip|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:8e4baaa8&action=edit 77fbb90b]<br> +[[MediaWiki_talk:8e4baaa8|Talk]] </td><td> Media file link </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Minlength&action=edit minlength]<br> -[[MediaWiki_talk:Minlength|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:cca18055&action=edit 61350cd2]<br> +[[MediaWiki_talk:cca18055|Talk]] </td><td> Image names must be at least three letters. </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Minoredit&action=edit minoredit]<br> -[[MediaWiki_talk:Minoredit|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:7f8c4ff3&action=edit 3dd77123]<br> +[[MediaWiki_talk:7f8c4ff3|Talk]] </td><td> This is a minor edit </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Minoreditletter&action=edit minoreditletter]<br> -[[MediaWiki_talk:Minoreditletter|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:ce5828a8&action=edit 3c37ba2f]<br> +[[MediaWiki_talk:ce5828a8|Talk]] </td><td> M </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Mispeelings&action=edit mispeelings]<br> -[[MediaWiki_talk:Mispeelings|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:1e3a3f5e&action=edit abf0b01a]<br> +[[MediaWiki_talk:1e3a3f5e|Talk]] </td><td> Pages with misspellings </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Mispeelingspage&action=edit mispeelingspage]<br> -[[MediaWiki_talk:Mispeelingspage|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:18c50601&action=edit 4841b1be]<br> +[[MediaWiki_talk:18c50601|Talk]] </td><td> List of common misspellings </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Mispeelingstext&action=edit mispeelingstext]<br> -[[MediaWiki_talk:Mispeelingstext|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:ff661e66&action=edit 20eeb250]<br> +[[MediaWiki_talk:ff661e66|Talk]] </td><td> The following pages contain a common misspelling, which are listed on $1. The correct spelling might be given (like this). </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Missingarticle&action=edit missingarticle]<br> -[[MediaWiki_talk:Missingarticle|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:77dd649d&action=edit 28d8d2f3]<br> +[[MediaWiki_talk:77dd649d|Talk]] </td><td> The database did not find the text of a page that it should have found, named &quot;$1&quot;. @@ -2595,96 +2595,96 @@ page that has been deleted. &lt;p&gt;If this is not the case, you may have found a bug in the software. Please report this to an administrator, making note of the URL. </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Missingimage&action=edit missingimage]<br> -[[MediaWiki_talk:Missingimage|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:43bf0acd&action=edit d6472ac8]<br> +[[MediaWiki_talk:43bf0acd|Talk]] </td><td> &lt;b&gt;Missing image&lt;/b&gt;&lt;br /&gt;&lt;i&gt;$1&lt;/i&gt; </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Missinglanguagelinks&action=edit missinglanguagelinks]<br> -[[MediaWiki_talk:Missinglanguagelinks|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:75c0518a&action=edit f433e9c8]<br> +[[MediaWiki_talk:75c0518a|Talk]] </td><td> Missing Language Links </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Missinglanguagelinksbutton&action=edit missinglanguagelinksbutton]<br> -[[MediaWiki_talk:Missinglanguagelinksbutton|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:5ef61b91&action=edit a4a9fdcd]<br> +[[MediaWiki_talk:5ef61b91|Talk]] </td><td> Find missing language links for </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Missinglanguagelinkstext&action=edit missinglanguagelinkstext]<br> -[[MediaWiki_talk:Missinglanguagelinkstext|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:f5affad8&action=edit e46ff038]<br> +[[MediaWiki_talk:f5affad8|Talk]] </td><td> These pages do &lt;i&gt;not&lt;/i&gt; link to their counterpart in $1. Redirects and subpages are &lt;i&gt;not&lt;/i&gt; shown. </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Moredotdotdot&action=edit moredotdotdot]<br> -[[MediaWiki_talk:Moredotdotdot|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:22e2c957&action=edit b43c02b9]<br> +[[MediaWiki_talk:22e2c957|Talk]] </td><td> More... </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Move&action=edit move]<br> -[[MediaWiki_talk:Move|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:76cdb950&action=edit 379d6ce9]<br> +[[MediaWiki_talk:76cdb950|Talk]] </td><td> Move </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Movearticle&action=edit movearticle]<br> -[[MediaWiki_talk:Movearticle|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:31d22872&action=edit d55a3c2a]<br> +[[MediaWiki_talk:31d22872|Talk]] </td><td> Move page </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Movedto&action=edit movedto]<br> -[[MediaWiki_talk:Movedto|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:fb280ed2&action=edit 0bd0c880]<br> +[[MediaWiki_talk:fb280ed2|Talk]] </td><td> moved to </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Movenologin&action=edit movenologin]<br> -[[MediaWiki_talk:Movenologin|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:8ddc20a0&action=edit 7c041d6e]<br> +[[MediaWiki_talk:8ddc20a0|Talk]] </td><td> Not logged in </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Movenologintext&action=edit movenologintext]<br> -[[MediaWiki_talk:Movenologintext|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:75985d0e&action=edit e479574b]<br> +[[MediaWiki_talk:75985d0e|Talk]] </td><td> You must be a registered user and &lt;a href=&quot;/wiki/Special:Userlogin&quot;&gt;logged in&lt;/a&gt; to move a page. </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Movepage&action=edit movepage]<br> -[[MediaWiki_talk:Movepage|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:addffb42&action=edit 0f05ab2b]<br> +[[MediaWiki_talk:addffb42|Talk]] </td><td> Move page </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Movepagebtn&action=edit movepagebtn]<br> -[[MediaWiki_talk:Movepagebtn|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:6f9e8dfc&action=edit 0311d79b]<br> +[[MediaWiki_talk:6f9e8dfc|Talk]] </td><td> Move page </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Movepagetalktext&action=edit movepagetalktext]<br> -[[MediaWiki_talk:Movepagetalktext|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:993d5ce8&action=edit 53ab3d1c]<br> +[[MediaWiki_talk:993d5ce8|Talk]] </td><td> The associated talk page, if any, will be automatically moved along with it &#39;&#39;&#39;unless:&#39;&#39;&#39; *You are moving the page across namespaces, @@ -2693,10 +2693,10 @@ The associated talk page, if any, will be automatically moved along with it & In those cases, you will have to move or merge the page manually if desired. </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Movepagetext&action=edit movepagetext]<br> -[[MediaWiki_talk:Movepagetext|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:ce6bc0ee&action=edit a363312c]<br> +[[MediaWiki_talk:ce6bc0ee|Talk]] </td><td> Using the form below will rename a page, moving all of its history to the new name. @@ -2717,798 +2717,798 @@ This can be a drastic and unexpected change for a popular page; please be sure you understand the consequences of this before proceeding. </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Movetalk&action=edit movetalk]<br> -[[MediaWiki_talk:Movetalk|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:e0a05db0&action=edit 7bd87d2d]<br> +[[MediaWiki_talk:e0a05db0|Talk]] </td><td> Move &quot;talk&quot; page as well, if applicable. </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Movethispage&action=edit movethispage]<br> -[[MediaWiki_talk:Movethispage|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:689ff1e7&action=edit 2119d3ee]<br> +[[MediaWiki_talk:689ff1e7|Talk]] </td><td> Move this page </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Mycontris&action=edit mycontris]<br> -[[MediaWiki_talk:Mycontris|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:0dc37cdb&action=edit 12b6caf0]<br> +[[MediaWiki_talk:0dc37cdb|Talk]] </td><td> My contributions </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Mypage&action=edit mypage]<br> -[[MediaWiki_talk:Mypage|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:51a7215d&action=edit 5d558678]<br> +[[MediaWiki_talk:51a7215d|Talk]] </td><td> My page </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Mytalk&action=edit mytalk]<br> -[[MediaWiki_talk:Mytalk|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:fbe8f485&action=edit 49886539]<br> +[[MediaWiki_talk:fbe8f485|Talk]] </td><td> My talk </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Navigation&action=edit navigation]<br> -[[MediaWiki_talk:Navigation|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:cf03cf2e&action=edit ad831792]<br> +[[MediaWiki_talk:cf03cf2e|Talk]] </td><td> Navigation </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Nbytes&action=edit nbytes]<br> -[[MediaWiki_talk:Nbytes|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:b5b13ae8&action=edit e75caf8a]<br> +[[MediaWiki_talk:b5b13ae8|Talk]] </td><td> $1 bytes </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Nchanges&action=edit nchanges]<br> -[[MediaWiki_talk:Nchanges|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:bee99a5f&action=edit 3d7d513a]<br> +[[MediaWiki_talk:bee99a5f|Talk]] </td><td> $1 changes </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Newarticle&action=edit newarticle]<br> -[[MediaWiki_talk:Newarticle|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:654df301&action=edit 06b1c460]<br> +[[MediaWiki_talk:654df301|Talk]] </td><td> (New) </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Newarticletext&action=edit newarticletext]<br> -[[MediaWiki_talk:Newarticletext|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:f1622d18&action=edit b90d5eb0]<br> +[[MediaWiki_talk:f1622d18|Talk]] </td><td> You&#39;ve followed a link to a page that doesn&#39;t exist yet. To create the page, start typing in the box below (see the &#91;&#91;Wiktionary:Help&#124;help page]] for more info). If you are here by mistake, just click your browser&#39;s &#39;&#39;&#39;back&#39;&#39;&#39; button. </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Newmessages&action=edit newmessages]<br> -[[MediaWiki_talk:Newmessages|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:780ce01b&action=edit 0b08523d]<br> +[[MediaWiki_talk:780ce01b|Talk]] </td><td> You have $1. </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Newmessageslink&action=edit newmessageslink]<br> -[[MediaWiki_talk:Newmessageslink|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:e09d8ffe&action=edit 1f028736]<br> +[[MediaWiki_talk:e09d8ffe|Talk]] </td><td> new messages </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Newpage&action=edit newpage]<br> -[[MediaWiki_talk:Newpage|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:ce656abe&action=edit d68c7e3c]<br> +[[MediaWiki_talk:ce656abe|Talk]] </td><td> New page </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Newpageletter&action=edit newpageletter]<br> -[[MediaWiki_talk:Newpageletter|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:b886426f&action=edit d081a481]<br> +[[MediaWiki_talk:b886426f|Talk]] </td><td> N </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Newpages&action=edit newpages]<br> -[[MediaWiki_talk:Newpages|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:2adf1ae7&action=edit eeadf049]<br> +[[MediaWiki_talk:2adf1ae7|Talk]] </td><td> New pages </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Newpassword&action=edit newpassword]<br> -[[MediaWiki_talk:Newpassword|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:393f8bca&action=edit f2c57870]<br> +[[MediaWiki_talk:393f8bca|Talk]] </td><td> New password </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Newtitle&action=edit newtitle]<br> -[[MediaWiki_talk:Newtitle|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:fa56bbd9&action=edit a104cc01]<br> +[[MediaWiki_talk:fa56bbd9|Talk]] </td><td> To new title </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Newusersonly&action=edit newusersonly]<br> -[[MediaWiki_talk:Newusersonly|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:2a57c83c&action=edit 41af2ba5]<br> +[[MediaWiki_talk:2a57c83c|Talk]] </td><td> (new users only) </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Next&action=edit next]<br> -[[MediaWiki_talk:Next|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:bc981983&action=edit edee9402]<br> +[[MediaWiki_talk:bc981983|Talk]] </td><td> next </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Nextn&action=edit nextn]<br> -[[MediaWiki_talk:Nextn|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:5e067f51&action=edit e0bd4ddb]<br> +[[MediaWiki_talk:5e067f51|Talk]] </td><td> next $1 </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Nlinks&action=edit nlinks]<br> -[[MediaWiki_talk:Nlinks|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:61c11c45&action=edit 2b45e9af]<br> +[[MediaWiki_talk:61c11c45|Talk]] </td><td> $1 links </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Noaffirmation&action=edit noaffirmation]<br> -[[MediaWiki_talk:Noaffirmation|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:e307257f&action=edit f6f5e28d]<br> +[[MediaWiki_talk:e307257f|Talk]] </td><td> You must affirm that your upload does not violate any copyrights. </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Noarticletext&action=edit noarticletext]<br> -[[MediaWiki_talk:Noarticletext|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:335462de&action=edit 2658d031]<br> +[[MediaWiki_talk:335462de|Talk]] </td><td> (There is currently no text in this page) </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Noblockreason&action=edit noblockreason]<br> -[[MediaWiki_talk:Noblockreason|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:46716843&action=edit 68326cbc]<br> +[[MediaWiki_talk:46716843|Talk]] </td><td> You must supply a reason for the block. </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Noconnect&action=edit noconnect]<br> -[[MediaWiki_talk:Noconnect|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:8fa787f6&action=edit 5d122d51]<br> +[[MediaWiki_talk:8fa787f6|Talk]] </td><td> Sorry! The wiki is experiencing some technical difficulties, and cannot contact the database server. </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Nocontribs&action=edit nocontribs]<br> -[[MediaWiki_talk:Nocontribs|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:f60d1a6d&action=edit b88f305b]<br> +[[MediaWiki_talk:f60d1a6d|Talk]] </td><td> No changes were found matching these criteria. </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Nocookieslogin&action=edit nocookieslogin]<br> -[[MediaWiki_talk:Nocookieslogin|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:9d931b8c&action=edit de736886]<br> +[[MediaWiki_talk:9d931b8c|Talk]] </td><td> Wiktionary uses cookies to log in users. You have cookies disabled. Please enable them and try again. </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Nocookiesnew&action=edit nocookiesnew]<br> -[[MediaWiki_talk:Nocookiesnew|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:e4a19fc8&action=edit 71c8d192]<br> +[[MediaWiki_talk:e4a19fc8|Talk]] </td><td> The user account was created, but you are not logged in. Wiktionary uses cookies to log in users. You have cookies disabled. Please enable them, then log in with your new username and password. </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Nocreativecommons&action=edit nocreativecommons]<br> -[[MediaWiki_talk:Nocreativecommons|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:6fbb6d3a&action=edit cc61a719]<br> +[[MediaWiki_talk:6fbb6d3a|Talk]] </td><td> Creative Commons RDF metadata disabled for this server. </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Nodb&action=edit nodb]<br> -[[MediaWiki_talk:Nodb|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:e0dd32fc&action=edit 5ed4cf16]<br> +[[MediaWiki_talk:e0dd32fc|Talk]] </td><td> Could not select database $1 </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Nodublincore&action=edit nodublincore]<br> -[[MediaWiki_talk:Nodublincore|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:067ee3e9&action=edit 3a58322b]<br> +[[MediaWiki_talk:067ee3e9|Talk]] </td><td> Dublin Core RDF metadata disabled for this server. </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Noemail&action=edit noemail]<br> -[[MediaWiki_talk:Noemail|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:325a917f&action=edit 4c8d93d2]<br> +[[MediaWiki_talk:325a917f|Talk]] </td><td> There is no e-mail address recorded for user &quot;$1&quot;. </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Noemailtext&action=edit noemailtext]<br> -[[MediaWiki_talk:Noemailtext|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:deb172c1&action=edit f8bace82]<br> +[[MediaWiki_talk:deb172c1|Talk]] </td><td> This user has not specified a valid e-mail address, or has chosen not to receive e-mail from other users. </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Noemailtitle&action=edit noemailtitle]<br> -[[MediaWiki_talk:Noemailtitle|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:6bd33d89&action=edit a158d61f]<br> +[[MediaWiki_talk:6bd33d89|Talk]] </td><td> No e-mail address </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Nogomatch&action=edit nogomatch]<br> -[[MediaWiki_talk:Nogomatch|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:e68327b0&action=edit 36552107]<br> +[[MediaWiki_talk:e68327b0|Talk]] </td><td> No page with this exact title exists, trying full text search. </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Nohistory&action=edit nohistory]<br> -[[MediaWiki_talk:Nohistory|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:90c1625a&action=edit 8d231ce4]<br> +[[MediaWiki_talk:90c1625a|Talk]] </td><td> There is no edit history for this page. </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Nolinkshere&action=edit nolinkshere]<br> -[[MediaWiki_talk:Nolinkshere|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:13e13fa2&action=edit e63b6d19]<br> +[[MediaWiki_talk:13e13fa2|Talk]] </td><td> No pages link to here. </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Nolinkstoimage&action=edit nolinkstoimage]<br> -[[MediaWiki_talk:Nolinkstoimage|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:5c3c99a8&action=edit 1e827a30]<br> +[[MediaWiki_talk:5c3c99a8|Talk]] </td><td> There are no pages that link to this image. </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Noname&action=edit noname]<br> -[[MediaWiki_talk:Noname|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:d9ff75a4&action=edit e21bfc14]<br> +[[MediaWiki_talk:d9ff75a4|Talk]] </td><td> You have not specified a valid user name. </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Nonefound&action=edit nonefound]<br> -[[MediaWiki_talk:Nonefound|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:f7d27b0c&action=edit 5db654d1]<br> +[[MediaWiki_talk:f7d27b0c|Talk]] </td><td> &lt;strong&gt;Note&lt;/strong&gt;: unsuccessful searches are often caused by searching for common words like &quot;have&quot; and &quot;from&quot;, which are not indexed, or by specifying more than one search term (only pages containing all of the search terms will appear in the result). </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Nospecialpagetext&action=edit nospecialpagetext]<br> -[[MediaWiki_talk:Nospecialpagetext|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:d5f565dd&action=edit aaaac807]<br> +[[MediaWiki_talk:d5f565dd|Talk]] </td><td> You have requested a special page that is not recognized by the wiki. </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Nosuchaction&action=edit nosuchaction]<br> -[[MediaWiki_talk:Nosuchaction|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:247c2db2&action=edit 273b8154]<br> +[[MediaWiki_talk:247c2db2|Talk]] </td><td> No such action </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Nosuchactiontext&action=edit nosuchactiontext]<br> -[[MediaWiki_talk:Nosuchactiontext|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:0e2f696c&action=edit e8773306]<br> +[[MediaWiki_talk:0e2f696c|Talk]] </td><td> The action specified by the URL is not recognized by the wiki </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Nosuchspecialpage&action=edit nosuchspecialpage]<br> -[[MediaWiki_talk:Nosuchspecialpage|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:bd0d7ac6&action=edit b98c7c10]<br> +[[MediaWiki_talk:bd0d7ac6|Talk]] </td><td> No such special page </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Nosuchuser&action=edit nosuchuser]<br> -[[MediaWiki_talk:Nosuchuser|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:22012b0a&action=edit f542883d]<br> +[[MediaWiki_talk:22012b0a|Talk]] </td><td> There is no user by the name &quot;$1&quot;. Check your spelling, or use the form below to create a new user account. </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Notacceptable&action=edit notacceptable]<br> -[[MediaWiki_talk:Notacceptable|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:982342c7&action=edit f4909824]<br> +[[MediaWiki_talk:982342c7|Talk]] </td><td> The wiki server can&#39;t provide data in a format your client can read. </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Notanarticle&action=edit notanarticle]<br> -[[MediaWiki_talk:Notanarticle|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:272cfb97&action=edit cdb5d3a9]<br> +[[MediaWiki_talk:272cfb97|Talk]] </td><td> Not a content page </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Notargettext&action=edit notargettext]<br> -[[MediaWiki_talk:Notargettext|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:8ccaecd6&action=edit 42534913]<br> +[[MediaWiki_talk:8ccaecd6|Talk]] </td><td> You have not specified a target page or user to perform this function on. </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Notargettitle&action=edit notargettitle]<br> -[[MediaWiki_talk:Notargettitle|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:4532ec15&action=edit dff62a20]<br> +[[MediaWiki_talk:4532ec15|Talk]] </td><td> No target </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Note&action=edit note]<br> -[[MediaWiki_talk:Note|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:2c924e30&action=edit c51048b7]<br> +[[MediaWiki_talk:2c924e30|Talk]] </td><td> &lt;strong&gt;Note:&lt;/strong&gt; </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Notextmatches&action=edit notextmatches]<br> -[[MediaWiki_talk:Notextmatches|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:51c2043b&action=edit 879701e9]<br> +[[MediaWiki_talk:51c2043b|Talk]] </td><td> No page text matches </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Notitlematches&action=edit notitlematches]<br> -[[MediaWiki_talk:Notitlematches|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:6f3befe0&action=edit 5a56ca1b]<br> +[[MediaWiki_talk:6f3befe0|Talk]] </td><td> No page title matches </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Notloggedin&action=edit notloggedin]<br> -[[MediaWiki_talk:Notloggedin|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:219a05e4&action=edit 02bcadd3]<br> +[[MediaWiki_talk:219a05e4|Talk]] </td><td> Not logged in </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Nowatchlist&action=edit nowatchlist]<br> -[[MediaWiki_talk:Nowatchlist|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:28b54fd2&action=edit ba736b7f]<br> +[[MediaWiki_talk:28b54fd2|Talk]] </td><td> You have no items on your watchlist. </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Nowiki_sample&action=edit nowiki_sample]<br> -[[MediaWiki_talk:Nowiki_sample|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:a78319d8&action=edit 2398990d]<br> +[[MediaWiki_talk:a78319d8|Talk]] </td><td> Insert non-formatted text here </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Nowiki_tip&action=edit nowiki_tip]<br> -[[MediaWiki_talk:Nowiki_tip|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:20d39be1&action=edit cf8602ad]<br> +[[MediaWiki_talk:20d39be1|Talk]] </td><td> Ignore wiki formatting </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Nstab-category&action=edit nstab-category]<br> -[[MediaWiki_talk:Nstab-category|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:dee84866&action=edit 7a6336e0]<br> +[[MediaWiki_talk:dee84866|Talk]] </td><td> Category </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Nstab-help&action=edit nstab-help]<br> -[[MediaWiki_talk:Nstab-help|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:a3e0d95e&action=edit 16b32116]<br> +[[MediaWiki_talk:a3e0d95e|Talk]] </td><td> Help </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Nstab-image&action=edit nstab-image]<br> -[[MediaWiki_talk:Nstab-image|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:911dff1f&action=edit 081e450a]<br> +[[MediaWiki_talk:911dff1f|Talk]] </td><td> Image </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Nstab-main&action=edit nstab-main]<br> -[[MediaWiki_talk:Nstab-main|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:931f9736&action=edit 5b9c503a]<br> +[[MediaWiki_talk:931f9736|Talk]] </td><td> Article </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Nstab-media&action=edit nstab-media]<br> -[[MediaWiki_talk:Nstab-media|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:6da2f6ae&action=edit 86e5f16d]<br> +[[MediaWiki_talk:6da2f6ae|Talk]] </td><td> Media </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Nstab-mediawiki&action=edit nstab-mediawiki]<br> -[[MediaWiki_talk:Nstab-mediawiki|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:53504d48&action=edit 368d5d22]<br> +[[MediaWiki_talk:53504d48|Talk]] </td><td> Message </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Nstab-special&action=edit nstab-special]<br> -[[MediaWiki_talk:Nstab-special|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:14d4daef&action=edit 34a2cba3]<br> +[[MediaWiki_talk:14d4daef|Talk]] </td><td> Special </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Nstab-template&action=edit nstab-template]<br> -[[MediaWiki_talk:Nstab-template|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:ed2e8b27&action=edit a1024e18]<br> +[[MediaWiki_talk:ed2e8b27|Talk]] </td><td> Template </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Nstab-user&action=edit nstab-user]<br> -[[MediaWiki_talk:Nstab-user|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:31ebc74b&action=edit 313f5ee2]<br> +[[MediaWiki_talk:31ebc74b|Talk]] </td><td> User page </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Nstab-wp&action=edit nstab-wp]<br> -[[MediaWiki_talk:Nstab-wp|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:a8d28daa&action=edit 0611a13e]<br> +[[MediaWiki_talk:a8d28daa|Talk]] </td><td> About </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Ok&action=edit ok]<br> -[[MediaWiki_talk:Ok|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:b0a98216&action=edit 7a85f476]<br> +[[MediaWiki_talk:b0a98216|Talk]] </td><td> OK </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Oldpassword&action=edit oldpassword]<br> -[[MediaWiki_talk:Oldpassword|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:e081cf87&action=edit 23ace733]<br> +[[MediaWiki_talk:e081cf87|Talk]] </td><td> Old password </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Orig&action=edit orig]<br> -[[MediaWiki_talk:Orig|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:db6998a7&action=edit dc894908]<br> +[[MediaWiki_talk:db6998a7|Talk]] </td><td> orig </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Orphans&action=edit orphans]<br> -[[MediaWiki_talk:Orphans|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:cb5dc4a4&action=edit 89f56e51]<br> +[[MediaWiki_talk:cb5dc4a4|Talk]] </td><td> Orphaned pages </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Othercontribs&action=edit othercontribs]<br> -[[MediaWiki_talk:Othercontribs|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:51caf0b1&action=edit e6287b24]<br> +[[MediaWiki_talk:51caf0b1|Talk]] </td><td> Based on work by $1. </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Otherlanguages&action=edit otherlanguages]<br> -[[MediaWiki_talk:Otherlanguages|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:838fda53&action=edit f953cc13]<br> +[[MediaWiki_talk:838fda53|Talk]] </td><td> Other languages </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Pagemovedsub&action=edit pagemovedsub]<br> -[[MediaWiki_talk:Pagemovedsub|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:8b80dc12&action=edit 06b2b863]<br> +[[MediaWiki_talk:8b80dc12|Talk]] </td><td> Move succeeded </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Pagemovedtext&action=edit pagemovedtext]<br> -[[MediaWiki_talk:Pagemovedtext|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:67c1c9b9&action=edit 6df06888]<br> +[[MediaWiki_talk:67c1c9b9|Talk]] </td><td> Page &quot;&#91;&#91;$1]]&quot; moved to &quot;&#91;&#91;$2]]&quot;. </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Pagetitle&action=edit pagetitle]<br> -[[MediaWiki_talk:Pagetitle|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:0488d9f9&action=edit ca0a1736]<br> +[[MediaWiki_talk:0488d9f9|Talk]] </td><td> $1 - Wiktionary </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Passwordremindertext&action=edit passwordremindertext]<br> -[[MediaWiki_talk:Passwordremindertext|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:724220c3&action=edit 00c46482]<br> +[[MediaWiki_talk:724220c3|Talk]] </td><td> Someone (probably you, from IP address $1) requested that we send you a new Wiktionary login password. The password for user &quot;$2&quot; is now &quot;$3&quot;. You should log in and change your password now. </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Passwordremindertitle&action=edit passwordremindertitle]<br> -[[MediaWiki_talk:Passwordremindertitle|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:67675177&action=edit 9943fd1d]<br> +[[MediaWiki_talk:67675177|Talk]] </td><td> Password reminder from Wiktionary </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Passwordsent&action=edit passwordsent]<br> -[[MediaWiki_talk:Passwordsent|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:feea022e&action=edit 52c6d21a]<br> +[[MediaWiki_talk:feea022e|Talk]] </td><td> A new password has been sent to the e-mail address registered for &quot;$1&quot;. Please log in again after you receive it. </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Perfcached&action=edit perfcached]<br> -[[MediaWiki_talk:Perfcached|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:d89b33a4&action=edit 6148b748]<br> +[[MediaWiki_talk:d89b33a4|Talk]] </td><td> The following data is cached and may not be completely up to date: </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Perfdisabled&action=edit perfdisabled]<br> -[[MediaWiki_talk:Perfdisabled|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:7c3d6ba1&action=edit edb94b6f]<br> +[[MediaWiki_talk:7c3d6ba1|Talk]] </td><td> Sorry! This feature has been temporarily disabled because it slows the database down to the point that no one can use the wiki. </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Perfdisabledsub&action=edit perfdisabledsub]<br> -[[MediaWiki_talk:Perfdisabledsub|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:ba8fb63e&action=edit 7971fbbc]<br> +[[MediaWiki_talk:ba8fb63e|Talk]] </td><td> Here&#39;s a saved copy from $1: </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Personaltools&action=edit personaltools]<br> -[[MediaWiki_talk:Personaltools|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:1f9d5196&action=edit faae8244]<br> +[[MediaWiki_talk:1f9d5196|Talk]] </td><td> Personal tools </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Portal&action=edit portal]<br> -[[MediaWiki_talk:Portal|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:b55223c7&action=edit 23f3fd77]<br> +[[MediaWiki_talk:b55223c7|Talk]] </td><td> Community portal </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Portal-url&action=edit portal-url]<br> -[[MediaWiki_talk:Portal-url|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:b6100630&action=edit d69501d7]<br> +[[MediaWiki_talk:b6100630|Talk]] </td><td> Wiktionary:Community Portal </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Postcomment&action=edit postcomment]<br> -[[MediaWiki_talk:Postcomment|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:83c6e160&action=edit 7ce546d1]<br> +[[MediaWiki_talk:83c6e160|Talk]] </td><td> Post a comment </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Poweredby&action=edit poweredby]<br> -[[MediaWiki_talk:Poweredby|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:f715eef0&action=edit 03d7f055]<br> +[[MediaWiki_talk:f715eef0|Talk]] </td><td> Wiktionary is powered by &#91;http&#58;//www.mediawiki.org/ MediaWiki], an open source wiki engine. </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Powersearch&action=edit powersearch]<br> -[[MediaWiki_talk:Powersearch|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:5f86f380&action=edit fe586261]<br> +[[MediaWiki_talk:5f86f380|Talk]] </td><td> Search </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Powersearchtext&action=edit powersearchtext]<br> -[[MediaWiki_talk:Powersearchtext|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:02360031&action=edit 7c50040c]<br> +[[MediaWiki_talk:02360031|Talk]] </td><td> Search in namespaces :&lt;br /&gt; $1&lt;br /&gt; $2 List redirects &amp;nbsp; Search for $3 $9 </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Preferences&action=edit preferences]<br> -[[MediaWiki_talk:Preferences|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:9dfd349e&action=edit dcedb31d]<br> +[[MediaWiki_talk:9dfd349e|Talk]] </td><td> Preferences </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Prefs-help-userdata&action=edit prefs-help-userdata]<br> -[[MediaWiki_talk:Prefs-help-userdata|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:6b97fde2&action=edit 4d381b11]<br> +[[MediaWiki_talk:6b97fde2|Talk]] </td><td> * &lt;strong&gt;Real name&lt;/strong&gt; (optional): if you choose to provide it this will be used for giving you attribution for your work.&lt;br/&gt; * &lt;strong&gt;Email&lt;/strong&gt; (optional): Enables people to contact you through the website without you having to reveal your email address to them, and it can be used to send you a new password if you forget it. </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Prefs-misc&action=edit prefs-misc]<br> -[[MediaWiki_talk:Prefs-misc|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:30cafb20&action=edit 4413aea7]<br> +[[MediaWiki_talk:30cafb20|Talk]] </td><td> Misc settings </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Prefs-personal&action=edit prefs-personal]<br> -[[MediaWiki_talk:Prefs-personal|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:58796ee5&action=edit 79de347d]<br> +[[MediaWiki_talk:58796ee5|Talk]] </td><td> User data </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Prefs-rc&action=edit prefs-rc]<br> -[[MediaWiki_talk:Prefs-rc|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:e055ac90&action=edit b8a6f738]<br> +[[MediaWiki_talk:e055ac90|Talk]] </td><td> Recent changes and stub display </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Prefslogintext&action=edit prefslogintext]<br> -[[MediaWiki_talk:Prefslogintext|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:0603b5a9&action=edit 3b8a7d0e]<br> +[[MediaWiki_talk:0603b5a9|Talk]] </td><td> You are logged in as &quot;$1&quot;. Your internal ID number is $2. See &#91;&#91;Wiktionary:User preferences help]] for help deciphering the options. </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Prefsnologin&action=edit prefsnologin]<br> -[[MediaWiki_talk:Prefsnologin|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:2366fb91&action=edit f2475be5]<br> +[[MediaWiki_talk:2366fb91|Talk]] </td><td> Not logged in </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Prefsnologintext&action=edit prefsnologintext]<br> -[[MediaWiki_talk:Prefsnologintext|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:0389a76a&action=edit 69cb02c9]<br> +[[MediaWiki_talk:0389a76a|Talk]] </td><td> You must be &lt;a href=&quot;/wiki/Special:Userlogin&quot;&gt;logged in&lt;/a&gt; to set user preferences. </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Prefsreset&action=edit prefsreset]<br> -[[MediaWiki_talk:Prefsreset|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:e6216751&action=edit 2b688ff4]<br> +[[MediaWiki_talk:e6216751|Talk]] </td><td> Preferences have been reset from storage. </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Preview&action=edit preview]<br> -[[MediaWiki_talk:Preview|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:f1fbb2b4&action=edit 1aa787fe]<br> +[[MediaWiki_talk:f1fbb2b4|Talk]] </td><td> Preview </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Previewconflict&action=edit previewconflict]<br> -[[MediaWiki_talk:Previewconflict|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:7357cd58&action=edit 353820b9]<br> +[[MediaWiki_talk:7357cd58|Talk]] </td><td> This preview reflects the text in the upper text editing area as it will appear if you choose to save. </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Previewnote&action=edit previewnote]<br> -[[MediaWiki_talk:Previewnote|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:f0bd6ebe&action=edit 2281018c]<br> +[[MediaWiki_talk:f0bd6ebe|Talk]] </td><td> Remember that this is only a preview, and has not yet been saved! </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Prevn&action=edit prevn]<br> -[[MediaWiki_talk:Prevn|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:c7db0778&action=edit 8b3bb669]<br> +[[MediaWiki_talk:c7db0778|Talk]] </td><td> previous $1 </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Printableversion&action=edit printableversion]<br> -[[MediaWiki_talk:Printableversion|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:0a67b813&action=edit e1a919ba]<br> +[[MediaWiki_talk:0a67b813|Talk]] </td><td> Printable version </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Printsubtitle&action=edit printsubtitle]<br> -[[MediaWiki_talk:Printsubtitle|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:dc3b6f21&action=edit d4d3cccd]<br> +[[MediaWiki_talk:dc3b6f21|Talk]] </td><td> (From http&#58;//tl.wiktionary.org) </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Protect&action=edit protect]<br> -[[MediaWiki_talk:Protect|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:016ac2dc&action=edit 145969f1]<br> +[[MediaWiki_talk:016ac2dc|Talk]] </td><td> Protect </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Protectcomment&action=edit protectcomment]<br> -[[MediaWiki_talk:Protectcomment|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:073135b4&action=edit bf7f9e49]<br> +[[MediaWiki_talk:073135b4|Talk]] </td><td> Reason for protecting </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Protectedarticle&action=edit protectedarticle]<br> -[[MediaWiki_talk:Protectedarticle|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:3ee691ce&action=edit 1f880b64]<br> +[[MediaWiki_talk:3ee691ce|Talk]] </td><td> protected &#91;&#91;$1]] </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Protectedpage&action=edit protectedpage]<br> -[[MediaWiki_talk:Protectedpage|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:a44b308c&action=edit 7afa7fea]<br> +[[MediaWiki_talk:a44b308c|Talk]] </td><td> Protected page </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Protectedpagewarning&action=edit protectedpagewarning]<br> -[[MediaWiki_talk:Protectedpagewarning|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:0017a4f5&action=edit 962032da]<br> +[[MediaWiki_talk:0017a4f5|Talk]] </td><td> WARNING: This page has been locked so that only users with sysop privileges can edit it. Be sure you are following the &lt;a href=&#39;/w/wiki.phtml/Wiktionary:Protected_page_guidelines&#39;&gt;protected page guidelines&lt;/a&gt;. </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Protectedtext&action=edit protectedtext]<br> -[[MediaWiki_talk:Protectedtext|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:cf2a914e&action=edit 561f00bf]<br> +[[MediaWiki_talk:cf2a914e|Talk]] </td><td> This page has been locked to prevent editing; there are a number of reasons why this may be so, please see @@ -3516,222 +3516,222 @@ a number of reasons why this may be so, please see You can view and copy the source of this page: </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Protectlogpage&action=edit protectlogpage]<br> -[[MediaWiki_talk:Protectlogpage|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:bb915483&action=edit 85888484]<br> +[[MediaWiki_talk:bb915483|Talk]] </td><td> Protection_log </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Protectlogtext&action=edit protectlogtext]<br> -[[MediaWiki_talk:Protectlogtext|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:061ec7fa&action=edit 197cfa0d]<br> +[[MediaWiki_talk:061ec7fa|Talk]] </td><td> Below is a list of page locks/unlocks. See &#91;&#91;Wiktionary:Protected page]] for more information. </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Protectpage&action=edit protectpage]<br> -[[MediaWiki_talk:Protectpage|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:d2ae1354&action=edit 33c2c02c]<br> +[[MediaWiki_talk:d2ae1354|Talk]] </td><td> Protect page </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Protectreason&action=edit protectreason]<br> -[[MediaWiki_talk:Protectreason|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:c0e9bbaf&action=edit 5cbc043a]<br> +[[MediaWiki_talk:c0e9bbaf|Talk]] </td><td> (give a reason) </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Protectsub&action=edit protectsub]<br> -[[MediaWiki_talk:Protectsub|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:23176a41&action=edit 24a81acc]<br> +[[MediaWiki_talk:23176a41|Talk]] </td><td> (Protecting &quot;$1&quot;) </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Protectthispage&action=edit protectthispage]<br> -[[MediaWiki_talk:Protectthispage|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:884b47b3&action=edit 77ca39fa]<br> +[[MediaWiki_talk:884b47b3|Talk]] </td><td> Protect this page </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Proxyblocker&action=edit proxyblocker]<br> -[[MediaWiki_talk:Proxyblocker|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:0ebe1928&action=edit 11599708]<br> +[[MediaWiki_talk:0ebe1928|Talk]] </td><td> Proxy blocker </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Proxyblockreason&action=edit proxyblockreason]<br> -[[MediaWiki_talk:Proxyblockreason|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:0ccb1a72&action=edit f4482395]<br> +[[MediaWiki_talk:0ccb1a72|Talk]] </td><td> Your IP address has been blocked because it is an open proxy. Please contact your Internet service provider or tech support and inform them of this serious security problem. </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Proxyblocksuccess&action=edit proxyblocksuccess]<br> -[[MediaWiki_talk:Proxyblocksuccess|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:88af6e64&action=edit 01b6671f]<br> +[[MediaWiki_talk:88af6e64|Talk]] </td><td> Done. </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Qbbrowse&action=edit qbbrowse]<br> -[[MediaWiki_talk:Qbbrowse|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:b1594c4a&action=edit 596b17aa]<br> +[[MediaWiki_talk:b1594c4a|Talk]] </td><td> Browse </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Qbedit&action=edit qbedit]<br> -[[MediaWiki_talk:Qbedit|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:25b61f80&action=edit 9e11e13b]<br> +[[MediaWiki_talk:25b61f80|Talk]] </td><td> Edit </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Qbfind&action=edit qbfind]<br> -[[MediaWiki_talk:Qbfind|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:e1a9ed9d&action=edit cc717307]<br> +[[MediaWiki_talk:e1a9ed9d|Talk]] </td><td> Find </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Qbmyoptions&action=edit qbmyoptions]<br> -[[MediaWiki_talk:Qbmyoptions|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:24074cfc&action=edit a40d0b3f]<br> +[[MediaWiki_talk:24074cfc|Talk]] </td><td> My pages </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Qbpageinfo&action=edit qbpageinfo]<br> -[[MediaWiki_talk:Qbpageinfo|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:af83fbba&action=edit 8f794a0f]<br> +[[MediaWiki_talk:af83fbba|Talk]] </td><td> Context </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Qbpageoptions&action=edit qbpageoptions]<br> -[[MediaWiki_talk:Qbpageoptions|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:c8fff0e7&action=edit 20fec244]<br> +[[MediaWiki_talk:c8fff0e7|Talk]] </td><td> This page </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Qbsettings&action=edit qbsettings]<br> -[[MediaWiki_talk:Qbsettings|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:5a6ec2af&action=edit 2dfd6121]<br> +[[MediaWiki_talk:5a6ec2af|Talk]] </td><td> Quickbar settings </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Qbspecialpages&action=edit qbspecialpages]<br> -[[MediaWiki_talk:Qbspecialpages|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:8eda832f&action=edit e97e9088]<br> +[[MediaWiki_talk:8eda832f|Talk]] </td><td> Special pages </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Querybtn&action=edit querybtn]<br> -[[MediaWiki_talk:Querybtn|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:ce1c6b9a&action=edit dc17545e]<br> +[[MediaWiki_talk:ce1c6b9a|Talk]] </td><td> Submit query </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Querysuccessful&action=edit querysuccessful]<br> -[[MediaWiki_talk:Querysuccessful|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:342970ff&action=edit 7f2e7314]<br> +[[MediaWiki_talk:342970ff|Talk]] </td><td> Query successful </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Randompage&action=edit randompage]<br> -[[MediaWiki_talk:Randompage|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:c2300ac1&action=edit 08f4cb5c]<br> +[[MediaWiki_talk:c2300ac1|Talk]] </td><td> Random page </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Range_block_disabled&action=edit range_block_disabled]<br> -[[MediaWiki_talk:Range_block_disabled|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:9f84f8de&action=edit 0da9559a]<br> +[[MediaWiki_talk:9f84f8de|Talk]] </td><td> The sysop ability to create range blocks is disabled. </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Rchide&action=edit rchide]<br> -[[MediaWiki_talk:Rchide|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:f65142b8&action=edit 65c24302]<br> +[[MediaWiki_talk:f65142b8|Talk]] </td><td> in $4 form; $1 minor edits; $2 secondary namespaces; $3 multiple edits. </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Rclinks&action=edit rclinks]<br> -[[MediaWiki_talk:Rclinks|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:78b9278a&action=edit 96bcbd6a]<br> +[[MediaWiki_talk:78b9278a|Talk]] </td><td> Show last $1 changes in last $2 days&lt;br /&gt;$3 </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Rclistfrom&action=edit rclistfrom]<br> -[[MediaWiki_talk:Rclistfrom|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:ead9cd8b&action=edit 69cdd5ad]<br> +[[MediaWiki_talk:ead9cd8b|Talk]] </td><td> Show new changes starting from $1 </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Rcliu&action=edit rcliu]<br> -[[MediaWiki_talk:Rcliu|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:bad8b81d&action=edit f13491ba]<br> +[[MediaWiki_talk:bad8b81d|Talk]] </td><td> ; $1 edits from logged in users </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Rcloaderr&action=edit rcloaderr]<br> -[[MediaWiki_talk:Rcloaderr|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:58a7c0de&action=edit ced7752e]<br> +[[MediaWiki_talk:58a7c0de|Talk]] </td><td> Loading recent changes </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Rclsub&action=edit rclsub]<br> -[[MediaWiki_talk:Rclsub|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:c3fd1aca&action=edit d259fbf6]<br> +[[MediaWiki_talk:c3fd1aca|Talk]] </td><td> (to pages linked from &quot;$1&quot;) </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Rcnote&action=edit rcnote]<br> -[[MediaWiki_talk:Rcnote|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:2c0a654c&action=edit 15ea8401]<br> +[[MediaWiki_talk:2c0a654c|Talk]] </td><td> Below are the last &lt;strong&gt;$1&lt;/strong&gt; changes in last &lt;strong&gt;$2&lt;/strong&gt; days. </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Rcnotefrom&action=edit rcnotefrom]<br> -[[MediaWiki_talk:Rcnotefrom|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:0a00aaba&action=edit c516366b]<br> +[[MediaWiki_talk:0a00aaba|Talk]] </td><td> Below are the changes since &lt;b&gt;$2&lt;/b&gt; (up to &lt;b&gt;$1&lt;/b&gt; shown). </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Readonly&action=edit readonly]<br> -[[MediaWiki_talk:Readonly|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:1d920fff&action=edit 9a277182]<br> +[[MediaWiki_talk:1d920fff|Talk]] </td><td> Database locked </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Readonlytext&action=edit readonlytext]<br> -[[MediaWiki_talk:Readonlytext|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:64743780&action=edit e5990e81]<br> +[[MediaWiki_talk:64743780|Talk]] </td><td> The database is currently locked to new entries and other modifications, probably for routine database maintenance, @@ -3739,476 +3739,476 @@ after which it will be back to normal. The administrator who locked it offered this explanation: &lt;p&gt;$1 </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Readonlywarning&action=edit readonlywarning]<br> -[[MediaWiki_talk:Readonlywarning|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:8c9d6af6&action=edit 74bcbeed]<br> +[[MediaWiki_talk:8c9d6af6|Talk]] </td><td> WARNING: The database has been locked for maintenance, so you will not be able to save your edits right now. You may wish to cut-n-paste the text into a text file and save it for later. </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Recentchanges&action=edit recentchanges]<br> -[[MediaWiki_talk:Recentchanges|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:4d75dd33&action=edit 51734654]<br> +[[MediaWiki_talk:4d75dd33|Talk]] </td><td> Recent changes </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Recentchangescount&action=edit recentchangescount]<br> -[[MediaWiki_talk:Recentchangescount|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:40f1d259&action=edit 44d93957]<br> +[[MediaWiki_talk:40f1d259|Talk]] </td><td> Number of titles in recent changes </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Recentchangeslinked&action=edit recentchangeslinked]<br> -[[MediaWiki_talk:Recentchangeslinked|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:312aafe1&action=edit b5822b16]<br> +[[MediaWiki_talk:312aafe1|Talk]] </td><td> Related changes </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Recentchangestext&action=edit recentchangestext]<br> -[[MediaWiki_talk:Recentchangestext|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:2f453993&action=edit 049f8c5f]<br> +[[MediaWiki_talk:2f453993|Talk]] </td><td> Track the most recent changes to the wiki on this page. </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Redirectedfrom&action=edit redirectedfrom]<br> -[[MediaWiki_talk:Redirectedfrom|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:7124fa4a&action=edit 43d741c1]<br> +[[MediaWiki_talk:7124fa4a|Talk]] </td><td> (Redirected from $1) </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Remembermypassword&action=edit remembermypassword]<br> -[[MediaWiki_talk:Remembermypassword|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:54d89323&action=edit 4eef1c9f]<br> +[[MediaWiki_talk:54d89323|Talk]] </td><td> Remember my password across sessions. </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Removechecked&action=edit removechecked]<br> -[[MediaWiki_talk:Removechecked|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:537f5507&action=edit bfa5dc98]<br> +[[MediaWiki_talk:537f5507|Talk]] </td><td> Remove checked items from watchlist </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Removedwatch&action=edit removedwatch]<br> -[[MediaWiki_talk:Removedwatch|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:78e82769&action=edit eeadf87c]<br> +[[MediaWiki_talk:78e82769|Talk]] </td><td> Removed from watchlist </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Removedwatchtext&action=edit removedwatchtext]<br> -[[MediaWiki_talk:Removedwatchtext|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:ad711aa8&action=edit d9807612]<br> +[[MediaWiki_talk:ad711aa8|Talk]] </td><td> The page &quot;$1&quot; has been removed from your watchlist. </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Removingchecked&action=edit removingchecked]<br> -[[MediaWiki_talk:Removingchecked|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:48b0bcb6&action=edit 7d083ee5]<br> +[[MediaWiki_talk:48b0bcb6|Talk]] </td><td> Removing requested items from watchlist... </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Resetprefs&action=edit resetprefs]<br> -[[MediaWiki_talk:Resetprefs|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:2f022894&action=edit 4b81718e]<br> +[[MediaWiki_talk:2f022894|Talk]] </td><td> Reset preferences </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Restorelink&action=edit restorelink]<br> -[[MediaWiki_talk:Restorelink|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:bc47acaf&action=edit 8f8f7d13]<br> +[[MediaWiki_talk:bc47acaf|Talk]] </td><td> $1 deleted edits </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Resultsperpage&action=edit resultsperpage]<br> -[[MediaWiki_talk:Resultsperpage|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:6add8c15&action=edit 8f0c68f0]<br> +[[MediaWiki_talk:6add8c15|Talk]] </td><td> Hits to show per page </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Retrievedfrom&action=edit retrievedfrom]<br> -[[MediaWiki_talk:Retrievedfrom|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:6f54af5b&action=edit a5e2f101]<br> +[[MediaWiki_talk:6f54af5b|Talk]] </td><td> Retrieved from &quot;$1&quot; </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Returnto&action=edit returnto]<br> -[[MediaWiki_talk:Returnto|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:3dcff1b0&action=edit 58f19667]<br> +[[MediaWiki_talk:3dcff1b0|Talk]] </td><td> Return to $1. </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Retypenew&action=edit retypenew]<br> -[[MediaWiki_talk:Retypenew|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:b9ac79c6&action=edit 2b9171b6]<br> +[[MediaWiki_talk:b9ac79c6|Talk]] </td><td> Retype new password </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Reupload&action=edit reupload]<br> -[[MediaWiki_talk:Reupload|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:b7ae8f64&action=edit a3eee606]<br> +[[MediaWiki_talk:b7ae8f64|Talk]] </td><td> Re-upload </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Reuploaddesc&action=edit reuploaddesc]<br> -[[MediaWiki_talk:Reuploaddesc|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:cd783da0&action=edit d7ba5bcb]<br> +[[MediaWiki_talk:cd783da0|Talk]] </td><td> Return to the upload form. </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Reverted&action=edit reverted]<br> -[[MediaWiki_talk:Reverted|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:c73c43f3&action=edit f322de9a]<br> +[[MediaWiki_talk:c73c43f3|Talk]] </td><td> Reverted to earlier revision </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Revertimg&action=edit revertimg]<br> -[[MediaWiki_talk:Revertimg|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:18591a4b&action=edit 0d86ed82]<br> +[[MediaWiki_talk:18591a4b|Talk]] </td><td> rev </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Revertpage&action=edit revertpage]<br> -[[MediaWiki_talk:Revertpage|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:b24ef4f1&action=edit 8ce494ea]<br> +[[MediaWiki_talk:b24ef4f1|Talk]] </td><td> Reverted edit of $2, changed back to last version by $1 </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Revhistory&action=edit revhistory]<br> -[[MediaWiki_talk:Revhistory|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:96e64350&action=edit 949a77c7]<br> +[[MediaWiki_talk:96e64350|Talk]] </td><td> Revision history </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Revisionasof&action=edit revisionasof]<br> -[[MediaWiki_talk:Revisionasof|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:0c299dc7&action=edit 3338672b]<br> +[[MediaWiki_talk:0c299dc7|Talk]] </td><td> Revision as of $1 </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Revnotfound&action=edit revnotfound]<br> -[[MediaWiki_talk:Revnotfound|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:159f321a&action=edit d567812b]<br> +[[MediaWiki_talk:159f321a|Talk]] </td><td> Revision not found </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Revnotfoundtext&action=edit revnotfoundtext]<br> -[[MediaWiki_talk:Revnotfoundtext|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:955fec48&action=edit 4060f114]<br> +[[MediaWiki_talk:955fec48|Talk]] </td><td> The old revision of the page you asked for could not be found. Please check the URL you used to access this page. </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Rfcurl&action=edit rfcurl]<br> -[[MediaWiki_talk:Rfcurl|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:b2f04988&action=edit e8b606c2]<br> +[[MediaWiki_talk:b2f04988|Talk]] </td><td> http&#58;//www.faqs.org/rfcs/rfc$1.html </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Rights&action=edit rights]<br> -[[MediaWiki_talk:Rights|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:db94ff6b&action=edit 1407cb23]<br> +[[MediaWiki_talk:db94ff6b|Talk]] </td><td> Rights: </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Rollback&action=edit rollback]<br> -[[MediaWiki_talk:Rollback|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:f28daee2&action=edit ff3a6f3b]<br> +[[MediaWiki_talk:f28daee2|Talk]] </td><td> Roll back edits </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Rollback_short&action=edit rollback_short]<br> -[[MediaWiki_talk:Rollback_short|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:2aaec24c&action=edit 5f0fa7e7]<br> +[[MediaWiki_talk:2aaec24c|Talk]] </td><td> Rollback </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Rollbackfailed&action=edit rollbackfailed]<br> -[[MediaWiki_talk:Rollbackfailed|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:54d37a4c&action=edit 73c685e6]<br> +[[MediaWiki_talk:54d37a4c|Talk]] </td><td> Rollback failed </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Rollbacklink&action=edit rollbacklink]<br> -[[MediaWiki_talk:Rollbacklink|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:b82a8f42&action=edit 1a9fae49]<br> +[[MediaWiki_talk:b82a8f42|Talk]] </td><td> rollback </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Rows&action=edit rows]<br> -[[MediaWiki_talk:Rows|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:52d0b352&action=edit 6c30d261]<br> +[[MediaWiki_talk:52d0b352|Talk]] </td><td> Rows </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Savearticle&action=edit savearticle]<br> -[[MediaWiki_talk:Savearticle|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:5a43014e&action=edit 1308cde0]<br> +[[MediaWiki_talk:5a43014e|Talk]] </td><td> Save page </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Savedprefs&action=edit savedprefs]<br> -[[MediaWiki_talk:Savedprefs|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:0e53fdc8&action=edit 5f6543d0]<br> +[[MediaWiki_talk:0e53fdc8|Talk]] </td><td> Your preferences have been saved. </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Savefile&action=edit savefile]<br> -[[MediaWiki_talk:Savefile|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:e1415b15&action=edit d6d40a58]<br> +[[MediaWiki_talk:e1415b15|Talk]] </td><td> Save file </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Saveprefs&action=edit saveprefs]<br> -[[MediaWiki_talk:Saveprefs|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:ad98e68e&action=edit 34ac956e]<br> +[[MediaWiki_talk:ad98e68e|Talk]] </td><td> Save preferences </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Search&action=edit search]<br> -[[MediaWiki_talk:Search|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:bce06414&action=edit 3559d7ac]<br> +[[MediaWiki_talk:bce06414|Talk]] </td><td> Search </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Searchdisabled&action=edit searchdisabled]<br> -[[MediaWiki_talk:Searchdisabled|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:8f6495a7&action=edit cfa0722d]<br> +[[MediaWiki_talk:8f6495a7|Talk]] </td><td> &lt;p&gt;Sorry! Full text search has been disabled temporarily, for performance reasons. In the meantime, you can use the Google search below, which may be out of date.&lt;/p&gt; </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Searchhelppage&action=edit searchhelppage]<br> -[[MediaWiki_talk:Searchhelppage|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:72344e87&action=edit 3eea6ce4]<br> +[[MediaWiki_talk:72344e87|Talk]] </td><td> Wiktionary:Searching </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Searchingwikipedia&action=edit searchingwikipedia]<br> -[[MediaWiki_talk:Searchingwikipedia|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:cb9c1653&action=edit da48347f]<br> +[[MediaWiki_talk:cb9c1653|Talk]] </td><td> Searching Wiktionary </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Searchquery&action=edit searchquery]<br> -[[MediaWiki_talk:Searchquery|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:3d79ca88&action=edit 64bdca9a]<br> +[[MediaWiki_talk:3d79ca88|Talk]] </td><td> For query &quot;$1&quot; </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Searchresults&action=edit searchresults]<br> -[[MediaWiki_talk:Searchresults|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:b2f7c0e1&action=edit 8ef6d4d3]<br> +[[MediaWiki_talk:b2f7c0e1|Talk]] </td><td> Search results </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Searchresultshead&action=edit searchresultshead]<br> -[[MediaWiki_talk:Searchresultshead|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:e5ed9018&action=edit 83d578cd]<br> +[[MediaWiki_talk:e5ed9018|Talk]] </td><td> Search result settings </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Searchresulttext&action=edit searchresulttext]<br> -[[MediaWiki_talk:Searchresulttext|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:8cab5350&action=edit 781b9fee]<br> +[[MediaWiki_talk:8cab5350|Talk]] </td><td> For more information about searching Wiktionary, see $1. </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Sectionedit&action=edit sectionedit]<br> -[[MediaWiki_talk:Sectionedit|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:37b6df63&action=edit a26b768d]<br> +[[MediaWiki_talk:37b6df63|Talk]] </td><td> (section) </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Selectnewerversionfordiff&action=edit selectnewerversionfordiff]<br> -[[MediaWiki_talk:Selectnewerversionfordiff|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:be4aaa62&action=edit 2ddce298]<br> +[[MediaWiki_talk:be4aaa62|Talk]] </td><td> Select a newer version for comparison </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Selectolderversionfordiff&action=edit selectolderversionfordiff]<br> -[[MediaWiki_talk:Selectolderversionfordiff|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:5124db4d&action=edit 80ffa0cb]<br> +[[MediaWiki_talk:5124db4d|Talk]] </td><td> Select an older version for comparison </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Selectonly&action=edit selectonly]<br> -[[MediaWiki_talk:Selectonly|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:a3c0a747&action=edit 5ec1b504]<br> +[[MediaWiki_talk:a3c0a747|Talk]] </td><td> Only read-only queries are allowed. </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Selflinks&action=edit selflinks]<br> -[[MediaWiki_talk:Selflinks|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:e93eec9e&action=edit 06cf46b3]<br> +[[MediaWiki_talk:e93eec9e|Talk]] </td><td> Pages with Self Links </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Selflinkstext&action=edit selflinkstext]<br> -[[MediaWiki_talk:Selflinkstext|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:f993dd01&action=edit e7caf074]<br> +[[MediaWiki_talk:f993dd01|Talk]] </td><td> The following pages contain a link to themselves, which they should not. </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Seriousxhtmlerrors&action=edit seriousxhtmlerrors]<br> -[[MediaWiki_talk:Seriousxhtmlerrors|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:fa56e16c&action=edit 249c203d]<br> +[[MediaWiki_talk:fa56e16c|Talk]] </td><td> There were serious xhtml markup errors detected by tidy. </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Servertime&action=edit servertime]<br> -[[MediaWiki_talk:Servertime|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:5123f28d&action=edit 8fcf47da]<br> +[[MediaWiki_talk:5123f28d|Talk]] </td><td> Server time is now </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Set_rights_fail&action=edit set_rights_fail]<br> -[[MediaWiki_talk:Set_rights_fail|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:4075f71a&action=edit 79d35179]<br> +[[MediaWiki_talk:4075f71a|Talk]] </td><td> &lt;b&gt;User rights for &quot;$1&quot; could not be set. (Did you enter the name correctly?)&lt;/b&gt; </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Set_user_rights&action=edit set_user_rights]<br> -[[MediaWiki_talk:Set_user_rights|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:13187ffc&action=edit f2cd2a2a]<br> +[[MediaWiki_talk:13187ffc|Talk]] </td><td> Set user rights </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Setbureaucratflag&action=edit setbureaucratflag]<br> -[[MediaWiki_talk:Setbureaucratflag|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:56640761&action=edit c5bfd68a]<br> +[[MediaWiki_talk:56640761|Talk]] </td><td> Set bureaucrat flag </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Shortpages&action=edit shortpages]<br> -[[MediaWiki_talk:Shortpages|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:0d3f883b&action=edit fff9c94a]<br> +[[MediaWiki_talk:0d3f883b|Talk]] </td><td> Short pages </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Show&action=edit show]<br> -[[MediaWiki_talk:Show|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:d97d1ee3&action=edit 9fb29051]<br> +[[MediaWiki_talk:d97d1ee3|Talk]] </td><td> show </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Showhideminor&action=edit showhideminor]<br> -[[MediaWiki_talk:Showhideminor|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:f1a75ecf&action=edit 4fe654c7]<br> +[[MediaWiki_talk:f1a75ecf|Talk]] </td><td> $1 minor edits &#124; $2 bots &#124; $3 logged in users </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Showingresults&action=edit showingresults]<br> -[[MediaWiki_talk:Showingresults|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:72fad336&action=edit 9569cf23]<br> +[[MediaWiki_talk:72fad336|Talk]] </td><td> Showing below &lt;b&gt;$1&lt;/b&gt; results starting with #&lt;b&gt;$2&lt;/b&gt;. </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Showingresultsnum&action=edit showingresultsnum]<br> -[[MediaWiki_talk:Showingresultsnum|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:6db37657&action=edit f7535b52]<br> +[[MediaWiki_talk:6db37657|Talk]] </td><td> Showing below &lt;b&gt;$3&lt;/b&gt; results starting with #&lt;b&gt;$2&lt;/b&gt;. </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Showlast&action=edit showlast]<br> -[[MediaWiki_talk:Showlast|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:acbdf814&action=edit 43158759]<br> +[[MediaWiki_talk:acbdf814|Talk]] </td><td> Show last $1 images sorted $2. </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Showpreview&action=edit showpreview]<br> -[[MediaWiki_talk:Showpreview|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:915318a0&action=edit ac2b4c32]<br> +[[MediaWiki_talk:915318a0|Talk]] </td><td> Show preview </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Showtoc&action=edit showtoc]<br> -[[MediaWiki_talk:Showtoc|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:cfff5a5a&action=edit 6eeee3cb]<br> +[[MediaWiki_talk:cfff5a5a|Talk]] </td><td> show </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Sig_tip&action=edit sig_tip]<br> -[[MediaWiki_talk:Sig_tip|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:ac617b53&action=edit 1144c9d9]<br> +[[MediaWiki_talk:ac617b53|Talk]] </td><td> Your signature with timestamp </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Sitestats&action=edit sitestats]<br> -[[MediaWiki_talk:Sitestats|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:f6baa6ad&action=edit 7f5726ac]<br> +[[MediaWiki_talk:f6baa6ad|Talk]] </td><td> Site statistics </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Sitestatstext&action=edit sitestatstext]<br> -[[MediaWiki_talk:Sitestatstext|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:e150b0f4&action=edit 8e86f95d]<br> +[[MediaWiki_talk:e150b0f4|Talk]] </td><td> There are &#39;&#39;&#39;$1&#39;&#39;&#39; total pages in the database. This includes &quot;talk&quot; pages, pages about Wiktionary, minimal &quot;stub&quot; @@ -4220,931 +4220,931 @@ There have been a total of &#39;&#39;&#39;$3&#39;&#39;&# since the wiki was setup. That comes to &#39;&#39;&#39;$5&#39;&#39;&#39; average edits per page, and &#39;&#39;&#39;$6&#39;&#39;&#39; views per edit. </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Sitesubtitle&action=edit sitesubtitle]<br> -[[MediaWiki_talk:Sitesubtitle|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:daaf7240&action=edit 8dca090f]<br> +[[MediaWiki_talk:daaf7240|Talk]] </td><td> The Free Encyclopedia </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Sitesupport&action=edit sitesupport]<br> -[[MediaWiki_talk:Sitesupport|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:3b434c6d&action=edit 32b42c53]<br> +[[MediaWiki_talk:3b434c6d|Talk]] </td><td> Donations </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Sitetitle&action=edit sitetitle]<br> -[[MediaWiki_talk:Sitetitle|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:d75649ef&action=edit d88e8164]<br> +[[MediaWiki_talk:d75649ef|Talk]] </td><td> Wiktionary </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Siteuser&action=edit siteuser]<br> -[[MediaWiki_talk:Siteuser|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:cb06d8a3&action=edit b64ec710]<br> +[[MediaWiki_talk:cb06d8a3|Talk]] </td><td> Wiktionary user $1 </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Siteusers&action=edit siteusers]<br> -[[MediaWiki_talk:Siteusers|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:d25d37c8&action=edit 4f548531]<br> +[[MediaWiki_talk:d25d37c8|Talk]] </td><td> Wiktionary user(s) $1 </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Skin&action=edit skin]<br> -[[MediaWiki_talk:Skin|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:8f57bd61&action=edit d0cb2acd]<br> +[[MediaWiki_talk:8f57bd61|Talk]] </td><td> Skin </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Spamprotectiontext&action=edit spamprotectiontext]<br> -[[MediaWiki_talk:Spamprotectiontext|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:d3a6dd4e&action=edit bcd196f9]<br> +[[MediaWiki_talk:d3a6dd4e|Talk]] </td><td> The page you wanted to save was blocked by the spam filter. This is probably caused by a link to an external site. You might want to check the following regular expression for patterns that are currently blocked: </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Spamprotectiontitle&action=edit spamprotectiontitle]<br> -[[MediaWiki_talk:Spamprotectiontitle|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:add33980&action=edit 60a90929]<br> +[[MediaWiki_talk:add33980|Talk]] </td><td> Spam protection filter </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Specialpage&action=edit specialpage]<br> -[[MediaWiki_talk:Specialpage|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:984c6817&action=edit 25255195]<br> +[[MediaWiki_talk:984c6817|Talk]] </td><td> Special Page </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Specialpages&action=edit specialpages]<br> -[[MediaWiki_talk:Specialpages|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:b67d51d8&action=edit 62bc32dc]<br> +[[MediaWiki_talk:b67d51d8|Talk]] </td><td> Special pages </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Spheading&action=edit spheading]<br> -[[MediaWiki_talk:Spheading|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:c9709132&action=edit 73ac2b41]<br> +[[MediaWiki_talk:c9709132|Talk]] </td><td> Special pages for all users </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Sqlislogged&action=edit sqlislogged]<br> -[[MediaWiki_talk:Sqlislogged|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:87ac14f6&action=edit ed31e1e1]<br> +[[MediaWiki_talk:87ac14f6|Talk]] </td><td> Please note that all queries are logged. </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Sqlquery&action=edit sqlquery]<br> -[[MediaWiki_talk:Sqlquery|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:00c261e1&action=edit 26cb51a1]<br> +[[MediaWiki_talk:00c261e1|Talk]] </td><td> Enter query </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Statistics&action=edit statistics]<br> -[[MediaWiki_talk:Statistics|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:2086b21f&action=edit 3d18b2ea]<br> +[[MediaWiki_talk:2086b21f|Talk]] </td><td> Statistics </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Storedversion&action=edit storedversion]<br> -[[MediaWiki_talk:Storedversion|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:8cd0c85e&action=edit 1b9e838c]<br> +[[MediaWiki_talk:8cd0c85e|Talk]] </td><td> Stored version </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Stubthreshold&action=edit stubthreshold]<br> -[[MediaWiki_talk:Stubthreshold|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:2eb6d4bd&action=edit a5125d69]<br> +[[MediaWiki_talk:2eb6d4bd|Talk]] </td><td> Threshold for stub display </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Subcategories&action=edit subcategories]<br> -[[MediaWiki_talk:Subcategories|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:f3da206c&action=edit ef062b0e]<br> +[[MediaWiki_talk:f3da206c|Talk]] </td><td> Subcategories </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Subject&action=edit subject]<br> -[[MediaWiki_talk:Subject|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:8d183dbd&action=edit 335ce16b]<br> +[[MediaWiki_talk:8d183dbd|Talk]] </td><td> Subject/headline </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Subjectpage&action=edit subjectpage]<br> -[[MediaWiki_talk:Subjectpage|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:ca29f2df&action=edit d7084ef8]<br> +[[MediaWiki_talk:ca29f2df|Talk]] </td><td> View subject </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Successfulupload&action=edit successfulupload]<br> -[[MediaWiki_talk:Successfulupload|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:17bc3900&action=edit 3dfd0f51]<br> +[[MediaWiki_talk:17bc3900|Talk]] </td><td> Successful upload </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Summary&action=edit summary]<br> -[[MediaWiki_talk:Summary|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:12b71c3e&action=edit 05535ecf]<br> +[[MediaWiki_talk:12b71c3e|Talk]] </td><td> Summary </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Sysopspheading&action=edit sysopspheading]<br> -[[MediaWiki_talk:Sysopspheading|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:ee858d9a&action=edit fde4e0f4]<br> +[[MediaWiki_talk:ee858d9a|Talk]] </td><td> For sysop use only </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Sysoptext&action=edit sysoptext]<br> -[[MediaWiki_talk:Sysoptext|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:2f758a39&action=edit 85232d4f]<br> +[[MediaWiki_talk:2f758a39|Talk]] </td><td> The action you have requested can only be performed by users with &quot;sysop&quot; status. See $1. </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Sysoptitle&action=edit sysoptitle]<br> -[[MediaWiki_talk:Sysoptitle|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:91b8467b&action=edit 3265b18d]<br> +[[MediaWiki_talk:91b8467b|Talk]] </td><td> Sysop access required </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Tableform&action=edit tableform]<br> -[[MediaWiki_talk:Tableform|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:77b9c5ad&action=edit 109e51e1]<br> +[[MediaWiki_talk:77b9c5ad|Talk]] </td><td> table </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Talk&action=edit talk]<br> -[[MediaWiki_talk:Talk|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:4e6a710d&action=edit e55e91b2]<br> +[[MediaWiki_talk:4e6a710d|Talk]] </td><td> Discussion </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Talkexists&action=edit talkexists]<br> -[[MediaWiki_talk:Talkexists|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:c11ac522&action=edit 1ed6d2b4]<br> +[[MediaWiki_talk:c11ac522|Talk]] </td><td> The page itself was moved successfully, but the talk page could not be moved because one already exists at the new title. Please merge them manually. </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Talkpage&action=edit talkpage]<br> -[[MediaWiki_talk:Talkpage|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:6a38ff98&action=edit 3c940bbf]<br> +[[MediaWiki_talk:6a38ff98|Talk]] </td><td> Discuss this page </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Talkpagemoved&action=edit talkpagemoved]<br> -[[MediaWiki_talk:Talkpagemoved|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:2b630ea0&action=edit f053e191]<br> +[[MediaWiki_talk:2b630ea0|Talk]] </td><td> The corresponding talk page was also moved. </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Talkpagenotmoved&action=edit talkpagenotmoved]<br> -[[MediaWiki_talk:Talkpagenotmoved|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:2282b1ca&action=edit f3b6a64f]<br> +[[MediaWiki_talk:2282b1ca|Talk]] </td><td> The corresponding talk page was &lt;strong&gt;not&lt;/strong&gt; moved. </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Talkpagetext&action=edit talkpagetext]<br> -[[MediaWiki_talk:Talkpagetext|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:45e3f76d&action=edit 6534acb5]<br> +[[MediaWiki_talk:45e3f76d|Talk]] </td><td> &lt;!-- MediaWiki:talkpagetext --&gt; </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Textboxsize&action=edit textboxsize]<br> -[[MediaWiki_talk:Textboxsize|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:607359f2&action=edit 5788df25]<br> +[[MediaWiki_talk:607359f2|Talk]] </td><td> Textbox dimensions </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Textmatches&action=edit textmatches]<br> -[[MediaWiki_talk:Textmatches|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:66571fbc&action=edit 7d66aa0e]<br> +[[MediaWiki_talk:66571fbc|Talk]] </td><td> Page text matches </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Thisisdeleted&action=edit thisisdeleted]<br> -[[MediaWiki_talk:Thisisdeleted|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:e1f36741&action=edit 83f663ed]<br> +[[MediaWiki_talk:e1f36741|Talk]] </td><td> View or restore $1? </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Thumbnail-more&action=edit thumbnail-more]<br> -[[MediaWiki_talk:Thumbnail-more|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:a29f027b&action=edit a299730b]<br> +[[MediaWiki_talk:a29f027b|Talk]] </td><td> Enlarge </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Timezonelegend&action=edit timezonelegend]<br> -[[MediaWiki_talk:Timezonelegend|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:9ced4850&action=edit 36ee6f56]<br> +[[MediaWiki_talk:9ced4850|Talk]] </td><td> Time zone </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Timezoneoffset&action=edit timezoneoffset]<br> -[[MediaWiki_talk:Timezoneoffset|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:ca45a968&action=edit 9dba4eb8]<br> +[[MediaWiki_talk:ca45a968|Talk]] </td><td> Offset </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Timezonetext&action=edit timezonetext]<br> -[[MediaWiki_talk:Timezonetext|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:60bc3c41&action=edit 3f58a2a9]<br> +[[MediaWiki_talk:60bc3c41|Talk]] </td><td> Enter number of hours your local time differs from server time (UTC). </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Titlematches&action=edit titlematches]<br> -[[MediaWiki_talk:Titlematches|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:2618febd&action=edit e3f5384c]<br> +[[MediaWiki_talk:2618febd|Talk]] </td><td> Article title matches </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Toc&action=edit toc]<br> -[[MediaWiki_talk:Toc|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:b8684fcf&action=edit 2a609230]<br> +[[MediaWiki_talk:b8684fcf|Talk]] </td><td> Table of contents </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Toolbox&action=edit toolbox]<br> -[[MediaWiki_talk:Toolbox|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:692107c0&action=edit d75ba923]<br> +[[MediaWiki_talk:692107c0|Talk]] </td><td> Toolbox </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Tooltip-addsection&action=edit tooltip-addsection]<br> -[[MediaWiki_talk:Tooltip-addsection|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:b9116941&action=edit 04ced041]<br> +[[MediaWiki_talk:b9116941|Talk]] </td><td> Add a comment to this page. &#91;alt-+] </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Tooltip-anontalk&action=edit tooltip-anontalk]<br> -[[MediaWiki_talk:Tooltip-anontalk|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:b583d36c&action=edit b987f993]<br> +[[MediaWiki_talk:b583d36c|Talk]] </td><td> Discussion about edits from this ip address &#91;alt-n] </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Tooltip-anonuserpage&action=edit tooltip-anonuserpage]<br> -[[MediaWiki_talk:Tooltip-anonuserpage|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:9efcbe2f&action=edit e3522c89]<br> +[[MediaWiki_talk:9efcbe2f|Talk]] </td><td> The user page for the ip you&#39;re editing as &#91;alt-.] </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Tooltip-article&action=edit tooltip-article]<br> -[[MediaWiki_talk:Tooltip-article|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:2a4b9eea&action=edit f3025f7a]<br> +[[MediaWiki_talk:2a4b9eea|Talk]] </td><td> View the content page &#91;alt-a] </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Tooltip-atom&action=edit tooltip-atom]<br> -[[MediaWiki_talk:Tooltip-atom|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:dcd3ca0c&action=edit e420bf33]<br> +[[MediaWiki_talk:dcd3ca0c|Talk]] </td><td> Atom feed for this page </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Tooltip-compareselectedversions&action=edit tooltip-compareselectedversions]<br> -[[MediaWiki_talk:Tooltip-compareselectedversions|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:d318992a&action=edit d2ae036e]<br> +[[MediaWiki_talk:d318992a|Talk]] </td><td> See the differences between the two selected versions of this page. &#91;alt-v] </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Tooltip-contributions&action=edit tooltip-contributions]<br> -[[MediaWiki_talk:Tooltip-contributions|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:17165e38&action=edit 2039dc44]<br> +[[MediaWiki_talk:17165e38|Talk]] </td><td> View the list of contributions of this user </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Tooltip-currentevents&action=edit tooltip-currentevents]<br> -[[MediaWiki_talk:Tooltip-currentevents|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:32bcbdd6&action=edit d57ba9d6]<br> +[[MediaWiki_talk:32bcbdd6|Talk]] </td><td> Find background information on current events </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Tooltip-delete&action=edit tooltip-delete]<br> -[[MediaWiki_talk:Tooltip-delete|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:b1488dbf&action=edit 742e0c2a]<br> +[[MediaWiki_talk:b1488dbf|Talk]] </td><td> Delete this page &#91;alt-d] </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Tooltip-edit&action=edit tooltip-edit]<br> -[[MediaWiki_talk:Tooltip-edit|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:8c519c79&action=edit 6b354128]<br> +[[MediaWiki_talk:8c519c79|Talk]] </td><td> You can edit this page. Please use the preview button before saving. &#91;alt-e] </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Tooltip-emailuser&action=edit tooltip-emailuser]<br> -[[MediaWiki_talk:Tooltip-emailuser|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:d61f42ac&action=edit 6a333373]<br> +[[MediaWiki_talk:d61f42ac|Talk]] </td><td> Send a mail to this user </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Tooltip-help&action=edit tooltip-help]<br> -[[MediaWiki_talk:Tooltip-help|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:691c7c4c&action=edit 1f2e0a5e]<br> +[[MediaWiki_talk:691c7c4c|Talk]] </td><td> The place to find out. </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Tooltip-history&action=edit tooltip-history]<br> -[[MediaWiki_talk:Tooltip-history|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:da5d5f0e&action=edit 357e85a5]<br> +[[MediaWiki_talk:da5d5f0e|Talk]] </td><td> Past versions of this page, &#91;alt-h] </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Tooltip-login&action=edit tooltip-login]<br> -[[MediaWiki_talk:Tooltip-login|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:e20e86bb&action=edit ff6db008]<br> +[[MediaWiki_talk:e20e86bb|Talk]] </td><td> You are encouraged to log in, it is not mandatory however. &#91;alt-o] </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Tooltip-logout&action=edit tooltip-logout]<br> -[[MediaWiki_talk:Tooltip-logout|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:ab189540&action=edit bd25c34c]<br> +[[MediaWiki_talk:ab189540|Talk]] </td><td> Log out &#91;alt-o] </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Tooltip-mainpage&action=edit tooltip-mainpage]<br> -[[MediaWiki_talk:Tooltip-mainpage|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:8d2a8168&action=edit 9dd4b86c]<br> +[[MediaWiki_talk:8d2a8168|Talk]] </td><td> Visit the Main Page &#91;alt-z] </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Tooltip-minoredit&action=edit tooltip-minoredit]<br> -[[MediaWiki_talk:Tooltip-minoredit|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:7316f250&action=edit 2138d388]<br> +[[MediaWiki_talk:7316f250|Talk]] </td><td> Mark this as a minor edit &#91;alt-i] </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Tooltip-move&action=edit tooltip-move]<br> -[[MediaWiki_talk:Tooltip-move|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:bfe45253&action=edit 00ef7343]<br> +[[MediaWiki_talk:bfe45253|Talk]] </td><td> Move this page &#91;alt-m] </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Tooltip-mycontris&action=edit tooltip-mycontris]<br> -[[MediaWiki_talk:Tooltip-mycontris|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:c2b4d858&action=edit 0bafecde]<br> +[[MediaWiki_talk:c2b4d858|Talk]] </td><td> List of my contributions &#91;alt-y] </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Tooltip-mytalk&action=edit tooltip-mytalk]<br> -[[MediaWiki_talk:Tooltip-mytalk|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:22361e38&action=edit ef887076]<br> +[[MediaWiki_talk:22361e38|Talk]] </td><td> My talk page &#91;alt-n] </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Tooltip-nomove&action=edit tooltip-nomove]<br> -[[MediaWiki_talk:Tooltip-nomove|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:b34e28e3&action=edit 6d66eb21]<br> +[[MediaWiki_talk:b34e28e3|Talk]] </td><td> You don&#39;t have the permissions to move this page </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Tooltip-portal&action=edit tooltip-portal]<br> -[[MediaWiki_talk:Tooltip-portal|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:dc2cdd3b&action=edit 7e77da11]<br> +[[MediaWiki_talk:dc2cdd3b|Talk]] </td><td> About the project, what you can do, where to find things </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Tooltip-preferences&action=edit tooltip-preferences]<br> -[[MediaWiki_talk:Tooltip-preferences|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:2032ad70&action=edit 5611ec73]<br> +[[MediaWiki_talk:2032ad70|Talk]] </td><td> My preferences </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Tooltip-preview&action=edit tooltip-preview]<br> -[[MediaWiki_talk:Tooltip-preview|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:d87a6e27&action=edit 71b5f228]<br> +[[MediaWiki_talk:d87a6e27|Talk]] </td><td> Preview your changes, please use this before saving! &#91;alt-p] </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Tooltip-protect&action=edit tooltip-protect]<br> -[[MediaWiki_talk:Tooltip-protect|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:44edd577&action=edit fa1fc302]<br> +[[MediaWiki_talk:44edd577|Talk]] </td><td> Protect this page &#91;alt-=] </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Tooltip-randompage&action=edit tooltip-randompage]<br> -[[MediaWiki_talk:Tooltip-randompage|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:aa67a70a&action=edit f2eedbde]<br> +[[MediaWiki_talk:aa67a70a|Talk]] </td><td> Load a random page &#91;alt-x] </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Tooltip-recentchanges&action=edit tooltip-recentchanges]<br> -[[MediaWiki_talk:Tooltip-recentchanges|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:a5de539f&action=edit cafd58f7]<br> +[[MediaWiki_talk:a5de539f|Talk]] </td><td> The list of recent changes in the wiki. &#91;alt-r] </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Tooltip-recentchangeslinked&action=edit tooltip-recentchangeslinked]<br> -[[MediaWiki_talk:Tooltip-recentchangeslinked|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:47cd8236&action=edit ccab4d0f]<br> +[[MediaWiki_talk:47cd8236|Talk]] </td><td> Recent changes in pages linking to this page &#91;alt-c] </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Tooltip-rss&action=edit tooltip-rss]<br> -[[MediaWiki_talk:Tooltip-rss|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:82964371&action=edit 53235bed]<br> +[[MediaWiki_talk:82964371|Talk]] </td><td> RSS feed for this page </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Tooltip-save&action=edit tooltip-save]<br> -[[MediaWiki_talk:Tooltip-save|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:ec76631f&action=edit 8ce4a9b9]<br> +[[MediaWiki_talk:ec76631f|Talk]] </td><td> Save your changes &#91;alt-s] </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Tooltip-search&action=edit tooltip-search]<br> -[[MediaWiki_talk:Tooltip-search|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:6d206f30&action=edit a6413695]<br> +[[MediaWiki_talk:6d206f30|Talk]] </td><td> Search this wiki &#91;alt-f] </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Tooltip-sitesupport&action=edit tooltip-sitesupport]<br> -[[MediaWiki_talk:Tooltip-sitesupport|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:65256208&action=edit c2dafa2a]<br> +[[MediaWiki_talk:65256208|Talk]] </td><td> Support Wiktionary </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Tooltip-specialpage&action=edit tooltip-specialpage]<br> -[[MediaWiki_talk:Tooltip-specialpage|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:280cc8fd&action=edit 73f9a677]<br> +[[MediaWiki_talk:280cc8fd|Talk]] </td><td> This is a special page, you can&#39;t edit the page itself. </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Tooltip-specialpages&action=edit tooltip-specialpages]<br> -[[MediaWiki_talk:Tooltip-specialpages|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:7c7223be&action=edit 764993b1]<br> +[[MediaWiki_talk:7c7223be|Talk]] </td><td> List of all special pages &#91;alt-q] </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Tooltip-talk&action=edit tooltip-talk]<br> -[[MediaWiki_talk:Tooltip-talk|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:06fb1d8e&action=edit cb23801a]<br> +[[MediaWiki_talk:06fb1d8e|Talk]] </td><td> Discussion about the content page &#91;alt-t] </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Tooltip-undelete&action=edit tooltip-undelete]<br> -[[MediaWiki_talk:Tooltip-undelete|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:341a8a32&action=edit df81e982]<br> +[[MediaWiki_talk:341a8a32|Talk]] </td><td> Restore the $1 edits done to this page before it was deleted &#91;alt-d] </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Tooltip-unwatch&action=edit tooltip-unwatch]<br> -[[MediaWiki_talk:Tooltip-unwatch|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:377e895f&action=edit 53f18c52]<br> +[[MediaWiki_talk:377e895f|Talk]] </td><td> Remove this page from your watchlist &#91;alt-w] </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Tooltip-upload&action=edit tooltip-upload]<br> -[[MediaWiki_talk:Tooltip-upload|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:b1d4103e&action=edit 6143ca0f]<br> +[[MediaWiki_talk:b1d4103e|Talk]] </td><td> Upload images or media files &#91;alt-u] </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Tooltip-userpage&action=edit tooltip-userpage]<br> -[[MediaWiki_talk:Tooltip-userpage|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:3d8cae2f&action=edit 2b3a6ed0]<br> +[[MediaWiki_talk:3d8cae2f|Talk]] </td><td> My user page &#91;alt-.] </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Tooltip-viewsource&action=edit tooltip-viewsource]<br> -[[MediaWiki_talk:Tooltip-viewsource|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:141dd88c&action=edit 1ef2ea9d]<br> +[[MediaWiki_talk:141dd88c|Talk]] </td><td> This page is protected. You can view its source. &#91;alt-e] </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Tooltip-watch&action=edit tooltip-watch]<br> -[[MediaWiki_talk:Tooltip-watch|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:68a73399&action=edit 07e7b59d]<br> +[[MediaWiki_talk:68a73399|Talk]] </td><td> Add this page to your watchlist &#91;alt-w] </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Tooltip-watchlist&action=edit tooltip-watchlist]<br> -[[MediaWiki_talk:Tooltip-watchlist|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:56a787ff&action=edit e24666fc]<br> +[[MediaWiki_talk:56a787ff|Talk]] </td><td> The list of pages you&#39;re monitoring for changes. &#91;alt-l] </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Tooltip-whatlinkshere&action=edit tooltip-whatlinkshere]<br> -[[MediaWiki_talk:Tooltip-whatlinkshere|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:3fd46bc1&action=edit fbd416b7]<br> +[[MediaWiki_talk:3fd46bc1|Talk]] </td><td> List of all wiki pages that link here &#91;alt-b] </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Uclinks&action=edit uclinks]<br> -[[MediaWiki_talk:Uclinks|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:47514ec5&action=edit c48d8241]<br> +[[MediaWiki_talk:47514ec5|Talk]] </td><td> View the last $1 changes; view the last $2 days. </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Ucnote&action=edit ucnote]<br> -[[MediaWiki_talk:Ucnote|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:6442d081&action=edit 0d69ac51]<br> +[[MediaWiki_talk:6442d081|Talk]] </td><td> Below are this user&#39;s last &lt;b&gt;$1&lt;/b&gt; changes in the last &lt;b&gt;$2&lt;/b&gt; days. </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Uctop&action=edit uctop]<br> -[[MediaWiki_talk:Uctop|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:507d407a&action=edit f9bb6366]<br> +[[MediaWiki_talk:507d407a|Talk]] </td><td> (top) </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Unblockip&action=edit unblockip]<br> -[[MediaWiki_talk:Unblockip|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:8c29ba33&action=edit 2b4842fd]<br> +[[MediaWiki_talk:8c29ba33|Talk]] </td><td> Unblock user </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Unblockiptext&action=edit unblockiptext]<br> -[[MediaWiki_talk:Unblockiptext|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:3a879bdb&action=edit 98f7f719]<br> +[[MediaWiki_talk:3a879bdb|Talk]] </td><td> Use the form below to restore write access to a previously blocked IP address or username. </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Unblocklink&action=edit unblocklink]<br> -[[MediaWiki_talk:Unblocklink|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:e954d285&action=edit 24e7c6e7]<br> +[[MediaWiki_talk:e954d285|Talk]] </td><td> unblock </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Unblocklogentry&action=edit unblocklogentry]<br> -[[MediaWiki_talk:Unblocklogentry|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:5e55820a&action=edit eecac2a2]<br> +[[MediaWiki_talk:5e55820a|Talk]] </td><td> unblocked &quot;$1&quot; </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Undelete&action=edit undelete]<br> -[[MediaWiki_talk:Undelete|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:9b2a9354&action=edit f690005f]<br> +[[MediaWiki_talk:9b2a9354|Talk]] </td><td> Restore deleted page </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Undelete_short&action=edit undelete_short]<br> -[[MediaWiki_talk:Undelete_short|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:85cdbe83&action=edit d4adea3f]<br> +[[MediaWiki_talk:85cdbe83|Talk]] </td><td> Undelete $1 edits </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Undeletearticle&action=edit undeletearticle]<br> -[[MediaWiki_talk:Undeletearticle|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:9ba522b6&action=edit c4635e76]<br> +[[MediaWiki_talk:9ba522b6|Talk]] </td><td> Restore deleted page </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Undeletebtn&action=edit undeletebtn]<br> -[[MediaWiki_talk:Undeletebtn|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:3346239e&action=edit 5dd4b2af]<br> +[[MediaWiki_talk:3346239e|Talk]] </td><td> Restore! </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Undeletedarticle&action=edit undeletedarticle]<br> -[[MediaWiki_talk:Undeletedarticle|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:c2a7eb23&action=edit cf1590b6]<br> +[[MediaWiki_talk:c2a7eb23|Talk]] </td><td> restored &quot;$1&quot; </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Undeletedtext&action=edit undeletedtext]<br> -[[MediaWiki_talk:Undeletedtext|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:40f0db7a&action=edit 5e55bc75]<br> +[[MediaWiki_talk:40f0db7a|Talk]] </td><td> &#91;&#91;$1]] has been successfully restored. See &#91;&#91;Wiktionary:Deletion_log]] for a record of recent deletions and restorations. </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Undeletehistory&action=edit undeletehistory]<br> -[[MediaWiki_talk:Undeletehistory|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:feaa86c6&action=edit a69aad99]<br> +[[MediaWiki_talk:feaa86c6|Talk]] </td><td> If you restore the page, all revisions will be restored to the history. If a new page with the same name has been created since the deletion, the restored revisions will appear in the prior history, and the current revision of the live page will not be automatically replaced. </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Undeletepage&action=edit undeletepage]<br> -[[MediaWiki_talk:Undeletepage|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:9fa6521f&action=edit d650f0a7]<br> +[[MediaWiki_talk:9fa6521f|Talk]] </td><td> View and restore deleted pages </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Undeletepagetext&action=edit undeletepagetext]<br> -[[MediaWiki_talk:Undeletepagetext|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:2e99f66e&action=edit 19b68d7f]<br> +[[MediaWiki_talk:2e99f66e|Talk]] </td><td> The following pages have been deleted but are still in the archive and can be restored. The archive may be periodically cleaned out. </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Undeleterevision&action=edit undeleterevision]<br> -[[MediaWiki_talk:Undeleterevision|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:b097a89b&action=edit 2a3672ef]<br> +[[MediaWiki_talk:b097a89b|Talk]] </td><td> Deleted revision as of $1 </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Undeleterevisions&action=edit undeleterevisions]<br> -[[MediaWiki_talk:Undeleterevisions|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:eb2694a4&action=edit d0cd3f87]<br> +[[MediaWiki_talk:eb2694a4|Talk]] </td><td> $1 revisions archived </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Unexpected&action=edit unexpected]<br> -[[MediaWiki_talk:Unexpected|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:3b67a8c9&action=edit fd2a2764]<br> +[[MediaWiki_talk:3b67a8c9|Talk]] </td><td> Unexpected value: &quot;$1&quot;=&quot;$2&quot;. </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Unlockbtn&action=edit unlockbtn]<br> -[[MediaWiki_talk:Unlockbtn|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:016b68d2&action=edit 74a8f293]<br> +[[MediaWiki_talk:016b68d2|Talk]] </td><td> Unlock database </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Unlockconfirm&action=edit unlockconfirm]<br> -[[MediaWiki_talk:Unlockconfirm|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:fc3080bf&action=edit ded00b4f]<br> +[[MediaWiki_talk:fc3080bf|Talk]] </td><td> Yes, I really want to unlock the database. </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Unlockdb&action=edit unlockdb]<br> -[[MediaWiki_talk:Unlockdb|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:4df98d29&action=edit 68a2c7e3]<br> +[[MediaWiki_talk:4df98d29|Talk]] </td><td> Unlock database </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Unlockdbsuccesssub&action=edit unlockdbsuccesssub]<br> -[[MediaWiki_talk:Unlockdbsuccesssub|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:86605aa9&action=edit eb575aa1]<br> +[[MediaWiki_talk:86605aa9|Talk]] </td><td> Database lock removed </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Unlockdbsuccesstext&action=edit unlockdbsuccesstext]<br> -[[MediaWiki_talk:Unlockdbsuccesstext|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:1896db20&action=edit a7a78572]<br> +[[MediaWiki_talk:1896db20|Talk]] </td><td> The database has been unlocked. </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Unlockdbtext&action=edit unlockdbtext]<br> -[[MediaWiki_talk:Unlockdbtext|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:bd3decce&action=edit 6b32a82f]<br> +[[MediaWiki_talk:bd3decce|Talk]] </td><td> Unlocking the database will restore the ability of all users to edit pages, change their preferences, edit their watchlists, and other things requiring changes in the database. Please confirm that this is what you intend to do. </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Unprotect&action=edit unprotect]<br> -[[MediaWiki_talk:Unprotect|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:d180e0d9&action=edit 116b2a3b]<br> +[[MediaWiki_talk:d180e0d9|Talk]] </td><td> Unprotect </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Unprotectcomment&action=edit unprotectcomment]<br> -[[MediaWiki_talk:Unprotectcomment|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:affff3c2&action=edit a4439c30]<br> +[[MediaWiki_talk:affff3c2|Talk]] </td><td> Reason for unprotecting </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Unprotectedarticle&action=edit unprotectedarticle]<br> -[[MediaWiki_talk:Unprotectedarticle|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:b8d58125&action=edit 66029ebc]<br> +[[MediaWiki_talk:b8d58125|Talk]] </td><td> unprotected &#91;&#91;$1]] </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Unprotectsub&action=edit unprotectsub]<br> -[[MediaWiki_talk:Unprotectsub|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:b15ab8cb&action=edit c77cef4c]<br> +[[MediaWiki_talk:b15ab8cb|Talk]] </td><td> (Unprotecting &quot;$1&quot;) </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Unprotectthispage&action=edit unprotectthispage]<br> -[[MediaWiki_talk:Unprotectthispage|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:10782968&action=edit caa31f1e]<br> +[[MediaWiki_talk:10782968|Talk]] </td><td> Unprotect this page </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Unusedimages&action=edit unusedimages]<br> -[[MediaWiki_talk:Unusedimages|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:5ed67176&action=edit e17373a9]<br> +[[MediaWiki_talk:5ed67176|Talk]] </td><td> Unused images </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Unusedimagestext&action=edit unusedimagestext]<br> -[[MediaWiki_talk:Unusedimagestext|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:373709c4&action=edit 13626cea]<br> +[[MediaWiki_talk:373709c4|Talk]] </td><td> &lt;p&gt;Please note that other web sites may link to an image with a direct URL, and so may still be listed here despite being in active use. </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Unwatch&action=edit unwatch]<br> -[[MediaWiki_talk:Unwatch|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:51055a00&action=edit f6f282e9]<br> +[[MediaWiki_talk:51055a00|Talk]] </td><td> Unwatch </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Unwatchthispage&action=edit unwatchthispage]<br> -[[MediaWiki_talk:Unwatchthispage|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:e21d3614&action=edit c7d1cd1e]<br> +[[MediaWiki_talk:e21d3614|Talk]] </td><td> Stop watching </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Updated&action=edit updated]<br> -[[MediaWiki_talk:Updated|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:f2f8570d&action=edit 13a1891a]<br> +[[MediaWiki_talk:f2f8570d|Talk]] </td><td> (Updated) </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Upload&action=edit upload]<br> -[[MediaWiki_talk:Upload|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:8bdf057f&action=edit bb73aaaf]<br> +[[MediaWiki_talk:8bdf057f|Talk]] </td><td> Upload file </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Uploadbtn&action=edit uploadbtn]<br> -[[MediaWiki_talk:Uploadbtn|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:0238951b&action=edit 6be1c689]<br> +[[MediaWiki_talk:0238951b|Talk]] </td><td> Upload file </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Uploaddisabled&action=edit uploaddisabled]<br> -[[MediaWiki_talk:Uploaddisabled|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:88f59c5a&action=edit 693f4b51]<br> +[[MediaWiki_talk:88f59c5a|Talk]] </td><td> Sorry, uploading is disabled. </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Uploadedfiles&action=edit uploadedfiles]<br> -[[MediaWiki_talk:Uploadedfiles|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:7b8969f2&action=edit 7d4f03ff]<br> +[[MediaWiki_talk:7b8969f2|Talk]] </td><td> Uploaded files </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Uploadedimage&action=edit uploadedimage]<br> -[[MediaWiki_talk:Uploadedimage|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:954c2a11&action=edit e57056a0]<br> +[[MediaWiki_talk:954c2a11|Talk]] </td><td> uploaded &quot;$1&quot; </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Uploaderror&action=edit uploaderror]<br> -[[MediaWiki_talk:Uploaderror|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:304f9593&action=edit 8f1603bd]<br> +[[MediaWiki_talk:304f9593|Talk]] </td><td> Upload error </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Uploadfile&action=edit uploadfile]<br> -[[MediaWiki_talk:Uploadfile|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:9e71a62c&action=edit 40d977b5]<br> +[[MediaWiki_talk:9e71a62c|Talk]] </td><td> Upload images, sounds, documents etc. </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Uploadlink&action=edit uploadlink]<br> -[[MediaWiki_talk:Uploadlink|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:955e39f9&action=edit 0bf93eec]<br> +[[MediaWiki_talk:955e39f9|Talk]] </td><td> Upload images </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Uploadlog&action=edit uploadlog]<br> -[[MediaWiki_talk:Uploadlog|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:0d39c428&action=edit 0d49abe6]<br> +[[MediaWiki_talk:0d39c428|Talk]] </td><td> upload log </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Uploadlogpage&action=edit uploadlogpage]<br> -[[MediaWiki_talk:Uploadlogpage|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:1f68a0e7&action=edit 87611d30]<br> +[[MediaWiki_talk:1f68a0e7|Talk]] </td><td> Upload_log </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Uploadlogpagetext&action=edit uploadlogpagetext]<br> -[[MediaWiki_talk:Uploadlogpagetext|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:2a430331&action=edit 8aa7bf47]<br> +[[MediaWiki_talk:2a430331|Talk]] </td><td> Below is a list of the most recent file uploads. All times shown are server time (UTC). @@ -5152,25 +5152,25 @@ All times shown are server time (UTC). &lt;/ul&gt; </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Uploadnologin&action=edit uploadnologin]<br> -[[MediaWiki_talk:Uploadnologin|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:92dd3bc9&action=edit d2d8bd08]<br> +[[MediaWiki_talk:92dd3bc9|Talk]] </td><td> Not logged in </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Uploadnologintext&action=edit uploadnologintext]<br> -[[MediaWiki_talk:Uploadnologintext|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:fecdb77e&action=edit 09b01f51]<br> +[[MediaWiki_talk:fecdb77e|Talk]] </td><td> You must be &lt;a href=&quot;/wiki/Special:Userlogin&quot;&gt;logged in&lt;/a&gt; to upload files. </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Uploadtext&action=edit uploadtext]<br> -[[MediaWiki_talk:Uploadtext|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:7804cb84&action=edit 85bb3caa]<br> +[[MediaWiki_talk:7804cb84|Talk]] </td><td> &lt;strong&gt;STOP!&lt;/strong&gt; Before you upload here, make sure to read and follow the &lt;a href=&quot;/wiki/Special:Image_use_policy&quot;&gt;image use policy&lt;/a&gt;. @@ -5201,404 +5201,404 @@ or &lt;b&gt;&#91;&#91;Media:file.ogg]]&lt;/b&gt; for sou delete your uploads if they think it serves the project, and you may be blocked from uploading if you abuse the system. </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Uploadwarning&action=edit uploadwarning]<br> -[[MediaWiki_talk:Uploadwarning|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:fb3ef2ae&action=edit 8aae8210]<br> +[[MediaWiki_talk:fb3ef2ae|Talk]] </td><td> Upload warning </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:User_rights_set&action=edit user_rights_set]<br> -[[MediaWiki_talk:User_rights_set|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:a5430c9b&action=edit 6a080eb0]<br> +[[MediaWiki_talk:a5430c9b|Talk]] </td><td> &lt;b&gt;User rights for &quot;$1&quot; updated&lt;/b&gt; </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Usercssjs&action=edit usercssjs]<br> -[[MediaWiki_talk:Usercssjs|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:89b73748&action=edit 8b23a826]<br> +[[MediaWiki_talk:89b73748|Talk]] </td><td> &#39;&#39;&#39;Note:&#39;&#39;&#39; After saving, you have to tell your bowser to get the new version: &#39;&#39;&#39;Mozilla:&#39;&#39;&#39; click &#39;&#39;reload&#39;&#39;(or &#39;&#39;ctrl-r&#39;&#39;), &#39;&#39;&#39;IE / Opera:&#39;&#39;&#39; &#39;&#39;ctrl-f5&#39;&#39;, &#39;&#39;&#39;Safari:&#39;&#39;&#39; &#39;&#39;cmd-r&#39;&#39;, &#39;&#39;&#39;Konqueror&#39;&#39;&#39; &#39;&#39;ctrl-r&#39;&#39;. </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Usercssjsyoucanpreview&action=edit usercssjsyoucanpreview]<br> -[[MediaWiki_talk:Usercssjsyoucanpreview|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:1656c92b&action=edit 97bd6e75]<br> +[[MediaWiki_talk:1656c92b|Talk]] </td><td> &lt;strong&gt;Tip:&lt;/strong&gt; Use the &#39;Show preview&#39; button to test your new css/js before saving. </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Usercsspreview&action=edit usercsspreview]<br> -[[MediaWiki_talk:Usercsspreview|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:9f62117d&action=edit b51c3667]<br> +[[MediaWiki_talk:9f62117d|Talk]] </td><td> &#39;&#39;&#39;Remember that you are only previewing your user css, it has not yet been saved!&#39;&#39;&#39; </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Userexists&action=edit userexists]<br> -[[MediaWiki_talk:Userexists|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:77541367&action=edit a49220af]<br> +[[MediaWiki_talk:77541367|Talk]] </td><td> The user name you entered is already in use. Please choose a different name. </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Userjspreview&action=edit userjspreview]<br> -[[MediaWiki_talk:Userjspreview|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:eca4b211&action=edit 2e8efec0]<br> +[[MediaWiki_talk:eca4b211|Talk]] </td><td> &#39;&#39;&#39;Remember that you are only testing/previewing your user javascript, it has not yet been saved!&#39;&#39;&#39; </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Userlogin&action=edit userlogin]<br> -[[MediaWiki_talk:Userlogin|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:49c670f4&action=edit eb0f23d8]<br> +[[MediaWiki_talk:49c670f4|Talk]] </td><td> Log in </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Userlogout&action=edit userlogout]<br> -[[MediaWiki_talk:Userlogout|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:fb3467d9&action=edit 271a962f]<br> +[[MediaWiki_talk:fb3467d9|Talk]] </td><td> Log out </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Usermailererror&action=edit usermailererror]<br> -[[MediaWiki_talk:Usermailererror|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:e1881ca2&action=edit 0e3f35e1]<br> +[[MediaWiki_talk:e1881ca2|Talk]] </td><td> Mail object returned error: </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Userpage&action=edit userpage]<br> -[[MediaWiki_talk:Userpage|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:823fdaf7&action=edit ea81d010]<br> +[[MediaWiki_talk:823fdaf7|Talk]] </td><td> View user page </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Userstats&action=edit userstats]<br> -[[MediaWiki_talk:Userstats|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:f25ef873&action=edit 2ab9a2af]<br> +[[MediaWiki_talk:f25ef873|Talk]] </td><td> User statistics </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Userstatstext&action=edit userstatstext]<br> -[[MediaWiki_talk:Userstatstext|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:b704c939&action=edit 903f135d]<br> +[[MediaWiki_talk:b704c939|Talk]] </td><td> There are &#39;&#39;&#39;$1&#39;&#39;&#39; registered users. &#39;&#39;&#39;$2&#39;&#39;&#39; of these are administrators (see $3). </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Version&action=edit version]<br> -[[MediaWiki_talk:Version|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:2da600bf&action=edit c692273d]<br> +[[MediaWiki_talk:2da600bf|Talk]] </td><td> Version </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Viewcount&action=edit viewcount]<br> -[[MediaWiki_talk:Viewcount|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:cd20ed80&action=edit 9204f6f2]<br> +[[MediaWiki_talk:cd20ed80|Talk]] </td><td> This page has been accessed $1 times. </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Viewprevnext&action=edit viewprevnext]<br> -[[MediaWiki_talk:Viewprevnext|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:b3a212e8&action=edit 023f0549]<br> +[[MediaWiki_talk:b3a212e8|Talk]] </td><td> View ($1) ($2) ($3). </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Viewsource&action=edit viewsource]<br> -[[MediaWiki_talk:Viewsource|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:1affdb1e&action=edit db9e2eba]<br> +[[MediaWiki_talk:1affdb1e|Talk]] </td><td> View source </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Viewtalkpage&action=edit viewtalkpage]<br> -[[MediaWiki_talk:Viewtalkpage|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:f6336004&action=edit 2e250bd9]<br> +[[MediaWiki_talk:f6336004|Talk]] </td><td> View discussion </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Wantedpages&action=edit wantedpages]<br> -[[MediaWiki_talk:Wantedpages|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:7da05431&action=edit 4d2466a3]<br> +[[MediaWiki_talk:7da05431|Talk]] </td><td> Wanted pages </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Watch&action=edit watch]<br> -[[MediaWiki_talk:Watch|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:d91ebf58&action=edit 292b0901]<br> +[[MediaWiki_talk:d91ebf58|Talk]] </td><td> Watch </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Watchdetails&action=edit watchdetails]<br> -[[MediaWiki_talk:Watchdetails|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:d815e414&action=edit ddfeb02c]<br> +[[MediaWiki_talk:d815e414|Talk]] </td><td> ($1 pages watched not counting talk pages; $2 total pages edited since cutoff; $3... &lt;a href=&#39;$4&#39;&gt;show and edit complete list&lt;/a&gt;.) </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Watcheditlist&action=edit watcheditlist]<br> -[[MediaWiki_talk:Watcheditlist|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:780e4559&action=edit d7d3bb79]<br> +[[MediaWiki_talk:780e4559|Talk]] </td><td> Here&#39;s an alphabetical list of your watched pages. Check the boxes of pages you want to remove from your watchlist and click the &#39;remove checked&#39; button at the bottom of the screen. </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Watchlist&action=edit watchlist]<br> -[[MediaWiki_talk:Watchlist|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:48a616d9&action=edit db14f0be]<br> +[[MediaWiki_talk:48a616d9|Talk]] </td><td> My watchlist </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Watchlistcontains&action=edit watchlistcontains]<br> -[[MediaWiki_talk:Watchlistcontains|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:690e08f8&action=edit 37074879]<br> +[[MediaWiki_talk:690e08f8|Talk]] </td><td> Your watchlist contains $1 pages. </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Watchlistsub&action=edit watchlistsub]<br> -[[MediaWiki_talk:Watchlistsub|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:913a8eb4&action=edit 1d490f51]<br> +[[MediaWiki_talk:913a8eb4|Talk]] </td><td> (for user &quot;$1&quot;) </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Watchmethod-list&action=edit watchmethod-list]<br> -[[MediaWiki_talk:Watchmethod-list|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:983ce9b1&action=edit b5396cea]<br> +[[MediaWiki_talk:983ce9b1|Talk]] </td><td> checking watched pages for recent edits </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Watchmethod-recent&action=edit watchmethod-recent]<br> -[[MediaWiki_talk:Watchmethod-recent|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:2e5e56e2&action=edit c69b87d2]<br> +[[MediaWiki_talk:2e5e56e2|Talk]] </td><td> checking recent edits for watched pages </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Watchnochange&action=edit watchnochange]<br> -[[MediaWiki_talk:Watchnochange|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:cdd40087&action=edit 24353550]<br> +[[MediaWiki_talk:cdd40087|Talk]] </td><td> None of your watched items were edited in the time period displayed. </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Watchnologin&action=edit watchnologin]<br> -[[MediaWiki_talk:Watchnologin|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:ec51da09&action=edit c873a8c3]<br> +[[MediaWiki_talk:ec51da09|Talk]] </td><td> Not logged in </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Watchnologintext&action=edit watchnologintext]<br> -[[MediaWiki_talk:Watchnologintext|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:7870af11&action=edit 080c4da9]<br> +[[MediaWiki_talk:7870af11|Talk]] </td><td> You must be &lt;a href=&quot;/wiki/Special:Userlogin&quot;&gt;logged in&lt;/a&gt; to modify your watchlist. </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Watchthis&action=edit watchthis]<br> -[[MediaWiki_talk:Watchthis|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:2fa65d73&action=edit 89758668]<br> +[[MediaWiki_talk:2fa65d73|Talk]] </td><td> Watch this page </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Watchthispage&action=edit watchthispage]<br> -[[MediaWiki_talk:Watchthispage|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:79260dc8&action=edit d94c2857]<br> +[[MediaWiki_talk:79260dc8|Talk]] </td><td> Watch this page </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Welcomecreation&action=edit welcomecreation]<br> -[[MediaWiki_talk:Welcomecreation|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:622a355f&action=edit 5b3750aa]<br> +[[MediaWiki_talk:622a355f|Talk]] </td><td> &lt;h2&gt;Welcome, $1!&lt;/h2&gt;&lt;p&gt;Your account has been created. Don&#39;t forget to change your Wiktionary preferences. </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Whatlinkshere&action=edit whatlinkshere]<br> -[[MediaWiki_talk:Whatlinkshere|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:bde1fbba&action=edit 28d0e2a8]<br> +[[MediaWiki_talk:bde1fbba|Talk]] </td><td> What links here </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Whitelistacctext&action=edit whitelistacctext]<br> -[[MediaWiki_talk:Whitelistacctext|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:53f0999a&action=edit b3775e04]<br> +[[MediaWiki_talk:53f0999a|Talk]] </td><td> To be allowed to create accounts in this Wiki you have to &#91;&#91;Special:Userlogin&#124;log]] in and have the appropriate permissions. </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Whitelistacctitle&action=edit whitelistacctitle]<br> -[[MediaWiki_talk:Whitelistacctitle|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:901574b0&action=edit 13f7d937]<br> +[[MediaWiki_talk:901574b0|Talk]] </td><td> You are not allowed to create an account </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Whitelistedittext&action=edit whitelistedittext]<br> -[[MediaWiki_talk:Whitelistedittext|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:28589651&action=edit 8d93b543]<br> +[[MediaWiki_talk:28589651|Talk]] </td><td> You have to &#91;&#91;Special:Userlogin&#124;login]] to edit pages. </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Whitelistedittitle&action=edit whitelistedittitle]<br> -[[MediaWiki_talk:Whitelistedittitle|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:d4e0db33&action=edit 76713eb6]<br> +[[MediaWiki_talk:d4e0db33|Talk]] </td><td> Login required to edit </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Whitelistreadtext&action=edit whitelistreadtext]<br> -[[MediaWiki_talk:Whitelistreadtext|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:7046be67&action=edit 3c46b4af]<br> +[[MediaWiki_talk:7046be67|Talk]] </td><td> You have to &#91;&#91;Special:Userlogin&#124;login]] to read pages. </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Whitelistreadtitle&action=edit whitelistreadtitle]<br> -[[MediaWiki_talk:Whitelistreadtitle|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:56f7b6c8&action=edit 27809c2a]<br> +[[MediaWiki_talk:56f7b6c8|Talk]] </td><td> Login required to read </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Wikipediapage&action=edit wikipediapage]<br> -[[MediaWiki_talk:Wikipediapage|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:8815fbb3&action=edit 80a9ff8d]<br> +[[MediaWiki_talk:8815fbb3|Talk]] </td><td> View project page </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Wikititlesuffix&action=edit wikititlesuffix]<br> -[[MediaWiki_talk:Wikititlesuffix|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:d00a5142&action=edit 937cdab5]<br> +[[MediaWiki_talk:d00a5142|Talk]] </td><td> Wiktionary </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Wlnote&action=edit wlnote]<br> -[[MediaWiki_talk:Wlnote|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:a7ee1c5c&action=edit b6ea8219]<br> +[[MediaWiki_talk:a7ee1c5c|Talk]] </td><td> Below are the last $1 changes in the last &lt;b&gt;$2&lt;/b&gt; hours. </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Wlsaved&action=edit wlsaved]<br> -[[MediaWiki_talk:Wlsaved|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:deb21c59&action=edit 843af08d]<br> +[[MediaWiki_talk:deb21c59|Talk]] </td><td> This is a saved version of your watchlist. </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Wlshowlast&action=edit wlshowlast]<br> -[[MediaWiki_talk:Wlshowlast|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:e77517fa&action=edit 89821357]<br> +[[MediaWiki_talk:e77517fa|Talk]] </td><td> Show last $1 hours $2 days $3 </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Wrong_wfQuery_params&action=edit wrong_wfQuery_params]<br> -[[MediaWiki_talk:Wrong_wfQuery_params|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:a9b62164&action=edit d526a8a6]<br> +[[MediaWiki_talk:a9b62164|Talk]] </td><td> Incorrect parameters to wfQuery()&lt;br /&gt; Function: $1&lt;br /&gt; Query: $2 </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Wrongpassword&action=edit wrongpassword]<br> -[[MediaWiki_talk:Wrongpassword|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:3314dacf&action=edit d8ecf7db]<br> +[[MediaWiki_talk:3314dacf|Talk]] </td><td> The password you entered is incorrect. Please try again. </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Yourdiff&action=edit yourdiff]<br> -[[MediaWiki_talk:Yourdiff|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:2e0414f0&action=edit 4fe151ac]<br> +[[MediaWiki_talk:2e0414f0|Talk]] </td><td> Differences </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Youremail&action=edit youremail]<br> -[[MediaWiki_talk:Youremail|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:0f5ab9c9&action=edit 0a98c2ad]<br> +[[MediaWiki_talk:0f5ab9c9|Talk]] </td><td> Your email* </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Yourname&action=edit yourname]<br> -[[MediaWiki_talk:Yourname|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:f495043e&action=edit 32d0e33a]<br> +[[MediaWiki_talk:f495043e|Talk]] </td><td> Your user name </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Yournick&action=edit yournick]<br> -[[MediaWiki_talk:Yournick|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:6aa78968&action=edit f8b28bd9]<br> +[[MediaWiki_talk:6aa78968|Talk]] </td><td> Your nickname (for signatures) </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Yourpassword&action=edit yourpassword]<br> -[[MediaWiki_talk:Yourpassword|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:13a44203&action=edit b48cf014]<br> +[[MediaWiki_talk:13a44203|Talk]] </td><td> Your password </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Yourpasswordagain&action=edit yourpasswordagain]<br> -[[MediaWiki_talk:Yourpasswordagain|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:c0ad7f05&action=edit e14a732b]<br> +[[MediaWiki_talk:c0ad7f05|Talk]] </td><td> Retype password </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Yourrealname&action=edit yourrealname]<br> -[[MediaWiki_talk:Yourrealname|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:519f30b5&action=edit 7fc3e5b1]<br> +[[MediaWiki_talk:519f30b5|Talk]] </td><td> Your real name* </td><td> - + </td></tr><tr><td> -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Yourtext&action=edit yourtext]<br> -[[MediaWiki_talk:Yourtext|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:f98650e0&action=edit 5b5af4ea]<br> +[[MediaWiki_talk:f98650e0|Talk]] </td><td> Your text </td><td> - + </td></tr></table> \ No newline at end of file diff --git a/tests/parser/preprocess/All_system_messages.txt b/tests/parser/preprocess/All_system_messages.txt index cdc223a9c7..3212ae106b 100644 --- a/tests/parser/preprocess/All_system_messages.txt +++ b/tests/parser/preprocess/All_system_messages.txt @@ -1,4 +1,4 @@ -{{int:allmessagestext}} +{{int:57dbe26a}}
        '''Name''' @@ -7,351 +7,351 @@ '''Current text'''
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:1movedto2&action=edit 1movedto2]
        -[[MediaWiki_talk:1movedto2|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:f9cca05b&action=edit f9cca05b]
        +[[MediaWiki_talk:f9cca05b|Talk]]
        $1 moved to $2 -{{int:1movedto2}} +{{int:f9cca05b}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Monobook.css&action=edit Monobook.css]
        -[[MediaWiki_talk:Monobook.css|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:ed065216&action=edit ed065216]
        +[[MediaWiki_talk:ed065216|Talk]]
        /* edit this file to customize the monobook skin for the entire site */ -{{int:Monobook.css}} +{{int:ed065216}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:About&action=edit about]
        -[[MediaWiki_talk:About|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:6b21fb79&action=edit 5780daf6]
        +[[MediaWiki_talk:6b21fb79|Talk]]
        About -{{int:About}} +{{int:6b21fb79}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Aboutpage&action=edit aboutpage]
        -[[MediaWiki_talk:Aboutpage|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:54f19e13&action=edit 4bd9b804]
        +[[MediaWiki_talk:54f19e13|Talk]]
        Wiktionary:About -{{int:Aboutpage}} +{{int:54f19e13}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Aboutwikipedia&action=edit aboutwikipedia]
        -[[MediaWiki_talk:Aboutwikipedia|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:8e17cc1b&action=edit 7be96c69]
        +[[MediaWiki_talk:8e17cc1b|Talk]]
        About Wiktionary -{{int:Aboutwikipedia}} +{{int:8e17cc1b}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Accesskey-addsection&action=edit accesskey-addsection]
        -[[MediaWiki_talk:Accesskey-addsection|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:4b7f0428&action=edit 69f5ae1e]
        +[[MediaWiki_talk:4b7f0428|Talk]]
        + -{{int:Accesskey-addsection}} +{{int:4b7f0428}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Accesskey-anontalk&action=edit accesskey-anontalk]
        -[[MediaWiki_talk:Accesskey-anontalk|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:b18a7fba&action=edit ba8c9426]
        +[[MediaWiki_talk:b18a7fba|Talk]]
        n -{{int:Accesskey-anontalk}} +{{int:b18a7fba}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Accesskey-anonuserpage&action=edit accesskey-anonuserpage]
        -[[MediaWiki_talk:Accesskey-anonuserpage|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:3cfd08b4&action=edit 098256f5]
        +[[MediaWiki_talk:3cfd08b4|Talk]]
        . -{{int:Accesskey-anonuserpage}} +{{int:3cfd08b4}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Accesskey-article&action=edit accesskey-article]
        -[[MediaWiki_talk:Accesskey-article|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:d00706c5&action=edit 7638fc38]
        +[[MediaWiki_talk:d00706c5|Talk]]
        a -{{int:Accesskey-article}} +{{int:d00706c5}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Accesskey-compareselectedversions&action=edit accesskey-compareselectedversions]
        -[[MediaWiki_talk:Accesskey-compareselectedversions|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:7bbcdfc9&action=edit 840afed8]
        +[[MediaWiki_talk:7bbcdfc9|Talk]]
        v -{{int:Accesskey-compareselectedversions}} +{{int:7bbcdfc9}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Accesskey-contributions&action=edit accesskey-contributions]
        -[[MediaWiki_talk:Accesskey-contributions|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:0750ed4b&action=edit 9703e6d9]
        +[[MediaWiki_talk:0750ed4b|Talk]]
        &lt;accesskey-contributions&gt; -{{int:Accesskey-contributions}} +{{int:0750ed4b}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Accesskey-currentevents&action=edit accesskey-currentevents]
        -[[MediaWiki_talk:Accesskey-currentevents|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:602dda6f&action=edit 7e13f963]
        +[[MediaWiki_talk:602dda6f|Talk]]
        &lt;accesskey-currentevents&gt; -{{int:Accesskey-currentevents}} +{{int:602dda6f}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Accesskey-delete&action=edit accesskey-delete]
        -[[MediaWiki_talk:Accesskey-delete|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:a395260e&action=edit be42f966]
        +[[MediaWiki_talk:a395260e|Talk]]
        d -{{int:Accesskey-delete}} +{{int:a395260e}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Accesskey-edit&action=edit accesskey-edit]
        -[[MediaWiki_talk:Accesskey-edit|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:f89faca3&action=edit 89888a71]
        +[[MediaWiki_talk:f89faca3|Talk]]
        e -{{int:Accesskey-edit}} +{{int:f89faca3}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Accesskey-emailuser&action=edit accesskey-emailuser]
        -[[MediaWiki_talk:Accesskey-emailuser|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:bc7a3e78&action=edit 7b2ee991]
        +[[MediaWiki_talk:bc7a3e78|Talk]]
        &lt;accesskey-emailuser&gt; -{{int:Accesskey-emailuser}} +{{int:bc7a3e78}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Accesskey-help&action=edit accesskey-help]
        -[[MediaWiki_talk:Accesskey-help|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:9e9d3613&action=edit fe788279]
        +[[MediaWiki_talk:9e9d3613|Talk]]
        &lt;accesskey-help&gt; -{{int:Accesskey-help}} +{{int:9e9d3613}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Accesskey-history&action=edit accesskey-history]
        -[[MediaWiki_talk:Accesskey-history|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:7ea0e322&action=edit 4bb7a2e4]
        +[[MediaWiki_talk:7ea0e322|Talk]]
        h -{{int:Accesskey-history}} +{{int:7ea0e322}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Accesskey-login&action=edit accesskey-login]
        -[[MediaWiki_talk:Accesskey-login|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:4204d3db&action=edit 725cb6bf]
        +[[MediaWiki_talk:4204d3db|Talk]]
        o -{{int:Accesskey-login}} +{{int:4204d3db}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Accesskey-logout&action=edit accesskey-logout]
        -[[MediaWiki_talk:Accesskey-logout|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:2a92e37a&action=edit a1de2049]
        +[[MediaWiki_talk:2a92e37a|Talk]]
        o -{{int:Accesskey-logout}} +{{int:2a92e37a}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Accesskey-mainpage&action=edit accesskey-mainpage]
        -[[MediaWiki_talk:Accesskey-mainpage|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:68d388ec&action=edit 0542623d]
        +[[MediaWiki_talk:68d388ec|Talk]]
        z -{{int:Accesskey-mainpage}} +{{int:68d388ec}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Accesskey-minoredit&action=edit accesskey-minoredit]
        -[[MediaWiki_talk:Accesskey-minoredit|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:18fe1121&action=edit e3f25b72]
        +[[MediaWiki_talk:18fe1121|Talk]]
        i -{{int:Accesskey-minoredit}} +{{int:18fe1121}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Accesskey-move&action=edit accesskey-move]
        -[[MediaWiki_talk:Accesskey-move|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:6d15983f&action=edit c9d212d3]
        +[[MediaWiki_talk:6d15983f|Talk]]
        m -{{int:Accesskey-move}} +{{int:6d15983f}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Accesskey-mycontris&action=edit accesskey-mycontris]
        -[[MediaWiki_talk:Accesskey-mycontris|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:ecaba7f4&action=edit ac57178f]
        +[[MediaWiki_talk:ecaba7f4|Talk]]
        y -{{int:Accesskey-mycontris}} +{{int:ecaba7f4}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Accesskey-mytalk&action=edit accesskey-mytalk]
        -[[MediaWiki_talk:Accesskey-mytalk|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:711aec5d&action=edit 6d3ae9a7]
        +[[MediaWiki_talk:711aec5d|Talk]]
        n -{{int:Accesskey-mytalk}} +{{int:711aec5d}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Accesskey-portal&action=edit accesskey-portal]
        -[[MediaWiki_talk:Accesskey-portal|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:9905f56f&action=edit 0a376cab]
        +[[MediaWiki_talk:9905f56f|Talk]]
        &lt;accesskey-portal&gt; -{{int:Accesskey-portal}} +{{int:9905f56f}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Accesskey-preferences&action=edit accesskey-preferences]
        -[[MediaWiki_talk:Accesskey-preferences|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:9305eef3&action=edit e72912be]
        +[[MediaWiki_talk:9305eef3|Talk]]
        &lt;accesskey-preferences&gt; -{{int:Accesskey-preferences}} +{{int:9305eef3}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Accesskey-preview&action=edit accesskey-preview]
        -[[MediaWiki_talk:Accesskey-preview|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:186ee8a4&action=edit cef51de6]
        +[[MediaWiki_talk:186ee8a4|Talk]]
        p -{{int:Accesskey-preview}} +{{int:186ee8a4}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Accesskey-protect&action=edit accesskey-protect]
        -[[MediaWiki_talk:Accesskey-protect|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:676f28e9&action=edit 0f10afb5]
        +[[MediaWiki_talk:676f28e9|Talk]]
        = -{{int:Accesskey-protect}} +{{int:676f28e9}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Accesskey-randompage&action=edit accesskey-randompage]
        -[[MediaWiki_talk:Accesskey-randompage|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:1a09f43e&action=edit 46a4e82c]
        +[[MediaWiki_talk:1a09f43e|Talk]]
        x -{{int:Accesskey-randompage}} +{{int:1a09f43e}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Accesskey-recentchanges&action=edit accesskey-recentchanges]
        -[[MediaWiki_talk:Accesskey-recentchanges|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:1306607d&action=edit 025b667f]
        +[[MediaWiki_talk:1306607d|Talk]]
        r -{{int:Accesskey-recentchanges}} +{{int:1306607d}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Accesskey-recentchangeslinked&action=edit accesskey-recentchangeslinked]
        -[[MediaWiki_talk:Accesskey-recentchangeslinked|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:e14390c4&action=edit 600e8a44]
        +[[MediaWiki_talk:e14390c4|Talk]]
        c -{{int:Accesskey-recentchangeslinked}} +{{int:e14390c4}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Accesskey-save&action=edit accesskey-save]
        -[[MediaWiki_talk:Accesskey-save|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:59b75a10&action=edit 0fde75cd]
        +[[MediaWiki_talk:59b75a10|Talk]]
        s -{{int:Accesskey-save}} +{{int:59b75a10}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Accesskey-search&action=edit accesskey-search]
        -[[MediaWiki_talk:Accesskey-search|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:0b6fd89e&action=edit 5163ba5b]
        +[[MediaWiki_talk:0b6fd89e|Talk]]
        f -{{int:Accesskey-search}} +{{int:0b6fd89e}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Accesskey-sitesupport&action=edit accesskey-sitesupport]
        -[[MediaWiki_talk:Accesskey-sitesupport|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:ba9e0fc4&action=edit f70dbcff]
        +[[MediaWiki_talk:ba9e0fc4|Talk]]
        &lt;accesskey-sitesupport&gt; -{{int:Accesskey-sitesupport}} +{{int:ba9e0fc4}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Accesskey-specialpage&action=edit accesskey-specialpage]
        -[[MediaWiki_talk:Accesskey-specialpage|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:b932fee9&action=edit 8949be8d]
        +[[MediaWiki_talk:b932fee9|Talk]]
        &lt;accesskey-specialpage&gt; -{{int:Accesskey-specialpage}} +{{int:b932fee9}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Accesskey-specialpages&action=edit accesskey-specialpages]
        -[[MediaWiki_talk:Accesskey-specialpages|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:1ac10275&action=edit 59a5e487]
        +[[MediaWiki_talk:1ac10275|Talk]]
        q -{{int:Accesskey-specialpages}} +{{int:1ac10275}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Accesskey-talk&action=edit accesskey-talk]
        -[[MediaWiki_talk:Accesskey-talk|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:116fd1b0&action=edit a83f2193]
        +[[MediaWiki_talk:116fd1b0|Talk]]
        t -{{int:Accesskey-talk}} +{{int:116fd1b0}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Accesskey-undelete&action=edit accesskey-undelete]
        -[[MediaWiki_talk:Accesskey-undelete|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:ec06f1a7&action=edit 5894e42e]
        +[[MediaWiki_talk:ec06f1a7|Talk]]
        d -{{int:Accesskey-undelete}} +{{int:ec06f1a7}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Accesskey-unwatch&action=edit accesskey-unwatch]
        -[[MediaWiki_talk:Accesskey-unwatch|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:7f99a8c2&action=edit 2a2a9d13]
        +[[MediaWiki_talk:7f99a8c2|Talk]]
        w -{{int:Accesskey-unwatch}} +{{int:7f99a8c2}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Accesskey-upload&action=edit accesskey-upload]
        -[[MediaWiki_talk:Accesskey-upload|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:903549e8&action=edit 3a1dcde8]
        +[[MediaWiki_talk:903549e8|Talk]]
        u -{{int:Accesskey-upload}} +{{int:903549e8}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Accesskey-userpage&action=edit accesskey-userpage]
        -[[MediaWiki_talk:Accesskey-userpage|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:8f696cc0&action=edit be76a8c2]
        +[[MediaWiki_talk:8f696cc0|Talk]]
        . -{{int:Accesskey-userpage}} +{{int:8f696cc0}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Accesskey-viewsource&action=edit accesskey-viewsource]
        -[[MediaWiki_talk:Accesskey-viewsource|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:613ebbad&action=edit e467bdec]
        +[[MediaWiki_talk:613ebbad|Talk]]
        e -{{int:Accesskey-viewsource}} +{{int:613ebbad}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Accesskey-watch&action=edit accesskey-watch]
        -[[MediaWiki_talk:Accesskey-watch|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:f598b5d6&action=edit 8bbdd8ad]
        +[[MediaWiki_talk:f598b5d6|Talk]]
        w -{{int:Accesskey-watch}} +{{int:f598b5d6}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Accesskey-watchlist&action=edit accesskey-watchlist]
        -[[MediaWiki_talk:Accesskey-watchlist|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:59863979&action=edit f8563593]
        +[[MediaWiki_talk:59863979|Talk]]
        l -{{int:Accesskey-watchlist}} +{{int:59863979}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Accesskey-whatlinkshere&action=edit accesskey-whatlinkshere]
        -[[MediaWiki_talk:Accesskey-whatlinkshere|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:00143391&action=edit 016415ff]
        +[[MediaWiki_talk:00143391|Talk]]
        b -{{int:Accesskey-whatlinkshere}} +{{int:00143391}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Accmailtext&action=edit accmailtext]
        -[[MediaWiki_talk:Accmailtext|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:d4dce921&action=edit c90b0565]
        +[[MediaWiki_talk:d4dce921|Talk]]
        The Password for '$1' has been sent to $2. -{{int:Accmailtext}} +{{int:d4dce921}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Accmailtitle&action=edit accmailtitle]
        -[[MediaWiki_talk:Accmailtitle|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:9e6cd678&action=edit 05cb31f3]
        +[[MediaWiki_talk:9e6cd678|Talk]]
        Password sent. -{{int:Accmailtitle}} +{{int:9e6cd678}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Actioncomplete&action=edit actioncomplete]
        -[[MediaWiki_talk:Actioncomplete|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:37186ec6&action=edit 6703566b]
        +[[MediaWiki_talk:37186ec6|Talk]]
        Action complete -{{int:Actioncomplete}} +{{int:37186ec6}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Addedwatch&action=edit addedwatch]
        -[[MediaWiki_talk:Addedwatch|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:2bacba53&action=edit 9a954e94]
        +[[MediaWiki_talk:2bacba53|Talk]]
        Added to watchlist -{{int:Addedwatch}} +{{int:2bacba53}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Addedwatchtext&action=edit addedwatchtext]
        -[[MediaWiki_talk:Addedwatchtext|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:b28893b8&action=edit cb101aa3]
        +[[MediaWiki_talk:b28893b8|Talk]]
        The page "$1" has been added to your [[Special:Watchlist|watchlist]]. Future changes to this page and its associated Talk page will be listed there, @@ -360,150 +360,150 @@ make it easier to pick out. <p>If you want to remove the page from your watchlist later, click "Stop watching" in the sidebar. -{{int:Addedwatchtext}} +{{int:b28893b8}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Addsection&action=edit addsection]
        -[[MediaWiki_talk:Addsection|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:291bfe3c&action=edit 788205f7]
        +[[MediaWiki_talk:291bfe3c|Talk]]
        + -{{int:Addsection}} +{{int:291bfe3c}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Administrators&action=edit administrators]
        -[[MediaWiki_talk:Administrators|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:0d4d418a&action=edit 69189a95]
        +[[MediaWiki_talk:0d4d418a|Talk]]
        Wiktionary:Administrators -{{int:Administrators}} +{{int:0d4d418a}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Affirmation&action=edit affirmation]
        -[[MediaWiki_talk:Affirmation|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:1b4ceeda&action=edit f61e4837]
        +[[MediaWiki_talk:1b4ceeda|Talk]]
        I affirm that the copyright holder of this file agrees to license it under the terms of the $1. -{{int:Affirmation}} +{{int:1b4ceeda}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:All&action=edit all]
        -[[MediaWiki_talk:All|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:6a720856&action=edit d87c4480]
        +[[MediaWiki_talk:6a720856|Talk]]
        all -{{int:All}} +{{int:6a720856}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Allmessages&action=edit allmessages]
        -[[MediaWiki_talk:Allmessages|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:f2fab435&action=edit a6623c77]
        +[[MediaWiki_talk:f2fab435|Talk]]
        All system messages -{{int:Allmessages}} +{{int:f2fab435}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Allmessagestext&action=edit allmessagestext]
        -[[MediaWiki_talk:Allmessagestext|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:e57c77b8&action=edit 57dbe26a]
        +[[MediaWiki_talk:e57c77b8|Talk]]
        This is a list of all system messages available in the MediaWiki: namespace. -{{int:Allmessagestext}} +{{int:e57c77b8}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Allpages&action=edit allpages]
        -[[MediaWiki_talk:Allpages|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:ff8db74d&action=edit bf1dccf6]
        +[[MediaWiki_talk:ff8db74d|Talk]]
        All pages -{{int:Allpages}} +{{int:ff8db74d}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Alphaindexline&action=edit alphaindexline]
        -[[MediaWiki_talk:Alphaindexline|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:89c23e53&action=edit 1ee05de8]
        +[[MediaWiki_talk:89c23e53|Talk]]
        $1 to $2 -{{int:Alphaindexline}} +{{int:89c23e53}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Alreadyloggedin&action=edit alreadyloggedin]
        -[[MediaWiki_talk:Alreadyloggedin|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:8550125b&action=edit 0dc174ae]
        +[[MediaWiki_talk:8550125b|Talk]]
        <font color=red><b>User $1, you are already logged in!</b></font><br /> -{{int:Alreadyloggedin}} +{{int:8550125b}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Alreadyrolled&action=edit alreadyrolled]
        -[[MediaWiki_talk:Alreadyrolled|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:3f7be8a8&action=edit 3f1bd6a1]
        +[[MediaWiki_talk:3f7be8a8|Talk]]
        Cannot rollback last edit of [[$1]] by [[User:$2|$2]] ([[User talk:$2|Talk]]); someone else has edited or rolled back the page already. Last edit was by [[User:$3|$3]] ([[User talk:$3|Talk]]). -{{int:Alreadyrolled}} +{{int:3f7be8a8}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Ancientpages&action=edit ancientpages]
        -[[MediaWiki_talk:Ancientpages|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:49a4df39&action=edit 4f70712f]
        +[[MediaWiki_talk:49a4df39|Talk]]
        Oldest pages -{{int:Ancientpages}} +{{int:49a4df39}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:And&action=edit and]
        -[[MediaWiki_talk:And|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:a01e33f4&action=edit cffa50a3]
        +[[MediaWiki_talk:a01e33f4|Talk]]
        and -{{int:And}} +{{int:a01e33f4}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Anontalk&action=edit anontalk]
        -[[MediaWiki_talk:Anontalk|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:20cb482e&action=edit 801db13e]
        +[[MediaWiki_talk:20cb482e|Talk]]
        Talk for this IP -{{int:Anontalk}} +{{int:20cb482e}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Anontalkpagetext&action=edit anontalkpagetext]
        -[[MediaWiki_talk:Anontalkpagetext|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:5bbc19f4&action=edit 07575f81]
        +[[MediaWiki_talk:5bbc19f4|Talk]]
        ----''This is the discussion page for an anonymous user who has not created an account yet or who does not use it. We therefore have to use the numerical [[IP address]] to identify him/her. Such an IP address can be shared by several users. If you are an anonymous user and feel that irrelevant comments have been directed at you, please [[Special:Userlogin|create an account or log in]] to avoid future confusion with other anonymous users.'' -{{int:Anontalkpagetext}} +{{int:5bbc19f4}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Anonymous&action=edit anonymous]
        -[[MediaWiki_talk:Anonymous|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:9bed5104&action=edit 0a92fab3]
        +[[MediaWiki_talk:9bed5104|Talk]]
        Anonymous user(s) of Wiktionary -{{int:Anonymous}} +{{int:9bed5104}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Article&action=edit article]
        -[[MediaWiki_talk:Article|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:4360c2dc&action=edit 565cecd7]
        +[[MediaWiki_talk:4360c2dc|Talk]]
        Content page -{{int:Article}} +{{int:4360c2dc}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Articleexists&action=edit articleexists]
        -[[MediaWiki_talk:Articleexists|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:d3ee4a57&action=edit ac8af25b]
        +[[MediaWiki_talk:d3ee4a57|Talk]]
        A page of that name already exists, or the name you have chosen is not valid. Please choose another name. -{{int:Articleexists}} +{{int:d3ee4a57}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Articlepage&action=edit articlepage]
        -[[MediaWiki_talk:Articlepage|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:494f1af2&action=edit 01d643b6]
        +[[MediaWiki_talk:494f1af2|Talk]]
        View content page -{{int:Articlepage}} +{{int:494f1af2}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Asksql&action=edit asksql]
        -[[MediaWiki_talk:Asksql|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:dc93382e&action=edit 4e529571]
        +[[MediaWiki_talk:dc93382e|Talk]]
        SQL query -{{int:Asksql}} +{{int:dc93382e}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Asksqltext&action=edit asksqltext]
        -[[MediaWiki_talk:Asksqltext|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:d12f6023&action=edit 47551563]
        +[[MediaWiki_talk:d12f6023|Talk]]
        Use the form below to make a direct query of the database. @@ -511,52 +511,52 @@ Use single quotes ('like this') to delimit string literals. This can often add considerable load to the server, so please use this function sparingly. -{{int:Asksqltext}} +{{int:d12f6023}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Autoblocker&action=edit autoblocker]
        -[[MediaWiki_talk:Autoblocker|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:f36efd21&action=edit d8f0b5e0]
        +[[MediaWiki_talk:f36efd21|Talk]]
        Autoblocked because you share an IP address with "$1". Reason "$2". -{{int:Autoblocker}} +{{int:f36efd21}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Badarticleerror&action=edit badarticleerror]
        -[[MediaWiki_talk:Badarticleerror|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:9503e2b1&action=edit 100ce8a2]
        +[[MediaWiki_talk:9503e2b1|Talk]]
        This action cannot be performed on this page. -{{int:Badarticleerror}} +{{int:9503e2b1}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Badfilename&action=edit badfilename]
        -[[MediaWiki_talk:Badfilename|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:f146770f&action=edit 5c50b102]
        +[[MediaWiki_talk:f146770f|Talk]]
        Image name has been changed to "$1". -{{int:Badfilename}} +{{int:f146770f}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Badfiletype&action=edit badfiletype]
        -[[MediaWiki_talk:Badfiletype|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:a87ee981&action=edit fe89c3de]
        +[[MediaWiki_talk:a87ee981|Talk]]
        ".$1" is not a recommended image file format. -{{int:Badfiletype}} +{{int:a87ee981}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Badipaddress&action=edit badipaddress]
        -[[MediaWiki_talk:Badipaddress|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:0222775a&action=edit c7623eeb]
        +[[MediaWiki_talk:0222775a|Talk]]
        Invalid IP address -{{int:Badipaddress}} +{{int:0222775a}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Badquery&action=edit badquery]
        -[[MediaWiki_talk:Badquery|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:feabd786&action=edit 798bc46a]
        +[[MediaWiki_talk:feabd786|Talk]]
        Badly formed search query -{{int:Badquery}} +{{int:feabd786}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Badquerytext&action=edit badquerytext]
        -[[MediaWiki_talk:Badquerytext|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:7e82f04b&action=edit e5493056]
        +[[MediaWiki_talk:7e82f04b|Talk]]
        We could not process your query. This is probably because you have attempted to search for a @@ -565,39 +565,39 @@ It could also be that you have mistyped the expression, for example "fish and and scales". Please try another query. -{{int:Badquerytext}} +{{int:7e82f04b}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Badretype&action=edit badretype]
        -[[MediaWiki_talk:Badretype|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:36ad01d4&action=edit c36e32c1]
        +[[MediaWiki_talk:36ad01d4|Talk]]
        The passwords you entered do not match. -{{int:Badretype}} +{{int:36ad01d4}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Badtitle&action=edit badtitle]
        -[[MediaWiki_talk:Badtitle|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:ab570b90&action=edit 5c0f9f2b]
        +[[MediaWiki_talk:ab570b90|Talk]]
        Bad title -{{int:Badtitle}} +{{int:ab570b90}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Badtitletext&action=edit badtitletext]
        -[[MediaWiki_talk:Badtitletext|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:73766845&action=edit e9ac7510]
        +[[MediaWiki_talk:73766845|Talk]]
        The requested page title was invalid, empty, or an incorrectly linked inter-language or inter-wiki title. -{{int:Badtitletext}} +{{int:73766845}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Blanknamespace&action=edit blanknamespace]
        -[[MediaWiki_talk:Blanknamespace|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:ef0a17b1&action=edit ec00742f]
        +[[MediaWiki_talk:ef0a17b1|Talk]]
        (Main) -{{int:Blanknamespace}} +{{int:ef0a17b1}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Blockedtext&action=edit blockedtext]
        -[[MediaWiki_talk:Blockedtext|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:2fe89b37&action=edit 0756a2f3]
        +[[MediaWiki_talk:2fe89b37|Talk]]
        Your user name or IP address has been blocked by $1. The reason given is this:<br />''$2''<p>You may contact $1 or one of the other @@ -608,39 +608,39 @@ Note that you may not use the "email this user" feature unless you hav Your IP address is $3. Please include this address in any queries you make. -{{int:Blockedtext}} +{{int:2fe89b37}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Blockedtitle&action=edit blockedtitle]
        -[[MediaWiki_talk:Blockedtitle|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:4153985a&action=edit ee09eebe]
        +[[MediaWiki_talk:4153985a|Talk]]
        User is blocked -{{int:Blockedtitle}} +{{int:4153985a}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Blockip&action=edit blockip]
        -[[MediaWiki_talk:Blockip|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:f8225753&action=edit 387c304e]
        +[[MediaWiki_talk:f8225753|Talk]]
        Block user -{{int:Blockip}} +{{int:f8225753}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Blockipsuccesssub&action=edit blockipsuccesssub]
        -[[MediaWiki_talk:Blockipsuccesssub|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:178b4021&action=edit d19404ef]
        +[[MediaWiki_talk:178b4021|Talk]]
        Block succeeded -{{int:Blockipsuccesssub}} +{{int:178b4021}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Blockipsuccesstext&action=edit blockipsuccesstext]
        -[[MediaWiki_talk:Blockipsuccesstext|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:c9aa5295&action=edit 8c464806]
        +[[MediaWiki_talk:c9aa5295|Talk]]
        "$1" has been blocked. <br />See [[Special:Ipblocklist|IP block list]] to review blocks. -{{int:Blockipsuccesstext}} +{{int:c9aa5295}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Blockiptext&action=edit blockiptext]
        -[[MediaWiki_talk:Blockiptext|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:d79d9fe6&action=edit ec372bf2]
        +[[MediaWiki_talk:d79d9fe6|Talk]]
        Use the form below to block write access from a specific IP address or username. @@ -649,261 +649,261 @@ accordance with [[Wiktionary:Policy|policy]]. Fill in a specific reason below (for example, citing particular pages that were vandalized). -{{int:Blockiptext}} +{{int:d79d9fe6}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Blocklink&action=edit blocklink]
        -[[MediaWiki_talk:Blocklink|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:9a96cfdc&action=edit 1c6c7aa2]
        +[[MediaWiki_talk:9a96cfdc|Talk]]
        block -{{int:Blocklink}} +{{int:9a96cfdc}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Blocklistline&action=edit blocklistline]
        -[[MediaWiki_talk:Blocklistline|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:b81f5cad&action=edit b821b758]
        +[[MediaWiki_talk:b81f5cad|Talk]]
        $1, $2 blocked $3 (expires $4) -{{int:Blocklistline}} +{{int:b81f5cad}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Blocklogentry&action=edit blocklogentry]
        -[[MediaWiki_talk:Blocklogentry|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:0871a19a&action=edit 9be87d66]
        +[[MediaWiki_talk:0871a19a|Talk]]
        blocked "$1" with an expiry time of $2 -{{int:Blocklogentry}} +{{int:0871a19a}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Blocklogpage&action=edit blocklogpage]
        -[[MediaWiki_talk:Blocklogpage|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:31534d45&action=edit 4bcce96c]
        +[[MediaWiki_talk:31534d45|Talk]]
        Block_log -{{int:Blocklogpage}} +{{int:31534d45}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Blocklogtext&action=edit blocklogtext]
        -[[MediaWiki_talk:Blocklogtext|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:f4872c71&action=edit b9902a3c]
        +[[MediaWiki_talk:f4872c71|Talk]]
        This is a log of user blocking and unblocking actions. Automatically blocked IP addresses are not be listed. See the [[Special:Ipblocklist|IP block list]] for the list of currently operational bans and blocks. -{{int:Blocklogtext}} +{{int:f4872c71}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Bold_sample&action=edit bold_sample]
        -[[MediaWiki_talk:Bold_sample|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:d8ae34f5&action=edit e9a0daa2]
        +[[MediaWiki_talk:d8ae34f5|Talk]]
        Bold text -{{int:Bold_sample}} +{{int:d8ae34f5}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Bold_tip&action=edit bold_tip]
        -[[MediaWiki_talk:Bold_tip|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:58086558&action=edit 02320399]
        +[[MediaWiki_talk:58086558|Talk]]
        Bold text -{{int:Bold_tip}} +{{int:58086558}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Booksources&action=edit booksources]
        -[[MediaWiki_talk:Booksources|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:1d546a7c&action=edit 9bd576b3]
        +[[MediaWiki_talk:1d546a7c|Talk]]
        Book sources -{{int:Booksources}} +{{int:1d546a7c}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Booksourcetext&action=edit booksourcetext]
        -[[MediaWiki_talk:Booksourcetext|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:809e6557&action=edit 72f7a5ba]
        +[[MediaWiki_talk:809e6557|Talk]]
        Below is a list of links to other sites that sell new and used books, and may also have further information about books you are looking for.Wiktionary is not affiliated with any of these businesses, and this list should not be construed as an endorsement. -{{int:Booksourcetext}} +{{int:809e6557}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Brokenredirects&action=edit brokenredirects]
        -[[MediaWiki_talk:Brokenredirects|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:40925079&action=edit fe673f57]
        +[[MediaWiki_talk:40925079|Talk]]
        Broken Redirects -{{int:Brokenredirects}} +{{int:40925079}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Brokenredirectstext&action=edit brokenredirectstext]
        -[[MediaWiki_talk:Brokenredirectstext|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:3953d564&action=edit 283e89cc]
        +[[MediaWiki_talk:3953d564|Talk]]
        The following redirects link to a non-existing pages. -{{int:Brokenredirectstext}} +{{int:3953d564}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Bugreports&action=edit bugreports]
        -[[MediaWiki_talk:Bugreports|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:f12ee4ee&action=edit 741bd9a7]
        +[[MediaWiki_talk:f12ee4ee|Talk]]
        Bug reports -{{int:Bugreports}} +{{int:f12ee4ee}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Bugreportspage&action=edit bugreportspage]
        -[[MediaWiki_talk:Bugreportspage|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:1e9054cf&action=edit 7cc56699]
        +[[MediaWiki_talk:1e9054cf|Talk]]
        Wiktionary:Bug_reports -{{int:Bugreportspage}} +{{int:1e9054cf}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Bureaucratlog&action=edit bureaucratlog]
        -[[MediaWiki_talk:Bureaucratlog|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:cfea7660&action=edit eaac0dcf]
        +[[MediaWiki_talk:cfea7660|Talk]]
        Bureaucrat_log -{{int:Bureaucratlog}} +{{int:cfea7660}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Bureaucratlogentry&action=edit bureaucratlogentry]
        -[[MediaWiki_talk:Bureaucratlogentry|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:04cf1ba3&action=edit cc1544ab]
        +[[MediaWiki_talk:04cf1ba3|Talk]]
        Rights for user "$1" set "$2" -{{int:Bureaucratlogentry}} +{{int:04cf1ba3}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Bureaucrattext&action=edit bureaucrattext]
        -[[MediaWiki_talk:Bureaucrattext|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:a0750047&action=edit 5eb1e911]
        +[[MediaWiki_talk:a0750047|Talk]]
        The action you have requested can only be performed by sysops with "bureaucrat" status. -{{int:Bureaucrattext}} +{{int:a0750047}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Bureaucrattitle&action=edit bureaucrattitle]
        -[[MediaWiki_talk:Bureaucrattitle|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:4837977b&action=edit f523b504]
        +[[MediaWiki_talk:4837977b|Talk]]
        Bureaucrat access required -{{int:Bureaucrattitle}} +{{int:4837977b}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Bydate&action=edit bydate]
        -[[MediaWiki_talk:Bydate|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:590988e2&action=edit f06de085]
        +[[MediaWiki_talk:590988e2|Talk]]
        by date -{{int:Bydate}} +{{int:590988e2}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Byname&action=edit byname]
        -[[MediaWiki_talk:Byname|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:c08c3f0d&action=edit e51a8413]
        +[[MediaWiki_talk:c08c3f0d|Talk]]
        by name -{{int:Byname}} +{{int:c08c3f0d}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Bysize&action=edit bysize]
        -[[MediaWiki_talk:Bysize|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:ede279e9&action=edit 43ba766a]
        +[[MediaWiki_talk:ede279e9|Talk]]
        by size -{{int:Bysize}} +{{int:ede279e9}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Cachederror&action=edit cachederror]
        -[[MediaWiki_talk:Cachederror|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:e1ad9b35&action=edit 075fc8df]
        +[[MediaWiki_talk:e1ad9b35|Talk]]
        The following is a cached copy of the requested page, and may not be up to date. -{{int:Cachederror}} +{{int:e1ad9b35}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Cancel&action=edit cancel]
        -[[MediaWiki_talk:Cancel|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:77dfd213&action=edit 4fd0653c]
        +[[MediaWiki_talk:77dfd213|Talk]]
        Cancel -{{int:Cancel}} +{{int:77dfd213}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Cannotdelete&action=edit cannotdelete]
        -[[MediaWiki_talk:Cannotdelete|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:03442eec&action=edit ee57c22e]
        +[[MediaWiki_talk:03442eec|Talk]]
        Could not delete the page or image specified. (It may have already been deleted by someone else.) -{{int:Cannotdelete}} +{{int:03442eec}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Cantrollback&action=edit cantrollback]
        -[[MediaWiki_talk:Cantrollback|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:27b55ed3&action=edit 4b739ac2]
        +[[MediaWiki_talk:27b55ed3|Talk]]
        Cannot revert edit; last contributor is only author of this page. -{{int:Cantrollback}} +{{int:27b55ed3}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Categories&action=edit categories]
        -[[MediaWiki_talk:Categories|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:6ccb6007&action=edit 50b9e781]
        +[[MediaWiki_talk:6ccb6007|Talk]]
        Categories -{{int:Categories}} +{{int:6ccb6007}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Category&action=edit category]
        -[[MediaWiki_talk:Category|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:a3c686e7&action=edit 5ccbf9c9]
        +[[MediaWiki_talk:a3c686e7|Talk]]
        category -{{int:Category}} +{{int:a3c686e7}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Category_header&action=edit category_header]
        -[[MediaWiki_talk:Category_header|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:f2ff5f46&action=edit 7245f61e]
        +[[MediaWiki_talk:f2ff5f46|Talk]]
        Articles in category "$1" -{{int:Category_header}} +{{int:f2ff5f46}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Changepassword&action=edit changepassword]
        -[[MediaWiki_talk:Changepassword|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:cc60b2e2&action=edit 3dfd4581]
        +[[MediaWiki_talk:cc60b2e2|Talk]]
        Change password -{{int:Changepassword}} +{{int:cc60b2e2}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Changes&action=edit changes]
        -[[MediaWiki_talk:Changes|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:8aa57de6&action=edit 49a04ba4]
        +[[MediaWiki_talk:8aa57de6|Talk]]
        changes -{{int:Changes}} +{{int:8aa57de6}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Columns&action=edit columns]
        -[[MediaWiki_talk:Columns|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:cf723c59&action=edit 4f1b1dbe]
        +[[MediaWiki_talk:cf723c59|Talk]]
        Columns -{{int:Columns}} +{{int:cf723c59}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Commentedit&action=edit commentedit]
        -[[MediaWiki_talk:Commentedit|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:2a4f8ff8&action=edit 99be507a]
        +[[MediaWiki_talk:2a4f8ff8|Talk]]
        (comment) -{{int:Commentedit}} +{{int:2a4f8ff8}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Compareselectedversions&action=edit compareselectedversions]
        -[[MediaWiki_talk:Compareselectedversions|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:9833df65&action=edit 978cce5f]
        +[[MediaWiki_talk:9833df65|Talk]]
        Compare selected versions -{{int:Compareselectedversions}} +{{int:9833df65}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Confirm&action=edit confirm]
        -[[MediaWiki_talk:Confirm|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:04a21221&action=edit d0c4047c]
        +[[MediaWiki_talk:04a21221|Talk]]
        Confirm -{{int:Confirm}} +{{int:04a21221}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Confirmcheck&action=edit confirmcheck]
        -[[MediaWiki_talk:Confirmcheck|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:b8e469fe&action=edit bb4bf8de]
        +[[MediaWiki_talk:b8e469fe|Talk]]
        Yes, I really want to delete this. -{{int:Confirmcheck}} +{{int:b8e469fe}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Confirmdelete&action=edit confirmdelete]
        -[[MediaWiki_talk:Confirmdelete|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:7773ad82&action=edit 16805d57]
        +[[MediaWiki_talk:7773ad82|Talk]]
        Confirm delete -{{int:Confirmdelete}} +{{int:7773ad82}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Confirmdeletetext&action=edit confirmdeletetext]
        -[[MediaWiki_talk:Confirmdeletetext|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:87358bf0&action=edit 872e01c0]
        +[[MediaWiki_talk:87358bf0|Talk]]
        You are about to permanently delete a page or image along with all of its history from the database. @@ -911,94 +911,94 @@ Please confirm that you intend to do this, that you understand the consequences, and that you are doing this in accordance with [[Wiktionary:Policy]]. -{{int:Confirmdeletetext}} +{{int:87358bf0}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Confirmprotect&action=edit confirmprotect]
        -[[MediaWiki_talk:Confirmprotect|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:b46f1463&action=edit 96a48c11]
        +[[MediaWiki_talk:b46f1463|Talk]]
        Confirm protection -{{int:Confirmprotect}} +{{int:b46f1463}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Confirmprotecttext&action=edit confirmprotecttext]
        -[[MediaWiki_talk:Confirmprotecttext|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:e382b883&action=edit e76ab37d]
        +[[MediaWiki_talk:e382b883|Talk]]
        Do you really want to protect this page? -{{int:Confirmprotecttext}} +{{int:e382b883}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Confirmunprotect&action=edit confirmunprotect]
        -[[MediaWiki_talk:Confirmunprotect|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:33be1711&action=edit 306661e6]
        +[[MediaWiki_talk:33be1711|Talk]]
        Confirm unprotection -{{int:Confirmunprotect}} +{{int:33be1711}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Confirmunprotecttext&action=edit confirmunprotecttext]
        -[[MediaWiki_talk:Confirmunprotecttext|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:2d82e05f&action=edit 4df1abe3]
        +[[MediaWiki_talk:2d82e05f|Talk]]
        Do you really want to unprotect this page? -{{int:Confirmunprotecttext}} +{{int:2d82e05f}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Contextchars&action=edit contextchars]
        -[[MediaWiki_talk:Contextchars|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:7f051e88&action=edit 0858695c]
        +[[MediaWiki_talk:7f051e88|Talk]]
        Characters of context per line -{{int:Contextchars}} +{{int:7f051e88}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Contextlines&action=edit contextlines]
        -[[MediaWiki_talk:Contextlines|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:7127b581&action=edit e9d81e50]
        +[[MediaWiki_talk:7127b581|Talk]]
        Lines to show per hit -{{int:Contextlines}} +{{int:7127b581}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Contribslink&action=edit contribslink]
        -[[MediaWiki_talk:Contribslink|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:9850ceab&action=edit df5b918c]
        +[[MediaWiki_talk:9850ceab|Talk]]
        contribs -{{int:Contribslink}} +{{int:9850ceab}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Contribsub&action=edit contribsub]
        -[[MediaWiki_talk:Contribsub|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:b688a4d7&action=edit ab48ec14]
        +[[MediaWiki_talk:b688a4d7|Talk]]
        For $1 -{{int:Contribsub}} +{{int:b688a4d7}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Contributions&action=edit contributions]
        -[[MediaWiki_talk:Contributions|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:aa11023f&action=edit 9d5b6e5e]
        +[[MediaWiki_talk:aa11023f|Talk]]
        User contributions -{{int:Contributions}} +{{int:aa11023f}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Copyright&action=edit copyright]
        -[[MediaWiki_talk:Copyright|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:a420abf6&action=edit 521307dd]
        +[[MediaWiki_talk:a420abf6|Talk]]
        Content is available under $1. -{{int:Copyright}} +{{int:a420abf6}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Copyrightpage&action=edit copyrightpage]
        -[[MediaWiki_talk:Copyrightpage|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:fc8c1b42&action=edit 5327fdcf]
        +[[MediaWiki_talk:fc8c1b42|Talk]]
        Wiktionary:Copyrights -{{int:Copyrightpage}} +{{int:fc8c1b42}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Copyrightpagename&action=edit copyrightpagename]
        -[[MediaWiki_talk:Copyrightpagename|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:52a98e51&action=edit f6652583]
        +[[MediaWiki_talk:52a98e51|Talk]]
        Wiktionary copyright -{{int:Copyrightpagename}} +{{int:52a98e51}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Copyrightwarning&action=edit copyrightwarning]
        -[[MediaWiki_talk:Copyrightwarning|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:25a1afd7&action=edit 731cc8a6]
        +[[MediaWiki_talk:25a1afd7|Talk]]
        Please note that all contributions to Wiktionary are considered to be released under the GNU Free Documentation License @@ -1009,66 +1009,66 @@ You are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource. <strong>DO NOT SUBMIT COPYRIGHTED WORK WITHOUT PERMISSION!</strong> -{{int:Copyrightwarning}} +{{int:25a1afd7}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Couldntremove&action=edit couldntremove]
        -[[MediaWiki_talk:Couldntremove|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:465ca4b8&action=edit e04b3a96]
        +[[MediaWiki_talk:465ca4b8|Talk]]
        Couldn't remove item '$1'... -{{int:Couldntremove}} +{{int:465ca4b8}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Createaccount&action=edit createaccount]
        -[[MediaWiki_talk:Createaccount|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:3724dfa6&action=edit 19fd5658]
        +[[MediaWiki_talk:3724dfa6|Talk]]
        Create new account -{{int:Createaccount}} +{{int:3724dfa6}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Createaccountmail&action=edit createaccountmail]
        -[[MediaWiki_talk:Createaccountmail|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:a4a1f0cb&action=edit b10d6306]
        +[[MediaWiki_talk:a4a1f0cb|Talk]]
        by email -{{int:Createaccountmail}} +{{int:a4a1f0cb}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Cur&action=edit cur]
        -[[MediaWiki_talk:Cur|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:07f81f3c&action=edit dce81611]
        +[[MediaWiki_talk:07f81f3c|Talk]]
        cur -{{int:Cur}} +{{int:07f81f3c}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Currentevents&action=edit currentevents]
        -[[MediaWiki_talk:Currentevents|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:42b921f8&action=edit 81c8f458]
        +[[MediaWiki_talk:42b921f8|Talk]]
        Current events -{{int:Currentevents}} +{{int:42b921f8}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Currentrev&action=edit currentrev]
        -[[MediaWiki_talk:Currentrev|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:78892831&action=edit 23418566]
        +[[MediaWiki_talk:78892831|Talk]]
        Current revision -{{int:Currentrev}} +{{int:78892831}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Databaseerror&action=edit databaseerror]
        -[[MediaWiki_talk:Databaseerror|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:e4838ed0&action=edit 66409316]
        +[[MediaWiki_talk:e4838ed0|Talk]]
        Database error -{{int:Databaseerror}} +{{int:e4838ed0}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Dateformat&action=edit dateformat]
        -[[MediaWiki_talk:Dateformat|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:507be676&action=edit 3b538bdf]
        +[[MediaWiki_talk:507be676|Talk]]
        Date format -{{int:Dateformat}} +{{int:507be676}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Dberrortext&action=edit dberrortext]
        -[[MediaWiki_talk:Dberrortext|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:0bfa85bb&action=edit 34c01d3c]
        +[[MediaWiki_talk:0bfa85bb|Talk]]
        A database query syntax error has occurred. This could be because of an illegal search query (see $5), @@ -1078,10 +1078,10 @@ The last attempted database query was: from within function "<tt>$2</tt>". MySQL returned error "<tt>$3: $4</tt>". -{{int:Dberrortext}} +{{int:0bfa85bb}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Dberrortextcl&action=edit dberrortextcl]
        -[[MediaWiki_talk:Dberrortextcl|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:39d82941&action=edit f6e1bcbd]
        +[[MediaWiki_talk:39d82941|Talk]]
        A database query syntax error has occurred. The last attempted database query was: @@ -1090,109 +1090,109 @@ from within function "$2". MySQL returned error "$3: $4". -{{int:Dberrortextcl}} +{{int:39d82941}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Deadendpages&action=edit deadendpages]
        -[[MediaWiki_talk:Deadendpages|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:ae14da43&action=edit d4234aad]
        +[[MediaWiki_talk:ae14da43|Talk]]
        Dead-end pages -{{int:Deadendpages}} +{{int:ae14da43}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Debug&action=edit debug]
        -[[MediaWiki_talk:Debug|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:bd604d99&action=edit 32faaeca]
        +[[MediaWiki_talk:bd604d99|Talk]]
        Debug -{{int:Debug}} +{{int:bd604d99}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Defaultns&action=edit defaultns]
        -[[MediaWiki_talk:Defaultns|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:6f349a89&action=edit f674a4a1]
        +[[MediaWiki_talk:6f349a89|Talk]]
        Search in these namespaces by default: -{{int:Defaultns}} +{{int:6f349a89}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Defemailsubject&action=edit defemailsubject]
        -[[MediaWiki_talk:Defemailsubject|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:801b725b&action=edit 93c2c32b]
        +[[MediaWiki_talk:801b725b|Talk]]
        Wiktionary e-mail -{{int:Defemailsubject}} +{{int:801b725b}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Delete&action=edit delete]
        -[[MediaWiki_talk:Delete|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:f6fdbe48&action=edit 9485989f]
        +[[MediaWiki_talk:f6fdbe48|Talk]]
        Delete -{{int:Delete}} +{{int:f6fdbe48}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Deletecomment&action=edit deletecomment]
        -[[MediaWiki_talk:Deletecomment|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:728e102f&action=edit 070ad01c]
        +[[MediaWiki_talk:728e102f|Talk]]
        Reason for deletion -{{int:Deletecomment}} +{{int:728e102f}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Deletedarticle&action=edit deletedarticle]
        -[[MediaWiki_talk:Deletedarticle|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:784f094b&action=edit abb03e0b]
        +[[MediaWiki_talk:784f094b|Talk]]
        deleted "$1" -{{int:Deletedarticle}} +{{int:784f094b}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Deletedtext&action=edit deletedtext]
        -[[MediaWiki_talk:Deletedtext|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:b40dc398&action=edit 81545b85]
        +[[MediaWiki_talk:b40dc398|Talk]]
        "$1" has been deleted. See $2 for a record of recent deletions. -{{int:Deletedtext}} +{{int:b40dc398}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Deleteimg&action=edit deleteimg]
        -[[MediaWiki_talk:Deleteimg|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:64a8bf46&action=edit 6f4d03ee]
        +[[MediaWiki_talk:64a8bf46|Talk]]
        del -{{int:Deleteimg}} +{{int:64a8bf46}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Deletepage&action=edit deletepage]
        -[[MediaWiki_talk:Deletepage|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:3316ac85&action=edit c423c282]
        +[[MediaWiki_talk:3316ac85|Talk]]
        Delete page -{{int:Deletepage}} +{{int:3316ac85}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Deletesub&action=edit deletesub]
        -[[MediaWiki_talk:Deletesub|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:a2496a13&action=edit a3173eab]
        +[[MediaWiki_talk:a2496a13|Talk]]
        (Deleting "$1") -{{int:Deletesub}} +{{int:a2496a13}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Deletethispage&action=edit deletethispage]
        -[[MediaWiki_talk:Deletethispage|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:9d817726&action=edit b93901eb]
        +[[MediaWiki_talk:9d817726|Talk]]
        Delete this page -{{int:Deletethispage}} +{{int:9d817726}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Deletionlog&action=edit deletionlog]
        -[[MediaWiki_talk:Deletionlog|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:49653e1b&action=edit 58f0b919]
        +[[MediaWiki_talk:49653e1b|Talk]]
        deletion log -{{int:Deletionlog}} +{{int:49653e1b}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Dellogpage&action=edit dellogpage]
        -[[MediaWiki_talk:Dellogpage|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:d73442e4&action=edit c5ee36a7]
        +[[MediaWiki_talk:d73442e4|Talk]]
        Deletion_log -{{int:Dellogpage}} +{{int:d73442e4}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Dellogpagetext&action=edit dellogpagetext]
        -[[MediaWiki_talk:Dellogpagetext|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:2349bb58&action=edit 6526e633]
        +[[MediaWiki_talk:2349bb58|Talk]]
        Below is a list of the most recent deletions. All times shown are server time (UTC). @@ -1200,185 +1200,185 @@ All times shown are server time (UTC). </ul> -{{int:Dellogpagetext}} +{{int:2349bb58}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Developerspheading&action=edit developerspheading]
        -[[MediaWiki_talk:Developerspheading|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:381bedfc&action=edit 015693e1]
        +[[MediaWiki_talk:381bedfc|Talk]]
        For developer use only -{{int:Developerspheading}} +{{int:381bedfc}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Developertext&action=edit developertext]
        -[[MediaWiki_talk:Developertext|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:52713d3d&action=edit 9c6f4cd5]
        +[[MediaWiki_talk:52713d3d|Talk]]
        The action you have requested can only be performed by users with "developer" status. See $1. -{{int:Developertext}} +{{int:52713d3d}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Developertitle&action=edit developertitle]
        -[[MediaWiki_talk:Developertitle|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:6cca6111&action=edit 59afe6b0]
        +[[MediaWiki_talk:6cca6111|Talk]]
        Developer access required -{{int:Developertitle}} +{{int:6cca6111}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Diff&action=edit diff]
        -[[MediaWiki_talk:Diff|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:d23a1c9f&action=edit 75a0ee1b]
        +[[MediaWiki_talk:d23a1c9f|Talk]]
        diff -{{int:Diff}} +{{int:d23a1c9f}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Difference&action=edit difference]
        -[[MediaWiki_talk:Difference|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:b16f1f66&action=edit 48d53c6e]
        +[[MediaWiki_talk:b16f1f66|Talk]]
        (Difference between revisions) -{{int:Difference}} +{{int:b16f1f66}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Disclaimerpage&action=edit disclaimerpage]
        -[[MediaWiki_talk:Disclaimerpage|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:3c1c1596&action=edit 657b3530]
        +[[MediaWiki_talk:3c1c1596|Talk]]
        Wiktionary:General_disclaimer -{{int:Disclaimerpage}} +{{int:3c1c1596}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Disclaimers&action=edit disclaimers]
        -[[MediaWiki_talk:Disclaimers|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:2cbbc29e&action=edit 774706d2]
        +[[MediaWiki_talk:2cbbc29e|Talk]]
        Disclaimers -{{int:Disclaimers}} +{{int:2cbbc29e}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Doubleredirects&action=edit doubleredirects]
        -[[MediaWiki_talk:Doubleredirects|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:ac57c500&action=edit c06b805b]
        +[[MediaWiki_talk:ac57c500|Talk]]
        Double Redirects -{{int:Doubleredirects}} +{{int:ac57c500}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Doubleredirectstext&action=edit doubleredirectstext]
        -[[MediaWiki_talk:Doubleredirectstext|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:ba6ba737&action=edit 49eadc1d]
        +[[MediaWiki_talk:ba6ba737|Talk]]
        <b>Attention:</b> This list may contain false positives. That usually means there is additional text with links below the first #REDIRECT.<br /> Each row contains links to the first and second redirect, as well as the first line of the second redirect text, usually giving the "real" target page, which the first redirect should point to. -{{int:Doubleredirectstext}} +{{int:ba6ba737}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Edit&action=edit edit]
        -[[MediaWiki_talk:Edit|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:5301648d&action=edit 9ead47a8]
        +[[MediaWiki_talk:5301648d|Talk]]
        Edit -{{int:Edit}} +{{int:5301648d}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Editcomment&action=edit editcomment]
        -[[MediaWiki_talk:Editcomment|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:299ca80d&action=edit 74940f72]
        +[[MediaWiki_talk:299ca80d|Talk]]
        The edit comment was: "<i>$1</i>". -{{int:Editcomment}} +{{int:299ca80d}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Editconflict&action=edit editconflict]
        -[[MediaWiki_talk:Editconflict|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:1af657fb&action=edit 3b56e95b]
        +[[MediaWiki_talk:1af657fb|Talk]]
        Edit conflict: $1 -{{int:Editconflict}} +{{int:1af657fb}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Editcurrent&action=edit editcurrent]
        -[[MediaWiki_talk:Editcurrent|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:8b46c7e0&action=edit 10d395b9]
        +[[MediaWiki_talk:8b46c7e0|Talk]]
        Edit the current version of this page -{{int:Editcurrent}} +{{int:8b46c7e0}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Edithelp&action=edit edithelp]
        -[[MediaWiki_talk:Edithelp|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:47f4389a&action=edit a1524e37]
        +[[MediaWiki_talk:47f4389a|Talk]]
        Editing help -{{int:Edithelp}} +{{int:47f4389a}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Edithelppage&action=edit edithelppage]
        -[[MediaWiki_talk:Edithelppage|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:56815513&action=edit 7072deb5]
        +[[MediaWiki_talk:56815513|Talk]]
        Help:Editing -{{int:Edithelppage}} +{{int:56815513}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Editing&action=edit editing]
        -[[MediaWiki_talk:Editing|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:3b9ba1a2&action=edit f34946be]
        +[[MediaWiki_talk:3b9ba1a2|Talk]]
        Editing $1 -{{int:Editing}} +{{int:3b9ba1a2}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Editingold&action=edit editingold]
        -[[MediaWiki_talk:Editingold|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:5e6bd9f3&action=edit bd55ff2e]
        +[[MediaWiki_talk:5e6bd9f3|Talk]]
        <strong>WARNING: You are editing an out-of-date revision of this page. If you save it, any changes made since this revision will be lost.</strong> -{{int:Editingold}} +{{int:5e6bd9f3}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Editsection&action=edit editsection]
        -[[MediaWiki_talk:Editsection|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:51905619&action=edit 965b4116]
        +[[MediaWiki_talk:51905619|Talk]]
        edit -{{int:Editsection}} +{{int:51905619}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Editthispage&action=edit editthispage]
        -[[MediaWiki_talk:Editthispage|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:2138f524&action=edit 8bc15909]
        +[[MediaWiki_talk:2138f524|Talk]]
        Edit this page -{{int:Editthispage}} +{{int:2138f524}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Emailflag&action=edit emailflag]
        -[[MediaWiki_talk:Emailflag|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:96c0b2c5&action=edit 4a27c333]
        +[[MediaWiki_talk:96c0b2c5|Talk]]
        Disable e-mail from other users -{{int:Emailflag}} +{{int:96c0b2c5}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Emailforlost&action=edit emailforlost]
        -[[MediaWiki_talk:Emailforlost|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:8a275a27&action=edit e4573eb4]
        +[[MediaWiki_talk:8a275a27|Talk]]
        Fields marked with a star (*) are optional. Storing an email address enables people to contact you through the website without you having to reveal your email address to them, and it can be used to send you a new password if you forget it.<br /><br />Your real name, if you choose to provide it, will be used for giving you attribution for your work. -{{int:Emailforlost}} +{{int:8a275a27}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Emailfrom&action=edit emailfrom]
        -[[MediaWiki_talk:Emailfrom|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:34a573ac&action=edit b29c18eb]
        +[[MediaWiki_talk:34a573ac|Talk]]
        From -{{int:Emailfrom}} +{{int:34a573ac}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Emailmessage&action=edit emailmessage]
        -[[MediaWiki_talk:Emailmessage|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:1653aeb3&action=edit 8d8c0edf]
        +[[MediaWiki_talk:1653aeb3|Talk]]
        Message -{{int:Emailmessage}} +{{int:1653aeb3}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Emailuser&action=edit emailuser]
        -[[MediaWiki_talk:Emailuser|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:ac5cfb8e&action=edit a9b033ab]
        +[[MediaWiki_talk:ac5cfb8e|Talk]]
        E-mail user -{{int:Emailuser}} +{{int:ac5cfb8e}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Emailpagetext&action=edit emailpagetext]
        -[[MediaWiki_talk:Emailpagetext|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:e3fc4fe2&action=edit eb6bf1bb]
        +[[MediaWiki_talk:e3fc4fe2|Talk]]
        If this user has entered a valid e-mail address in his or her user preferences, the form below will send a single message. @@ -1386,95 +1386,95 @@ The e-mail address you entered in your user preferences will appear as the "From" address of the mail, so the recipient will be able to reply. -{{int:Emailpagetext}} +{{int:e3fc4fe2}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Emailsend&action=edit emailsend]
        -[[MediaWiki_talk:Emailsend|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:145da553&action=edit 05072b51]
        +[[MediaWiki_talk:145da553|Talk]]
        Send -{{int:Emailsend}} +{{int:145da553}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Emailsent&action=edit emailsent]
        -[[MediaWiki_talk:Emailsent|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:833a22dc&action=edit b1d3f3e4]
        +[[MediaWiki_talk:833a22dc|Talk]]
        E-mail sent -{{int:Emailsent}} +{{int:833a22dc}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Emailsenttext&action=edit emailsenttext]
        -[[MediaWiki_talk:Emailsenttext|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:e3935836&action=edit 2effa7aa]
        +[[MediaWiki_talk:e3935836|Talk]]
        Your e-mail message has been sent. -{{int:Emailsenttext}} +{{int:e3935836}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Emailsubject&action=edit emailsubject]
        -[[MediaWiki_talk:Emailsubject|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:c8dba338&action=edit 275a0d68]
        +[[MediaWiki_talk:c8dba338|Talk]]
        Subject -{{int:Emailsubject}} +{{int:c8dba338}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Emailto&action=edit emailto]
        -[[MediaWiki_talk:Emailto|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:c35740f4&action=edit 88b0fd50]
        +[[MediaWiki_talk:c35740f4|Talk]]
        To -{{int:Emailto}} +{{int:c35740f4}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Emailuser&action=edit emailuser]
        -[[MediaWiki_talk:Emailuser|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:ac5cfb8e&action=edit a9b033ab]
        +[[MediaWiki_talk:ac5cfb8e|Talk]]
        E-mail this user -{{int:Emailuser}} +{{int:ac5cfb8e}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Enterlockreason&action=edit enterlockreason]
        -[[MediaWiki_talk:Enterlockreason|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:6b0a234b&action=edit 698a308a]
        +[[MediaWiki_talk:6b0a234b|Talk]]
        Enter a reason for the lock, including an estimate of when the lock will be released -{{int:Enterlockreason}} +{{int:6b0a234b}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Error&action=edit error]
        -[[MediaWiki_talk:Error|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:7f2f6a15&action=edit 11f9578d]
        +[[MediaWiki_talk:7f2f6a15|Talk]]
        Error -{{int:Error}} +{{int:7f2f6a15}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Errorpagetitle&action=edit errorpagetitle]
        -[[MediaWiki_talk:Errorpagetitle|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:53ee1378&action=edit aa2d1eba]
        +[[MediaWiki_talk:53ee1378|Talk]]
        Error -{{int:Errorpagetitle}} +{{int:53ee1378}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Exbeforeblank&action=edit exbeforeblank]
        -[[MediaWiki_talk:Exbeforeblank|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:8aedeece&action=edit a1c634a7]
        +[[MediaWiki_talk:8aedeece|Talk]]
        content before blanking was: -{{int:Exbeforeblank}} +{{int:8aedeece}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Exblank&action=edit exblank]
        -[[MediaWiki_talk:Exblank|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:42abde88&action=edit eba6d64f]
        +[[MediaWiki_talk:42abde88|Talk]]
        page was empty -{{int:Exblank}} +{{int:42abde88}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Excontent&action=edit excontent]
        -[[MediaWiki_talk:Excontent|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:dd028a5c&action=edit fe80d230]
        +[[MediaWiki_talk:dd028a5c|Talk]]
        content was: -{{int:Excontent}} +{{int:dd028a5c}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Explainconflict&action=edit explainconflict]
        -[[MediaWiki_talk:Explainconflict|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:b7845dfb&action=edit 1a7999fa]
        +[[MediaWiki_talk:b7845dfb|Talk]]
        Someone else has changed this page since you started editing it. @@ -1485,163 +1485,163 @@ You will have to merge your changes into the existing text. press "Save page". <p> -{{int:Explainconflict}} +{{int:b7845dfb}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Export&action=edit export]
        -[[MediaWiki_talk:Export|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:f3e4fadb&action=edit 51713409]
        +[[MediaWiki_talk:f3e4fadb|Talk]]
        Export pages -{{int:Export}} +{{int:f3e4fadb}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Exportcuronly&action=edit exportcuronly]
        -[[MediaWiki_talk:Exportcuronly|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:b68aeee1&action=edit bf364325]
        +[[MediaWiki_talk:b68aeee1|Talk]]
        Include only the current revision, not the full history -{{int:Exportcuronly}} +{{int:b68aeee1}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Exporttext&action=edit exporttext]
        -[[MediaWiki_talk:Exporttext|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:7e884d79&action=edit eddfb839]
        +[[MediaWiki_talk:7e884d79|Talk]]
        You can export the text and editing history of a particular page or set of pages wrapped in some XML; this can then be imported into another wiki running MediaWiki software, transformed, or just kept for your private amusement. -{{int:Exporttext}} +{{int:7e884d79}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Extlink_sample&action=edit extlink_sample]
        -[[MediaWiki_talk:Extlink_sample|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:a34d80e8&action=edit 8f95a409]
        +[[MediaWiki_talk:a34d80e8|Talk]]
        http://www.example.com link title -{{int:Extlink_sample}} +{{int:a34d80e8}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Extlink_tip&action=edit extlink_tip]
        -[[MediaWiki_talk:Extlink_tip|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:117651f0&action=edit 481904c0]
        +[[MediaWiki_talk:117651f0|Talk]]
        External link (remember http:// prefix) -{{int:Extlink_tip}} +{{int:117651f0}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Faq&action=edit faq]
        -[[MediaWiki_talk:Faq|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:f11042a4&action=edit e75bc045]
        +[[MediaWiki_talk:f11042a4|Talk]]
        FAQ -{{int:Faq}} +{{int:f11042a4}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Faqpage&action=edit faqpage]
        -[[MediaWiki_talk:Faqpage|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:2e891e10&action=edit 5b772c96]
        +[[MediaWiki_talk:2e891e10|Talk]]
        Wiktionary:FAQ -{{int:Faqpage}} +{{int:2e891e10}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Feedlinks&action=edit feedlinks]
        -[[MediaWiki_talk:Feedlinks|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:86edbc13&action=edit 62f8af98]
        +[[MediaWiki_talk:86edbc13|Talk]]
        Feed: -{{int:Feedlinks}} +{{int:86edbc13}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Filecopyerror&action=edit filecopyerror]
        -[[MediaWiki_talk:Filecopyerror|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:2727dd90&action=edit 6c916412]
        +[[MediaWiki_talk:2727dd90|Talk]]
        Could not copy file "$1" to "$2". -{{int:Filecopyerror}} +{{int:2727dd90}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Filedeleteerror&action=edit filedeleteerror]
        -[[MediaWiki_talk:Filedeleteerror|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:e60a2c42&action=edit d393dbbc]
        +[[MediaWiki_talk:e60a2c42|Talk]]
        Could not delete file "$1". -{{int:Filedeleteerror}} +{{int:e60a2c42}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Filedesc&action=edit filedesc]
        -[[MediaWiki_talk:Filedesc|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:d7b25eeb&action=edit 6dace2d5]
        +[[MediaWiki_talk:d7b25eeb|Talk]]
        Summary -{{int:Filedesc}} +{{int:d7b25eeb}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Filename&action=edit filename]
        -[[MediaWiki_talk:Filename|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:a3cbb98d&action=edit 08deae8d]
        +[[MediaWiki_talk:a3cbb98d|Talk]]
        Filename -{{int:Filename}} +{{int:a3cbb98d}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Filenotfound&action=edit filenotfound]
        -[[MediaWiki_talk:Filenotfound|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:c8f6c94d&action=edit 35c4ded6]
        +[[MediaWiki_talk:c8f6c94d|Talk]]
        Could not find file "$1". -{{int:Filenotfound}} +{{int:c8f6c94d}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Filerenameerror&action=edit filerenameerror]
        -[[MediaWiki_talk:Filerenameerror|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:b9b56972&action=edit 6d195b75]
        +[[MediaWiki_talk:b9b56972|Talk]]
        Could not rename file "$1" to "$2". -{{int:Filerenameerror}} +{{int:b9b56972}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Filesource&action=edit filesource]
        -[[MediaWiki_talk:Filesource|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:0a6a1eb6&action=edit 1ffce53a]
        +[[MediaWiki_talk:0a6a1eb6|Talk]]
        Source -{{int:Filesource}} +{{int:0a6a1eb6}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Filestatus&action=edit filestatus]
        -[[MediaWiki_talk:Filestatus|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:0f0e70a0&action=edit 040e2ba8]
        +[[MediaWiki_talk:0f0e70a0|Talk]]
        Copyright status -{{int:Filestatus}} +{{int:0f0e70a0}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Fileuploaded&action=edit fileuploaded]
        -[[MediaWiki_talk:Fileuploaded|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:45eaa53f&action=edit 79423d38]
        +[[MediaWiki_talk:45eaa53f|Talk]]
        File "$1" uploaded successfully. Please follow this link: $2 to the description page and fill in information about the file, such as where it came from, when it was created and by whom, and anything else you may know about it. -{{int:Fileuploaded}} +{{int:45eaa53f}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Formerror&action=edit formerror]
        -[[MediaWiki_talk:Formerror|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:a303ff06&action=edit 416cf9e4]
        +[[MediaWiki_talk:a303ff06|Talk]]
        Error: could not submit form -{{int:Formerror}} +{{int:a303ff06}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Fromwikipedia&action=edit fromwikipedia]
        -[[MediaWiki_talk:Fromwikipedia|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:dc08787f&action=edit ada66d8e]
        +[[MediaWiki_talk:dc08787f|Talk]]
        From Wiktionary -{{int:Fromwikipedia}} +{{int:dc08787f}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Getimagelist&action=edit getimagelist]
        -[[MediaWiki_talk:Getimagelist|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:c4c83db8&action=edit f8d783cd]
        +[[MediaWiki_talk:c4c83db8|Talk]]
        fetching image list -{{int:Getimagelist}} +{{int:c4c83db8}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Go&action=edit go]
        -[[MediaWiki_talk:Go|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:2e0b45f2&action=edit 1ec558a6]
        +[[MediaWiki_talk:2e0b45f2|Talk]]
        Go -{{int:Go}} +{{int:2e0b45f2}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Googlesearch&action=edit googlesearch]
        -[[MediaWiki_talk:Googlesearch|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:749351b4&action=edit 49a50bdf]
        +[[MediaWiki_talk:749351b4|Talk]]
        <!-- SiteSearch Google --> @@ -1663,527 +1663,527 @@ border="0" ALT="Google"></A> </FORM> <!-- SiteSearch Google --> -{{int:Googlesearch}} +{{int:749351b4}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Guesstimezone&action=edit guesstimezone]
        -[[MediaWiki_talk:Guesstimezone|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:489b474b&action=edit 8da95a41]
        +[[MediaWiki_talk:489b474b|Talk]]
        Fill in from browser -{{int:Guesstimezone}} +{{int:489b474b}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Headline_sample&action=edit headline_sample]
        -[[MediaWiki_talk:Headline_sample|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:237cf168&action=edit 7f401fbb]
        +[[MediaWiki_talk:237cf168|Talk]]
        Headline text -{{int:Headline_sample}} +{{int:237cf168}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Headline_tip&action=edit headline_tip]
        -[[MediaWiki_talk:Headline_tip|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:91b3bc72&action=edit c4eef2f5]
        +[[MediaWiki_talk:91b3bc72|Talk]]
        Level 2 headline -{{int:Headline_tip}} +{{int:91b3bc72}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Help&action=edit help]
        -[[MediaWiki_talk:Help|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:c47ae153&action=edit 92005ecf]
        +[[MediaWiki_talk:c47ae153|Talk]]
        Help -{{int:Help}} +{{int:c47ae153}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Helppage&action=edit helppage]
        -[[MediaWiki_talk:Helppage|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:56203224&action=edit 9ca36083]
        +[[MediaWiki_talk:56203224|Talk]]
        Help:Contents -{{int:Helppage}} +{{int:56203224}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Hide&action=edit hide]
        -[[MediaWiki_talk:Hide|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:34d8b60f&action=edit 93c8c96b]
        +[[MediaWiki_talk:34d8b60f|Talk]]
        hide -{{int:Hide}} +{{int:34d8b60f}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Hidetoc&action=edit hidetoc]
        -[[MediaWiki_talk:Hidetoc|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:9aa39fe3&action=edit 1cc77a14]
        +[[MediaWiki_talk:9aa39fe3|Talk]]
        hide -{{int:Hidetoc}} +{{int:9aa39fe3}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Hist&action=edit hist]
        -[[MediaWiki_talk:Hist|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:4d9810c0&action=edit 56714843]
        +[[MediaWiki_talk:4d9810c0|Talk]]
        hist -{{int:Hist}} +{{int:4d9810c0}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Histlegend&action=edit histlegend]
        -[[MediaWiki_talk:Histlegend|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:f37ab91a&action=edit 4e7121e9]
        +[[MediaWiki_talk:f37ab91a|Talk]]
        Diff selection: mark the radio boxes of the versions to compare and hit enter or the button at the bottom.<br/> Legend: (cur) = difference with current version, (last) = difference with preceding version, M = minor edit. -{{int:Histlegend}} +{{int:f37ab91a}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:History&action=edit history]
        -[[MediaWiki_talk:History|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:90ccd649&action=edit 66f79d8a]
        +[[MediaWiki_talk:90ccd649|Talk]]
        Page history -{{int:History}} +{{int:90ccd649}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:History_short&action=edit history_short]
        -[[MediaWiki_talk:History_short|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:15a13ace&action=edit a937e036]
        +[[MediaWiki_talk:15a13ace|Talk]]
        History -{{int:History_short}} +{{int:15a13ace}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Historywarning&action=edit historywarning]
        -[[MediaWiki_talk:Historywarning|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:e02c3587&action=edit 6079f80a]
        +[[MediaWiki_talk:e02c3587|Talk]]
        Warning: The page you are about to delete has a history: -{{int:Historywarning}} +{{int:e02c3587}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Hr_tip&action=edit hr_tip]
        -[[MediaWiki_talk:Hr_tip|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:5741ad8f&action=edit 48849a80]
        +[[MediaWiki_talk:5741ad8f|Talk]]
        Horizontal line (use sparingly) -{{int:Hr_tip}} +{{int:5741ad8f}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Ignorewarning&action=edit ignorewarning]
        -[[MediaWiki_talk:Ignorewarning|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:7e18602a&action=edit d874ec59]
        +[[MediaWiki_talk:7e18602a|Talk]]
        Ignore warning and save file anyway. -{{int:Ignorewarning}} +{{int:7e18602a}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Ilshowmatch&action=edit ilshowmatch]
        -[[MediaWiki_talk:Ilshowmatch|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:5bf1efaa&action=edit a98182df]
        +[[MediaWiki_talk:5bf1efaa|Talk]]
        Show all images with names matching -{{int:Ilshowmatch}} +{{int:5bf1efaa}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Ilsubmit&action=edit ilsubmit]
        -[[MediaWiki_talk:Ilsubmit|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:8e7a51d5&action=edit f8288ad8]
        +[[MediaWiki_talk:8e7a51d5|Talk]]
        Search -{{int:Ilsubmit}} +{{int:8e7a51d5}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Image_sample&action=edit image_sample]
        -[[MediaWiki_talk:Image_sample|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:133971b3&action=edit be19a728]
        +[[MediaWiki_talk:133971b3|Talk]]
        Example.jpg -{{int:Image_sample}} +{{int:133971b3}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Image_tip&action=edit image_tip]
        -[[MediaWiki_talk:Image_tip|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:2a73e0c3&action=edit d103e97d]
        +[[MediaWiki_talk:2a73e0c3|Talk]]
        Embedded image -{{int:Image_tip}} +{{int:2a73e0c3}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Imagelinks&action=edit imagelinks]
        -[[MediaWiki_talk:Imagelinks|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:353c260c&action=edit 3414ac48]
        +[[MediaWiki_talk:353c260c|Talk]]
        Image links -{{int:Imagelinks}} +{{int:353c260c}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Imagelist&action=edit imagelist]
        -[[MediaWiki_talk:Imagelist|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:affc6aca&action=edit 4c06ba77]
        +[[MediaWiki_talk:affc6aca|Talk]]
        Image list -{{int:Imagelist}} +{{int:affc6aca}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Imagelisttext&action=edit imagelisttext]
        -[[MediaWiki_talk:Imagelisttext|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:ade85019&action=edit 2e8294bd]
        +[[MediaWiki_talk:ade85019|Talk]]
        Below is a list of $1 images sorted $2. -{{int:Imagelisttext}} +{{int:ade85019}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Imagepage&action=edit imagepage]
        -[[MediaWiki_talk:Imagepage|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:7277ee94&action=edit a152014b]
        +[[MediaWiki_talk:7277ee94|Talk]]
        View image page -{{int:Imagepage}} +{{int:7277ee94}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Imagereverted&action=edit imagereverted]
        -[[MediaWiki_talk:Imagereverted|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:c783375c&action=edit b1d4cc4c]
        +[[MediaWiki_talk:c783375c|Talk]]
        Revert to earlier version was successful. -{{int:Imagereverted}} +{{int:c783375c}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Imgdelete&action=edit imgdelete]
        -[[MediaWiki_talk:Imgdelete|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:c6f52751&action=edit 6656e4f4]
        +[[MediaWiki_talk:c6f52751|Talk]]
        del -{{int:Imgdelete}} +{{int:c6f52751}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Imgdesc&action=edit imgdesc]
        -[[MediaWiki_talk:Imgdesc|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:3c281ed6&action=edit a1adca28]
        +[[MediaWiki_talk:3c281ed6|Talk]]
        desc -{{int:Imgdesc}} +{{int:3c281ed6}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Imghistlegend&action=edit imghistlegend]
        -[[MediaWiki_talk:Imghistlegend|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:186e5ca1&action=edit de786597]
        +[[MediaWiki_talk:186e5ca1|Talk]]
        Legend: (cur) = this is the current image, (del) = delete this old version, (rev) = revert to this old version. <br /><i>Click on date to see image uploaded on that date</i>. -{{int:Imghistlegend}} +{{int:186e5ca1}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Imghistory&action=edit imghistory]
        -[[MediaWiki_talk:Imghistory|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:8d78c0d7&action=edit d9305ede]
        +[[MediaWiki_talk:8d78c0d7|Talk]]
        Image history -{{int:Imghistory}} +{{int:8d78c0d7}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Imglegend&action=edit imglegend]
        -[[MediaWiki_talk:Imglegend|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:86260b9f&action=edit a46e05c1]
        +[[MediaWiki_talk:86260b9f|Talk]]
        Legend: (desc) = show/edit image description. -{{int:Imglegend}} +{{int:86260b9f}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Import&action=edit import]
        -[[MediaWiki_talk:Import|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:d6fbc9d2&action=edit 62fdfbd5]
        +[[MediaWiki_talk:d6fbc9d2|Talk]]
        Import pages -{{int:Import}} +{{int:d6fbc9d2}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Importfailed&action=edit importfailed]
        -[[MediaWiki_talk:Importfailed|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:bac6ed75&action=edit 85d2877a]
        +[[MediaWiki_talk:bac6ed75|Talk]]
        Import failed: $1 -{{int:Importfailed}} +{{int:bac6ed75}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Importhistoryconflict&action=edit importhistoryconflict]
        -[[MediaWiki_talk:Importhistoryconflict|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:f4dee51e&action=edit f74f664b]
        +[[MediaWiki_talk:f4dee51e|Talk]]
        Conflicting history revision exists (may have imported this page before) -{{int:Importhistoryconflict}} +{{int:f4dee51e}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Importnotext&action=edit importnotext]
        -[[MediaWiki_talk:Importnotext|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:1d461354&action=edit ff881471]
        +[[MediaWiki_talk:1d461354|Talk]]
        Empty or no text -{{int:Importnotext}} +{{int:1d461354}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Importsuccess&action=edit importsuccess]
        -[[MediaWiki_talk:Importsuccess|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:5b910f21&action=edit e2781bd1]
        +[[MediaWiki_talk:5b910f21|Talk]]
        Import succeeded! -{{int:Importsuccess}} +{{int:5b910f21}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Importtext&action=edit importtext]
        -[[MediaWiki_talk:Importtext|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:3d58d609&action=edit 965243c5]
        +[[MediaWiki_talk:3d58d609|Talk]]
        Please export the file from the source wiki using the Special:Export utility, save it to your disk and upload it here. -{{int:Importtext}} +{{int:3d58d609}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Infobox&action=edit infobox]
        -[[MediaWiki_talk:Infobox|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:31be67da&action=edit 176bd169]
        +[[MediaWiki_talk:31be67da|Talk]]
        Click a button to get an example text -{{int:Infobox}} +{{int:31be67da}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Infobox_alert&action=edit infobox_alert]
        -[[MediaWiki_talk:Infobox_alert|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:2854823a&action=edit 6de0a6d1]
        +[[MediaWiki_talk:2854823a|Talk]]
        Please enter the text you want to be formatted.\n It will be shown in the infobox for copy and pasting.\nExample:\n$1\nwill become:\n$2 -{{int:Infobox_alert}} +{{int:2854823a}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Internalerror&action=edit internalerror]
        -[[MediaWiki_talk:Internalerror|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:103c360a&action=edit e90e9e1c]
        +[[MediaWiki_talk:103c360a|Talk]]
        Internal error -{{int:Internalerror}} +{{int:103c360a}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Intl&action=edit intl]
        -[[MediaWiki_talk:Intl|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:148008a6&action=edit 919b03e5]
        +[[MediaWiki_talk:148008a6|Talk]]
        Interlanguage links -{{int:Intl}} +{{int:148008a6}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Ip_range_invalid&action=edit ip_range_invalid]
        -[[MediaWiki_talk:Ip_range_invalid|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:07586557&action=edit 5c2ff182]
        +[[MediaWiki_talk:07586557|Talk]]
        Invalid IP range. -{{int:Ip_range_invalid}} +{{int:07586557}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Ipaddress&action=edit ipaddress]
        -[[MediaWiki_talk:Ipaddress|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:22f9ff50&action=edit 1f99aaad]
        +[[MediaWiki_talk:22f9ff50|Talk]]
        IP Address/username -{{int:Ipaddress}} +{{int:22f9ff50}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Ipb_expiry_invalid&action=edit ipb_expiry_invalid]
        -[[MediaWiki_talk:Ipb_expiry_invalid|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:f8994552&action=edit 91b35c2d]
        +[[MediaWiki_talk:f8994552|Talk]]
        Expiry time invalid. -{{int:Ipb_expiry_invalid}} +{{int:f8994552}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Ipbexpiry&action=edit ipbexpiry]
        -[[MediaWiki_talk:Ipbexpiry|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:2147c662&action=edit 524cfd7e]
        +[[MediaWiki_talk:2147c662|Talk]]
        Expiry -{{int:Ipbexpiry}} +{{int:2147c662}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Ipblocklist&action=edit ipblocklist]
        -[[MediaWiki_talk:Ipblocklist|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:9cb7e6ee&action=edit 503153e9]
        +[[MediaWiki_talk:9cb7e6ee|Talk]]
        List of blocked IP addresses and usernames -{{int:Ipblocklist}} +{{int:9cb7e6ee}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Ipbreason&action=edit ipbreason]
        -[[MediaWiki_talk:Ipbreason|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:6774dfa8&action=edit 1ecdad25]
        +[[MediaWiki_talk:6774dfa8|Talk]]
        Reason -{{int:Ipbreason}} +{{int:6774dfa8}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Ipbsubmit&action=edit ipbsubmit]
        -[[MediaWiki_talk:Ipbsubmit|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:62218118&action=edit e29a20a2]
        +[[MediaWiki_talk:62218118|Talk]]
        Block this user -{{int:Ipbsubmit}} +{{int:62218118}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Ipusubmit&action=edit ipusubmit]
        -[[MediaWiki_talk:Ipusubmit|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:7863d305&action=edit 73ecf10c]
        +[[MediaWiki_talk:7863d305|Talk]]
        Unblock this address -{{int:Ipusubmit}} +{{int:7863d305}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Ipusuccess&action=edit ipusuccess]
        -[[MediaWiki_talk:Ipusuccess|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:ba95215c&action=edit 5fc7f411]
        +[[MediaWiki_talk:ba95215c|Talk]]
        "$1" unblocked -{{int:Ipusuccess}} +{{int:ba95215c}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Isbn&action=edit isbn]
        -[[MediaWiki_talk:Isbn|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:8e89a827&action=edit 9aa403ad]
        +[[MediaWiki_talk:8e89a827|Talk]]
        ISBN -{{int:Isbn}} +{{int:8e89a827}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Isredirect&action=edit isredirect]
        -[[MediaWiki_talk:Isredirect|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:5b017ff1&action=edit abdf987b]
        +[[MediaWiki_talk:5b017ff1|Talk]]
        redirect page -{{int:Isredirect}} +{{int:5b017ff1}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Italic_sample&action=edit italic_sample]
        -[[MediaWiki_talk:Italic_sample|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:208e76ed&action=edit 95f02073]
        +[[MediaWiki_talk:208e76ed|Talk]]
        Italic text -{{int:Italic_sample}} +{{int:208e76ed}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Italic_tip&action=edit italic_tip]
        -[[MediaWiki_talk:Italic_tip|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:7e5211e9&action=edit 3f1c7185]
        +[[MediaWiki_talk:7e5211e9|Talk]]
        Italic text -{{int:Italic_tip}} +{{int:7e5211e9}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Iteminvalidname&action=edit iteminvalidname]
        -[[MediaWiki_talk:Iteminvalidname|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:bcce0a8a&action=edit 0e29818a]
        +[[MediaWiki_talk:bcce0a8a|Talk]]
        Problem with item '$1', invalid name... -{{int:Iteminvalidname}} +{{int:bcce0a8a}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Largefile&action=edit largefile]
        -[[MediaWiki_talk:Largefile|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:996c231b&action=edit 5dd7fd8c]
        +[[MediaWiki_talk:996c231b|Talk]]
        It is recommended that images not exceed 100k in size. -{{int:Largefile}} +{{int:996c231b}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Last&action=edit last]
        -[[MediaWiki_talk:Last|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:d1c69a85&action=edit 213ed3ea]
        +[[MediaWiki_talk:d1c69a85|Talk]]
        last -{{int:Last}} +{{int:d1c69a85}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Lastmodified&action=edit lastmodified]
        -[[MediaWiki_talk:Lastmodified|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:26d03483&action=edit 1d0be5cf]
        +[[MediaWiki_talk:26d03483|Talk]]
        This page was last modified $1. -{{int:Lastmodified}} +{{int:26d03483}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Lastmodifiedby&action=edit lastmodifiedby]
        -[[MediaWiki_talk:Lastmodifiedby|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:d8b6a1ce&action=edit b4c7424e]
        +[[MediaWiki_talk:d8b6a1ce|Talk]]
        This page was last modified $1 by $2. -{{int:Lastmodifiedby}} +{{int:d8b6a1ce}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Lineno&action=edit lineno]
        -[[MediaWiki_talk:Lineno|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:b5fb75c3&action=edit 7aab91e5]
        +[[MediaWiki_talk:b5fb75c3|Talk]]
        Line $1: -{{int:Lineno}} +{{int:b5fb75c3}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Link_sample&action=edit link_sample]
        -[[MediaWiki_talk:Link_sample|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:a1a27fd2&action=edit 4c4ec68a]
        +[[MediaWiki_talk:a1a27fd2|Talk]]
        Link title -{{int:Link_sample}} +{{int:a1a27fd2}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Link_tip&action=edit link_tip]
        -[[MediaWiki_talk:Link_tip|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:28f8c928&action=edit e0ee37d8]
        +[[MediaWiki_talk:28f8c928|Talk]]
        Internal link -{{int:Link_tip}} +{{int:28f8c928}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Linklistsub&action=edit linklistsub]
        -[[MediaWiki_talk:Linklistsub|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:003058f7&action=edit c692b683]
        +[[MediaWiki_talk:003058f7|Talk]]
        (List of links) -{{int:Linklistsub}} +{{int:003058f7}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Linkshere&action=edit linkshere]
        -[[MediaWiki_talk:Linkshere|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:6508e12f&action=edit ce30384f]
        +[[MediaWiki_talk:6508e12f|Talk]]
        The following pages link to here: -{{int:Linkshere}} +{{int:6508e12f}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Linkstoimage&action=edit linkstoimage]
        -[[MediaWiki_talk:Linkstoimage|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:f6dbd59d&action=edit 50b839a3]
        +[[MediaWiki_talk:f6dbd59d|Talk]]
        The following pages link to this image: -{{int:Linkstoimage}} +{{int:f6dbd59d}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Linktrail&action=edit linktrail]
        -[[MediaWiki_talk:Linktrail|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:eb68781a&action=edit 743236e7]
        +[[MediaWiki_talk:eb68781a|Talk]]
        /^([a-z]+)(.*)$/sD -{{int:Linktrail}} +{{int:eb68781a}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Listform&action=edit listform]
        -[[MediaWiki_talk:Listform|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:a8ca6811&action=edit 069b38c0]
        +[[MediaWiki_talk:a8ca6811|Talk]]
        list -{{int:Listform}} +{{int:a8ca6811}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Listusers&action=edit listusers]
        -[[MediaWiki_talk:Listusers|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:9bf82beb&action=edit aabbb062]
        +[[MediaWiki_talk:9bf82beb|Talk]]
        User list -{{int:Listusers}} +{{int:9bf82beb}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Loadhist&action=edit loadhist]
        -[[MediaWiki_talk:Loadhist|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:61a6ed55&action=edit 1b4ae4f9]
        +[[MediaWiki_talk:61a6ed55|Talk]]
        Loading page history -{{int:Loadhist}} +{{int:61a6ed55}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Loadingrev&action=edit loadingrev]
        -[[MediaWiki_talk:Loadingrev|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:bf19b1de&action=edit b6bb9fa5]
        +[[MediaWiki_talk:bf19b1de|Talk]]
        loading revision for diff -{{int:Loadingrev}} +{{int:bf19b1de}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Localtime&action=edit localtime]
        -[[MediaWiki_talk:Localtime|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:43678846&action=edit f25bccd7]
        +[[MediaWiki_talk:43678846|Talk]]
        Local time display -{{int:Localtime}} +{{int:43678846}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Lockbtn&action=edit lockbtn]
        -[[MediaWiki_talk:Lockbtn|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:31dcaa22&action=edit 62c50181]
        +[[MediaWiki_talk:31dcaa22|Talk]]
        Lock database -{{int:Lockbtn}} +{{int:31dcaa22}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Lockconfirm&action=edit lockconfirm]
        -[[MediaWiki_talk:Lockconfirm|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:9dc82fa2&action=edit 5199ac8e]
        +[[MediaWiki_talk:9dc82fa2|Talk]]
        Yes, I really want to lock the database. -{{int:Lockconfirm}} +{{int:9dc82fa2}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Lockdb&action=edit lockdb]
        -[[MediaWiki_talk:Lockdb|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:fef93b9b&action=edit 4f29ae0a]
        +[[MediaWiki_talk:fef93b9b|Talk]]
        Lock database -{{int:Lockdb}} +{{int:fef93b9b}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Lockdbsuccesssub&action=edit lockdbsuccesssub]
        -[[MediaWiki_talk:Lockdbsuccesssub|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:b4abc4bb&action=edit e73c06d7]
        +[[MediaWiki_talk:b4abc4bb|Talk]]
        Database lock succeeded -{{int:Lockdbsuccesssub}} +{{int:b4abc4bb}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Lockdbsuccesstext&action=edit lockdbsuccesstext]
        -[[MediaWiki_talk:Lockdbsuccesstext|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:b6fcfec5&action=edit 88c6fb22]
        +[[MediaWiki_talk:b6fcfec5|Talk]]
        The database has been locked. <br />Remember to remove the lock after your maintenance is complete. -{{int:Lockdbsuccesstext}} +{{int:b6fcfec5}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Lockdbtext&action=edit lockdbtext]
        -[[MediaWiki_talk:Lockdbtext|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:459bf648&action=edit 070ff9ae]
        +[[MediaWiki_talk:459bf648|Talk]]
        Locking the database will suspend the ability of all users to edit pages, change their preferences, edit their watchlists, and @@ -2191,87 +2191,87 @@ other things requiring changes in the database. Please confirm that this is what you intend to do, and that you will unlock the database when your maintenance is done. -{{int:Lockdbtext}} +{{int:459bf648}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Locknoconfirm&action=edit locknoconfirm]
        -[[MediaWiki_talk:Locknoconfirm|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:2727a733&action=edit 8a890d0a]
        +[[MediaWiki_talk:2727a733|Talk]]
        You did not check the confirmation box. -{{int:Locknoconfirm}} +{{int:2727a733}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Login&action=edit login]
        -[[MediaWiki_talk:Login|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:4e5a2893&action=edit 2736fab2]
        +[[MediaWiki_talk:4e5a2893|Talk]]
        Log in -{{int:Login}} +{{int:4e5a2893}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Loginerror&action=edit loginerror]
        -[[MediaWiki_talk:Loginerror|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:fcfc7549&action=edit e6f9a4e2]
        +[[MediaWiki_talk:fcfc7549|Talk]]
        Login error -{{int:Loginerror}} +{{int:fcfc7549}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Loginpagetitle&action=edit loginpagetitle]
        -[[MediaWiki_talk:Loginpagetitle|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:4113f724&action=edit 36f843a7]
        +[[MediaWiki_talk:4113f724|Talk]]
        User login -{{int:Loginpagetitle}} +{{int:4113f724}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Loginproblem&action=edit loginproblem]
        -[[MediaWiki_talk:Loginproblem|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:7a6963a6&action=edit d23ee6a8]
        +[[MediaWiki_talk:7a6963a6|Talk]]
        <b>There has been a problem with your login.</b><br />Try again! -{{int:Loginproblem}} +{{int:7a6963a6}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Loginprompt&action=edit loginprompt]
        -[[MediaWiki_talk:Loginprompt|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:bbf56890&action=edit 221d44a4]
        +[[MediaWiki_talk:bbf56890|Talk]]
        You must have cookies enabled to log in to Wiktionary. -{{int:Loginprompt}} +{{int:bbf56890}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Loginreqtext&action=edit loginreqtext]
        -[[MediaWiki_talk:Loginreqtext|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:75749962&action=edit ee8446ea]
        +[[MediaWiki_talk:75749962|Talk]]
        You must [[special:Userlogin|login]] to view other pages. -{{int:Loginreqtext}} +{{int:75749962}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Loginreqtitle&action=edit loginreqtitle]
        -[[MediaWiki_talk:Loginreqtitle|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:c779400b&action=edit a90049e8]
        +[[MediaWiki_talk:c779400b|Talk]]
        Login Required -{{int:Loginreqtitle}} +{{int:c779400b}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Loginsuccess&action=edit loginsuccess]
        -[[MediaWiki_talk:Loginsuccess|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:753694e0&action=edit a5607b10]
        +[[MediaWiki_talk:753694e0|Talk]]
        You are now logged in to Wiktionary as "$1". -{{int:Loginsuccess}} +{{int:753694e0}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Loginsuccesstitle&action=edit loginsuccesstitle]
        -[[MediaWiki_talk:Loginsuccesstitle|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:73eb6767&action=edit 5c2a05be]
        +[[MediaWiki_talk:73eb6767|Talk]]
        Login successful -{{int:Loginsuccesstitle}} +{{int:73eb6767}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Logout&action=edit logout]
        -[[MediaWiki_talk:Logout|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:e43d612e&action=edit 55525e1b]
        +[[MediaWiki_talk:e43d612e|Talk]]
        Log out -{{int:Logout}} +{{int:e43d612e}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Logouttext&action=edit logouttext]
        -[[MediaWiki_talk:Logouttext|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:a8455b1c&action=edit 50310460]
        +[[MediaWiki_talk:a8455b1c|Talk]]
        You are now logged out. You can continue to use Wiktionary anonymously, or you can log in @@ -2280,311 +2280,311 @@ continue to be displayed as if you were still logged in, until you clear your browser cache -{{int:Logouttext}} +{{int:a8455b1c}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Logouttitle&action=edit logouttitle]
        -[[MediaWiki_talk:Logouttitle|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:cd48f4e7&action=edit 8f9db4e5]
        +[[MediaWiki_talk:cd48f4e7|Talk]]
        User logout -{{int:Logouttitle}} +{{int:cd48f4e7}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Lonelypages&action=edit lonelypages]
        -[[MediaWiki_talk:Lonelypages|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:916f5569&action=edit 92ab2259]
        +[[MediaWiki_talk:916f5569|Talk]]
        Orphaned pages -{{int:Lonelypages}} +{{int:916f5569}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Longpages&action=edit longpages]
        -[[MediaWiki_talk:Longpages|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:9cdfa115&action=edit 38996948]
        +[[MediaWiki_talk:9cdfa115|Talk]]
        Long pages -{{int:Longpages}} +{{int:9cdfa115}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Longpagewarning&action=edit longpagewarning]
        -[[MediaWiki_talk:Longpagewarning|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:b91ee293&action=edit 09b5b0a2]
        +[[MediaWiki_talk:b91ee293|Talk]]
        WARNING: This page is $1 kilobytes long; some browsers may have problems editing pages approaching or longer than 32kb. Please consider breaking the page into smaller sections. -{{int:Longpagewarning}} +{{int:b91ee293}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Mailerror&action=edit mailerror]
        -[[MediaWiki_talk:Mailerror|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:1ca3c8a2&action=edit 2b82fce3]
        +[[MediaWiki_talk:1ca3c8a2|Talk]]
        Error sending mail: $1 -{{int:Mailerror}} +{{int:1ca3c8a2}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Mailmypassword&action=edit mailmypassword]
        -[[MediaWiki_talk:Mailmypassword|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:97681e3e&action=edit 669d145f]
        +[[MediaWiki_talk:97681e3e|Talk]]
        Mail me a new password -{{int:Mailmypassword}} +{{int:97681e3e}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Mailnologin&action=edit mailnologin]
        -[[MediaWiki_talk:Mailnologin|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:8646515d&action=edit 874a6660]
        +[[MediaWiki_talk:8646515d|Talk]]
        No send address -{{int:Mailnologin}} +{{int:8646515d}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Mailnologintext&action=edit mailnologintext]
        -[[MediaWiki_talk:Mailnologintext|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:f8116e36&action=edit ce0442ed]
        +[[MediaWiki_talk:f8116e36|Talk]]
        You must be <a href="{{localurl:Special:Userlogin">logged in</a> and have a valid e-mail address in your <a href="/wiki/Special:Preferences">preferences</a> to send e-mail to other users. -{{int:Mailnologintext}} +{{int:f8116e36}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Mainpage&action=edit mainpage]
        -[[MediaWiki_talk:Mainpage|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:95989ab3&action=edit 6ad3db9a]
        +[[MediaWiki_talk:95989ab3|Talk]]
        Main Page -{{int:Mainpage}} +{{int:95989ab3}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Mainpagedocfooter&action=edit mainpagedocfooter]
        -[[MediaWiki_talk:Mainpagedocfooter|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:216e0fe3&action=edit 19d499cf]
        +[[MediaWiki_talk:216e0fe3|Talk]]
        Please see [http://meta.wikipedia.org/wiki/MediaWiki_i18n documentation on customizing the interface] and the [http://meta.wikipedia.org/wiki/MediaWiki_User%27s_Guide User's Guide] for usage and configuration help. -{{int:Mainpagedocfooter}} +{{int:216e0fe3}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Mainpagetext&action=edit mainpagetext]
        -[[MediaWiki_talk:Mainpagetext|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:29c07aac&action=edit 30186460]
        +[[MediaWiki_talk:29c07aac|Talk]]
        Wiki software successfully installed. -{{int:Mainpagetext}} +{{int:29c07aac}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Maintenance&action=edit maintenance]
        -[[MediaWiki_talk:Maintenance|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:94de303b&action=edit 5b30e2c5]
        +[[MediaWiki_talk:94de303b|Talk]]
        Maintenance page -{{int:Maintenance}} +{{int:94de303b}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Maintenancebacklink&action=edit maintenancebacklink]
        -[[MediaWiki_talk:Maintenancebacklink|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:b98df751&action=edit aa734abd]
        +[[MediaWiki_talk:b98df751|Talk]]
        Back to Maintenance Page -{{int:Maintenancebacklink}} +{{int:b98df751}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Maintnancepagetext&action=edit maintnancepagetext]
        -[[MediaWiki_talk:Maintnancepagetext|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:5e830e7c&action=edit ff589b21]
        +[[MediaWiki_talk:5e830e7c|Talk]]
        This page includes several handy tools for everyday maintenance. Some of these functions tend to stress the database, so please do not hit reload after every item you fixed ;-) -{{int:Maintnancepagetext}} +{{int:5e830e7c}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Makesysop&action=edit makesysop]
        -[[MediaWiki_talk:Makesysop|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:147d840b&action=edit 192a7baa]
        +[[MediaWiki_talk:147d840b|Talk]]
        Make a user into a sysop -{{int:Makesysop}} +{{int:147d840b}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Makesysopfail&action=edit makesysopfail]
        -[[MediaWiki_talk:Makesysopfail|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:3e1272dd&action=edit c857a847]
        +[[MediaWiki_talk:3e1272dd|Talk]]
        <b>User "$1" could not be made into a sysop. (Did you enter the name correctly?)</b> -{{int:Makesysopfail}} +{{int:3e1272dd}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Makesysopname&action=edit makesysopname]
        -[[MediaWiki_talk:Makesysopname|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:f942827d&action=edit 4ae2de91]
        +[[MediaWiki_talk:f942827d|Talk]]
        Name of the user: -{{int:Makesysopname}} +{{int:f942827d}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Makesysopok&action=edit makesysopok]
        -[[MediaWiki_talk:Makesysopok|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:8933e97e&action=edit 1138d88d]
        +[[MediaWiki_talk:8933e97e|Talk]]
        <b>User "$1" is now a sysop</b> -{{int:Makesysopok}} +{{int:8933e97e}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Makesysopsubmit&action=edit makesysopsubmit]
        -[[MediaWiki_talk:Makesysopsubmit|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:ffde53f7&action=edit 51a3d81a]
        +[[MediaWiki_talk:ffde53f7|Talk]]
        Make this user into a sysop -{{int:Makesysopsubmit}} +{{int:ffde53f7}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Makesysoptext&action=edit makesysoptext]
        -[[MediaWiki_talk:Makesysoptext|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:6135d20c&action=edit 9014f0fd]
        +[[MediaWiki_talk:6135d20c|Talk]]
        This form is used by bureaucrats to turn ordinary users into administrators. Type the name of the user in the box and press the button to make the user an administrator -{{int:Makesysoptext}} +{{int:6135d20c}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Makesysoptitle&action=edit makesysoptitle]
        -[[MediaWiki_talk:Makesysoptitle|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:40537c23&action=edit 9d7a92cc]
        +[[MediaWiki_talk:40537c23|Talk]]
        Make a user into a sysop -{{int:Makesysoptitle}} +{{int:40537c23}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Matchtotals&action=edit matchtotals]
        -[[MediaWiki_talk:Matchtotals|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:b00f5f1f&action=edit f2f4e13e]
        +[[MediaWiki_talk:b00f5f1f|Talk]]
        The query "$1" matched $2 page titles and the text of $3 pages. -{{int:Matchtotals}} +{{int:b00f5f1f}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Math&action=edit math]
        -[[MediaWiki_talk:Math|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:3edf0df4&action=edit 7a488390]
        +[[MediaWiki_talk:3edf0df4|Talk]]
        Rendering math -{{int:Math}} +{{int:3edf0df4}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Math_bad_output&action=edit math_bad_output]
        -[[MediaWiki_talk:Math_bad_output|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:78c6cb06&action=edit d9b8688c]
        +[[MediaWiki_talk:78c6cb06|Talk]]
        Can't write to or create math output directory -{{int:Math_bad_output}} +{{int:78c6cb06}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Math_bad_tmpdir&action=edit math_bad_tmpdir]
        -[[MediaWiki_talk:Math_bad_tmpdir|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:f83fe947&action=edit be21263f]
        +[[MediaWiki_talk:f83fe947|Talk]]
        Can't write to or create math temp directory -{{int:Math_bad_tmpdir}} +{{int:f83fe947}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Math_failure&action=edit math_failure]
        -[[MediaWiki_talk:Math_failure|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:f8cf40ba&action=edit 53e1c013]
        +[[MediaWiki_talk:f8cf40ba|Talk]]
        Failed to parse -{{int:Math_failure}} +{{int:f8cf40ba}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Math_image_error&action=edit math_image_error]
        -[[MediaWiki_talk:Math_image_error|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:7b3e958f&action=edit 7082c48f]
        +[[MediaWiki_talk:7b3e958f|Talk]]
        PNG conversion failed; check for correct installation of latex, dvips, gs, and convert -{{int:Math_image_error}} +{{int:7b3e958f}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Math_lexing_error&action=edit math_lexing_error]
        -[[MediaWiki_talk:Math_lexing_error|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:d6a158de&action=edit 41e6fe2b]
        +[[MediaWiki_talk:d6a158de|Talk]]
        lexing error -{{int:Math_lexing_error}} +{{int:d6a158de}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Math_notexvc&action=edit math_notexvc]
        -[[MediaWiki_talk:Math_notexvc|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:8109168a&action=edit 20ec4685]
        +[[MediaWiki_talk:8109168a|Talk]]
        Missing texvc executable; please see math/README to configure. -{{int:Math_notexvc}} +{{int:8109168a}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Math_sample&action=edit math_sample]
        -[[MediaWiki_talk:Math_sample|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:41b65279&action=edit 3e8b5972]
        +[[MediaWiki_talk:41b65279|Talk]]
        Insert formula here -{{int:Math_sample}} +{{int:41b65279}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Math_syntax_error&action=edit math_syntax_error]
        -[[MediaWiki_talk:Math_syntax_error|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:5cbab860&action=edit d5667f6b]
        +[[MediaWiki_talk:5cbab860|Talk]]
        syntax error -{{int:Math_syntax_error}} +{{int:5cbab860}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Math_tip&action=edit math_tip]
        -[[MediaWiki_talk:Math_tip|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:7e756feb&action=edit 0baadf18]
        +[[MediaWiki_talk:7e756feb|Talk]]
        Mathematical formula (LaTeX) -{{int:Math_tip}} +{{int:7e756feb}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Math_unknown_error&action=edit math_unknown_error]
        -[[MediaWiki_talk:Math_unknown_error|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:fb4d261d&action=edit 5e0c970a]
        +[[MediaWiki_talk:fb4d261d|Talk]]
        unknown error -{{int:Math_unknown_error}} +{{int:fb4d261d}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Math_unknown_function&action=edit math_unknown_function]
        -[[MediaWiki_talk:Math_unknown_function|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:26558f91&action=edit a0577d1d]
        +[[MediaWiki_talk:26558f91|Talk]]
        unknown function -{{int:Math_unknown_function}} +{{int:26558f91}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Media_sample&action=edit media_sample]
        -[[MediaWiki_talk:Media_sample|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:63e94059&action=edit 704093ed]
        +[[MediaWiki_talk:63e94059|Talk]]
        Example.mp3 -{{int:Media_sample}} +{{int:63e94059}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Media_tip&action=edit media_tip]
        -[[MediaWiki_talk:Media_tip|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:8e4baaa8&action=edit 77fbb90b]
        +[[MediaWiki_talk:8e4baaa8|Talk]]
        Media file link -{{int:Media_tip}} +{{int:8e4baaa8}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Minlength&action=edit minlength]
        -[[MediaWiki_talk:Minlength|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:cca18055&action=edit 61350cd2]
        +[[MediaWiki_talk:cca18055|Talk]]
        Image names must be at least three letters. -{{int:Minlength}} +{{int:cca18055}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Minoredit&action=edit minoredit]
        -[[MediaWiki_talk:Minoredit|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:7f8c4ff3&action=edit 3dd77123]
        +[[MediaWiki_talk:7f8c4ff3|Talk]]
        This is a minor edit -{{int:Minoredit}} +{{int:7f8c4ff3}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Minoreditletter&action=edit minoreditletter]
        -[[MediaWiki_talk:Minoreditletter|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:ce5828a8&action=edit 3c37ba2f]
        +[[MediaWiki_talk:ce5828a8|Talk]]
        M -{{int:Minoreditletter}} +{{int:ce5828a8}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Mispeelings&action=edit mispeelings]
        -[[MediaWiki_talk:Mispeelings|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:1e3a3f5e&action=edit abf0b01a]
        +[[MediaWiki_talk:1e3a3f5e|Talk]]
        Pages with misspellings -{{int:Mispeelings}} +{{int:1e3a3f5e}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Mispeelingspage&action=edit mispeelingspage]
        -[[MediaWiki_talk:Mispeelingspage|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:18c50601&action=edit 4841b1be]
        +[[MediaWiki_talk:18c50601|Talk]]
        List of common misspellings -{{int:Mispeelingspage}} +{{int:18c50601}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Mispeelingstext&action=edit mispeelingstext]
        -[[MediaWiki_talk:Mispeelingstext|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:ff661e66&action=edit 20eeb250]
        +[[MediaWiki_talk:ff661e66|Talk]]
        The following pages contain a common misspelling, which are listed on $1. The correct spelling might be given (like this). -{{int:Mispeelingstext}} +{{int:ff661e66}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Missingarticle&action=edit missingarticle]
        -[[MediaWiki_talk:Missingarticle|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:77dd649d&action=edit 28d8d2f3]
        +[[MediaWiki_talk:77dd649d|Talk]]
        The database did not find the text of a page that it should have found, named "$1". @@ -2595,96 +2595,96 @@ page that has been deleted. <p>If this is not the case, you may have found a bug in the software. Please report this to an administrator, making note of the URL. -{{int:Missingarticle}} +{{int:77dd649d}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Missingimage&action=edit missingimage]
        -[[MediaWiki_talk:Missingimage|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:43bf0acd&action=edit d6472ac8]
        +[[MediaWiki_talk:43bf0acd|Talk]]
        <b>Missing image</b><br /><i>$1</i> -{{int:Missingimage}} +{{int:43bf0acd}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Missinglanguagelinks&action=edit missinglanguagelinks]
        -[[MediaWiki_talk:Missinglanguagelinks|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:75c0518a&action=edit f433e9c8]
        +[[MediaWiki_talk:75c0518a|Talk]]
        Missing Language Links -{{int:Missinglanguagelinks}} +{{int:75c0518a}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Missinglanguagelinksbutton&action=edit missinglanguagelinksbutton]
        -[[MediaWiki_talk:Missinglanguagelinksbutton|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:5ef61b91&action=edit a4a9fdcd]
        +[[MediaWiki_talk:5ef61b91|Talk]]
        Find missing language links for -{{int:Missinglanguagelinksbutton}} +{{int:5ef61b91}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Missinglanguagelinkstext&action=edit missinglanguagelinkstext]
        -[[MediaWiki_talk:Missinglanguagelinkstext|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:f5affad8&action=edit e46ff038]
        +[[MediaWiki_talk:f5affad8|Talk]]
        These pages do <i>not</i> link to their counterpart in $1. Redirects and subpages are <i>not</i> shown. -{{int:Missinglanguagelinkstext}} +{{int:f5affad8}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Moredotdotdot&action=edit moredotdotdot]
        -[[MediaWiki_talk:Moredotdotdot|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:22e2c957&action=edit b43c02b9]
        +[[MediaWiki_talk:22e2c957|Talk]]
        More... -{{int:Moredotdotdot}} +{{int:22e2c957}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Move&action=edit move]
        -[[MediaWiki_talk:Move|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:76cdb950&action=edit 379d6ce9]
        +[[MediaWiki_talk:76cdb950|Talk]]
        Move -{{int:Move}} +{{int:76cdb950}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Movearticle&action=edit movearticle]
        -[[MediaWiki_talk:Movearticle|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:31d22872&action=edit d55a3c2a]
        +[[MediaWiki_talk:31d22872|Talk]]
        Move page -{{int:Movearticle}} +{{int:31d22872}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Movedto&action=edit movedto]
        -[[MediaWiki_talk:Movedto|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:fb280ed2&action=edit 0bd0c880]
        +[[MediaWiki_talk:fb280ed2|Talk]]
        moved to -{{int:Movedto}} +{{int:fb280ed2}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Movenologin&action=edit movenologin]
        -[[MediaWiki_talk:Movenologin|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:8ddc20a0&action=edit 7c041d6e]
        +[[MediaWiki_talk:8ddc20a0|Talk]]
        Not logged in -{{int:Movenologin}} +{{int:8ddc20a0}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Movenologintext&action=edit movenologintext]
        -[[MediaWiki_talk:Movenologintext|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:75985d0e&action=edit e479574b]
        +[[MediaWiki_talk:75985d0e|Talk]]
        You must be a registered user and <a href="/wiki/Special:Userlogin">logged in</a> to move a page. -{{int:Movenologintext}} +{{int:75985d0e}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Movepage&action=edit movepage]
        -[[MediaWiki_talk:Movepage|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:addffb42&action=edit 0f05ab2b]
        +[[MediaWiki_talk:addffb42|Talk]]
        Move page -{{int:Movepage}} +{{int:addffb42}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Movepagebtn&action=edit movepagebtn]
        -[[MediaWiki_talk:Movepagebtn|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:6f9e8dfc&action=edit 0311d79b]
        +[[MediaWiki_talk:6f9e8dfc|Talk]]
        Move page -{{int:Movepagebtn}} +{{int:6f9e8dfc}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Movepagetalktext&action=edit movepagetalktext]
        -[[MediaWiki_talk:Movepagetalktext|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:993d5ce8&action=edit 53ab3d1c]
        +[[MediaWiki_talk:993d5ce8|Talk]]
        The associated talk page, if any, will be automatically moved along with it '''unless:''' *You are moving the page across namespaces, @@ -2693,10 +2693,10 @@ The associated talk page, if any, will be automatically moved along with it ' In those cases, you will have to move or merge the page manually if desired. -{{int:Movepagetalktext}} +{{int:993d5ce8}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Movepagetext&action=edit movepagetext]
        -[[MediaWiki_talk:Movepagetext|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:ce6bc0ee&action=edit a363312c]
        +[[MediaWiki_talk:ce6bc0ee|Talk]]
        Using the form below will rename a page, moving all of its history to the new name. @@ -2717,798 +2717,798 @@ This can be a drastic and unexpected change for a popular page; please be sure you understand the consequences of this before proceeding. -{{int:Movepagetext}} +{{int:ce6bc0ee}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Movetalk&action=edit movetalk]
        -[[MediaWiki_talk:Movetalk|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:e0a05db0&action=edit 7bd87d2d]
        +[[MediaWiki_talk:e0a05db0|Talk]]
        Move "talk" page as well, if applicable. -{{int:Movetalk}} +{{int:e0a05db0}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Movethispage&action=edit movethispage]
        -[[MediaWiki_talk:Movethispage|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:689ff1e7&action=edit 2119d3ee]
        +[[MediaWiki_talk:689ff1e7|Talk]]
        Move this page -{{int:Movethispage}} +{{int:689ff1e7}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Mycontris&action=edit mycontris]
        -[[MediaWiki_talk:Mycontris|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:0dc37cdb&action=edit 12b6caf0]
        +[[MediaWiki_talk:0dc37cdb|Talk]]
        My contributions -{{int:Mycontris}} +{{int:0dc37cdb}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Mypage&action=edit mypage]
        -[[MediaWiki_talk:Mypage|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:51a7215d&action=edit 5d558678]
        +[[MediaWiki_talk:51a7215d|Talk]]
        My page -{{int:Mypage}} +{{int:51a7215d}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Mytalk&action=edit mytalk]
        -[[MediaWiki_talk:Mytalk|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:fbe8f485&action=edit 49886539]
        +[[MediaWiki_talk:fbe8f485|Talk]]
        My talk -{{int:Mytalk}} +{{int:fbe8f485}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Navigation&action=edit navigation]
        -[[MediaWiki_talk:Navigation|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:cf03cf2e&action=edit ad831792]
        +[[MediaWiki_talk:cf03cf2e|Talk]]
        Navigation -{{int:Navigation}} +{{int:cf03cf2e}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Nbytes&action=edit nbytes]
        -[[MediaWiki_talk:Nbytes|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:b5b13ae8&action=edit e75caf8a]
        +[[MediaWiki_talk:b5b13ae8|Talk]]
        $1 bytes -{{int:Nbytes}} +{{int:b5b13ae8}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Nchanges&action=edit nchanges]
        -[[MediaWiki_talk:Nchanges|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:bee99a5f&action=edit 3d7d513a]
        +[[MediaWiki_talk:bee99a5f|Talk]]
        $1 changes -{{int:Nchanges}} +{{int:bee99a5f}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Newarticle&action=edit newarticle]
        -[[MediaWiki_talk:Newarticle|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:654df301&action=edit 06b1c460]
        +[[MediaWiki_talk:654df301|Talk]]
        (New) -{{int:Newarticle}} +{{int:654df301}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Newarticletext&action=edit newarticletext]
        -[[MediaWiki_talk:Newarticletext|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:f1622d18&action=edit b90d5eb0]
        +[[MediaWiki_talk:f1622d18|Talk]]
        You've followed a link to a page that doesn't exist yet. To create the page, start typing in the box below (see the [[Wiktionary:Help|help page]] for more info). If you are here by mistake, just click your browser's '''back''' button. -{{int:Newarticletext}} +{{int:f1622d18}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Newmessages&action=edit newmessages]
        -[[MediaWiki_talk:Newmessages|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:780ce01b&action=edit 0b08523d]
        +[[MediaWiki_talk:780ce01b|Talk]]
        You have $1. -{{int:Newmessages}} +{{int:780ce01b}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Newmessageslink&action=edit newmessageslink]
        -[[MediaWiki_talk:Newmessageslink|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:e09d8ffe&action=edit 1f028736]
        +[[MediaWiki_talk:e09d8ffe|Talk]]
        new messages -{{int:Newmessageslink}} +{{int:e09d8ffe}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Newpage&action=edit newpage]
        -[[MediaWiki_talk:Newpage|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:ce656abe&action=edit d68c7e3c]
        +[[MediaWiki_talk:ce656abe|Talk]]
        New page -{{int:Newpage}} +{{int:ce656abe}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Newpageletter&action=edit newpageletter]
        -[[MediaWiki_talk:Newpageletter|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:b886426f&action=edit d081a481]
        +[[MediaWiki_talk:b886426f|Talk]]
        N -{{int:Newpageletter}} +{{int:b886426f}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Newpages&action=edit newpages]
        -[[MediaWiki_talk:Newpages|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:2adf1ae7&action=edit eeadf049]
        +[[MediaWiki_talk:2adf1ae7|Talk]]
        New pages -{{int:Newpages}} +{{int:2adf1ae7}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Newpassword&action=edit newpassword]
        -[[MediaWiki_talk:Newpassword|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:393f8bca&action=edit f2c57870]
        +[[MediaWiki_talk:393f8bca|Talk]]
        New password -{{int:Newpassword}} +{{int:393f8bca}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Newtitle&action=edit newtitle]
        -[[MediaWiki_talk:Newtitle|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:fa56bbd9&action=edit a104cc01]
        +[[MediaWiki_talk:fa56bbd9|Talk]]
        To new title -{{int:Newtitle}} +{{int:fa56bbd9}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Newusersonly&action=edit newusersonly]
        -[[MediaWiki_talk:Newusersonly|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:2a57c83c&action=edit 41af2ba5]
        +[[MediaWiki_talk:2a57c83c|Talk]]
        (new users only) -{{int:Newusersonly}} +{{int:2a57c83c}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Next&action=edit next]
        -[[MediaWiki_talk:Next|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:bc981983&action=edit edee9402]
        +[[MediaWiki_talk:bc981983|Talk]]
        next -{{int:Next}} +{{int:bc981983}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Nextn&action=edit nextn]
        -[[MediaWiki_talk:Nextn|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:5e067f51&action=edit e0bd4ddb]
        +[[MediaWiki_talk:5e067f51|Talk]]
        next $1 -{{int:Nextn}} +{{int:5e067f51}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Nlinks&action=edit nlinks]
        -[[MediaWiki_talk:Nlinks|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:61c11c45&action=edit 2b45e9af]
        +[[MediaWiki_talk:61c11c45|Talk]]
        $1 links -{{int:Nlinks}} +{{int:61c11c45}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Noaffirmation&action=edit noaffirmation]
        -[[MediaWiki_talk:Noaffirmation|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:e307257f&action=edit f6f5e28d]
        +[[MediaWiki_talk:e307257f|Talk]]
        You must affirm that your upload does not violate any copyrights. -{{int:Noaffirmation}} +{{int:e307257f}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Noarticletext&action=edit noarticletext]
        -[[MediaWiki_talk:Noarticletext|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:335462de&action=edit 2658d031]
        +[[MediaWiki_talk:335462de|Talk]]
        (There is currently no text in this page) -{{int:Noarticletext}} +{{int:335462de}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Noblockreason&action=edit noblockreason]
        -[[MediaWiki_talk:Noblockreason|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:46716843&action=edit 68326cbc]
        +[[MediaWiki_talk:46716843|Talk]]
        You must supply a reason for the block. -{{int:Noblockreason}} +{{int:46716843}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Noconnect&action=edit noconnect]
        -[[MediaWiki_talk:Noconnect|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:8fa787f6&action=edit 5d122d51]
        +[[MediaWiki_talk:8fa787f6|Talk]]
        Sorry! The wiki is experiencing some technical difficulties, and cannot contact the database server. -{{int:Noconnect}} +{{int:8fa787f6}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Nocontribs&action=edit nocontribs]
        -[[MediaWiki_talk:Nocontribs|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:f60d1a6d&action=edit b88f305b]
        +[[MediaWiki_talk:f60d1a6d|Talk]]
        No changes were found matching these criteria. -{{int:Nocontribs}} +{{int:f60d1a6d}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Nocookieslogin&action=edit nocookieslogin]
        -[[MediaWiki_talk:Nocookieslogin|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:9d931b8c&action=edit de736886]
        +[[MediaWiki_talk:9d931b8c|Talk]]
        Wiktionary uses cookies to log in users. You have cookies disabled. Please enable them and try again. -{{int:Nocookieslogin}} +{{int:9d931b8c}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Nocookiesnew&action=edit nocookiesnew]
        -[[MediaWiki_talk:Nocookiesnew|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:e4a19fc8&action=edit 71c8d192]
        +[[MediaWiki_talk:e4a19fc8|Talk]]
        The user account was created, but you are not logged in. Wiktionary uses cookies to log in users. You have cookies disabled. Please enable them, then log in with your new username and password. -{{int:Nocookiesnew}} +{{int:e4a19fc8}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Nocreativecommons&action=edit nocreativecommons]
        -[[MediaWiki_talk:Nocreativecommons|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:6fbb6d3a&action=edit cc61a719]
        +[[MediaWiki_talk:6fbb6d3a|Talk]]
        Creative Commons RDF metadata disabled for this server. -{{int:Nocreativecommons}} +{{int:6fbb6d3a}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Nodb&action=edit nodb]
        -[[MediaWiki_talk:Nodb|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:e0dd32fc&action=edit 5ed4cf16]
        +[[MediaWiki_talk:e0dd32fc|Talk]]
        Could not select database $1 -{{int:Nodb}} +{{int:e0dd32fc}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Nodublincore&action=edit nodublincore]
        -[[MediaWiki_talk:Nodublincore|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:067ee3e9&action=edit 3a58322b]
        +[[MediaWiki_talk:067ee3e9|Talk]]
        Dublin Core RDF metadata disabled for this server. -{{int:Nodublincore}} +{{int:067ee3e9}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Noemail&action=edit noemail]
        -[[MediaWiki_talk:Noemail|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:325a917f&action=edit 4c8d93d2]
        +[[MediaWiki_talk:325a917f|Talk]]
        There is no e-mail address recorded for user "$1". -{{int:Noemail}} +{{int:325a917f}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Noemailtext&action=edit noemailtext]
        -[[MediaWiki_talk:Noemailtext|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:deb172c1&action=edit f8bace82]
        +[[MediaWiki_talk:deb172c1|Talk]]
        This user has not specified a valid e-mail address, or has chosen not to receive e-mail from other users. -{{int:Noemailtext}} +{{int:deb172c1}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Noemailtitle&action=edit noemailtitle]
        -[[MediaWiki_talk:Noemailtitle|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:6bd33d89&action=edit a158d61f]
        +[[MediaWiki_talk:6bd33d89|Talk]]
        No e-mail address -{{int:Noemailtitle}} +{{int:6bd33d89}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Nogomatch&action=edit nogomatch]
        -[[MediaWiki_talk:Nogomatch|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:e68327b0&action=edit 36552107]
        +[[MediaWiki_talk:e68327b0|Talk]]
        No page with this exact title exists, trying full text search. -{{int:Nogomatch}} +{{int:e68327b0}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Nohistory&action=edit nohistory]
        -[[MediaWiki_talk:Nohistory|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:90c1625a&action=edit 8d231ce4]
        +[[MediaWiki_talk:90c1625a|Talk]]
        There is no edit history for this page. -{{int:Nohistory}} +{{int:90c1625a}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Nolinkshere&action=edit nolinkshere]
        -[[MediaWiki_talk:Nolinkshere|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:13e13fa2&action=edit e63b6d19]
        +[[MediaWiki_talk:13e13fa2|Talk]]
        No pages link to here. -{{int:Nolinkshere}} +{{int:13e13fa2}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Nolinkstoimage&action=edit nolinkstoimage]
        -[[MediaWiki_talk:Nolinkstoimage|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:5c3c99a8&action=edit 1e827a30]
        +[[MediaWiki_talk:5c3c99a8|Talk]]
        There are no pages that link to this image. -{{int:Nolinkstoimage}} +{{int:5c3c99a8}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Noname&action=edit noname]
        -[[MediaWiki_talk:Noname|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:d9ff75a4&action=edit e21bfc14]
        +[[MediaWiki_talk:d9ff75a4|Talk]]
        You have not specified a valid user name. -{{int:Noname}} +{{int:d9ff75a4}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Nonefound&action=edit nonefound]
        -[[MediaWiki_talk:Nonefound|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:f7d27b0c&action=edit 5db654d1]
        +[[MediaWiki_talk:f7d27b0c|Talk]]
        <strong>Note</strong>: unsuccessful searches are often caused by searching for common words like "have" and "from", which are not indexed, or by specifying more than one search term (only pages containing all of the search terms will appear in the result). -{{int:Nonefound}} +{{int:f7d27b0c}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Nospecialpagetext&action=edit nospecialpagetext]
        -[[MediaWiki_talk:Nospecialpagetext|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:d5f565dd&action=edit aaaac807]
        +[[MediaWiki_talk:d5f565dd|Talk]]
        You have requested a special page that is not recognized by the wiki. -{{int:Nospecialpagetext}} +{{int:d5f565dd}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Nosuchaction&action=edit nosuchaction]
        -[[MediaWiki_talk:Nosuchaction|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:247c2db2&action=edit 273b8154]
        +[[MediaWiki_talk:247c2db2|Talk]]
        No such action -{{int:Nosuchaction}} +{{int:247c2db2}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Nosuchactiontext&action=edit nosuchactiontext]
        -[[MediaWiki_talk:Nosuchactiontext|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:0e2f696c&action=edit e8773306]
        +[[MediaWiki_talk:0e2f696c|Talk]]
        The action specified by the URL is not recognized by the wiki -{{int:Nosuchactiontext}} +{{int:0e2f696c}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Nosuchspecialpage&action=edit nosuchspecialpage]
        -[[MediaWiki_talk:Nosuchspecialpage|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:bd0d7ac6&action=edit b98c7c10]
        +[[MediaWiki_talk:bd0d7ac6|Talk]]
        No such special page -{{int:Nosuchspecialpage}} +{{int:bd0d7ac6}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Nosuchuser&action=edit nosuchuser]
        -[[MediaWiki_talk:Nosuchuser|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:22012b0a&action=edit f542883d]
        +[[MediaWiki_talk:22012b0a|Talk]]
        There is no user by the name "$1". Check your spelling, or use the form below to create a new user account. -{{int:Nosuchuser}} +{{int:22012b0a}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Notacceptable&action=edit notacceptable]
        -[[MediaWiki_talk:Notacceptable|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:982342c7&action=edit f4909824]
        +[[MediaWiki_talk:982342c7|Talk]]
        The wiki server can't provide data in a format your client can read. -{{int:Notacceptable}} +{{int:982342c7}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Notanarticle&action=edit notanarticle]
        -[[MediaWiki_talk:Notanarticle|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:272cfb97&action=edit cdb5d3a9]
        +[[MediaWiki_talk:272cfb97|Talk]]
        Not a content page -{{int:Notanarticle}} +{{int:272cfb97}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Notargettext&action=edit notargettext]
        -[[MediaWiki_talk:Notargettext|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:8ccaecd6&action=edit 42534913]
        +[[MediaWiki_talk:8ccaecd6|Talk]]
        You have not specified a target page or user to perform this function on. -{{int:Notargettext}} +{{int:8ccaecd6}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Notargettitle&action=edit notargettitle]
        -[[MediaWiki_talk:Notargettitle|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:4532ec15&action=edit dff62a20]
        +[[MediaWiki_talk:4532ec15|Talk]]
        No target -{{int:Notargettitle}} +{{int:4532ec15}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Note&action=edit note]
        -[[MediaWiki_talk:Note|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:2c924e30&action=edit c51048b7]
        +[[MediaWiki_talk:2c924e30|Talk]]
        <strong>Note:</strong> -{{int:Note}} +{{int:2c924e30}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Notextmatches&action=edit notextmatches]
        -[[MediaWiki_talk:Notextmatches|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:51c2043b&action=edit 879701e9]
        +[[MediaWiki_talk:51c2043b|Talk]]
        No page text matches -{{int:Notextmatches}} +{{int:51c2043b}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Notitlematches&action=edit notitlematches]
        -[[MediaWiki_talk:Notitlematches|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:6f3befe0&action=edit 5a56ca1b]
        +[[MediaWiki_talk:6f3befe0|Talk]]
        No page title matches -{{int:Notitlematches}} +{{int:6f3befe0}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Notloggedin&action=edit notloggedin]
        -[[MediaWiki_talk:Notloggedin|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:219a05e4&action=edit 02bcadd3]
        +[[MediaWiki_talk:219a05e4|Talk]]
        Not logged in -{{int:Notloggedin}} +{{int:219a05e4}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Nowatchlist&action=edit nowatchlist]
        -[[MediaWiki_talk:Nowatchlist|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:28b54fd2&action=edit ba736b7f]
        +[[MediaWiki_talk:28b54fd2|Talk]]
        You have no items on your watchlist. -{{int:Nowatchlist}} +{{int:28b54fd2}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Nowiki_sample&action=edit nowiki_sample]
        -[[MediaWiki_talk:Nowiki_sample|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:a78319d8&action=edit 2398990d]
        +[[MediaWiki_talk:a78319d8|Talk]]
        Insert non-formatted text here -{{int:Nowiki_sample}} +{{int:a78319d8}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Nowiki_tip&action=edit nowiki_tip]
        -[[MediaWiki_talk:Nowiki_tip|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:20d39be1&action=edit cf8602ad]
        +[[MediaWiki_talk:20d39be1|Talk]]
        Ignore wiki formatting -{{int:Nowiki_tip}} +{{int:20d39be1}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Nstab-category&action=edit nstab-category]
        -[[MediaWiki_talk:Nstab-category|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:dee84866&action=edit 7a6336e0]
        +[[MediaWiki_talk:dee84866|Talk]]
        Category -{{int:Nstab-category}} +{{int:dee84866}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Nstab-help&action=edit nstab-help]
        -[[MediaWiki_talk:Nstab-help|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:a3e0d95e&action=edit 16b32116]
        +[[MediaWiki_talk:a3e0d95e|Talk]]
        Help -{{int:Nstab-help}} +{{int:a3e0d95e}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Nstab-image&action=edit nstab-image]
        -[[MediaWiki_talk:Nstab-image|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:911dff1f&action=edit 081e450a]
        +[[MediaWiki_talk:911dff1f|Talk]]
        Image -{{int:Nstab-image}} +{{int:911dff1f}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Nstab-main&action=edit nstab-main]
        -[[MediaWiki_talk:Nstab-main|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:931f9736&action=edit 5b9c503a]
        +[[MediaWiki_talk:931f9736|Talk]]
        Article -{{int:Nstab-main}} +{{int:931f9736}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Nstab-media&action=edit nstab-media]
        -[[MediaWiki_talk:Nstab-media|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:6da2f6ae&action=edit 86e5f16d]
        +[[MediaWiki_talk:6da2f6ae|Talk]]
        Media -{{int:Nstab-media}} +{{int:6da2f6ae}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Nstab-mediawiki&action=edit nstab-mediawiki]
        -[[MediaWiki_talk:Nstab-mediawiki|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:53504d48&action=edit 368d5d22]
        +[[MediaWiki_talk:53504d48|Talk]]
        Message -{{int:Nstab-mediawiki}} +{{int:53504d48}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Nstab-special&action=edit nstab-special]
        -[[MediaWiki_talk:Nstab-special|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:14d4daef&action=edit 34a2cba3]
        +[[MediaWiki_talk:14d4daef|Talk]]
        Special -{{int:Nstab-special}} +{{int:14d4daef}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Nstab-template&action=edit nstab-template]
        -[[MediaWiki_talk:Nstab-template|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:ed2e8b27&action=edit a1024e18]
        +[[MediaWiki_talk:ed2e8b27|Talk]]
        Template -{{int:Nstab-template}} +{{int:ed2e8b27}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Nstab-user&action=edit nstab-user]
        -[[MediaWiki_talk:Nstab-user|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:31ebc74b&action=edit 313f5ee2]
        +[[MediaWiki_talk:31ebc74b|Talk]]
        User page -{{int:Nstab-user}} +{{int:31ebc74b}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Nstab-wp&action=edit nstab-wp]
        -[[MediaWiki_talk:Nstab-wp|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:a8d28daa&action=edit 0611a13e]
        +[[MediaWiki_talk:a8d28daa|Talk]]
        About -{{int:Nstab-wp}} +{{int:a8d28daa}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Ok&action=edit ok]
        -[[MediaWiki_talk:Ok|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:b0a98216&action=edit 7a85f476]
        +[[MediaWiki_talk:b0a98216|Talk]]
        OK -{{int:Ok}} +{{int:b0a98216}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Oldpassword&action=edit oldpassword]
        -[[MediaWiki_talk:Oldpassword|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:e081cf87&action=edit 23ace733]
        +[[MediaWiki_talk:e081cf87|Talk]]
        Old password -{{int:Oldpassword}} +{{int:e081cf87}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Orig&action=edit orig]
        -[[MediaWiki_talk:Orig|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:db6998a7&action=edit dc894908]
        +[[MediaWiki_talk:db6998a7|Talk]]
        orig -{{int:Orig}} +{{int:db6998a7}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Orphans&action=edit orphans]
        -[[MediaWiki_talk:Orphans|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:cb5dc4a4&action=edit 89f56e51]
        +[[MediaWiki_talk:cb5dc4a4|Talk]]
        Orphaned pages -{{int:Orphans}} +{{int:cb5dc4a4}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Othercontribs&action=edit othercontribs]
        -[[MediaWiki_talk:Othercontribs|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:51caf0b1&action=edit e6287b24]
        +[[MediaWiki_talk:51caf0b1|Talk]]
        Based on work by $1. -{{int:Othercontribs}} +{{int:51caf0b1}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Otherlanguages&action=edit otherlanguages]
        -[[MediaWiki_talk:Otherlanguages|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:838fda53&action=edit f953cc13]
        +[[MediaWiki_talk:838fda53|Talk]]
        Other languages -{{int:Otherlanguages}} +{{int:838fda53}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Pagemovedsub&action=edit pagemovedsub]
        -[[MediaWiki_talk:Pagemovedsub|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:8b80dc12&action=edit 06b2b863]
        +[[MediaWiki_talk:8b80dc12|Talk]]
        Move succeeded -{{int:Pagemovedsub}} +{{int:8b80dc12}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Pagemovedtext&action=edit pagemovedtext]
        -[[MediaWiki_talk:Pagemovedtext|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:67c1c9b9&action=edit 6df06888]
        +[[MediaWiki_talk:67c1c9b9|Talk]]
        Page "[[$1]]" moved to "[[$2]]". -{{int:Pagemovedtext}} +{{int:67c1c9b9}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Pagetitle&action=edit pagetitle]
        -[[MediaWiki_talk:Pagetitle|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:0488d9f9&action=edit ca0a1736]
        +[[MediaWiki_talk:0488d9f9|Talk]]
        $1 - Wiktionary -{{int:Pagetitle}} +{{int:0488d9f9}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Passwordremindertext&action=edit passwordremindertext]
        -[[MediaWiki_talk:Passwordremindertext|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:724220c3&action=edit 00c46482]
        +[[MediaWiki_talk:724220c3|Talk]]
        Someone (probably you, from IP address $1) requested that we send you a new Wiktionary login password. The password for user "$2" is now "$3". You should log in and change your password now. -{{int:Passwordremindertext}} +{{int:724220c3}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Passwordremindertitle&action=edit passwordremindertitle]
        -[[MediaWiki_talk:Passwordremindertitle|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:67675177&action=edit 9943fd1d]
        +[[MediaWiki_talk:67675177|Talk]]
        Password reminder from Wiktionary -{{int:Passwordremindertitle}} +{{int:67675177}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Passwordsent&action=edit passwordsent]
        -[[MediaWiki_talk:Passwordsent|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:feea022e&action=edit 52c6d21a]
        +[[MediaWiki_talk:feea022e|Talk]]
        A new password has been sent to the e-mail address registered for "$1". Please log in again after you receive it. -{{int:Passwordsent}} +{{int:feea022e}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Perfcached&action=edit perfcached]
        -[[MediaWiki_talk:Perfcached|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:d89b33a4&action=edit 6148b748]
        +[[MediaWiki_talk:d89b33a4|Talk]]
        The following data is cached and may not be completely up to date: -{{int:Perfcached}} +{{int:d89b33a4}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Perfdisabled&action=edit perfdisabled]
        -[[MediaWiki_talk:Perfdisabled|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:7c3d6ba1&action=edit edb94b6f]
        +[[MediaWiki_talk:7c3d6ba1|Talk]]
        Sorry! This feature has been temporarily disabled because it slows the database down to the point that no one can use the wiki. -{{int:Perfdisabled}} +{{int:7c3d6ba1}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Perfdisabledsub&action=edit perfdisabledsub]
        -[[MediaWiki_talk:Perfdisabledsub|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:ba8fb63e&action=edit 7971fbbc]
        +[[MediaWiki_talk:ba8fb63e|Talk]]
        Here's a saved copy from $1: -{{int:Perfdisabledsub}} +{{int:ba8fb63e}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Personaltools&action=edit personaltools]
        -[[MediaWiki_talk:Personaltools|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:1f9d5196&action=edit faae8244]
        +[[MediaWiki_talk:1f9d5196|Talk]]
        Personal tools -{{int:Personaltools}} +{{int:1f9d5196}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Portal&action=edit portal]
        -[[MediaWiki_talk:Portal|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:b55223c7&action=edit 23f3fd77]
        +[[MediaWiki_talk:b55223c7|Talk]]
        Community portal -{{int:Portal}} +{{int:b55223c7}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Portal-url&action=edit portal-url]
        -[[MediaWiki_talk:Portal-url|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:b6100630&action=edit d69501d7]
        +[[MediaWiki_talk:b6100630|Talk]]
        Wiktionary:Community Portal -{{int:Portal-url}} +{{int:b6100630}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Postcomment&action=edit postcomment]
        -[[MediaWiki_talk:Postcomment|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:83c6e160&action=edit 7ce546d1]
        +[[MediaWiki_talk:83c6e160|Talk]]
        Post a comment -{{int:Postcomment}} +{{int:83c6e160}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Poweredby&action=edit poweredby]
        -[[MediaWiki_talk:Poweredby|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:f715eef0&action=edit 03d7f055]
        +[[MediaWiki_talk:f715eef0|Talk]]
        Wiktionary is powered by [http://www.mediawiki.org/ MediaWiki], an open source wiki engine. -{{int:Poweredby}} +{{int:f715eef0}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Powersearch&action=edit powersearch]
        -[[MediaWiki_talk:Powersearch|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:5f86f380&action=edit fe586261]
        +[[MediaWiki_talk:5f86f380|Talk]]
        Search -{{int:Powersearch}} +{{int:5f86f380}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Powersearchtext&action=edit powersearchtext]
        -[[MediaWiki_talk:Powersearchtext|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:02360031&action=edit 7c50040c]
        +[[MediaWiki_talk:02360031|Talk]]
        Search in namespaces :<br /> $1<br /> $2 List redirects &nbsp; Search for $3 $9 -{{int:Powersearchtext}} +{{int:02360031}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Preferences&action=edit preferences]
        -[[MediaWiki_talk:Preferences|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:9dfd349e&action=edit dcedb31d]
        +[[MediaWiki_talk:9dfd349e|Talk]]
        Preferences -{{int:Preferences}} +{{int:9dfd349e}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Prefs-help-userdata&action=edit prefs-help-userdata]
        -[[MediaWiki_talk:Prefs-help-userdata|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:6b97fde2&action=edit 4d381b11]
        +[[MediaWiki_talk:6b97fde2|Talk]]
        * <strong>Real name</strong> (optional): if you choose to provide it this will be used for giving you attribution for your work.<br/> * <strong>Email</strong> (optional): Enables people to contact you through the website without you having to reveal your email address to them, and it can be used to send you a new password if you forget it. -{{int:Prefs-help-userdata}} +{{int:6b97fde2}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Prefs-misc&action=edit prefs-misc]
        -[[MediaWiki_talk:Prefs-misc|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:30cafb20&action=edit 4413aea7]
        +[[MediaWiki_talk:30cafb20|Talk]]
        Misc settings -{{int:Prefs-misc}} +{{int:30cafb20}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Prefs-personal&action=edit prefs-personal]
        -[[MediaWiki_talk:Prefs-personal|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:58796ee5&action=edit 79de347d]
        +[[MediaWiki_talk:58796ee5|Talk]]
        User data -{{int:Prefs-personal}} +{{int:58796ee5}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Prefs-rc&action=edit prefs-rc]
        -[[MediaWiki_talk:Prefs-rc|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:e055ac90&action=edit b8a6f738]
        +[[MediaWiki_talk:e055ac90|Talk]]
        Recent changes and stub display -{{int:Prefs-rc}} +{{int:e055ac90}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Prefslogintext&action=edit prefslogintext]
        -[[MediaWiki_talk:Prefslogintext|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:0603b5a9&action=edit 3b8a7d0e]
        +[[MediaWiki_talk:0603b5a9|Talk]]
        You are logged in as "$1". Your internal ID number is $2. See [[Wiktionary:User preferences help]] for help deciphering the options. -{{int:Prefslogintext}} +{{int:0603b5a9}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Prefsnologin&action=edit prefsnologin]
        -[[MediaWiki_talk:Prefsnologin|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:2366fb91&action=edit f2475be5]
        +[[MediaWiki_talk:2366fb91|Talk]]
        Not logged in -{{int:Prefsnologin}} +{{int:2366fb91}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Prefsnologintext&action=edit prefsnologintext]
        -[[MediaWiki_talk:Prefsnologintext|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:0389a76a&action=edit 69cb02c9]
        +[[MediaWiki_talk:0389a76a|Talk]]
        You must be <a href="/wiki/Special:Userlogin">logged in</a> to set user preferences. -{{int:Prefsnologintext}} +{{int:0389a76a}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Prefsreset&action=edit prefsreset]
        -[[MediaWiki_talk:Prefsreset|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:e6216751&action=edit 2b688ff4]
        +[[MediaWiki_talk:e6216751|Talk]]
        Preferences have been reset from storage. -{{int:Prefsreset}} +{{int:e6216751}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Preview&action=edit preview]
        -[[MediaWiki_talk:Preview|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:f1fbb2b4&action=edit 1aa787fe]
        +[[MediaWiki_talk:f1fbb2b4|Talk]]
        Preview -{{int:Preview}} +{{int:f1fbb2b4}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Previewconflict&action=edit previewconflict]
        -[[MediaWiki_talk:Previewconflict|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:7357cd58&action=edit 353820b9]
        +[[MediaWiki_talk:7357cd58|Talk]]
        This preview reflects the text in the upper text editing area as it will appear if you choose to save. -{{int:Previewconflict}} +{{int:7357cd58}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Previewnote&action=edit previewnote]
        -[[MediaWiki_talk:Previewnote|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:f0bd6ebe&action=edit 2281018c]
        +[[MediaWiki_talk:f0bd6ebe|Talk]]
        Remember that this is only a preview, and has not yet been saved! -{{int:Previewnote}} +{{int:f0bd6ebe}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Prevn&action=edit prevn]
        -[[MediaWiki_talk:Prevn|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:c7db0778&action=edit 8b3bb669]
        +[[MediaWiki_talk:c7db0778|Talk]]
        previous $1 -{{int:Prevn}} +{{int:c7db0778}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Printableversion&action=edit printableversion]
        -[[MediaWiki_talk:Printableversion|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:0a67b813&action=edit e1a919ba]
        +[[MediaWiki_talk:0a67b813|Talk]]
        Printable version -{{int:Printableversion}} +{{int:0a67b813}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Printsubtitle&action=edit printsubtitle]
        -[[MediaWiki_talk:Printsubtitle|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:dc3b6f21&action=edit d4d3cccd]
        +[[MediaWiki_talk:dc3b6f21|Talk]]
        (From http://tl.wiktionary.org) -{{int:Printsubtitle}} +{{int:dc3b6f21}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Protect&action=edit protect]
        -[[MediaWiki_talk:Protect|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:016ac2dc&action=edit 145969f1]
        +[[MediaWiki_talk:016ac2dc|Talk]]
        Protect -{{int:Protect}} +{{int:016ac2dc}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Protectcomment&action=edit protectcomment]
        -[[MediaWiki_talk:Protectcomment|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:073135b4&action=edit bf7f9e49]
        +[[MediaWiki_talk:073135b4|Talk]]
        Reason for protecting -{{int:Protectcomment}} +{{int:073135b4}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Protectedarticle&action=edit protectedarticle]
        -[[MediaWiki_talk:Protectedarticle|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:3ee691ce&action=edit 1f880b64]
        +[[MediaWiki_talk:3ee691ce|Talk]]
        protected [[$1]] -{{int:Protectedarticle}} +{{int:3ee691ce}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Protectedpage&action=edit protectedpage]
        -[[MediaWiki_talk:Protectedpage|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:a44b308c&action=edit 7afa7fea]
        +[[MediaWiki_talk:a44b308c|Talk]]
        Protected page -{{int:Protectedpage}} +{{int:a44b308c}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Protectedpagewarning&action=edit protectedpagewarning]
        -[[MediaWiki_talk:Protectedpagewarning|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:0017a4f5&action=edit 962032da]
        +[[MediaWiki_talk:0017a4f5|Talk]]
        WARNING: This page has been locked so that only users with sysop privileges can edit it. Be sure you are following the <a href='/w/wiki.phtml/Wiktionary:Protected_page_guidelines'>protected page guidelines</a>. -{{int:Protectedpagewarning}} +{{int:0017a4f5}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Protectedtext&action=edit protectedtext]
        -[[MediaWiki_talk:Protectedtext|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:cf2a914e&action=edit 561f00bf]
        +[[MediaWiki_talk:cf2a914e|Talk]]
        This page has been locked to prevent editing; there are a number of reasons why this may be so, please see @@ -3516,222 +3516,222 @@ a number of reasons why this may be so, please see You can view and copy the source of this page: -{{int:Protectedtext}} +{{int:cf2a914e}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Protectlogpage&action=edit protectlogpage]
        -[[MediaWiki_talk:Protectlogpage|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:bb915483&action=edit 85888484]
        +[[MediaWiki_talk:bb915483|Talk]]
        Protection_log -{{int:Protectlogpage}} +{{int:bb915483}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Protectlogtext&action=edit protectlogtext]
        -[[MediaWiki_talk:Protectlogtext|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:061ec7fa&action=edit 197cfa0d]
        +[[MediaWiki_talk:061ec7fa|Talk]]
        Below is a list of page locks/unlocks. See [[Wiktionary:Protected page]] for more information. -{{int:Protectlogtext}} +{{int:061ec7fa}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Protectpage&action=edit protectpage]
        -[[MediaWiki_talk:Protectpage|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:d2ae1354&action=edit 33c2c02c]
        +[[MediaWiki_talk:d2ae1354|Talk]]
        Protect page -{{int:Protectpage}} +{{int:d2ae1354}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Protectreason&action=edit protectreason]
        -[[MediaWiki_talk:Protectreason|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:c0e9bbaf&action=edit 5cbc043a]
        +[[MediaWiki_talk:c0e9bbaf|Talk]]
        (give a reason) -{{int:Protectreason}} +{{int:c0e9bbaf}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Protectsub&action=edit protectsub]
        -[[MediaWiki_talk:Protectsub|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:23176a41&action=edit 24a81acc]
        +[[MediaWiki_talk:23176a41|Talk]]
        (Protecting "$1") -{{int:Protectsub}} +{{int:23176a41}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Protectthispage&action=edit protectthispage]
        -[[MediaWiki_talk:Protectthispage|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:884b47b3&action=edit 77ca39fa]
        +[[MediaWiki_talk:884b47b3|Talk]]
        Protect this page -{{int:Protectthispage}} +{{int:884b47b3}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Proxyblocker&action=edit proxyblocker]
        -[[MediaWiki_talk:Proxyblocker|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:0ebe1928&action=edit 11599708]
        +[[MediaWiki_talk:0ebe1928|Talk]]
        Proxy blocker -{{int:Proxyblocker}} +{{int:0ebe1928}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Proxyblockreason&action=edit proxyblockreason]
        -[[MediaWiki_talk:Proxyblockreason|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:0ccb1a72&action=edit f4482395]
        +[[MediaWiki_talk:0ccb1a72|Talk]]
        Your IP address has been blocked because it is an open proxy. Please contact your Internet service provider or tech support and inform them of this serious security problem. -{{int:Proxyblockreason}} +{{int:0ccb1a72}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Proxyblocksuccess&action=edit proxyblocksuccess]
        -[[MediaWiki_talk:Proxyblocksuccess|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:88af6e64&action=edit 01b6671f]
        +[[MediaWiki_talk:88af6e64|Talk]]
        Done. -{{int:Proxyblocksuccess}} +{{int:88af6e64}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Qbbrowse&action=edit qbbrowse]
        -[[MediaWiki_talk:Qbbrowse|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:b1594c4a&action=edit 596b17aa]
        +[[MediaWiki_talk:b1594c4a|Talk]]
        Browse -{{int:Qbbrowse}} +{{int:b1594c4a}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Qbedit&action=edit qbedit]
        -[[MediaWiki_talk:Qbedit|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:25b61f80&action=edit 9e11e13b]
        +[[MediaWiki_talk:25b61f80|Talk]]
        Edit -{{int:Qbedit}} +{{int:25b61f80}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Qbfind&action=edit qbfind]
        -[[MediaWiki_talk:Qbfind|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:e1a9ed9d&action=edit cc717307]
        +[[MediaWiki_talk:e1a9ed9d|Talk]]
        Find -{{int:Qbfind}} +{{int:e1a9ed9d}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Qbmyoptions&action=edit qbmyoptions]
        -[[MediaWiki_talk:Qbmyoptions|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:24074cfc&action=edit a40d0b3f]
        +[[MediaWiki_talk:24074cfc|Talk]]
        My pages -{{int:Qbmyoptions}} +{{int:24074cfc}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Qbpageinfo&action=edit qbpageinfo]
        -[[MediaWiki_talk:Qbpageinfo|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:af83fbba&action=edit 8f794a0f]
        +[[MediaWiki_talk:af83fbba|Talk]]
        Context -{{int:Qbpageinfo}} +{{int:af83fbba}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Qbpageoptions&action=edit qbpageoptions]
        -[[MediaWiki_talk:Qbpageoptions|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:c8fff0e7&action=edit 20fec244]
        +[[MediaWiki_talk:c8fff0e7|Talk]]
        This page -{{int:Qbpageoptions}} +{{int:c8fff0e7}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Qbsettings&action=edit qbsettings]
        -[[MediaWiki_talk:Qbsettings|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:5a6ec2af&action=edit 2dfd6121]
        +[[MediaWiki_talk:5a6ec2af|Talk]]
        Quickbar settings -{{int:Qbsettings}} +{{int:5a6ec2af}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Qbspecialpages&action=edit qbspecialpages]
        -[[MediaWiki_talk:Qbspecialpages|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:8eda832f&action=edit e97e9088]
        +[[MediaWiki_talk:8eda832f|Talk]]
        Special pages -{{int:Qbspecialpages}} +{{int:8eda832f}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Querybtn&action=edit querybtn]
        -[[MediaWiki_talk:Querybtn|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:ce1c6b9a&action=edit dc17545e]
        +[[MediaWiki_talk:ce1c6b9a|Talk]]
        Submit query -{{int:Querybtn}} +{{int:ce1c6b9a}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Querysuccessful&action=edit querysuccessful]
        -[[MediaWiki_talk:Querysuccessful|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:342970ff&action=edit 7f2e7314]
        +[[MediaWiki_talk:342970ff|Talk]]
        Query successful -{{int:Querysuccessful}} +{{int:342970ff}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Randompage&action=edit randompage]
        -[[MediaWiki_talk:Randompage|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:c2300ac1&action=edit 08f4cb5c]
        +[[MediaWiki_talk:c2300ac1|Talk]]
        Random page -{{int:Randompage}} +{{int:c2300ac1}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Range_block_disabled&action=edit range_block_disabled]
        -[[MediaWiki_talk:Range_block_disabled|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:9f84f8de&action=edit 0da9559a]
        +[[MediaWiki_talk:9f84f8de|Talk]]
        The sysop ability to create range blocks is disabled. -{{int:Range_block_disabled}} +{{int:9f84f8de}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Rchide&action=edit rchide]
        -[[MediaWiki_talk:Rchide|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:f65142b8&action=edit 65c24302]
        +[[MediaWiki_talk:f65142b8|Talk]]
        in $4 form; $1 minor edits; $2 secondary namespaces; $3 multiple edits. -{{int:Rchide}} +{{int:f65142b8}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Rclinks&action=edit rclinks]
        -[[MediaWiki_talk:Rclinks|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:78b9278a&action=edit 96bcbd6a]
        +[[MediaWiki_talk:78b9278a|Talk]]
        Show last $1 changes in last $2 days<br />$3 -{{int:Rclinks}} +{{int:78b9278a}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Rclistfrom&action=edit rclistfrom]
        -[[MediaWiki_talk:Rclistfrom|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:ead9cd8b&action=edit 69cdd5ad]
        +[[MediaWiki_talk:ead9cd8b|Talk]]
        Show new changes starting from $1 -{{int:Rclistfrom}} +{{int:ead9cd8b}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Rcliu&action=edit rcliu]
        -[[MediaWiki_talk:Rcliu|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:bad8b81d&action=edit f13491ba]
        +[[MediaWiki_talk:bad8b81d|Talk]]
        ; $1 edits from logged in users -{{int:Rcliu}} +{{int:bad8b81d}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Rcloaderr&action=edit rcloaderr]
        -[[MediaWiki_talk:Rcloaderr|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:58a7c0de&action=edit ced7752e]
        +[[MediaWiki_talk:58a7c0de|Talk]]
        Loading recent changes -{{int:Rcloaderr}} +{{int:58a7c0de}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Rclsub&action=edit rclsub]
        -[[MediaWiki_talk:Rclsub|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:c3fd1aca&action=edit d259fbf6]
        +[[MediaWiki_talk:c3fd1aca|Talk]]
        (to pages linked from "$1") -{{int:Rclsub}} +{{int:c3fd1aca}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Rcnote&action=edit rcnote]
        -[[MediaWiki_talk:Rcnote|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:2c0a654c&action=edit 15ea8401]
        +[[MediaWiki_talk:2c0a654c|Talk]]
        Below are the last <strong>$1</strong> changes in last <strong>$2</strong> days. -{{int:Rcnote}} +{{int:2c0a654c}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Rcnotefrom&action=edit rcnotefrom]
        -[[MediaWiki_talk:Rcnotefrom|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:0a00aaba&action=edit c516366b]
        +[[MediaWiki_talk:0a00aaba|Talk]]
        Below are the changes since <b>$2</b> (up to <b>$1</b> shown). -{{int:Rcnotefrom}} +{{int:0a00aaba}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Readonly&action=edit readonly]
        -[[MediaWiki_talk:Readonly|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:1d920fff&action=edit 9a277182]
        +[[MediaWiki_talk:1d920fff|Talk]]
        Database locked -{{int:Readonly}} +{{int:1d920fff}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Readonlytext&action=edit readonlytext]
        -[[MediaWiki_talk:Readonlytext|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:64743780&action=edit e5990e81]
        +[[MediaWiki_talk:64743780|Talk]]
        The database is currently locked to new entries and other modifications, probably for routine database maintenance, @@ -3739,476 +3739,476 @@ after which it will be back to normal. The administrator who locked it offered this explanation: <p>$1 -{{int:Readonlytext}} +{{int:64743780}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Readonlywarning&action=edit readonlywarning]
        -[[MediaWiki_talk:Readonlywarning|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:8c9d6af6&action=edit 74bcbeed]
        +[[MediaWiki_talk:8c9d6af6|Talk]]
        WARNING: The database has been locked for maintenance, so you will not be able to save your edits right now. You may wish to cut-n-paste the text into a text file and save it for later. -{{int:Readonlywarning}} +{{int:8c9d6af6}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Recentchanges&action=edit recentchanges]
        -[[MediaWiki_talk:Recentchanges|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:4d75dd33&action=edit 51734654]
        +[[MediaWiki_talk:4d75dd33|Talk]]
        Recent changes -{{int:Recentchanges}} +{{int:4d75dd33}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Recentchangescount&action=edit recentchangescount]
        -[[MediaWiki_talk:Recentchangescount|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:40f1d259&action=edit 44d93957]
        +[[MediaWiki_talk:40f1d259|Talk]]
        Number of titles in recent changes -{{int:Recentchangescount}} +{{int:40f1d259}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Recentchangeslinked&action=edit recentchangeslinked]
        -[[MediaWiki_talk:Recentchangeslinked|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:312aafe1&action=edit b5822b16]
        +[[MediaWiki_talk:312aafe1|Talk]]
        Related changes -{{int:Recentchangeslinked}} +{{int:312aafe1}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Recentchangestext&action=edit recentchangestext]
        -[[MediaWiki_talk:Recentchangestext|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:2f453993&action=edit 049f8c5f]
        +[[MediaWiki_talk:2f453993|Talk]]
        Track the most recent changes to the wiki on this page. -{{int:Recentchangestext}} +{{int:2f453993}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Redirectedfrom&action=edit redirectedfrom]
        -[[MediaWiki_talk:Redirectedfrom|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:7124fa4a&action=edit 43d741c1]
        +[[MediaWiki_talk:7124fa4a|Talk]]
        (Redirected from $1) -{{int:Redirectedfrom}} +{{int:7124fa4a}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Remembermypassword&action=edit remembermypassword]
        -[[MediaWiki_talk:Remembermypassword|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:54d89323&action=edit 4eef1c9f]
        +[[MediaWiki_talk:54d89323|Talk]]
        Remember my password across sessions. -{{int:Remembermypassword}} +{{int:54d89323}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Removechecked&action=edit removechecked]
        -[[MediaWiki_talk:Removechecked|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:537f5507&action=edit bfa5dc98]
        +[[MediaWiki_talk:537f5507|Talk]]
        Remove checked items from watchlist -{{int:Removechecked}} +{{int:537f5507}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Removedwatch&action=edit removedwatch]
        -[[MediaWiki_talk:Removedwatch|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:78e82769&action=edit eeadf87c]
        +[[MediaWiki_talk:78e82769|Talk]]
        Removed from watchlist -{{int:Removedwatch}} +{{int:78e82769}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Removedwatchtext&action=edit removedwatchtext]
        -[[MediaWiki_talk:Removedwatchtext|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:ad711aa8&action=edit d9807612]
        +[[MediaWiki_talk:ad711aa8|Talk]]
        The page "$1" has been removed from your watchlist. -{{int:Removedwatchtext}} +{{int:ad711aa8}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Removingchecked&action=edit removingchecked]
        -[[MediaWiki_talk:Removingchecked|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:48b0bcb6&action=edit 7d083ee5]
        +[[MediaWiki_talk:48b0bcb6|Talk]]
        Removing requested items from watchlist... -{{int:Removingchecked}} +{{int:48b0bcb6}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Resetprefs&action=edit resetprefs]
        -[[MediaWiki_talk:Resetprefs|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:2f022894&action=edit 4b81718e]
        +[[MediaWiki_talk:2f022894|Talk]]
        Reset preferences -{{int:Resetprefs}} +{{int:2f022894}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Restorelink&action=edit restorelink]
        -[[MediaWiki_talk:Restorelink|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:bc47acaf&action=edit 8f8f7d13]
        +[[MediaWiki_talk:bc47acaf|Talk]]
        $1 deleted edits -{{int:Restorelink}} +{{int:bc47acaf}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Resultsperpage&action=edit resultsperpage]
        -[[MediaWiki_talk:Resultsperpage|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:6add8c15&action=edit 8f0c68f0]
        +[[MediaWiki_talk:6add8c15|Talk]]
        Hits to show per page -{{int:Resultsperpage}} +{{int:6add8c15}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Retrievedfrom&action=edit retrievedfrom]
        -[[MediaWiki_talk:Retrievedfrom|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:6f54af5b&action=edit a5e2f101]
        +[[MediaWiki_talk:6f54af5b|Talk]]
        Retrieved from "$1" -{{int:Retrievedfrom}} +{{int:6f54af5b}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Returnto&action=edit returnto]
        -[[MediaWiki_talk:Returnto|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:3dcff1b0&action=edit 58f19667]
        +[[MediaWiki_talk:3dcff1b0|Talk]]
        Return to $1. -{{int:Returnto}} +{{int:3dcff1b0}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Retypenew&action=edit retypenew]
        -[[MediaWiki_talk:Retypenew|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:b9ac79c6&action=edit 2b9171b6]
        +[[MediaWiki_talk:b9ac79c6|Talk]]
        Retype new password -{{int:Retypenew}} +{{int:b9ac79c6}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Reupload&action=edit reupload]
        -[[MediaWiki_talk:Reupload|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:b7ae8f64&action=edit a3eee606]
        +[[MediaWiki_talk:b7ae8f64|Talk]]
        Re-upload -{{int:Reupload}} +{{int:b7ae8f64}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Reuploaddesc&action=edit reuploaddesc]
        -[[MediaWiki_talk:Reuploaddesc|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:cd783da0&action=edit d7ba5bcb]
        +[[MediaWiki_talk:cd783da0|Talk]]
        Return to the upload form. -{{int:Reuploaddesc}} +{{int:cd783da0}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Reverted&action=edit reverted]
        -[[MediaWiki_talk:Reverted|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:c73c43f3&action=edit f322de9a]
        +[[MediaWiki_talk:c73c43f3|Talk]]
        Reverted to earlier revision -{{int:Reverted}} +{{int:c73c43f3}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Revertimg&action=edit revertimg]
        -[[MediaWiki_talk:Revertimg|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:18591a4b&action=edit 0d86ed82]
        +[[MediaWiki_talk:18591a4b|Talk]]
        rev -{{int:Revertimg}} +{{int:18591a4b}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Revertpage&action=edit revertpage]
        -[[MediaWiki_talk:Revertpage|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:b24ef4f1&action=edit 8ce494ea]
        +[[MediaWiki_talk:b24ef4f1|Talk]]
        Reverted edit of $2, changed back to last version by $1 -{{int:Revertpage}} +{{int:b24ef4f1}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Revhistory&action=edit revhistory]
        -[[MediaWiki_talk:Revhistory|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:96e64350&action=edit 949a77c7]
        +[[MediaWiki_talk:96e64350|Talk]]
        Revision history -{{int:Revhistory}} +{{int:96e64350}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Revisionasof&action=edit revisionasof]
        -[[MediaWiki_talk:Revisionasof|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:0c299dc7&action=edit 3338672b]
        +[[MediaWiki_talk:0c299dc7|Talk]]
        Revision as of $1 -{{int:Revisionasof}} +{{int:0c299dc7}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Revnotfound&action=edit revnotfound]
        -[[MediaWiki_talk:Revnotfound|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:159f321a&action=edit d567812b]
        +[[MediaWiki_talk:159f321a|Talk]]
        Revision not found -{{int:Revnotfound}} +{{int:159f321a}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Revnotfoundtext&action=edit revnotfoundtext]
        -[[MediaWiki_talk:Revnotfoundtext|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:955fec48&action=edit 4060f114]
        +[[MediaWiki_talk:955fec48|Talk]]
        The old revision of the page you asked for could not be found. Please check the URL you used to access this page. -{{int:Revnotfoundtext}} +{{int:955fec48}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Rfcurl&action=edit rfcurl]
        -[[MediaWiki_talk:Rfcurl|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:b2f04988&action=edit e8b606c2]
        +[[MediaWiki_talk:b2f04988|Talk]]
        http://www.faqs.org/rfcs/rfc$1.html -{{int:Rfcurl}} +{{int:b2f04988}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Rights&action=edit rights]
        -[[MediaWiki_talk:Rights|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:db94ff6b&action=edit 1407cb23]
        +[[MediaWiki_talk:db94ff6b|Talk]]
        Rights: -{{int:Rights}} +{{int:db94ff6b}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Rollback&action=edit rollback]
        -[[MediaWiki_talk:Rollback|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:f28daee2&action=edit ff3a6f3b]
        +[[MediaWiki_talk:f28daee2|Talk]]
        Roll back edits -{{int:Rollback}} +{{int:f28daee2}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Rollback_short&action=edit rollback_short]
        -[[MediaWiki_talk:Rollback_short|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:2aaec24c&action=edit 5f0fa7e7]
        +[[MediaWiki_talk:2aaec24c|Talk]]
        Rollback -{{int:Rollback_short}} +{{int:2aaec24c}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Rollbackfailed&action=edit rollbackfailed]
        -[[MediaWiki_talk:Rollbackfailed|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:54d37a4c&action=edit 73c685e6]
        +[[MediaWiki_talk:54d37a4c|Talk]]
        Rollback failed -{{int:Rollbackfailed}} +{{int:54d37a4c}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Rollbacklink&action=edit rollbacklink]
        -[[MediaWiki_talk:Rollbacklink|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:b82a8f42&action=edit 1a9fae49]
        +[[MediaWiki_talk:b82a8f42|Talk]]
        rollback -{{int:Rollbacklink}} +{{int:b82a8f42}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Rows&action=edit rows]
        -[[MediaWiki_talk:Rows|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:52d0b352&action=edit 6c30d261]
        +[[MediaWiki_talk:52d0b352|Talk]]
        Rows -{{int:Rows}} +{{int:52d0b352}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Savearticle&action=edit savearticle]
        -[[MediaWiki_talk:Savearticle|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:5a43014e&action=edit 1308cde0]
        +[[MediaWiki_talk:5a43014e|Talk]]
        Save page -{{int:Savearticle}} +{{int:5a43014e}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Savedprefs&action=edit savedprefs]
        -[[MediaWiki_talk:Savedprefs|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:0e53fdc8&action=edit 5f6543d0]
        +[[MediaWiki_talk:0e53fdc8|Talk]]
        Your preferences have been saved. -{{int:Savedprefs}} +{{int:0e53fdc8}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Savefile&action=edit savefile]
        -[[MediaWiki_talk:Savefile|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:e1415b15&action=edit d6d40a58]
        +[[MediaWiki_talk:e1415b15|Talk]]
        Save file -{{int:Savefile}} +{{int:e1415b15}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Saveprefs&action=edit saveprefs]
        -[[MediaWiki_talk:Saveprefs|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:ad98e68e&action=edit 34ac956e]
        +[[MediaWiki_talk:ad98e68e|Talk]]
        Save preferences -{{int:Saveprefs}} +{{int:ad98e68e}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Search&action=edit search]
        -[[MediaWiki_talk:Search|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:bce06414&action=edit 3559d7ac]
        +[[MediaWiki_talk:bce06414|Talk]]
        Search -{{int:Search}} +{{int:bce06414}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Searchdisabled&action=edit searchdisabled]
        -[[MediaWiki_talk:Searchdisabled|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:8f6495a7&action=edit cfa0722d]
        +[[MediaWiki_talk:8f6495a7|Talk]]
        <p>Sorry! Full text search has been disabled temporarily, for performance reasons. In the meantime, you can use the Google search below, which may be out of date.</p> -{{int:Searchdisabled}} +{{int:8f6495a7}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Searchhelppage&action=edit searchhelppage]
        -[[MediaWiki_talk:Searchhelppage|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:72344e87&action=edit 3eea6ce4]
        +[[MediaWiki_talk:72344e87|Talk]]
        Wiktionary:Searching -{{int:Searchhelppage}} +{{int:72344e87}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Searchingwikipedia&action=edit searchingwikipedia]
        -[[MediaWiki_talk:Searchingwikipedia|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:cb9c1653&action=edit da48347f]
        +[[MediaWiki_talk:cb9c1653|Talk]]
        Searching Wiktionary -{{int:Searchingwikipedia}} +{{int:cb9c1653}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Searchquery&action=edit searchquery]
        -[[MediaWiki_talk:Searchquery|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:3d79ca88&action=edit 64bdca9a]
        +[[MediaWiki_talk:3d79ca88|Talk]]
        For query "$1" -{{int:Searchquery}} +{{int:3d79ca88}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Searchresults&action=edit searchresults]
        -[[MediaWiki_talk:Searchresults|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:b2f7c0e1&action=edit 8ef6d4d3]
        +[[MediaWiki_talk:b2f7c0e1|Talk]]
        Search results -{{int:Searchresults}} +{{int:b2f7c0e1}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Searchresultshead&action=edit searchresultshead]
        -[[MediaWiki_talk:Searchresultshead|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:e5ed9018&action=edit 83d578cd]
        +[[MediaWiki_talk:e5ed9018|Talk]]
        Search result settings -{{int:Searchresultshead}} +{{int:e5ed9018}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Searchresulttext&action=edit searchresulttext]
        -[[MediaWiki_talk:Searchresulttext|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:8cab5350&action=edit 781b9fee]
        +[[MediaWiki_talk:8cab5350|Talk]]
        For more information about searching Wiktionary, see $1. -{{int:Searchresulttext}} +{{int:8cab5350}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Sectionedit&action=edit sectionedit]
        -[[MediaWiki_talk:Sectionedit|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:37b6df63&action=edit a26b768d]
        +[[MediaWiki_talk:37b6df63|Talk]]
        (section) -{{int:Sectionedit}} +{{int:37b6df63}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Selectnewerversionfordiff&action=edit selectnewerversionfordiff]
        -[[MediaWiki_talk:Selectnewerversionfordiff|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:be4aaa62&action=edit 2ddce298]
        +[[MediaWiki_talk:be4aaa62|Talk]]
        Select a newer version for comparison -{{int:Selectnewerversionfordiff}} +{{int:be4aaa62}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Selectolderversionfordiff&action=edit selectolderversionfordiff]
        -[[MediaWiki_talk:Selectolderversionfordiff|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:5124db4d&action=edit 80ffa0cb]
        +[[MediaWiki_talk:5124db4d|Talk]]
        Select an older version for comparison -{{int:Selectolderversionfordiff}} +{{int:5124db4d}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Selectonly&action=edit selectonly]
        -[[MediaWiki_talk:Selectonly|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:a3c0a747&action=edit 5ec1b504]
        +[[MediaWiki_talk:a3c0a747|Talk]]
        Only read-only queries are allowed. -{{int:Selectonly}} +{{int:a3c0a747}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Selflinks&action=edit selflinks]
        -[[MediaWiki_talk:Selflinks|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:e93eec9e&action=edit 06cf46b3]
        +[[MediaWiki_talk:e93eec9e|Talk]]
        Pages with Self Links -{{int:Selflinks}} +{{int:e93eec9e}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Selflinkstext&action=edit selflinkstext]
        -[[MediaWiki_talk:Selflinkstext|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:f993dd01&action=edit e7caf074]
        +[[MediaWiki_talk:f993dd01|Talk]]
        The following pages contain a link to themselves, which they should not. -{{int:Selflinkstext}} +{{int:f993dd01}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Seriousxhtmlerrors&action=edit seriousxhtmlerrors]
        -[[MediaWiki_talk:Seriousxhtmlerrors|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:fa56e16c&action=edit 249c203d]
        +[[MediaWiki_talk:fa56e16c|Talk]]
        There were serious xhtml markup errors detected by tidy. -{{int:Seriousxhtmlerrors}} +{{int:fa56e16c}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Servertime&action=edit servertime]
        -[[MediaWiki_talk:Servertime|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:5123f28d&action=edit 8fcf47da]
        +[[MediaWiki_talk:5123f28d|Talk]]
        Server time is now -{{int:Servertime}} +{{int:5123f28d}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Set_rights_fail&action=edit set_rights_fail]
        -[[MediaWiki_talk:Set_rights_fail|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:4075f71a&action=edit 79d35179]
        +[[MediaWiki_talk:4075f71a|Talk]]
        <b>User rights for "$1" could not be set. (Did you enter the name correctly?)</b> -{{int:Set_rights_fail}} +{{int:4075f71a}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Set_user_rights&action=edit set_user_rights]
        -[[MediaWiki_talk:Set_user_rights|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:13187ffc&action=edit f2cd2a2a]
        +[[MediaWiki_talk:13187ffc|Talk]]
        Set user rights -{{int:Set_user_rights}} +{{int:13187ffc}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Setbureaucratflag&action=edit setbureaucratflag]
        -[[MediaWiki_talk:Setbureaucratflag|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:56640761&action=edit c5bfd68a]
        +[[MediaWiki_talk:56640761|Talk]]
        Set bureaucrat flag -{{int:Setbureaucratflag}} +{{int:56640761}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Shortpages&action=edit shortpages]
        -[[MediaWiki_talk:Shortpages|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:0d3f883b&action=edit fff9c94a]
        +[[MediaWiki_talk:0d3f883b|Talk]]
        Short pages -{{int:Shortpages}} +{{int:0d3f883b}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Show&action=edit show]
        -[[MediaWiki_talk:Show|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:d97d1ee3&action=edit 9fb29051]
        +[[MediaWiki_talk:d97d1ee3|Talk]]
        show -{{int:Show}} +{{int:d97d1ee3}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Showhideminor&action=edit showhideminor]
        -[[MediaWiki_talk:Showhideminor|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:f1a75ecf&action=edit 4fe654c7]
        +[[MediaWiki_talk:f1a75ecf|Talk]]
        $1 minor edits | $2 bots | $3 logged in users -{{int:Showhideminor}} +{{int:f1a75ecf}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Showingresults&action=edit showingresults]
        -[[MediaWiki_talk:Showingresults|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:72fad336&action=edit 9569cf23]
        +[[MediaWiki_talk:72fad336|Talk]]
        Showing below <b>$1</b> results starting with #<b>$2</b>. -{{int:Showingresults}} +{{int:72fad336}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Showingresultsnum&action=edit showingresultsnum]
        -[[MediaWiki_talk:Showingresultsnum|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:6db37657&action=edit f7535b52]
        +[[MediaWiki_talk:6db37657|Talk]]
        Showing below <b>$3</b> results starting with #<b>$2</b>. -{{int:Showingresultsnum}} +{{int:6db37657}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Showlast&action=edit showlast]
        -[[MediaWiki_talk:Showlast|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:acbdf814&action=edit 43158759]
        +[[MediaWiki_talk:acbdf814|Talk]]
        Show last $1 images sorted $2. -{{int:Showlast}} +{{int:acbdf814}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Showpreview&action=edit showpreview]
        -[[MediaWiki_talk:Showpreview|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:915318a0&action=edit ac2b4c32]
        +[[MediaWiki_talk:915318a0|Talk]]
        Show preview -{{int:Showpreview}} +{{int:915318a0}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Showtoc&action=edit showtoc]
        -[[MediaWiki_talk:Showtoc|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:cfff5a5a&action=edit 6eeee3cb]
        +[[MediaWiki_talk:cfff5a5a|Talk]]
        show -{{int:Showtoc}} +{{int:cfff5a5a}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Sig_tip&action=edit sig_tip]
        -[[MediaWiki_talk:Sig_tip|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:ac617b53&action=edit 1144c9d9]
        +[[MediaWiki_talk:ac617b53|Talk]]
        Your signature with timestamp -{{int:Sig_tip}} +{{int:ac617b53}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Sitestats&action=edit sitestats]
        -[[MediaWiki_talk:Sitestats|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:f6baa6ad&action=edit 7f5726ac]
        +[[MediaWiki_talk:f6baa6ad|Talk]]
        Site statistics -{{int:Sitestats}} +{{int:f6baa6ad}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Sitestatstext&action=edit sitestatstext]
        -[[MediaWiki_talk:Sitestatstext|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:e150b0f4&action=edit 8e86f95d]
        +[[MediaWiki_talk:e150b0f4|Talk]]
        There are '''$1''' total pages in the database. This includes "talk" pages, pages about Wiktionary, minimal "stub" @@ -4220,931 +4220,931 @@ There have been a total of '''$3''' page views, and ' since the wiki was setup. That comes to '''$5''' average edits per page, and '''$6''' views per edit. -{{int:Sitestatstext}} +{{int:e150b0f4}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Sitesubtitle&action=edit sitesubtitle]
        -[[MediaWiki_talk:Sitesubtitle|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:daaf7240&action=edit 8dca090f]
        +[[MediaWiki_talk:daaf7240|Talk]]
        The Free Encyclopedia -{{int:Sitesubtitle}} +{{int:daaf7240}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Sitesupport&action=edit sitesupport]
        -[[MediaWiki_talk:Sitesupport|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:3b434c6d&action=edit 32b42c53]
        +[[MediaWiki_talk:3b434c6d|Talk]]
        Donations -{{int:Sitesupport}} +{{int:3b434c6d}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Sitetitle&action=edit sitetitle]
        -[[MediaWiki_talk:Sitetitle|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:d75649ef&action=edit d88e8164]
        +[[MediaWiki_talk:d75649ef|Talk]]
        Wiktionary -{{int:Sitetitle}} +{{int:d75649ef}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Siteuser&action=edit siteuser]
        -[[MediaWiki_talk:Siteuser|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:cb06d8a3&action=edit b64ec710]
        +[[MediaWiki_talk:cb06d8a3|Talk]]
        Wiktionary user $1 -{{int:Siteuser}} +{{int:cb06d8a3}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Siteusers&action=edit siteusers]
        -[[MediaWiki_talk:Siteusers|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:d25d37c8&action=edit 4f548531]
        +[[MediaWiki_talk:d25d37c8|Talk]]
        Wiktionary user(s) $1 -{{int:Siteusers}} +{{int:d25d37c8}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Skin&action=edit skin]
        -[[MediaWiki_talk:Skin|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:8f57bd61&action=edit d0cb2acd]
        +[[MediaWiki_talk:8f57bd61|Talk]]
        Skin -{{int:Skin}} +{{int:8f57bd61}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Spamprotectiontext&action=edit spamprotectiontext]
        -[[MediaWiki_talk:Spamprotectiontext|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:d3a6dd4e&action=edit bcd196f9]
        +[[MediaWiki_talk:d3a6dd4e|Talk]]
        The page you wanted to save was blocked by the spam filter. This is probably caused by a link to an external site. You might want to check the following regular expression for patterns that are currently blocked: -{{int:Spamprotectiontext}} +{{int:d3a6dd4e}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Spamprotectiontitle&action=edit spamprotectiontitle]
        -[[MediaWiki_talk:Spamprotectiontitle|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:add33980&action=edit 60a90929]
        +[[MediaWiki_talk:add33980|Talk]]
        Spam protection filter -{{int:Spamprotectiontitle}} +{{int:add33980}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Specialpage&action=edit specialpage]
        -[[MediaWiki_talk:Specialpage|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:984c6817&action=edit 25255195]
        +[[MediaWiki_talk:984c6817|Talk]]
        Special Page -{{int:Specialpage}} +{{int:984c6817}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Specialpages&action=edit specialpages]
        -[[MediaWiki_talk:Specialpages|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:b67d51d8&action=edit 62bc32dc]
        +[[MediaWiki_talk:b67d51d8|Talk]]
        Special pages -{{int:Specialpages}} +{{int:b67d51d8}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Spheading&action=edit spheading]
        -[[MediaWiki_talk:Spheading|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:c9709132&action=edit 73ac2b41]
        +[[MediaWiki_talk:c9709132|Talk]]
        Special pages for all users -{{int:Spheading}} +{{int:c9709132}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Sqlislogged&action=edit sqlislogged]
        -[[MediaWiki_talk:Sqlislogged|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:87ac14f6&action=edit ed31e1e1]
        +[[MediaWiki_talk:87ac14f6|Talk]]
        Please note that all queries are logged. -{{int:Sqlislogged}} +{{int:87ac14f6}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Sqlquery&action=edit sqlquery]
        -[[MediaWiki_talk:Sqlquery|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:00c261e1&action=edit 26cb51a1]
        +[[MediaWiki_talk:00c261e1|Talk]]
        Enter query -{{int:Sqlquery}} +{{int:00c261e1}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Statistics&action=edit statistics]
        -[[MediaWiki_talk:Statistics|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:2086b21f&action=edit 3d18b2ea]
        +[[MediaWiki_talk:2086b21f|Talk]]
        Statistics -{{int:Statistics}} +{{int:2086b21f}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Storedversion&action=edit storedversion]
        -[[MediaWiki_talk:Storedversion|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:8cd0c85e&action=edit 1b9e838c]
        +[[MediaWiki_talk:8cd0c85e|Talk]]
        Stored version -{{int:Storedversion}} +{{int:8cd0c85e}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Stubthreshold&action=edit stubthreshold]
        -[[MediaWiki_talk:Stubthreshold|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:2eb6d4bd&action=edit a5125d69]
        +[[MediaWiki_talk:2eb6d4bd|Talk]]
        Threshold for stub display -{{int:Stubthreshold}} +{{int:2eb6d4bd}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Subcategories&action=edit subcategories]
        -[[MediaWiki_talk:Subcategories|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:f3da206c&action=edit ef062b0e]
        +[[MediaWiki_talk:f3da206c|Talk]]
        Subcategories -{{int:Subcategories}} +{{int:f3da206c}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Subject&action=edit subject]
        -[[MediaWiki_talk:Subject|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:8d183dbd&action=edit 335ce16b]
        +[[MediaWiki_talk:8d183dbd|Talk]]
        Subject/headline -{{int:Subject}} +{{int:8d183dbd}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Subjectpage&action=edit subjectpage]
        -[[MediaWiki_talk:Subjectpage|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:ca29f2df&action=edit d7084ef8]
        +[[MediaWiki_talk:ca29f2df|Talk]]
        View subject -{{int:Subjectpage}} +{{int:ca29f2df}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Successfulupload&action=edit successfulupload]
        -[[MediaWiki_talk:Successfulupload|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:17bc3900&action=edit 3dfd0f51]
        +[[MediaWiki_talk:17bc3900|Talk]]
        Successful upload -{{int:Successfulupload}} +{{int:17bc3900}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Summary&action=edit summary]
        -[[MediaWiki_talk:Summary|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:12b71c3e&action=edit 05535ecf]
        +[[MediaWiki_talk:12b71c3e|Talk]]
        Summary -{{int:Summary}} +{{int:12b71c3e}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Sysopspheading&action=edit sysopspheading]
        -[[MediaWiki_talk:Sysopspheading|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:ee858d9a&action=edit fde4e0f4]
        +[[MediaWiki_talk:ee858d9a|Talk]]
        For sysop use only -{{int:Sysopspheading}} +{{int:ee858d9a}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Sysoptext&action=edit sysoptext]
        -[[MediaWiki_talk:Sysoptext|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:2f758a39&action=edit 85232d4f]
        +[[MediaWiki_talk:2f758a39|Talk]]
        The action you have requested can only be performed by users with "sysop" status. See $1. -{{int:Sysoptext}} +{{int:2f758a39}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Sysoptitle&action=edit sysoptitle]
        -[[MediaWiki_talk:Sysoptitle|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:91b8467b&action=edit 3265b18d]
        +[[MediaWiki_talk:91b8467b|Talk]]
        Sysop access required -{{int:Sysoptitle}} +{{int:91b8467b}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Tableform&action=edit tableform]
        -[[MediaWiki_talk:Tableform|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:77b9c5ad&action=edit 109e51e1]
        +[[MediaWiki_talk:77b9c5ad|Talk]]
        table -{{int:Tableform}} +{{int:77b9c5ad}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Talk&action=edit talk]
        -[[MediaWiki_talk:Talk|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:4e6a710d&action=edit e55e91b2]
        +[[MediaWiki_talk:4e6a710d|Talk]]
        Discussion -{{int:Talk}} +{{int:4e6a710d}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Talkexists&action=edit talkexists]
        -[[MediaWiki_talk:Talkexists|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:c11ac522&action=edit 1ed6d2b4]
        +[[MediaWiki_talk:c11ac522|Talk]]
        The page itself was moved successfully, but the talk page could not be moved because one already exists at the new title. Please merge them manually. -{{int:Talkexists}} +{{int:c11ac522}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Talkpage&action=edit talkpage]
        -[[MediaWiki_talk:Talkpage|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:6a38ff98&action=edit 3c940bbf]
        +[[MediaWiki_talk:6a38ff98|Talk]]
        Discuss this page -{{int:Talkpage}} +{{int:6a38ff98}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Talkpagemoved&action=edit talkpagemoved]
        -[[MediaWiki_talk:Talkpagemoved|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:2b630ea0&action=edit f053e191]
        +[[MediaWiki_talk:2b630ea0|Talk]]
        The corresponding talk page was also moved. -{{int:Talkpagemoved}} +{{int:2b630ea0}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Talkpagenotmoved&action=edit talkpagenotmoved]
        -[[MediaWiki_talk:Talkpagenotmoved|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:2282b1ca&action=edit f3b6a64f]
        +[[MediaWiki_talk:2282b1ca|Talk]]
        The corresponding talk page was <strong>not</strong> moved. -{{int:Talkpagenotmoved}} +{{int:2282b1ca}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Talkpagetext&action=edit talkpagetext]
        -[[MediaWiki_talk:Talkpagetext|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:45e3f76d&action=edit 6534acb5]
        +[[MediaWiki_talk:45e3f76d|Talk]]
        <!-- MediaWiki:talkpagetext --> -{{int:Talkpagetext}} +{{int:45e3f76d}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Textboxsize&action=edit textboxsize]
        -[[MediaWiki_talk:Textboxsize|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:607359f2&action=edit 5788df25]
        +[[MediaWiki_talk:607359f2|Talk]]
        Textbox dimensions -{{int:Textboxsize}} +{{int:607359f2}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Textmatches&action=edit textmatches]
        -[[MediaWiki_talk:Textmatches|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:66571fbc&action=edit 7d66aa0e]
        +[[MediaWiki_talk:66571fbc|Talk]]
        Page text matches -{{int:Textmatches}} +{{int:66571fbc}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Thisisdeleted&action=edit thisisdeleted]
        -[[MediaWiki_talk:Thisisdeleted|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:e1f36741&action=edit 83f663ed]
        +[[MediaWiki_talk:e1f36741|Talk]]
        View or restore $1? -{{int:Thisisdeleted}} +{{int:e1f36741}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Thumbnail-more&action=edit thumbnail-more]
        -[[MediaWiki_talk:Thumbnail-more|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:a29f027b&action=edit a299730b]
        +[[MediaWiki_talk:a29f027b|Talk]]
        Enlarge -{{int:Thumbnail-more}} +{{int:a29f027b}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Timezonelegend&action=edit timezonelegend]
        -[[MediaWiki_talk:Timezonelegend|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:9ced4850&action=edit 36ee6f56]
        +[[MediaWiki_talk:9ced4850|Talk]]
        Time zone -{{int:Timezonelegend}} +{{int:9ced4850}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Timezoneoffset&action=edit timezoneoffset]
        -[[MediaWiki_talk:Timezoneoffset|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:ca45a968&action=edit 9dba4eb8]
        +[[MediaWiki_talk:ca45a968|Talk]]
        Offset -{{int:Timezoneoffset}} +{{int:ca45a968}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Timezonetext&action=edit timezonetext]
        -[[MediaWiki_talk:Timezonetext|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:60bc3c41&action=edit 3f58a2a9]
        +[[MediaWiki_talk:60bc3c41|Talk]]
        Enter number of hours your local time differs from server time (UTC). -{{int:Timezonetext}} +{{int:60bc3c41}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Titlematches&action=edit titlematches]
        -[[MediaWiki_talk:Titlematches|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:2618febd&action=edit e3f5384c]
        +[[MediaWiki_talk:2618febd|Talk]]
        Article title matches -{{int:Titlematches}} +{{int:2618febd}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Toc&action=edit toc]
        -[[MediaWiki_talk:Toc|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:b8684fcf&action=edit 2a609230]
        +[[MediaWiki_talk:b8684fcf|Talk]]
        Table of contents -{{int:Toc}} +{{int:b8684fcf}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Toolbox&action=edit toolbox]
        -[[MediaWiki_talk:Toolbox|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:692107c0&action=edit d75ba923]
        +[[MediaWiki_talk:692107c0|Talk]]
        Toolbox -{{int:Toolbox}} +{{int:692107c0}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Tooltip-addsection&action=edit tooltip-addsection]
        -[[MediaWiki_talk:Tooltip-addsection|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:b9116941&action=edit 04ced041]
        +[[MediaWiki_talk:b9116941|Talk]]
        Add a comment to this page. [alt-+] -{{int:Tooltip-addsection}} +{{int:b9116941}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Tooltip-anontalk&action=edit tooltip-anontalk]
        -[[MediaWiki_talk:Tooltip-anontalk|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:b583d36c&action=edit b987f993]
        +[[MediaWiki_talk:b583d36c|Talk]]
        Discussion about edits from this ip address [alt-n] -{{int:Tooltip-anontalk}} +{{int:b583d36c}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Tooltip-anonuserpage&action=edit tooltip-anonuserpage]
        -[[MediaWiki_talk:Tooltip-anonuserpage|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:9efcbe2f&action=edit e3522c89]
        +[[MediaWiki_talk:9efcbe2f|Talk]]
        The user page for the ip you're editing as [alt-.] -{{int:Tooltip-anonuserpage}} +{{int:9efcbe2f}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Tooltip-article&action=edit tooltip-article]
        -[[MediaWiki_talk:Tooltip-article|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:2a4b9eea&action=edit f3025f7a]
        +[[MediaWiki_talk:2a4b9eea|Talk]]
        View the content page [alt-a] -{{int:Tooltip-article}} +{{int:2a4b9eea}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Tooltip-atom&action=edit tooltip-atom]
        -[[MediaWiki_talk:Tooltip-atom|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:dcd3ca0c&action=edit e420bf33]
        +[[MediaWiki_talk:dcd3ca0c|Talk]]
        Atom feed for this page -{{int:Tooltip-atom}} +{{int:dcd3ca0c}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Tooltip-compareselectedversions&action=edit tooltip-compareselectedversions]
        -[[MediaWiki_talk:Tooltip-compareselectedversions|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:d318992a&action=edit d2ae036e]
        +[[MediaWiki_talk:d318992a|Talk]]
        See the differences between the two selected versions of this page. [alt-v] -{{int:Tooltip-compareselectedversions}} +{{int:d318992a}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Tooltip-contributions&action=edit tooltip-contributions]
        -[[MediaWiki_talk:Tooltip-contributions|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:17165e38&action=edit 2039dc44]
        +[[MediaWiki_talk:17165e38|Talk]]
        View the list of contributions of this user -{{int:Tooltip-contributions}} +{{int:17165e38}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Tooltip-currentevents&action=edit tooltip-currentevents]
        -[[MediaWiki_talk:Tooltip-currentevents|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:32bcbdd6&action=edit d57ba9d6]
        +[[MediaWiki_talk:32bcbdd6|Talk]]
        Find background information on current events -{{int:Tooltip-currentevents}} +{{int:32bcbdd6}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Tooltip-delete&action=edit tooltip-delete]
        -[[MediaWiki_talk:Tooltip-delete|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:b1488dbf&action=edit 742e0c2a]
        +[[MediaWiki_talk:b1488dbf|Talk]]
        Delete this page [alt-d] -{{int:Tooltip-delete}} +{{int:b1488dbf}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Tooltip-edit&action=edit tooltip-edit]
        -[[MediaWiki_talk:Tooltip-edit|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:8c519c79&action=edit 6b354128]
        +[[MediaWiki_talk:8c519c79|Talk]]
        You can edit this page. Please use the preview button before saving. [alt-e] -{{int:Tooltip-edit}} +{{int:8c519c79}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Tooltip-emailuser&action=edit tooltip-emailuser]
        -[[MediaWiki_talk:Tooltip-emailuser|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:d61f42ac&action=edit 6a333373]
        +[[MediaWiki_talk:d61f42ac|Talk]]
        Send a mail to this user -{{int:Tooltip-emailuser}} +{{int:d61f42ac}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Tooltip-help&action=edit tooltip-help]
        -[[MediaWiki_talk:Tooltip-help|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:691c7c4c&action=edit 1f2e0a5e]
        +[[MediaWiki_talk:691c7c4c|Talk]]
        The place to find out. -{{int:Tooltip-help}} +{{int:691c7c4c}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Tooltip-history&action=edit tooltip-history]
        -[[MediaWiki_talk:Tooltip-history|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:da5d5f0e&action=edit 357e85a5]
        +[[MediaWiki_talk:da5d5f0e|Talk]]
        Past versions of this page, [alt-h] -{{int:Tooltip-history}} +{{int:da5d5f0e}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Tooltip-login&action=edit tooltip-login]
        -[[MediaWiki_talk:Tooltip-login|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:e20e86bb&action=edit ff6db008]
        +[[MediaWiki_talk:e20e86bb|Talk]]
        You are encouraged to log in, it is not mandatory however. [alt-o] -{{int:Tooltip-login}} +{{int:e20e86bb}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Tooltip-logout&action=edit tooltip-logout]
        -[[MediaWiki_talk:Tooltip-logout|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:ab189540&action=edit bd25c34c]
        +[[MediaWiki_talk:ab189540|Talk]]
        Log out [alt-o] -{{int:Tooltip-logout}} +{{int:ab189540}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Tooltip-mainpage&action=edit tooltip-mainpage]
        -[[MediaWiki_talk:Tooltip-mainpage|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:8d2a8168&action=edit 9dd4b86c]
        +[[MediaWiki_talk:8d2a8168|Talk]]
        Visit the Main Page [alt-z] -{{int:Tooltip-mainpage}} +{{int:8d2a8168}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Tooltip-minoredit&action=edit tooltip-minoredit]
        -[[MediaWiki_talk:Tooltip-minoredit|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:7316f250&action=edit 2138d388]
        +[[MediaWiki_talk:7316f250|Talk]]
        Mark this as a minor edit [alt-i] -{{int:Tooltip-minoredit}} +{{int:7316f250}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Tooltip-move&action=edit tooltip-move]
        -[[MediaWiki_talk:Tooltip-move|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:bfe45253&action=edit 00ef7343]
        +[[MediaWiki_talk:bfe45253|Talk]]
        Move this page [alt-m] -{{int:Tooltip-move}} +{{int:bfe45253}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Tooltip-mycontris&action=edit tooltip-mycontris]
        -[[MediaWiki_talk:Tooltip-mycontris|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:c2b4d858&action=edit 0bafecde]
        +[[MediaWiki_talk:c2b4d858|Talk]]
        List of my contributions [alt-y] -{{int:Tooltip-mycontris}} +{{int:c2b4d858}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Tooltip-mytalk&action=edit tooltip-mytalk]
        -[[MediaWiki_talk:Tooltip-mytalk|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:22361e38&action=edit ef887076]
        +[[MediaWiki_talk:22361e38|Talk]]
        My talk page [alt-n] -{{int:Tooltip-mytalk}} +{{int:22361e38}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Tooltip-nomove&action=edit tooltip-nomove]
        -[[MediaWiki_talk:Tooltip-nomove|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:b34e28e3&action=edit 6d66eb21]
        +[[MediaWiki_talk:b34e28e3|Talk]]
        You don't have the permissions to move this page -{{int:Tooltip-nomove}} +{{int:b34e28e3}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Tooltip-portal&action=edit tooltip-portal]
        -[[MediaWiki_talk:Tooltip-portal|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:dc2cdd3b&action=edit 7e77da11]
        +[[MediaWiki_talk:dc2cdd3b|Talk]]
        About the project, what you can do, where to find things -{{int:Tooltip-portal}} +{{int:dc2cdd3b}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Tooltip-preferences&action=edit tooltip-preferences]
        -[[MediaWiki_talk:Tooltip-preferences|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:2032ad70&action=edit 5611ec73]
        +[[MediaWiki_talk:2032ad70|Talk]]
        My preferences -{{int:Tooltip-preferences}} +{{int:2032ad70}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Tooltip-preview&action=edit tooltip-preview]
        -[[MediaWiki_talk:Tooltip-preview|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:d87a6e27&action=edit 71b5f228]
        +[[MediaWiki_talk:d87a6e27|Talk]]
        Preview your changes, please use this before saving! [alt-p] -{{int:Tooltip-preview}} +{{int:d87a6e27}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Tooltip-protect&action=edit tooltip-protect]
        -[[MediaWiki_talk:Tooltip-protect|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:44edd577&action=edit fa1fc302]
        +[[MediaWiki_talk:44edd577|Talk]]
        Protect this page [alt-=] -{{int:Tooltip-protect}} +{{int:44edd577}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Tooltip-randompage&action=edit tooltip-randompage]
        -[[MediaWiki_talk:Tooltip-randompage|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:aa67a70a&action=edit f2eedbde]
        +[[MediaWiki_talk:aa67a70a|Talk]]
        Load a random page [alt-x] -{{int:Tooltip-randompage}} +{{int:aa67a70a}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Tooltip-recentchanges&action=edit tooltip-recentchanges]
        -[[MediaWiki_talk:Tooltip-recentchanges|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:a5de539f&action=edit cafd58f7]
        +[[MediaWiki_talk:a5de539f|Talk]]
        The list of recent changes in the wiki. [alt-r] -{{int:Tooltip-recentchanges}} +{{int:a5de539f}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Tooltip-recentchangeslinked&action=edit tooltip-recentchangeslinked]
        -[[MediaWiki_talk:Tooltip-recentchangeslinked|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:47cd8236&action=edit ccab4d0f]
        +[[MediaWiki_talk:47cd8236|Talk]]
        Recent changes in pages linking to this page [alt-c] -{{int:Tooltip-recentchangeslinked}} +{{int:47cd8236}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Tooltip-rss&action=edit tooltip-rss]
        -[[MediaWiki_talk:Tooltip-rss|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:82964371&action=edit 53235bed]
        +[[MediaWiki_talk:82964371|Talk]]
        RSS feed for this page -{{int:Tooltip-rss}} +{{int:82964371}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Tooltip-save&action=edit tooltip-save]
        -[[MediaWiki_talk:Tooltip-save|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:ec76631f&action=edit 8ce4a9b9]
        +[[MediaWiki_talk:ec76631f|Talk]]
        Save your changes [alt-s] -{{int:Tooltip-save}} +{{int:ec76631f}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Tooltip-search&action=edit tooltip-search]
        -[[MediaWiki_talk:Tooltip-search|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:6d206f30&action=edit a6413695]
        +[[MediaWiki_talk:6d206f30|Talk]]
        Search this wiki [alt-f] -{{int:Tooltip-search}} +{{int:6d206f30}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Tooltip-sitesupport&action=edit tooltip-sitesupport]
        -[[MediaWiki_talk:Tooltip-sitesupport|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:65256208&action=edit c2dafa2a]
        +[[MediaWiki_talk:65256208|Talk]]
        Support Wiktionary -{{int:Tooltip-sitesupport}} +{{int:65256208}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Tooltip-specialpage&action=edit tooltip-specialpage]
        -[[MediaWiki_talk:Tooltip-specialpage|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:280cc8fd&action=edit 73f9a677]
        +[[MediaWiki_talk:280cc8fd|Talk]]
        This is a special page, you can't edit the page itself. -{{int:Tooltip-specialpage}} +{{int:280cc8fd}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Tooltip-specialpages&action=edit tooltip-specialpages]
        -[[MediaWiki_talk:Tooltip-specialpages|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:7c7223be&action=edit 764993b1]
        +[[MediaWiki_talk:7c7223be|Talk]]
        List of all special pages [alt-q] -{{int:Tooltip-specialpages}} +{{int:7c7223be}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Tooltip-talk&action=edit tooltip-talk]
        -[[MediaWiki_talk:Tooltip-talk|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:06fb1d8e&action=edit cb23801a]
        +[[MediaWiki_talk:06fb1d8e|Talk]]
        Discussion about the content page [alt-t] -{{int:Tooltip-talk}} +{{int:06fb1d8e}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Tooltip-undelete&action=edit tooltip-undelete]
        -[[MediaWiki_talk:Tooltip-undelete|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:341a8a32&action=edit df81e982]
        +[[MediaWiki_talk:341a8a32|Talk]]
        Restore the $1 edits done to this page before it was deleted [alt-d] -{{int:Tooltip-undelete}} +{{int:341a8a32}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Tooltip-unwatch&action=edit tooltip-unwatch]
        -[[MediaWiki_talk:Tooltip-unwatch|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:377e895f&action=edit 53f18c52]
        +[[MediaWiki_talk:377e895f|Talk]]
        Remove this page from your watchlist [alt-w] -{{int:Tooltip-unwatch}} +{{int:377e895f}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Tooltip-upload&action=edit tooltip-upload]
        -[[MediaWiki_talk:Tooltip-upload|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:b1d4103e&action=edit 6143ca0f]
        +[[MediaWiki_talk:b1d4103e|Talk]]
        Upload images or media files [alt-u] -{{int:Tooltip-upload}} +{{int:b1d4103e}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Tooltip-userpage&action=edit tooltip-userpage]
        -[[MediaWiki_talk:Tooltip-userpage|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:3d8cae2f&action=edit 2b3a6ed0]
        +[[MediaWiki_talk:3d8cae2f|Talk]]
        My user page [alt-.] -{{int:Tooltip-userpage}} +{{int:3d8cae2f}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Tooltip-viewsource&action=edit tooltip-viewsource]
        -[[MediaWiki_talk:Tooltip-viewsource|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:141dd88c&action=edit 1ef2ea9d]
        +[[MediaWiki_talk:141dd88c|Talk]]
        This page is protected. You can view its source. [alt-e] -{{int:Tooltip-viewsource}} +{{int:141dd88c}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Tooltip-watch&action=edit tooltip-watch]
        -[[MediaWiki_talk:Tooltip-watch|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:68a73399&action=edit 07e7b59d]
        +[[MediaWiki_talk:68a73399|Talk]]
        Add this page to your watchlist [alt-w] -{{int:Tooltip-watch}} +{{int:68a73399}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Tooltip-watchlist&action=edit tooltip-watchlist]
        -[[MediaWiki_talk:Tooltip-watchlist|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:56a787ff&action=edit e24666fc]
        +[[MediaWiki_talk:56a787ff|Talk]]
        The list of pages you're monitoring for changes. [alt-l] -{{int:Tooltip-watchlist}} +{{int:56a787ff}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Tooltip-whatlinkshere&action=edit tooltip-whatlinkshere]
        -[[MediaWiki_talk:Tooltip-whatlinkshere|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:3fd46bc1&action=edit fbd416b7]
        +[[MediaWiki_talk:3fd46bc1|Talk]]
        List of all wiki pages that link here [alt-b] -{{int:Tooltip-whatlinkshere}} +{{int:3fd46bc1}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Uclinks&action=edit uclinks]
        -[[MediaWiki_talk:Uclinks|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:47514ec5&action=edit c48d8241]
        +[[MediaWiki_talk:47514ec5|Talk]]
        View the last $1 changes; view the last $2 days. -{{int:Uclinks}} +{{int:47514ec5}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Ucnote&action=edit ucnote]
        -[[MediaWiki_talk:Ucnote|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:6442d081&action=edit 0d69ac51]
        +[[MediaWiki_talk:6442d081|Talk]]
        Below are this user's last <b>$1</b> changes in the last <b>$2</b> days. -{{int:Ucnote}} +{{int:6442d081}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Uctop&action=edit uctop]
        -[[MediaWiki_talk:Uctop|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:507d407a&action=edit f9bb6366]
        +[[MediaWiki_talk:507d407a|Talk]]
        (top) -{{int:Uctop}} +{{int:507d407a}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Unblockip&action=edit unblockip]
        -[[MediaWiki_talk:Unblockip|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:8c29ba33&action=edit 2b4842fd]
        +[[MediaWiki_talk:8c29ba33|Talk]]
        Unblock user -{{int:Unblockip}} +{{int:8c29ba33}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Unblockiptext&action=edit unblockiptext]
        -[[MediaWiki_talk:Unblockiptext|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:3a879bdb&action=edit 98f7f719]
        +[[MediaWiki_talk:3a879bdb|Talk]]
        Use the form below to restore write access to a previously blocked IP address or username. -{{int:Unblockiptext}} +{{int:3a879bdb}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Unblocklink&action=edit unblocklink]
        -[[MediaWiki_talk:Unblocklink|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:e954d285&action=edit 24e7c6e7]
        +[[MediaWiki_talk:e954d285|Talk]]
        unblock -{{int:Unblocklink}} +{{int:e954d285}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Unblocklogentry&action=edit unblocklogentry]
        -[[MediaWiki_talk:Unblocklogentry|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:5e55820a&action=edit eecac2a2]
        +[[MediaWiki_talk:5e55820a|Talk]]
        unblocked "$1" -{{int:Unblocklogentry}} +{{int:5e55820a}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Undelete&action=edit undelete]
        -[[MediaWiki_talk:Undelete|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:9b2a9354&action=edit f690005f]
        +[[MediaWiki_talk:9b2a9354|Talk]]
        Restore deleted page -{{int:Undelete}} +{{int:9b2a9354}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Undelete_short&action=edit undelete_short]
        -[[MediaWiki_talk:Undelete_short|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:85cdbe83&action=edit d4adea3f]
        +[[MediaWiki_talk:85cdbe83|Talk]]
        Undelete $1 edits -{{int:Undelete_short}} +{{int:85cdbe83}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Undeletearticle&action=edit undeletearticle]
        -[[MediaWiki_talk:Undeletearticle|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:9ba522b6&action=edit c4635e76]
        +[[MediaWiki_talk:9ba522b6|Talk]]
        Restore deleted page -{{int:Undeletearticle}} +{{int:9ba522b6}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Undeletebtn&action=edit undeletebtn]
        -[[MediaWiki_talk:Undeletebtn|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:3346239e&action=edit 5dd4b2af]
        +[[MediaWiki_talk:3346239e|Talk]]
        Restore! -{{int:Undeletebtn}} +{{int:3346239e}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Undeletedarticle&action=edit undeletedarticle]
        -[[MediaWiki_talk:Undeletedarticle|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:c2a7eb23&action=edit cf1590b6]
        +[[MediaWiki_talk:c2a7eb23|Talk]]
        restored "$1" -{{int:Undeletedarticle}} +{{int:c2a7eb23}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Undeletedtext&action=edit undeletedtext]
        -[[MediaWiki_talk:Undeletedtext|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:40f0db7a&action=edit 5e55bc75]
        +[[MediaWiki_talk:40f0db7a|Talk]]
        [[$1]] has been successfully restored. See [[Wiktionary:Deletion_log]] for a record of recent deletions and restorations. -{{int:Undeletedtext}} +{{int:40f0db7a}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Undeletehistory&action=edit undeletehistory]
        -[[MediaWiki_talk:Undeletehistory|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:feaa86c6&action=edit a69aad99]
        +[[MediaWiki_talk:feaa86c6|Talk]]
        If you restore the page, all revisions will be restored to the history. If a new page with the same name has been created since the deletion, the restored revisions will appear in the prior history, and the current revision of the live page will not be automatically replaced. -{{int:Undeletehistory}} +{{int:feaa86c6}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Undeletepage&action=edit undeletepage]
        -[[MediaWiki_talk:Undeletepage|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:9fa6521f&action=edit d650f0a7]
        +[[MediaWiki_talk:9fa6521f|Talk]]
        View and restore deleted pages -{{int:Undeletepage}} +{{int:9fa6521f}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Undeletepagetext&action=edit undeletepagetext]
        -[[MediaWiki_talk:Undeletepagetext|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:2e99f66e&action=edit 19b68d7f]
        +[[MediaWiki_talk:2e99f66e|Talk]]
        The following pages have been deleted but are still in the archive and can be restored. The archive may be periodically cleaned out. -{{int:Undeletepagetext}} +{{int:2e99f66e}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Undeleterevision&action=edit undeleterevision]
        -[[MediaWiki_talk:Undeleterevision|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:b097a89b&action=edit 2a3672ef]
        +[[MediaWiki_talk:b097a89b|Talk]]
        Deleted revision as of $1 -{{int:Undeleterevision}} +{{int:b097a89b}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Undeleterevisions&action=edit undeleterevisions]
        -[[MediaWiki_talk:Undeleterevisions|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:eb2694a4&action=edit d0cd3f87]
        +[[MediaWiki_talk:eb2694a4|Talk]]
        $1 revisions archived -{{int:Undeleterevisions}} +{{int:eb2694a4}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Unexpected&action=edit unexpected]
        -[[MediaWiki_talk:Unexpected|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:3b67a8c9&action=edit fd2a2764]
        +[[MediaWiki_talk:3b67a8c9|Talk]]
        Unexpected value: "$1"="$2". -{{int:Unexpected}} +{{int:3b67a8c9}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Unlockbtn&action=edit unlockbtn]
        -[[MediaWiki_talk:Unlockbtn|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:016b68d2&action=edit 74a8f293]
        +[[MediaWiki_talk:016b68d2|Talk]]
        Unlock database -{{int:Unlockbtn}} +{{int:016b68d2}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Unlockconfirm&action=edit unlockconfirm]
        -[[MediaWiki_talk:Unlockconfirm|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:fc3080bf&action=edit ded00b4f]
        +[[MediaWiki_talk:fc3080bf|Talk]]
        Yes, I really want to unlock the database. -{{int:Unlockconfirm}} +{{int:fc3080bf}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Unlockdb&action=edit unlockdb]
        -[[MediaWiki_talk:Unlockdb|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:4df98d29&action=edit 68a2c7e3]
        +[[MediaWiki_talk:4df98d29|Talk]]
        Unlock database -{{int:Unlockdb}} +{{int:4df98d29}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Unlockdbsuccesssub&action=edit unlockdbsuccesssub]
        -[[MediaWiki_talk:Unlockdbsuccesssub|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:86605aa9&action=edit eb575aa1]
        +[[MediaWiki_talk:86605aa9|Talk]]
        Database lock removed -{{int:Unlockdbsuccesssub}} +{{int:86605aa9}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Unlockdbsuccesstext&action=edit unlockdbsuccesstext]
        -[[MediaWiki_talk:Unlockdbsuccesstext|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:1896db20&action=edit a7a78572]
        +[[MediaWiki_talk:1896db20|Talk]]
        The database has been unlocked. -{{int:Unlockdbsuccesstext}} +{{int:1896db20}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Unlockdbtext&action=edit unlockdbtext]
        -[[MediaWiki_talk:Unlockdbtext|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:bd3decce&action=edit 6b32a82f]
        +[[MediaWiki_talk:bd3decce|Talk]]
        Unlocking the database will restore the ability of all users to edit pages, change their preferences, edit their watchlists, and other things requiring changes in the database. Please confirm that this is what you intend to do. -{{int:Unlockdbtext}} +{{int:bd3decce}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Unprotect&action=edit unprotect]
        -[[MediaWiki_talk:Unprotect|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:d180e0d9&action=edit 116b2a3b]
        +[[MediaWiki_talk:d180e0d9|Talk]]
        Unprotect -{{int:Unprotect}} +{{int:d180e0d9}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Unprotectcomment&action=edit unprotectcomment]
        -[[MediaWiki_talk:Unprotectcomment|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:affff3c2&action=edit a4439c30]
        +[[MediaWiki_talk:affff3c2|Talk]]
        Reason for unprotecting -{{int:Unprotectcomment}} +{{int:affff3c2}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Unprotectedarticle&action=edit unprotectedarticle]
        -[[MediaWiki_talk:Unprotectedarticle|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:b8d58125&action=edit 66029ebc]
        +[[MediaWiki_talk:b8d58125|Talk]]
        unprotected [[$1]] -{{int:Unprotectedarticle}} +{{int:b8d58125}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Unprotectsub&action=edit unprotectsub]
        -[[MediaWiki_talk:Unprotectsub|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:b15ab8cb&action=edit c77cef4c]
        +[[MediaWiki_talk:b15ab8cb|Talk]]
        (Unprotecting "$1") -{{int:Unprotectsub}} +{{int:b15ab8cb}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Unprotectthispage&action=edit unprotectthispage]
        -[[MediaWiki_talk:Unprotectthispage|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:10782968&action=edit caa31f1e]
        +[[MediaWiki_talk:10782968|Talk]]
        Unprotect this page -{{int:Unprotectthispage}} +{{int:10782968}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Unusedimages&action=edit unusedimages]
        -[[MediaWiki_talk:Unusedimages|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:5ed67176&action=edit e17373a9]
        +[[MediaWiki_talk:5ed67176|Talk]]
        Unused images -{{int:Unusedimages}} +{{int:5ed67176}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Unusedimagestext&action=edit unusedimagestext]
        -[[MediaWiki_talk:Unusedimagestext|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:373709c4&action=edit 13626cea]
        +[[MediaWiki_talk:373709c4|Talk]]
        <p>Please note that other web sites may link to an image with a direct URL, and so may still be listed here despite being in active use. -{{int:Unusedimagestext}} +{{int:373709c4}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Unwatch&action=edit unwatch]
        -[[MediaWiki_talk:Unwatch|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:51055a00&action=edit f6f282e9]
        +[[MediaWiki_talk:51055a00|Talk]]
        Unwatch -{{int:Unwatch}} +{{int:51055a00}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Unwatchthispage&action=edit unwatchthispage]
        -[[MediaWiki_talk:Unwatchthispage|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:e21d3614&action=edit c7d1cd1e]
        +[[MediaWiki_talk:e21d3614|Talk]]
        Stop watching -{{int:Unwatchthispage}} +{{int:e21d3614}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Updated&action=edit updated]
        -[[MediaWiki_talk:Updated|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:f2f8570d&action=edit 13a1891a]
        +[[MediaWiki_talk:f2f8570d|Talk]]
        (Updated) -{{int:Updated}} +{{int:f2f8570d}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Upload&action=edit upload]
        -[[MediaWiki_talk:Upload|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:8bdf057f&action=edit bb73aaaf]
        +[[MediaWiki_talk:8bdf057f|Talk]]
        Upload file -{{int:Upload}} +{{int:8bdf057f}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Uploadbtn&action=edit uploadbtn]
        -[[MediaWiki_talk:Uploadbtn|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:0238951b&action=edit 6be1c689]
        +[[MediaWiki_talk:0238951b|Talk]]
        Upload file -{{int:Uploadbtn}} +{{int:0238951b}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Uploaddisabled&action=edit uploaddisabled]
        -[[MediaWiki_talk:Uploaddisabled|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:88f59c5a&action=edit 693f4b51]
        +[[MediaWiki_talk:88f59c5a|Talk]]
        Sorry, uploading is disabled. -{{int:Uploaddisabled}} +{{int:88f59c5a}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Uploadedfiles&action=edit uploadedfiles]
        -[[MediaWiki_talk:Uploadedfiles|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:7b8969f2&action=edit 7d4f03ff]
        +[[MediaWiki_talk:7b8969f2|Talk]]
        Uploaded files -{{int:Uploadedfiles}} +{{int:7b8969f2}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Uploadedimage&action=edit uploadedimage]
        -[[MediaWiki_talk:Uploadedimage|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:954c2a11&action=edit e57056a0]
        +[[MediaWiki_talk:954c2a11|Talk]]
        uploaded "$1" -{{int:Uploadedimage}} +{{int:954c2a11}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Uploaderror&action=edit uploaderror]
        -[[MediaWiki_talk:Uploaderror|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:304f9593&action=edit 8f1603bd]
        +[[MediaWiki_talk:304f9593|Talk]]
        Upload error -{{int:Uploaderror}} +{{int:304f9593}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Uploadfile&action=edit uploadfile]
        -[[MediaWiki_talk:Uploadfile|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:9e71a62c&action=edit 40d977b5]
        +[[MediaWiki_talk:9e71a62c|Talk]]
        Upload images, sounds, documents etc. -{{int:Uploadfile}} +{{int:9e71a62c}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Uploadlink&action=edit uploadlink]
        -[[MediaWiki_talk:Uploadlink|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:955e39f9&action=edit 0bf93eec]
        +[[MediaWiki_talk:955e39f9|Talk]]
        Upload images -{{int:Uploadlink}} +{{int:955e39f9}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Uploadlog&action=edit uploadlog]
        -[[MediaWiki_talk:Uploadlog|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:0d39c428&action=edit 0d49abe6]
        +[[MediaWiki_talk:0d39c428|Talk]]
        upload log -{{int:Uploadlog}} +{{int:0d39c428}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Uploadlogpage&action=edit uploadlogpage]
        -[[MediaWiki_talk:Uploadlogpage|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:1f68a0e7&action=edit 87611d30]
        +[[MediaWiki_talk:1f68a0e7|Talk]]
        Upload_log -{{int:Uploadlogpage}} +{{int:1f68a0e7}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Uploadlogpagetext&action=edit uploadlogpagetext]
        -[[MediaWiki_talk:Uploadlogpagetext|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:2a430331&action=edit 8aa7bf47]
        +[[MediaWiki_talk:2a430331|Talk]]
        Below is a list of the most recent file uploads. All times shown are server time (UTC). @@ -5152,25 +5152,25 @@ All times shown are server time (UTC). </ul> -{{int:Uploadlogpagetext}} +{{int:2a430331}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Uploadnologin&action=edit uploadnologin]
        -[[MediaWiki_talk:Uploadnologin|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:92dd3bc9&action=edit d2d8bd08]
        +[[MediaWiki_talk:92dd3bc9|Talk]]
        Not logged in -{{int:Uploadnologin}} +{{int:92dd3bc9}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Uploadnologintext&action=edit uploadnologintext]
        -[[MediaWiki_talk:Uploadnologintext|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:fecdb77e&action=edit 09b01f51]
        +[[MediaWiki_talk:fecdb77e|Talk]]
        You must be <a href="/wiki/Special:Userlogin">logged in</a> to upload files. -{{int:Uploadnologintext}} +{{int:fecdb77e}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Uploadtext&action=edit uploadtext]
        -[[MediaWiki_talk:Uploadtext|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:7804cb84&action=edit 85bb3caa]
        +[[MediaWiki_talk:7804cb84|Talk]]
        <strong>STOP!</strong> Before you upload here, make sure to read and follow the <a href="/wiki/Special:Image_use_policy">image use policy</a>. @@ -5201,403 +5201,403 @@ or <b>[[Media:file.ogg]]</b> for sounds. delete your uploads if they think it serves the project, and you may be blocked from uploading if you abuse the system. -{{int:Uploadtext}} +{{int:7804cb84}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Uploadwarning&action=edit uploadwarning]
        -[[MediaWiki_talk:Uploadwarning|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:fb3ef2ae&action=edit 8aae8210]
        +[[MediaWiki_talk:fb3ef2ae|Talk]]
        Upload warning -{{int:Uploadwarning}} +{{int:fb3ef2ae}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:User_rights_set&action=edit user_rights_set]
        -[[MediaWiki_talk:User_rights_set|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:a5430c9b&action=edit 6a080eb0]
        +[[MediaWiki_talk:a5430c9b|Talk]]
        <b>User rights for "$1" updated</b> -{{int:User_rights_set}} +{{int:a5430c9b}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Usercssjs&action=edit usercssjs]
        -[[MediaWiki_talk:Usercssjs|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:89b73748&action=edit 8b23a826]
        +[[MediaWiki_talk:89b73748|Talk]]
        '''Note:''' After saving, you have to tell your bowser to get the new version: '''Mozilla:''' click ''reload''(or ''ctrl-r''), '''IE / Opera:''' ''ctrl-f5'', '''Safari:''' ''cmd-r'', '''Konqueror''' ''ctrl-r''. -{{int:Usercssjs}} +{{int:89b73748}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Usercssjsyoucanpreview&action=edit usercssjsyoucanpreview]
        -[[MediaWiki_talk:Usercssjsyoucanpreview|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:1656c92b&action=edit 97bd6e75]
        +[[MediaWiki_talk:1656c92b|Talk]]
        <strong>Tip:</strong> Use the 'Show preview' button to test your new css/js before saving. -{{int:Usercssjsyoucanpreview}} +{{int:1656c92b}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Usercsspreview&action=edit usercsspreview]
        -[[MediaWiki_talk:Usercsspreview|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:9f62117d&action=edit b51c3667]
        +[[MediaWiki_talk:9f62117d|Talk]]
        '''Remember that you are only previewing your user css, it has not yet been saved!''' -{{int:Usercsspreview}} +{{int:9f62117d}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Userexists&action=edit userexists]
        -[[MediaWiki_talk:Userexists|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:77541367&action=edit a49220af]
        +[[MediaWiki_talk:77541367|Talk]]
        The user name you entered is already in use. Please choose a different name. -{{int:Userexists}} +{{int:77541367}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Userjspreview&action=edit userjspreview]
        -[[MediaWiki_talk:Userjspreview|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:eca4b211&action=edit 2e8efec0]
        +[[MediaWiki_talk:eca4b211|Talk]]
        '''Remember that you are only testing/previewing your user javascript, it has not yet been saved!''' -{{int:Userjspreview}} +{{int:eca4b211}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Userlogin&action=edit userlogin]
        -[[MediaWiki_talk:Userlogin|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:49c670f4&action=edit eb0f23d8]
        +[[MediaWiki_talk:49c670f4|Talk]]
        Log in -{{int:Userlogin}} +{{int:49c670f4}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Userlogout&action=edit userlogout]
        -[[MediaWiki_talk:Userlogout|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:fb3467d9&action=edit 271a962f]
        +[[MediaWiki_talk:fb3467d9|Talk]]
        Log out -{{int:Userlogout}} +{{int:fb3467d9}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Usermailererror&action=edit usermailererror]
        -[[MediaWiki_talk:Usermailererror|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:e1881ca2&action=edit 0e3f35e1]
        +[[MediaWiki_talk:e1881ca2|Talk]]
        Mail object returned error: -{{int:Usermailererror}} +{{int:e1881ca2}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Userpage&action=edit userpage]
        -[[MediaWiki_talk:Userpage|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:823fdaf7&action=edit ea81d010]
        +[[MediaWiki_talk:823fdaf7|Talk]]
        View user page -{{int:Userpage}} +{{int:823fdaf7}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Userstats&action=edit userstats]
        -[[MediaWiki_talk:Userstats|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:f25ef873&action=edit 2ab9a2af]
        +[[MediaWiki_talk:f25ef873|Talk]]
        User statistics -{{int:Userstats}} +{{int:f25ef873}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Userstatstext&action=edit userstatstext]
        -[[MediaWiki_talk:Userstatstext|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:b704c939&action=edit 903f135d]
        +[[MediaWiki_talk:b704c939|Talk]]
        There are '''$1''' registered users. '''$2''' of these are administrators (see $3). -{{int:Userstatstext}} +{{int:b704c939}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Version&action=edit version]
        -[[MediaWiki_talk:Version|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:2da600bf&action=edit c692273d]
        +[[MediaWiki_talk:2da600bf|Talk]]
        Version -{{int:Version}} +{{int:2da600bf}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Viewcount&action=edit viewcount]
        -[[MediaWiki_talk:Viewcount|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:cd20ed80&action=edit 9204f6f2]
        +[[MediaWiki_talk:cd20ed80|Talk]]
        This page has been accessed $1 times. -{{int:Viewcount}} +{{int:cd20ed80}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Viewprevnext&action=edit viewprevnext]
        -[[MediaWiki_talk:Viewprevnext|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:b3a212e8&action=edit 023f0549]
        +[[MediaWiki_talk:b3a212e8|Talk]]
        View ($1) ($2) ($3). -{{int:Viewprevnext}} +{{int:b3a212e8}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Viewsource&action=edit viewsource]
        -[[MediaWiki_talk:Viewsource|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:1affdb1e&action=edit db9e2eba]
        +[[MediaWiki_talk:1affdb1e|Talk]]
        View source -{{int:Viewsource}} +{{int:1affdb1e}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Viewtalkpage&action=edit viewtalkpage]
        -[[MediaWiki_talk:Viewtalkpage|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:f6336004&action=edit 2e250bd9]
        +[[MediaWiki_talk:f6336004|Talk]]
        View discussion -{{int:Viewtalkpage}} +{{int:f6336004}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Wantedpages&action=edit wantedpages]
        -[[MediaWiki_talk:Wantedpages|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:7da05431&action=edit 4d2466a3]
        +[[MediaWiki_talk:7da05431|Talk]]
        Wanted pages -{{int:Wantedpages}} +{{int:7da05431}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Watch&action=edit watch]
        -[[MediaWiki_talk:Watch|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:d91ebf58&action=edit 292b0901]
        +[[MediaWiki_talk:d91ebf58|Talk]]
        Watch -{{int:Watch}} +{{int:d91ebf58}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Watchdetails&action=edit watchdetails]
        -[[MediaWiki_talk:Watchdetails|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:d815e414&action=edit ddfeb02c]
        +[[MediaWiki_talk:d815e414|Talk]]
        ($1 pages watched not counting talk pages; $2 total pages edited since cutoff; $3... <a href='$4'>show and edit complete list</a>.) -{{int:Watchdetails}} +{{int:d815e414}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Watcheditlist&action=edit watcheditlist]
        -[[MediaWiki_talk:Watcheditlist|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:780e4559&action=edit d7d3bb79]
        +[[MediaWiki_talk:780e4559|Talk]]
        Here's an alphabetical list of your watched pages. Check the boxes of pages you want to remove from your watchlist and click the 'remove checked' button at the bottom of the screen. -{{int:Watcheditlist}} +{{int:780e4559}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Watchlist&action=edit watchlist]
        -[[MediaWiki_talk:Watchlist|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:48a616d9&action=edit db14f0be]
        +[[MediaWiki_talk:48a616d9|Talk]]
        My watchlist -{{int:Watchlist}} +{{int:48a616d9}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Watchlistcontains&action=edit watchlistcontains]
        -[[MediaWiki_talk:Watchlistcontains|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:690e08f8&action=edit 37074879]
        +[[MediaWiki_talk:690e08f8|Talk]]
        Your watchlist contains $1 pages. -{{int:Watchlistcontains}} +{{int:690e08f8}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Watchlistsub&action=edit watchlistsub]
        -[[MediaWiki_talk:Watchlistsub|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:913a8eb4&action=edit 1d490f51]
        +[[MediaWiki_talk:913a8eb4|Talk]]
        (for user "$1") -{{int:Watchlistsub}} +{{int:913a8eb4}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Watchmethod-list&action=edit watchmethod-list]
        -[[MediaWiki_talk:Watchmethod-list|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:983ce9b1&action=edit b5396cea]
        +[[MediaWiki_talk:983ce9b1|Talk]]
        checking watched pages for recent edits -{{int:Watchmethod-list}} +{{int:983ce9b1}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Watchmethod-recent&action=edit watchmethod-recent]
        -[[MediaWiki_talk:Watchmethod-recent|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:2e5e56e2&action=edit c69b87d2]
        +[[MediaWiki_talk:2e5e56e2|Talk]]
        checking recent edits for watched pages -{{int:Watchmethod-recent}} +{{int:2e5e56e2}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Watchnochange&action=edit watchnochange]
        -[[MediaWiki_talk:Watchnochange|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:cdd40087&action=edit 24353550]
        +[[MediaWiki_talk:cdd40087|Talk]]
        None of your watched items were edited in the time period displayed. -{{int:Watchnochange}} +{{int:cdd40087}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Watchnologin&action=edit watchnologin]
        -[[MediaWiki_talk:Watchnologin|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:ec51da09&action=edit c873a8c3]
        +[[MediaWiki_talk:ec51da09|Talk]]
        Not logged in -{{int:Watchnologin}} +{{int:ec51da09}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Watchnologintext&action=edit watchnologintext]
        -[[MediaWiki_talk:Watchnologintext|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:7870af11&action=edit 080c4da9]
        +[[MediaWiki_talk:7870af11|Talk]]
        You must be <a href="/wiki/Special:Userlogin">logged in</a> to modify your watchlist. -{{int:Watchnologintext}} +{{int:7870af11}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Watchthis&action=edit watchthis]
        -[[MediaWiki_talk:Watchthis|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:2fa65d73&action=edit 89758668]
        +[[MediaWiki_talk:2fa65d73|Talk]]
        Watch this page -{{int:Watchthis}} +{{int:2fa65d73}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Watchthispage&action=edit watchthispage]
        -[[MediaWiki_talk:Watchthispage|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:79260dc8&action=edit d94c2857]
        +[[MediaWiki_talk:79260dc8|Talk]]
        Watch this page -{{int:Watchthispage}} +{{int:79260dc8}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Welcomecreation&action=edit welcomecreation]
        -[[MediaWiki_talk:Welcomecreation|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:622a355f&action=edit 5b3750aa]
        +[[MediaWiki_talk:622a355f|Talk]]
        <h2>Welcome, $1!</h2><p>Your account has been created. Don't forget to change your Wiktionary preferences. -{{int:Welcomecreation}} +{{int:622a355f}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Whatlinkshere&action=edit whatlinkshere]
        -[[MediaWiki_talk:Whatlinkshere|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:bde1fbba&action=edit 28d0e2a8]
        +[[MediaWiki_talk:bde1fbba|Talk]]
        What links here -{{int:Whatlinkshere}} +{{int:bde1fbba}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Whitelistacctext&action=edit whitelistacctext]
        -[[MediaWiki_talk:Whitelistacctext|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:53f0999a&action=edit b3775e04]
        +[[MediaWiki_talk:53f0999a|Talk]]
        To be allowed to create accounts in this Wiki you have to [[Special:Userlogin|log]] in and have the appropriate permissions. -{{int:Whitelistacctext}} +{{int:53f0999a}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Whitelistacctitle&action=edit whitelistacctitle]
        -[[MediaWiki_talk:Whitelistacctitle|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:901574b0&action=edit 13f7d937]
        +[[MediaWiki_talk:901574b0|Talk]]
        You are not allowed to create an account -{{int:Whitelistacctitle}} +{{int:901574b0}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Whitelistedittext&action=edit whitelistedittext]
        -[[MediaWiki_talk:Whitelistedittext|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:28589651&action=edit 8d93b543]
        +[[MediaWiki_talk:28589651|Talk]]
        You have to [[Special:Userlogin|login]] to edit pages. -{{int:Whitelistedittext}} +{{int:28589651}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Whitelistedittitle&action=edit whitelistedittitle]
        -[[MediaWiki_talk:Whitelistedittitle|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:d4e0db33&action=edit 76713eb6]
        +[[MediaWiki_talk:d4e0db33|Talk]]
        Login required to edit -{{int:Whitelistedittitle}} +{{int:d4e0db33}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Whitelistreadtext&action=edit whitelistreadtext]
        -[[MediaWiki_talk:Whitelistreadtext|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:7046be67&action=edit 3c46b4af]
        +[[MediaWiki_talk:7046be67|Talk]]
        You have to [[Special:Userlogin|login]] to read pages. -{{int:Whitelistreadtext}} +{{int:7046be67}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Whitelistreadtitle&action=edit whitelistreadtitle]
        -[[MediaWiki_talk:Whitelistreadtitle|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:56f7b6c8&action=edit 27809c2a]
        +[[MediaWiki_talk:56f7b6c8|Talk]]
        Login required to read -{{int:Whitelistreadtitle}} +{{int:56f7b6c8}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Wikipediapage&action=edit wikipediapage]
        -[[MediaWiki_talk:Wikipediapage|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:8815fbb3&action=edit 80a9ff8d]
        +[[MediaWiki_talk:8815fbb3|Talk]]
        View project page -{{int:Wikipediapage}} +{{int:8815fbb3}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Wikititlesuffix&action=edit wikititlesuffix]
        -[[MediaWiki_talk:Wikititlesuffix|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:d00a5142&action=edit 937cdab5]
        +[[MediaWiki_talk:d00a5142|Talk]]
        Wiktionary -{{int:Wikititlesuffix}} +{{int:d00a5142}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Wlnote&action=edit wlnote]
        -[[MediaWiki_talk:Wlnote|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:a7ee1c5c&action=edit b6ea8219]
        +[[MediaWiki_talk:a7ee1c5c|Talk]]
        Below are the last $1 changes in the last <b>$2</b> hours. -{{int:Wlnote}} +{{int:a7ee1c5c}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Wlsaved&action=edit wlsaved]
        -[[MediaWiki_talk:Wlsaved|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:deb21c59&action=edit 843af08d]
        +[[MediaWiki_talk:deb21c59|Talk]]
        This is a saved version of your watchlist. -{{int:Wlsaved}} +{{int:deb21c59}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Wlshowlast&action=edit wlshowlast]
        -[[MediaWiki_talk:Wlshowlast|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:e77517fa&action=edit 89821357]
        +[[MediaWiki_talk:e77517fa|Talk]]
        Show last $1 hours $2 days $3 -{{int:Wlshowlast}} +{{int:e77517fa}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Wrong_wfQuery_params&action=edit wrong_wfQuery_params]
        -[[MediaWiki_talk:Wrong_wfQuery_params|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:a9b62164&action=edit d526a8a6]
        +[[MediaWiki_talk:a9b62164|Talk]]
        Incorrect parameters to wfQuery()<br /> Function: $1<br /> Query: $2 -{{int:Wrong_wfQuery_params}} +{{int:a9b62164}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Wrongpassword&action=edit wrongpassword]
        -[[MediaWiki_talk:Wrongpassword|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:3314dacf&action=edit d8ecf7db]
        +[[MediaWiki_talk:3314dacf|Talk]]
        The password you entered is incorrect. Please try again. -{{int:Wrongpassword}} +{{int:3314dacf}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Yourdiff&action=edit yourdiff]
        -[[MediaWiki_talk:Yourdiff|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:2e0414f0&action=edit 4fe151ac]
        +[[MediaWiki_talk:2e0414f0|Talk]]
        Differences -{{int:Yourdiff}} +{{int:2e0414f0}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Youremail&action=edit youremail]
        -[[MediaWiki_talk:Youremail|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:0f5ab9c9&action=edit 0a98c2ad]
        +[[MediaWiki_talk:0f5ab9c9|Talk]]
        Your email* -{{int:Youremail}} +{{int:0f5ab9c9}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Yourname&action=edit yourname]
        -[[MediaWiki_talk:Yourname|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:f495043e&action=edit 32d0e33a]
        +[[MediaWiki_talk:f495043e|Talk]]
        Your user name -{{int:Yourname}} +{{int:f495043e}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Yournick&action=edit yournick]
        -[[MediaWiki_talk:Yournick|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:6aa78968&action=edit f8b28bd9]
        +[[MediaWiki_talk:6aa78968|Talk]]
        Your nickname (for signatures) -{{int:Yournick}} +{{int:6aa78968}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Yourpassword&action=edit yourpassword]
        -[[MediaWiki_talk:Yourpassword|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:13a44203&action=edit b48cf014]
        +[[MediaWiki_talk:13a44203|Talk]]
        Your password -{{int:Yourpassword}} +{{int:13a44203}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Yourpasswordagain&action=edit yourpasswordagain]
        -[[MediaWiki_talk:Yourpasswordagain|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:c0ad7f05&action=edit e14a732b]
        +[[MediaWiki_talk:c0ad7f05|Talk]]
        Retype password -{{int:Yourpasswordagain}} +{{int:c0ad7f05}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Yourrealname&action=edit yourrealname]
        -[[MediaWiki_talk:Yourrealname|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:519f30b5&action=edit 7fc3e5b1]
        +[[MediaWiki_talk:519f30b5|Talk]]
        Your real name* -{{int:Yourrealname}} +{{int:519f30b5}}
        -[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Yourtext&action=edit yourtext]
        -[[MediaWiki_talk:Yourtext|Talk]] +[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:f98650e0&action=edit 5b5af4ea]
        +[[MediaWiki_talk:f98650e0|Talk]]
        Your text -{{int:Yourtext}} +{{int:f98650e0}}
        diff --git a/tests/phan/config.php b/tests/phan/config.php index cef03ee013..90acc39837 100644 --- a/tests/phan/config.php +++ b/tests/phan/config.php @@ -34,19 +34,27 @@ return [ * project. directory_list won't find .inc files so * we augment it here. */ - 'file_list' => [ - 'maintenance/7zip.inc', - 'maintenance/backupPrefetch.inc', - 'maintenance/commandLine.inc', - 'maintenance/sqlite.inc', - 'maintenance/userOptions.inc', - 'maintenance/backup.inc', - 'maintenance/cleanupTable.inc', - 'maintenance/importImages.inc', - 'maintenance/userDupes.inc', - 'maintenance/language/checkLanguage.inc', - 'maintenance/language/languages.inc', - ], + 'file_list' => array_merge( + function_exists( 'register_postsend_function' ) ? [] : [ 'tests/phan/stubs/hhvm.php' ], + function_exists( 'wikidiff2_do_diff' ) ? [] : [ 'tests/phan/stubs/wikidiff.php' ], + function_exists( 'tideways_enable' ) ? [] : [ 'tests/phan/stubs/tideways.php' ], + class_exists( PEAR::class ) ? [] : [ 'tests/phan/stubs/mail.php' ], + class_exists( Memcached::class ) ? [] : [ 'tests/phan/stubs/memcached.php' ], + [ + 'maintenance/7zip.inc', + 'maintenance/backup.inc', + 'maintenance/backupPrefetch.inc', + 'maintenance/cleanupTable.inc', + 'maintenance/CodeCleanerGlobalsPass.inc', + 'maintenance/commandLine.inc', + 'maintenance/importImages.inc', + 'maintenance/sqlite.inc', + 'maintenance/userDupes.inc', + 'maintenance/userOptions.inc', + 'maintenance/language/checkLanguage.inc', + 'maintenance/language/languages.inc', + ] + ), /** * A list of directories that should be parsed for class and @@ -65,7 +73,6 @@ return [ 'resources/', 'skins/', 'vendor/', - 'tests/phan/stubs/', ], /** @@ -75,10 +82,7 @@ return [ * This is useful for excluding hopelessly unanalyzable * files that can't be removed for whatever reason. */ - 'exclude_file_list' => function_exists( 'xcache_get' ) ? [] : [ - // References xcache which probably isn't installed - 'includes/libs/objectcache/XCacheBagOStuff.php' - ], + 'exclude_file_list' => [], /** * A list of directories holding code that we want @@ -96,7 +100,7 @@ return [ // External class 'includes/libs/jsminplus.php', // separate repositories - 'skins/' + 'skins/', ], /** @@ -129,7 +133,7 @@ return [ * ```php * false, + 'ignore_undeclared_variables_in_global_scope' => true, /** * Set to true in order to attempt to detect dead @@ -339,8 +343,6 @@ return [ "PhanUndeclaredProperty", // approximate error count: 3 "PhanUndeclaredStaticMethod", - // approximate error count: 79 - "PhanUndeclaredVariable", ], /** diff --git a/tests/phan/stubs/hhvm.php b/tests/phan/stubs/hhvm.php index 8ffcdfb53b..79feaa00fd 100644 --- a/tests/phan/stubs/hhvm.php +++ b/tests/phan/stubs/hhvm.php @@ -24,4 +24,3 @@ */ function register_postsend_function( $callback ) { } - diff --git a/tests/phan/stubs/mail.php b/tests/phan/stubs/mail.php index e906cdb8ff..7cd9016771 100644 --- a/tests/phan/stubs/mail.php +++ b/tests/phan/stubs/mail.php @@ -1,11 +1,11 @@ $hashCache, CACHE_MEMCACHED => $hashCache, 'apc' => $hashCache, + 'apcu' => $hashCache, 'xcache' => $hashCache, 'wincache' => $hashCache, ] + $baseConfig->get( 'ObjectCaches' ); @@ -438,7 +439,7 @@ abstract class MediaWikiTestCase extends PHPUnit_Framework_TestCase { * @return string Absolute name of the temporary file */ protected function getNewTempFile() { - $fileName = tempnam( wfTempDir(), 'MW_PHPUnit_' . get_class( $this ) . '_' ); + $fileName = tempnam( wfTempDir(), 'MW_PHPUnit_' . static::class . '_' ); $this->tmpFiles[] = $fileName; return $fileName; @@ -1303,8 +1304,7 @@ abstract class MediaWikiTestCase extends PHPUnit_Framework_TestCase { if ( isset( $compatibility[$func] ) ) { return call_user_func_array( [ $this, $compatibility[$func] ], $args ); } else { - throw new MWException( "Called non-existent $func method on " - . get_class( $this ) ); + throw new MWException( "Called non-existent $func method on " . static::class ); } } diff --git a/tests/phpunit/autoload.ide.php b/tests/phpunit/autoload.ide.php new file mode 100644 index 0000000000..106ab68317 --- /dev/null +++ b/tests/phpunit/autoload.ide.php @@ -0,0 +1,112 @@ + PHP > PhpUnit` + * select `Use Composer autoloader` and set `Path to script` to ``. + * After that, tests can be run in PhpStorm using Right-click > Run or `Ctrl + Shift + F10`. + * Also, tests can be run with debugger very easily. + * + * This file basically does almost the same thing as `tests/phpunit/phpunit.php`, except that all + * code is going to be executed inside some function, so some hacks needed to make old code to be + * executed as if it was executed on top of the execution stack. + * + * PS: Mostly it is copy-paste from `phpunit.php` and `doMaintenance.php`. + * + * @file + */ + +// Set a flag which can be used to detect when other scripts have been entered +// through this entry point or not. +use MediaWiki\MediaWikiServices; + +global $argv; +$argv[1] = '--wiki'; +$argv[2] = getenv( 'WIKI_NAME' ) ?: 'wiki'; + +require_once __DIR__ . "/phpunit.php"; + +// Get an object to start us off +/** @var Maintenance $maintenance */ +$maintenance = new PHPUnitMaintClass(); + +// Basic sanity checks and such +$maintenance->setup(); + +// We used to call this variable $self, but it was moved +// to $maintenance->mSelf. Keep that here for b/c +$self = $maintenance->getName(); +global $IP; +# 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"; +} + +$requireOnceGlobalsScope = function ( $file ) use ( $self ) { + foreach ( array_keys( $GLOBALS ) as $varName ) { + eval( sprintf( 'global $%s;', $varName ) ); + } + + require_once $file; + + unset( $file ); + $definedVars = get_defined_vars(); + foreach ( $definedVars as $varName => $value ) { + eval( sprintf( 'global $%s; $%s = $value;', $varName, $varName ) ); + } +}; + +// Some other requires +$requireOnceGlobalsScope( "$IP/includes/Defines.php" ); +$requireOnceGlobalsScope( "$IP/includes/DefaultSettings.php" ); +$requireOnceGlobalsScope( "$IP/includes/GlobalFunctions.php" ); + +foreach ( array_keys( $GLOBALS ) as $varName ) { + eval( sprintf( 'global $%s;', $varName ) ); +} + +# Load composer's autoloader if present +if ( is_readable( "$IP/vendor/autoload.php" ) ) { + require_once "$IP/vendor/autoload.php"; +} + +if ( defined( 'MW_CONFIG_CALLBACK' ) ) { + # Use a callback function to configure MediaWiki + call_user_func( MW_CONFIG_CALLBACK ); +} else { + // Require the configuration (probably LocalSettings.php) + require $maintenance->loadSettings(); +} + +if ( $maintenance->getDbType() === Maintenance::DB_NONE ) { + if ( + $wgLocalisationCacheConf['storeClass'] === false + && ( + $wgLocalisationCacheConf['store'] == 'db' + || ( $wgLocalisationCacheConf['store'] == 'detect' && !$wgCacheDirectory ) + ) + ) { + $wgLocalisationCacheConf['storeClass'] = 'LCStoreNull'; + } +} + +$maintenance->finalSetup(); +// Some last includes +$requireOnceGlobalsScope( "$IP/includes/Setup.php" ); + +// Initialize main config instance +$maintenance->setConfig( MediaWikiServices::getInstance()->getMainConfig() ); + +// Sanity-check required extensions are installed +$maintenance->checkRequiredExtensions(); + +// A good time when no DBs have writes pending is around lag checks. +// This avoids having long running scripts just OOM and lose all the updates. +$maintenance->setAgentAndTriggers(); diff --git a/tests/phpunit/data/media/say-test.opus b/tests/phpunit/data/media/say-test.opus new file mode 100644 index 0000000000..168d2188a8 Binary files /dev/null and b/tests/phpunit/data/media/say-test.opus differ diff --git a/tests/phpunit/includes/BlockTest.php b/tests/phpunit/includes/BlockTest.php index 12b277e94f..63d05a0653 100644 --- a/tests/phpunit/includes/BlockTest.php +++ b/tests/phpunit/includes/BlockTest.php @@ -84,7 +84,7 @@ class BlockTest extends MediaWikiLangTestCase { } /** - * per bug 26425 + * per T28425 */ public function testBug26425BlockTimestampDefaultsToTime() { // delta to stop one-off errors when things happen to go over a second mark. @@ -99,7 +99,7 @@ class BlockTest extends MediaWikiLangTestCase { /** * CheckUser since being changed to use Block::newFromTarget started failing * because the new function didn't accept empty strings like Block::load() - * had. Regression bug 29116. + * had. Regression T31116. * * @dataProvider provideBug29116Data * @covers Block::newFromTarget diff --git a/tests/phpunit/includes/EditPageTest.php b/tests/phpunit/includes/EditPageTest.php index 5a01dc006f..9507811ec2 100644 --- a/tests/phpunit/includes/EditPageTest.php +++ b/tests/phpunit/includes/EditPageTest.php @@ -53,7 +53,7 @@ class EditPageTest extends MediaWikiLangTestCase { false ], [ - "An initial section with a fake heder (bug 32617)\n\n== Test == ??\nwtf", + "An initial section with a fake heder (T34617)\n\n== Test == ??\nwtf", false ], [ @@ -61,7 +61,7 @@ class EditPageTest extends MediaWikiLangTestCase { "Section" ], [ - "== Section== \t\r\n followed by whitespace (bug 35051)", + "== Section== \t\r\n followed by whitespace (T37051)", 'Section', ], ]; diff --git a/tests/phpunit/includes/ExtraParserTest.php b/tests/phpunit/includes/ExtraParserTest.php index 5dd4f7a07c..4e95a30e09 100644 --- a/tests/phpunit/includes/ExtraParserTest.php +++ b/tests/phpunit/includes/ExtraParserTest.php @@ -32,7 +32,7 @@ class ExtraParserTest extends MediaWikiTestCase { } /** - * @see Bug 8689 + * @see T10689 * @covers Parser::parse */ public function testLongNumericLinesDontKillTheParser() { diff --git a/tests/phpunit/includes/GlobalFunctions/wfTimestampTest.php b/tests/phpunit/includes/GlobalFunctions/wfTimestampTest.php index 5ca373d19f..b6682f7274 100644 --- a/tests/phpunit/includes/GlobalFunctions/wfTimestampTest.php +++ b/tests/phpunit/includes/GlobalFunctions/wfTimestampTest.php @@ -87,13 +87,13 @@ class WfTimestampTest extends MediaWikiTestCase { /** * This test checks wfTimestamp() with values outside. * It needs PHP 64 bits or PHP > 5.1. - * See r74778 and bug 25451 + * See r74778 and T27451 * @dataProvider provideOldTimestamps */ public function testOldTimestamps( $input, $outputType, $output, $message ) { $timestamp = wfTimestamp( $outputType, $input ); if ( substr( $output, 0, 1 ) === '/' ) { - // Bug 64946: Day of the week calculations for very old + // T66946: Day of the week calculations for very old // timestamps varies from system to system. $this->assertRegExp( $output, $timestamp, $message ); } else { diff --git a/tests/phpunit/includes/LinkFilterTest.php b/tests/phpunit/includes/LinkFilterTest.php index 428b0129a0..ed4958f254 100644 --- a/tests/phpunit/includes/LinkFilterTest.php +++ b/tests/phpunit/includes/LinkFilterTest.php @@ -1,5 +1,7 @@ markTestIncomplete( - 'This test has not been implemented yet. Rely on $wgCanonicalNamespaces.' + 'This test has not been implemented yet. Rely on $wgCanonicalNamespaces.' ); } */ @@ -223,7 +223,7 @@ class MWNamespaceTest extends MediaWikiTestCase { public function testGetCanonicalNamespaces() { // Remove the following lines when you implement this test. $this->markTestIncomplete( - 'This test has not been implemented yet. Rely on $wgCanonicalNamespaces.' + 'This test has not been implemented yet. Rely on $wgCanonicalNamespaces.' ); } */ @@ -234,7 +234,7 @@ class MWNamespaceTest extends MediaWikiTestCase { public function testGetCanonicalName() { // Remove the following lines when you implement this test. $this->markTestIncomplete( - 'This test has not been implemented yet. Rely on $wgCanonicalNamespaces.' + 'This test has not been implemented yet. Rely on $wgCanonicalNamespaces.' ); } */ @@ -245,7 +245,7 @@ class MWNamespaceTest extends MediaWikiTestCase { public function testGetCanonicalIndex() { // Remove the following lines when you implement this test. $this->markTestIncomplete( - 'This test has not been implemented yet. Rely on $wgCanonicalNamespaces.' + 'This test has not been implemented yet. Rely on $wgCanonicalNamespaces.' ); } */ @@ -257,7 +257,7 @@ class MWNamespaceTest extends MediaWikiTestCase { public function testGetValidNamespaces() { // Remove the following lines when you implement this test. $this->markTestIncomplete( - 'This test has not been implemented yet. Rely on $wgCanonicalNamespaces.' + 'This test has not been implemented yet. Rely on $wgCanonicalNamespaces.' ); } */ diff --git a/tests/phpunit/includes/MediaWikiServicesTest.php b/tests/phpunit/includes/MediaWikiServicesTest.php index dc0c64c4f6..cc95e383dd 100644 --- a/tests/phpunit/includes/MediaWikiServicesTest.php +++ b/tests/phpunit/includes/MediaWikiServicesTest.php @@ -7,6 +7,7 @@ use MediaWiki\MediaWikiServices; use MediaWiki\Services\DestructibleService; use MediaWiki\Services\SalvageableService; use MediaWiki\Services\ServiceDisabledException; +use Wikimedia\Rdbms\LBFactory; /** * @covers MediaWiki\MediaWikiServices @@ -308,7 +309,7 @@ class MediaWikiServicesTest extends MediaWikiTestCase { 'SearchEngineFactory' => [ 'SearchEngineFactory', SearchEngineFactory::class ], 'SearchEngineConfig' => [ 'SearchEngineConfig', SearchEngineConfig::class ], 'SkinFactory' => [ 'SkinFactory', SkinFactory::class ], - 'DBLoadBalancerFactory' => [ 'DBLoadBalancerFactory', 'LBFactory' ], + 'DBLoadBalancerFactory' => [ 'DBLoadBalancerFactory', Wikimedia\Rdbms\LBFactory::class ], 'DBLoadBalancer' => [ 'DBLoadBalancer', 'LoadBalancer' ], 'WatchedItemStore' => [ 'WatchedItemStore', WatchedItemStore::class ], 'WatchedItemQueryService' => [ 'WatchedItemQueryService', WatchedItemQueryService::class ], diff --git a/tests/phpunit/includes/MessageTest.php b/tests/phpunit/includes/MessageTest.php index 1de9c23a36..424218e6e1 100644 --- a/tests/phpunit/includes/MessageTest.php +++ b/tests/phpunit/includes/MessageTest.php @@ -315,14 +315,14 @@ class MessageTest extends MediaWikiLangTestCase { return [ [ 'foo', 'parse', 'foo', 'foo' ], [ 'foo', 'escaped', '<span>foo</span>', - 'foo' ], + 'foo' ], [ 'foo', 'plain', 'foo', 'foo' ], [ '', 'parse', '<script>alert(1)</script>', '<script>alert(1)</script>' ], [ '', 'escaped', '<script>alert(1)</script>', '<script>alert(1)</script>' ], [ '', 'plain', '', - '<script>alert(1)</script>' ], + '<script>alert(1)</script>' ], ]; } @@ -448,7 +448,7 @@ class MessageTest extends MediaWikiLangTestCase { } /** - * FIXME: This should not need database, but Language#formatExpiry does (bug 55912) + * FIXME: This should not need database, but Language#formatExpiry does (T57912) * @group Database * @covers Message::expiryParam * @covers Message::expiryParams diff --git a/tests/phpunit/includes/OutputPageTest.php b/tests/phpunit/includes/OutputPageTest.php index c3faf0d0ba..50f851c6c2 100644 --- a/tests/phpunit/includes/OutputPageTest.php +++ b/tests/phpunit/includes/OutputPageTest.php @@ -12,6 +12,48 @@ class OutputPageTest extends MediaWikiTestCase { const SCREEN_MEDIA_QUERY = 'screen and (min-width: 982px)'; const SCREEN_ONLY_MEDIA_QUERY = 'only screen and (min-width: 982px)'; + /** + * @covers OutputPage::addMeta + * @covers OutputPage::getMetaTags + * @covers OutputPage::getHeadLinksArray + */ + public function testMetaTags() { + $outputPage = $this->newInstance(); + $outputPage->addMeta( 'http:expires', '0' ); + $outputPage->addMeta( 'keywords', 'first' ); + $outputPage->addMeta( 'keywords', 'second' ); + $outputPage->addMeta( 'og:title', 'Ta-duh' ); + + $expected = [ + [ 'http:expires', '0' ], + [ 'keywords', 'first' ], + [ 'keywords', 'second' ], + [ 'og:title', 'Ta-duh' ], + ]; + $this->assertSame( $expected, $outputPage->getMetaTags() ); + + $links = $outputPage->getHeadLinksArray(); + $this->assertContains( '', $links ); + $this->assertContains( '', $links ); + $this->assertContains( '', $links ); + $this->assertContains( '', $links ); + $this->assertArrayNotHasKey( 'meta-robots', $links ); + } + + /** + * @covers OutputPage::setIndexPolicy + * @covers OutputPage::setFollowPolicy + * @covers OutputPage::getHeadLinksArray + */ + public function testRobotsPolicies() { + $outputPage = $this->newInstance(); + $outputPage->setIndexPolicy( 'noindex' ); + $outputPage->setFollowPolicy( 'nofollow' ); + + $links = $outputPage->getHeadLinksArray(); + $this->assertContains( '', $links ); + } + /** * Tests a particular case of transformCssMedia, using the given input, globals, * expected return, and message @@ -135,6 +177,99 @@ class OutputPageTest extends MediaWikiTestCase { ] ); } + public static function provideTransformFilePath() { + $baseDir = dirname( __DIR__ ) . '/data/media'; + return [ + // File that matches basePath, and exists. Hash found and appended. + [ + 'baseDir' => $baseDir, 'basePath' => '/w', + '/w/test.jpg', + '/w/test.jpg?edcf2' + ], + // File that matches basePath, but not found on disk. Empty query. + [ + 'baseDir' => $baseDir, 'basePath' => '/w', + '/w/unknown.png', + '/w/unknown.png?' + ], + // File not matching basePath. Ignored. + [ + 'baseDir' => $baseDir, 'basePath' => '/w', + '/files/test.jpg' + ], + // Empty string. Ignored. + [ + 'baseDir' => $baseDir, 'basePath' => '/w', + '', + '' + ], + // Similar path, but with domain component. Ignored. + [ + 'baseDir' => $baseDir, 'basePath' => '/w', + '//example.org/w/test.jpg' + ], + [ + 'baseDir' => $baseDir, 'basePath' => '/w', + 'https://example.org/w/test.jpg' + ], + // Unrelated path with domain component. Ignored. + [ + 'baseDir' => $baseDir, 'basePath' => '/w', + 'https://example.org/files/test.jpg' + ], + [ + 'baseDir' => $baseDir, 'basePath' => '/w', + '//example.org/files/test.jpg' + ], + // Unrelated path with domain, and empty base path (root mw install). Ignored. + [ + 'baseDir' => $baseDir, 'basePath' => '', + 'https://example.org/files/test.jpg' + ], + [ + 'baseDir' => $baseDir, 'basePath' => '', + // T155310 + '//example.org/files/test.jpg' + ], + // Check UploadPath before ResourceBasePath (T155146) + [ + 'baseDir' => dirname( $baseDir ), 'basePath' => '', + 'uploadDir' => $baseDir, 'uploadPath' => '/images', + '/images/test.jpg', + '/images/test.jpg?edcf2' + ], + ]; + } + + /** + * @dataProvider provideTransformFilePath + * @covers OutputPage::transformFilePath + * @covers OutputPage::transformResourcePath + */ + public function testTransformResourcePath( $baseDir, $basePath, $uploadDir = null, + $uploadPath = null, $path = null, $expected = null + ) { + if ( $path === null ) { + // Skip optional $uploadDir and $uploadPath + $path = $uploadDir; + $expected = $uploadPath; + $uploadDir = "$baseDir/images"; + $uploadPath = "$basePath/images"; + } + $this->setMwGlobals( 'IP', $baseDir ); + $conf = new HashConfig( [ + 'ResourceBasePath' => $basePath, + 'UploadDirectory' => $uploadDir, + 'UploadPath' => $uploadPath, + ] ); + + MediaWiki\suppressWarnings(); + $actual = OutputPage::transformResourcePath( $conf, $path ); + MediaWiki\restoreWarnings(); + + $this->assertEquals( $expected ?: $path, $actual ); + } + public static function provideMakeResourceLoaderLink() { // @codingStandardsIgnoreStart Generic.Files.LineLength return [ @@ -287,7 +422,7 @@ class OutputPageTest extends MediaWikiTestCase { /** * @covers OutputPage::haveCacheVaryCookies */ - function testHaveCacheVaryCookies() { + public function testHaveCacheVaryCookies() { $request = new FauxRequest(); $context = new RequestContext(); $context->setRequest( $request ); @@ -309,7 +444,7 @@ class OutputPageTest extends MediaWikiTestCase { * @covers OutputPage::addCategoryLinks * @covers OutputPage::getCategories */ - function testGetCategories() { + public function testGetCategories() { $fakeResultWrapper = new FakeResultWrapper( [ (object) [ 'pp_value' => 1, @@ -335,6 +470,29 @@ class OutputPageTest extends MediaWikiTestCase { $this->assertEquals( [ 0 => 'Test2' ], $outputPage->getCategories( 'normal' ) ); $this->assertEquals( [ 0 => 'Test' ], $outputPage->getCategories( 'hidden' ) ); } + + /** + * @return OutputPage + */ + private function newInstance() { + $context = new RequestContext(); + + $context->setConfig( new HashConfig( [ + 'AppleTouchIcon' => false, + 'DisableLangConversion' => true, + 'EnableAPI' => false, + 'EnableCanonicalServerLink' => false, + 'Favicon' => false, + 'Feed' => false, + 'LanguageCode' => false, + 'ReferrerPolicy' => false, + 'RightsPage' => false, + 'RightsUrl' => false, + 'UniversalEditButton' => false, + ] ) ); + + return new OutputPage( $context ); + } } /** diff --git a/tests/phpunit/includes/PreferencesTest.php b/tests/phpunit/includes/PreferencesTest.php index 289853de57..90b6396e28 100644 --- a/tests/phpunit/includes/PreferencesTest.php +++ b/tests/phpunit/includes/PreferencesTest.php @@ -42,7 +42,7 @@ class PreferencesTest extends MediaWikiTestCase { } /** - * Placeholder to verify bug 34302 + * Placeholder to verify T36302 * @covers Preferences::profilePreferences */ public function testEmailAuthenticationFieldWhenUserHasNoEmail() { @@ -54,7 +54,7 @@ class PreferencesTest extends MediaWikiTestCase { } /** - * Placeholder to verify bug 34302 + * Placeholder to verify T36302 * @covers Preferences::profilePreferences */ public function testEmailAuthenticationFieldWhenUserEmailNotAuthenticated() { @@ -66,7 +66,7 @@ class PreferencesTest extends MediaWikiTestCase { } /** - * Placeholder to verify bug 34302 + * Placeholder to verify T36302 * @covers Preferences::profilePreferences */ public function testEmailAuthenticationFieldWhenUserEmailIsAuthenticated() { diff --git a/tests/phpunit/includes/PrefixSearchTest.php b/tests/phpunit/includes/PrefixSearchTest.php index c5a7e04e30..cf2e1205be 100644 --- a/tests/phpunit/includes/PrefixSearchTest.php +++ b/tests/phpunit/includes/PrefixSearchTest.php @@ -260,7 +260,7 @@ class PrefixSearchTest extends MediaWikiLangTestCase { ], ] ], [ [ - 'Exact match not on top (bug 70958)', + 'Exact match not on top (T72958)', 'provision' => [ 'Barcelona', 'Bar', @@ -274,7 +274,7 @@ class PrefixSearchTest extends MediaWikiLangTestCase { ], ] ], [ [ - 'Exact match missing (bug 70958)', + 'Exact match missing (T72958)', 'provision' => [ 'Barcelona', 'Barbara', diff --git a/tests/phpunit/includes/RevisionStorageTest.php b/tests/phpunit/includes/RevisionStorageTest.php index 7d3007bf40..642ada20f2 100644 --- a/tests/phpunit/includes/RevisionStorageTest.php +++ b/tests/phpunit/includes/RevisionStorageTest.php @@ -274,18 +274,6 @@ class RevisionStorageTest extends MediaWikiTestCase { $this->assertEquals( $page->getId(), $rev->getPage() ); } - /** - * @covers Revision::getText - */ - public function testGetText() { - $this->hideDeprecated( 'Revision::getText' ); - - $orig = $this->makeRevision( [ 'text' => 'hello hello.' ] ); - $rev = Revision::newFromId( $orig->getId() ); - - $this->assertEquals( 'hello hello.', $rev->getText() ); - } - /** * @covers Revision::getContent */ diff --git a/tests/phpunit/includes/RevisionTest.php b/tests/phpunit/includes/RevisionTest.php index 767c963b66..c971a40cc9 100644 --- a/tests/phpunit/includes/RevisionTest.php +++ b/tests/phpunit/includes/RevisionTest.php @@ -311,28 +311,6 @@ class RevisionTest extends MediaWikiTestCase { ); } - function dataGetText() { - // NOTE: we expect the help namespace to always contain wikitext - return [ - [ 'hello world', 'Help:Hello', null, null, Revision::FOR_PUBLIC, 'hello world' ], - [ serialize( 'hello world' ), 'Hello', "testing", null, Revision::FOR_PUBLIC, null ], - [ serialize( 'hello world' ), 'Dummy:Hello', null, null, Revision::FOR_PUBLIC, null ], - ]; - } - - /** - * @group Database - * @dataProvider dataGetText - * @covers Revision::getText - */ - public function testGetText( $text, $title, $model, $format, $audience, $expectedText ) { - $this->hideDeprecated( 'Revision::getText' ); - - $rev = $this->newTestRevision( $text, $title, $model, $format ); - - $this->assertEquals( $expectedText, $rev->getText( $audience ) ); - } - public function dataGetSize() { return [ [ "hello world.", CONTENT_MODEL_WIKITEXT, 12 ], @@ -375,14 +353,11 @@ class RevisionTest extends MediaWikiTestCase { * @covers Revision::__construct */ public function testConstructWithText() { - $this->hideDeprecated( "Revision::getText" ); - $rev = new Revision( [ 'text' => 'hello world.', 'content_model' => CONTENT_MODEL_JAVASCRIPT ] ); - $this->assertNotNull( $rev->getText(), 'no content text' ); $this->assertNotNull( $rev->getContent(), 'no content object available' ); $this->assertEquals( CONTENT_MODEL_JAVASCRIPT, $rev->getContent()->getModel() ); $this->assertEquals( CONTENT_MODEL_JAVASCRIPT, $rev->getContentModel() ); @@ -392,15 +367,12 @@ class RevisionTest extends MediaWikiTestCase { * @covers Revision::__construct */ public function testConstructWithContent() { - $this->hideDeprecated( "Revision::getText" ); - $title = Title::newFromText( 'RevisionTest_testConstructWithContent' ); $rev = new Revision( [ 'content' => ContentHandler::makeContent( 'hello world.', $title, CONTENT_MODEL_JAVASCRIPT ), ] ); - $this->assertNotNull( $rev->getText(), 'no content text' ); $this->assertNotNull( $rev->getContent(), 'no content object available' ); $this->assertEquals( CONTENT_MODEL_JAVASCRIPT, $rev->getContent()->getModel() ); $this->assertEquals( CONTENT_MODEL_JAVASCRIPT, $rev->getContentModel() ); diff --git a/tests/phpunit/includes/SanitizerTest.php b/tests/phpunit/includes/SanitizerTest.php index 12db1a198f..862b7d07d5 100644 --- a/tests/phpunit/includes/SanitizerTest.php +++ b/tests/phpunit/includes/SanitizerTest.php @@ -211,7 +211,7 @@ class SanitizerTest extends MediaWikiTestCase { [ [ 'foo6' => 'baz' ], 'foo6=baz', 'Numbers are allowed' ], # This bit is more relaxed than XML rules, but some extensions use - # it, like ProofreadPage (see bug 27539) + # it, like ProofreadPage (see T29539) [ [ '1foo' => 'baz' ], '1foo=baz', 'Leading numbers are allowed' ], [ [], 'foo$=baz', 'Symbols are not allowed' ], [ [], 'foo@=baz', 'Symbols are not allowed' ], @@ -286,7 +286,7 @@ class SanitizerTest extends MediaWikiTestCase { [ ' ', '/* /* */' ], [ 'display: block;', "display:/* foo */block;" ], [ 'display: block;', "display:\\2f\\2a foo \\2a\\2f block;", - 'Backslash-escaped comments must be stripped (bug 28450)' ], + 'Backslash-escaped comments must be stripped (T30450)' ], [ '', '/* unfinished comment structure', 'Remove anything after a comment-start token' ], [ '', "\\2f\\2a unifinished comment'", diff --git a/tests/phpunit/includes/SanitizerValidateEmailTest.php b/tests/phpunit/includes/SanitizerValidateEmailTest.php index f47e74e287..2448513345 100644 --- a/tests/phpunit/includes/SanitizerValidateEmailTest.php +++ b/tests/phpunit/includes/SanitizerValidateEmailTest.php @@ -64,7 +64,7 @@ class SanitizerValidateEmailTest extends PHPUnit_Framework_TestCase { } /** - * bug 26948 : comma were matched by an incorrect regexp range + * T28948 : comma were matched by an incorrect regexp range */ public function testEmailWithCommasAreInvalids() { $this->invalid( "user,foo@example.org" ); diff --git a/tests/phpunit/includes/TestLogger.php b/tests/phpunit/includes/TestLogger.php index 7086a926be..84a6adf2ac 100644 --- a/tests/phpunit/includes/TestLogger.php +++ b/tests/phpunit/includes/TestLogger.php @@ -38,9 +38,11 @@ class TestLogger extends \Psr\Log\AbstractLogger { private $filter = null; /** - * @param bool $collect Whether to collect logs + * @param bool $collect Whether to collect logs. @see setCollect() * @param callable $filter Filter logs before collecting/printing. Signature is * string|null function ( string $message, string $level, array $context ); + * @param bool $collectContext Whether to keep the context passed to log. + * @since 1.29 @see setCollectContext() */ public function __construct( $collect = false, $filter = null, $collectContext = false ) { $this->collect = $collect; @@ -51,9 +53,23 @@ class TestLogger extends \Psr\Log\AbstractLogger { /** * Set the "collect" flag * @param bool $collect + * @return TestLogger $this */ public function setCollect( $collect ) { $this->collect = $collect; + return $this; + } + + /** + * Set the collectContext flag + * + * @param bool $collectContext + * @since 1.29 + * @return TestLogger $this + */ + public function setCollectContext( $collectContext ) { + $this->collectContext = $collectContext; + return $this; } /** diff --git a/tests/phpunit/includes/TitleTest.php b/tests/phpunit/includes/TitleTest.php index 7925c6f8f9..238b65f429 100644 --- a/tests/phpunit/includes/TitleTest.php +++ b/tests/phpunit/includes/TitleTest.php @@ -267,7 +267,7 @@ class TitleTest extends MediaWikiTestCase { $this->assertEquals( $expectedParam, $par, - "Bug 31100 regression check: Title->fixSpecialName() should preserve parameter" + "T33100 regression check: Title->fixSpecialName() should preserve parameter" ); } diff --git a/tests/phpunit/includes/XmlTest.php b/tests/phpunit/includes/XmlTest.php index 18ff1f4b11..184dd438d2 100644 --- a/tests/phpunit/includes/XmlTest.php +++ b/tests/phpunit/includes/XmlTest.php @@ -83,7 +83,7 @@ class XmlTest extends MediaWikiTestCase { $this->assertEquals( '', Xml::input( 'name', false, 0 ), - 'Input with a value of 0 (bug 23797)' + 'Input with a value of 0 (T25797)' ); } diff --git a/tests/phpunit/includes/api/ApiEditPageTest.php b/tests/phpunit/includes/api/ApiEditPageTest.php index 0ffcbca762..e091153281 100644 --- a/tests/phpunit/includes/api/ApiEditPageTest.php +++ b/tests/phpunit/includes/api/ApiEditPageTest.php @@ -204,7 +204,7 @@ class ApiEditPageTest extends ApiTestCase { /** * Test action=edit§ion=new * Run it twice so we test adding a new section on a - * page that doesn't exist (bug 52830) and one that + * page that doesn't exist (T54830) and one that * does exist */ public function testEditNewSection() { @@ -416,7 +416,7 @@ class ApiEditPageTest extends ApiTestCase { $count++; /* - * bug 41990: if the target page has a newer revision than the redirect, then editing the + * T43990: if the target page has a newer revision than the redirect, then editing the * redirect while specifying 'redirect' and *not* specifying 'basetimestamp' erroneously * caused an edit conflict to be detected. */ diff --git a/tests/phpunit/includes/api/ApiErrorFormatterTest.php b/tests/phpunit/includes/api/ApiErrorFormatterTest.php index a40db24680..eaa4d178e7 100644 --- a/tests/phpunit/includes/api/ApiErrorFormatterTest.php +++ b/tests/phpunit/includes/api/ApiErrorFormatterTest.php @@ -439,8 +439,8 @@ class ApiErrorFormatterTest extends MediaWikiLangTestCase { $formatter->addMessagesFromStatus( 'status', $status ); $this->assertSame( [ 'error' => [ - 'code' => 'parentheses', - 'info' => $parensPlain, + 'code' => 'mainpage', + 'info' => $mainpagePlain, ], 'warnings' => [ 'status' => [ @@ -502,6 +502,17 @@ class ApiErrorFormatterTest extends MediaWikiLangTestCase { $formatter->arrayFromStatus( $status, 'warning' ), 'arrayFromStatus test for warning' ); + + $result->reset(); + $result->addValue( null, 'error', [ 'bogus' ] ); + $formatter->addError( 'err', 'mainpage' ); + $this->assertSame( [ + 'error' => [ + 'code' => 'mainpage', + 'info' => $mainpagePlain, + ], + ApiResult::META_TYPE => 'assoc', + ], $result->getResultData(), 'Overwrites bogus "error" value with real error' ); } /** diff --git a/tests/phpunit/includes/api/ApiMainTest.php b/tests/phpunit/includes/api/ApiMainTest.php index 71dafceb5a..9060dfb787 100644 --- a/tests/phpunit/includes/api/ApiMainTest.php +++ b/tests/phpunit/includes/api/ApiMainTest.php @@ -451,7 +451,10 @@ class ApiMainTest extends ApiTestCase { $context->setRequest( new FauxRequest( [ 'errorformat' => 'plaintext' ] ) ); $context->setLanguage( 'en' ); $context->setConfig( new MultiConfig( [ - new HashConfig( [ 'ShowHostnames' => true, 'ShowSQLErrors' => false ] ), + new HashConfig( [ + 'ShowHostnames' => true, 'ShowSQLErrors' => false, + 'ShowExceptionDetails' => true, 'ShowDBErrorBacktrace' => true, + ] ), $context->getConfig() ] ) ); @@ -546,7 +549,9 @@ class ApiMainTest extends ApiTestCase { [ 'code' => 'existing-error', 'text' => 'existing error', 'module' => 'main' ], [ 'code' => 'ue', 'text' => "Usage exception!", 'data' => [ 'foo' => 'bar' ] ] ], - 'docref' => "See $doclink for API usage.", + 'docref' => "See $doclink for API usage. Subscribe to the mediawiki-api-announce mailing " . + "list at <https://lists.wikimedia.org/mailman/listinfo/mediawiki-api-announce> " . + "for notice of API deprecations and breaking changes.", 'servedby' => wfHostname(), ] ], @@ -564,7 +569,9 @@ class ApiMainTest extends ApiTestCase { [ 'code' => 'sv-error1', 'text' => 'An error', 'module' => 'foo+bar' ], [ 'code' => 'sv-error2', 'text' => 'Another error', 'module' => 'foo+bar' ], ], - 'docref' => "See $doclink for API usage.", + 'docref' => "See $doclink for API usage. Subscribe to the mediawiki-api-announce mailing " . + "list at <https://lists.wikimedia.org/mailman/listinfo/mediawiki-api-announce> " . + "for notice of API deprecations and breaking changes.", 'servedby' => wfHostname(), ] ], diff --git a/tests/phpunit/includes/api/ApiQueryAllPagesTest.php b/tests/phpunit/includes/api/ApiQueryAllPagesTest.php index 76872362cd..9f28aaf56e 100644 --- a/tests/phpunit/includes/api/ApiQueryAllPagesTest.php +++ b/tests/phpunit/includes/api/ApiQueryAllPagesTest.php @@ -13,7 +13,7 @@ class ApiQueryAllPagesTest extends ApiTestCase { } /** - *Test bug 25702 + *Test T27702 *Prefixes of API search requests are not handled with case sensitivity and may result *in wrong search results */ diff --git a/tests/phpunit/includes/api/ApiTestCase.php b/tests/phpunit/includes/api/ApiTestCase.php index 6b299c98c8..abef1c9206 100644 --- a/tests/phpunit/includes/api/ApiTestCase.php +++ b/tests/phpunit/includes/api/ApiTestCase.php @@ -219,7 +219,7 @@ abstract class ApiTestCase extends MediaWikiLangTestCase { } public function testApiTestGroup() { - $groups = PHPUnit_Util_Test::getGroups( get_class( $this ) ); + $groups = PHPUnit_Util_Test::getGroups( static::class ); $constraint = PHPUnit_Framework_Assert::logicalOr( $this->contains( 'medium' ), $this->contains( 'large' ) diff --git a/tests/phpunit/includes/api/query/ApiQueryBasicTest.php b/tests/phpunit/includes/api/query/ApiQueryBasicTest.php index e5971b4418..fbc794ed12 100644 --- a/tests/phpunit/includes/api/query/ApiQueryBasicTest.php +++ b/tests/phpunit/includes/api/query/ApiQueryBasicTest.php @@ -325,7 +325,7 @@ class ApiQueryBasicTest extends ApiQueryTestBase { } /** - * Test bug 51821 + * Test T53821 */ public function testGeneratorRedirects() { $this->editPage( 'AQBT-Target', 'test' ); diff --git a/tests/phpunit/includes/auth/ThrottlePreAuthenticationProviderTest.php b/tests/phpunit/includes/auth/ThrottlePreAuthenticationProviderTest.php index 20f4cbc44d..2f3e27c6fe 100644 --- a/tests/phpunit/includes/auth/ThrottlePreAuthenticationProviderTest.php +++ b/tests/phpunit/includes/auth/ThrottlePreAuthenticationProviderTest.php @@ -226,7 +226,7 @@ class ThrottlePreAuthenticationProviderTest extends \MediaWikiTestCase { $provider->postAuthentication( \User::newFromName( 'SomeUser' ), AuthenticationResponse::newPass() ); $this->assertSame( [ - [ \Psr\Log\LogLevel::ERROR, 'throttler data not found for {user}' ], + [ \Psr\Log\LogLevel::INFO, 'throttler data not found for {user}' ], ], $logger->getBuffer() ); } } diff --git a/tests/phpunit/includes/cache/LocalisationCacheTest.php b/tests/phpunit/includes/cache/LocalisationCacheTest.php index ed821530a2..5eed01cb2d 100644 --- a/tests/phpunit/includes/cache/LocalisationCacheTest.php +++ b/tests/phpunit/includes/cache/LocalisationCacheTest.php @@ -75,7 +75,7 @@ class LocalisationCacheTest extends MediaWikiTestCase { public function testRecacheFallbacksWithHooks() { // Use hook to provide updates for messages. This is what the - // LocalisationUpdate extension does. See bug 68781. + // LocalisationUpdate extension does. See T70781. $this->mergeMwGlobalArrayValue( 'wgHooks', [ 'LocalisationCacheRecacheFallback' => [ function ( diff --git a/tests/phpunit/includes/cache/MessageCacheTest.php b/tests/phpunit/includes/cache/MessageCacheTest.php index bd744c01ca..b03eeba295 100644 --- a/tests/phpunit/includes/cache/MessageCacheTest.php +++ b/tests/phpunit/includes/cache/MessageCacheTest.php @@ -92,13 +92,44 @@ class MessageCacheTest extends MediaWikiLangTestCase { // Existing message with customizations on the fallbacks [ 'sunday', 'ab', 'амҽыш' ], - // bug 46579 + // T48579 [ 'FallbackLanguageTest-NoDervContLang', 'de', 'de/none' ], // UI language different from content language should only use de/none as last option [ 'FallbackLanguageTest-NoDervContLang', 'fit', 'de/none' ], ]; } + public function testReplaceMsg() { + global $wgContLang; + + $messageCache = MessageCache::singleton(); + $message = 'go'; + $uckey = $wgContLang->ucfirst( $message ); + $oldText = $messageCache->get( $message ); // "Ausführen" + + $dbw = wfGetDB( DB_MASTER ); + $dbw->startAtomic( __METHOD__ ); // simulate request and block deferred updates + $messageCache->replace( $uckey, 'Allez!' ); + $this->assertEquals( 'Allez!', + $messageCache->getMsgFromNamespace( $uckey, 'de' ), + 'Updates are reflected in-process immediately' ); + $this->assertEquals( 'Allez!', + $messageCache->get( $message ), + 'Updates are reflected in-process immediately' ); + $this->makePage( 'Go', 'de', 'Race!' ); + $dbw->endAtomic( __METHOD__ ); + + $this->assertEquals( 0, + DeferredUpdates::pendingUpdatesCount(), + 'Post-commit deferred update triggers a run of all updates' ); + + $this->assertEquals( 'Race!', $messageCache->get( $message ), 'Correct final contents' ); + + $this->makePage( 'Go', 'de', $oldText ); + $messageCache->replace( $uckey, $oldText ); // deferred update runs immediately + $this->assertEquals( $oldText, $messageCache->get( $message ), 'Content restored' ); + } + /** * There's a fallback case where the message key is given as fully qualified -- this * should ignore the passed $lang and use the language from the key diff --git a/tests/phpunit/includes/changes/ChangesListBooleanFilterGroupTest.php b/tests/phpunit/includes/changes/ChangesListBooleanFilterGroupTest.php new file mode 100644 index 0000000000..0db3a49693 --- /dev/null +++ b/tests/phpunit/includes/changes/ChangesListBooleanFilterGroupTest.php @@ -0,0 +1,126 @@ + 'groupName', + 'priority' => 1, + 'filters' => [], + ] ) + ); + + $this->assertSame( + true, + $hideGroupDefault->isFullCoverage + ); + } + + public function testAutoPriorities() { + $group = new ChangesListBooleanFilterGroup( [ + 'name' => 'groupName', + 'priority' => 1, + 'filters' => [ + [ 'name' => 'hidefoo', 'default' => false, ], + [ 'name' => 'hidebar', 'default' => false, ], + [ 'name' => 'hidebaz', 'default' => false, ], + ], + ] ); + + $filters = $group->getFilters(); + $this->assertEquals( + [ + -2, + -3, + -4, + ], + array_map( + function ( $f ) { + return $f->getPriority(); + }, + array_values( $filters ) + ) + ); + } + + public function testGetJsData() { + $definition = [ + 'name' => 'some-group', + 'title' => 'some-group-title', + 'priority' => 1, + 'filters' => [ + [ + 'name' => 'hidefoo', + 'label' => 'foo-label', + 'description' => 'foo-description', + 'default' => true, + 'showHide' => 'showhidefoo', + 'priority' => 2, + ], + [ + 'name' => 'hidebar', + 'label' => 'bar-label', + 'description' => 'bar-description', + 'default' => false, + 'priority' => 4, + ] + ], + ]; + + $group = new ChangesListBooleanFilterGroup( $definition ); + + $specialPage = $this->getMockBuilder( 'ChangesListSpecialPage' ) + ->setConstructorArgs( [ + 'ChangesListSpecialPage', + '', + ] ) + ->getMockForAbstractClass(); + + $this->assertArrayEquals( + [ + 'name' => 'some-group', + 'title' => 'some-group-title', + 'type' => ChangesListBooleanFilterGroup::TYPE, + 'priority' => 1, + 'filters' => [ + [ + 'name' => 'hidebar', + 'label' => 'bar-label', + 'description' => 'bar-description', + 'default' => false, + 'priority' => 4, + 'cssClass' => null, + 'conflicts' => [], + 'subset' => [], + ], + [ + 'name' => 'hidefoo', + 'label' => 'foo-label', + 'description' => 'foo-description', + 'default' => true, + 'priority' => 2, + 'cssClass' => null, + 'conflicts' => [], + 'subset' => [], + ], + ], + 'conflicts' => [], + 'fullCoverage' => true, + 'messageKeys' => [ + 'some-group-title', + 'bar-label', + 'bar-description', + 'foo-label', + 'foo-description', + ], + ], + + $group->getJsData( $specialPage ), + /** ordered= */ false, + /** named= */ true + ); + } +} diff --git a/tests/phpunit/includes/changes/ChangesListBooleanFilterTest.php b/tests/phpunit/includes/changes/ChangesListBooleanFilterTest.php new file mode 100644 index 0000000000..c715988eea --- /dev/null +++ b/tests/phpunit/includes/changes/ChangesListBooleanFilterTest.php @@ -0,0 +1,223 @@ + 'group', + 'priority' => 2, + 'filters' => [], + ] ); + + $definition = [ + 'group' => $group, + 'label' => 'main-label', + 'description' => 'main-description', + 'default' => 1, + 'priority' => 1, + ]; + + $fooFilter = new ChangesListBooleanFilter( + $definition + [ 'name' => 'hidefoo' ] + ); + + $barFilter = new ChangesListBooleanFilter( + $definition + [ 'name' => 'hidebar' ] + ); + + $bazFilter = new ChangesListBooleanFilter( + $definition + [ 'name' => 'hidebaz' ] + ); + + $fooFilter->conflictsWith( + $barFilter, + 'foo-bar-global-conflict', + 'foo-conflicts-bar', + 'bar-conflicts-foo' + ); + + $fooFilter->setAsSupersetOf( $bazFilter, 'foo-superset-of-baz' ); + + $fooData = $fooFilter->getJsData(); + $this->assertArrayEquals( + [ + 'name' => 'hidefoo', + 'label' => 'main-label', + 'description' => 'main-description', + 'default' => 1, + 'priority' => 1, + 'cssClass' => null, + 'conflicts' => [ + [ + 'group' => 'group', + 'filter' => 'hidebar', + 'globalDescription' => 'foo-bar-global-conflict', + 'contextDescription' => 'foo-conflicts-bar', + ] + ], + 'subset' => [ + [ + 'group' => 'group', + 'filter' => 'hidebaz', + ], + + ], + 'messageKeys' => [ + 'main-label', + 'main-description', + 'foo-bar-global-conflict', + 'foo-conflicts-bar', + ], + ], + $fooData, + /** ordered= */ false, + /** named= */ true + ); + + $barData = $barFilter->getJsData(); + $this->assertArrayEquals( + [ + 'name' => 'hidebar', + 'label' => 'main-label', + 'description' => 'main-description', + 'default' => 1, + 'priority' => 1, + 'cssClass' => null, + 'conflicts' => [ + [ + 'group' => 'group', + 'filter' => 'hidefoo', + 'globalDescription' => 'foo-bar-global-conflict', + 'contextDescription' => 'bar-conflicts-foo', + ] + ], + 'subset' => [], + 'messageKeys' => [ + 'main-label', + 'main-description', + 'foo-bar-global-conflict', + 'bar-conflicts-foo', + ], + ], + $barData, + /** ordered= */ false, + /** named= */ true + ); + } + + /** + * @expectedException MWException + * @expectedExceptionMessage Supersets can only be defined for filters in the same group + */ + public function testSetAsSupersetOf() { + $groupA = new ChangesListBooleanFilterGroup( [ + 'name' => 'groupA', + 'priority' => 2, + 'filters' => [ + [ + 'name' => 'foo', + 'default' => false, + ], + [ + 'name' => 'bar', + 'default' => false, + ] + ], + ] ); + + $groupB = new ChangesListBooleanFilterGroup( [ + 'name' => 'groupB', + 'priority' => 3, + 'filters' => [ + [ + 'name' => 'baz', + 'default' => true, + ], + ], + ] ); + + $foo = TestingAccessWrapper::newFromObject( $groupA->getFilter( 'foo' ) ); + + $bar = $groupA->getFilter( 'bar' ); + + $baz = $groupB->getFilter( 'baz' ); + + $foo->setAsSupersetOf( $bar ); + $this->assertArrayEquals( [ + [ + 'group' => 'groupA', + 'filter' => 'bar', + ], + ], + $foo->subsetFilters, + /** ordered= */ false, + /** named= */ true + ); + + $foo->setAsSupersetOf( $baz, 'some-message' ); + } + + public function testIsFeatureAvailableOnStructuredUi() { + $specialPage = $this->getMockBuilder( 'ChangesListSpecialPage' ) + ->setConstructorArgs( [ + 'ChangesListSpecialPage', + '', + ] ) + ->getMockForAbstractClass(); + + $groupA = new ChangesListBooleanFilterGroup( [ + 'name' => 'groupA', + 'priority' => 1, + 'filters' => [], + ] ); + + $foo = new ChangesListBooleanFilter( [ + 'name' => 'hidefoo', + 'group' => $groupA, + 'label' => 'foo-label', + 'description' => 'foo-description', + 'default' => true, + 'showHide' => 'showhidefoo', + 'priority' => 2, + ] ); + + $this->assertEquals( + true, + $foo->isFeatureAvailableOnStructuredUi( $specialPage ), + 'Same filter appears on both' + ); + + // Should only be legacy ones that haven't been ported yet + $bar = new ChangesListBooleanFilter( [ + 'name' => 'hidebar', + 'default' => true, + 'group' => $groupA, + 'showHide' => 'showhidebar', + 'priority' => 2, + ] ); + + $this->assertEquals( + false, + $bar->isFeatureAvailableOnStructuredUi( $specialPage ), + 'Only on unstructured UI' + ); + + $baz = new ChangesListBooleanFilter( [ + 'name' => 'hidebaz', + 'default' => true, + 'group' => $groupA, + 'showHide' => 'showhidebaz', + 'isReplacedInStructuredUi' => true, + 'priority' => 2, + ] ); + + $this->assertEquals( + true, + $baz->isFeatureAvailableOnStructuredUi( $specialPage ), + 'Legacy filter does not appear directly in new UI, but equivalent ' . + 'does and is marked with isReplacedInStructuredUi' + ); + } +} diff --git a/tests/phpunit/includes/changes/ChangesListStringOptionsFilterGroupTest.php b/tests/phpunit/includes/changes/ChangesListStringOptionsFilterGroupTest.php new file mode 100644 index 0000000000..019e2570d9 --- /dev/null +++ b/tests/phpunit/includes/changes/ChangesListStringOptionsFilterGroupTest.php @@ -0,0 +1,302 @@ + 'group', + 'filters' => [], + 'isFullCoverage' => false, + 'queryCallable' => function () { + } + ] ) + ); + + $this->assertSame( + false, + $falseGroup->isFullCoverage + ); + + // Should throw due to missing isFullCoverage + $undefinedFullCoverageGroup = new ChangesListStringOptionsFilterGroup( [ + 'name' => 'othergroup', + 'filters' => [], + ] ); + } + + /** + * @param array $filterDefinitions Array of filter definitions + * @param array $expectedValues Array of values callback should receive + * @param string $input Value in URL + * + * @dataProvider provideModifyQuery + */ + public function testModifyQuery( $filterDefinitions, $expectedValues, $input ) { + $self = $this; + + $queryCallable = function ( + $className, + $ctx, + $dbr, + &$tables, + &$fields, + &$conds, + &$query_options, + &$join_conds, + $actualSelectedValues + ) use ( $self, $expectedValues ) { + $self->assertSame( + $expectedValues, + $actualSelectedValues + ); + }; + + $groupDefinition = [ + 'name' => 'group', + 'default' => '', + 'isFullCoverage' => true, + 'filters' => $filterDefinitions, + 'queryCallable' => $queryCallable, + ]; + + $this->modifyQueryHelper( $groupDefinition, $input ); + } + + public function provideModifyQuery() { + $mixedFilters = [ + [ + 'name' => 'foo', + ], + [ + 'name' => 'bar', + 'isAllowedCallable' => function () { + return false; + }, + ], + [ + 'name' => 'baz', + ], + [ + 'name' => 'goo' + ], + ]; + + return [ + [ + $mixedFilters, + [ 'baz', 'foo', ], + 'foo;bar;BaZ;invalid', + ], + + [ + $mixedFilters, + [ 'baz', 'foo', 'goo' ], + 'all', + ], + ]; + } + + /** + * @param array $filterDefinitions Array of filter definitions + * @param string $input Value in URL + * @param string $message Message thrown by exception + * + * @dataProvider provideNoOpModifyQuery + */ + public function testNoOpModifyQuery( $filterDefinitions, $input, $message ) { + $noFiltersAllowedCallable = function ( + $className, + $ctx, + $dbr, + &$tables, + &$fields, + &$conds, + &$query_options, + &$join_conds, + $actualSelectedValues + ) use ( $message ) { + throw new MWException( $message ); + }; + + $groupDefinition = [ + 'name' => 'group', + 'default' => '', + 'isFullCoverage' => true, + 'filters' => $filterDefinitions, + 'queryCallable' => $noFiltersAllowedCallable, + ]; + + $this->modifyQueryHelper( $groupDefinition, $input ); + + $this->assertTrue( + true, + 'Test successfully completed without calling queryCallable' + ); + } + + public function provideNoOpModifyQuery() { + $isAllowedFalse = [ + 'isAllowedCallable' => function () { + return false; + }, + ]; + + $allDisallowedFilters = [ + [ + 'name' => 'disallowed1', + ] + $isAllowedFalse, + + [ + 'name' => 'disallowed2', + ] + $isAllowedFalse, + + [ + 'name' => 'disallowed3', + ] + $isAllowedFalse, + ]; + + $normalFilters = [ + [ + 'name' => 'foo', + ], + [ + 'name' => 'bar', + ] + ]; + + return [ + [ + $allDisallowedFilters, + 'disallowed1;disallowed3', + 'The queryCallable should not be called if no filters are allowed', + ], + + [ + $normalFilters, + '', + 'The queryCallable should not be called if no filters are selected', + ], + + [ + $normalFilters, + 'invalid1', + 'The queryCallable should not be called if no valid filters are selected', + ], + ]; + } + + protected function getSpecialPage() { + return $this->getMockBuilder( 'ChangesListSpecialPage' ) + ->setConstructorArgs( [ + 'ChangesListSpecialPage', + '', + ] ) + ->getMockForAbstractClass(); + } + + /** + * @param array $groupDefinition Group definition + * @param string $input Value in URL + * + * @dataProvider provideModifyQuery + */ + protected function modifyQueryHelper( $groupDefinition, $input ) { + $ctx = $this->getMock( 'IContextSource' ); + $dbr = $this->getMock( 'IDatabase' ); + $tables = $fields = $conds = $query_options = $join_conds = []; + + $group = new ChangesListStringOptionsFilterGroup( $groupDefinition ); + + $specialPage = $this->getSpecialPage(); + + $group->modifyQuery( + $dbr, + $specialPage, + $tables, + $fields, + $conds, + $query_options, + $join_conds, + $input + ); + } + + public function testGetJsData() { + $definition = [ + 'name' => 'some-group', + 'title' => 'some-group-title', + 'default' => 'foo', + 'priority' => 1, + 'isFullCoverage' => false, + 'queryCallable' => function () { + }, + 'filters' => [ + [ + 'name' => 'foo', + 'label' => 'foo-label', + 'description' => 'foo-description', + 'priority' => 2, + ], + [ + 'name' => 'bar', + 'label' => 'bar-label', + 'description' => 'bar-description', + 'priority' => 4, + ] + ], + ]; + + $group = new ChangesListStringOptionsFilterGroup( $definition ); + + $specialPage = $this->getSpecialPage(); + + $this->assertArrayEquals( + [ + 'name' => 'some-group', + 'title' => 'some-group-title', + 'type' => ChangesListStringOptionsFilterGroup::TYPE, + 'default' => 'foo', + 'priority' => 1, + 'fullCoverage' => false, + 'filters' => [ + [ + 'name' => 'bar', + 'label' => 'bar-label', + 'description' => 'bar-description', + 'priority' => 4, + 'cssClass' => null, + 'conflicts' => [], + 'subset' => [], + ], + [ + 'name' => 'foo', + 'label' => 'foo-label', + 'description' => 'foo-description', + 'priority' => 2, + 'cssClass' => null, + 'conflicts' => [], + 'subset' => [], + ], + ], + 'conflicts' => [], + 'separator' => ';', + 'messageKeys' => [ + 'some-group-title', + 'bar-label', + 'bar-description', + 'foo-label', + 'foo-description', + ], + ], + $group->getJsData( $specialPage ), + /** ordered= */ false, + /** named= */ true + ); + } +} diff --git a/tests/phpunit/includes/changes/RCCacheEntryFactoryTest.php b/tests/phpunit/includes/changes/RCCacheEntryFactoryTest.php index ccabab68a9..4ff1eb8e76 100644 --- a/tests/phpunit/includes/changes/RCCacheEntryFactoryTest.php +++ b/tests/phpunit/includes/changes/RCCacheEntryFactoryTest.php @@ -69,19 +69,12 @@ class RCCacheEntryFactoryTest extends MediaWikiLangTestCase { $diff = [ 'curid' => 5, 'diff' => 191, 'oldid' => 190 ]; $cur = [ 'curid' => 5, 'diff' => 0, 'oldid' => 191 ]; - $this->assertQueryLink( 'cur', $cur, $cacheEntry->curlink, 'cur link' ); - $this->assertQueryLink( 'prev', $diff, $cacheEntry->lastlink, 'prev link' ); - $this->assertQueryLink( 'diff', $diff, $cacheEntry->difflink, 'diff link' ); + $this->assertQueryLink( 'cur', $cur, $cacheEntry->curlink ); + $this->assertQueryLink( 'prev', $diff, $cacheEntry->lastlink ); + $this->assertQueryLink( 'diff', $diff, $cacheEntry->difflink ); } public function testNewForDeleteChange() { - $expected = [ - 'title' => 'Abc', - 'user' => 'TestRecentChangesUser', - 'timestamp' => '21:21', - 'numberofWatchingusers' => 0, - 'unpatrolled' => false - ]; $user = $this->getMutableTestUser()->getUser(); $recentChange = $this->testRecentChangesHelper->makeLogRecentChange( 'delete', diff --git a/tests/phpunit/includes/content/ContentHandlerTest.php b/tests/phpunit/includes/content/ContentHandlerTest.php index 39948ca130..a3d1ddac31 100644 --- a/tests/phpunit/includes/content/ContentHandlerTest.php +++ b/tests/phpunit/includes/content/ContentHandlerTest.php @@ -367,22 +367,6 @@ class ContentHandlerTest extends MediaWikiTestCase { $this->assertFalse( $handler->supportsDirectEditing(), 'direct editing is not supported' ); } - /** - * @covers ContentHandler::runLegacyHooks - */ - public function testRunLegacyHooks() { - Hooks::register( 'testRunLegacyHooks', __CLASS__ . '::dummyHookHandler' ); - - $content = new WikitextContent( 'test text' ); - $ok = ContentHandler::runLegacyHooks( - 'testRunLegacyHooks', - [ 'foo', &$content, 'bar' ] - ); - - $this->assertTrue( $ok, "runLegacyHooks should have returned true" ); - $this->assertEquals( "TEST TEXT", $content->getNativeData() ); - } - public static function dummyHookHandler( $foo, &$text, $bar ) { if ( $text === null || $text === false ) { return false; @@ -425,6 +409,7 @@ class ContentHandlerTest extends MediaWikiTestCase { $this->assertArrayHasKey( 'external_link', $fields ); $this->assertArrayHasKey( 'outgoing_link', $fields ); $this->assertArrayHasKey( 'template', $fields ); + $this->assertArrayHasKey( 'content_model', $fields ); } private function newSearchEngine() { @@ -449,8 +434,13 @@ class ContentHandlerTest extends MediaWikiTestCase { $page = new WikiPage( $title ); $this->setTemporaryHook( 'SearchDataForIndex', - function ( &$fields, ContentHandler $handler, WikiPage $page, ParserOutput $output, - SearchEngine $engine ) { + function ( + &$fields, + ContentHandler $handler, + WikiPage $page, + ParserOutput $output, + SearchEngine $engine + ) { $fields['testDataField'] = 'test content'; } ); @@ -461,6 +451,7 @@ class ContentHandlerTest extends MediaWikiTestCase { $this->assertArrayHasKey( 'language', $data ); $this->assertArrayHasKey( 'testDataField', $data ); $this->assertEquals( 'test content', $data['testDataField'] ); + $this->assertEquals( 'wikitext', $data['content_model'] ); } /** @@ -475,4 +466,13 @@ class ContentHandlerTest extends MediaWikiTestCase { $this->assertContains( 'one who smiths', $out->getRawText() ); } + /** + * @covers ContentHandler::getContentModels + */ + public function testGetContentModelsHook() { + $this->setTemporaryHook( 'GetContentModels', function ( &$models ) { + $models[] = 'Ferrari'; + } ); + $this->assertContains( 'Ferrari', ContentHandler::getContentModels() ); + } } diff --git a/tests/phpunit/includes/db/DatabaseMysqlBaseTest.php b/tests/phpunit/includes/db/DatabaseMysqlBaseTest.php index 81b75dea17..b95462abfe 100644 --- a/tests/phpunit/includes/db/DatabaseMysqlBaseTest.php +++ b/tests/phpunit/includes/db/DatabaseMysqlBaseTest.php @@ -25,6 +25,10 @@ * @copyright © 2013 Wikimedia Foundation Inc. */ +use Wikimedia\Rdbms\TransactionProfiler; +use Wikimedia\Rdbms\DatabaseDomain; +use Wikimedia\Rdbms\MySQLMasterPos; + /** * Fake class around abstract class so we can call concrete methods. */ @@ -116,7 +120,7 @@ class DatabaseMysqlBaseTest extends MediaWikiTestCase { /** * Feeds testAddIdentifierQuotes * - * Named per bug 20281 convention. + * Named per T22281 convention. */ function provideDiapers() { return [ diff --git a/tests/phpunit/includes/db/DatabaseSQLTest.php b/tests/phpunit/includes/db/DatabaseSQLTest.php index 656e661690..57754bc214 100644 --- a/tests/phpunit/includes/db/DatabaseSQLTest.php +++ b/tests/phpunit/includes/db/DatabaseSQLTest.php @@ -1,5 +1,7 @@ [ - 'dbname' => $wgDBname, - 'user' => $wgDBuser, - 'password' => $wgDBpassword, - 'type' => $wgDBtype, + 'dbname' => $wgDBname, + 'user' => $wgDBuser, + 'password' => $wgDBpassword, + 'type' => $wgDBtype, 'dbDirectory' => $wgSQLiteDataDir, - 'flags' => DBO_DEFAULT + 'flags' => DBO_DEFAULT ], 'hostsByName' => [ 'test-db1' => $wgDBserver, diff --git a/tests/phpunit/includes/deferred/DeferredUpdatesTest.php b/tests/phpunit/includes/deferred/DeferredUpdatesTest.php index 4227693a2e..d7ad1d1ed6 100644 --- a/tests/phpunit/includes/deferred/DeferredUpdatesTest.php +++ b/tests/phpunit/includes/deferred/DeferredUpdatesTest.php @@ -1,6 +1,40 @@ setMwGlobals( 'wgCommandLineMode', false ); + + $pre = DeferredUpdates::PRESEND; + $post = DeferredUpdates::POSTSEND; + $all = DeferredUpdates::ALL; + + $update = $this->getMockBuilder( 'DeferrableUpdate' ) + ->getMock(); + $update->expects( $this->never() ) + ->method( 'doUpdate' ); + + DeferredUpdates::addUpdate( $update, $pre ); + $this->assertCount( 1, DeferredUpdates::getPendingUpdates( $pre ) ); + $this->assertCount( 0, DeferredUpdates::getPendingUpdates( $post ) ); + $this->assertCount( 1, DeferredUpdates::getPendingUpdates( $all ) ); + $this->assertCount( 1, DeferredUpdates::getPendingUpdates() ); + DeferredUpdates::clearPendingUpdates(); + $this->assertCount( 0, DeferredUpdates::getPendingUpdates() ); + + DeferredUpdates::addUpdate( $update, $post ); + $this->assertCount( 0, DeferredUpdates::getPendingUpdates( $pre ) ); + $this->assertCount( 1, DeferredUpdates::getPendingUpdates( $post ) ); + $this->assertCount( 1, DeferredUpdates::getPendingUpdates( $all ) ); + $this->assertCount( 1, DeferredUpdates::getPendingUpdates() ); + DeferredUpdates::clearPendingUpdates(); + $this->assertCount( 0, DeferredUpdates::getPendingUpdates() ); + } + public function testDoUpdatesWeb() { $this->setMwGlobals( 'wgCommandLineMode', false ); diff --git a/tests/phpunit/includes/deferred/SearchUpdateTest.php b/tests/phpunit/includes/deferred/SearchUpdateTest.php index 602a1757ec..9e4dbea221 100644 --- a/tests/phpunit/includes/deferred/SearchUpdateTest.php +++ b/tests/phpunit/includes/deferred/SearchUpdateTest.php @@ -66,13 +66,13 @@ EOT $this->assertNotEquals( '', $this->updateText( $text ), - 'Bug 18609' + 'T20609' ); } /** * @covers SearchUpdate::updateText - * Test bug 32712 + * Test T34712 * Test if unicode quotes in article links make its search index empty */ public function testUnicodeLinkSearchIndexError() { diff --git a/tests/phpunit/includes/filebackend/FileBackendTest.php b/tests/phpunit/includes/filebackend/FileBackendTest.php index c3d31d1222..f77720653f 100644 --- a/tests/phpunit/includes/filebackend/FileBackendTest.php +++ b/tests/phpunit/includes/filebackend/FileBackendTest.php @@ -4,6 +4,44 @@ * @group FileRepo * @group FileBackend * @group medium + * + * @covers FileBackend + * + * @covers CopyFileOp + * @covers CreateFileOp + * @covers DeleteFileOp + * @covers DescribeFileOp + * @covers FSFile + * @covers FSFileBackend + * @covers FSFileBackendDirList + * @covers FSFileBackendFileList + * @covers FSFileBackendList + * @covers FSFileOpHandle + * @covers FileBackendDBRepoWrapper + * @covers FileBackendError + * @covers FileBackendGroup + * @covers FileBackendMultiWrite + * @covers FileBackendStore + * @covers FileBackendStoreOpHandle + * @covers FileBackendStoreShardDirIterator + * @covers FileBackendStoreShardFileIterator + * @covers FileBackendStoreShardListIterator + * @covers FileJournal + * @covers FileOp + * @covers FileOpBatch + * @covers HTTPFileStreamer + * @covers LockManagerGroup + * @covers MemoryFileBackend + * @covers MoveFileOp + * @covers MySqlLockManager + * @covers NullFileJournal + * @covers NullFileOp + * @covers StoreFileOp + * @covers TempFSFile + * + * @covers FSLockManager + * @covers LockManager + * @covers NullLockManager */ class FileBackendTest extends MediaWikiTestCase { @@ -89,7 +127,6 @@ class FileBackendTest extends MediaWikiTestCase { /** * @dataProvider provider_testIsStoragePath - * @covers FileBackend::isStoragePath */ public function testIsStoragePath( $path, $isStorePath ) { $this->assertEquals( $isStorePath, FileBackend::isStoragePath( $path ), @@ -114,7 +151,6 @@ class FileBackendTest extends MediaWikiTestCase { /** * @dataProvider provider_testSplitStoragePath - * @covers FileBackend::splitStoragePath */ public function testSplitStoragePath( $path, $res ) { $this->assertEquals( $res, FileBackend::splitStoragePath( $path ), @@ -139,7 +175,6 @@ class FileBackendTest extends MediaWikiTestCase { /** * @dataProvider provider_normalizeStoragePath - * @covers FileBackend::normalizeStoragePath */ public function testNormalizeStoragePath( $path, $res ) { $this->assertEquals( $res, FileBackend::normalizeStoragePath( $path ), @@ -169,7 +204,6 @@ class FileBackendTest extends MediaWikiTestCase { /** * @dataProvider provider_testParentStoragePath - * @covers FileBackend::parentStoragePath */ public function testParentStoragePath( $path, $res ) { $this->assertEquals( $res, FileBackend::parentStoragePath( $path ), @@ -191,7 +225,6 @@ class FileBackendTest extends MediaWikiTestCase { /** * @dataProvider provider_testExtensionFromPath - * @covers FileBackend::extensionFromPath */ public function testExtensionFromPath( $path, $res ) { $this->assertEquals( $res, FileBackend::extensionFromPath( $path ), @@ -224,9 +257,6 @@ class FileBackendTest extends MediaWikiTestCase { $this->tearDownFiles(); } - /** - * @covers FileBackend::doOperation - */ private function doTestStore( $op ) { $backendName = $this->backendClass(); @@ -286,7 +316,6 @@ class FileBackendTest extends MediaWikiTestCase { /** * @dataProvider provider_testCopy - * @covers FileBackend::doOperation */ public function testCopy( $op ) { $this->backend = $this->singleBackend; @@ -407,7 +436,6 @@ class FileBackendTest extends MediaWikiTestCase { /** * @dataProvider provider_testMove - * @covers FileBackend::doOperation */ public function testMove( $op ) { $this->backend = $this->singleBackend; @@ -529,7 +557,6 @@ class FileBackendTest extends MediaWikiTestCase { /** * @dataProvider provider_testDelete - * @covers FileBackend::doOperation */ public function testDelete( $op, $withSource, $okStatus ) { $this->backend = $this->singleBackend; @@ -621,7 +648,6 @@ class FileBackendTest extends MediaWikiTestCase { /** * @dataProvider provider_testDescribe - * @covers FileBackend::doOperation */ public function testDescribe( $op, $withSource, $okStatus ) { $this->backend = $this->singleBackend; @@ -722,7 +748,6 @@ class FileBackendTest extends MediaWikiTestCase { /** * @dataProvider provider_testCreate - * @covers FileBackend::doOperation */ public function testCreate( $op, $alreadyExists, $okStatus, $newSize ) { $this->backend = $this->singleBackend; @@ -843,9 +868,6 @@ class FileBackendTest extends MediaWikiTestCase { return $cases; } - /** - * @covers FileBackend::doQuickOperations - */ public function testDoQuickOperations() { $this->backend = $this->singleBackend; $this->doTestDoQuickOperations(); @@ -1056,7 +1078,6 @@ class FileBackendTest extends MediaWikiTestCase { /** * @dataProvider provider_testGetFileStat - * @covers FileBackend::getFileStat */ public function testGetFileStat( $path, $content, $alreadyExists ) { $this->backend = $this->singleBackend; @@ -1132,7 +1153,6 @@ class FileBackendTest extends MediaWikiTestCase { /** * @dataProvider provider_testGetFileStat - * @covers FileBackend::streamFile */ public function testStreamFile( $path, $content, $alreadyExists ) { $this->backend = $this->singleBackend; @@ -1231,8 +1251,6 @@ class FileBackendTest extends MediaWikiTestCase { /** * @dataProvider provider_testGetFileContents - * @covers FileBackend::getFileContents - * @covers FileBackend::getFileContentsMulti */ public function testGetFileContents( $source, $content ) { $this->backend = $this->singleBackend; @@ -1304,7 +1322,6 @@ class FileBackendTest extends MediaWikiTestCase { /** * @dataProvider provider_testGetLocalCopy - * @covers FileBackend::getLocalCopy */ public function testGetLocalCopy( $source, $content ) { $this->backend = $this->singleBackend; @@ -1390,7 +1407,6 @@ class FileBackendTest extends MediaWikiTestCase { /** * @dataProvider provider_testGetLocalReference - * @covers FileBackend::getLocalReference */ public function testGetLocalReference( $source, $content ) { $this->backend = $this->singleBackend; @@ -1467,10 +1483,6 @@ class FileBackendTest extends MediaWikiTestCase { return $cases; } - /** - * @covers FileBackend::getLocalCopy - * @covers FileBackend::getLocalReference - */ public function testGetLocalCopyAndReference404() { $this->backend = $this->singleBackend; $this->tearDownFiles(); @@ -1499,7 +1511,6 @@ class FileBackendTest extends MediaWikiTestCase { /** * @dataProvider provider_testGetFileHttpUrl - * @covers FileBackend::getFileHttpUrl */ public function testGetFileHttpUrl( $source, $content ) { $this->backend = $this->singleBackend; @@ -1544,8 +1555,6 @@ class FileBackendTest extends MediaWikiTestCase { /** * @dataProvider provider_testPrepareAndClean - * @covers FileBackend::prepare - * @covers FileBackend::clean */ public function testPrepareAndClean( $path, $isOK ) { $this->backend = $this->singleBackend; @@ -1626,9 +1635,6 @@ class FileBackendTest extends MediaWikiTestCase { $this->tearDownFiles(); } - /** - * @covers FileBackend::clean - */ private function doTestRecursiveClean() { $backendName = $this->backendClass(); @@ -1673,9 +1679,6 @@ class FileBackendTest extends MediaWikiTestCase { } } - /** - * @covers FileBackend::doOperations - */ public function testDoOperations() { $this->backend = $this->singleBackend; $this->tearDownFiles(); @@ -1763,9 +1766,6 @@ class FileBackendTest extends MediaWikiTestCase { "Correct file SHA-1 of $fileC" ); } - /** - * @covers FileBackend::doOperations - */ public function testDoOperationsPipeline() { $this->backend = $this->singleBackend; $this->tearDownFiles(); @@ -1862,9 +1862,6 @@ class FileBackendTest extends MediaWikiTestCase { "Correct file SHA-1 of $fileC" ); } - /** - * @covers FileBackend::doOperations - */ public function testDoOperationsFailing() { $this->backend = $this->singleBackend; $this->tearDownFiles(); @@ -1939,9 +1936,6 @@ class FileBackendTest extends MediaWikiTestCase { "Correct file SHA-1 of $fileA" ); } - /** - * @covers FileBackend::getFileList - */ public function testGetFileList() { $this->backend = $this->singleBackend; $this->tearDownFiles(); @@ -2117,10 +2111,6 @@ class FileBackendTest extends MediaWikiTestCase { } } - /** - * @covers FileBackend::getTopDirectoryList - * @covers FileBackend::getDirectoryList - */ public function testGetDirectoryList() { $this->backend = $this->singleBackend; $this->tearDownFiles(); @@ -2334,10 +2324,6 @@ class FileBackendTest extends MediaWikiTestCase { $this->assertEquals( [], $items, "Directory listing is empty." ); } - /** - * @covers FileBackend::lockFiles - * @covers FileBackend::unlockFiles - */ public function testLockCalls() { $this->backend = $this->singleBackend; $this->doTestLockCalls(); diff --git a/tests/phpunit/includes/filebackend/SwiftFileBackendTest.php b/tests/phpunit/includes/filebackend/SwiftFileBackendTest.php index 95ffb7057b..6acc94388a 100644 --- a/tests/phpunit/includes/filebackend/SwiftFileBackendTest.php +++ b/tests/phpunit/includes/filebackend/SwiftFileBackendTest.php @@ -4,6 +4,11 @@ * @group FileRepo * @group FileBackend * @group medium + * + * @covers SwiftFileBackend + * @covers SwiftFileBackendDirList + * @covers SwiftFileBackendFileList + * @covers SwiftFileBackendList */ class SwiftFileBackendTest extends MediaWikiTestCase { /** @var TestingAccessWrapper Proxy to SwiftFileBackend */ @@ -28,8 +33,6 @@ class SwiftFileBackendTest extends MediaWikiTestCase { /** * @dataProvider provider_testSanitizeHdrs - * @covers SwiftFileBackend::sanitizeHdrs - * @covers SwiftFileBackend::getCustomHeaders */ public function testSanitizeHdrs( $raw, $sanitized ) { $hdrs = $this->backend->sanitizeHdrs( [ 'headers' => $raw ] ); @@ -92,7 +95,6 @@ class SwiftFileBackendTest extends MediaWikiTestCase { /** * @dataProvider provider_testGetMetadataHeaders - * @covers SwiftFileBackend::getMetadataHeaders */ public function testGetMetadataHeaders( $raw, $sanitized ) { $hdrs = $this->backend->getMetadataHeaders( $raw ); @@ -120,7 +122,6 @@ class SwiftFileBackendTest extends MediaWikiTestCase { /** * @dataProvider provider_testGetMetadata - * @covers SwiftFileBackend::getMetadata */ public function testGetMetadata( $raw, $sanitized ) { $hdrs = $this->backend->getMetadata( $raw ); diff --git a/tests/phpunit/includes/http/HttpTest.php b/tests/phpunit/includes/http/HttpTest.php index 7e98d1c069..036baa8c27 100644 --- a/tests/phpunit/includes/http/HttpTest.php +++ b/tests/phpunit/includes/http/HttpTest.php @@ -50,7 +50,7 @@ class HttpTest extends MediaWikiTestCase { /** * Test Http::isValidURI() - * @bug 27854 : Http::isValidURI is too lax + * T29854 : Http::isValidURI is too lax * @dataProvider provideURI * @covers Http::isValidURI */ @@ -145,7 +145,7 @@ class HttpTest extends MediaWikiTestCase { * * These tests are for code that makes use of an artifact of how CURL * handles header reporting on redirect pages, and will need to be - * rewritten when bug 29232 is taken care of (high-level handling of + * rewritten when T31232 is taken care of (high-level handling of * HTTP redirects). */ public function testRelativeRedirections() { @@ -483,7 +483,7 @@ class HttpTest extends MediaWikiTestCase { * Added this test based on an issue experienced with HHVM 3.3.0-dev * where it did not define a cURL constant. * - * @bug 70570 + * T72570 * @dataProvider provideCurlConstants */ public function testCurlConstants( $value ) { diff --git a/tests/phpunit/includes/libs/CSSMinTest.php b/tests/phpunit/includes/libs/CSSMinTest.php index 366714b193..2e5c0bb429 100644 --- a/tests/phpunit/includes/libs/CSSMinTest.php +++ b/tests/phpunit/includes/libs/CSSMinTest.php @@ -54,7 +54,7 @@ class CSSMinTest extends MediaWikiTestCase { [ "foo, bar {\n\tprop: value; /* comment */\n}", "foo,bar{prop:value; }" ], // Keep track of things that aren't as minified as much as they - // could be (bug 35493) + // could be (T37493) [ 'foo { prop: value ;}', 'foo{prop:value }' ], [ 'foo { prop : value; }', 'foo{prop :value}' ], [ 'foo { prop: value ; }', 'foo{prop:value }' ], @@ -105,7 +105,7 @@ class CSSMinTest extends MediaWikiTestCase { 'foo { prop: url(http://example.org/bar.png); }', ], [ - 'With trailing slash on remote (bug 27052)', + 'With trailing slash on remote (T29052)', [ 'foo { prop: url(../bar.png); }', false, 'http://example.org/quux/', false ], 'foo { prop: url(http://example.org/bar.png); }', ], @@ -370,7 +370,7 @@ class CSSMinTest extends MediaWikiTestCase { '{ background: /*asd*/ url(http://localhost/w/something.png); background: /*jkl*/ url(http://localhost/w/something.png); }', ], [ - 'Sanity check for offending line from jquery.ui.theme.css (bug 60077)', + 'Sanity check for offending line from jquery.ui.theme.css (T62077)', '.ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default { border: 1px solid #d3d3d3/*{borderColorDefault}*/; background: #e6e6e6/*{bgColorDefault}*/ url(images/ui-bg_glass_75_e6e6e6_1x400.png)/*{bgImgUrlDefault}*/ 50%/*{bgDefaultXPos}*/ 50%/*{bgDefaultYPos}*/ repeat-x/*{bgDefaultRepeat}*/; font-weight: normal/*{fwDefault}*/; color: #555555/*{fcDefault}*/; }', '.ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default { border: 1px solid #d3d3d3/*{borderColorDefault}*/; background: #e6e6e6/*{bgColorDefault}*/ url(http://localhost/w/images/ui-bg_glass_75_e6e6e6_1x400.png)/*{bgImgUrlDefault}*/ 50%/*{bgDefaultXPos}*/ 50%/*{bgDefaultYPos}*/ repeat-x/*{bgDefaultRepeat}*/; font-weight: normal/*{fwDefault}*/; color: #555555/*{fcDefault}*/; }', ], @@ -418,7 +418,7 @@ class CSSMinTest extends MediaWikiTestCase { } /** - * Seperated because they are currently broken (bug 35492) + * Seperated because they are currently broken (T37492) * * @group Broken * @dataProvider provideStringCases diff --git a/tests/phpunit/includes/libs/JavaScriptMinifierTest.php b/tests/phpunit/includes/libs/JavaScriptMinifierTest.php index 3787962aff..ca12f6c777 100644 --- a/tests/phpunit/includes/libs/JavaScriptMinifierTest.php +++ b/tests/phpunit/includes/libs/JavaScriptMinifierTest.php @@ -10,7 +10,7 @@ class JavaScriptMinifierTest extends PHPUnit_Framework_TestCase { [ "/* Foo *\n*bar\n*/", "" ], /** - * Slashes used inside block comments (bug 26931). + * Slashes used inside block comments (T28931). * At some point there was a bug that caused this comment to be ended at '* /', * causing /M... to be left as the beginning of a regex. */ @@ -60,7 +60,7 @@ class JavaScriptMinifierTest extends PHPUnit_Framework_TestCase { [ "5.3.\nx;", "5.3.x;" ], // Semicolon insertion between an expression having an inline - // comment after it, and a statement on the next line (bug 27046). + // comment after it, and a statement on the next line (T29046). [ "var a = this //foo bar \n for ( b = 0; c < d; b++ ) {}", "var a=this\nfor(b=0;cmimeAnalyzer->getMediaType( $oggFile, 'application/ogg' ); $this->assertEquals( $actualType, MEDIATYPE_AUDIO ); } + + /** + * Test to make sure that Opus audio files don't trigger + * MEDIATYPE_MULTIMEDIA (bug T151352) + */ + function testOpusRecognize() { + $oggFile = __DIR__ . '/../../../data/media/say-test.opus'; + $actualType = $this->mimeAnalyzer->getMediaType( $oggFile, 'application/ogg' ); + $this->assertEquals( $actualType, MEDIATYPE_AUDIO ); + } } diff --git a/tests/phpunit/includes/libs/objectcache/WANObjectCacheTest.php b/tests/phpunit/includes/libs/objectcache/WANObjectCacheTest.php index aa46c966ad..d7ed4bd9ce 100644 --- a/tests/phpunit/includes/libs/objectcache/WANObjectCacheTest.php +++ b/tests/phpunit/includes/libs/objectcache/WANObjectCacheTest.php @@ -872,6 +872,62 @@ class WANObjectCacheTest extends PHPUnit_Framework_TestCase { $this->assertGreaterThan( -5.1, $curTTL, "Correct CTL" ); } + /** + * @covers WANObjectCache::reap() + * @covers WANObjectCache::reapCheckKey() + */ + public function testReap() { + $vKey1 = wfRandomString(); + $vKey2 = wfRandomString(); + $tKey1 = wfRandomString(); + $tKey2 = wfRandomString(); + $value = 'moo'; + + $knownPurge = time() - 60; + $goodTime = microtime( true ) - 5; + $badTime = microtime( true ) - 300; + + $this->internalCache->set( + WANObjectCache::VALUE_KEY_PREFIX . $vKey1, + [ + WANObjectCache::FLD_VERSION => WANObjectCache::VERSION, + WANObjectCache::FLD_VALUE => $value, + WANObjectCache::FLD_TTL => 3600, + WANObjectCache::FLD_TIME => $goodTime + ] + ); + $this->internalCache->set( + WANObjectCache::VALUE_KEY_PREFIX . $vKey2, + [ + WANObjectCache::FLD_VERSION => WANObjectCache::VERSION, + WANObjectCache::FLD_VALUE => $value, + WANObjectCache::FLD_TTL => 3600, + WANObjectCache::FLD_TIME => $badTime + ] + ); + $this->internalCache->set( + WANObjectCache::TIME_KEY_PREFIX . $tKey1, + WANObjectCache::PURGE_VAL_PREFIX . $goodTime + ); + $this->internalCache->set( + WANObjectCache::TIME_KEY_PREFIX . $tKey2, + WANObjectCache::PURGE_VAL_PREFIX . $badTime + ); + + $this->assertEquals( $value, $this->cache->get( $vKey1 ) ); + $this->assertEquals( $value, $this->cache->get( $vKey2 ) ); + $this->cache->reap( $vKey1, $knownPurge, $bad1 ); + $this->cache->reap( $vKey2, $knownPurge, $bad2 ); + + $this->assertFalse( $bad1 ); + $this->assertTrue( $bad2 ); + + $this->cache->reapCheckKey( $tKey1, $knownPurge, $tBad1 ); + $this->cache->reapCheckKey( $tKey2, $knownPurge, $tBad2 ); + $this->assertFalse( $tBad1 ); + $this->assertTrue( $tBad2 ); + } + /** * @covers WANObjectCache::set() */ @@ -926,6 +982,8 @@ class WANObjectCacheTest extends PHPUnit_Framework_TestCase { $wanCache->getMulti( [ 'x', 'y' ], $ctls, [ 'check2' ] ); $wanCache->getWithSetCallback( 'p', 30, $valFunc ); $wanCache->getCheckKeyTime( 'zzz' ); + $wanCache->reap( 'x', time() - 300 ); + $wanCache->reap( 'zzz', time() - 300 ); } /** diff --git a/tests/phpunit/includes/libs/rdbms/connectionmanager/ConnectionManagerTest.php b/tests/phpunit/includes/libs/rdbms/connectionmanager/ConnectionManagerTest.php index 1677851736..cd350e5ccf 100644 --- a/tests/phpunit/includes/libs/rdbms/connectionmanager/ConnectionManagerTest.php +++ b/tests/phpunit/includes/libs/rdbms/connectionmanager/ConnectionManagerTest.php @@ -3,7 +3,7 @@ namespace Wikimedia\Tests\Rdbms; use IDatabase; -use LoadBalancer; +use Wikimedia\Rdbms\LoadBalancer; use PHPUnit_Framework_MockObject_MockObject; use Wikimedia\Rdbms\ConnectionManager; diff --git a/tests/phpunit/includes/libs/rdbms/connectionmanager/SessionConsistentConnectionManagerTest.php b/tests/phpunit/includes/libs/rdbms/connectionmanager/SessionConsistentConnectionManagerTest.php index 0d54659b5e..3b26d6f90a 100644 --- a/tests/phpunit/includes/libs/rdbms/connectionmanager/SessionConsistentConnectionManagerTest.php +++ b/tests/phpunit/includes/libs/rdbms/connectionmanager/SessionConsistentConnectionManagerTest.php @@ -3,7 +3,7 @@ namespace Wikimedia\Tests\Rdbms; use IDatabase; -use LoadBalancer; +use Wikimedia\Rdbms\LoadBalancer; use PHPUnit_Framework_MockObject_MockObject; use Wikimedia\Rdbms\SessionConsistentConnectionManager; diff --git a/tests/phpunit/includes/libs/rdbms/database/DatabaseDomainTest.php b/tests/phpunit/includes/libs/rdbms/database/DatabaseDomainTest.php index d13fbf9341..3dc7e287f6 100644 --- a/tests/phpunit/includes/libs/rdbms/database/DatabaseDomainTest.php +++ b/tests/phpunit/includes/libs/rdbms/database/DatabaseDomainTest.php @@ -1,7 +1,9 @@ assertInternalType( 'string', $timestamp->getTimestamp() ); - $this->assertNotEmpty( $timestamp->getTimestamp() ); - $this->assertNotEquals( false, strtotime( $timestamp->getTimestamp( TS_MW ) ) ); - } - - /** - * @covers ConvertibleTimestamp::__toString - */ - public function testToString() { - $timestamp = new ConvertibleTimestamp( '1406833268' ); // Equivalent to 20140731190108 - $this->assertEquals( '1406833268', $timestamp->__toString() ); - } - - public static function provideValidTimestampDifferences() { - return [ - [ '1406833268', '1406833269', '00 00 00 01' ], - [ '1406833268', '1406833329', '00 00 01 01' ], - [ '1406833268', '1406836929', '00 01 01 01' ], - [ '1406833268', '1406923329', '01 01 01 01' ], - ]; - } - - /** - * @dataProvider provideValidTimestampDifferences - * @covers ConvertibleTimestamp::diff - */ - public function testDiff( $timestamp1, $timestamp2, $expected ) { - $timestamp1 = new ConvertibleTimestamp( $timestamp1 ); - $timestamp2 = new ConvertibleTimestamp( $timestamp2 ); - $diff = $timestamp1->diff( $timestamp2 ); - $this->assertEquals( $expected, $diff->format( '%D %H %I %S' ) ); - } - - /** - * Test parsing of valid timestamps and outputing to MW format. - * @dataProvider provideValidTimestamps - * @covers ConvertibleTimestamp::getTimestamp - */ - public function testValidParse( $format, $original, $expected ) { - $timestamp = new ConvertibleTimestamp( $original ); - $this->assertEquals( $expected, $timestamp->getTimestamp( TS_MW ) ); - } - - /** - * Test outputting valid timestamps to different formats. - * @dataProvider provideValidTimestamps - * @covers ConvertibleTimestamp::getTimestamp - */ - public function testValidOutput( $format, $expected, $original ) { - $timestamp = new ConvertibleTimestamp( $original ); - $this->assertEquals( $expected, (string)$timestamp->getTimestamp( $format ) ); - } - - /** - * Test an invalid timestamp. - * @expectedException TimestampException - * @covers ConvertibleTimestamp - */ - public function testInvalidParse() { - new ConvertibleTimestamp( "This is not a timestamp." ); - } - - /** - * @dataProvider provideValidTimestamps - * @covers ConvertibleTimestamp::convert - */ - public function testConvert( $format, $expected, $original ) { - $this->assertSame( $expected, ConvertibleTimestamp::convert( $format, $original ) ); - } - - /** - * Format an invalid timestamp. - * @covers ConvertibleTimestamp::convert - */ - public function testConvertInvalid() { - $this->assertSame( false, ConvertibleTimestamp::convert( 'Not a timestamp', 0 ) ); - } - - /** - * Test an out of range timestamp - * @dataProvider provideOutOfRangeTimestamps - * @expectedException TimestampException - * @covers ConvertibleTimestamp - */ - public function testOutOfRangeTimestamps( $format, $input ) { - $timestamp = new ConvertibleTimestamp( $input ); - $timestamp->getTimestamp( $format ); - } - - /** - * Test requesting an invalid output format. - * @expectedException TimestampException - * @covers ConvertibleTimestamp::getTimestamp - */ - public function testInvalidOutput() { - $timestamp = new ConvertibleTimestamp( '1343761268' ); - $timestamp->getTimestamp( 98 ); - } - - /** - * Returns a list of valid timestamps in the format: - * [ type, timestamp_of_type, timestamp_in_MW ] - */ - public static function provideValidTimestamps() { - return [ - // Various formats - [ TS_UNIX, '1343761268', '20120731190108' ], - [ TS_MW, '20120731190108', '20120731190108' ], - [ TS_DB, '2012-07-31 19:01:08', '20120731190108' ], - [ TS_ISO_8601, '2012-07-31T19:01:08Z', '20120731190108' ], - [ TS_ISO_8601_BASIC, '20120731T190108Z', '20120731190108' ], - [ TS_EXIF, '2012:07:31 19:01:08', '20120731190108' ], - [ TS_RFC2822, 'Tue, 31 Jul 2012 19:01:08 GMT', '20120731190108' ], - [ TS_ORACLE, '31-07-2012 19:01:08.000000', '20120731190108' ], - [ TS_POSTGRES, '2012-07-31 19:01:08 GMT', '20120731190108' ], - // Some extremes and weird values - [ TS_ISO_8601, '9999-12-31T23:59:59Z', '99991231235959' ], - [ TS_UNIX, '-62135596801', '00001231235959' ] - ]; - } - - /** - * Returns a list of out of range timestamps in the format: - * [ type, timestamp_of_type ] - */ - public static function provideOutOfRangeTimestamps() { - return [ - // Various formats - [ TS_MW, '-62167219201' ], // -0001-12-31T23:59:59Z - [ TS_MW, '253402300800' ], // 10000-01-01T00:00:00Z - ]; - } -} diff --git a/tests/phpunit/includes/libs/xmp/XMPTest.php b/tests/phpunit/includes/libs/xmp/XMPTest.php index ac52a39ffe..9291eb6b00 100644 --- a/tests/phpunit/includes/libs/xmp/XMPTest.php +++ b/tests/phpunit/includes/libs/xmp/XMPTest.php @@ -56,7 +56,7 @@ class XMPTest extends PHPUnit_Framework_TestCase { [ 'invalid-child-not-struct', 'Test child props not in struct or ignored' ], [ 'no-recognized-props', 'Test namespace and no recognized props' ], [ 'no-namespace', 'Test non-namespaced attributes are ignored' ], - [ 'bag-for-seq', "Allow bag's instead of seq's. (bug 27105)" ], + [ 'bag-for-seq', "Allow bag's instead of seq's. (T29105)" ], [ 'utf16BE', 'UTF-16BE encoding' ], [ 'utf16LE', 'UTF-16LE encoding' ], [ 'utf32BE', 'UTF-32BE encoding' ], diff --git a/tests/phpunit/includes/logging/LogFormatterTest.php b/tests/phpunit/includes/logging/LogFormatterTest.php index a21a3ffb71..c2b791e79c 100644 --- a/tests/phpunit/includes/logging/LogFormatterTest.php +++ b/tests/phpunit/includes/logging/LogFormatterTest.php @@ -309,7 +309,7 @@ class LogFormatterTest extends MediaWikiLangTestCase { /** * The testIrcMsgForAction* tests are supposed to cover the hacky - * LogFormatter::getIRCActionText / bug 34508 + * LogFormatter::getIRCActionText / T36508 * * Third parties bots listen to those messages. They are clever enough * to fetch the i18n messages from the wiki and then analyze the IRC feed diff --git a/tests/phpunit/includes/logging/RightsLogFormatterTest.php b/tests/phpunit/includes/logging/RightsLogFormatterTest.php index a81e7ec30b..f48507d8ab 100644 --- a/tests/phpunit/includes/logging/RightsLogFormatterTest.php +++ b/tests/phpunit/includes/logging/RightsLogFormatterTest.php @@ -10,6 +10,41 @@ class RightsLogFormatterTest extends LogFormatterTestCase { public static function provideRightsLogDatabaseRows() { return [ // Current format + [ + [ + 'type' => 'rights', + 'action' => 'rights', + 'comment' => 'rights comment', + 'user' => 0, + 'user_text' => 'Sysop', + 'namespace' => NS_USER, + 'title' => 'User', + 'params' => [ + '4::oldgroups' => [], + '5::newgroups' => [ 'sysop', 'bureaucrat' ], + 'oldmetadata' => [], + 'newmetadata' => [ + [ 'expiry' => null ], + [ 'expiry' => '20160101123456' ] + ], + ], + ], + [ + 'text' => 'Sysop changed group membership for User from (none) to ' + . 'bureaucrat (temporary, until 12:34, 1 January 2016) and administrator', + 'api' => [ + 'oldgroups' => [], + 'newgroups' => [ 'sysop', 'bureaucrat' ], + 'oldmetadata' => [], + 'newmetadata' => [ + [ 'group' => 'sysop', 'expiry' => 'infinity' ], + [ 'group' => 'bureaucrat', 'expiry' => '2016-01-01T12:34:56Z' ], + ], + ], + ], + ], + + // Previous format (oldgroups and newgroups as arrays, no metadata) [ [ 'type' => 'rights', @@ -30,11 +65,16 @@ class RightsLogFormatterTest extends LogFormatterTestCase { 'api' => [ 'oldgroups' => [], 'newgroups' => [ 'sysop', 'bureaucrat' ], + 'oldmetadata' => [], + 'newmetadata' => [ + [ 'group' => 'sysop', 'expiry' => 'infinity' ], + [ 'group' => 'bureaucrat', 'expiry' => 'infinity' ], + ], ], ], ], - // Legacy format + // Legacy format (oldgroups and newgroups as numeric-keyed strings) [ [ 'type' => 'rights', @@ -56,6 +96,11 @@ class RightsLogFormatterTest extends LogFormatterTestCase { 'api' => [ 'oldgroups' => [], 'newgroups' => [ 'sysop', 'bureaucrat' ], + 'oldmetadata' => [], + 'newmetadata' => [ + [ 'group' => 'sysop', 'expiry' => 'infinity' ], + [ 'group' => 'bureaucrat', 'expiry' => 'infinity' ], + ], ], ], ], @@ -116,6 +161,13 @@ class RightsLogFormatterTest extends LogFormatterTestCase { 'api' => [ 'oldgroups' => [ 'sysop' ], 'newgroups' => [ 'sysop', 'bureaucrat' ], + 'oldmetadata' => [ + [ 'group' => 'sysop', 'expiry' => 'infinity' ], + ], + 'newmetadata' => [ + [ 'group' => 'sysop', 'expiry' => 'infinity' ], + [ 'group' => 'bureaucrat', 'expiry' => 'infinity' ], + ], ], ], ], @@ -142,6 +194,13 @@ class RightsLogFormatterTest extends LogFormatterTestCase { 'api' => [ 'oldgroups' => [ 'sysop' ], 'newgroups' => [ 'sysop', 'bureaucrat' ], + 'oldmetadata' => [ + [ 'group' => 'sysop', 'expiry' => 'infinity' ], + ], + 'newmetadata' => [ + [ 'group' => 'sysop', 'expiry' => 'infinity' ], + [ 'group' => 'bureaucrat', 'expiry' => 'infinity' ], + ], ], ], ], diff --git a/tests/phpunit/includes/media/FormatMetadataTest.php b/tests/phpunit/includes/media/FormatMetadataTest.php index 3d0724f98e..e9fc84e77b 100644 --- a/tests/phpunit/includes/media/FormatMetadataTest.php +++ b/tests/phpunit/includes/media/FormatMetadataTest.php @@ -33,7 +33,7 @@ class FormatMetadataTest extends MediaWikiMediaTestCase { $this->assertNotNull( $dateIndex, 'Date entry exists in metadata' ); $this->assertEquals( '0000:01:00 00:02:27', $meta['visible'][$dateIndex]['value'], - 'File with invalid date metadata (bug 29471)' ); + 'File with invalid date metadata (T31471)' ); } /** diff --git a/tests/phpunit/includes/media/SVGMetadataExtractorTest.php b/tests/phpunit/includes/media/SVGMetadataExtractorTest.php index 3049e2f6ef..9bfd5f6196 100644 --- a/tests/phpunit/includes/media/SVGMetadataExtractorTest.php +++ b/tests/phpunit/includes/media/SVGMetadataExtractorTest.php @@ -75,7 +75,7 @@ class SVGMetadataExtractorTest extends MediaWikiTestCase { ], [ "$base/Toll_Texas_1.svg", - // This file triggered bug 31719, needs entity expansion in the xmlns checks + // This file triggered T33719, needs entity expansion in the xmlns checks [ 'width' => 385, 'height' => 385, diff --git a/tests/phpunit/includes/objectcache/RESTBagOStuffTest.php b/tests/phpunit/includes/objectcache/RESTBagOStuffTest.php index ebeb1092a6..f722fe13f8 100644 --- a/tests/phpunit/includes/objectcache/RESTBagOStuffTest.php +++ b/tests/phpunit/includes/objectcache/RESTBagOStuffTest.php @@ -27,7 +27,7 @@ class RESTBagOStuffTest extends MediaWikiTestCase { $this->client->expects( $this->once() )->method( 'run' )->with( [ 'method' => 'GET', 'url' => 'http://test/rest/42xyz42' - // list( $rcode, $rdesc, $rhdrs, $rbody, $rerr ) + // list( $rcode, $rdesc, $rhdrs, $rbody, $rerr ) ] )->willReturn( [ 200, 'OK', [], 's:8:"somedata";', 0 ] ); $result = $this->bag->get( '42xyz42' ); $this->assertEquals( 'somedata', $result ); @@ -69,7 +69,7 @@ class RESTBagOStuffTest extends MediaWikiTestCase { $this->client->expects( $this->once() )->method( 'run' )->with( [ 'method' => 'PUT', 'url' => 'http://test/rest/42xyz42', - 'body' => 's:8:"postdata";' + 'body' => 's:8:"postdata";' // list( $rcode, $rdesc, $rhdrs, $rbody, $rerr ) ] )->willReturn( [ 200, 'OK', [], 'Done', 0 ] ); $result = $this->bag->set( '42xyz42', 'postdata' ); diff --git a/tests/phpunit/includes/page/ArticleTablesTest.php b/tests/phpunit/includes/page/ArticleTablesTest.php index 3a3b514651..34b25251c1 100644 --- a/tests/phpunit/includes/page/ArticleTablesTest.php +++ b/tests/phpunit/includes/page/ArticleTablesTest.php @@ -5,7 +5,7 @@ */ class ArticleTablesTest extends MediaWikiLangTestCase { /** - * Make sure that bug 14404 doesn't strike again. We don't want + * Make sure that T16404 doesn't strike again. We don't want * templatelinks based on the user language when {{int:}} is used, only the * content language. * @@ -13,7 +13,7 @@ class ArticleTablesTest extends MediaWikiLangTestCase { * @covers Title::getLinksFrom */ public function testTemplatelinksUsesContentLanguage() { - $title = Title::newFromText( 'Bug 14404' ); + $title = Title::newFromText( 'T16404' ); $page = WikiPage::factory( $title ); $user = new User(); $user->mRights = [ 'createpage', 'edit', 'purge' ]; @@ -22,7 +22,7 @@ class ArticleTablesTest extends MediaWikiLangTestCase { $page->doEditContent( new WikitextContent( '{{:{{int:history}}}}' ), - 'Test code for bug 14404', + 'Test code for T16404', 0, false, $user @@ -35,7 +35,7 @@ class ArticleTablesTest extends MediaWikiLangTestCase { // We need an edit, a purge is not enough to regenerate the tables $page->doEditContent( new WikitextContent( '{{:{{int:history}}}}' ), - 'Test code for bug 14404', + 'Test code for T16404', EDIT_UPDATE, false, $user diff --git a/tests/phpunit/includes/page/WikiPageTest.php b/tests/phpunit/includes/page/WikiPageTest.php index 6885ca36c8..6b911bf3a6 100644 --- a/tests/phpunit/includes/page/WikiPageTest.php +++ b/tests/phpunit/includes/page/WikiPageTest.php @@ -155,60 +155,6 @@ class WikiPageTest extends MediaWikiLangTestCase { $this->assertEquals( 2, $n, 'pagelinks should contain two links from the page' ); } - /** - * @covers WikiPage::doEdit - * @deprecated since 1.21. Should be removed when WikiPage::doEdit() gets removed - */ - public function testDoEdit() { - $this->hideDeprecated( "WikiPage::doEdit" ); - $this->hideDeprecated( "Revision::getText" ); - - // NOTE: assume help namespace will default to wikitext - $title = Title::newFromText( "Help:WikiPageTest_testDoEdit" ); - - $page = $this->newPage( $title ); - - $text = "[[Lorem ipsum]] dolor sit amet, consetetur sadipscing elitr, sed diam " - . " nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat."; - - $page->doEdit( $text, "[[testing]] 1" ); - - $this->assertTrue( $title->getArticleID() > 0, "Title object should have new page id" ); - $this->assertTrue( $page->getId() > 0, "WikiPage should have new page id" ); - $this->assertTrue( $title->exists(), "Title object should indicate that the page now exists" ); - $this->assertTrue( $page->exists(), "WikiPage object should indicate that the page now exists" ); - - $id = $page->getId(); - - # ------------------------ - $dbr = wfGetDB( DB_SLAVE ); - $res = $dbr->select( 'pagelinks', '*', [ 'pl_from' => $id ] ); - $n = $res->numRows(); - $res->free(); - - $this->assertEquals( 1, $n, 'pagelinks should contain one link from the page' ); - - # ------------------------ - $text = "At vero eos et accusam et justo duo [[dolores]] et ea rebum. " - . "Stet clita kasd [[gubergren]], no sea takimata sanctus est."; - - $page->doEdit( $text, "testing 2" ); - - # ------------------------ - $page = new WikiPage( $title ); - - $retrieved = $page->getContent()->getNativeData(); - $this->assertEquals( $text, $retrieved, 'retrieved text doesn\'t equal original' ); - - # ------------------------ - $dbr = wfGetDB( DB_SLAVE ); - $res = $dbr->select( 'pagelinks', '*', [ 'pl_from' => $id ] ); - $n = $res->numRows(); - $res->free(); - - $this->assertEquals( 2, $n, 'pagelinks should contain two links from the page' ); - } - /** * @covers WikiPage::doDeleteArticle */ @@ -806,6 +752,47 @@ more stuff } */ + /** + * @covers WikiPage::getOldestRevision + */ + public function testGetOldestRevision() { + $page = $this->newPage( "WikiPageTest_testGetOldestRevision" ); + $page->doEditContent( + new WikitextContent( 'one' ), + "first edit", + EDIT_NEW + ); + $rev1 = $page->getRevision(); + + $page = new WikiPage( $page->getTitle() ); + $page->doEditContent( + new WikitextContent( 'two' ), + "second edit", + EDIT_UPDATE + ); + + $page = new WikiPage( $page->getTitle() ); + $page->doEditContent( + new WikitextContent( 'three' ), + "third edit", + EDIT_UPDATE + ); + + // sanity check + $this->assertNotEquals( + $rev1->getId(), + $page->getRevision()->getId(), + '$page->getRevision()->getId()' + ); + + // actual test + $this->assertEquals( + $rev1->getId(), + $page->getOldestRevision()->getId(), + '$page->getOldestRevision()->getId()' + ); + } + /** * @todo FIXME: this is a better rollback test than the one below, but it * keeps failing in jenkins for some reason. @@ -850,6 +837,7 @@ more stuff $this->assertEquals( 'Admin', $rev1->getUserText() ); # now, try the actual rollback + $admin->addToDatabase(); $admin->addGroup( "sysop" ); # XXX: make the test user a sysop... $token = $admin->getEditToken( [ $page->getTitle()->getPrefixedText(), $user2->getName() ], @@ -882,6 +870,7 @@ more stuff public function testDoRollback() { $admin = new User(); $admin->setName( "Admin" ); + $admin->addToDatabase(); $text = "one"; $page = $this->newPage( "WikiPageTest_testDoRollback" ); @@ -908,10 +897,7 @@ more stuff # now, try the rollback $admin->addGroup( "sysop" ); # XXX: make the test user a sysop... - $token = $admin->getEditToken( - [ $page->getTitle()->getPrefixedText(), $user1->getName() ], - null - ); + $token = $admin->getEditToken( 'rollback' ); $errors = $page->doRollback( $user1->getName(), "testing revert", @@ -938,6 +924,7 @@ more stuff public function testDoRollbackFailureSameContent() { $admin = new User(); $admin->setName( "Admin" ); + $admin->addToDatabase(); $admin->addGroup( "sysop" ); # XXX: make the test user a sysop... $text = "one"; @@ -953,6 +940,7 @@ more stuff $user1 = new User(); $user1->setName( "127.0.1.11" ); + $user1->addToDatabase(); $user1->addGroup( "sysop" ); # XXX: make the test user a sysop... $text .= "\n\ntwo"; $page = new WikiPage( $page->getTitle() ); @@ -966,10 +954,7 @@ more stuff # now, do a the rollback from the same user was doing the edit before $resultDetails = []; - $token = $user1->getEditToken( - [ $page->getTitle()->getPrefixedText(), $user1->getName() ], - null - ); + $token = $user1->getEditToken( 'rollback' ); $errors = $page->doRollback( $user1->getName(), "testing revert same user", @@ -983,10 +968,7 @@ more stuff # now, try the rollback $resultDetails = []; - $token = $admin->getEditToken( - [ $page->getTitle()->getPrefixedText(), $user1->getName() ], - null - ); + $token = $admin->getEditToken( 'rollback' ); $errors = $page->doRollback( $user1->getName(), "testing revert", diff --git a/tests/phpunit/includes/pager/ReverseChronologicalPagerTest.php b/tests/phpunit/includes/pager/ReverseChronologicalPagerTest.php index fc5d660274..eb163d3834 100644 --- a/tests/phpunit/includes/pager/ReverseChronologicalPagerTest.php +++ b/tests/phpunit/includes/pager/ReverseChronologicalPagerTest.php @@ -66,4 +66,3 @@ class ReverseChronologicalPagerTest extends MediaWikiLangTestCase { } } } - diff --git a/tests/phpunit/includes/parser/ParserMethodsTest.php b/tests/phpunit/includes/parser/ParserMethodsTest.php index 5e00384ae7..ae58d1ce06 100644 --- a/tests/phpunit/includes/parser/ParserMethodsTest.php +++ b/tests/phpunit/includes/parser/ParserMethodsTest.php @@ -2,8 +2,8 @@ /** * @group Database + * @covers Parser */ - class ParserMethodsTest extends MediaWikiLangTestCase { public static function providePreSaveTransform() { @@ -19,7 +19,6 @@ class ParserMethodsTest extends MediaWikiLangTestCase { /** * @dataProvider providePreSaveTransform - * @covers Parser::preSaveTransform */ public function testPreSaveTransform( $text, $expected ) { global $wgParser; @@ -63,7 +62,6 @@ class ParserMethodsTest extends MediaWikiLangTestCase { /** * @dataProvider provideStripOuterParagraph - * @covers Parser::stripOuterParagraph */ public function testStripOuterParagraph( $text, $expected ) { $this->assertEquals( $expected, Parser::stripOuterParagraph( $text ) ); @@ -73,7 +71,6 @@ class ParserMethodsTest extends MediaWikiLangTestCase { * @expectedException MWException * @expectedExceptionMessage Parser state cleared while parsing. * Did you call Parser::parse recursively? - * @covers Parser::lock */ public function testRecursiveParse() { global $wgParser; @@ -90,9 +87,6 @@ class ParserMethodsTest extends MediaWikiLangTestCase { return 'bar'; } - /** - * @covers Parser::callParserFunction - */ public function testCallParserFunction() { global $wgParser; @@ -111,7 +105,7 @@ class ParserMethodsTest extends MediaWikiLangTestCase { } /** - * @covers Parser::parse + * @covers Parser * @covers ParserOutput::getSections */ public function testGetSections() { @@ -155,8 +149,6 @@ class ParserMethodsTest extends MediaWikiLangTestCase { /** * @dataProvider provideNormalizeLinkUrl - * @covers Parser::normalizeLinkUrl - * @covers Parser::normalizeUrlComponent */ public function testNormalizeLinkUrl( $explanation, $url, $expected ) { $this->assertEquals( $expected, Parser::normalizeLinkUrl( $url ), $explanation ); diff --git a/tests/phpunit/includes/parser/ParserPreloadTest.php b/tests/phpunit/includes/parser/ParserPreloadTest.php index d12fee368f..77073955bd 100644 --- a/tests/phpunit/includes/parser/ParserPreloadTest.php +++ b/tests/phpunit/includes/parser/ParserPreloadTest.php @@ -2,6 +2,30 @@ /** * Basic tests for Parser::getPreloadText * @author Antoine Musso + * + * @covers Parser + * @covers StripState + * + * @covers Preprocessor_DOM + * @covers PPDStack + * @covers PPDStackElement + * @covers PPDPart + * @covers PPFrame_DOM + * @covers PPTemplateFrame_DOM + * @covers PPCustomFrame_DOM + * @covers PPNode_DOM + * + * @covers Preprocessor_Hash + * @covers PPDStack_Hash + * @covers PPDStackElement_Hash + * @covers PPDPart_Hash + * @covers PPFrame_Hash + * @covers PPTemplateFrame_Hash + * @covers PPCustomFrame_Hash + * @covers PPNode_Hash_Tree + * @covers PPNode_Hash_Text + * @covers PPNode_Hash_Array + * @covers PPNode_Hash_Attr */ class ParserPreloadTest extends MediaWikiTestCase { /** @@ -37,32 +61,23 @@ class ParserPreloadTest extends MediaWikiTestCase { unset( $this->title ); } - /** - * @covers Parser::getPreloadText - */ public function testPreloadSimpleText() { $this->assertPreloaded( 'simple', 'simple' ); } - /** - * @covers Parser::getPreloadText - */ public function testPreloadedPreIsUnstripped() { $this->assertPreloaded( '
        monospaced
        ', '
        monospaced
        ', - '
         in preloaded text must be unstripped (bug 27467)'
        +			'
         in preloaded text must be unstripped (T29467)'
         		);
         	}
         
        -	/**
        -	 * @covers Parser::getPreloadText
        -	 */
         	public function testPreloadedNowikiIsUnstripped() {
         		$this->assertPreloaded(
         			'[[Dummy title]]',
         			'[[Dummy title]]',
        -			' in preloaded text must be unstripped (bug 27467)'
        +			' in preloaded text must be unstripped (T29467)'
         		);
         	}
         
        diff --git a/tests/phpunit/includes/parser/PreprocessorTest.php b/tests/phpunit/includes/parser/PreprocessorTest.php
        index c491e6b829..11a21976db 100644
        --- a/tests/phpunit/includes/parser/PreprocessorTest.php
        +++ b/tests/phpunit/includes/parser/PreprocessorTest.php
        @@ -214,7 +214,7 @@ class PreprocessorTest extends MediaWikiTestCase {
         			[ "Factorial" ], # https://en.wikipedia.org/w/index.php?title=Template:Factorial&oldid=98548758 GFDL + CC BY-SA by Polonium
         			[ "All_system_messages" ], # https://tl.wiktionary.org/w/index.php?title=Suleras:All_system_messages&oldid=2765 GPL text generated by MediaWiki
         			[ "Fundraising" ], # https://tl.wiktionary.org/w/index.php?title=MediaWiki:Sitenotice&oldid=5716 GFDL + CC BY-SA, copied there by Sky Harbor.
        -			[ "NestedTemplates" ], # bug 27936
        +			[ "NestedTemplates" ], # T29936
         		] );
         		// @codingStandardsIgnoreEnd
         	}
        diff --git a/tests/phpunit/includes/parser/TagHooksTest.php b/tests/phpunit/includes/parser/TagHooksTest.php
        index 2a4a4ecbd6..12936ee21d 100644
        --- a/tests/phpunit/includes/parser/TagHooksTest.php
        +++ b/tests/phpunit/includes/parser/TagHooksTest.php
        @@ -3,6 +3,30 @@
         /**
          * @group Database
          * @group Parser
        + *
        + * @covers Parser
        + * @covers StripState
        + *
        + * @covers Preprocessor_DOM
        + * @covers PPDStack
        + * @covers PPDStackElement
        + * @covers PPDPart
        + * @covers PPFrame_DOM
        + * @covers PPTemplateFrame_DOM
        + * @covers PPCustomFrame_DOM
        + * @covers PPNode_DOM
        + *
        + * @covers Preprocessor_Hash
        + * @covers PPDStack_Hash
        + * @covers PPDStackElement_Hash
        + * @covers PPDPart_Hash
        + * @covers PPFrame_Hash
        + * @covers PPTemplateFrame_Hash
        + * @covers PPCustomFrame_Hash
        + * @covers PPNode_Hash_Tree
        + * @covers PPNode_Hash_Text
        + * @covers PPNode_Hash_Array
        + * @covers PPNode_Hash_Attr
          */
         class TagHookTest extends MediaWikiTestCase {
         	public static function provideValidNames() {
        @@ -21,7 +45,6 @@ class TagHookTest extends MediaWikiTestCase {
         
         	/**
         	 * @dataProvider provideValidNames
        -	 * @covers Parser::setHook
         	 */
         	public function testTagHooks( $tag ) {
         		global $wgParserConf, $wgContLang;
        @@ -41,7 +64,6 @@ class TagHookTest extends MediaWikiTestCase {
         	/**
         	 * @dataProvider provideBadNames
         	 * @expectedException MWException
        -	 * @covers Parser::setHook
         	 */
         	public function testBadTagHooks( $tag ) {
         		global $wgParserConf, $wgContLang;
        @@ -58,7 +80,6 @@ class TagHookTest extends MediaWikiTestCase {
         
         	/**
         	 * @dataProvider provideValidNames
        -	 * @covers Parser::setFunctionTagHook
         	 */
         	public function testFunctionTagHooks( $tag ) {
         		global $wgParserConf, $wgContLang;
        @@ -78,7 +99,6 @@ class TagHookTest extends MediaWikiTestCase {
         	/**
         	 * @dataProvider provideBadNames
         	 * @expectedException MWException
        -	 * @covers Parser::setFunctionTagHook
         	 */
         	public function testBadFunctionTagHooks( $tag ) {
         		global $wgParserConf, $wgContLang;
        diff --git a/tests/phpunit/includes/password/UserPasswordPolicyTest.php b/tests/phpunit/includes/password/UserPasswordPolicyTest.php
        index d16200beb6..5ea7b1d2a9 100644
        --- a/tests/phpunit/includes/password/UserPasswordPolicyTest.php
        +++ b/tests/phpunit/includes/password/UserPasswordPolicyTest.php
        @@ -61,6 +61,7 @@ class UserPasswordPolicyTest extends MediaWikiTestCase {
         		$upp = $this->getUserPasswordPolicy();
         
         		$user = User::newFromName( 'TestUserPolicy' );
        +		$user->addToDatabase();
         		$user->addGroup( 'sysop' );
         
         		$this->assertArrayEquals(
        @@ -106,6 +107,7 @@ class UserPasswordPolicyTest extends MediaWikiTestCase {
         		$upp = $this->getUserPasswordPolicy();
         
         		$user = User::newFromName( $username );
        +		$user->addToDatabase();
         		foreach ( $groups as $group ) {
         			$user->addGroup( $group );
         		}
        diff --git a/tests/phpunit/includes/rcfeed/RCFeedIntegrationTest.php b/tests/phpunit/includes/rcfeed/RCFeedIntegrationTest.php
        new file mode 100644
        index 0000000000..e3ea13915d
        --- /dev/null
        +++ b/tests/phpunit/includes/rcfeed/RCFeedIntegrationTest.php
        @@ -0,0 +1,98 @@
        +setMwGlobals( [
        +			'wgCanonicalServer' => 'https://example.org',
        +			'wgServerName' => 'example.org',
        +			'wgScriptPath' => '/w',
        +			'wgDBname' => 'example',
        +			'wgDBprefix' => '',
        +			'wgRCFeeds' => [],
        +			'wgRCEngines' => [],
        +		] );
        +	}
        +
        +	/**
        +	 * @covers RecentChange::notifyRCFeeds
        +	 * @covers RecentChange::getEngine
        +	 * @covers RCFeed::factory
        +	 * @covers FormattedRCFeed::__construct
        +	 * @covers FormattedRCFeed::notify
        +	 * @covers JSONRCFeedFormatter::formatArray
        +	 * @covers MachineReadableRCFeedFormatter::getLine
        +	 */
        +	public function testNotify() {
        +		$feed = $this->getMockBuilder( 'RCFeedEngine' )
        +			->setConstructorArgs( [ [ 'formatter' => 'JSONRCFeedFormatter' ] ] )
        +			->setMethods( [ 'send' ] )
        +			->getMock();
        +
        +		$feed->method( 'send' )
        +			->willReturn( true );
        +
        +		$feed->expects( $this->once() )
        +			->method( 'send' )
        +			->with( $this->anything(), $this->callback( function ( $line ) {
        +				$this->assertJsonStringEqualsJsonString(
        +					json_encode( [
        +						'id' => null,
        +						'type' => 'log',
        +						'namespace' => 0,
        +						'title' => 'Example',
        +						'comment' => '',
        +						'timestamp' => 1301644800,
        +						'user' => 'UTSysop',
        +						'bot' => false,
        +						'log_id' => 0,
        +						'log_type' => 'move',
        +						'log_action' => 'move',
        +						'log_params' => [
        +							'color' => 'green',
        +							'nr' => 42,
        +							'pet' => 'cat',
        +						],
        +						'log_action_comment' => '',
        +						'server_url' => 'https://example.org',
        +						'server_name' => 'example.org',
        +						'server_script_path' => '/w',
        +						'wiki' => 'example',
        +					] ),
        +					$line
        +				);
        +				return true;
        +			} ) );
        +
        +		$this->setMwGlobals( [
        +			'wgRCFeeds' => [
        +				'myfeed' => [
        +					'uri' => 'test://localhost:1234',
        +					'formatter' => 'JSONRCFeedFormatter',
        +				],
        +			],
        +			'wgRCEngines' => [
        +				'test' => $feed,
        +			],
        +		] );
        +		$logpage = SpecialPage::getTitleFor( 'Log', 'move' );
        +		$user = $this->getTestSysop()->getUser();
        +		$rc = RecentChange::newLogEntry(
        +			'20110401080000',
        +			$logpage, // &$title
        +			$user, // &$user
        +			'', // $actionComment
        +			'127.0.0.1', // $ip
        +			'move', // $type
        +			'move', // $action
        +			Title::makeTitle( 0, 'Example' ), // $target
        +			'', // $logComment
        +			LogEntryBase::makeParamBlob( [
        +				'4::color' => 'green',
        +				'5:number:nr' => 42,
        +				'pet' => 'cat',
        +			] )
        +		);
        +		$rc->notifyRCFeeds();
        +	}
        +}
        diff --git a/tests/phpunit/includes/resourceloader/ResourceLoaderClientHtmlTest.php b/tests/phpunit/includes/resourceloader/ResourceLoaderClientHtmlTest.php
        index 528c3220e8..2db3c1692c 100644
        --- a/tests/phpunit/includes/resourceloader/ResourceLoaderClientHtmlTest.php
        +++ b/tests/phpunit/includes/resourceloader/ResourceLoaderClientHtmlTest.php
        @@ -246,8 +246,14 @@ class ResourceLoaderClientHtmlTest extends PHPUnit_Framework_TestCase {
         				'context' => [ 'debug' => true ],
         				'modules' => [ 'test.styles.pure', 'test.styles.mixed' ],
         				'only' => ResourceLoaderModule::TYPE_STYLES,
        -				'output' => '' . "\n"
        -					. '',
        +				'output' => '' . "\n"
        +					. '',
        +			],
        +			[
        +				'context' => [ 'debug' => false ],
        +				'modules' => [ 'test.styles.pure', 'test.styles.mixed' ],
        +				'only' => ResourceLoaderModule::TYPE_STYLES,
        +				'output' => '',
         			],
         			[
         				'context' => [],
        diff --git a/tests/phpunit/includes/resourceloader/ResourceLoaderTest.php b/tests/phpunit/includes/resourceloader/ResourceLoaderTest.php
        index cde1e5abb3..e0a82d06af 100644
        --- a/tests/phpunit/includes/resourceloader/ResourceLoaderTest.php
        +++ b/tests/phpunit/includes/resourceloader/ResourceLoaderTest.php
        @@ -18,6 +18,7 @@ class ResourceLoaderTest extends ResourceLoaderTestCase {
         			// to avoid notices during testMakeModuleResponse for missing
         			// wgResourceLoaderLESSVars keys in extension hooks.
         			'wgHooks' => [],
        +			'wgShowExceptionDetails' => true,
         		] );
         	}
         
        diff --git a/tests/phpunit/includes/search/SearchEnginePrefixTest.php b/tests/phpunit/includes/search/SearchEnginePrefixTest.php
        index a88264bb78..68338938c3 100644
        --- a/tests/phpunit/includes/search/SearchEnginePrefixTest.php
        +++ b/tests/phpunit/includes/search/SearchEnginePrefixTest.php
        @@ -230,7 +230,7 @@ class SearchEnginePrefixTest extends MediaWikiLangTestCase {
         				],
         			] ],
         			[ [
        -				'Exact match not on top (bug 70958)',
        +				'Exact match not on top (T72958)',
         				'provision' => [
         					'Barcelona',
         					'Bar',
        @@ -244,7 +244,7 @@ class SearchEnginePrefixTest extends MediaWikiLangTestCase {
         				],
         			] ],
         			[ [
        -				'Exact match missing (bug 70958)',
        +				'Exact match missing (T72958)',
         				'provision' => [
         					'Barcelona',
         					'Barbara',
        diff --git a/tests/phpunit/includes/search/SearchIndexFieldTest.php b/tests/phpunit/includes/search/SearchIndexFieldTest.php
        index ec046a767f..a5a1b7acc0 100644
        --- a/tests/phpunit/includes/search/SearchIndexFieldTest.php
        +++ b/tests/phpunit/includes/search/SearchIndexFieldTest.php
        @@ -10,7 +10,7 @@ class SearchIndexFieldTest extends MediaWikiTestCase {
         		return [
         			[ 0, 'test', 0, 'test', true ],
         			[ SearchIndexField::INDEX_TYPE_NESTED, 'test',
        -			  SearchIndexField::INDEX_TYPE_NESTED, 'test', false ],
        +				SearchIndexField::INDEX_TYPE_NESTED, 'test', false ],
         			[ 0, 'test', 0, 'test2', true ],
         			[ 0, 'test', 1, 'test', false ],
         		];
        @@ -18,14 +18,23 @@ class SearchIndexFieldTest extends MediaWikiTestCase {
         
         	/**
         	 * @dataProvider getMergeCases
        +	 * @param $t1
        +	 * @param $n1
        +	 * @param $t2
        +	 * @param $n2
        +	 * @param $result
         	 */
         	public function testMerge( $t1, $n1, $t2, $n2, $result ) {
        -		$field1 = $this->getMockBuilder( 'SearchIndexFieldDefinition' )
        -			->setMethods( [ 'getMapping' ] )
        -			->setConstructorArgs( [ $n1, $t1 ] )->getMock();
        -		$field2 = $this->getMockBuilder( 'SearchIndexFieldDefinition' )
        -			->setMethods( [ 'getMapping' ] )
        -			->setConstructorArgs( [ $n2, $t2 ] )->getMock();
        +		$field1 =
        +			$this->getMockBuilder( SearchIndexFieldDefinition::class )
        +				->setMethods( [ 'getMapping' ] )
        +				->setConstructorArgs( [ $n1, $t1 ] )
        +				->getMock();
        +		$field2 =
        +			$this->getMockBuilder( SearchIndexFieldDefinition::class )
        +				->setMethods( [ 'getMapping' ] )
        +				->setConstructorArgs( [ $n2, $t2 ] )
        +				->getMock();
         
         		if ( $result ) {
         			$this->assertNotFalse( $field1->merge( $field2 ) );
        @@ -35,5 +44,14 @@ class SearchIndexFieldTest extends MediaWikiTestCase {
         
         		$field1->setFlag( 0xFF );
         		$this->assertFalse( $field1->merge( $field2 ) );
        +
        +		$field1->setMergeCallback(
        +			function ( $this, $that ) {
        +				return "test";
        +			}
        +		);
        +		$this->assertEquals( "test", $field1->merge( $field2 ) );
        +
         	}
        +
         }
        diff --git a/tests/phpunit/includes/session/SessionManagerTest.php b/tests/phpunit/includes/session/SessionManagerTest.php
        index 50394f4ffb..48a72d3415 100644
        --- a/tests/phpunit/includes/session/SessionManagerTest.php
        +++ b/tests/phpunit/includes/session/SessionManagerTest.php
        @@ -1004,7 +1004,7 @@ class SessionManagerTest extends MediaWikiTestCase {
         		$this->assertFalse( $loadSessionInfoFromStore( $info ) );
         		$this->assertSame( [
         			[
        -				LogLevel::WARNING,
        +				LogLevel::INFO,
         				'Session "{session}": Unverified user provided and no metadata to auth it',
         			]
         		], $logger->getBuffer() );
        diff --git a/tests/phpunit/includes/skins/SkinTemplateTest.php b/tests/phpunit/includes/skins/SkinTemplateTest.php
        index ff544cd23d..e8260ac2ee 100644
        --- a/tests/phpunit/includes/skins/SkinTemplateTest.php
        +++ b/tests/phpunit/includes/skins/SkinTemplateTest.php
        @@ -39,4 +39,64 @@ class SkinTemplateTest extends MediaWikiTestCase {
         			]
         		];
         	}
        +
        +	/**
        +	 * @return PHPUnit_Framework_MockObject_MockObject|OutputPage
        +	 */
        +	private function getMockOutputPage( $isSyndicated, $html ) {
        +		$mock = $this->getMockBuilder( OutputPage::class )
        +			->disableOriginalConstructor()
        +			->getMock();
        +		$mock->expects( $this->once() )
        +			->method( 'isSyndicated' )
        +			->will( $this->returnValue( $isSyndicated ) );
        +		$mock->expects( $this->once() )
        +			->method( 'getHTML' )
        +			->will( $this->returnValue( $html ) );
        +		return $mock;
        +	}
        +
        +	public function provideSetupSkinUserCss() {
        +		$defaultStyles = [
        +			'mediawiki.legacy.shared',
        +			'mediawiki.legacy.commonPrint',
        +			'mediawiki.sectionAnchor',
        +		];
        +		$buttonStyle = 'mediawiki.ui.button';
        +		$feedStyle = 'mediawiki.feedlink';
        +		return [
        +			[
        +				$this->getMockOutputPage( false, '' ),
        +				$defaultStyles
        +			],
        +			[
        +				$this->getMockOutputPage( true, '' ),
        +				array_merge( $defaultStyles, [ $feedStyle ] )
        +			],
        +			[
        +				$this->getMockOutputPage( false, 'FOO mw-ui-button BAR' ),
        +				array_merge( $defaultStyles, [ $buttonStyle ] )
        +			],
        +			[
        +				$this->getMockOutputPage( true, 'FOO mw-ui-button BAR' ),
        +				array_merge( $defaultStyles, [ $feedStyle, $buttonStyle ] )
        +			],
        +		];
        +	}
        +
        +	/**
        +	 * @param PHPUnit_Framework_MockObject_MockObject|OutputPage $outputPageMock
        +	 * @param string[] $expectedModuleStyles
        +	 *
        +	 * @covers SkinTemplate::setupSkinUserCss
        +	 * @dataProvider provideSetupSkinUserCss
        +	 */
        +	public function testSetupSkinUserCss( $outputPageMock, $expectedModuleStyles ) {
        +		$outputPageMock->expects( $this->once() )
        +			->method( 'addModuleStyles' )
        +			->with( $expectedModuleStyles );
        +
        +		$skinTemplate = new SkinTemplate();
        +		$skinTemplate->setupSkinUserCss( $outputPageMock );
        +	}
         }
        diff --git a/tests/phpunit/includes/specialpage/AbstractChangesListSpecialPageTestCase.php b/tests/phpunit/includes/specialpage/AbstractChangesListSpecialPageTestCase.php
        new file mode 100644
        index 0000000000..621d6a240a
        --- /dev/null
        +++ b/tests/phpunit/includes/specialpage/AbstractChangesListSpecialPageTestCase.php
        @@ -0,0 +1,49 @@
        +setMwGlobals( 'wgRCWatchCategoryMembership', true );
        +	}
        +
        +	/**
        +	 * @dataProvider provideParseParameters
        +	 */
        +	public function testParseParameters( $params, $expected ) {
        +		$this->changesListSpecialPage->registerFilters();
        +
        +		$opts = new FormOptions();
        +		foreach ( $expected as $key => $value ) {
        +			// Register it as null so sets aren't rejected.
        +			$opts->add(
        +				$key,
        +				null,
        +				FormOptions::guessType( $expected )
        +			);
        +		}
        +
        +		$this->changesListSpecialPage->parseParameters(
        +			$params,
        +			$opts
        +		);
        +
        +		$this->assertArrayEquals(
        +			$expected,
        +			$opts->getAllValues(),
        +			/** ordered= */ false,
        +			/** named= */ true
        +		);
        +	}
        +}
        diff --git a/tests/phpunit/includes/specialpage/ChangesListSpecialPageTest.php b/tests/phpunit/includes/specialpage/ChangesListSpecialPageTest.php
        new file mode 100644
        index 0000000000..c292e97ad0
        --- /dev/null
        +++ b/tests/phpunit/includes/specialpage/ChangesListSpecialPageTest.php
        @@ -0,0 +1,804 @@
        +changesListSpecialPage = $this->getPage();
        +	}
        +
        +	protected function getPage() {
        +		return TestingAccessWrapper::newFromObject(
        +			$this->getMockForAbstractClass(
        +				'ChangesListSpecialPage',
        +				[
        +					'ChangesListSpecialPage',
        +					''
        +				]
        +			)
        +		);
        +	}
        +
        +	/** helper to test SpecialRecentchanges::buildMainQueryConds() */
        +	private function assertConditions(
        +		$expected,
        +		$requestOptions = null,
        +		$message = '',
        +		$user = null
        +	) {
        +		$context = new RequestContext;
        +		$context->setRequest( new FauxRequest( $requestOptions ) );
        +		if ( $user ) {
        +			$context->setUser( $user );
        +		}
        +
        +		$this->changesListSpecialPage->setContext( $context );
        +		$formOptions = $this->changesListSpecialPage->setup( null );
        +
        +		#  Filter out rc_timestamp conditions which depends on the test runtime
        +		# This condition is not needed as of march 2, 2011 -- hashar
        +		# @todo FIXME: Find a way to generate the correct rc_timestamp
        +
        +		$tables = [];
        +		$fields = [];
        +		$queryConditions = [];
        +		$query_options = [];
        +		$join_conds = [];
        +
        +		call_user_func_array(
        +			[ $this->changesListSpecialPage, 'buildQuery' ],
        +			[
        +				&$tables,
        +				&$fields,
        +				&$queryConditions,
        +				&$query_options,
        +				&$join_conds,
        +				$formOptions
        +			]
        +		);
        +
        +		$queryConditions = array_filter(
        +			$queryConditions,
        +			'ChangesListSpecialPageTest::filterOutRcTimestampCondition'
        +		);
        +
        +		$this->assertEquals(
        +			self::normalizeCondition( $expected ),
        +			self::normalizeCondition( $queryConditions ),
        +			$message
        +		);
        +	}
        +
        +	private static function normalizeCondition( $conds ) {
        +		$normalized = array_map(
        +			function ( $k, $v ) {
        +				return is_numeric( $k ) ? $v : "$k = $v";
        +			},
        +			array_keys( $conds ),
        +			$conds
        +		);
        +		sort( $normalized );
        +		return $normalized;
        +	}
        +
        +	/** return false if condition begin with 'rc_timestamp ' */
        +	private static function filterOutRcTimestampCondition( $var ) {
        +		return ( false === strpos( $var, 'rc_timestamp ' ) );
        +	}
        +
        +	public function testRcNsFilter() {
        +		$this->assertConditions(
        +			[ # expected
        +				"rc_namespace = '0'",
        +			],
        +			[
        +				'namespace' => NS_MAIN,
        +			],
        +			"rc conditions with no options (aka default setting)"
        +		);
        +	}
        +
        +	public function testRcNsFilterInversion() {
        +		$this->assertConditions(
        +			[ # expected
        +				"rc_namespace != '0'",
        +			],
        +			[
        +				'namespace' => NS_MAIN,
        +				'invert' => 1,
        +			],
        +			"rc conditions with namespace inverted"
        +		);
        +	}
        +
        +	/**
        +	 * T4429
        +	 * @dataProvider provideNamespacesAssociations
        +	 */
        +	public function testRcNsFilterAssociation( $ns1, $ns2 ) {
        +		$this->assertConditions(
        +			[ # expected
        +				"(rc_namespace = '$ns1' OR rc_namespace = '$ns2')",
        +			],
        +			[
        +				'namespace' => $ns1,
        +				'associated' => 1,
        +			],
        +			"rc conditions with namespace inverted"
        +		);
        +	}
        +
        +	/**
        +	 * T4429
        +	 * @dataProvider provideNamespacesAssociations
        +	 */
        +	public function testRcNsFilterAssociationWithInversion( $ns1, $ns2 ) {
        +		$this->assertConditions(
        +			[ # expected
        +				"(rc_namespace != '$ns1' AND rc_namespace != '$ns2')",
        +			],
        +			[
        +				'namespace' => $ns1,
        +				'associated' => 1,
        +				'invert' => 1,
        +			],
        +			"rc conditions with namespace inverted"
        +		);
        +	}
        +
        +	/**
        +	 * Provides associated namespaces to test recent changes
        +	 * namespaces association filtering.
        +	 */
        +	public static function provideNamespacesAssociations() {
        +		return [ # (NS => Associated_NS)
        +			[ NS_MAIN, NS_TALK ],
        +			[ NS_TALK, NS_MAIN ],
        +		];
        +	}
        +
        +	public function testRcHidemyselfFilter() {
        +		$user = $this->getTestUser()->getUser();
        +		$this->assertConditions(
        +			[ # expected
        +				"rc_user != '{$user->getId()}'",
        +			],
        +			[
        +				'hidemyself' => 1,
        +			],
        +			"rc conditions: hidemyself=1 (logged in)",
        +			$user
        +		);
        +
        +		$user = User::newFromName( '10.11.12.13', false );
        +		$this->assertConditions(
        +			[ # expected
        +				"rc_user_text != '10.11.12.13'",
        +			],
        +			[
        +				'hidemyself' => 1,
        +			],
        +			"rc conditions: hidemyself=1 (anon)",
        +			$user
        +		);
        +	}
        +
        +	public function testRcHidebyothersFilter() {
        +		$user = $this->getTestUser()->getUser();
        +		$this->assertConditions(
        +			[ # expected
        +				"rc_user = '{$user->getId()}'",
        +			],
        +			[
        +				'hidebyothers' => 1,
        +			],
        +			"rc conditions: hidebyothers=1 (logged in)",
        +			$user
        +		);
        +
        +		$user = User::newFromName( '10.11.12.13', false );
        +		$this->assertConditions(
        +			[ # expected
        +				"rc_user_text = '10.11.12.13'",
        +			],
        +			[
        +				'hidebyothers' => 1,
        +			],
        +			"rc conditions: hidebyothers=1 (anon)",
        +			$user
        +		);
        +	}
        +
        +	public function testRcHidemyselfHidebyothersFilter() {
        +		$user = $this->getTestUser()->getUser();
        +		$this->assertConditions(
        +			[ # expected
        +				"rc_user != '{$user->getId()}'",
        +				"rc_user = '{$user->getId()}'",
        +			],
        +			[
        +				'hidemyself' => 1,
        +				'hidebyothers' => 1,
        +			],
        +			"rc conditions: hidemyself=1 hidebyothers=1 (logged in)",
        +			$user
        +		);
        +	}
        +
        +	public function testRcHidepageedits() {
        +		$this->assertConditions(
        +			[ # expected
        +				"rc_type != '0'",
        +			],
        +			[
        +				'hidepageedits' => 1,
        +			],
        +			"rc conditions: hidepageedits=1"
        +		);
        +	}
        +
        +	public function testRcHidenewpages() {
        +		$this->assertConditions(
        +			[ # expected
        +				"rc_type != '1'",
        +			],
        +			[
        +				'hidenewpages' => 1,
        +			],
        +			"rc conditions: hidenewpages=1"
        +		);
        +	}
        +
        +	public function testRcHidelog() {
        +		$this->assertConditions(
        +			[ # expected
        +				"rc_type != '3'",
        +			],
        +			[
        +				'hidelog' => 1,
        +			],
        +			"rc conditions: hidelog=1"
        +		);
        +	}
        +
        +	public function testRcHidehumans() {
        +		$this->assertConditions(
        +			[ # expected
        +				'rc_bot' => 1,
        +			],
        +			[
        +				'hidebots' => 0,
        +				'hidehumans' => 1,
        +			],
        +			"rc conditions: hidebots=0 hidehumans=1"
        +		);
        +	}
        +
        +	public function testRcHidepatrolledDisabledFilter() {
        +		$user = $this->getTestUser()->getUser();
        +		$this->assertConditions(
        +			[ # expected
        +			],
        +			[
        +				'hidepatrolled' => 1,
        +			],
        +			"rc conditions: hidepatrolled=1 (user not allowed)",
        +			$user
        +		);
        +	}
        +
        +	public function testRcHideunpatrolledDisabledFilter() {
        +		$user = $this->getTestUser()->getUser();
        +		$this->assertConditions(
        +			[ # expected
        +			],
        +			[
        +				'hideunpatrolled' => 1,
        +			],
        +			"rc conditions: hideunpatrolled=1 (user not allowed)",
        +			$user
        +		);
        +	}
        +	public function testRcHidepatrolledFilter() {
        +		$user = $this->getTestSysop()->getUser();
        +		$this->assertConditions(
        +			[ # expected
        +				"rc_patrolled = 0",
        +			],
        +			[
        +				'hidepatrolled' => 1,
        +			],
        +			"rc conditions: hidepatrolled=1",
        +			$user
        +		);
        +	}
        +
        +	public function testRcHideunpatrolledFilter() {
        +		$user = $this->getTestSysop()->getUser();
        +		$this->assertConditions(
        +			[ # expected
        +				"rc_patrolled = 1",
        +			],
        +			[
        +				'hideunpatrolled' => 1,
        +			],
        +			"rc conditions: hideunpatrolled=1",
        +			$user
        +		);
        +	}
        +
        +	public function testRcHideminorFilter() {
        +		$this->assertConditions(
        +			[ # expected
        +				"rc_minor = 0",
        +			],
        +			[
        +				'hideminor' => 1,
        +			],
        +			"rc conditions: hideminor=1"
        +		);
        +	}
        +
        +	public function testRcHidemajorFilter() {
        +		$this->assertConditions(
        +			[ # expected
        +				"rc_minor = 1",
        +			],
        +			[
        +				'hidemajor' => 1,
        +			],
        +			"rc conditions: hidemajor=1"
        +		);
        +	}
        +
        +	public function testRcHidepatrolledHideunpatrolledFilter() {
        +		$user = $this->getTestSysop()->getUser();
        +		$this->assertConditions(
        +			[ # expected
        +				"rc_patrolled = 0",
        +				"rc_patrolled = 1",
        +			],
        +			[
        +				'hidepatrolled' => 1,
        +				'hideunpatrolled' => 1,
        +			],
        +			"rc conditions: hidepatrolled=1 hideunpatrolled=1",
        +			$user
        +		);
        +	}
        +
        +	public function testHideCategorization() {
        +		$this->assertConditions(
        +			[
        +				# expected
        +				"rc_type != '6'"
        +			],
        +			[
        +				'hidecategorization' => 1
        +			],
        +			"rc conditions: hidecategorization=1"
        +		);
        +	}
        +
        +	public function testFilterUserExpLevel() {
        +		$this->setMwGlobals( [
        +			'wgLearnerEdits' => 10,
        +			'wgLearnerMemberSince' => 4,
        +			'wgExperiencedUserEdits' => 500,
        +			'wgExperiencedUserMemberSince' => 30,
        +		] );
        +
        +		$this->createUsers( [
        +			'Newcomer1' => [ 'edits' => 2, 'days' => 2 ],
        +			'Newcomer2' => [ 'edits' => 12, 'days' => 3 ],
        +			'Newcomer3' => [ 'edits' => 8, 'days' => 5 ],
        +			'Learner1' => [ 'edits' => 15, 'days' => 10 ],
        +			'Learner2' => [ 'edits' => 450, 'days' => 20 ],
        +			'Learner3' => [ 'edits' => 460, 'days' => 33 ],
        +			'Learner4' => [ 'edits' => 525, 'days' => 28 ],
        +			'Experienced1' => [ 'edits' => 538, 'days' => 33 ],
        +		] );
        +
        +		// newcomers only
        +		$this->assertArrayEquals(
        +			[ 'Newcomer1', 'Newcomer2', 'Newcomer3' ],
        +			$this->fetchUsers( [ 'newcomer' ] )
        +		);
        +
        +		// newcomers and learner
        +		$this->assertArrayEquals(
        +			[
        +				'Newcomer1', 'Newcomer2', 'Newcomer3',
        +				'Learner1', 'Learner2', 'Learner3', 'Learner4',
        +			],
        +			$this->fetchUsers( [ 'newcomer', 'learner' ] )
        +		);
        +
        +		// newcomers and more learner
        +		$this->assertArrayEquals(
        +			[
        +				'Newcomer1', 'Newcomer2', 'Newcomer3',
        +				'Experienced1',
        +			],
        +			$this->fetchUsers( [ 'newcomer', 'experienced' ] )
        +		);
        +
        +		// learner only
        +		$this->assertArrayEquals(
        +			[ 'Learner1', 'Learner2', 'Learner3', 'Learner4' ],
        +			$this->fetchUsers( [ 'learner' ] )
        +		);
        +
        +		// more experienced only
        +		$this->assertArrayEquals(
        +			[ 'Experienced1' ],
        +			$this->fetchUsers( [ 'experienced' ] )
        +		);
        +
        +		// learner and more experienced
        +		$this->assertArrayEquals(
        +			[
        +				'Learner1', 'Learner2', 'Learner3', 'Learner4',
        +				'Experienced1',
        +			],
        +			$this->fetchUsers( [ 'learner', 'experienced' ] ),
        +			'Learner and more experienced'
        +		);
        +
        +		// newcomers, learner, and more experienced
        +		// TOOD: Fix test.  This needs to test that anons are excluded,
        +		// and right now the join fails.
        +		/* $this->assertArrayEquals( */
        +		/* 	[ */
        +		/* 		'Newcomer1', 'Newcomer2', 'Newcomer3', */
        +		/* 		'Learner1', 'Learner2', 'Learner3', 'Learner4', */
        +		/* 		'Experienced1', */
        +		/* 	], */
        +		/* 	$this->fetchUsers( [ 'newcomer', 'learner', 'experienced' ] ) */
        +		/* ); */
        +	}
        +
        +	private function createUsers( $specs ) {
        +		$dbw = wfGetDB( DB_MASTER );
        +		foreach ( $specs as $name => $spec ) {
        +			User::createNew(
        +				$name,
        +				[
        +					'editcount' => $spec['edits'],
        +					'registration' => $dbw->timestamp( $this->daysAgo( $spec['days'] ) ),
        +					'email' => 'ut',
        +				]
        +			);
        +		}
        +	}
        +
        +	private function fetchUsers( $filters ) {
        +		$tables = [];
        +		$conds = [];
        +		$fields = [];
        +		$query_options = [];
        +		$join_conds = [];
        +
        +		sort( $filters );
        +
        +		call_user_func_array(
        +			[ $this->changesListSpecialPage, 'filterOnUserExperienceLevel' ],
        +			[
        +				get_class( $this->changesListSpecialPage ),
        +				$this->changesListSpecialPage->getContext(),
        +				$this->changesListSpecialPage->getDB(),
        +				&$tables,
        +				&$fields,
        +				&$conds,
        +				&$query_options,
        +				&$join_conds,
        +				$filters
        +			]
        +		);
        +
        +		$result = wfGetDB( DB_MASTER )->select(
        +			'user',
        +			'user_name',
        +			array_filter( $conds ) + [ 'user_email' => 'ut' ]
        +		);
        +
        +		$usernames = [];
        +		foreach ( $result as $row ) {
        +			$usernames[] = $row->user_name;
        +		}
        +
        +		return $usernames;
        +	}
        +
        +	private function daysAgo( $days ) {
        +		$secondsPerDay = 86400;
        +		return time() - $days * $secondsPerDay;
        +	}
        +
        +	public function testGetFilterGroupDefinitionFromLegacyCustomFilters() {
        +		$customFilters = [
        +			'hidefoo' => [
        +				'msg' => 'showhidefoo',
        +				'default' => true,
        +			],
        +
        +			'hidebar' => [
        +				'msg' => 'showhidebar',
        +				'default' => false,
        +			],
        +		];
        +
        +		$this->assertEquals(
        +			[
        +				'name' => 'unstructured',
        +				'class' => ChangesListBooleanFilterGroup::class,
        +				'priority' => -1,
        +				'filters' => [
        +					[
        +						'name' => 'hidefoo',
        +						'showHide' => 'showhidefoo',
        +						'default' => true,
        +					],
        +					[
        +						'name' => 'hidebar',
        +						'showHide' => 'showhidebar',
        +						'default' => false,
        +					]
        +				],
        +			],
        +			$this->changesListSpecialPage->getFilterGroupDefinitionFromLegacyCustomFilters(
        +				$customFilters
        +			)
        +		);
        +	}
        +
        +	public function testGetStructuredFilterJsData() {
        +		$definition = [
        +			[
        +				'name' => 'gub-group',
        +				'title' => 'gub-group-title',
        +				'class' => ChangesListBooleanFilterGroup::class,
        +				'filters' => [
        +					[
        +						'name' => 'hidefoo',
        +						'label' => 'foo-label',
        +						'description' => 'foo-description',
        +						'default' => true,
        +						'showHide' => 'showhidefoo',
        +						'priority' => 2,
        +					],
        +					[
        +						'name' => 'hidebar',
        +						'label' => 'bar-label',
        +						'description' => 'bar-description',
        +						'default' => false,
        +						'priority' => 4,
        +					]
        +				],
        +			],
        +
        +			[
        +				'name' => 'des-group',
        +				'title' => 'des-group-title',
        +				'class' => ChangesListStringOptionsFilterGroup::class,
        +				'isFullCoverage' => true,
        +				'filters' => [
        +					[
        +						'name' => 'grault',
        +						'label' => 'grault-label',
        +						'description' => 'grault-description',
        +					],
        +					[
        +						'name' => 'garply',
        +						'label' => 'garply-label',
        +						'description' => 'garply-description',
        +					],
        +				],
        +				'queryCallable' => function () {
        +				},
        +				'default' => ChangesListStringOptionsFilterGroup::NONE,
        +			],
        +
        +			[
        +				'name' => 'unstructured',
        +				'class' => ChangesListBooleanFilterGroup::class,
        +				'filters' => [
        +					[
        +						'name' => 'hidethud',
        +						'showHide' => 'showhidethud',
        +						'default' => true,
        +					],
        +
        +					[
        +						'name' => 'hidemos',
        +						'showHide' => 'showhidemos',
        +						'default' => false,
        +					],
        +				],
        +			],
        +
        +		];
        +
        +		$this->changesListSpecialPage->registerFiltersFromDefinitions( $definition );
        +
        +		$this->assertArrayEquals(
        +			[
        +				// Filters that only display in the unstructured UI are
        +				// are not included, and neither are groups that would
        +				// be empty due to the above.
        +				'groups' => [
        +					[
        +						'name' => 'gub-group',
        +						'title' => 'gub-group-title',
        +						'type' => ChangesListBooleanFilterGroup::TYPE,
        +						'priority' => -1,
        +						'filters' => [
        +							[
        +								'name' => 'hidebar',
        +								'label' => 'bar-label',
        +								'description' => 'bar-description',
        +								'default' => false,
        +								'priority' => 4,
        +								'cssClass' => null,
        +								'conflicts' => [],
        +								'subset' => [],
        +							],
        +							[
        +								'name' => 'hidefoo',
        +								'label' => 'foo-label',
        +								'description' => 'foo-description',
        +								'default' => true,
        +								'priority' => 2,
        +								'cssClass' => null,
        +								'conflicts' => [],
        +								'subset' => [],
        +							],
        +						],
        +						'fullCoverage' => true,
        +						'conflicts' => [],
        +					],
        +
        +					[
        +						'name' => 'des-group',
        +						'title' => 'des-group-title',
        +						'type' => ChangesListStringOptionsFilterGroup::TYPE,
        +						'priority' => -2,
        +						'fullCoverage' => true,
        +						'filters' => [
        +							[
        +								'name' => 'grault',
        +								'label' => 'grault-label',
        +								'description' => 'grault-description',
        +								'cssClass' => null,
        +								'priority' => -2,
        +								'conflicts' => [],
        +								'subset' => [],
        +							],
        +							[
        +								'name' => 'garply',
        +								'label' => 'garply-label',
        +								'description' => 'garply-description',
        +								'cssClass' => null,
        +								'priority' => -3,
        +								'conflicts' => [],
        +								'subset' => [],
        +							],
        +						],
        +						'conflicts' => [],
        +						'separator' => ';',
        +						'default' => ChangesListStringOptionsFilterGroup::NONE,
        +					],
        +				],
        +				'messageKeys' => [
        +					'gub-group-title',
        +					'bar-label',
        +					'bar-description',
        +					'foo-label',
        +					'foo-description',
        +					'des-group-title',
        +					'grault-label',
        +					'grault-description',
        +					'garply-label',
        +					'garply-description',
        +				],
        +			],
        +			$this->changesListSpecialPage->getStructuredFilterJsData(),
        +			/** ordered= */ false,
        +			/** named= */ true
        +		);
        +	}
        +
        +	public function provideParseParameters() {
        +		return [
        +			[ 'hidebots', [ 'hidebots' => true ] ],
        +
        +			[ 'bots', [ 'hidebots' => false ] ],
        +
        +			[ 'hideminor', [ 'hideminor' => true ] ],
        +
        +			[ 'minor', [ 'hideminor' => false ] ],
        +
        +			[ 'hidemajor', [ 'hidemajor' => true ] ],
        +
        +			[ 'hideliu', [ 'hideliu' => true ] ],
        +
        +			[ 'hidepatrolled', [ 'hidepatrolled' => true ] ],
        +
        +			[ 'hideunpatrolled', [ 'hideunpatrolled' => true ] ],
        +
        +			[ 'hideanons', [ 'hideanons' => true ] ],
        +
        +			[ 'hidemyself', [ 'hidemyself' => true ] ],
        +
        +			[ 'hidebyothers', [ 'hidebyothers' => true ] ],
        +
        +			[ 'hidehumans', [ 'hidehumans' => true ] ],
        +
        +			[ 'hidepageedits', [ 'hidepageedits' => true ] ],
        +
        +			[ 'pagedits', [ 'hidepageedits' => false ] ],
        +
        +			[ 'hidenewpages', [ 'hidenewpages' => true ] ],
        +
        +			[ 'hidecategorization', [ 'hidecategorization' => true ] ],
        +
        +			[ 'hidelog', [ 'hidelog' => true ] ],
        +
        +			[
        +				'userExpLevel=learner;experienced',
        +				[
        +					'userExpLevel' => 'learner;experienced'
        +				],
        +			],
        +
        +			// A few random combos
        +			[
        +				'bots,hideliu,hidemyself',
        +				[
        +					'hidebots' => false,
        +					'hideliu' => true,
        +					'hidemyself' => true,
        +				],
        +			],
        +
        +			[
        +				'minor,hideanons,categorization',
        +				[
        +					'hideminor' => false,
        +					'hideanons' => true,
        +					'hidecategorization' => false,
        +				]
        +			],
        +
        +			[
        +				'hidehumans,bots,hidecategorization',
        +				[
        +					'hidehumans' => true,
        +					'hidebots' => false,
        +					'hidecategorization' => true,
        +				],
        +			],
        +
        +			[
        +				'hidemyself,userExpLevel=newcomer;learner,hideminor',
        +				[
        +					'hidemyself' => true,
        +					'hideminor' => true,
        +					'userExpLevel' => 'newcomer;learner',
        +				],
        +			],
        +		];
        +	}
        +}
        diff --git a/tests/phpunit/includes/specials/SpecialBooksourcesTest.php b/tests/phpunit/includes/specials/SpecialBooksourcesTest.php
        index 074045d79f..9c71261e43 100644
        --- a/tests/phpunit/includes/specials/SpecialBooksourcesTest.php
        +++ b/tests/phpunit/includes/specials/SpecialBooksourcesTest.php
        @@ -14,7 +14,7 @@ class SpecialBooksourcesTest extends SpecialPageTestBase {
         			[ '9780136091817', false ],
         			[ '123456789X', true ],
         
        -			// Bug 67021
        +			// T69021
         			[ '1413304541', false ],
         			[ '141330454X', false ],
         			[ '1413304540', true ],
        diff --git a/tests/phpunit/includes/specials/SpecialRecentchangesTest.php b/tests/phpunit/includes/specials/SpecialRecentchangesTest.php
        index ab92aeeb3f..011d8a00ea 100644
        --- a/tests/phpunit/includes/specials/SpecialRecentchangesTest.php
        +++ b/tests/phpunit/includes/specials/SpecialRecentchangesTest.php
        @@ -1,528 +1,33 @@
         setMwGlobals( 'wgRCWatchCategoryMembership', true );
        -	}
        -
        -	/**
        -	 * @var SpecialRecentChanges
        -	 */
        -	protected $rc;
        -
        -	/** helper to test SpecialRecentchanges::buildMainQueryConds() */
        -	private function assertConditions(
        -		$expected,
        -		$requestOptions = null,
        -		$message = '',
        -		$user = null
        -	) {
        -		$context = new RequestContext;
        -		$context->setRequest( new FauxRequest( $requestOptions ) );
        -		if ( $user ) {
        -			$context->setUser( $user );
        -		}
        -
        -		# setup the rc object
        -		$this->rc = new SpecialRecentChanges();
        -		$this->rc->setContext( $context );
        -		$formOptions = $this->rc->setup( null );
         
        -		#  Filter out rc_timestamp conditions which depends on the test runtime
        -		# This condition is not needed as of march 2, 2011 -- hashar
        -		# @todo FIXME: Find a way to generate the correct rc_timestamp
        -		$queryConditions = array_filter(
        -			$this->rc->buildMainQueryConds( $formOptions ),
        -			'SpecialRecentchangesTest::filterOutRcTimestampCondition'
        -		);
        -
        -		$this->assertEquals(
        -			self::normalizeCondition( $expected ),
        -			self::normalizeCondition( $queryConditions ),
        -			$message
        +		# setup the CLSP object
        +		$this->changesListSpecialPage = TestingAccessWrapper::newFromObject(
        +			new SpecialRecentchanges
         		);
         	}
         
        -	private static function normalizeCondition( $conds ) {
        -		$normalized = array_map(
        -			function ( $k, $v ) {
        -				return is_numeric( $k ) ? $v : "$k = $v";
        -			},
        -			array_keys( $conds ),
        -			$conds
        -		);
        -		sort( $normalized );
        -		return $normalized;
        -	}
        +	public function provideParseParameters() {
        +		return [
        +			[ 'limit=123', [ 'limit' => '123' ] ],
         
        -	/** return false if condition begin with 'rc_timestamp ' */
        -	private static function filterOutRcTimestampCondition( $var ) {
        -		return ( false === strpos( $var, 'rc_timestamp ' ) );
        -	}
        +			[ '234', [ 'limit' => '234' ] ],
         
        -	public function testRcNsFilter() {
        -		$this->assertConditions(
        -			[ # expected
        -				'rc_bot' => 0,
        -				"rc_type != '6'",
        -				"rc_namespace = '0'",
        -			],
        -			[
        -				'namespace' => NS_MAIN,
        -			],
        -			"rc conditions with no options (aka default setting)"
        -		);
        -	}
        -
        -	public function testRcNsFilterInversion() {
        -		$this->assertConditions(
        -			[ # expected
        -				'rc_bot' => 0,
        -				"rc_type != '6'",
        -				"rc_namespace != '0'",
        -			],
        -			[
        -				'namespace' => NS_MAIN,
        -				'invert' => 1,
        -			],
        -			"rc conditions with namespace inverted"
        -		);
        -	}
        -
        -	/**
        -	 * @bug 2429
        -	 * @dataProvider provideNamespacesAssociations
        -	 */
        -	public function testRcNsFilterAssociation( $ns1, $ns2 ) {
        -		$this->assertConditions(
        -			[ # expected
        -				'rc_bot' => 0,
        -				"rc_type != '6'",
        -				"(rc_namespace = '$ns1' OR rc_namespace = '$ns2')",
        -			],
        -			[
        -				'namespace' => $ns1,
        -				'associated' => 1,
        -			],
        -			"rc conditions with namespace inverted"
        -		);
        -	}
        +			[ 'days=3', [ 'days' => '3' ] ],
         
        -	/**
        -	 * @bug 2429
        -	 * @dataProvider provideNamespacesAssociations
        -	 */
        -	public function testRcNsFilterAssociationWithInversion( $ns1, $ns2 ) {
        -		$this->assertConditions(
        -			[ # expected
        -				'rc_bot' => 0,
        -				"rc_type != '6'",
        -				"(rc_namespace != '$ns1' AND rc_namespace != '$ns2')",
        -			],
        -			[
        -				'namespace' => $ns1,
        -				'associated' => 1,
        -				'invert' => 1,
        -			],
        -			"rc conditions with namespace inverted"
        -		);
        -	}
        +			[ 'namespace=5', [ 'namespace' => 5 ] ],
         
        -	/**
        -	 * Provides associated namespaces to test recent changes
        -	 * namespaces association filtering.
        -	 */
        -	public static function provideNamespacesAssociations() {
        -		return [ # (NS => Associated_NS)
        -			[ NS_MAIN, NS_TALK ],
        -			[ NS_TALK, NS_MAIN ],
        +			[ 'tagfilter=foo', [ 'tagfilter' => 'foo' ] ],
         		];
         	}
        -
        -	public function testRcHidemyselfFilter() {
        -		$user = $this->getTestUser()->getUser();
        -		$this->assertConditions(
        -			[ # expected
        -				'rc_bot' => 0,
        -				"rc_user != '{$user->getId()}'",
        -				"rc_type != '6'",
        -			],
        -			[
        -				'hidemyself' => 1,
        -			],
        -			"rc conditions: hidemyself=1 (logged in)",
        -			$user
        -		);
        -
        -		$user = User::newFromName( '10.11.12.13', false );
        -		$this->assertConditions(
        -			[ # expected
        -				'rc_bot' => 0,
        -				"rc_user_text != '10.11.12.13'",
        -				"rc_type != '6'",
        -			],
        -			[
        -				'hidemyself' => 1,
        -			],
        -			"rc conditions: hidemyself=1 (anon)",
        -			$user
        -		);
        -	}
        -
        -	public function testRcHidebyothersFilter() {
        -		$user = $this->getTestUser()->getUser();
        -		$this->assertConditions(
        -			[ # expected
        -				'rc_bot' => 0,
        -				"rc_user = '{$user->getId()}'",
        -				"rc_type != '6'",
        -			],
        -			[
        -				'hidebyothers' => 1,
        -			],
        -			"rc conditions: hidebyothers=1 (logged in)",
        -			$user
        -		);
        -
        -		$user = User::newFromName( '10.11.12.13', false );
        -		$this->assertConditions(
        -			[ # expected
        -				'rc_bot' => 0,
        -				"rc_user_text = '10.11.12.13'",
        -				"rc_type != '6'",
        -			],
        -			[
        -				'hidebyothers' => 1,
        -			],
        -			"rc conditions: hidebyothers=1 (anon)",
        -			$user
        -		);
        -	}
        -
        -	public function testRcHidemyselfHidebyothersFilter() {
        -		$user = $this->getTestUser()->getUser();
        -		$this->assertConditions(
        -			[ # expected
        -				'rc_bot' => 0,
        -				"rc_user != '{$user->getId()}'",
        -				"rc_user = '{$user->getId()}'",
        -				"rc_type != '6'",
        -			],
        -			[
        -				'hidemyself' => 1,
        -				'hidebyothers' => 1,
        -			],
        -			"rc conditions: hidemyself=1 hidebyothers=1 (logged in)",
        -			$user
        -		);
        -	}
        -
        -	public function testRcHidepageedits() {
        -		$this->assertConditions(
        -			[ # expected
        -				'rc_bot' => 0,
        -				"rc_type != '6'",
        -				"rc_type != '0'",
        -			],
        -			[
        -				'hidepageedits' => 1,
        -			],
        -			"rc conditions: hidepageedits=1"
        -		);
        -	}
        -
        -	public function testRcHidenewpages() {
        -		$this->assertConditions(
        -			[ # expected
        -				'rc_bot' => 0,
        -				"rc_type != '6'",
        -				"rc_type != '1'",
        -			],
        -			[
        -				'hidenewpages' => 1,
        -			],
        -			"rc conditions: hidenewpages=1"
        -		);
        -	}
        -
        -	public function testRcHidelog() {
        -		$this->assertConditions(
        -			[ # expected
        -				'rc_bot' => 0,
        -				"rc_type != '6'",
        -				"rc_type != '3'",
        -			],
        -			[
        -				'hidelog' => 1,
        -			],
        -			"rc conditions: hidelog=1"
        -		);
        -	}
        -
        -	public function testRcHidehumans() {
        -		$this->assertConditions(
        -			[ # expected
        -				'rc_bot' => 1,
        -				"rc_type != '6'",
        -			],
        -			[
        -				'hidebots' => 0,
        -				'hidehumans' => 1,
        -			],
        -			"rc conditions: hidebots=0 hidehumans=1"
        -		);
        -	}
        -
        -	public function testRcHidepatrolledDisabledFilter() {
        -		$user = $this->getTestUser()->getUser();
        -		$this->assertConditions(
        -			[ # expected
        -				'rc_bot' => 0,
        -				"rc_type != '6'",
        -			],
        -			[
        -				'hidepatrolled' => 1,
        -			],
        -			"rc conditions: hidepatrolled=1 (user not allowed)",
        -			$user
        -		);
        -	}
        -
        -	public function testRcHideunpatrolledDisabledFilter() {
        -		$user = $this->getTestUser()->getUser();
        -		$this->assertConditions(
        -			[ # expected
        -				'rc_bot' => 0,
        -				"rc_type != '6'",
        -			],
        -			[
        -				'hideunpatrolled' => 1,
        -			],
        -			"rc conditions: hideunpatrolled=1 (user not allowed)",
        -			$user
        -		);
        -	}
        -	public function testRcHidepatrolledFilter() {
        -		$user = $this->getTestSysop()->getUser();
        -		$this->assertConditions(
        -			[ # expected
        -				'rc_bot' => 0,
        -				"rc_patrolled = 0",
        -				"rc_type != '6'",
        -			],
        -			[
        -				'hidepatrolled' => 1,
        -			],
        -			"rc conditions: hidepatrolled=1",
        -			$user
        -		);
        -	}
        -
        -	public function testRcHideunpatrolledFilter() {
        -		$user = $this->getTestSysop()->getUser();
        -		$this->assertConditions(
        -			[ # expected
        -				'rc_bot' => 0,
        -				"rc_patrolled = 1",
        -				"rc_type != '6'",
        -			],
        -			[
        -				'hideunpatrolled' => 1,
        -			],
        -			"rc conditions: hideunpatrolled=1",
        -			$user
        -		);
        -	}
        -
        -	public function testRcHideminorFilter() {
        -		$this->assertConditions(
        -			[ # expected
        -				'rc_bot' => 0,
        -				"rc_minor = 0",
        -				"rc_type != '6'",
        -			],
        -			[
        -				'hideminor' => 1,
        -			],
        -			"rc conditions: hideminor=1"
        -		);
        -	}
        -
        -	public function testRcHidemajorFilter() {
        -		$this->assertConditions(
        -			[ # expected
        -				'rc_bot' => 0,
        -				"rc_minor = 1",
        -				"rc_type != '6'",
        -			],
        -			[
        -				'hidemajor' => 1,
        -			],
        -			"rc conditions: hidemajor=1"
        -		);
        -	}
        -
        -	// This is probably going to change when we do auto-fix of
        -	// filters combinations that don't make sense but for now
        -	// it's the behavior therefore it's the test.
        -	public function testRcHidepatrolledHideunpatrolledFilter() {
        -		$user = $this->getTestSysop()->getUser();
        -		$this->assertConditions(
        -			[ # expected
        -				'rc_bot' => 0,
        -				"rc_patrolled = 0",
        -				"rc_patrolled = 1",
        -				"rc_type != '6'",
        -			],
        -			[
        -				'hidepatrolled' => 1,
        -				'hideunpatrolled' => 1,
        -			],
        -			"rc conditions: hidepatrolled=1 hideunpatrolled=1",
        -			$user
        -		);
        -	}
        -
        -	public function testFilterUserExpLevel() {
        -		$this->setMwGlobals( [
        -			'wgLearnerEdits' => 10,
        -			'wgLearnerMemberSince' => 4,
        -			'wgExperiencedUserEdits' => 500,
        -			'wgExperiencedUserMemberSince' => 30,
        -		] );
        -
        -		$this->createUsers( [
        -			'Newcomer1' => [ 'edits' => 2, 'days' => 2 ],
        -			'Newcomer2' => [ 'edits' => 12, 'days' => 3 ],
        -			'Newcomer3' => [ 'edits' => 8, 'days' => 5 ],
        -			'Learner1' => [ 'edits' => 15, 'days' => 10 ],
        -			'Learner2' => [ 'edits' => 450, 'days' => 20 ],
        -			'Learner3' => [ 'edits' => 460, 'days' => 33 ],
        -			'Learner4' => [ 'edits' => 525, 'days' => 28 ],
        -			'Experienced1' => [ 'edits' => 538, 'days' => 33 ],
        -		] );
        -
        -		// newcomers only
        -		$this->assertArrayEquals(
        -			[ 'Newcomer1', 'Newcomer2', 'Newcomer3' ],
        -			$this->fetchUsers( [ 'userExpLevel' => 'newcomer' ] )
        -		);
        -
        -		// newcomers and learner
        -		$this->assertArrayEquals(
        -			[
        -				'Newcomer1', 'Newcomer2', 'Newcomer3',
        -				'Learner1', 'Learner2', 'Learner3', 'Learner4',
        -			],
        -			$this->fetchUsers( [ 'userExpLevel' => 'newcomer,learner' ] )
        -		);
        -
        -		// newcomers and more learner
        -		$this->assertArrayEquals(
        -			[
        -				'Newcomer1', 'Newcomer2', 'Newcomer3',
        -				'Experienced1',
        -			],
        -			$this->fetchUsers( [ 'userExpLevel' => 'newcomer,experienced' ] )
        -		);
        -
        -		// learner only
        -		$this->assertArrayEquals(
        -			[ 'Learner1', 'Learner2', 'Learner3', 'Learner4' ],
        -			$this->fetchUsers( [ 'userExpLevel' => 'learner' ] )
        -		);
        -
        -		// more experienced only
        -		$this->assertArrayEquals(
        -			[ 'Experienced1' ],
        -			$this->fetchUsers( [ 'userExpLevel' => 'experienced' ] )
        -		);
        -
        -		// learner and more experienced
        -		$this->assertArrayEquals(
        -			[
        -				'Learner1', 'Learner2', 'Learner3', 'Learner4',
        -				'Experienced1',
        -			],
        -			$this->fetchUsers( [ 'userExpLevel' => 'learner,experienced' ] )
        -		);
        -
        -		// newcomers, learner, and more experienced
        -		$this->assertArrayEquals(
        -			[
        -				'Newcomer1', 'Newcomer2', 'Newcomer3',
        -				'Learner1', 'Learner2', 'Learner3', 'Learner4',
        -				'Experienced1',
        -			],
        -			$this->fetchUsers( [ 'userExpLevel' => 'newcomer,learner,experienced' ] )
        -		);
        -
        -		// 'all'
        -		$this->assertArrayEquals(
        -			[
        -				'Newcomer1', 'Newcomer2', 'Newcomer3',
        -				'Learner1', 'Learner2', 'Learner3', 'Learner4',
        -				'Experienced1',
        -			],
        -			$this->fetchUsers( [ 'userExpLevel' => 'all' ] )
        -		);
        -	}
        -
        -	private function createUsers( $specs ) {
        -		$dbw = wfGetDB( DB_MASTER );
        -		foreach ( $specs as $name => $spec ) {
        -			User::createNew(
        -				$name,
        -				[
        -					'editcount' => $spec['edits'],
        -					'registration' => $dbw->timestamp( $this->daysAgo( $spec['days'] ) ),
        -					'email' => 'ut',
        -				]
        -			);
        -		}
        -	}
        -
        -	private function fetchUsers( $filters ) {
        -		$specialRC = new SpecialRecentChanges();
        -
        -		$tables = [];
        -		$conds = [];
        -		$join_conds = [];
        -
        -		$specialRC->filterOnUserExperienceLevel(
        -			$tables,
        -			$conds,
        -			$join_conds,
        -			$filters
        -		);
        -
        -		$result = wfGetDB( DB_MASTER )->select(
        -			'user',
        -			'user_name',
        -			array_filter( $conds ) + [ 'user_email' => 'ut' ]
        -		);
        -
        -		$usernames = [];
        -		foreach ( $result as $row ) {
        -			$usernames[] = $row->user_name;
        -		}
        -
        -		return $usernames;
        -	}
        -
        -	private function daysAgo( $days ) {
        -		$secondsPerDay = 86400;
        -		return time() - $days * $secondsPerDay;
        -	}
         }
        diff --git a/tests/phpunit/includes/specials/SpecialSearchTest.php b/tests/phpunit/includes/specials/SpecialSearchTest.php
        index 3fa8a9f8ed..9daae9741e 100644
        --- a/tests/phpunit/includes/specials/SpecialSearchTest.php
        +++ b/tests/phpunit/includes/specials/SpecialSearchTest.php
        @@ -73,7 +73,7 @@ class SpecialSearchTest extends MediaWikiTestCase {
         			[
         				$EMPTY_REQUEST, $NO_USER_PREF,
         				'default', $defaultNS,
        -				'Bug 33270: No request nor user preferences should give default profile'
        +				'T35270: No request nor user preferences should give default profile'
         			],
         			[
         				[ 'ns5' => 1 ], $NO_USER_PREF,
        @@ -88,7 +88,7 @@ class SpecialSearchTest extends MediaWikiTestCase {
         				return "searchNs$ns";
         			}, $defaultNS ), 0 ),
         				'advanced', [ 2, 14 ],
        -				'Bug 33583: search with no option should honor User search preferences'
        +				'T35583: search with no option should honor User search preferences'
         					. ' and have all other namespace disabled'
         			],
         		];
        @@ -121,13 +121,15 @@ class SpecialSearchTest extends MediaWikiTestCase {
         		] );
         
         		# Initialize [[Special::Search]]
        +		$ctx = new RequestContext();
        +		$term = '{{SITENAME}}';
        +		$ctx->setRequest( new FauxRequest( [ 'search' => $term, 'fulltext' => 1 ] ) );
        +		$ctx->setTitle( Title::newFromText( 'Special:Search' ) );
         		$search = new SpecialSearch();
        -		$search->getContext()->setTitle( Title::newFromText( 'Special:Search' ) );
        -		$search->load();
        +		$search->setContext( $ctx );
         
         		# Simulate a user searching for a given term
        -		$term = '{{SITENAME}}';
        -		$search->showResults( $term );
        +		$search->execute( '' );
         
         		# Lookup the HTML page title set for that page
         		$pageTitle = $search
        @@ -203,6 +205,27 @@ class SpecialSearchTest extends MediaWikiTestCase {
         
         		return $mock;
         	}
        +
        +	public function testSubPageRedirect() {
        +		$this->setMwGlobals( [
        +			'wgScript' => '/w/index.php',
        +		] );
        +
        +		$ctx = new RequestContext;
        +		$sp = Title::newFromText( 'Special:Search/foo_bar' );
        +		SpecialPageFactory::executePath( $sp, $ctx );
        +		$url = $ctx->getOutput()->getRedirect();
        +		// some older versions of hhvm have a bug that doesn't parse relative
        +		// urls with a port, so help it out a little bit.
        +		// https://github.com/facebook/hhvm/issues/7136
        +		$url = wfExpandUrl( $url, PROTO_CURRENT );
        +
        +		$parts = parse_url( $url );
        +		$this->assertEquals( '/w/index.php', $parts['path'] );
        +		parse_str( $parts['query'], $query );
        +		$this->assertEquals( 'Special:Search', $query['title'] );
        +		$this->assertEquals( 'foo bar', $query['search'] );
        +	}
         }
         
         class SpecialSearchTestMockResultSet extends SearchResultSet {
        diff --git a/tests/phpunit/includes/tidy/BalancerTest.php b/tests/phpunit/includes/tidy/BalancerTest.php
        index f69ecafd5c..8a4f662a96 100644
        --- a/tests/phpunit/includes/tidy/BalancerTest.php
        +++ b/tests/phpunit/includes/tidy/BalancerTest.php
        @@ -1,7 +1,6 @@
         balancer = new MediaWiki\Tidy\Balancer( [
        -			'strict' => false, /* not strict */
        -			'allowedHtmlElements' => null, /* no sanitization */
        -			'tidyCompat' => false, /* standard parser */
        -			'allowComments' => true, /* comment parsing */
        -		] );
         	}
         
         	/**
        -	 * @covers MediaWiki\Tidy\Balancer::balance
        +	 * @covers MediaWiki\Tidy\Balancer
        +	 * @covers MediaWiki\Tidy\BalanceSets
        +	 * @covers MediaWiki\Tidy\BalanceElement
        +	 * @covers MediaWiki\Tidy\BalanceStack
        +	 * @covers MediaWiki\Tidy\BalanceMarker
        +	 * @covers MediaWiki\Tidy\BalanceActiveFormattingElements
         	 * @dataProvider provideBalancerTests
         	 */
        -	public function testBalancer( $description, $input, $expected ) {
        -		$output = $this->balancer->balance( $input );
        +	public function testBalancer( $description, $input, $expected, $useTidy ) {
        +		$balancer = new MediaWiki\Tidy\Balancer( [
        +			'strict' => false, /* not strict */
        +			'allowedHtmlElements' => null, /* no sanitization */
        +			'tidyCompat' => $useTidy, /* standard parser */
        +			'allowComments' => true, /* comment parsing */
        +		] );
        +		$output = $balancer->balance( $input );
         
         		// Ignore self-closing tags
         		$output = preg_replace( '/\s*\/>/', '>', $output );
        @@ -86,7 +90,7 @@ class BalancerTest extends MediaWikiTestCase {
         					// Skip tests involving unusual doctypes.
         					continue;
         				}
        -				$literalre = "~ //",
        +			"
        \n\na
        \n\nb", + true # use the tidy-compatible mode + ]; + return $tests; } } diff --git a/tests/phpunit/includes/tidy/RemexDriverTest.php b/tests/phpunit/includes/tidy/RemexDriverTest.php new file mode 100644 index 0000000000..6b16cbf695 --- /dev/null +++ b/tests/phpunit/includes/tidy/RemexDriverTest.php @@ -0,0 +1,297 @@ +x

        " + ], + [ + 'No p-wrap of blank node', + " ", + " " + ], + [ + 'p-wrap terminated by div', + "x
        ", + "

        x

        " + ], + [ + 'p-wrap not terminated by span', + "x", + "

        x

        " + ], + [ + 'An element is non-blank and so gets p-wrapped', + "", + "

        " + ], + [ + 'The blank flag is set after a block-level element', + "
        ", + "
        " + ], + [ + 'Blank detection between two block-level elements', + "
        ", + "
        " + ], + [ + 'But p-wrapping of non-blank content works after an element', + "
        x", + "

        x

        " + ], + [ + 'p-wrapping between two block-level elements', + "
        x
        ", + "

        x

        " + ], + [ + 'p-wrap inside blockquote', + "
        x
        ", + "

        x

        " + ], + [ + 'A comment is blank for p-wrapping purposes', + "", + "" + ], + [ + 'A comment is blank even when a p-wrap was opened by a text node', + " ", + " " + ], + [ + 'A comment does not open a p-wrap', + "x", + "

        x

        " + ], + [ + 'A comment does not close a p-wrap', + "x", + "

        x

        " + ], + [ + 'Empty li', + "
        ", + "
        " + ], + [ + 'li with element', + "
        ", + "
        " + ], + [ + 'li with text', + "
        • x
        ", + "
        • x
        " + ], + [ + 'Empty tr', + "
        ", + "
        " + ], + [ + 'Empty p', + "

        \n

        ", + "

        \n

        " + ], + [ + 'No p-wrapping of an inline element which contains a block element (T150317)', + "
        x
        ", + "
        x
        " + ], + [ + 'p-wrapping of an inline element which contains an inline element', + "x", + "

        x

        " + ], + [ + 'p-wrapping is enabled in a blockquote in an inline element', + "
        x
        ", + "

        x

        " + ], + [ + 'All bare text should be p-wrapped even when surrounded by block tags', + "
        x
        y
        z", + "

        x

        y

        z

        " + ], + [ + 'Split tag stack 1', + "x
        y
        z
        ", + "

        x

        y

        z

        " + ], + [ + 'Split tag stack 2', + "
        y
        z
        ", + "
        y

        z

        " + ], + [ + 'Split tag stack 3', + "x
        y
        ", + "

        x

        y
        " + ], + [ + 'Split tag stack 4 (modified to use splittable tag)', + "abc
        d
        e
        ", + "

        abc

        d

        e

        " + ], + [ + "Split tag stack regression check 1", + "x
        y
        ", + "

        x

        y
        " + ], + [ + "Split tag stack regression check 2 (modified to use splittable tag)", + "a
        d
        e
        ", + "

        a

        d

        e

        " + ], + // Simple tests from pwrap.js + [ + 'Simple pwrap test 1', + 'a', + '

        a

        ' + ], + [ + ' is not a splittable tag, but gets p-wrapped in simple wrapping scenarios', + 'a', + '

        a

        ' + ], + [ + 'Simple pwrap test 3', + 'x
        a
        b
        y', + '

        x

        a
        b

        y

        ' + ], + [ + 'Simple pwrap test 4', + 'x
        a
        b
        y', + '

        x

        a
        b

        y

        ' + ], + // Complex tests from pwrap.js + [ + 'Complex pwrap test 1', + 'x
        a
        y
        ', + '

        x

        a

        y

        ' + ], + [ + 'Complex pwrap test 2', + 'abc
        d
        e
        f', + '

        abc

        d

        ef

        ' + ], + [ + 'Complex pwrap test 3', + 'abc
        d
        e
        ', + '

        abc

        d

        e

        ' + ], + [ + 'Complex pwrap test 4', + 'x
        y
        ', + '

        x

        y
        ' + ], + [ + 'Complex pwrap test 5', + 'a
        d
        e
        ', + '

        a

        d

        e

        ' + ], + [ + 'Complex pwrap test 6', + 'a
        b
        cd
        e
        f
        g
        ', + // @codingStandardsIgnoreStart Generic.Files.LineLength.TooLong + // PHP 5 does not allow concatenation in initialisation of a class static variable + '

        a

        b

        cd

        e

        fg

        ' + // @codingStandardsIgnoreEnd + ], + /* FIXME the second causes a stack split which clones the even + * though no

        is actually generated + [ + 'Complex pwrap test 7', + '

        x
        y
        z
        ', + '
        x
        y
        z
        ' + ], + */ + // New local tests + [ + 'Blank text node after block end', + 'x
        y
        z
        ', + '

        x

        y

        z

        ' + ], + [ + 'Text node fostering (FIXME: wrap missing)', + 'x
        ', + 'x
        ' + ], + [ + 'Blockquote fostering', + '
        x
        ', + '

        x

        ' + ], + [ + 'Block element fostering', + '
        x', + '
        x
        ' + ], + [ + 'Formatting element fostering (FIXME: wrap missing)', + 'x', + 'x
        ' + ], + [ + 'AAA clone of p-wrapped element (FIXME: empty b)', + 'x

        yz

        ', + '

        x

        yz

        ', + ], + [ + 'AAA with fostering (FIXME: wrap missing)', + '1

        23

        ', + '1

        23

        ' + ], + ]; + + public function provider() { + return self::$remexTidyTestData; + } + + /** + * @dataProvider provider + * @covers MediaWiki\Tidy\RemexCompatFormatter + * @covers MediaWiki\Tidy\RemexCompatMunger + * @covers MediaWiki\Tidy\RemexDriver + * @covers MediaWiki\Tidy\RemexMungerData + */ + public function testTidy( $desc, $input, $expected ) { + $r = new MediaWiki\Tidy\RemexDriver( [] ); + $result = $r->tidy( $input ); + $this->assertEquals( $expected, $result, $desc ); + } + + public function html5libProvider() { + $files = json_decode( file_get_contents( __DIR__ . '/html5lib-tests.json' ), true ); + $tests = []; + foreach ( $files as $file => $fileTests ) { + foreach ( $fileTests as $i => $test ) { + $tests[] = [ "$file:$i", $test['data'] ]; + } + } + return $tests; + } + + /** + * This is a quick and dirty test to make sure none of the html5lib tests + * generate exceptions. We don't really know what the expected output is. + * + * @dataProvider html5libProvider + * @coversNothing + */ + public function testHtml5Lib( $desc, $input ) { + $r = new MediaWiki\Tidy\RemexDriver( [] ); + $result = $r->tidy( $input ); + $this->assertTrue( true, $desc ); + } +} diff --git a/tests/phpunit/includes/tidy/html5lib-tests.json b/tests/phpunit/includes/tidy/html5lib-tests.json index beb36598dd..2b1c3e8cdf 100644 --- a/tests/phpunit/includes/tidy/html5lib-tests.json +++ b/tests/phpunit/includes/tidy/html5lib-tests.json @@ -1242,6 +1242,64 @@ "html": "

        x

        ", "noQuirksBodyHtml": "

        x

        " } + }, + { + "data": "